diff --git a/.gn b/.gn index d87b72e..952d7297 100644 --- a/.gn +++ b/.gn
@@ -63,11 +63,9 @@ # their includes checked for proper dependencies when you run either # "gn check" or "gn gen --check". no_check_targets = [ - "//chrome/test:browser_tests_runner", "//chrome/test:interactive_ui_tests", "//chrome/test:unit_tests", "//chrome/test:unit_tests__library", - "//chrome/test:usage_time_limit_unittests", "//chrome/test:xr_browser_tests_common", "//extensions/browser:*", # 20 errors "//extensions:*", # 75 errors
diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..d919e057 --- /dev/null +++ b/.mailmap
@@ -0,0 +1,11 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# People change their names or email addresses for many reasons. This +# list makes sure people’s preferences are respected when using Git +# commands such as `git log` or `git blame`. +# +# See https://git-scm.com/docs/gitmailmap for more information. +# +# Please keep the list sorted.
diff --git a/DEPS b/DEPS index cebbdf1..86f5300 100644 --- a/DEPS +++ b/DEPS
@@ -209,11 +209,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'b35fbdbb06b9b49b068e21fd547b2555485337bb', + 'skia_revision': '64c848b384bb29fb8f29ec0dae08b9d0ed606644', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '24635b9c1b75b917920f5f8ac1e66d3c2e6c09d1', + 'v8_revision': 'bc9b57bdb0f2bc2896d490b13fa3b8cf4c6e1d1a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -221,11 +221,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '163f6ac055f4840a66696aaee70b4f02f9886d0e', + 'angle_revision': 'a29a64a64e5e86af6346c8d7b85e635ebc39b298', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': '5d449d4fcb77e90d77546ef0c278173d9f7b3104', + 'swiftshader_revision': '9dd7a5171793ca09a52bb5c9037a759f1e0b1ffa', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -288,7 +288,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': '25f9b0bdd9415b7cf877a8a94e9721b89d2c8bd6', + 'devtools_frontend_revision': 'ed33798f145da0e066a65c2e97774cc5033b1637', # 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. @@ -328,7 +328,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. - 'dawn_revision': '5d39860fef792bc0f5653c74584ad64d5ecf3075', + 'dawn_revision': '7f7f8130415a8a6ad950b9dd987a89cdaa2f88a1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -643,7 +643,7 @@ 'packages': [ { 'package': 'chromium/rts/model/linux-amd64', - 'version': 'qCi6zFL0F_P-cSZ8_MlV5lrrfrlhxJjd0lt-iCFeifAC', + 'version': 'z-E64M1APLVGgXZ-_4QOrevmXbcbrRMTG_Qo0kSRIs0C', }, ], 'dep_type': 'cipd', @@ -654,7 +654,7 @@ 'packages': [ { 'package': 'chromium/rts/model/mac-amd64', - 'version': 'Yaho3RinI4PHdmoTRXq6o1zIT2Vr3jxCFaH5pnlXiFEC', + 'version': 'xlI4TPQvncuyF_zlPDsiPUzizSQHI7OeBZPDQnB_SFAC', }, ], 'dep_type': 'cipd', @@ -665,7 +665,7 @@ 'packages': [ { 'package': 'chromium/rts/model/windows-amd64', - 'version': 'Gve8KaG5ClWgT76XKIm8ZI0VzozRy1cVXP0Nt1O_6MgC', + 'version': 'g7YdsNMjgB4Oge8ggxjJYDnvOhipb-YS2d_qrpFcZMkC', }, ], 'dep_type': 'cipd', @@ -1349,7 +1349,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'be406c7d16b36e0186d394f47b1bf006d5b1d8a7', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e46c9b802f8761df0341aad1d7845b7732a48596', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1574,7 +1574,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '43c0f51e87ddec8a014a48428e485b07a3be46f2', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'e52cfab63347cd0f7b1ddf68d1f0a9321e0066f1', + Var('webrtc_git') + '/src.git' + '@' + '791adafa09a1fdf6122e3f5b45c1e397bc6223a0', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1635,7 +1635,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@2c8c6db58be2356742a6e7d0782ec28322751604', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@7dacff39015673b31483a1f5342705a3ba694f4f', 'condition': 'checkout_src_internal', }, @@ -1654,7 +1654,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'yqzxhkSA-4IBtoRAkel9TpHgcfGFQ0bmPxvsYc-6McwC', + 'version': 'tedcNEzYjmQLaSnnu8kJ8bmhMsp3wlE-vcrIDQe28_oC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index fe365ba..e54d128 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1831,7 +1831,6 @@ "//base", "//base:i18n", "//base/third_party/dynamic_annotations", - "//base/util/timer", "//base/util/values:values_util", "//build:branding_buildflags", "//cc", @@ -2469,7 +2468,6 @@ "//ash/system/machine_learning:user_settings_event_proto", "//base", "//base/test:test_support", - "//base/util/timer:timer", "//base/util/values:values_util", "//build:branding_buildflags", "//chromeos:test_support", @@ -2632,6 +2630,7 @@ "//ash/shortcut_viewer:*", "//chrome/test:accessibility_live_site_tests", "//chrome/test:browser_tests", + "//chrome/test:browser_tests_runner", "//chrome/test:captured_sites_interactive_tests", "//chrome/test:test_support", "//chrome/test:test_support_ui",
diff --git a/ash/ambient/test/ambient_ash_test_base.h b/ash/ambient/test/ambient_ash_test_base.h index 6e92cb0..b03de74 100644 --- a/ash/ambient/test/ambient_ash_test_base.h +++ b/ash/ambient/test/ambient_ash_test_base.h
@@ -13,7 +13,6 @@ #include "ash/ambient/ambient_controller.h" #include "ash/ambient/test/test_ambient_client.h" #include "ash/ambient/ui/ambient_background_image_view.h" -#include "ash/public/cpp/test/test_image_downloader.h" #include "ash/test/ash_test_base.h" #include "services/media_session/public/mojom/media_session.mojom.h" #include "ui/views/view.h" @@ -178,7 +177,6 @@ private: std::unique_ptr<views::Widget> widget_; power_manager::PowerSupplyProperties proto_; - TestImageDownloader image_downloader_; }; } // namespace ash
diff --git a/ash/ambient/test/ambient_ash_test_helper.cc b/ash/ambient/test/ambient_ash_test_helper.cc index a4503b7..c8ee548 100644 --- a/ash/ambient/test/ambient_ash_test_helper.cc +++ b/ash/ambient/test/ambient_ash_test_helper.cc
@@ -5,10 +5,12 @@ #include "ash/ambient/test/ambient_ash_test_helper.h" #include "ash/ambient/test/test_ambient_client.h" +#include "ash/public/cpp/test/test_image_downloader.h" namespace ash { AmbientAshTestHelper::AmbientAshTestHelper() { + image_downloader_ = std::make_unique<TestImageDownloader>(); ambient_client_ = std::make_unique<TestAmbientClient>(&wake_lock_provider_); }
diff --git a/ash/ambient/test/ambient_ash_test_helper.h b/ash/ambient/test/ambient_ash_test_helper.h index 651fcda..7ec665b 100644 --- a/ash/ambient/test/ambient_ash_test_helper.h +++ b/ash/ambient/test/ambient_ash_test_helper.h
@@ -11,6 +11,7 @@ namespace ash { +class TestImageDownloader; class TestAmbientClient; // The helper class to test the Ambient Mode in Ash. @@ -30,6 +31,7 @@ } private: + std::unique_ptr<TestImageDownloader> image_downloader_; device::TestWakeLockProvider wake_lock_provider_; std::unique_ptr<TestAmbientClient> ambient_client_; };
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 7e0dbb6..218a4f6f 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -573,10 +573,6 @@ const base::Feature kPluginVmShowMicrophonePermissions{ "PluginVmShowMicrophonePermissions", base::FEATURE_ENABLED_BY_DEFAULT}; -// Controls whether to show printer statuses. -const base::Feature kPrinterStatus{"PrinterStatus", - base::FEATURE_ENABLED_BY_DEFAULT}; - // Controls whether to show printer statuses on the Print Preview destination // dialog. const base::Feature kPrinterStatusDialog{"PrinterStatusDialog",
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 197a547e..bc26144 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -256,8 +256,6 @@ COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kPrintServerScaling; COMPONENT_EXPORT(ASH_CONSTANTS) -extern const base::Feature kPrinterStatus; -COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kPrinterStatusDialog; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kProjector; COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::Feature kProjectorFeaturePod;
diff --git a/ash/public/cpp/test/test_image_downloader.cc b/ash/public/cpp/test/test_image_downloader.cc index 5648c8b9..6782daa4 100644 --- a/ash/public/cpp/test/test_image_downloader.cc +++ b/ash/public/cpp/test/test_image_downloader.cc
@@ -23,10 +23,8 @@ // Pretend to respond asynchronously. base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, - base::BindOnce(std::move(callback), - should_fail_ ? gfx::ImageSkia() - : gfx::test::CreateImageSkia( - /*width=*/10, /*height=*/20))); + base::BindOnce(std::move(callback), gfx::test::CreateImageSkia( + /*width=*/10, /*height=*/20))); } } // namespace ash
diff --git a/ash/public/cpp/test/test_image_downloader.h b/ash/public/cpp/test/test_image_downloader.h index 168993c..4d4a676 100644 --- a/ash/public/cpp/test/test_image_downloader.h +++ b/ash/public/cpp/test/test_image_downloader.h
@@ -15,15 +15,10 @@ TestImageDownloader(); ~TestImageDownloader() override; - void set_should_fail(bool should_fail) { should_fail_ = should_fail; } - // ImageDownloader: void Download(const GURL& url, const net::NetworkTrafficAnnotationTag& annotation_tag, DownloadCallback callback) override; - - private: - bool should_fail_ = false; }; } // namespace ash
diff --git a/ash/public/cpp/wallpaper_controller_client.h b/ash/public/cpp/wallpaper_controller_client.h index 9ee0aa7..bff60b6 100644 --- a/ash/public/cpp/wallpaper_controller_client.h +++ b/ash/public/cpp/wallpaper_controller_client.h
@@ -5,10 +5,7 @@ #ifndef ASH_PUBLIC_CPP_WALLPAPER_CONTROLLER_CLIENT_H_ #define ASH_PUBLIC_CPP_WALLPAPER_CONTROLLER_CLIENT_H_ -#include <string> - #include "ash/public/cpp/ash_public_export.h" -#include "base/callback.h" class AccountId; @@ -31,14 +28,6 @@ // Retrieves the current collection id from the Wallpaper Picker Chrome App // for migration. virtual void MigrateCollectionIdFromChromeApp() = 0; - - // Downloads and sets a new random wallpaper from the collection of the - // specified collection_id. - using DailyWallpaperUrlFetchedCallback = - base::OnceCallback<void(const std::string&)>; - virtual void FetchDailyRefreshWallpaper( - const std::string& collection_id, - DailyWallpaperUrlFetchedCallback callback) = 0; }; } // namespace ash
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index e1a47db4..c55c475d 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -40,6 +40,7 @@ <translation id="1247372569136754018">ميكروفون (داخلي)</translation> <translation id="1252999807265626933">جارٍ الشحن من <ph name="POWER_SOURCE" /></translation> <translation id="1255033239764210633">ما حالة الطقس؟</translation> +<translation id="1266097335951928626">تفعيل كاميرا الصور الذاتية</translation> <translation id="1267032506238418139">تغيير الاختصار</translation> <translation id="1269405891096105529">الأجهزة الملحقة غير متاحة للاستخدام في وضع الضيف.</translation> <translation id="1270290102613614947">تم إيقاف لوحة المفاتيح على الشاشة</translation> @@ -84,6 +85,7 @@ <translation id="1555130319947370107">أزرق</translation> <translation id="1570871743947603115">تبديل البلوتوث. <ph name="STATE_TEXT" /></translation> <translation id="1589090746204042747">الوصول إلى جميع أنشطتك في جلسة واحدة</translation> +<translation id="159255010947577753">أداة تحديد</translation> <translation id="1611993646327628135">مُفعَّل</translation> <translation id="1615402009686901181">تحظر سياسة المشرف إمكانية تصوير الشاشة عند عرض محتوى سري.</translation> <translation id="1632985212731562677">يمكن إيقاف ميزة "الوصول عبر مفتاح التحويل" في "الإعدادات" > "أدوات تمكين الوصول".</translation> @@ -135,8 +137,10 @@ <translation id="2016340657076538683">كتابة رسالة</translation> <translation id="2018630726571919839">أريد سماع نكتة</translation> <translation id="2021864487439853900">انقر لفتح قفل الشبكة.</translation> +<translation id="2047639699071423250">إضافة الفكرة الرئيسية</translation> <translation id="2049240716062114887">تم تغيير اسم سطح المكتب إلى <ph name="DESK_NAME" />.</translation> <translation id="2050339315714019657">رأسي</translation> +<translation id="2066708475850724665">إيقاف المكبِّر</translation> <translation id="2067602449040652523">سطوع لوحة المفاتيح</translation> <translation id="2078034614700056995">يمكنك التمرير سريعًا لليسار بأربعة أصابع للتبديل إلى سطح المكتب التالي.</translation> <translation id="2079504693865562705">إخفاء التطبيقات في الرفّ</translation> @@ -144,10 +148,12 @@ <translation id="2083190527011054446">ليلة سعيدة <ph name="GIVEN_NAME" />،</translation> <translation id="209965399369889474">لا يتوفّر اتصال بالشبكة</translation> <translation id="2108303511227308752">تم تغيير اختصارات لوحة المفاتيح "Alt + Backspace". لاستخدام مفتاح Delete، اضغط على المفتاحَين "<ph name="LAUNCHER_KEY_NAME" /> + Backspace".</translation> +<translation id="211328683600082144">تفعيل الميكروفون</translation> <translation id="2126242104232412123">سطح مكتب جديد</translation> <translation id="2127372758936585790">شاحن منخفض الطاقة</translation> <translation id="2132302418721800944">تسجيل فيديو في وضع ملء الشاشة</translation> <translation id="2135456203358955318">المكبّر الذي تم إرساؤه</translation> +<translation id="2146800439053023141">تبديل مكان الشريط</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: إعادة المحاولة</translation> <translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">يمكنك التمرير سريعًا لأسفل الشاشة بثلاثة أصابع للخروج من وضع "النظرة العامة".</translation> @@ -239,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">تثبيت التطبيقات والإضافات والتصاميم</translation> <translation id="2977598380246111477">الرقم التالي</translation> +<translation id="2992327365391326550">زر ميكروفون الجهاز غير مفعَّل.</translation> <translation id="2995447421581609334">عرض أجهزة البث.</translation> <translation id="2996462380875591307">تم تفعيل المكبّر. يمكنك إيقافه بالضغط على Ctrl+Search+D مرة أخرى.</translation> <translation id="3000461861112256445">صوت أحادي</translation> @@ -249,6 +256,7 @@ <translation id="3038571455154067151">لتسجيل الدخول، يُرجى إدخال رمز الدخول المخصّص للوالدَين في Family Link</translation> <translation id="3039939407102840004">مستوى شحن بطارية قلم الشاشة <ph name="PERCENTAGE" /> في المئة.</translation> <translation id="3045488863354895414">مساء الخير،</translation> +<translation id="3051189971848907985">جارٍ إعادة تسمية الملف التعريفي. يُرجى الانتظار بضع دقائق.</translation> <translation id="3055162170959710888">استخدمت هذا الجهاز لمدة <ph name="USED_TIME" /> اليوم</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">توسيع القائمة</translation> @@ -289,6 +297,7 @@ <translation id="3368922792935385530">متصل</translation> <translation id="3371140690572404006">جهاز USB-C (المنفذ الأمامي الأيمن)</translation> <translation id="3375634426936648815">متصلة</translation> +<translation id="3378442621503952303">جارٍ الربط بالملف التعريفي. يُرجى الانتظار بضع دقائق.</translation> <translation id="3386978599540877378">المكبِّر بملء الشاشة</translation> <translation id="3400357268283240774">إعدادات إضافية</translation> <translation id="3410336247007142655">عرض إعدادات المظهر الداكن</translation> @@ -326,6 +335,7 @@ <translation id="3638400994746983214">تبديل شاشة الخصوصية <ph name="STATE_TEXT" /></translation> <translation id="366222428570480733">المستخدِم المُدار <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3665889125180354336">التسجيل من الميكروفون</translation> +<translation id="3680908746918359504">محو جميع العلامات</translation> <translation id="36813544980941320">ستتم مشاركة شبكات Wi-Fi بين هاتفك وجهاز <ph name="DEVICE_NAME" />.</translation> <translation id="3702809606464356667">يتم الآن عرض النوافذ المفتوحة في سطح المكتب الحالي، ويمكنك الضغط على مفتاح السهم المتّجه للأعلى لعرض النوافذ المفتوحة في جميع أسطح المكتب.</translation> <translation id="3702846122927433391">تعداد السكان في نيجيريا</translation> @@ -344,6 +354,7 @@ <translation id="380165613292957338">مرحبًا، كيف يمكنني مساعدتك؟</translation> <translation id="3826099427150913765">التبديل إلى كلمة المرور</translation> <translation id="383058930331066723">وضع "توفير شحن البطارية" مفعَّل.</translation> +<translation id="3835880383832568924">للاطّلاع على التغييرات، افتح تطبيق "الاختصارات".</translation> <translation id="383629559565718788">عرض إعدادات لوحة المفاتيح</translation> <translation id="3846214748874656680">خروج من عرض ملء الشاشة</translation> <translation id="3846575436967432996">لا توجد معلومات متاحة حول الشبكة</translation> @@ -376,6 +387,7 @@ <translation id="4065525899979931964">{NUM_APPS,plural, =1{الإشعارات متوقفة لتطبيق واحد}zero{الإشعارات متوقفة لـ # تطبيق}two{الإشعارات متوقفة لتطبيقَين (#)}few{الإشعارات متوقفة لـ # تطبيقات}many{الإشعارات متوقفة لـ # تطبيقًا}other{الإشعارات متوقفة لـ # تطبيق}}</translation> <translation id="4066027111132117168">مُفعَّلة لمدة <ph name="REMAINING_TIME" /></translation> <translation id="4072264167173457037">إشارة متوسطة</translation> +<translation id="4095366824370681039">قلم حبر</translation> <translation id="4112140312785995938">الانتقال إلى الخلف</translation> <translation id="4114315158543974537">تفعيل Phone Hub</translation> <translation id="412298498316631026">نافذة</translation> @@ -444,12 +456,15 @@ <translation id="4570957409596482333">زر "الاختيار والاستماع"</translation> <translation id="4577274620589681794">انتهى الوقت · <ph name="LABEL" /></translation> <translation id="4577990005084629481">عرض المعاينات</translation> +<translation id="4578196883126898996">الميكروفون متوقّف، عليك تفعيل زر ميكروفون جهازك.</translation> <translation id="4578906031062871102">تم فتح قائمة الإعدادات.</translation> <translation id="4581047786858252841">الميكروفون مفعّل.</translation> <translation id="4585337515783392668">إيقاف الإرسال إلى مستلم غير معروف</translation> +<translation id="4586483766170476230">إيقاف كاميرا الصور الذاتية</translation> <translation id="4587299710837179226">الميكروفون غير مفعّل.</translation> <translation id="4596144739579517758">المظهر الداكن غير مُفعَّل.</translation> <translation id="4611292653554630842">تسجيل الدخول</translation> +<translation id="4614295562446151104">توسيع أدوات التحديد</translation> <translation id="4623167406982293031">يجب إثبات ملكية الحساب</translation> <translation id="4628757576491864469">الأجهزة</translation> <translation id="4642092649622328492">أخذ لقطة شاشة جزئية</translation> @@ -460,6 +475,7 @@ <translation id="4705716602320768426">تقديم تعليقات</translation> <translation id="4731797938093519117">وصول أحد الوالدين</translation> <translation id="4734965478015604180">أفقي</translation> +<translation id="4735498845456076464">تم تغيير اختصارات لوحة المفاتيح "<ph name="LAUNCHER_KEY_NAME" /> + رقم". لاستخدام مفاتيح الوظائف، اضغط على المفتاح <ph name="LAUNCHER_KEY_NAME" /> مع الضغط على مفتاح في الصف العلوي.</translation> <translation id="4744944742468440486">معلومات ذات صلة باختيارك</translation> <translation id="4759238208242260848">الملفات التي تم تنزيلها</translation> <translation id="4774338217796918551">يمكنك العودة غدًا في <ph name="COME_BACK_TIME" />.</translation> @@ -506,6 +522,8 @@ <translation id="5035236842988137213">الجهاز <ph name="DEVICE_NAME" /> متصل بهاتف جديد</translation> <translation id="5035389544768382859">تأكيد ضبط شاشة العرض</translation> <translation id="504465286040788597">الفقرة السابقة</translation> +<translation id="5071064518267176975">يريد أحد التطبيقات استخدام الميكروفون</translation> +<translation id="5075554201838155866">تفعيل الترجمة والشرح</translation> <translation id="5078796286268621944">رقم التعريف الشخصي غير صحيح</translation> <translation id="5083553833479578423">الاستفادة من المزيد من ميزات "مساعد Google"</translation> <translation id="5136175204352732067">تم توصيل لوحة مفاتيح مختلفة</translation> @@ -676,6 +694,7 @@ <translation id="6612802754306526077">تم اختيار وضع تسجيل الشاشة.</translation> <translation id="6614169507485700968">تم تفعيل شاشة الخصوصية.</translation> <translation id="6627638273713273709">Search+Shift+K</translation> +<translation id="6629480180092995136">يريد تطبيق <ph name="APP_NAME" /> استخدام الميكروفون.</translation> <translation id="6637729079642709226">تغيير الوقت</translation> <translation id="6641720045729354415">إيقاف/تفعيل ميزة "النسخ النصي التلقائي". <ph name="STATE_TEXT" /></translation> <translation id="6650072551060208490">يريد النطاق <ph name="ORIGIN_NAME" /> تأكيد هويتك.</translation> @@ -714,6 +733,7 @@ <translation id="6896758677409633944">نسخ</translation> <translation id="6910714959251846841">يتطلَّب هذا التحديث إجراء عملية Powerwash لجهازك. مزيد من المعلومات حول آخر تحديث لتطبيق <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">لم يتم التعرُّف على البطاقة الذكية. يُرجى إعادة المحاولة.</translation> +<translation id="6921188888306725546">تم تحسين اختصارات لوحة المفاتيح</translation> <translation id="6945221475159498467">تحديد</translation> <translation id="6961121602502368900">لا تتوفّر ميزة "كتم صوت الهاتف" على الملف الشخصي للعمل.</translation> <translation id="6961840794482373852">تم تغيير اختصارات لوحة المفاتيح "Alt + السهم المتّجه للأعلى". لاستخدام مفتاح Page Up، اضغط على المفتاحَين "<ph name="LAUNCHER_KEY_NAME" /> + السهم المتّجه للأعلى".</translation> @@ -729,6 +749,7 @@ <translation id="7029814467594812963">إنهاء الجلسة</translation> <translation id="703425375924687388"><ph name="QUERY_NAME" />، "مساعد Google"</translation> <translation id="7042322267639375032">تصغير منطقة الحالة</translation> +<translation id="7045595904618419789">تفعيل المكبِّر</translation> <translation id="7055910611768509537">لم يتم استخدام قلم الشاشة منذ أكثر من أسبوع.</translation> <translation id="7066646422045619941">تم إيقاف هذه الشبكة من قِبل مشرفك.</translation> <translation id="7067196344162293536">تدوير تلقائي</translation> @@ -749,6 +770,7 @@ <translation id="7256634071279256947">الميكروفون الخلفي</translation> <translation id="726276584504105859">السحب هنا لاستخدام وضع تقسيم الشاشة</translation> <translation id="7262906531272962081">إنشاء تذكير</translation> +<translation id="7279434993080105272">لون أداة التحديد <ph name="COLOR_PARAMETER" /></translation> <translation id="7302889331339392448">ميزة "النسخ النصي التلقائي" غير مفعَّلة.</translation> <translation id="7303365578352795231">جارٍ الرد على جهاز آخر.</translation> <translation id="7305884605064981971">شبكة EDGE</translation> @@ -778,6 +800,7 @@ <translation id="7466449121337984263">يُرجى لمس جهاز الاستشعار.</translation> <translation id="7477793887173910789">التحكم في الموسيقى والفيديوهات وغير ذلك</translation> <translation id="7483025031359818980">تم ضبط منطقة الاختيار على ملء الشاشة.</translation> +<translation id="7486227320194954040">تصغير أدوات التحديد</translation> <translation id="7497767806359279797">اختيار اللغة ولوحة المفاتيح</translation> <translation id="7509246181739783082">إثبات هويتك</translation> <translation id="7513622367902644023">تم اختيار وضع لقطة الشاشة.</translation> @@ -796,6 +819,7 @@ <translation id="7607002721634913082">تعليق التحميل</translation> <translation id="7618774594543487847">معتدل</translation> <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> درجة فهرنهايت</translation> +<translation id="7631906263969450674">قلم تحديد</translation> <translation id="7633755430369750696">عرض إعدادات ميزة "المشاركة عن قرب"</translation> <translation id="7641938616688887143">تسجيل</translation> <translation id="7642647758716480637">فتح الإعدادات للشبكة <ph name="NETWORK_NAME" />،<ph name="CONNECTION_STATUS" /></translation> @@ -811,6 +835,7 @@ <translation id="7724603315864178912">قص</translation> <translation id="7745560842763881396">عرض التطبيقات في الرفّ</translation> <translation id="7749443890790263709">تم تجاوز أقصى عدد مسموح به من محطات الإرساء.</translation> +<translation id="7749640678855296659">الميكروفون متوقّف في الوقت الحالي.</translation> <translation id="776344839111254542">النقر لعرض تفاصيل التحديث</translation> <translation id="7780159184141939021">تدوير الشاشة</translation> <translation id="7796353162336583443">انقر على زر قلم الشاشة على الرف لتدوين ملاحظة أو الحصول على لقطة شاشة أو استخدام مساعد Google أو مؤشر الليزر أو العدسة المكبرة.</translation> @@ -858,6 +883,7 @@ <translation id="8113423164597455979">مفعلة، كل التطبيقات</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° مئوية</translation> <translation id="8131740175452115882">التأكيد</translation> +<translation id="8132487352815776550">إيقاف الترجمة والشرح</translation> <translation id="8132793192354020517">تم الاتصال بالموقع <ph name="NAME" /></translation> <translation id="813913629614996137">تجري التهيئة...</translation> <translation id="8142441511840089262">النقر مرّتين</translation> @@ -914,6 +940,7 @@ <translation id="8631727435199967028">إعدادات "سهولة الاستخدام"</translation> <translation id="8637598503828012618">حالة الاتصال <ph name="CONNECTION_STATUS" />، قوة الإشارة <ph name="SIGNAL_STRENGTH" />، يديرها المشرف</translation> <translation id="8639760480004882931">يتبقى <ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">جارٍ إعادة تحميل قائمة الملفات التعريفية. يُرجى الانتظار بضع دقائق.</translation> <translation id="8646417893960517480">موقّت <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">لإضافة شخص، يُرجى إدخال رمز الدخول المخصّص للوالدَين في Family Link.</translation> <translation id="8649101189709089199">الاختيار والاستماع</translation> @@ -941,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">لاسلكي، Wi-Fi</translation> <translation id="881757059229893486">إعدادات أساليب الإدخال</translation> +<translation id="8818320199597151042">جارٍ إزالة الملف التعريفي. يُرجى الانتظار بضع دقائق.</translation> <translation id="8825863694328519386">التمرير السريع من اليسار للرجوع</translation> <translation id="8828714802988429505">90 درجة</translation> <translation id="8841375032071747811">زر الرجوع</translation> @@ -986,6 +1014,7 @@ <translation id="9091626656156419976">تمت إزالة عرض <ph name="DISPLAY_NAME" /></translation> <translation id="9098969848082897657">كتم صوت الهاتف</translation> <translation id="9099154003160514616">يتوفّر تحديث للإصدار الحالي من متصفِّح Lacros</translation> +<translation id="9100887602489003640">جارٍ إضافة الملف التعريفي. يُرجى الانتظار بضع دقائق.</translation> <translation id="9105450214093926548">إنّ تسجيل الدخول بحساب مستخدم آخر غير متاح أثناء استخدام متصفِّح Lacros. يُرجى استخدام ملف شخصي آخر على متصفِّح Lacros بدلاً من ذلك أو إغلاق المتصفِّح ثم إعادة المحاولة.</translation> <translation id="9133335900048457298">لا يمكن تسجيل المحتوى المحمي</translation> <translation id="9151726767154816831">إعادة التشغيل وإجراء Powerwash للتحديث</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 6652404..b32234f1 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">এপ্, এক্সটেনশ্বন আৰু থীম ইনষ্টল কৰক</translation> <translation id="2977598380246111477">পৰৱৰ্তী সংখ্যা</translation> +<translation id="2992327365391326550">ডিভাইচটোৰ মাইক্ৰ’ফ’নৰ বুটামটো অফ কৰা হ’ল।</translation> <translation id="2995447421581609334">কাষ্ট ডিভাইচবোৰ দেখুৱাওক।</translation> <translation id="2996462380875591307">ড'ক কৰা বিৱৰ্ধক সক্ষম কৰা হ'ল। ইয়াক ট’গল অফ কৰিবলৈ আকৌ Ctrl+Search+D টিপক।</translation> <translation id="3000461861112256445">ম’ন’ অডিঅ’</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">ছাইন ইন কৰিবলৈ, আপোনাৰ Family Linkৰ অভিভাৱকৰ এক্সেছ ক'ডটো দিয়ক</translation> <translation id="3039939407102840004">ষ্টাইলাছৰ বেটাৰী <ph name="PERCENTAGE" /> শতাংশ আছে।</translation> <translation id="3045488863354895414">শুভ অপৰাহ্ন,</translation> +<translation id="3051189971848907985">প্ৰ’ফাইলটোৰ নতুন নাম দি থকা হৈছে। কেইমিনিটমান অপেক্ষা কৰক।</translation> <translation id="3055162170959710888">আপুনি আজি ডিভাইচটো <ph name="USED_TIME" /> সময় ব্যৱহাৰ কৰিলে</translation> <translation id="3077734595579995578">Shift+</translation> <translation id="3081696990447829002">মেনু বিস্তাৰ কৰক</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">সংযোগ কৰা হ’ল</translation> <translation id="3371140690572404006">USB-C ডিভাইচ। (সোঁফালৰ সন্মুখৰ প’ৰ্ট)</translation> <translation id="3375634426936648815">সংযোগ কৰা হ’ল</translation> +<translation id="3378442621503952303">প্ৰ’ফাইলৰ সৈতে সংযোগ কৰি থকা হৈছে। কেইমিনিটমান অপেক্ষা কৰক।</translation> <translation id="3386978599540877378">সম্পূর্ণ স্ক্ৰীণৰ বিৱৰ্ধকটো</translation> <translation id="3400357268283240774">অতিৰিক্ত ছেটিংসমূহ</translation> <translation id="3410336247007142655">গাঢ় ৰঙৰ থীমৰ ছেটিংসমূহ দেখুৱাওক</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">নমস্কাৰ, মই আপোনাক কেনেদৰে সহায় কৰিব পাৰোঁ?</translation> <translation id="3826099427150913765">পাছৱৰ্ডলৈ সলনি কৰক</translation> <translation id="383058930331066723">বেটাৰী সঞ্চয়কাৰী মোড অন কৰা আছে</translation> +<translation id="3835880383832568924">আপডে’টসমূহ চাবলৈ Shortcuts এপ্টো খোলক</translation> <translation id="383629559565718788">কীব’ৰ্ডৰ ছেটিংসমূহ দেখুৱাওক</translation> <translation id="3846214748874656680">পূৰ্ণষ্ক্রীণৰ পৰা বাহিৰ হওক</translation> <translation id="3846575436967432996">নেটৱৰ্কৰ বিষয়ে কোনো তথ্য নাই</translation> @@ -470,6 +474,7 @@ <translation id="4705716602320768426">মতামত ফাইল কৰক</translation> <translation id="4731797938093519117">অভিভাৱকৰ এক্সেছ</translation> <translation id="4734965478015604180">আনুভূমিক</translation> +<translation id="4735498845456076464">কীব’ৰ্ডৰ শ্বৰ্টকাট <ph name="LAUNCHER_KEY_NAME" /> + নাম্বাৰটো সলনি হৈছে। ফাংশ্বন কীসমূহ ব্যৱহাৰ কৰিবলৈ, <ph name="LAUNCHER_KEY_NAME" /> কীটো + ওপৰৰ শাৰীৰ এটা কী টিপক।</translation> <translation id="4744944742468440486">আপুনি কৰা বাছনি সম্পৰ্কীয় তথ্য</translation> <translation id="4759238208242260848">ডাউনল'ডসমূহ</translation> <translation id="4774338217796918551">কাইলৈ <ph name="COME_BACK_TIME" /> বজাত আকৌ চাব৷</translation> @@ -727,6 +732,7 @@ <translation id="6896758677409633944">প্ৰতিলিপি কৰক</translation> <translation id="6910714959251846841">এই আপডে’টটো কৰিবলৈ হ’লে আপোনাৰ ডিভাইচটো পাৱাৰৱাশ্ব কৰাটো প্ৰয়োজনীয়। শেহতীয়া <ph name="SYSTEM_APP_NAME" /> আপডে’টৰ বিষয়ে অধিক জানক।</translation> <translation id="6919251195245069855">আপোনাৰ স্মার্ট কার্ডখন চিনাক্ত কৰিব পৰা নগ'ল। আকৌ চেষ্টা কৰক।</translation> +<translation id="6921188888306725546">কীব’ৰ্ডৰ শ্বৰ্টকাটসমূহ উন্নত কৰা হৈছে</translation> <translation id="6945221475159498467">বাছনি কৰক</translation> <translation id="6961121602502368900">কৰ্মস্থানৰ প্ৰ’ফাইলত নীৰৱ ফ’ন উপলব্ধ নহয়</translation> <translation id="6961840794482373852">কীব’ৰ্ডৰ শ্বৰ্টকাট অল্ট + আপ এৰ'টো সলনি হৈছে। পেজ আপ কীটো ব্যৱহাৰ কৰিবলৈ, <ph name="LAUNCHER_KEY_NAME" /> কীটো + আপ এৰ' টিপক।</translation> @@ -930,6 +936,7 @@ <translation id="8631727435199967028">সাধ্য সুবিধাৰ ছেটিংসমূহ</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, ছিগনেলৰ ক্ষমতা <ph name="SIGNAL_STRENGTH" />, আপোনাৰ প্ৰশাসকে পৰিচালনা কৰে</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> বাকী আছে</translation> +<translation id="8641805545866562088">প্ৰ’ফাইলৰ সূচী ৰিফ্ৰেশ্ব কৰি থকা হৈছে। কেইমিনিটমান অপেক্ষা কৰক।</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" />ৰ টাইমাৰ</translation> <translation id="8647931990447795414">এগৰাকী লোকক যোগ দিয়ক, আপোনাৰ Family Linkৰ অভিভাৱকৰ এক্সেছ ক'ডটো দিয়ক</translation> <translation id="8649101189709089199">কথা ক’বলৈ বাছনি কৰক</translation> @@ -957,6 +964,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />। <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">ৱাই-ফাই</translation> <translation id="881757059229893486">ইনপুট পদ্ধতিৰ ছেটিং</translation> +<translation id="8818320199597151042">প্ৰ’ফাইলটো আঁতৰাই থকা হৈছে। কেইমিনিটমান অপেক্ষা কৰক।</translation> <translation id="8825863694328519386">উভতি যাবলৈ বাওঁফালৰ পৰা ছোৱাইপ কৰক</translation> <translation id="8828714802988429505">৯০°</translation> <translation id="8841375032071747811">পূর্বৱর্তী পৃষ্ঠালৈ যোৱা বুটাম</translation> @@ -1002,6 +1010,7 @@ <translation id="9091626656156419976">ডিছপ্লে' <ph name="DISPLAY_NAME" /> আঁতৰোৱা হ'ল</translation> <translation id="9098969848082897657">ফ’নটো নীৰৱ কৰক</translation> <translation id="9099154003160514616">Lacrosৰ আপডে’ট উপলব্ধ</translation> +<translation id="9100887602489003640">প্ৰ’ফাইল যোগ দি থকা হৈছে। কেইমিনিটমান অপেক্ষা কৰক।</translation> <translation id="9105450214093926548">Lacros ব্ৰাউজাৰটো চলি থকাৰ সময়ত দ্বিতীয় এগৰাকী ব্যৱহাৰকাৰী ছাইন ইন কৰাটো সমৰ্থিত নহয়। অনুগ্ৰহ কৰি তাৰ সলনি Lacrosত দ্বিতীয় এটা ব্ৰাউজাৰ প্ৰ’ফাইল ব্যৱহাৰ কৰক অথবা Lacros বন্ধ কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="9133335900048457298">সুৰক্ষিত সমল ৰেকৰ্ড কৰিব নোৱাৰি</translation> <translation id="9151726767154816831">আপডে’ট কৰিবলৈ ৰিষ্টাৰ্ট আৰু পাৱাৰৱাশ্ব কৰক</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index f25cc2e..8d733cf 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -401,7 +401,7 @@ <translation id="4209973997261364186">Wi-Fi уключаны</translation> <translation id="4212472694152630271">Пераключыцца на PIN-код</translation> <translation id="4215497585250573029">Налады VPN</translation> -<translation id="4217571870635786043">Дыктаванне</translation> +<translation id="4217571870635786043">Галасавы ўвод</translation> <translation id="4221957499226645091"><ph name="APP_NAME" />, усталяваная праграма, прыпынена</translation> <translation id="4239069858505860023">GPRS</translation> <translation id="4250229828105606438">Здымак экрана</translation> @@ -565,7 +565,7 @@ <translation id="5532994612895037630">Каб запісаць увесь экран, націсніце ў любым яго месцы</translation> <translation id="553675580533261935">Выконваецца выхад з сеанса</translation> <translation id="5537725057119320332">Трансліраваць</translation> -<translation id="554893713779400387">Уключыць або выключыць дыктаванне</translation> +<translation id="554893713779400387">Уключыць або выключыць галасавы ўвод</translation> <translation id="556042886152191864">Кнопка</translation> <translation id="5571066253365925590">Bluetooth уключаны</translation> <translation id="557563299383177668">Наступны абзац</translation> @@ -918,7 +918,7 @@ <translation id="8413272770729657668">Запіс пачнецца праз 3, 2, 1</translation> <translation id="8425213833346101688">Змяніць</translation> <translation id="8426708595819210923">Добры вечар, <ph name="GIVEN_NAME" />!</translation> -<translation id="8427213022735114808">Функцыя дыктавання адпраўляе запісы вашага голасу сэрвісам Google, што дазваляе вам уводзіць тэкст голасам у тэкставых палях.</translation> +<translation id="8427213022735114808">Функцыя галасавога ўводу адпраўляе запісы вашага голасу сэрвісам Google, што дазваляе вам уводзіць тэкст голасам у тэкставых палях.</translation> <translation id="8428213095426709021">Налады</translation> <translation id="8433186206711564395">Налады сеткі</translation> <translation id="8433977262951327081">Спалучэнне клавіш для паказу выплыўнога меню параметраў уводу на паліцы змянілася. Замест <ph name="OLD_SHORTCUT" /> выкарыстоўвайце <ph name="NEW_SHORTCUT" />.</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index 4b4035a..ee2fd7a 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">Потребителски настройки</translation> <translation id="3217205077783620295">Звукът е включен. Превключването ще го спре.</translation> <translation id="3226991577105957773">+ още <ph name="COUNT" /></translation> +<translation id="324366796737464147">Потискане на шума</translation> <translation id="3249513730522716925">Прозорецът <ph name="WINDOW_TITLE" /> бе преместен от работен кът <ph name="ACTIVE_DESK" /> в работен кът <ph name="TARGET_DESK" /></translation> <translation id="3255483164551725916">„What can you do?“ („Какво можеш да правиш?“)</translation> <translation id="3269597722229482060">Кликване с десния бутон</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index 38b403b..31cb36ab 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">Mod3</translation> <translation id="2970920913501714344">Apps, Erweiterungen und Designs installieren</translation> <translation id="2977598380246111477">Nächste Nummer</translation> +<translation id="2992327365391326550">Das Mikrofon des Geräts ist ausgeschaltet.</translation> <translation id="2995447421581609334">Streaminggeräte anzeigen</translation> <translation id="2996462380875591307">Angedockte Lupe aktiviert. Drücken Sie Strg + Suchtaste + D, um sie zu deaktivieren.</translation> <translation id="3000461861112256445">Mono-Audio</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Wenn Sie sich anmelden möchten, geben Sie Ihren Eltern-Zugangscode für Family Link ein</translation> <translation id="3039939407102840004">Der Akku des Eingabestifts ist bei <ph name="PERCENTAGE" /> %.</translation> <translation id="3045488863354895414">Guten Tag,</translation> +<translation id="3051189971848907985">Profil wird umbenannt. Warten Sie ein paar Minuten.</translation> <translation id="3055162170959710888">Du hast das Gerät heute <ph name="USED_TIME" /> verwendet</translation> <translation id="3077734595579995578">Umschalttaste</translation> <translation id="3081696990447829002">Menü maximieren</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Verbunden</translation> <translation id="3371140690572404006">USB-C-Gerät (Port vorne rechts)</translation> <translation id="3375634426936648815">Verbunden</translation> +<translation id="3378442621503952303">Verbindung zum Profil wird hergestellt. Warten Sie ein paar Minuten.</translation> <translation id="3386978599540877378">die Vollbildlupe</translation> <translation id="3400357268283240774">Zusätzliche Einstellungen</translation> <translation id="3410336247007142655">Einstellungen für das dunkle Design anzeigen</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Hallo, wie kann ich dir helfen?</translation> <translation id="3826099427150913765">Zu Passwort wechseln</translation> <translation id="383058930331066723">Energiesparmodus ist aktiviert</translation> +<translation id="3835880383832568924">Öffnen Sie die App mit den Tastenkombinationen, um sich die Neuerungen anzusehen</translation> <translation id="383629559565718788">Tastatureinstellungen anzeigen</translation> <translation id="3846214748874656680">Vollbildmodus beenden</translation> <translation id="3846575436967432996">Keine Netzwerkinformationen verfügbar</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Feedback geben</translation> <translation id="4731797938093519117">Elternfreigabe</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">Die Tastenkombination <ph name="LAUNCHER_KEY_NAME" /> + Ziffer hat sich geändert. Wenn Sie jetzt eine Funktionstaste benötigen, drücken Sie die <ph name="LAUNCHER_KEY_NAME" />-Taste + eine Taste in der oberen Reihe.</translation> <translation id="4744944742468440486">Informationen in Bezug auf Ihre Auswahl</translation> <translation id="4759238208242260848">Downloads</translation> <translation id="4774338217796918551">Du darfst das Gerät um <ph name="COME_BACK_TIME" /> wieder verwenden.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Kopieren</translation> <translation id="6910714959251846841">Damit dieses Update installiert werden kann, muss auf Ihrem Gerät ein Powerwash durchgeführt werden. Informieren Sie sich über das aktuelle <ph name="SYSTEM_APP_NAME" />-Update.</translation> <translation id="6919251195245069855">Ihre Smartcard wurde nicht erkannt. Bitte versuchen Sie es noch einmal.</translation> +<translation id="6921188888306725546">Tastenkombinationen wurden optimiert</translation> <translation id="6945221475159498467">Auswählen</translation> <translation id="6961121602502368900">„Smartphone stummschalten“ ist im Arbeitsprofil nicht verfügbar</translation> <translation id="6961840794482373852">Die Tastenkombination Alt + Aufwärtspfeil hat sich geändert. Wenn Sie jetzt die Seite-nach-oben-Taste benötigen, drücken Sie <ph name="LAUNCHER_KEY_NAME" />-Taste + Aufwärtspfeil.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Einstellungen für Bedienungshilfen</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, Signalstärke bei <ph name="SIGNAL_STRENGTH" />, von Ihrem Administrator verwaltet</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> verbleibend</translation> +<translation id="8641805545866562088">Profilliste wird aktualisiert. Warten Sie ein paar Minuten.</translation> <translation id="8646417893960517480">Timer: <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Wenn Sie eine Person hinzufügen möchten, geben Sie Ihren Eltern-Zugangscode für Family Link ein</translation> <translation id="8649101189709089199">Vorlesen</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">WLAN</translation> <translation id="881757059229893486">Einstellungen für Eingabemethoden</translation> +<translation id="8818320199597151042">Profil wird entfernt. Warten Sie ein paar Minuten.</translation> <translation id="8825863694328519386">Von links nach rechts wischen, um zurückzugehen</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Schaltfläche "Zurück"</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Bildschirm <ph name="DISPLAY_NAME" /> wurde entfernt</translation> <translation id="9098969848082897657">Smartphone stummschalten</translation> <translation id="9099154003160514616">Lacros-Update verfügbar</translation> +<translation id="9100887602489003640">Profil wird hinzugefügt. Warten Sie ein paar Minuten.</translation> <translation id="9105450214093926548">Während der Lacros-Browser läuft, kann kein zweiter Nutzer angemeldet werden. Verwenden Sie stattdessen ein zweites Browserprofil in Lacros oder schließen Sie den Browser und versuchen es noch einmal.</translation> <translation id="9133335900048457298">Geschützte Inhalte können nicht aufgezeichnet werden</translation> <translation id="9151726767154816831">Zum Aktualisieren Neustart und Powerwash durchführen</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 0efc09e..4fcc1331 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Instalar apps, extensiones y temas</translation> <translation id="2977598380246111477">Próximo número</translation> +<translation id="2992327365391326550">El botón del micrófono del dispositivo está desactivado.</translation> <translation id="2995447421581609334">Mostrar dispositivos de transmisión</translation> <translation id="2996462380875591307">Se habilitó la lupa con vista acoplada. Presiona Ctrl+Buscar+D de nuevo para desactivarla.</translation> <translation id="3000461861112256445">Audio mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Para acceder, ingresa el código de acceso parental de Family Link.</translation> <translation id="3039939407102840004">El nivel de la batería de la pluma stylus es del <ph name="PERCENTAGE" />%.</translation> <translation id="3045488863354895414">Buenas tardes:</translation> +<translation id="3051189971848907985">Se está cambiando el nombre del perfil. Espera unos minutos.</translation> <translation id="3055162170959710888">Hoy usaste este dispositivo durante <ph name="USED_TIME" /></translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">Expandir menú</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Conectado</translation> <translation id="3371140690572404006">Dispositivo USB-C (puerto lateral derecho delantero)</translation> <translation id="3375634426936648815">Conectado</translation> +<translation id="3378442621503952303">Se está estableciendo conexión con el perfil. Espera unos minutos.</translation> <translation id="3386978599540877378">la lupa de pantalla completa</translation> <translation id="3400357268283240774">Configuración adicional</translation> <translation id="3410336247007142655">Mostrar la configuración del Tema oscuro</translation> @@ -352,6 +355,7 @@ <translation id="380165613292957338">Hola, ¿cómo puedo ayudarte?</translation> <translation id="3826099427150913765">Cambiar a contraseña</translation> <translation id="383058930331066723">El modo de Ahorro de batería está activado</translation> +<translation id="3835880383832568924">Para ver las actualizaciones, abre la app de Shortcuts.</translation> <translation id="383629559565718788">Mostrar la configuración del teclado</translation> <translation id="3846214748874656680">Salir de pantalla completa</translation> <translation id="3846575436967432996">No hay información de red disponible.</translation> @@ -472,6 +476,7 @@ <translation id="4705716602320768426">Enviar comentarios</translation> <translation id="4731797938093519117">Acceso parental</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">Se modificó la combinación de teclas <ph name="LAUNCHER_KEY_NAME" /> + un número. Para usar las teclas de función, presiona la tecla <ph name="LAUNCHER_KEY_NAME" /> + una tecla de la fila superior.</translation> <translation id="4744944742468440486">Información sobre el texto seleccionado</translation> <translation id="4759238208242260848">Descargas</translation> <translation id="4774338217796918551">Regresa mañana a las <ph name="COME_BACK_TIME" />.</translation> @@ -729,6 +734,7 @@ <translation id="6896758677409633944">Copiar</translation> <translation id="6910714959251846841">Esta actualización requiere que apliques la función Powerwash en tu dispositivo. Obtén más información sobre la actualización más reciente de <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">No se reconoció tu tarjeta inteligente. Vuelve a intentarlo.</translation> +<translation id="6921188888306725546">Se mejoraron las combinaciones de teclas</translation> <translation id="6945221475159498467">Seleccionar</translation> <translation id="6961121602502368900">La opción Silenciar teléfono no está disponible en los perfiles de trabajo</translation> <translation id="6961840794482373852">Se modificó la combinación de teclas Alt + flecha hacia arriba. Para usar la tecla Re Pág, presiona la tecla <ph name="LAUNCHER_KEY_NAME" /> + flecha hacia arriba.</translation> @@ -935,6 +941,7 @@ <translation id="8631727435199967028">Configuración de accesibilidad</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, administrada por tu administrador</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> restante</translation> +<translation id="8641805545866562088">Se está actualizando la lista de perfiles. Espera unos minutos.</translation> <translation id="8646417893960517480">Temporizador: <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Para agregar una persona, ingresa tu código de acceso para padres de Family Link.</translation> <translation id="8649101189709089199">Seleccionar para pronunciar</translation> @@ -962,6 +969,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Configuración de los métodos de entrada</translation> +<translation id="8818320199597151042">Se está quitando el perfil. Espera unos minutos.</translation> <translation id="8825863694328519386">Para volver, desliza el dedo desde la izquierda</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Botón Atrás</translation> @@ -1007,6 +1015,7 @@ <translation id="9091626656156419976">Se quitó la pantalla <ph name="DISPLAY_NAME" /></translation> <translation id="9098969848082897657">Silenciar teléfono</translation> <translation id="9099154003160514616">Actualización disponible para Lacros</translation> +<translation id="9100887602489003640">Se está agregando un perfil. Espera unos minutos.</translation> <translation id="9105450214093926548">No se admite el acceso a un segundo usuario mientras se ejecuta el navegador Lacros. En su lugar, usa un segundo perfil de navegador en Lacros, o cierra Lacros y vuelve a intentarlo.</translation> <translation id="9133335900048457298">No se puede grabar contenido protegido</translation> <translation id="9151726767154816831">Reiniciar y aplicar Powerwash para actualizar</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index 5a8eda9..c07744c 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Instalar aplicaciones, extensiones y temas</translation> <translation id="2977598380246111477">Número siguiente</translation> +<translation id="2992327365391326550">El botón del micrófono del dispositivo está desactivado.</translation> <translation id="2995447421581609334">Mostrar dispositivos de emisión</translation> <translation id="2996462380875591307">Se ha habilitado la lupa fijada. Pulsa Ctrl + tecla de búsqueda + D de nuevo para desactivarla.</translation> <translation id="3000461861112256445">Audio en mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Para iniciar sesión, introduce tu código de acceso parental de Family Link</translation> <translation id="3039939407102840004">La batería del lápiz óptico está al <ph name="PERCENTAGE" /> por ciento.</translation> <translation id="3045488863354895414">Buenas tardes,</translation> +<translation id="3051189971848907985">Cambiando el nombre del perfil. Espera unos minutos.</translation> <translation id="3055162170959710888">Hoy has utilizado este dispositivo durante <ph name="USED_TIME" /></translation> <translation id="3077734595579995578">mayús</translation> <translation id="3081696990447829002">Mostrar menú</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Conectado</translation> <translation id="3371140690572404006">Dispositivo USB tipo C (puerto frontal derecho)</translation> <translation id="3375634426936648815">Conectado</translation> +<translation id="3378442621503952303">Conectándose al perfil. Espera unos minutos.</translation> <translation id="3386978599540877378">la lupa de pantalla completa</translation> <translation id="3400357268283240774">Configuración adicional</translation> <translation id="3410336247007142655">Mostrar ajustes de Tema oscuro</translation> @@ -352,6 +355,7 @@ <translation id="380165613292957338">Hola, ¿cómo puedo ayudarte?</translation> <translation id="3826099427150913765">Cambiar a contraseña</translation> <translation id="383058930331066723">Modo de ahorro de batería activado</translation> +<translation id="3835880383832568924">Para ver las actualizaciones, ve a la aplicación Shortcuts</translation> <translation id="383629559565718788">Mostrar configuración de teclado</translation> <translation id="3846214748874656680">Salir de pantalla completa</translation> <translation id="3846575436967432996">No hay información de red disponible.</translation> @@ -472,6 +476,7 @@ <translation id="4705716602320768426">Comentarios sobre el archivo</translation> <translation id="4731797938093519117">Acceso parental</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">La combinación de teclas <ph name="LAUNCHER_KEY_NAME" /> + número ha cambiado. Para usar las teclas de funciones, pulsa la tecla <ph name="LAUNCHER_KEY_NAME" /> + una tecla de la fila superior.</translation> <translation id="4744944742468440486">Información relacionada con tu selección</translation> <translation id="4759238208242260848">Descargas</translation> <translation id="4774338217796918551">Vuelve mañana a las <ph name="COME_BACK_TIME" />.</translation> @@ -729,6 +734,7 @@ <translation id="6896758677409633944">Copiar</translation> <translation id="6910714959251846841">Esta actualización le hará un Powerwash a tu dispositivo. Consulta más información sobre la última actualización de <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">No se ha podido reconocer la tarjeta inteligente. Vuelve a intentarlo.</translation> +<translation id="6921188888306725546">Las combinaciones de teclas se han mejorado</translation> <translation id="6945221475159498467">Seleccionar</translation> <translation id="6961121602502368900">La función Silenciar teléfono no está disponible en el perfil de trabajo</translation> <translation id="6961840794482373852">La combinación de teclas Alt + tecla de flecha hacia arriba ha cambiado. Para usar la tecla Re Pág, pulsa la tecla <ph name="LAUNCHER_KEY_NAME" /> + tecla de flecha hacia arriba.</translation> @@ -935,6 +941,7 @@ <translation id="8631727435199967028">Ajustes de accesibilidad</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />, gestionada por el administrador</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> restante</translation> +<translation id="8641805545866562088">Actualizando la ficha del perfil. Espera unos minutos.</translation> <translation id="8646417893960517480">Temporizador de <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Para añadir un perfil, introduce tu código de acceso parental de Family Link</translation> <translation id="8649101189709089199">Enunciar selección</translation> @@ -962,6 +969,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Configuración de métodos de introducción de texto</translation> +<translation id="8818320199597151042">Quitando perfil. Espera unos minutos.</translation> <translation id="8825863694328519386">Desliza el dedo desde la izquierda para volver</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Botón Atrás</translation> @@ -1007,6 +1015,7 @@ <translation id="9091626656156419976">Se ha quitado la pantalla <ph name="DISPLAY_NAME" /></translation> <translation id="9098969848082897657">Silenciar teléfono</translation> <translation id="9099154003160514616">Actualización de Lacros disponible</translation> +<translation id="9100887602489003640">Añadiendo perfil. Espera unos minutos.</translation> <translation id="9105450214093926548">No es posible que un segundo usuario inicie sesión mientras el navegador Lacros se está ejecutando. Utiliza un perfil del navegador secundario en Lacros o cierra Lacros y vuelve a intentarlo.</translation> <translation id="9133335900048457298">No se puede grabar contenido protegido</translation> <translation id="9151726767154816831">Reinicia y aplica la función Powerwash para actualizar el sistema</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index 62b6c18..8f13ba2 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Installer des applications, des extensions et des thèmes</translation> <translation id="2977598380246111477">Chiffre suivant</translation> +<translation id="2992327365391326550">Le bouton du micro de l'appareil est désactivé.</translation> <translation id="2995447421581609334">Afficher les appareils Cast.</translation> <translation id="2996462380875591307">Le mode Loupe ancrée est activé. Appuyez de nouveau sur Ctrl+Recherche+D pour le désactiver.</translation> <translation id="3000461861112256445">Audio mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Pour vous connecter, saisissez le code d'accès parental Family Link</translation> <translation id="3039939407102840004">Le stylet est chargé à <ph name="PERCENTAGE" /> %.</translation> <translation id="3045488863354895414">Bonjour,</translation> +<translation id="3051189971848907985">Changement de nom du profil… Attendez quelques minutes.</translation> <translation id="3055162170959710888">Vous avez utilisé l'appareil pendant <ph name="USED_TIME" /> aujourd'hui</translation> <translation id="3077734595579995578">maj</translation> <translation id="3081696990447829002">Développer le menu</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Connecté</translation> <translation id="3371140690572404006">Appareil USB de type C (port situé sur la droite de l'appareil, à l'avant)</translation> <translation id="3375634426936648815">Connecté</translation> +<translation id="3378442621503952303">Connexion au profil… Attendez quelques minutes.</translation> <translation id="3386978599540877378">la loupe plein écran</translation> <translation id="3400357268283240774">Autres paramètres</translation> <translation id="3410336247007142655">Afficher les paramètres du thème sombre</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Bonjour, comment puis-je vous aider ?</translation> <translation id="3826099427150913765">Authentification par mot de passe</translation> <translation id="383058930331066723">Économiseur de batterie activé</translation> +<translation id="3835880383832568924">Pour voir les modifications, ouvrez l'appli Raccourcis</translation> <translation id="383629559565718788">Afficher les paramètres du clavier</translation> <translation id="3846214748874656680">Quitter le mode plein écran</translation> <translation id="3846575436967432996">Aucune information disponible concernant le réseau</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Classer le commentaire</translation> <translation id="4731797938093519117">Accès parental</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">Le raccourci clavier <ph name="LAUNCHER_KEY_NAME" />+Chiffre a été modifié. Pour utiliser les touches de fonction, appuyez sur la touche du <ph name="LAUNCHER_KEY_NAME" /> et sur une touche de la rangée supérieure du clavier.</translation> <translation id="4744944742468440486">Informations sur le texte sélectionné</translation> <translation id="4759238208242260848">Téléchargements</translation> <translation id="4774338217796918551">Revenez demain à <ph name="COME_BACK_TIME" />.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Copier</translation> <translation id="6910714959251846841">Cette mise à jour nécessite que vous utilisiez la fonctionnalité Powerwash sur votre appareil. Obtenez de plus amples informations sur la dernière mise à jour <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">Impossible de reconnaître votre carte à puce. Veuillez réessayer.</translation> +<translation id="6921188888306725546">Les raccourcis clavier ont été améliorés</translation> <translation id="6945221475159498467">Sélectionner</translation> <translation id="6961121602502368900">Couper le son du téléphone n'est pas disponible dans le profil professionnel</translation> <translation id="6961840794482373852">Le raccourci clavier Alt+Flèche vers le haut a été modifié. Pour utiliser la touche Page précédente, appuyez sur la touche du <ph name="LAUNCHER_KEY_NAME" />+Flèche vers le haut.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Paramètres d'accessibilité</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, force du signal : <ph name="SIGNAL_STRENGTH" />, géré par votre administrateur</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> restant(s)</translation> +<translation id="8641805545866562088">Actualisation de la liste de profils… Attendez quelques minutes.</translation> <translation id="8646417893960517480">Minuteur de <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Pour ajouter une personne, saisissez le code d'accès parental Family Link.</translation> <translation id="8649101189709089199">Sélectionner pour prononcer</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi </translation> <translation id="881757059229893486">Paramètres des modes de saisie</translation> +<translation id="8818320199597151042">Suppression du profil… Attendez quelques minutes.</translation> <translation id="8825863694328519386">Faites glisser votre doigt de gauche à droite pour revenir en arrière</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Bouton Retour</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Suppression de l'écran <ph name="DISPLAY_NAME" /></translation> <translation id="9098969848082897657">Couper le son du téléphone</translation> <translation id="9099154003160514616">Mise à jour Lacros disponible</translation> +<translation id="9100887602489003640">Ajout du profil… Attendez quelques minutes.</translation> <translation id="9105450214093926548">Un second utilisateur ne peut pas se connecter lorsque le navigateur Lacros est en cours d'exécution. Veuillez utiliser un second profil de navigateur dans Lacros ou fermer ce dernier, puis réessayer.</translation> <translation id="9133335900048457298">Impossible d'enregistrer un contenu protégé</translation> <translation id="9151726767154816831">Redémarrer, puis lancer la réinitialisation Powerwash pour mettre à jour le système</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index 466984b..d4dff34 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Instal aplikasi, ekstensi, dan tema</translation> <translation id="2977598380246111477">Nomor berikutnya</translation> +<translation id="2992327365391326550">Tombol mikrofon perangkat dinonaktifkan.</translation> <translation id="2995447421581609334">Tampilkan perangkat transmisi.</translation> <translation id="2996462380875591307">Kaca Pembesar Tersemat diaktifkan. Tekan Ctrl+Search+D lagi untuk menonaktifkannya.</translation> <translation id="3000461861112256445">Audio mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Untuk login, masukkan kode akses orang tua Family Link</translation> <translation id="3039939407102840004">Baterai stilus <ph name="PERCENTAGE" /> persen.</translation> <translation id="3045488863354895414">Selamat siang,</translation> +<translation id="3051189971848907985">Mengganti nama profil. Tunggu beberapa menit.</translation> <translation id="3055162170959710888">Anda menggunakan perangkat ini selama <ph name="USED_TIME" /> hari ini</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">Luaskan menu</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Terhubung</translation> <translation id="3371140690572404006">Perangkat USB-C (port depan sebelah kanan)</translation> <translation id="3375634426936648815">Terhubung</translation> +<translation id="3378442621503952303">Menghubungkan ke profil. Tunggu beberapa menit.</translation> <translation id="3386978599540877378">kaca pembesar layar penuh</translation> <translation id="3400357268283240774">Setelan tambahan</translation> <translation id="3410336247007142655">Tampilkan setelan tema gelap</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Hai, ada yang bisa dibantu?</translation> <translation id="3826099427150913765">Ganti ke sandi</translation> <translation id="383058930331066723">Mode penghemat baterai aktif</translation> +<translation id="3835880383832568924">Untuk melihat pembaruan, buka aplikasi Pintasan</translation> <translation id="383629559565718788">Tampilkan setelan keyboard</translation> <translation id="3846214748874656680">Keluar dari layar penuh</translation> <translation id="3846575436967432996">Tidak tersedia informasi jaringan</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Kirim masukan</translation> <translation id="4731797938093519117">Akses orang tua</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">Pintasan keyboard <ph name="LAUNCHER_KEY_NAME" /> + Angka telah diubah. Untuk menggunakan tombol fungsi, tekan tombol <ph name="LAUNCHER_KEY_NAME" /> + tombol di baris atas.</translation> <translation id="4744944742468440486">Info terkait pilihan Anda</translation> <translation id="4759238208242260848">Download</translation> <translation id="4774338217796918551">Gunakan lagi besok pukul <ph name="COME_BACK_TIME" />.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Salin</translation> <translation id="6910714959251846841">Update ini memerlukan powerwash perangkat. Pelajari lebih lanjut update <ph name="SYSTEM_APP_NAME" /> terbaru.</translation> <translation id="6919251195245069855">Tidak bisa mengenali kartu smart Anda. Coba lagi.</translation> +<translation id="6921188888306725546">Pintasan keyboard telah ditingkatkan</translation> <translation id="6945221475159498467">Pilih</translation> <translation id="6961121602502368900">Fitur senyapkan ponsel tidak tersedia di profil kerja</translation> <translation id="6961840794482373852">Pintasan keyboard Alt + Panah Atas telah diubah. Untuk menggunakan tombol Page Up, tekan tombol <ph name="LAUNCHER_KEY_NAME" /> + Panah Atas.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Setelan Aksesibilitas</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, Kekuatan Sinyal <ph name="SIGNAL_STRENGTH" />, Dikelola oleh Administrator Anda</translation> <translation id="8639760480004882931">Sisa <ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">Memperbarui daftar profil. Tunggu beberapa menit.</translation> <translation id="8646417893960517480">Timer <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Untuk menambahkan pengguna, masukkan kode akses orang tua Family Link</translation> <translation id="8649101189709089199">Klik untuk Diucapkan</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Setelan Metode Input</translation> +<translation id="8818320199597151042">Menghapus profil. Tunggu beberapa menit.</translation> <translation id="8825863694328519386">Geser dari kiri untuk kembali</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Tombol kembali</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Tampilan <ph name="DISPLAY_NAME" /> dihapus</translation> <translation id="9098969848082897657">Senyapkan suara ponsel</translation> <translation id="9099154003160514616">Update Lacros tersedia</translation> +<translation id="9100887602489003640">Menambahkan profil. Tunggu beberapa menit.</translation> <translation id="9105450214093926548">Login pengguna kedua tidak didukung saat browser Lacros sedang berjalan. Gunakan profil browser kedua di Lacros atau tutup Lacros lalu coba lagi.</translation> <translation id="9133335900048457298">Tidak dapat merekam konten yang dilindungi</translation> <translation id="9151726767154816831">Mulai ulang dan powerwash untuk memperbarui</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index a18519b2..33663f8 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -153,7 +153,7 @@ <translation id="2127372758936585790">Caricabatterie a basso consumo</translation> <translation id="2132302418721800944">Registra schermo intero</translation> <translation id="2135456203358955318">Lente d'ingrandimento ancorata</translation> -<translation id="2146800439053023141">Attiva/disattiva posizione della barra</translation> +<translation id="2146800439053023141">Posizione della barra di attivazione</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />. Riprova</translation> <translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">Scorri con tre dita verso il basso per uscire dalla modalità Panoramica</translation> @@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Installare app, estensioni e temi.</translation> <translation id="2977598380246111477">Numero successivo</translation> +<translation id="2992327365391326550">Il pulsante del microfono del dispositivo è disattivato.</translation> <translation id="2995447421581609334">Mostra dispositivi di trasmissione.</translation> <translation id="2996462380875591307">Lente d'ingrandimento ancorata attivata. Premi di nuovo CTRL + tasto per la ricerca + D per disattivarla.</translation> <translation id="3000461861112256445">Audio in formato mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Per accedere, inserisci il codice accesso genitori di Family Link</translation> <translation id="3039939407102840004">Batteria dello stilo: <ph name="PERCENTAGE" /> percento.</translation> <translation id="3045488863354895414">Buon pomeriggio,</translation> +<translation id="3051189971848907985">Ridenominazione del profilo in corso… Attendi qualche minuto.</translation> <translation id="3055162170959710888">Oggi hai utilizzato questo dispositivo per <ph name="USED_TIME" /></translation> <translation id="3077734595579995578">maiusc</translation> <translation id="3081696990447829002">Espandi il menu</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Connesso</translation> <translation id="3371140690572404006">Dispositivo USB-C (porta anteriore destra)</translation> <translation id="3375634426936648815">Connessa</translation> +<translation id="3378442621503952303">Connessione al profilo in corso… Attendi qualche minuto.</translation> <translation id="3386978599540877378">la lente d'ingrandimento a schermo intero</translation> <translation id="3400357268283240774">Impostazioni aggiuntive</translation> <translation id="3410336247007142655">Mostra le impostazioni del tema scuro</translation> @@ -352,6 +355,7 @@ <translation id="380165613292957338">Ciao, come posso aiutarti?</translation> <translation id="3826099427150913765">Passa alla password</translation> <translation id="383058930331066723">La modalità Risparmio energetico è attiva</translation> +<translation id="3835880383832568924">Per vedere gli aggiornamenti, apri l'app Shortcuts</translation> <translation id="383629559565718788">Mostra impostazioni tastiera</translation> <translation id="3846214748874656680">Esci da schermo intero</translation> <translation id="3846575436967432996">Nessuna informazione di rete disponibile</translation> @@ -472,6 +476,7 @@ <translation id="4705716602320768426">Invia feedback</translation> <translation id="4731797938093519117">Accesso genitore</translation> <translation id="4734965478015604180">Orizzontale</translation> +<translation id="4735498845456076464">La scorciatoia da tastiera <ph name="LAUNCHER_KEY_NAME" /> + Numero è cambiata. Per usare i tasti funzione, premi il tasto <ph name="LAUNCHER_KEY_NAME" /> + un tasto nella fila superiore.</translation> <translation id="4744944742468440486">Informazioni relative al testo selezionato</translation> <translation id="4759238208242260848">Download</translation> <translation id="4774338217796918551">Puoi riprendere domani alle ore <ph name="COME_BACK_TIME" />.</translation> @@ -729,6 +734,7 @@ <translation id="6896758677409633944">Copia</translation> <translation id="6910714959251846841">Questo aggiornamento richiede il powerwash del dispositivo. Leggi ulteriori informazioni sull'ultimo aggiornamento di <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">Impossibile riconoscere la smart card. Riprova.</translation> +<translation id="6921188888306725546">Le scorciatoie da tastiera sono state migliorate</translation> <translation id="6945221475159498467">Seleziona</translation> <translation id="6961121602502368900">La funzionalità Disattiva audio non è disponibile sul profilo di lavoro</translation> <translation id="6961840794482373852">La scorciatoia da tastiera Alt + Freccia su è cambiata. Per usare il tasto Pagina su, premi il tasto <ph name="LAUNCHER_KEY_NAME" /> + Freccia su.</translation> @@ -935,6 +941,7 @@ <translation id="8631727435199967028">Impostazioni di accessibilità</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, intensità del segnale <ph name="SIGNAL_STRENGTH" />, gestita dall'amministratore</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> rimanente</translation> +<translation id="8641805545866562088">Aggiornamento dell'elenco di profili in corso… Attendi qualche minuto.</translation> <translation id="8646417893960517480">Timer: <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Per aggiungere una persona, inserisci il codice accesso genitori di Family Link</translation> <translation id="8649101189709089199">Seleziona per ascoltare</translation> @@ -962,6 +969,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Impostazioni metodi di immissione</translation> +<translation id="8818320199597151042">Rimozione del profilo in corso… Attendi qualche minuto.</translation> <translation id="8825863694328519386">Scorri da sinistra per tornare indietro</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Pulsante Indietro</translation> @@ -1007,6 +1015,7 @@ <translation id="9091626656156419976">Schermo <ph name="DISPLAY_NAME" /> rimosso</translation> <translation id="9098969848082897657">Disattiva audio</translation> <translation id="9099154003160514616">Aggiornamento di Lacros disponibile</translation> +<translation id="9100887602489003640">Aggiunta del profilo in corso… Attendi qualche minuto.</translation> <translation id="9105450214093926548">L'accesso di un secondo utente non è supportato durante l'uso del browser Lacros. Usa invece un secondo profilo del browser in Lacros oppure chiudi Lacros e riprova.</translation> <translation id="9133335900048457298">Impossibile registrare contenuti protetti</translation> <translation id="9151726767154816831">Riavvia ed esegui Powerwash per aggiornare</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 0e14703..b03e77dd 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">アプリ、拡張機能、テーマをインストールする</translation> <translation id="2977598380246111477">次の番号</translation> +<translation id="2992327365391326550">デバイスのマイクボタンはオフになっています。</translation> <translation id="2995447421581609334">キャスト デバイスを表示します。</translation> <translation id="2996462380875591307">ドッキング拡大鏡がオンになっています。オフにするには Ctrl+検索+D キーをもう一度押します。</translation> <translation id="3000461861112256445">モノラル音声</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">ログインするには、ファミリー リンクの保護者のアクセスコードを入力してください</translation> <translation id="3039939407102840004">タッチペンのバッテリー残量は <ph name="PERCENTAGE" />% です。</translation> <translation id="3045488863354895414">こんにちは</translation> +<translation id="3051189971848907985">プロファイルの名前を変更しています。数分お待ちください。</translation> <translation id="3055162170959710888">あなたは今日、このデバイスを <ph name="USED_TIME" />使用しました</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">メニューを展開</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">接続済み</translation> <translation id="3371140690572404006">USB-C デバイス(右手前のポート)</translation> <translation id="3375634426936648815">接続完了</translation> +<translation id="3378442621503952303">プロファイルに接続しています。数分お待ちください。</translation> <translation id="3386978599540877378">全画面拡大鏡</translation> <translation id="3400357268283240774">その他の設定</translation> <translation id="3410336247007142655">ダークテーマの設定を表示</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">はい、どんなご用でしょう?</translation> <translation id="3826099427150913765">パスワードに切り替える</translation> <translation id="383058930331066723">バッテリー セーバー モードがオンです</translation> +<translation id="3835880383832568924">変更点を確認するには、ショートカット アプリを開きます</translation> <translation id="383629559565718788">キーボード設定を表示</translation> <translation id="3846214748874656680">全画面表示を終了</translation> <translation id="3846575436967432996">利用可能なネットワーク情報がありません</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">フィードバックを送信</translation> <translation id="4731797938093519117">保護者によるアクセス</translation> <translation id="4734965478015604180">横</translation> +<translation id="4735498845456076464">キーボード ショートカット「<ph name="LAUNCHER_KEY_NAME" />+数字」が変更されました。ファンクション キーを使用するには、<ph name="LAUNCHER_KEY_NAME" />+最上列のキーを押してください。</translation> <translation id="4744944742468440486">選択した項目に関連する情報</translation> <translation id="4759238208242260848">ダウンロード</translation> <translation id="4774338217796918551">明日の <ph name="COME_BACK_TIME" /> になったら利用を再開できます。</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">コピー</translation> <translation id="6910714959251846841">このアップデートを適用するにはデバイスで Powerwash を実行する必要があります。<ph name="SYSTEM_APP_NAME" /> の最新アップデートの詳細をご確認ください。</translation> <translation id="6919251195245069855">スマートカードを認識できませんでした。もう一度お試しください。</translation> +<translation id="6921188888306725546">キーボード ショートカットが改善されました</translation> <translation id="6945221475159498467">選択</translation> <translation id="6961121602502368900">スマートフォンの消音は仕事用プロファイルでは使用できません</translation> <translation id="6961840794482373852">キーボード ショートカット「Alt+上矢印」が変更されました。PageUp キーを使用するには、<ph name="LAUNCHER_KEY_NAME" />+上矢印キーを押してください。</translation> @@ -935,6 +941,7 @@ <translation id="8631727435199967028">ユーザー補助機能の設定</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />、信号強度 <ph name="SIGNAL_STRENGTH" />、管理者によって管理</translation> <translation id="8639760480004882931">バッテリー残量: <ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">プロファイル リストを更新しています。数分お待ちください。</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> タイマー</translation> <translation id="8647931990447795414">ユーザーを追加するには、ファミリー リンクの保護者のアクセスコードを入力してください</translation> <translation id="8649101189709089199">選択して読み上げ</translation> @@ -962,6 +969,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />。<ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">入力方法の設定</translation> +<translation id="8818320199597151042">プロファイルを削除しています。数分お待ちください。</translation> <translation id="8825863694328519386">左側からスワイプすると前の画面に戻ります</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">戻るボタン</translation> @@ -1007,6 +1015,7 @@ <translation id="9091626656156419976">ディスプレイ「<ph name="DISPLAY_NAME" />」が取り外されました</translation> <translation id="9098969848082897657">スマートフォンを消音する</translation> <translation id="9099154003160514616">Lacros のアップデートがあります</translation> +<translation id="9100887602489003640">プロファイルを追加しています。数分お待ちください。</translation> <translation id="9105450214093926548">Lacros ブラウザの実行中は 2 つ目のユーザーにログインできません。代わりに Lacros で 2 つ目のブラウザ プロフィールを使用するか、Lacros を閉じてログインしなおしてください。</translation> <translation id="9133335900048457298">保護されたコンテンツは録画できません</translation> <translation id="9151726767154816831">更新するには、再起動して Powerwash を実行してください</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index fd98dfc..b5193b4 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">ការកំណត់អ្នកប្រើប្រាស់</translation> <translation id="3217205077783620295">កម្រិតសំឡេងត្រូវបានបើក ការបិទនឹងបិទសំឡេង។</translation> <translation id="3226991577105957773">+<ph name="COUNT" /> ទៀត</translation> +<translation id="324366796737464147">ការកាត់បន្ថយសំឡេងរំខាន</translation> <translation id="3249513730522716925">បានផ្លាស់ទីផ្ទាំង <ph name="WINDOW_TITLE" /> ពីតុទី <ph name="ACTIVE_DESK" /> ទៅតុទី <ph name="TARGET_DESK" /></translation> <translation id="3255483164551725916">តើអ្នកអាចធ្វើអ្វីបានខ្លះ?</translation> <translation id="3269597722229482060">ចុចកណ្ដុរខាងស្ដាំ</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 72bdcd9..719f482 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">Хэрэглэгчийн тохиргоо</translation> <translation id="3217205077783620295">Дууг нээсэн, унтраах нь аудионы дууг хаана.</translation> <translation id="3226991577105957773">Бусад +<ph name="COUNT" /></translation> +<translation id="324366796737464147">Шуугиан хасалт</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> цонхыг <ph name="ACTIVE_DESK" /> дэлгэцээс <ph name="TARGET_DESK" /> дэлгэц рүү зөөсөн</translation> <translation id="3255483164551725916">Та юу хийх боломжтой вэ?</translation> <translation id="3269597722229482060">Баруун талыг товших</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 4f18e9b..6fccc70 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -206,7 +206,7 @@ <translation id="2582112259361606227">အပ်ဒိတ်လုပ်ရန်အတွက် ပြန်လည်စတင်ရန်</translation> <translation id="2595239820337756193">၅ ကီလိုမီတာကို မိုင်ပြောင်းပါ</translation> <translation id="2596078834055697711">ဝင်းဒိုး မျက်နှာပြင်ပုံ ရိုက်ရန်</translation> -<translation id="2617342710774726426">ဆင်းမ်ကဒ် လော့ခ်ကျနေပါသည်</translation> +<translation id="2617342710774726426">ဆင်းမ်ကတ် လော့ခ်ကျနေပါသည်</translation> <translation id="2621713457727696555">လုံခြုံပြီ</translation> <translation id="2653019840645008922">ဝင်းဒိုး ပုံဖမ်းယူမှု</translation> <translation id="2653659639078652383">ပေးပို့ရန်</translation> @@ -923,7 +923,7 @@ <translation id="8433186206711564395">ကွန်ရက် ဆက်တင်များ</translation> <translation id="8433977262951327081">စင်ပေါ်တွင် စာရိုက်စနစ်ရွေးချယ်စရာ မီနူးစာသားအကွက်ကို ပြသရန် ဖြတ်လမ်းလင့်ခ် ပြောင်းသွားပါပြီ။ <ph name="NEW_SHORTCUT" /> ကို <ph name="OLD_SHORTCUT" /> အစား သုံးပေးပါ။</translation> <translation id="8444246603146515890">မြင်ကွင်း <ph name="DESK_TITILE" /> စတင်ထားသည်</translation> -<translation id="8452135315243592079">ဆင်းမ်ကဒ် မရှိပါ</translation> +<translation id="8452135315243592079">ဆင်းမ်ကတ် မရှိပါ</translation> <translation id="8462305545768648477">'စကားပြော ရွေးရန်' ကို ပိတ်ရန်</translation> <translation id="847056008324733326">မြင်ကွင်းစကေး ဆက်တင်များ</translation> <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> က <ph name="FEATURE_NAME" /> ကို <ph name="FEATURE_STATE" />။</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index 4d5e0c1..0120ca0 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">Gebruikersinstellingen</translation> <translation id="3217205077783620295">Volume staat aan. Als je het uitzet, hoor je geen audio.</translation> <translation id="3226991577105957773">+<ph name="COUNT" /> andere meldingen</translation> +<translation id="324366796737464147">Ruisonderdrukking</translation> <translation id="3249513730522716925">Het venster <ph name="WINDOW_TITLE" /> is verplaatst van bureaublad <ph name="ACTIVE_DESK" /> naar bureaublad <ph name="TARGET_DESK" /></translation> <translation id="3255483164551725916">Wat kun je doen?</translation> <translation id="3269597722229482060">Klikken met rechtermuisknop</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 68813e37..325be77e 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">ଆପ୍, ଏକ୍ସଟେନ୍ସନ୍ ଓ ଥିମ୍ଗୁଡ଼ିକ ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> <translation id="2977598380246111477">ପରବର୍ତ୍ତୀ ନମ୍ବର</translation> +<translation id="2992327365391326550">ଡିଭାଇସର ମାଇକ୍ରୋଫୋନ୍ ବଟନ୍ ବନ୍ଦ କରାଯାଇଛି।</translation> <translation id="2995447421581609334">କାଷ୍ଟ ଡିଭାଇସ୍ଗୁଡ଼ିକ ଦେଖନ୍ତୁ।</translation> <translation id="2996462380875591307">ଡକ୍ ହୋଇଥିବା ମ୍ୟାଗ୍ନିଫାୟର୍କୁ ସକ୍ଷମ କରାଯାଇଛି। ଏହାକୁ ବନ୍ଦରେ ଟଗଲ୍ କରିବାକୁ Ctrl+Search+D ଦବାନ୍ତୁ</translation> <translation id="3000461861112256445">ମୋନୋ ଅଡିଓ</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">ସାଇନ୍ ଇନ୍ କରିବାକୁ, ଆପଣଙ୍କର Family Linkର ବାପାମା ଆକ୍ସେସ୍ କୋଡ୍ ଲେଖନ୍ତୁ</translation> <translation id="3039939407102840004">ଷ୍ଟାଇଲସ୍ ବ୍ୟାଟେରୀ <ph name="PERCENTAGE" /> ଶତକଡ଼ା ଅଛି।</translation> <translation id="3045488863354895414">ଶୁଭ ଅପରାହ୍ନ,</translation> +<translation id="3051189971848907985">ପ୍ରୋଫାଇଲର ନାମ ବଦଳାଯାଉଛି। କିଛି ସମୟ ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ।</translation> <translation id="3055162170959710888">ଆଜି, ଆପଣ <ph name="USED_TIME" /> ସମୟରେ ଏହି ଡିଭାଇସ୍ ବ୍ୟବହାର କଲେ</translation> <translation id="3077734595579995578">Shift</translation> <translation id="3081696990447829002">ମେନୁକୁ ପ୍ରସାରିତ କରନ୍ତୁ</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">ସଂଯୁକ୍ତ ହୋଇଛି</translation> <translation id="3371140690572404006">USB-C ଡିଭାଇସ୍ (ସମ୍ମୁଖ ଡାହାଣପଟ ପୋର୍ଟ)</translation> <translation id="3375634426936648815">ସଂଯୁକ୍ତ ହୋଇଛି</translation> +<translation id="3378442621503952303">ପ୍ରୋଫାଇଲ୍ ସହ ସଂଯୋଗ କରାଯାଉଛି। କିଛି ସମୟ ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ।</translation> <translation id="3386978599540877378">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ ମ୍ୟାଗ୍ନିଫାୟାର୍</translation> <translation id="3400357268283240774">ଅତିରିକ୍ତ ସେଟିଂସ୍</translation> <translation id="3410336247007142655">ଗାଢ଼ ଥିମ୍ ସେଟିଂସ୍ ଦେଖାନ୍ତୁ</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">ନମସ୍କାର, ମୁଁ କିପରି ଭାବେ ସାହାଯ୍ୟ କରିପାରିବି?</translation> <translation id="3826099427150913765">ପାସୱାର୍ଡକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation> <translation id="383058930331066723">ବ୍ୟାଟେରୀ ସେଭର୍ ମୋଡ୍ ଚାଲୁ ଅଛି</translation> +<translation id="3835880383832568924">ଅପଡେଟଗୁଡ଼ିକୁ ଦେଖିବା ପାଇଁ, Shortcuts ଆପ୍ ଖୋଲନ୍ତୁ</translation> <translation id="383629559565718788">କୀବୋର୍ଡ୍ ସେଟିଂସ୍ ଦେଖାନ୍ତୁ।</translation> <translation id="3846214748874656680">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁ</translation> <translation id="3846575436967432996">କୌଣସି ନେଟ୍ୱର୍କ ସୂଚନା ଉପଲବ୍ଧ ନାହିଁ</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">ମତାମତ ଦାଖଲ କରନ୍ତୁ</translation> <translation id="4731797938093519117">ମାତା-ପିତାଙ୍କର ଆକ୍ସେସ୍</translation> <translation id="4734965478015604180">ଭୂସମାନ୍ତର</translation> +<translation id="4735498845456076464"><ph name="LAUNCHER_KEY_NAME" /> + Number କୀବୋର୍ଡ ସର୍ଟକଟ୍ ବଦଳି ଯାଇଛି। ଫଙ୍କସନ୍ କୀଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବା ପାଇଁ, <ph name="LAUNCHER_KEY_NAME" /> କୀ + ଶୀର୍ଷ ଧାଡ଼ିରେ ଥିବା ଏକ କୀକୁ ଦବାନ୍ତୁ।</translation> <translation id="4744944742468440486">ଆପଣଙ୍କ ଚୟନ ସମ୍ବନ୍ଧିତ ସୂଚନା</translation> <translation id="4759238208242260848">ଡାଉନଲୋଡସମୂହ</translation> <translation id="4774338217796918551">ଆସନ୍ତାକାଲି <ph name="COME_BACK_TIME" />ରେ ପୁଣି ଆସନ୍ତୁ।</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">କପି କରନ୍ତୁ</translation> <translation id="6910714959251846841">ଏହି ଅପ୍ଡେଟ୍ ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ ପାୱାର୍ୱାସ୍ ଦେବାକୁ ଆବଶ୍ୟକ କରେ। ନବୀନତମ <ph name="SYSTEM_APP_NAME" /> ଅପ୍ଡେଟ୍ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ।</translation> <translation id="6919251195245069855">ଆପଣଙ୍କର ସ୍ମାର୍ଟ କାର୍ଡକୁ ଚିହ୍ନଟ କରିପାରୁ ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> +<translation id="6921188888306725546">କୀବୋର୍ଡ ସର୍ଟକଟଗୁଡ଼ିକୁ ଉନ୍ନତ କରାଯାଇଛି</translation> <translation id="6945221475159498467">ଚୟନ କରନ୍ତୁ</translation> <translation id="6961121602502368900">ୱାର୍କ ପ୍ରୋଫାଇଲରେ ସାଇଲେନ୍ସ ଫୋନ୍ ଫିଚର୍ ଉପଲବ୍ଧ ନାହିଁ</translation> <translation id="6961840794482373852">Alt + ଉପର ତୀର କୀବୋର୍ଡ ସର୍ଟକଟ୍ ବଦଳି ଯାଇଛି। Page Up କୀକୁ ବ୍ୟବହାର କରିବା ପାଇଁ, <ph name="LAUNCHER_KEY_NAME" /> କୀ + ଉପର ତୀର କୀ ଦବାନ୍ତୁ।</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସ୍</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, ସିଗ୍ନାଲ୍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଆପଣଙ୍କର ଆଡ୍ମିନିଷ୍ଟ୍ରେଟର୍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> ବାକି ଅଛି</translation> +<translation id="8641805545866562088">ପ୍ରୋଫାଇଲ୍ ତାଲିକାକୁ ରିଫ୍ରେସ୍ କରାଯାଉଛି। କିଛି ସମୟ ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ।</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> ଟାଇମର୍</translation> <translation id="8647931990447795414">ଜଣେ ବ୍ୟକ୍ତିଙ୍କୁ ଯୋଗ କରିବାକୁ, ଆପଣଙ୍କର Family Linkର ବାପାମା ଆକ୍ସେସ୍ କୋଡ୍ ଲେଖନ୍ତୁ</translation> <translation id="8649101189709089199">ସିଲେକ୍ଟ-ଟୁ-ସ୍ପିକ୍</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />। <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">ୱାଇ-ଫାଇ</translation> <translation id="881757059229893486">ଇନପୁଟ୍ ପଦ୍ଧତି ସେଟିଂସ୍</translation> +<translation id="8818320199597151042">ପ୍ରୋଫାଇଲକୁ କାଢ଼ି ଦିଆଯାଉଛି। କିଛି ସମୟ ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ।</translation> <translation id="8825863694328519386">ପଛକୁ ଫେରିବା ପାଇଁ ବାମ ପାର୍ଶ୍ୱରୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">ପଛକୁ ଫେରନ୍ତୁ ବଟନ୍</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976"><ph name="DISPLAY_NAME" />ରୁ ଡିସ୍ପ୍ଲେ କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="9098969848082897657">ଫୋନକୁ ନୀରବ କରନ୍ତୁ</translation> <translation id="9099154003160514616">ଲାକରୋସ୍ ଅପଡେଟ୍ ଉପଲବ୍ଧ</translation> +<translation id="9100887602489003640">ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରାଯାଉଛି। କିଛି ସମୟ ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ।</translation> <translation id="9105450214093926548">Lacros ବ୍ରାଉଜର୍ ଚାଲୁଥିବା ସମୟରେ ଏକ ଦ୍ଵିତୀୟ ଉପଯୋଗକର୍ତ୍ତା ସାଇନ୍ ଇନ୍ କରିବା ସମର୍ଥିତ ନୁହେଁ। ଏହା ପରିବର୍ତ୍ତେ ଦୟାକରି Lacrosରେ ଏକ ଦ୍ୱିତୀୟ ବ୍ରାଉଜର୍ ପ୍ରୋଫାଇଲ୍ ବ୍ୟବହାର କରନ୍ତୁ କିମ୍ବା Lacrosକୁ ବନ୍ଦ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="9133335900048457298">ସୁରକ୍ଷିତ ବିଷୟବସ୍ତୁକୁ ରେକର୍ଡ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="9151726767154816831">ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ରିଷ୍ଟାର୍ଟ ଓ ପାୱର୍ୱାସ୍ କରନ୍ତୁ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index e08c05b..99c15b88 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">ਐਪਾਂ, ਐਕਸਟੈਂਸ਼ਨਾਂ ਅਤੇ ਥੀਮਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰੋ</translation> <translation id="2977598380246111477">ਅਗਲਾ ਨੰਬਰ</translation> +<translation id="2992327365391326550">ਡੀਵਾਈਸ ਦਾ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਟਨ ਬੰਦ ਹੈ।</translation> <translation id="2995447421581609334">ਕਾਸਟ ਡੀਵਾਈਸਾਂ ਦਿਖਾਓ।</translation> <translation id="2996462380875591307">'ਡੌਕ ਕੀਤਾ ਵਿਸਤਾਰਕ' ਚਾਲੂ ਕੀਤਾ ਗਿਆ। ਇਸਨੂੰ ਬੰਦ 'ਤੇ ਟੌਗਲ ਕਰਨ ਲਈ ਦੁਬਾਰਾ Ctrl+Search+D ਦਬਾਓ।</translation> <translation id="3000461861112256445">ਮੋਨੋ ਆਡੀਓ</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">ਸਾਈਨ-ਇਨ ਕਰਨ ਲਈ, ਆਪਣਾ Family Link ਮਾਂ-ਪਿਓ ਪਹੁੰਚ ਕੋਡ ਦਾਖਲ ਕਰੋ</translation> <translation id="3039939407102840004">ਸਟਾਈਲਸ ਦੀ ਬੈਟਰੀ <ph name="PERCENTAGE" /> ਪ੍ਰਤੀਸ਼ਤ ਹੈ।</translation> <translation id="3045488863354895414">ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ,</translation> +<translation id="3051189971848907985">ਪ੍ਰੋਫਾਈਲ ਦਾ ਨਾਮ ਬਦਲਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਉਡੀਕ ਕਰੋ।</translation> <translation id="3055162170959710888">ਤੁਸੀਂ ਅੱਜ ਇਸ ਡੀਵਾਈਸ ਨੂੰ <ph name="USED_TIME" /> ਤੱਕ ਵਰਤਿਆ</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">ਮੀਨੂ ਦਾ ਵਿਸਤਾਰ ਕਰੋ</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">ਕਨੈਕਟ ਕੀਤਾ</translation> <translation id="3371140690572404006">USB-C ਡੀਵਾਈਸ (ਸੱਜੇ ਪਾਸੇ ਅਗਲਾ ਪੋਰਟ)</translation> <translation id="3375634426936648815">ਕਨੈਕਟ ਹੈ</translation> +<translation id="3378442621503952303">ਪ੍ਰੋਫਾਈਲ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਉਡੀਕ ਕਰੋ।</translation> <translation id="3386978599540877378">ਪੂਰੀ-ਸਕ੍ਰੀਨ ਵੱਡਦਰਸ਼ੀ</translation> <translation id="3400357268283240774">ਵਾਧੂ ਸੈਟਿੰਗਾਂ</translation> <translation id="3410336247007142655">ਗੂੜ੍ਹੇ ਥੀਮ ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ, ਮੈਂ ਤੁਹਾਡੀ ਮਦਦ ਕਿਵੇਂ ਕਰਾਂ?</translation> <translation id="3826099427150913765">ਪਾਸਵਰਡ 'ਤੇ ਬਦਲੀ ਕਰੋ</translation> <translation id="383058930331066723">ਬੈਟਰੀ ਸੇਵਰ ਮੋਡ ਚਾਲੂ ਹੈ</translation> +<translation id="3835880383832568924">ਅੱਪਡੇਟਾਂ ਨੂੰ ਦੇਖਣ ਲਈ, Shortcuts ਐਪ ਖੋਲ੍ਹੋ</translation> <translation id="383629559565718788">ਕੀ-ਬੋਰਡ ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ</translation> <translation id="3846214748874656680">ਫੁਲਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation> <translation id="3846575436967432996">ਕੋਈ ਵੀ ਨੈੱਟਵਰਕ ਜਾਣਕਾਰੀ ਉਪਲਬਧ ਨਹੀਂ</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">ਫ਼ਾਈਲ ਬਾਰੇ ਵਿਚਾਰ</translation> <translation id="4731797938093519117">ਮਾਂ-ਪਿਓ ਲਈ ਪਹੁੰਚ</translation> <translation id="4734965478015604180">ਲੇਟਵਾਂ</translation> +<translation id="4735498845456076464"><ph name="LAUNCHER_KEY_NAME" /> + ਨੰਬਰ ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਬਦਲ ਗਿਆ ਹੈ। ਫੰਕਸ਼ਨ ਕੁੰਜੀਆਂ ਵਰਤਣ ਲਈ, <ph name="LAUNCHER_KEY_NAME" /> ਕੁੰਜੀ + ਉੱਪਰਲੀ ਕਤਾਰ 'ਤੇ ਦਿੱਤੀ ਕੋਈ ਵੀ ਕੁੰਜੀ ਦਬਾਓ।</translation> <translation id="4744944742468440486">ਤੁਹਾਡੀ ਚੋਣ ਨਾਲ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ</translation> <translation id="4759238208242260848">ਡਾਊਨਲੋਡਸ</translation> <translation id="4774338217796918551">ਕੱਲ੍ਹ <ph name="COME_BACK_TIME" /> ਡੀਵਾਈਸ ਦੁਬਾਰਾ ਵਰਤੋ।</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">ਕਾਪੀ ਕਰੋ</translation> <translation id="6910714959251846841">ਇਸ ਅੱਪਡੇਟ ਲਈ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਪਾਵਰਵਾਸ਼ ਕੀਤੇ ਜਾਣ ਦੀ ਲੋੜ ਹੈ। ਨਵੀਨਤਮ <ph name="SYSTEM_APP_NAME" /> ਅੱਪਡੇਟ ਬਾਰੇ ਹੋਰ ਜਾਣੋ।</translation> <translation id="6919251195245069855">ਤੁਹਾਡਾ ਸਮਾਰਟ ਕਾਰਡ ਪਛਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> +<translation id="6921188888306725546">ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਇਆ ਗਿਆ</translation> <translation id="6945221475159498467">ਚੁਣੋ</translation> <translation id="6961121602502368900">ਫ਼ੋਨ ਨੂੰ ਖਮੋਸ਼ ਕਰਨ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ 'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</translation> <translation id="6961840794482373852">Alt + ਉੱਪਰ ਤੀਰ ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਬਦਲ ਗਿਆ ਹੈ। Page Up ਕੁੰਜੀ ਵਰਤਣ ਲਈ, <ph name="LAUNCHER_KEY_NAME" /> ਕੁੰਜੀ + ਉੱਪਰ ਤੀਰ ਦਬਾਓ।</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">ਪਹੁੰਚਯੋਗਤਾ ਸੈਟਿੰਗਾਂ</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ <ph name="SIGNAL_STRENGTH" />, ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> ਬਾਕੀ</translation> +<translation id="8641805545866562088">ਪ੍ਰੋਫਾਈਲ ਸੂਚੀ ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਉਡੀਕ ਕਰੋ।</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> ਟਾਈਮਰ</translation> <translation id="8647931990447795414">ਕਿਸੇ ਵਿਅਕਤੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, ਆਪਣਾ Family Link ਮਾਂ-ਪਿਓ ਪਹੁੰਚ ਕੋਡ ਦਾਖਲ ਕਰੋ</translation> <translation id="8649101189709089199">ਚੁਣੋ ਅਤੇ ਸੁਣੋ</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />। <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">ਵਾਈ-ਫਾਈ</translation> <translation id="881757059229893486">ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ</translation> +<translation id="8818320199597151042">ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਉਡੀਕ ਕਰੋ।</translation> <translation id="8825863694328519386">ਪਿੱਛੇ ਜਾਣ ਲਈ ਖੱਬੇ ਪਾਸੇ ਤੋਂ ਸਵਾਈਪ ਕਰੋ</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">'ਪਿੱਛੇ' ਬਟਨ</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">ਡਿਲਪਲੇ <ph name="DISPLAY_NAME" /> ਨੂੰ ਹਟਾਇਆ ਗਿਆ</translation> <translation id="9098969848082897657">ਫ਼ੋਨ ਖਮੋਸ਼ ਕਰੋ</translation> <translation id="9099154003160514616">Lacros ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ</translation> +<translation id="9100887602489003640">ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਉਡੀਕ ਕਰੋ।</translation> <translation id="9105450214093926548">Lacros ਬ੍ਰਾਊਜ਼ਰ ਚੱਲਣ ਦੌਰਾਨ ਦੂਜੇ ਵਰਤੋਂਕਾਰ ਨੂੰ ਸਾਈਨ-ਇਨ ਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਏ Lacros ਵਿੱਚ ਦੂਜੇ ਬ੍ਰਾਊਜ਼ਰ ਪ੍ਰੋਫਾਈਲ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਾਂ Lacros ਨੂੰ ਬੰਦ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="9133335900048457298">ਸੁਰੱਖਿਅਤ ਸਮੱਗਰੀ ਨੂੰ ਰਿਕਾਰਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="9151726767154816831">ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਅਤੇ ਪਾਵਰਵਾਸ਼ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index b3bcdab1..cee3e30 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">instalar apps, extensões e temas;</translation> <translation id="2977598380246111477">Próximo número</translation> +<translation id="2992327365391326550">O botão do microfone do dispositivo está desativado.</translation> <translation id="2995447421581609334">Mostrar dispositivos de transmissão.</translation> <translation id="2996462380875591307">Lupa em área fixa ativada. Pressione Ctrl+Pesquisa+D novamente para desativá-la.</translation> <translation id="3000461861112256445">Áudio mono</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Para fazer login, insira seu código de acesso de pai/mãe do Family Link</translation> <translation id="3039939407102840004">Bateria da stylus em <ph name="PERCENTAGE" />%.</translation> <translation id="3045488863354895414">Boa tarde,</translation> +<translation id="3051189971848907985">Renomeando o perfil. Aguarde alguns minutos.</translation> <translation id="3055162170959710888">Você usou este dispositivo por <ph name="USED_TIME" /> hoje</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">Expandir menu</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Conectado</translation> <translation id="3371140690572404006">Dispositivo USB-C (porta frontal da direita)</translation> <translation id="3375634426936648815">Conectado</translation> +<translation id="3378442621503952303">Conectando-se ao perfil. Aguarde alguns minutos.</translation> <translation id="3386978599540877378">a lupa de tela cheia</translation> <translation id="3400357268283240774">Configurações adicionais</translation> <translation id="3410336247007142655">Mostrar configurações do tema escuro</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Oi! Como posso ajudar?</translation> <translation id="3826099427150913765">Usar senha</translation> <translation id="383058930331066723">Modo de Economia de bateria ativado</translation> +<translation id="3835880383832568924">Para ver as atualizações, abra o app Atalhos</translation> <translation id="383629559565718788">Mostrar configurações do teclado</translation> <translation id="3846214748874656680">Sair da tela cheia</translation> <translation id="3846575436967432996">Não há informações de rede disponíveis</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Enviar feedback</translation> <translation id="4731797938093519117">Acesso de pai/mãe</translation> <translation id="4734965478015604180">Horizontal</translation> +<translation id="4735498845456076464">O atalho de teclado <ph name="LAUNCHER_KEY_NAME" /> + tecla numérica mudou. Para usar as teclas de função, pressione <ph name="LAUNCHER_KEY_NAME" /> + uma tecla na linha superior.</translation> <translation id="4744944742468440486">Informações relacionadas à sua seleção</translation> <translation id="4759238208242260848">Downloads</translation> <translation id="4774338217796918551">Volte amanhã, neste horário: <ph name="COME_BACK_TIME" />.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Copiar</translation> <translation id="6910714959251846841">Esta atualização requer o powerwash do seu dispositivo. Saiba mais sobre a última atualização do <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">Não foi possível reconhecer seu cartão inteligente. Tente novamente.</translation> +<translation id="6921188888306725546">Os atalhos de teclado foram melhorados</translation> <translation id="6945221475159498467">Selecionar</translation> <translation id="6961121602502368900">O recurso "Silenciar smartphone" não está disponível no perfil de trabalho</translation> <translation id="6961840794482373852">O atalho de teclado Alt + seta para cima mudou. Para usar a tecla Page Up, pressione <ph name="LAUNCHER_KEY_NAME" /> + seta para cima.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Configurações de acessibilidade</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, intensidade do sinal em <ph name="SIGNAL_STRENGTH" />, gerenciada pelo seu administrador</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> restante(s)</translation> +<translation id="8641805545866562088">Atualizando a lista de perfis. Aguarde alguns minutos.</translation> <translation id="8646417893960517480">Timer de <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Para adicionar uma pessoa, insira seu código de acesso de pai/mãe do Family Link</translation> <translation id="8649101189709089199">Selecionar para ouvir</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Configurações de métodos de entrada</translation> +<translation id="8818320199597151042">Removendo o perfil. Aguarde alguns minutos.</translation> <translation id="8825863694328519386">Deslize da esquerda para voltar</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Botão "Voltar"</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Tela <ph name="DISPLAY_NAME" /> removida</translation> <translation id="9098969848082897657">Silenciar smartphone</translation> <translation id="9099154003160514616">Atualização do Lacros disponível</translation> +<translation id="9100887602489003640">Adicionando perfil. Aguarde alguns minutos.</translation> <translation id="9105450214093926548">Não é possível fazer login em um segundo usuário enquanto o navegador Lacros está aberto. Use um segundo perfil de navegador no Lacros ou feche-o e tente novamente.</translation> <translation id="9133335900048457298">Não é possível gravar conteúdo protegido</translation> <translation id="9151726767154816831">Reinicie e execute um powerwash para atualizar</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index a103fc7..7a89332 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Устанавливать приложения, расширения и темы.</translation> <translation id="2977598380246111477">Следующая цифра</translation> +<translation id="2992327365391326550">Кнопка микрофона на устройстве отключена</translation> <translation id="2995447421581609334">Показать устройства Google Cast</translation> <translation id="2996462380875591307">Закрепленная лупа включена. Чтобы отключить ее, нажмите Ctrl + Поиск + D.</translation> <translation id="3000461861112256445">Монофонический звук</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Чтобы войти, введите родительский код доступа Family Link.</translation> <translation id="3039939407102840004">Заряд батареи стилуса составляет <ph name="PERCENTAGE" /> процентов.</translation> <translation id="3045488863354895414">Добрый день!</translation> +<translation id="3051189971848907985">Профиль переименовывается. Подождите несколько минут.</translation> <translation id="3055162170959710888">Сегодня вы уже использовали это устройство <ph name="USED_TIME" />.</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">Развернуть меню</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Подключено</translation> <translation id="3371140690572404006">Устройство USB-C (ближний порт справа)</translation> <translation id="3375634426936648815">Подключено</translation> +<translation id="3378442621503952303">Выполняется подключение к профилю. Подождите несколько минут.</translation> <translation id="3386978599540877378">Полноэкранная лупа</translation> <translation id="3400357268283240774">Дополнительные настройки</translation> <translation id="3410336247007142655">Показать настройки тёмной темы</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Привет! Чем могу помочь?</translation> <translation id="3826099427150913765">Войти с помощью пароля</translation> <translation id="383058930331066723">Включен режим энергосбережения</translation> +<translation id="3835880383832568924">Чтобы посмотреть изменения, откройте приложение Shortcuts.</translation> <translation id="383629559565718788">Показать настройки клавиатуры</translation> <translation id="3846214748874656680">Обычный режим</translation> <translation id="3846575436967432996">Информация о сетях недоступна</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Отправить отзыв</translation> <translation id="4731797938093519117">Родительский доступ</translation> <translation id="4734965478015604180">Горизонтально</translation> +<translation id="4735498845456076464">Функция сочетания клавиш "<ph name="LAUNCHER_KEY_NAME" /> + цифра" изменилась. Чтобы выполнить действие функциональной клавиши, нажмите <ph name="LAUNCHER_KEY_NAME" /> + клавиша верхнего ряда.</translation> <translation id="4744944742468440486">Информация на основе выделенного текста</translation> <translation id="4759238208242260848">Скачанные файлы</translation> <translation id="4774338217796918551">Возвращайтесь завтра в <ph name="COME_BACK_TIME" />.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Копировать</translation> <translation id="6910714959251846841">Чтобы установить это обновление, необходимо сбросить настройки устройства до заводских. Подробнее о последнем обновлении <ph name="SYSTEM_APP_NAME" />…</translation> <translation id="6919251195245069855">Не удалось распознать смарт-карту. Повторите попытку.</translation> +<translation id="6921188888306725546">Сочетания клавиш были улучшены</translation> <translation id="6945221475159498467">Выбрать</translation> <translation id="6961121602502368900">Отключение звука на телефоне недоступно в рабочем профиле</translation> <translation id="6961840794482373852">Функция сочетания клавиш Alt + Стрелка вверх изменилась. Чтобы выполнить действие клавиши Page Up, нажмите <ph name="LAUNCHER_KEY_NAME" /> + Стрелка вверх.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Настройки специальных возможностей</translation> <translation id="8637598503828012618">Статус подключения – "<ph name="CONNECTION_STATUS" />", уровень сигнала – <ph name="SIGNAL_STRENGTH" />, под управлением администратора</translation> <translation id="8639760480004882931">Батарея заряжена на <ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">Список профилей обновляется. Подождите несколько минут.</translation> <translation id="8646417893960517480">Таймер на <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Чтобы добавить пользователя, введите родительский код доступа Family Link.</translation> <translation id="8649101189709089199">Озвучивание при нажатии</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" />.</translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Настройки способов ввода</translation> +<translation id="8818320199597151042">Профиль удаляется. Подождите несколько минут.</translation> <translation id="8825863694328519386">Чтобы вернуться, проведите по экрану от левого края</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Назад</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Удален экран "<ph name="DISPLAY_NAME" />"</translation> <translation id="9098969848082897657">Отключить звук на телефоне</translation> <translation id="9099154003160514616">Доступно обновление Lacros</translation> +<translation id="9100887602489003640">Профиль добавляется. Подождите несколько минут.</translation> <translation id="9105450214093926548">Во время работы Lacros не поддерживается вход в несколько аккаунтов. Вы можете использовать второй профиль браузера или закрыть Lacros и повторить попытку.</translation> <translation id="9133335900048457298">Не удается записать видео с экрана из-за защищенного контента</translation> <translation id="9151726767154816831">Чтобы обновить систему, перезапустите ее и выполните Powerwash</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 304b8fd..a0031cc 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -239,6 +239,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">ஆப்ஸ், நீட்டிப்புகள் மற்றும் தீம்களை நிறுவுதல்</translation> <translation id="2977598380246111477">அடுத்த எண்</translation> +<translation id="2992327365391326550">சாதனத்தின் மைக்ரோஃபோன் பட்டன் முடக்கப்பட்டுள்ளது.</translation> <translation id="2995447421581609334">அனுப்பும் சாதனங்களைக் காண்பிக்கும்.</translation> <translation id="2996462380875591307">டாக் செய்யப்பட்ட பெரிதாக்கி இயக்கப்பட்டது. அதை முடக்க, Ctrl+Search+Dயை மீண்டும் அழுத்தவும்.</translation> <translation id="3000461861112256445">மோனோ ஆடியோ</translation> @@ -249,6 +250,7 @@ <translation id="3038571455154067151">உள்நுழைய உங்கள் Family Link பெற்றோர் அணுகல் குறியீட்டை உள்ளிடவும்</translation> <translation id="3039939407102840004">ஸ்டைலஸ் பேட்டரி: <ph name="PERCENTAGE" /> சதவீதம்.</translation> <translation id="3045488863354895414">மதிய வணக்கம்,</translation> +<translation id="3051189971848907985">நெட்வொர்க் சுயவிவரத்தின் பெயரை மாற்றுகிறது. சில நிமிடங்கள் காத்திருக்கவும்.</translation> <translation id="3055162170959710888">இந்தச் சாதனத்தை இன்று <ph name="USED_TIME" /> பயன்படுத்தியுள்ளீர்கள்</translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">மெனுவை விரி</translation> @@ -289,6 +291,7 @@ <translation id="3368922792935385530">இணைக்கப்பட்டது</translation> <translation id="3371140690572404006">USB-C சாதனம் (வலது பக்கம் முன்னே இருக்கும் போர்ட்)</translation> <translation id="3375634426936648815">இணைக்கப்பட்டுள்ளது</translation> +<translation id="3378442621503952303">நெட்வொர்க் சுயவிவரத்துடன் இணைக்கிறது. சில நிமிடங்கள் காத்திருக்கவும்.</translation> <translation id="3386978599540877378">முழுத்திரை பெரிதாக்கி</translation> <translation id="3400357268283240774">கூடுதல் அமைப்புகள்</translation> <translation id="3410336247007142655">டார்க் தீம் அமைப்புகளைக் காட்டும்</translation> @@ -344,6 +347,7 @@ <translation id="380165613292957338">வணக்கம், நான் எவ்வாறு உதவலாம்?</translation> <translation id="3826099427150913765">கடவுச்சொல்லிற்கு மாற்று</translation> <translation id="383058930331066723">பேட்டரி சேமிப்பான் பயன்முறை இயக்கத்தில் உள்ளது</translation> +<translation id="3835880383832568924">மாற்றங்களைப் பார்க்க Shortcuts ஆப்ஸைத் திறக்கவும்</translation> <translation id="383629559565718788">கீபோர்டு அமைப்புகளைக் காண்பிக்கும்</translation> <translation id="3846214748874656680">முழுத்திரை வேண்டாம்</translation> <translation id="3846575436967432996">நெட்வொர்க் தகவல் எதுவும் இல்லை</translation> @@ -460,6 +464,7 @@ <translation id="4705716602320768426">கருத்தைப் பதிவுசெய்க</translation> <translation id="4731797938093519117">பெற்றோர் அணுகல்</translation> <translation id="4734965478015604180">கிடைமட்டம்</translation> +<translation id="4735498845456076464">இந்தக் கீபோர்டு ஷார்ட்கட் மாற்றப்பட்டுள்ளது: <ph name="LAUNCHER_KEY_NAME" /> + எண். செயல்பாட்டு பட்டன்களைப் பயன்படுத்த, <ph name="LAUNCHER_KEY_NAME" /> பட்டன் + மேல் வரிசையில் உள்ள ஒரு பட்டனை அழுத்தவும்.</translation> <translation id="4744944742468440486">உங்கள் தேர்வுடன் தொடர்புடைய தகவல்கள்</translation> <translation id="4759238208242260848">பதிவிறக்கங்கள்</translation> <translation id="4774338217796918551">நாளை <ph name="COME_BACK_TIME" />க்கு சாதனத்தை மீண்டும் பயன்படுத்தலாம்.</translation> @@ -714,6 +719,7 @@ <translation id="6896758677409633944">நகலெடு</translation> <translation id="6910714959251846841">இந்தப் புதுப்பிப்பைப் பெற, உங்கள் சாதனத்தைப் பவர்வாஷ் செய்ய வேண்டும். சமீபத்திய <ph name="SYSTEM_APP_NAME" /> புதுப்பிப்பைப் பற்றி மேலும் அறிக.</translation> <translation id="6919251195245069855">உங்கள் ஸ்மார்ட் கார்டை அடையாளம் காண முடியவில்லை. மீண்டும் முயலவும்.</translation> +<translation id="6921188888306725546">கீபோர்டு ஷார்ட்கட்கள் மேம்படுத்தப்பட்டுள்ளன</translation> <translation id="6945221475159498467">தேர்ந்தெடு</translation> <translation id="6961121602502368900">பணிக் கணக்கின் மூலம், மொபைலை நிசப்தமாக்குதல் அம்சத்தைப் பயன்படுத்த முடியாது</translation> <translation id="6961840794482373852">இந்தக் கீபோர்டு ஷார்ட்கட் மாற்றப்பட்டுள்ளது: Alt + மேல்நோக்கிய அம்புக்குறி. Page Up பட்டனைப் பயன்படுத்த, <ph name="LAUNCHER_KEY_NAME" /> பட்டன் + மேல்நோக்கிய அம்புக்குறி பட்டனை அழுத்தவும்.</translation> @@ -914,6 +920,7 @@ <translation id="8631727435199967028">அணுகல்தன்மை அமைப்புகள்</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, சிக்னல் வலிமை: <ph name="SIGNAL_STRENGTH" />, உங்கள் நிர்வாகி நிர்வகிக்கிறார்</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> மீதமுள்ளது</translation> +<translation id="8641805545866562088">நெட்வொர்க் சுயவிவரப் பட்டியலை ரெஃப்ரெஷ் செய்கிறது. சில நிமிடங்கள் காத்திருக்கவும்.</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> டைமர்</translation> <translation id="8647931990447795414">ஒரு நபரைச் சேர்க்க, Family Link பெற்றோர் அணுகல் குறியீட்டை உள்ளிடவும்</translation> <translation id="8649101189709089199">பேசும் திரை</translation> @@ -941,6 +948,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">வைஃபை</translation> <translation id="881757059229893486">உள்ளீட்டு முறைகளுக்கான அமைப்புகள்</translation> +<translation id="8818320199597151042">நெட்வொர்க் சுயவிவரத்தை அகற்றுகிறது. சில நிமிடங்கள் காத்திருக்கவும்.</translation> <translation id="8825863694328519386">முந்தையதற்குச் செல்ல இடது பக்கத்திலிருந்து ஸ்வைப் செய்யவும்</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">முந்தையது பொத்தான்</translation> @@ -986,6 +994,7 @@ <translation id="9091626656156419976"><ph name="DISPLAY_NAME" /> டிஸ்ப்ளே அகற்றப்பட்டது</translation> <translation id="9098969848082897657">மொபைலை நிசப்தமாக்குதல்</translation> <translation id="9099154003160514616">Lacros புதுப்பிப்பு உள்ளது</translation> +<translation id="9100887602489003640">நெட்வொர்க் சுயவிவரத்தைச் சேர்க்கிறது. சில நிமிடங்கள் காத்திருக்கவும்.</translation> <translation id="9105450214093926548">Lacros உலாவியைப் பயன்படுத்திக் கொண்டிருக்கும்போது இரண்டாவது பயனராக உள்நுழைய முடியாது. இதற்குப் பதிலாக Lacros உலாவியில் இரண்டாவது உலாவி சுயவிவரத்தைப் பயன்படுத்தவும் அல்லது Lacros உலாவியை மூடிவிட்டு மீண்டும் முயலவும்.</translation> <translation id="9133335900048457298">பாதுகாக்கப்பட்ட உள்ளடக்கம் இருப்பதால் ரெக்கார்டு செய்ய முடியாது</translation> <translation id="9151726767154816831">புதுப்பிக்க, மறுதுவக்கம் செய்து பவர்வாஷ் செய்யவும்</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index f051e35..919a877c 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">การตั้งค่าของผู้ใช้</translation> <translation id="3217205077783620295">ระดับเสียงเปิดอยู่ สลับเปิด/ปิดเพื่อปิดเสียง</translation> <translation id="3226991577105957773">และอีก <ph name="COUNT" /> รายการ</translation> +<translation id="324366796737464147">การลดเสียงรบกวน</translation> <translation id="3249513730522716925">ย้ายหน้าต่าง <ph name="WINDOW_TITLE" /> จากเดสก์ <ph name="ACTIVE_DESK" /> ไปยังเดสก์ <ph name="TARGET_DESK" /> แล้ว</translation> <translation id="3255483164551725916">เธอทำอะไรได้บ้าง</translation> <translation id="3269597722229482060">คลิกขวา</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index 40e37a0..ce47b5fb 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">Uygulama, uzantı ve tema yükleme</translation> <translation id="2977598380246111477">Sonraki sayı</translation> +<translation id="2992327365391326550">Cihazın mikrofon düğmesi kapalı.</translation> <translation id="2995447421581609334">Yayın cihazlarını göster.</translation> <translation id="2996462380875591307">Yerleştirilmiş Büyüteç etkinleştirildi. Kapatmak için tekrar Ctrl+Arama+H tuşlarına basın.</translation> <translation id="3000461861112256445">Mono ses</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Oturum açmak için Family Link ebeveyn erişim kodunuzu girin</translation> <translation id="3039939407102840004">Ekran kalemi pil seviyesi yüzde <ph name="PERCENTAGE" />.</translation> <translation id="3045488863354895414">İyi günler,</translation> +<translation id="3051189971848907985">Profil yeniden adlandırılıyor. Birkaç dakika bekleyin.</translation> <translation id="3055162170959710888">Bugün bu cihazı <ph name="USED_TIME" /> kullandınız</translation> <translation id="3077734595579995578">üstkrktr</translation> <translation id="3081696990447829002">Menüyü genişlet</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Bağlı</translation> <translation id="3371140690572404006">USB-C cihaz (sağ ön bağlantı noktası)</translation> <translation id="3375634426936648815">Bağlı</translation> +<translation id="3378442621503952303">Profile bağlanılıyor. Birkaç dakika bekleyin.</translation> <translation id="3386978599540877378">tam ekran büyüteci</translation> <translation id="3400357268283240774">Ek ayarlar</translation> <translation id="3410336247007142655">Koyu tema ayarlarını göster</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Merhaba, nasıl yardımcı olabilirim?</translation> <translation id="3826099427150913765">Şifreye geç</translation> <translation id="383058930331066723">Pil tasarrufu modu açık</translation> +<translation id="3835880383832568924">Güncellemeleri görmek için Kısayollar uygulamasını açın</translation> <translation id="383629559565718788">Klavye ayarlarını göster</translation> <translation id="3846214748874656680">Tam ekran modundan çık</translation> <translation id="3846575436967432996">Hiçbir ağ bilgisi yok</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Geri bildirim gönder</translation> <translation id="4731797938093519117">Ebeveyn erişimi</translation> <translation id="4734965478015604180">Yatay</translation> +<translation id="4735498845456076464"><ph name="LAUNCHER_KEY_NAME" /> + Sayı klavye kısayolu değişti. İşlev tuşlarını kullanmak için <ph name="LAUNCHER_KEY_NAME" /> tuşu + üst sıradaki tuşlardan birine basın.</translation> <translation id="4744944742468440486">Seçiminizle ilgili bilgi</translation> <translation id="4759238208242260848">İndirilenler</translation> <translation id="4774338217796918551">Saat <ph name="COME_BACK_TIME" /> olduğunda geri gelin.</translation> @@ -729,6 +734,7 @@ <translation id="6896758677409633944">Kopyala</translation> <translation id="6910714959251846841">Bu güncelleme, cihazınızda powerwash işlemi yapılmasını gerektiriyor. En yeni <ph name="SYSTEM_APP_NAME" /> güncellemesi ile ilgili daha fazla bilgi edinin.</translation> <translation id="6919251195245069855">Akıllı kartınız tanınamadı. Tekrar deneyin.</translation> +<translation id="6921188888306725546">Klavye kısayolları iyileştirildi</translation> <translation id="6945221475159498467">Seç</translation> <translation id="6961121602502368900">Telefonu sessize alma özelliği, iş profilinde kullanılamaz</translation> <translation id="6961840794482373852">Alt + Yukarı Ok klavye kısayolu değişti. Page Up tuşunu kullanmak için <ph name="LAUNCHER_KEY_NAME" /> + Yukarı Ok tuşlarına basın.</translation> @@ -935,6 +941,7 @@ <translation id="8631727435199967028">Erişebilirlik Ayarları</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, <ph name="SIGNAL_STRENGTH" /> Sinyal Gücü, Yöneticiniz tarafından yönetiliyor</translation> <translation id="8639760480004882931"><ph name="PERCENTAGE" /> kaldı</translation> +<translation id="8641805545866562088">Profil listesi yenileniyor. Birkaç dakika bekleyin.</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> zamanlayıcı</translation> <translation id="8647931990447795414">Kullanıcı eklemek için Family Link ebeveyn erişim kodunuzu girin</translation> <translation id="8649101189709089199">Seç ve Dinle</translation> @@ -962,6 +969,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Kablosuz</translation> <translation id="881757059229893486">Giriş Yöntemi Ayarları</translation> +<translation id="8818320199597151042">Profil kaldırılıyor. Birkaç dakika bekleyin.</translation> <translation id="8825863694328519386">Geri gitmek için soldan kaydırın</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Geri düğmesi</translation> @@ -1007,6 +1015,7 @@ <translation id="9091626656156419976"><ph name="DISPLAY_NAME" /> adlı ekran kaldırıldı</translation> <translation id="9098969848082897657">Telefonu sessize al</translation> <translation id="9099154003160514616">Lacros güncellemesi var</translation> +<translation id="9100887602489003640">Profil ekleniyor. Birkaç dakika bekleyin.</translation> <translation id="9105450214093926548">Lacros tarayıcı çalışırken ikinci bir kullanıcının oturum açması desteklenmiyor. Bunun yerine lütfen Lacros'ta ikinci bir tarayıcı profili kullanın veya Lacros'u kapatıp tekrar deneyin.</translation> <translation id="9133335900048457298">Korunan içerik kaydedilemez</translation> <translation id="9151726767154816831">Güncellemek için yeniden başlatın ve Powerwash uygulayın</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index 197db4a0..1570e56 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">установлювати додатки, розширення й теми</translation> <translation id="2977598380246111477">Наступна цифра</translation> +<translation id="2992327365391326550">Кнопку мікрофона пристрою вимкнено.</translation> <translation id="2995447421581609334">Показати пристрої для трансляції</translation> <translation id="2996462380875591307">Увімкнено закріплену лупу. Щоб вимкнути її, знову натисніть комбінацію Ctrl + клавіша пошуку + D.</translation> <translation id="3000461861112256445">Монофонічне аудіо</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">Щоб увійти, введіть свій батьківський код доступу з Family Link</translation> <translation id="3039939407102840004">Заряд акумулятора стилуса у відсотках становить <ph name="PERCENTAGE" />.</translation> <translation id="3045488863354895414">Доброго дня!</translation> +<translation id="3051189971848907985">Профіль перейменовується. Зачекайте кілька хвилин.</translation> <translation id="3055162170959710888">Сьогодні цей пристрій працював <ph name="USED_TIME" /></translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">Розгорнути меню</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">Підключено</translation> <translation id="3371140690572404006">пристрій, під’єднаний до порту USB-C (праворуч на передній панелі)</translation> <translation id="3375634426936648815">Підключено</translation> +<translation id="3378442621503952303">Триває підключення до профілю. Зачекайте кілька хвилин.</translation> <translation id="3386978599540877378">лупу для повноекранного режиму</translation> <translation id="3400357268283240774">Додаткові налаштування</translation> <translation id="3410336247007142655">Показати налаштування темної теми</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">Вітаю! Чим я можу допомогти?</translation> <translation id="3826099427150913765">Ввести пароль</translation> <translation id="383058930331066723">Режим енергозбереження ввімкнено</translation> +<translation id="3835880383832568924">Щоб переглянути оновлення, відкрийте додаток Ярлики</translation> <translation id="383629559565718788">Показати налаштування клавіатури</translation> <translation id="3846214748874656680">Вийти з повноекранного режиму</translation> <translation id="3846575436967432996">Інформація про мережу не доступна</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">Надіслати відгук</translation> <translation id="4731797938093519117">Батьківський доступ</translation> <translation id="4734965478015604180">Горизонтально</translation> +<translation id="4735498845456076464">Комбінацію клавіш <ph name="LAUNCHER_KEY_NAME" /> + цифра змінено. Щоб створити емуляцію функціональних клавіш, натисніть <ph name="LAUNCHER_KEY_NAME" /> + клавішу у верхньому рядку.</translation> <translation id="4744944742468440486">Інформація, пов'язана з виділеним текстом</translation> <translation id="4759238208242260848">Завантаження</translation> <translation id="4774338217796918551">Поверніться завтра о <ph name="COME_BACK_TIME" />.</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">Копіювати</translation> <translation id="6910714959251846841">Для цього оновлення потрібно виконати Powerwash на пристрої. Докладніше про останнє оновлення додатка <ph name="SYSTEM_APP_NAME" />.</translation> <translation id="6919251195245069855">Не вдається розпізнати розумну картку. Повторіть спробу.</translation> +<translation id="6921188888306725546">Комбінації клавіш покращено</translation> <translation id="6945221475159498467">Вибрати</translation> <translation id="6961121602502368900">Звук телефона не можна вимкнути в робочому профілі</translation> <translation id="6961840794482373852">Комбінацію клавіш Alt + стрілка вгору змінено. Щоб скористатися клавішею Page Up, натисніть клавішу <ph name="LAUNCHER_KEY_NAME" /> + стрілку вгору.</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">Налаштування спеціальних можливостей</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, рівень сигналу – <ph name="SIGNAL_STRENGTH" />. Мережею керує адміністратор</translation> <translation id="8639760480004882931">Залишилося <ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">Оновлюється список профілів. Зачекайте кілька хвилин.</translation> <translation id="8646417893960517480">Таймер на <ph name="TOTAL_TIME" /></translation> <translation id="8647931990447795414">Щоб додати людину, введіть батьківський код доступу з Family Link</translation> <translation id="8649101189709089199">Читання з екрана</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">Налаштування методів введення</translation> +<translation id="8818320199597151042">Видаляється профіль. Зачекайте кілька хвилин.</translation> <translation id="8825863694328519386">Щоб повернутися, проведіть пальцем від лівого краю</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">Кнопка "Назад"</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">Дисплей <ph name="DISPLAY_NAME" /> вилучено</translation> <translation id="9098969848082897657">Вимкнути звук на телефоні</translation> <translation id="9099154003160514616">Доступне оновлення Lacros</translation> +<translation id="9100887602489003640">Додається профіль. Зачекайте кілька хвилин.</translation> <translation id="9105450214093926548">Під час роботи веб-переглядача Lacros вхід у кілька облікових записів не підтримується. Скористайтесь іншим профілем веб-переглядача або закрийте Lacros і повторіть спробу.</translation> <translation id="9133335900048457298">Не вдається записати захищений контент</translation> <translation id="9151726767154816831">Для оновлення перезапустіть пристрій і виконайте Powerwash</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index b194969..b47580d 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -280,6 +280,7 @@ <translation id="3207953481422525583">Foydalanuvchi sozlamalari</translation> <translation id="3217205077783620295">Ovoz yoniq. Ovozsiz qilish uchun shu belgini bosing.</translation> <translation id="3226991577105957773">yana <ph name="COUNT" /> ta</translation> +<translation id="324366796737464147">Shovqinsizlantirish</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> oynasi <ph name="ACTIVE_DESK" /> ish stolidan <ph name="TARGET_DESK" /> ish stoliga koʻchirildi</translation> <translation id="3255483164551725916">Assistent nimalarga qodir?</translation> <translation id="3269597722229482060">Oʻng klik</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 66d87a9..974d2b8 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">安装应用、扩展程序和主题背景</translation> <translation id="2977598380246111477">下一个代码</translation> +<translation id="2992327365391326550">设备的麦克风按钮已关闭。</translation> <translation id="2995447421581609334">显示投射设备。</translation> <translation id="2996462380875591307">已启用停靠的放大镜。再按一次 Ctrl+搜索键+D 组合键即可将其停用。</translation> <translation id="3000461861112256445">单声道音频</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">如需登录,请输入您的 Family Link 家长访问码</translation> <translation id="3039939407102840004">触控笔电池电量为 <ph name="PERCENTAGE" />%。</translation> <translation id="3045488863354895414">下午好!</translation> +<translation id="3051189971848907985">正在重命名配置文件。请稍等几分钟。</translation> <translation id="3055162170959710888">您今天的设备使用时长:<ph name="USED_TIME" /></translation> <translation id="3077734595579995578">shift</translation> <translation id="3081696990447829002">展开菜单</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">已连接</translation> <translation id="3371140690572404006">USB-C 设备(右侧前端端口)</translation> <translation id="3375634426936648815">已连接</translation> +<translation id="3378442621503952303">正在连接到配置文件。请稍等几分钟。</translation> <translation id="3386978599540877378">全屏放大镜</translation> <translation id="3400357268283240774">其他设置</translation> <translation id="3410336247007142655">显示深色主题设置</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">嗨,有什么我可以帮你的吗?</translation> <translation id="3826099427150913765">切换到密码</translation> <translation id="383058930331066723">省电模式已开启</translation> +<translation id="3835880383832568924">若要查看更新,请打开“快捷键”应用</translation> <translation id="383629559565718788">显示键盘设置</translation> <translation id="3846214748874656680">退出全屏模式</translation> <translation id="3846575436967432996">没有可用的网络信息</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">提交反馈</translation> <translation id="4731797938093519117">家长访问</translation> <translation id="4734965478015604180">横向</translation> +<translation id="4735498845456076464">键盘快捷键“<ph name="LAUNCHER_KEY_NAME" /> + 数字键”已更改。若要使用功能键,请按<ph name="LAUNCHER_KEY_NAME" />键 + 顶排的某个键。</translation> <translation id="4744944742468440486">与您所选内容相关的信息</translation> <translation id="4759238208242260848">下载内容</translation> <translation id="4774338217796918551">您需要等到明天<ph name="COME_BACK_TIME" /> 才能再次使用此设备。</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">复制</translation> <translation id="6910714959251846841">必须对您的设备执行 Powerwash 才能安装这项更新。详细了解最新的 <ph name="SYSTEM_APP_NAME" />更新。</translation> <translation id="6919251195245069855">无法识别您的智能卡,请重试。</translation> +<translation id="6921188888306725546">已改进键盘快捷键</translation> <translation id="6945221475159498467">选择</translation> <translation id="6961121602502368900">工作资料不支持“将手机设为静音”功能</translation> <translation id="6961840794482373852">键盘快捷键“Alt + 向上键”已更改。若要使用 Page Up 键,请按<ph name="LAUNCHER_KEY_NAME" />键 + 向上键。</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">无障碍设置</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />,信号强度为 <ph name="SIGNAL_STRENGTH" />,由您的管理员管理</translation> <translation id="8639760480004882931">剩余电量:<ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">正在刷新配置文件列表。请稍等几分钟。</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" />定时器</translation> <translation id="8647931990447795414">若要添加人员,请输入您的 Family Link 家长访问码</translation> <translation id="8649101189709089199">随选朗读</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />。<ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">输入法设置</translation> +<translation id="8818320199597151042">正在移除配置文件。请稍等几分钟。</translation> <translation id="8825863694328519386">从左侧向右滑动手指即可返回</translation> <translation id="8828714802988429505">90°</translation> <translation id="8841375032071747811">“返回”按钮</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">已移除显示器“<ph name="DISPLAY_NAME" />”</translation> <translation id="9098969848082897657">将手机设为静音</translation> <translation id="9099154003160514616">有可用的 Lacros 更新</translation> +<translation id="9100887602489003640">正在添加配置文件。请稍等几分钟。</translation> <translation id="9105450214093926548">当 Lacros 浏览器正在运行时,不支持多用户登录。请在 Lacros 中改用另一浏览器配置文件,或者关闭 Lacros 并重试。</translation> <translation id="9133335900048457298">无法录制受保护的内容</translation> <translation id="9151726767154816831">重新启动并通过 Powerwash 来进行更新</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 76a0393..bc4e0349 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">安裝應用程式、擴充程式和主題</translation> <translation id="2977598380246111477">下一個號碼</translation> +<translation id="2992327365391326550">裝置的麥克風按鈕已關閉。</translation> <translation id="2995447421581609334">顯示投放裝置。</translation> <translation id="2996462380875591307">已啟用固定的放大鏡。再次按下 Search+Shift+D 鍵即可停用。</translation> <translation id="3000461861112256445">單聲道音效</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">如要登入帳戶,請輸入 Family Link 家長存取碼</translation> <translation id="3039939407102840004">觸控筆有 <ph name="PERCENTAGE" />% 電。</translation> <translation id="3045488863354895414">午安,</translation> +<translation id="3051189971848907985">正在重新命名設定檔。請等候幾分鐘。</translation> <translation id="3055162170959710888">您今天的裝置使用時間:<ph name="USED_TIME" /></translation> <translation id="3077734595579995578">Shift</translation> <translation id="3081696990447829002">打開選單</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">已連線</translation> <translation id="3371140690572404006">USB-C 裝置 (右側前方連接埠)</translation> <translation id="3375634426936648815">已連線</translation> +<translation id="3378442621503952303">正在連線至設定檔。請等候幾分鐘。</translation> <translation id="3386978599540877378">全螢幕放大鏡</translation> <translation id="3400357268283240774">其他設定</translation> <translation id="3410336247007142655">顯示深色主題背景設定</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">你好,有咩可以幫到你?</translation> <translation id="3826099427150913765">改用密碼</translation> <translation id="383058930331066723">「省電模式」已開啟</translation> +<translation id="3835880383832568924">如要查看更新,請開啟「快速鍵」應用程式</translation> <translation id="383629559565718788">顯示鍵盤設定</translation> <translation id="3846214748874656680">關閉全屏幕模式</translation> <translation id="3846575436967432996">沒有可用的網絡資料</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">提供意見</translation> <translation id="4731797938093519117">家長存取</translation> <translation id="4734965478015604180">橫向</translation> +<translation id="4735498845456076464">「<ph name="LAUNCHER_KEY_NAME" />鍵 + 數字鍵」的鍵盤快速鍵已變更。如要使用功能鍵,請按下<ph name="LAUNCHER_KEY_NAME" />鍵 + 最上排的任一按鍵。</translation> <translation id="4744944742468440486">所揀內容嘅相關資料</translation> <translation id="4759238208242260848">下載</translation> <translation id="4774338217796918551">明天<ph name="COME_BACK_TIME" /> 後才可使用。</translation> @@ -727,6 +732,7 @@ <translation id="6896758677409633944">複製</translation> <translation id="6910714959251846841">此更新需要為裝置執行 Powerwash。進一步瞭解有關 <ph name="SYSTEM_APP_NAME" /> 的更新。</translation> <translation id="6919251195245069855">無法辨識智能卡,請再試一次。</translation> +<translation id="6921188888306725546">已改善鍵盤快速鍵</translation> <translation id="6945221475159498467">選取</translation> <translation id="6961121602502368900">工作設定檔不支援將手機設定為靜音</translation> <translation id="6961840794482373852">「Alt + 向上箭咀」的鍵盤快速鍵已變更。如要使用 Page Up 鍵,請按下<ph name="LAUNCHER_KEY_NAME" />鍵 + 向上箭咀。</translation> @@ -933,6 +939,7 @@ <translation id="8631727435199967028">無障礙功能設定</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />,訊號強度係 <ph name="SIGNAL_STRENGTH" />,由管理員管理</translation> <translation id="8639760480004882931">剩餘電量:<ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">正在重新整理設定檔清單。請等候幾分鐘。</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" /> 計時器</translation> <translation id="8647931990447795414">如要新增使用者,請輸入 Family Link 家長存取碼</translation> <translation id="8649101189709089199">選取以朗讀</translation> @@ -960,6 +967,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />。<ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">輸入方法設定</translation> +<translation id="8818320199597151042">正在移除設定檔。請等候幾分鐘。</translation> <translation id="8825863694328519386">從螢幕左側向右滑動即可返回</translation> <translation id="8828714802988429505">90 度</translation> <translation id="8841375032071747811">[返回] 按鈕</translation> @@ -1005,6 +1013,7 @@ <translation id="9091626656156419976">已移除「<ph name="DISPLAY_NAME" />」畫面</translation> <translation id="9098969848082897657">將手機設為靜音</translation> <translation id="9099154003160514616">有可用的 Lacros 更新</translation> +<translation id="9100887602489003640">正在新增設定檔。請等候幾分鐘。</translation> <translation id="9105450214093926548">Lacros 瀏覽器執行時,系統不支援第二位使用者登入。請改為在 Lacros 中使用第二個瀏覽器設定檔,或者關閉 Lacros,然後再試一次。</translation> <translation id="9133335900048457298">無法錄影受保護的內容</translation> <translation id="9151726767154816831">重新啟動並執行 Powerwash 以進行更新</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index be8ef0f..79d618d 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -245,6 +245,7 @@ <translation id="2963773877003373896">mod3</translation> <translation id="2970920913501714344">安裝應用程式、擴充功能和主題</translation> <translation id="2977598380246111477">下一個號碼</translation> +<translation id="2992327365391326550">裝置的麥克風按鈕已關閉。</translation> <translation id="2995447421581609334">顯示投放裝置。</translation> <translation id="2996462380875591307">停駐放大鏡已啟用。再次按下 Ctrl 鍵 + 搜尋鍵 + D 鍵即可停用。</translation> <translation id="3000461861112256445">單聲道音訊</translation> @@ -255,6 +256,7 @@ <translation id="3038571455154067151">如要登入帳戶,請輸入 Family Link 家長存取碼</translation> <translation id="3039939407102840004">觸控筆電量:<ph name="PERCENTAGE" />%。</translation> <translation id="3045488863354895414">午安,</translation> +<translation id="3051189971848907985">正在重新命名設定檔,請稍後片刻。</translation> <translation id="3055162170959710888">你今天的裝置使用時間:<ph name="USED_TIME" /></translation> <translation id="3077734595579995578">Shift</translation> <translation id="3081696990447829002">展開選單</translation> @@ -295,6 +297,7 @@ <translation id="3368922792935385530">已連線</translation> <translation id="3371140690572404006">USB-C 裝置 (右前方連接埠)</translation> <translation id="3375634426936648815">已連線</translation> +<translation id="3378442621503952303">正在連線至設定檔,請稍後片刻。</translation> <translation id="3386978599540877378">全螢幕放大鏡</translation> <translation id="3400357268283240774">其他設定</translation> <translation id="3410336247007142655">顯示深色主題設定</translation> @@ -351,6 +354,7 @@ <translation id="380165613292957338">你好,需要什麼協助嗎?</translation> <translation id="3826099427150913765">切換為密碼</translation> <translation id="383058930331066723">省電模式已開啟</translation> +<translation id="3835880383832568924">如要查看相關更新,請開啟「捷徑」應用程式</translation> <translation id="383629559565718788">顯示鍵盤設定</translation> <translation id="3846214748874656680">結束全螢幕</translation> <translation id="3846575436967432996">沒有可用的網路資訊</translation> @@ -471,6 +475,7 @@ <translation id="4705716602320768426">提供意見回饋</translation> <translation id="4731797938093519117">家長存取</translation> <translation id="4734965478015604180">橫向</translation> +<translation id="4735498845456076464">「<ph name="LAUNCHER_KEY_NAME" /> 鍵 + 數字鍵」的鍵盤快速鍵已變更。如要使用功能鍵,請按下<ph name="LAUNCHER_KEY_NAME" /> 鍵 + 最上排的任一按鍵。</translation> <translation id="4744944742468440486">所選內容的相關資訊</translation> <translation id="4759238208242260848">下載</translation> <translation id="4774338217796918551"><ph name="COME_BACK_TIME" /> 裝置就會解除鎖定。</translation> @@ -728,6 +733,7 @@ <translation id="6896758677409633944">複製</translation> <translation id="6910714959251846841">必須對你的裝置執行 Powerwash 才能安裝這項更新。進一步瞭解最新的 <ph name="SYSTEM_APP_NAME" />更新內容。</translation> <translation id="6919251195245069855">無法辨識你的智慧型卡片,請再試一次。</translation> +<translation id="6921188888306725546">我們已改善鍵盤快速鍵功能</translation> <translation id="6945221475159498467">選取</translation> <translation id="6961121602502368900">工作資料夾不支援將手機設為靜音</translation> <translation id="6961840794482373852">「Alt + 向上鍵」的鍵盤快速鍵已變更。如要使用 Page Up 鍵,請按下<ph name="LAUNCHER_KEY_NAME" />鍵 + 向上鍵。</translation> @@ -934,6 +940,7 @@ <translation id="8631727435199967028">無障礙設定</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />,訊號強度 <ph name="SIGNAL_STRENGTH" />,由系統管理員管理</translation> <translation id="8639760480004882931">剩餘電量:<ph name="PERCENTAGE" /></translation> +<translation id="8641805545866562088">正在重新整理設定檔清單,請稍後片刻。</translation> <translation id="8646417893960517480"><ph name="TOTAL_TIME" />的計時器</translation> <translation id="8647931990447795414">如要新增使用者,請輸入 Family Link 家長存取碼</translation> <translation id="8649101189709089199">隨選朗讀</translation> @@ -961,6 +968,7 @@ <translation id="8788027118671217603"><ph name="STATE_TEXT" />。<ph name="ENTERPRISE_TEXT" /></translation> <translation id="8814190375133053267">Wi-Fi</translation> <translation id="881757059229893486">輸入法設定</translation> +<translation id="8818320199597151042">正在移除設定檔,請稍後片刻。</translation> <translation id="8825863694328519386">從螢幕左側向右滑動即可返回</translation> <translation id="8828714802988429505">90 度</translation> <translation id="8841375032071747811">返回按鈕</translation> @@ -1006,6 +1014,7 @@ <translation id="9091626656156419976">「<ph name="DISPLAY_NAME" />」螢幕已移除</translation> <translation id="9098969848082897657">將手機設為靜音</translation> <translation id="9099154003160514616">有 Lacros 更新</translation> +<translation id="9100887602489003640">正在新增設定檔,請稍後片刻。</translation> <translation id="9105450214093926548">Lacros 瀏覽器執行期間不支援登入第二個使用者帳戶。請改為在 Lacros 中使用第二個瀏覽器設定檔,或者關閉 Lacros 後再試一次。</translation> <translation id="9133335900048457298">無法錄製受保護的內容</translation> <translation id="9151726767154816831">重新啟動並執行 Powerwash 即可更新</translation>
diff --git a/ash/wallpaper/test_wallpaper_controller_client.cc b/ash/wallpaper/test_wallpaper_controller_client.cc index d592485..adcca05 100644 --- a/ash/wallpaper/test_wallpaper_controller_client.cc +++ b/ash/wallpaper/test_wallpaper_controller_client.cc
@@ -6,16 +6,11 @@ namespace ash { -TestWallpaperControllerClient::TestWallpaperControllerClient() = default; -TestWallpaperControllerClient::~TestWallpaperControllerClient() = default; - void TestWallpaperControllerClient::ResetCounts() { open_count_ = 0; close_preview_count_ = 0; set_default_wallpaper_count_ = 0; migrate_collection_id_from_chrome_app_count_ = 0; - fetch_daily_refresh_wallpaper_param_ = std::string(); - fetch_daily_refresh_info_fails_ = false; } // WallpaperControllerClient: @@ -37,12 +32,4 @@ migrate_collection_id_from_chrome_app_count_++; } -void TestWallpaperControllerClient::FetchDailyRefreshWallpaper( - const std::string& collection_id, - DailyWallpaperUrlFetchedCallback callback) { - fetch_daily_refresh_wallpaper_param_ = collection_id; - std::move(callback).Run(fetch_daily_refresh_info_fails_ ? std::string() - : "fun_image_url"); -} - } // namespace ash
diff --git a/ash/wallpaper/test_wallpaper_controller_client.h b/ash/wallpaper/test_wallpaper_controller_client.h index 6ea645248..c4a5c20 100644 --- a/ash/wallpaper/test_wallpaper_controller_client.h +++ b/ash/wallpaper/test_wallpaper_controller_client.h
@@ -14,11 +14,13 @@ // A test wallpaper controller client class. class TestWallpaperControllerClient : public WallpaperControllerClient { public: - TestWallpaperControllerClient(); + TestWallpaperControllerClient() = default; + TestWallpaperControllerClient(const TestWallpaperControllerClient&) = delete; TestWallpaperControllerClient& operator=( const TestWallpaperControllerClient&) = delete; - virtual ~TestWallpaperControllerClient(); + + virtual ~TestWallpaperControllerClient() = default; size_t open_count() const { return open_count_; } size_t close_preview_count() const { return close_preview_count_; } @@ -28,12 +30,6 @@ size_t migrate_collection_id_from_chrome_app_count() const { return migrate_collection_id_from_chrome_app_count_; } - std::string get_fetch_daily_refresh_wallpaper_param() const { - return fetch_daily_refresh_wallpaper_param_; - } - void set_fetch_daily_refresh_info_fails(bool fails) { - fetch_daily_refresh_info_fails_ = fails; - } void ResetCounts(); @@ -43,17 +39,12 @@ void SetDefaultWallpaper(const AccountId& account_id, bool show_wallpaper) override; void MigrateCollectionIdFromChromeApp() override; - void FetchDailyRefreshWallpaper( - const std::string& collection_id, - DailyWallpaperUrlFetchedCallback callback) override; private: size_t open_count_ = 0; size_t close_preview_count_ = 0; size_t set_default_wallpaper_count_ = 0; size_t migrate_collection_id_from_chrome_app_count_ = 0; - std::string fetch_daily_refresh_wallpaper_param_; - bool fetch_daily_refresh_info_fails_ = false; }; } // namespace ash
diff --git a/ash/wallpaper/wallpaper_controller_impl.cc b/ash/wallpaper/wallpaper_controller_impl.cc index 01616ff9..82ed7e1 100644 --- a/ash/wallpaper/wallpaper_controller_impl.cc +++ b/ash/wallpaper/wallpaper_controller_impl.cc
@@ -47,7 +47,6 @@ #include "base/no_destructor.h" #include "base/numerics/safe_conversions.h" #include "base/path_service.h" -#include "base/rand_util.h" #include "base/sequenced_task_runner.h" #include "base/strings/string_number_conversions.h" #include "base/task/post_task.h" @@ -62,7 +61,6 @@ #include "components/user_manager/user_type.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/data_decoder/public/cpp/decode_image.h" -#include "third_party/icu/source/i18n/unicode/gregocal.h" #include "ui/compositor/layer.h" #include "ui/display/manager/display_manager.h" #include "ui/display/manager/managed_display_info.h" @@ -573,18 +571,6 @@ prefs::kSyncableWallpaperInfo); } -// Returns a suffix to be appended to the base url of Backdrop wallpapers. -std::string GetBackdropWallpaperSuffix() { - // FIFE url is used for Backdrop wallpapers and the desired image size should - // be specified. Currently we are using two times the display size. This is - // determined by trial and error and is subject to change. - // See crbug/815310 for original discussion. - gfx::Size display_size = - display::Screen::GetScreen()->GetPrimaryDisplay().size(); - return "=w" + std::to_string( - 2 * std::max(display_size.width(), display_size.height())); -} - } // namespace const char WallpaperControllerImpl::kSmallWallpaperSubDir[] = "small"; @@ -1010,11 +996,12 @@ weak_factory_.GetWeakPtr(), account_id, wallpaper_files_id, file_name, CUSTOMIZED, layout, /*show_wallpaper=*/false, image); - reload_preview_wallpaper_callback_ = base::BindRepeating( - &WallpaperControllerImpl::ShowWallpaperImage, - weak_factory_.GetWeakPtr(), image, - WallpaperInfo{std::string(), layout, CUSTOMIZED, base::Time::Now()}, - /*preview_mode=*/true, /*always_on_top=*/false); + reload_preview_wallpaper_callback_ = + base::BindRepeating(&WallpaperControllerImpl::ShowWallpaperImage, + weak_factory_.GetWeakPtr(), image, + WallpaperInfo{std::string(), layout, CUSTOMIZED, + base::Time::Now().LocalMidnight()}, + /*preview_mode=*/true, /*always_on_top=*/false); // Show the preview wallpaper. reload_preview_wallpaper_callback_.Run(); } else { @@ -1031,12 +1018,11 @@ bool preview_mode, SetOnlineWallpaperCallback callback) { DCHECK(callback); - WallpaperInfo info = {url.spec(), layout, ONLINE, base::Time::Now()}; SetOnlineWallpaperIfExists( account_id, url.spec(), collection_id, layout, preview_mode, base::BindOnce(&WallpaperControllerImpl::OnAttemptSetOnlineWallpaper, - weak_factory_.GetWeakPtr(), account_id, info, preview_mode, - std::move(callback))); + weak_factory_.GetWeakPtr(), account_id, url, layout, + preview_mode, std::move(callback))); } void WallpaperControllerImpl::SetOnlineWallpaperIfExists( @@ -1324,9 +1310,9 @@ void WallpaperControllerImpl::ShowOneShotWallpaper( const gfx::ImageSkia& image) { - const WallpaperInfo info = {std::string(), - WallpaperLayout::WALLPAPER_LAYOUT_STRETCH, - WallpaperType::ONE_SHOT, base::Time::Now()}; + const WallpaperInfo info = { + std::string(), WallpaperLayout::WALLPAPER_LAYOUT_STRETCH, + WallpaperType::ONE_SHOT, base::Time::Now().LocalMidnight()}; ShowWallpaperImage(image, info, /*preview_mode=*/false, /*always_on_top=*/false); } @@ -1334,9 +1320,9 @@ void WallpaperControllerImpl::ShowAlwaysOnTopWallpaper( const base::FilePath& image_path) { is_always_on_top_wallpaper_ = true; - const WallpaperInfo info = {std::string(), - WallpaperLayout::WALLPAPER_LAYOUT_CENTER_CROPPED, - WallpaperType::ONE_SHOT, base::Time::Now()}; + const WallpaperInfo info = { + std::string(), WallpaperLayout::WALLPAPER_LAYOUT_CENTER_CROPPED, + WallpaperType::ONE_SHOT, base::Time::Now().LocalMidnight()}; ReparentWallpaper(GetWallpaperContainerId(locked_)); ReadAndDecodeWallpaper( base::BindOnce(&WallpaperControllerImpl::OnAlwaysOnTopWallpaperDecoded, @@ -1606,9 +1592,6 @@ wallpaper_controller_client_->MigrateCollectionIdFromChromeApp(); OnPrefChanged(); - - if (IsDailyRefreshEnabled()) - StartDailyRefreshTimer(); } void WallpaperControllerImpl::ShowDefaultWallpaperForTesting() { @@ -1630,15 +1613,6 @@ pref_change_registrar_.reset(); } -void WallpaperControllerImpl::UpdateDailyRefreshWallpaperForTesting() { - UpdateDailyRefreshWallpaper(); -} - -util::WallClockTimer& -WallpaperControllerImpl::GetDailyRefreshTimerForTesting() { - return daily_refresh_timer_; -} - void WallpaperControllerImpl::UpdateWallpaperForRootWindow( aura::Window* root_window, bool lock_state_changed, @@ -1848,7 +1822,7 @@ bool WallpaperControllerImpl::InitializeUserWallpaperInfo( const AccountId& account_id) { const WallpaperInfo info = {std::string(), WALLPAPER_LAYOUT_CENTER_CROPPED, - DEFAULT, base::Time::Now()}; + DEFAULT, base::Time::Now().LocalMidnight()}; return SetUserWallpaperInfo(account_id, info); } @@ -1896,11 +1870,12 @@ confirm_preview_wallpaper_callback_ = base::BindOnce( &WallpaperControllerImpl::SetOnlineWallpaperImpl, weak_factory_.GetWeakPtr(), params, image, /*show_wallpaper=*/false); - reload_preview_wallpaper_callback_ = base::BindRepeating( - &WallpaperControllerImpl::ShowWallpaperImage, - weak_factory_.GetWeakPtr(), image, - WallpaperInfo{params.url, params.layout, ONLINE, base::Time::Now()}, - /*preview_mode=*/true, /*always_on_top=*/false); + reload_preview_wallpaper_callback_ = + base::BindRepeating(&WallpaperControllerImpl::ShowWallpaperImage, + weak_factory_.GetWeakPtr(), image, + WallpaperInfo{params.url, params.layout, ONLINE, + base::Time::Now().LocalMidnight()}, + /*preview_mode=*/true, /*always_on_top=*/false); // Show the preview wallpaper. reload_preview_wallpaper_callback_.Run(); } else { @@ -1913,7 +1888,7 @@ const gfx::ImageSkia& image, bool show_wallpaper) { WallpaperInfo wallpaper_info = {params.url, params.layout, ONLINE, - base::Time::Now()}; + base::Time::Now().LocalMidnight()}; if (!SetUserWallpaperInfo(params.account_id, wallpaper_info)) { LOG(ERROR) << "Setting user wallpaper info fails. This should never happen " "except in tests."; @@ -2000,7 +1975,7 @@ if (show_wallpaper) { WallpaperInfo info(cached_default_wallpaper_.file_path.value(), layout, - DEFAULT, base::Time::Now()); + DEFAULT, base::Time::Now().LocalMidnight()); ShowWallpaperImage(cached_default_wallpaper_.image, info, /*preview_mode=*/false, /*always_on_top=*/false); } @@ -2026,7 +2001,8 @@ base::FilePath(wallpaper_files_id).Append(file_name).value(); // User's custom wallpaper path is determined by relative path and the // appropriate wallpaper resolution. - WallpaperInfo info = {relative_path, layout, type, base::Time::Now()}; + WallpaperInfo info = {relative_path, layout, type, + base::Time::Now().LocalMidnight()}; if (!SetUserWallpaperInfo(account_id, info)) { LOG(ERROR) << "Setting user wallpaper info fails. This should never happen " "except in tests."; @@ -2259,7 +2235,7 @@ } else { WallpaperInfo info(device_policy_wallpaper_path_.value(), WALLPAPER_LAYOUT_CENTER_CROPPED, DEVICE, - base::Time::Now()); + base::Time::Now().LocalMidnight()); ShowWallpaperImage(image, info, /*preview_mode=*/false, /*always_on_top=*/false); } @@ -2351,20 +2327,22 @@ void WallpaperControllerImpl::OnAttemptSetOnlineWallpaper( const AccountId& account_id, - WallpaperInfo info, + const GURL& url, + WallpaperLayout layout, bool preview_mode, SetOnlineWallpaperCallback callback, bool success) { if (success) { + // Run callback and exit if setting the online wallpaper succeeded. std::move(callback).Run(true); return; } - std::string url = info.location + GetBackdropWallpaperSuffix(); - const OnlineWallpaperParams params = {account_id, info.location, info.layout, - preview_mode}; + // Try again after downloading the image. + const OnlineWallpaperParams params = {account_id, url.spec(), layout, + /*preview_mode=*/false}; ImageDownloader::Get()->Download( - GURL(url), NO_TRAFFIC_ANNOTATION_YET, + url, NO_TRAFFIC_ANNOTATION_YET, base::BindOnce(&WallpaperControllerImpl::OnOnlineWallpaperDecoded, weak_factory_.GetWeakPtr(), params, /*save_file=*/true, std::move(callback))); @@ -2395,95 +2373,4 @@ pref_service->SetString(kWallpaperCollectionId, collection_id); } -bool WallpaperControllerImpl::IsDailyRefreshEnabled() const { - return !GetCollectionId().empty(); -} - -std::string WallpaperControllerImpl::GetCollectionId() const { - PrefService* pref_service = GetUserPrefServiceSyncable(GetActiveAccountId()); - CHECK(pref_service); - return pref_service->GetString(kWallpaperCollectionId); -} - -void WallpaperControllerImpl::UpdateDailyRefreshWallpaper() { - if (!IsDailyRefreshEnabled()) { - daily_refresh_timer_.Stop(); - return; - } - - // |wallpaper_controller_cient_| has a slightly shorter lifecycle than - // wallpaper controller. - if (wallpaper_controller_client_) { - wallpaper_controller_client_->FetchDailyRefreshWallpaper( - GetCollectionId(), - base::BindOnce(&WallpaperControllerImpl::SetDailyWallpaper, - weak_factory_.GetWeakPtr(), GetActiveAccountId(), - ash::WallpaperLayout::WALLPAPER_LAYOUT_CENTER_CROPPED, - /*preview_mode=*/false)); - } else { - StartDailyRefreshTimer(); - } -} - -void WallpaperControllerImpl::SetDailyWallpaper(const AccountId& account_id, - WallpaperLayout layout, - bool preview_mode, - const std::string& image_url) { - if (!image_url.empty()) { - SetOnlineWallpaper( - account_id, GURL(image_url), /*collection_id=*/std::string(), layout, - preview_mode, - base::BindOnce(&WallpaperControllerImpl::OnSetDailyWallpaper, - weak_factory_.GetWeakPtr())); - } else { - OnFetchDailyWallpaperFailed(); - } -} - -void WallpaperControllerImpl::OnSetDailyWallpaper(bool success) { - if (success) { - StartDailyRefreshTimer(); - } else { - OnFetchDailyWallpaperFailed(); - } -} - -void WallpaperControllerImpl::StartDailyRefreshTimer() { - using base::Time; - using base::TimeDelta; - - TimeDelta daily_refresh_delay = GetTimeToNextDailyRefreshUpdate(); - - // Add random delay within 1 hour, to prevent hot spotting, and reduce - // multiple wallpaper transitions for sync users with multiple devices - auto random_delay = TimeDelta::FromMillisecondsD( - base::RandDouble() * Time::kMillisecondsPerSecond * - Time::kSecondsPerHour); - daily_refresh_delay += random_delay; - - StartDailyRefreshTimer(daily_refresh_delay); -} - -void WallpaperControllerImpl::OnFetchDailyWallpaperFailed() { - StartDailyRefreshTimer(base::TimeDelta::FromHours(1)); -} - -void WallpaperControllerImpl::StartDailyRefreshTimer(base::TimeDelta delay) { - base::Time desired_run_time = base::Time::Now() + delay; - daily_refresh_timer_.Start( - FROM_HERE, desired_run_time, - base::BindOnce(&WallpaperControllerImpl::UpdateDailyRefreshWallpaper, - weak_factory_.GetWeakPtr())); -} - -base::TimeDelta WallpaperControllerImpl::GetTimeToNextDailyRefreshUpdate() - const { - WallpaperInfo info; - if (!GetUserWallpaperInfo(GetActiveAccountId(), &info)) - return base::TimeDelta(); - return info.date.ToDeltaSinceWindowsEpoch() - - base::Time::Now().ToDeltaSinceWindowsEpoch() + - base::TimeDelta::FromDays(1); -} - } // namespace ash
diff --git a/ash/wallpaper/wallpaper_controller_impl.h b/ash/wallpaper/wallpaper_controller_impl.h index eefa609a..207e4ec7 100644 --- a/ash/wallpaper/wallpaper_controller_impl.h +++ b/ash/wallpaper/wallpaper_controller_impl.h
@@ -26,9 +26,7 @@ #include "base/memory/ref_counted.h" #include "base/observer_list.h" #include "base/scoped_observation.h" -#include "base/time/time.h" #include "base/timer/timer.h" -#include "base/util/timer/wall_clock_timer.h" #include "components/account_id/account_id.h" #include "components/prefs/pref_change_registrar.h" #include "ui/compositor/compositor_lock.h" @@ -356,10 +354,6 @@ void set_bypass_decode_for_testing() { bypass_decode_for_testing_ = true; } - // Exposed for testing. - void UpdateDailyRefreshWallpaperForTesting(); - util::WallClockTimer& GetDailyRefreshTimerForTesting(); - private: FRIEND_TEST_ALL_PREFIXES(WallpaperControllerTest, BasicReparenting); FRIEND_TEST_ALL_PREFIXES(WallpaperControllerTest, @@ -564,49 +558,14 @@ void HandleWallpaperInfoSyncedIn(const AccountId& account_id, WallpaperInfo info); void OnAttemptSetOnlineWallpaper(const AccountId& account_id, - WallpaperInfo info, + const GURL& url, + WallpaperLayout layout, bool preview_mode, SetOnlineWallpaperCallback callback, bool success); + constexpr bool IsWallpaperTypeSyncable(WallpaperType type); - // If daily refresh wallpapers is enabled by the user. - bool IsDailyRefreshEnabled() const; - - // The id of the collection to query for new wallpapers when daily refresh is - // enabled. Is an empty string when it is not enabled. - std::string GetCollectionId() const; - - // With daily refresh enabled, this updates the wallpaper by asking for a - // wallpaper from within the user specified collection. - void UpdateDailyRefreshWallpaper(); - - // Callback from the client providing a url to a wallpaper from the user - // specified collection when daily refresh is enabled. If |image_url| is - // empty, fetching the url failed, and should be tried again soon. - void SetDailyWallpaper(const AccountId& account_id, - WallpaperLayout layout, - bool preview_mode, - const std::string& image_url); - - // Called after attempting to download and set a daily refresh wallpaper. - // On failure retry again in a while. - void OnSetDailyWallpaper(bool success); - - // Starts a wall clock timer, to update the wallpaper 24 hours since the last - // wallpaper was set. - void StartDailyRefreshTimer(); - - // Starts a wall clock timer to retry fetching a daily refresh wallpaper. - void OnFetchDailyWallpaperFailed(); - - // Starts a wall clock timer with the specified |delay|. - void StartDailyRefreshTimer(base::TimeDelta delay); - - // Time to next wallpaper update for daily refresh; 24 hours since last - // wallpaper set. - base::TimeDelta GetTimeToNextDailyRefreshUpdate() const; - bool locked_ = false; WallpaperMode wallpaper_mode_ = WALLPAPER_NONE; @@ -713,8 +672,6 @@ // May be null in tests. PrefService* local_state_ = nullptr; - util::WallClockTimer daily_refresh_timer_; - base::WeakPtrFactory<WallpaperControllerImpl> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(WallpaperControllerImpl);
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc index 302b75a..be0bf37 100644 --- a/ash/wallpaper/wallpaper_controller_unittest.cc +++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -14,7 +14,6 @@ #include "ash/public/cpp/ash_switches.h" #include "ash/public/cpp/shell_window_ids.h" #include "ash/public/cpp/test/shell_test_api.h" -#include "ash/public/cpp/test/test_image_downloader.h" #include "ash/public/cpp/wallpaper_controller_client.h" #include "ash/public/cpp/wallpaper_controller_observer.h" #include "ash/public/cpp/wallpaper_types.h" @@ -45,7 +44,6 @@ #include "base/test/scoped_feature_list.h" #include "base/threading/thread_restrictions.h" #include "base/time/time_override.h" -#include "base/util/timer/wall_clock_timer.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/user_manager/fake_user_manager.h" #include "components/user_manager/scoped_user_manager.h" @@ -301,13 +299,6 @@ base::Time::Now().LocalMidnight()); } -base::Time DayBeforeYesterdayish() { - base::TimeDelta today_delta = - base::Time::Now().LocalMidnight().ToDeltaSinceWindowsEpoch(); - base::TimeDelta yesterday_delta = today_delta - base::TimeDelta::FromDays(2); - return base::Time::FromDeltaSinceWindowsEpoch(yesterday_delta); -} - // A test implementation of the WallpaperControllerObserver interface. class TestWallpaperControllerObserver : public WallpaperControllerObserver { public: @@ -378,16 +369,6 @@ custom_wallpaper_dir_.GetPath(), policy_wallpaper); } - void TearDown() override { - // Although pref services outlive wallpaper controller in the os, in ash - // tests, they are destroyed in tear down (See |AshTestHelper|). We don't - // want this timer to run a task after tear down, since it relies on a pref - // service being around. - controller_->GetDailyRefreshTimerForTesting().Stop(); - - AshTestBase::TearDown(); - } - WallpaperView* wallpaper_view() { return Shell::Get() ->GetPrimaryRootWindowController() @@ -1144,8 +1125,6 @@ TEST_F(WallpaperControllerTest, SetOnlineWallpaper) { SetBypassDecode(); - TestImageDownloader image_downloader; - gfx::ImageSkia image = CreateImage(640, 480, kWallpaperColor); WallpaperLayout layout = WALLPAPER_LAYOUT_CENTER_CROPPED; SimulateUserLogin(kUser1); @@ -3031,8 +3010,6 @@ TestWallpaperControllerClient client; controller_->SetClient(&client); - SetBypassDecode(); - PutWallpaperInfoInPrefs(account_id_1, InfoWithType(CUSTOMIZED), GetLocalPrefService(), prefs::kUserWallpaperInfo); @@ -3220,162 +3197,4 @@ EXPECT_EQ("", actual); } -TEST_F(WallpaperControllerTest, UpdateDailyRefreshWallpaper) { - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - - std::string expected{"fun_collection"}; - SimulateUserLogin(kUser1); - - controller_->SetDailyRefreshCollectionId(expected); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - DayBeforeYesterdayish())); - - controller_->UpdateDailyRefreshWallpaperForTesting(); - EXPECT_EQ(expected, client.get_fetch_daily_refresh_wallpaper_param()); -} - -TEST_F(WallpaperControllerTest, UpdateDailyRefreshWallpaperCalledOnLogin) { - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - - TestImageDownloader image_downloader; - - std::string expected{"fun_collection"}; - SimulateUserLogin(kUser1); - - controller_->SetDailyRefreshCollectionId(expected); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - DayBeforeYesterdayish())); - - ClearLogin(); - SimulateUserLogin(kUser1); - - // |daily_refresh_timer_| adds a task to the sequence, as opposed to execute - // within the task that it is called in. - RunAllTasksUntilIdle(); - - EXPECT_EQ(expected, client.get_fetch_daily_refresh_wallpaper_param()); -} - -TEST_F(WallpaperControllerTest, UpdateDailyRefreshWallpaper_NotEnabled) { - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - - SimulateUserLogin(kUser1); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - DayBeforeYesterdayish())); - - controller_->UpdateDailyRefreshWallpaperForTesting(); - EXPECT_EQ(std::string(), client.get_fetch_daily_refresh_wallpaper_param()); -} - -TEST_F(WallpaperControllerTest, - UpdateDailyRefreshWallpaper_TimerStartsOnPrefServiceChange) { - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - - using base::Time; - using base::TimeDelta; - - SimulateUserLogin(kUser1); - controller_->SetDailyRefreshCollectionId("fun_collection"); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - base::Time::Now().LocalMidnight())); - - controller_->OnActiveUserPrefServiceChanged( - GetProfilePrefService(account_id_1)); - - Time run_time = - controller_->GetDailyRefreshTimerForTesting().desired_run_time(); - TimeDelta delta = run_time.ToDeltaSinceWindowsEpoch(); - - TimeDelta update_time = - Time::Now().LocalMidnight().ToDeltaSinceWindowsEpoch() + - TimeDelta::FromDays(1); - - ASSERT_GE(delta, update_time - TimeDelta::FromMinutes(1)); - ASSERT_LE(delta, - update_time + TimeDelta::FromHours(1) + TimeDelta::FromMinutes(1)); -} - -TEST_F(WallpaperControllerTest, - UpdateDailyRefreshWallpaper_RetryTimerTriggersOnFailedFetchInfo) { - using base::Time; - using base::TimeDelta; - - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - client.set_fetch_daily_refresh_info_fails(true); - - SimulateUserLogin(kUser1); - controller_->SetDailyRefreshCollectionId("fun_collection"); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - DayBeforeYesterdayish())); - - controller_->UpdateDailyRefreshWallpaperForTesting(); - Time run_time = - controller_->GetDailyRefreshTimerForTesting().desired_run_time(); - TimeDelta delay = run_time - Time::Now(); - - TimeDelta one_hour = TimeDelta::FromHours(1); - // Lave a little wiggle room. - ASSERT_GE(delay, one_hour - TimeDelta::FromMinutes(1)); - ASSERT_LE(delay, one_hour + TimeDelta::FromMinutes(1)); -} - -TEST_F(WallpaperControllerTest, - UpdateDailyRefreshWallpaper_RetryTimerTriggersOnFailedFetchData) { - using base::Time; - using base::TimeDelta; - - base::test::ScopedFeatureList scoped_features; - scoped_features.InitAndEnableFeature(features::kWallpaperWebUI); - - TestWallpaperControllerClient client; - controller_->SetClient(&client); - - SimulateUserLogin(kUser1); - controller_->SetDailyRefreshCollectionId("fun_collection"); - controller_->SetUserWallpaperInfo( - account_id_1, WallpaperInfo(std::string(), WALLPAPER_LAYOUT_CENTER, DAILY, - DayBeforeYesterdayish())); - - TestImageDownloader image_downloader; - image_downloader.set_should_fail(true); - - controller_->UpdateDailyRefreshWallpaperForTesting(); - - RunAllTasksUntilIdle(); - - Time run_time = - controller_->GetDailyRefreshTimerForTesting().desired_run_time(); - TimeDelta delay = run_time - Time::Now(); - - TimeDelta one_hour = TimeDelta::FromHours(1); - // Lave a little wiggle room. - ASSERT_GE(delay, one_hour - TimeDelta::FromMinutes(1)); - ASSERT_LE(delay, one_hour + TimeDelta::FromMinutes(1)); -} - } // namespace ash
diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc index 4aba6194..c740e56 100644 --- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc +++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
@@ -113,36 +113,27 @@ } TEST(PartitionAllocAsMalloc, AlignedAlloc) { - for (size_t alloc_size : {100, 100000, 10000000}) { - for (size_t alignment = 1; alignment <= kMaxSupportedAlignment; - alignment <<= 1) { - void* data = - PartitionAlignedAlloc(nullptr, alloc_size, alignment, nullptr); - EXPECT_TRUE(data); - EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(data) % alignment); - PartitionFree(nullptr, data, nullptr); - } - } + constexpr size_t alloc_size = 100; + constexpr size_t alignment = 1024; + void* data = PartitionAlignedAlloc(nullptr, alloc_size, alignment, nullptr); + EXPECT_TRUE(data); + EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(data) % alignment); + PartitionFree(nullptr, data, nullptr); } TEST(PartitionAllocAsMalloc, AlignedRealloc) { - for (size_t alloc_size : {100, 100000, 10000000}) { - for (size_t alignment = 1; alignment <= kMaxSupportedAlignment; - alignment <<= 1) { - void* data = - PartitionAlignedAlloc(nullptr, alloc_size, alignment, nullptr); - EXPECT_TRUE(data); + constexpr size_t alloc_size = 100; + constexpr size_t alignment = 1024; + void* data = PartitionAlignedAlloc(nullptr, alloc_size, alignment, nullptr); + EXPECT_TRUE(data); - void* data2 = PartitionAlignedRealloc(nullptr, data, alloc_size, - alignment, nullptr); - EXPECT_TRUE(data2); + void* data2 = PartitionAlignedRealloc(nullptr, data, alloc_size + 1, + alignment, nullptr); + EXPECT_TRUE(data2); - // Aligned realloc always relocates. - EXPECT_NE(reinterpret_cast<uintptr_t>(data), - reinterpret_cast<uintptr_t>(data2)); - PartitionFree(nullptr, data2, nullptr); - } - } + EXPECT_NE(reinterpret_cast<uintptr_t>(data), + reinterpret_cast<uintptr_t>(data2)); + PartitionFree(nullptr, data2, nullptr); } TEST(PartitionAllocAsMalloc, Realloc) {
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc index 594fcb6..4455acf8 100644 --- a/base/allocator/partition_allocator/partition_alloc_unittest.cc +++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -1099,15 +1099,18 @@ size = kMaxBucketed + 16 * SystemPageSize(); ptr = allocator.root()->Alloc(size, type_name); size_t actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr); - ptr2 = allocator.root()->Realloc(ptr, size - SystemPageSize(), type_name); - EXPECT_EQ(actual_capacity - SystemPageSize(), + ptr2 = allocator.root()->Realloc(ptr, kMaxBucketed + 8 * SystemPageSize(), + type_name); + EXPECT_EQ(ptr, ptr2); + EXPECT_EQ(actual_capacity - 8 * SystemPageSize(), allocator.root()->AllocationCapacityFromPtr(ptr2)); // Test that a previously in-place shrunk direct mapped allocation can be - // expanded up again up to its original size. - ptr = allocator.root()->Realloc(ptr2, size, type_name); + // expanded up again within its original size. + ptr = allocator.root()->Realloc(ptr2, size - SystemPageSize(), type_name); EXPECT_EQ(ptr2, ptr); - EXPECT_EQ(actual_capacity, allocator.root()->AllocationCapacityFromPtr(ptr)); + EXPECT_EQ(actual_capacity - SystemPageSize(), + allocator.root()->AllocationCapacityFromPtr(ptr)); // Test that a direct mapped allocation is performed not in-place when the // new size is small enough. @@ -1117,42 +1120,6 @@ allocator.root()->Free(ptr2); } -TEST_F(PartitionAllocTest, ReallocDirectMapAligned) { - size_t alignments[] = { - PartitionPageSize(), - 2 * PartitionPageSize(), - kMaxSupportedAlignment / 2, - kMaxSupportedAlignment, - }; - - for (size_t alignment : alignments) { - // Test that shrinking a direct mapped allocation happens in-place. - size_t size = kMaxBucketed + 2 * SystemPageSize(); - void* ptr = - allocator.root()->AllocFlagsInternal(0, size, alignment, type_name); - size_t actual_capacity = allocator.root()->AllocationCapacityFromPtr(ptr); - void* ptr2 = - allocator.root()->Realloc(ptr, size - SystemPageSize(), type_name); - EXPECT_EQ(ptr, ptr2); - EXPECT_EQ(actual_capacity - SystemPageSize(), - allocator.root()->AllocationCapacityFromPtr(ptr2)); - - // Test that a previously in-place shrunk direct mapped allocation can be - // expanded up again up to its original size. - ptr = allocator.root()->Realloc(ptr2, size, type_name); - EXPECT_EQ(ptr2, ptr); - EXPECT_EQ(actual_capacity, - allocator.root()->AllocationCapacityFromPtr(ptr)); - - // Test that a direct mapped allocation is performed not in-place when the - // new size is small enough. - ptr2 = allocator.root()->Realloc(ptr, SystemPageSize(), type_name); - EXPECT_NE(ptr, ptr2); - - allocator.root()->Free(ptr2); - } -} - // Tests the handing out of freelists for partial slot spans. #if defined(OS_MAC) && defined(ARCH_CPU_ARM64) // Bulk-disabled on mac-arm64 for bot stabilization: https://crbug.com/1154345 @@ -2727,23 +2694,12 @@ } TEST_F(PartitionAllocTest, AlignedAllocations) { - size_t alloc_sizes[] = {1, - 10, - 100, - 1000, - 10000, - 60000, - 70000, - 130000, - 500000, - 900000, - kMaxBucketed + 1, - 2 * kMaxBucketed, - base::kSuperPageSize - 2 * PartitionPageSize(), - 10 * kMaxBucketed}; + size_t alloc_sizes[] = {1, 10, 100, 1000, 10000, + 60000, 70000, 130000, 500000, 900000}; + size_t max_alignment = 1048576; + for (size_t alloc_size : alloc_sizes) { - for (size_t alignment = 1; alignment <= kMaxSupportedAlignment; - alignment <<= 1) { + for (size_t alignment = 1; alignment <= max_alignment; alignment <<= 1) { VerifyAlignment(aligned_allocator.root(), alloc_size, alignment); // AlignedAllocFlags() can't be called on regular allocator, if there are @@ -2889,43 +2845,28 @@ kSuperPageSize + PageAllocationGranularity(), kSuperPageSize + DirectMapAllocationGranularity(), }; - size_t alignments[] = { - PartitionPageSize(), - 2 * PartitionPageSize(), - kMaxSupportedAlignment / 2, - kMaxSupportedAlignment, - }; for (size_t huge_size : huge_sizes) { - for (size_t alignment : alignments) { - // For direct map, we commit only as many pages as needed. - size_t aligned_size = bits::AlignUp(huge_size, SystemPageSize()); - ptr = root.AllocFlagsInternal(0, huge_size - kExtraAllocSize, alignment, - type_name); - expected_committed_size += aligned_size; - // The total reserved map includes metadata and guard pages at the ends. - // It also includes alignment. However, these would double count the first - // partition page, so it needs to be subtracted. - size_t surrounding_pages_size = - PartitionRoot<ThreadSafe>::GetDirectMapMetadataAndGuardPagesSize() + - alignment - PartitionPageSize(); - size_t expected_direct_map_size = - bits::AlignUp(aligned_size + surrounding_pages_size, - DirectMapAllocationGranularity()); - EXPECT_EQ(expected_committed_size, root.total_size_of_committed_pages); - EXPECT_EQ(expected_super_pages_size, root.total_size_of_super_pages); - EXPECT_EQ(expected_direct_map_size, - root.total_size_of_direct_mapped_pages); + // For direct map, we commit only as many pages as needed. + size_t aligned_size = bits::AlignUp(huge_size, SystemPageSize()); + ptr = root.Alloc(huge_size - kExtraAllocSize, type_name); + expected_committed_size += aligned_size; + size_t surrounding_pages_size = + PartitionRoot<ThreadSafe>::GetDirectMapMetadataAndGuardPagesSize(); + size_t expected_direct_map_size = + bits::AlignUp(aligned_size + surrounding_pages_size, + DirectMapAllocationGranularity()); + EXPECT_EQ(expected_committed_size, root.total_size_of_committed_pages); + EXPECT_EQ(expected_super_pages_size, root.total_size_of_super_pages); + EXPECT_EQ(expected_direct_map_size, root.total_size_of_direct_mapped_pages); - // Freeing memory in the diret map decommits pages right away. The address - // space is released for re-use too. - root.Free(ptr); - expected_committed_size -= aligned_size; - expected_direct_map_size = 0; - EXPECT_EQ(expected_committed_size, root.total_size_of_committed_pages); - EXPECT_EQ(expected_super_pages_size, root.total_size_of_super_pages); - EXPECT_EQ(expected_direct_map_size, - root.total_size_of_direct_mapped_pages); - } + // Freeing memory in the diret map decommits pages right away. The address + // space is released for re-use too. + root.Free(ptr); + expected_committed_size -= aligned_size; + expected_direct_map_size = 0; + EXPECT_EQ(expected_committed_size, root.total_size_of_committed_pages); + EXPECT_EQ(expected_super_pages_size, root.total_size_of_super_pages); + EXPECT_EQ(expected_direct_map_size, root.total_size_of_direct_mapped_pages); } }
diff --git a/base/allocator/partition_allocator/partition_bucket.cc b/base/allocator/partition_allocator/partition_bucket.cc index a19e1c0..6940bc2 100644 --- a/base/allocator/partition_allocator/partition_bucket.cc +++ b/base/allocator/partition_allocator/partition_bucket.cc
@@ -95,11 +95,7 @@ SlotSpanMetadata<thread_safe>* PartitionDirectMap( PartitionRoot<thread_safe>* root, int flags, - size_t raw_size, - size_t slot_span_alignment) { - PA_DCHECK(slot_span_alignment && - !(slot_span_alignment & PartitionPageOffsetMask())); - + size_t raw_size) { // No static EXCLUSIVE_LOCKS_REQUIRED(), as the checker doesn't understand // scoped unlocking. root->lock_.AssertAcquired(); @@ -159,17 +155,10 @@ const size_t slot_size = PartitionRoot<thread_safe>::GetDirectMapSlotSize(raw_size); - // The super page starts with a partition page worth of metadata and guard - // pages, hence alignment requests ==PartitionPageSize() will be - // automatically satisfied. Padding is needed for higher-order alignment - // requests. Note, |slot_span_alignment| is at least 1 partition page. - const size_t padding_for_alignment = - slot_span_alignment - PartitionPageSize(); const size_t reserved_size = - PartitionRoot<thread_safe>::GetDirectMapReservedSize( - raw_size + padding_for_alignment); + PartitionRoot<thread_safe>::GetDirectMapReservedSize(raw_size); const size_t map_size = - reserved_size - padding_for_alignment - + reserved_size - PartitionRoot<thread_safe>::GetDirectMapMetadataAndGuardPagesSize(); PA_DCHECK(slot_size <= map_size); @@ -215,8 +204,7 @@ root->total_size_of_direct_mapped_pages.fetch_add( reserved_size, std::memory_order_relaxed); - // Shift by 1 partition page (metadata + guard pages) and alignment padding. - char* const slot_start = ptr + PartitionPageSize() + padding_for_alignment; + char* const slot = ptr + PartitionPageSize(); RecommitSystemPages( ptr + SystemPageSize(), #if BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \ @@ -238,7 +226,7 @@ // Note that we didn't check above, because if we cannot even commit a // single page, then this is likely hopeless anyway, and we will crash very // soon. - const bool ok = root->TryRecommitSystemPagesForData(slot_start, slot_size, + const bool ok = root->TryRecommitSystemPagesForData(slot, slot_size, PageUpdatePermissions); if (!ok) { if (!return_null) { @@ -271,29 +259,18 @@ } #endif // BUILDFLAG(ENABLE_BRP_DIRECTMAP_SUPPORT) - auto* super_page_extent = - reinterpret_cast<PartitionSuperPageExtentEntry<thread_safe>*>( - PartitionSuperPageToMetadataArea(ptr)); - super_page_extent->root = root; + auto* metadata = reinterpret_cast<PartitionDirectMapMetadata<thread_safe>*>( + PartitionSuperPageToMetadataArea(ptr)); + metadata->extent.root = root; // The new structures are all located inside a fresh system page so they // will all be zeroed out. These DCHECKs are for documentation and to assert // our expectations of the kernel. - PA_DCHECK(!super_page_extent->super_page_base); - PA_DCHECK(!super_page_extent->super_pages_end); - PA_DCHECK(!super_page_extent->next); + PA_DCHECK(!metadata->extent.super_page_base); + PA_DCHECK(!metadata->extent.super_pages_end); + PA_DCHECK(!metadata->extent.next); + PA_DCHECK(PartitionPage<thread_safe>::FromPtr(slot) == &metadata->page); - page = PartitionPage<thread_safe>::FromPtr(slot_start); - auto* metadata = - reinterpret_cast<PartitionDirectMapMetadata<thread_safe>*>(page); - // Since direct map metadata is larger than PartitionPage, make sure the - // first and the last bytes are on the same system page, i.e. within the - // super page metadata region. - PA_DCHECK( - bits::AlignDown(reinterpret_cast<char*>(metadata), SystemPageSize()) == - bits::AlignDown(reinterpret_cast<char*>(metadata) + - sizeof(PartitionDirectMapMetadata<thread_safe>) - 1, - SystemPageSize())); - PA_DCHECK(page == &metadata->page); + page = &metadata->page; page->is_valid = true; PA_DCHECK(!page->has_valid_span_after_this); PA_DCHECK(!page->slot_span_metadata_offset); @@ -315,12 +292,11 @@ new (&page->slot_span_metadata) SlotSpanMetadata<thread_safe>(&metadata->bucket); - auto* next_entry = new (slot_start) PartitionFreelistEntry(); + auto* next_entry = new (slot) PartitionFreelistEntry(); page->slot_span_metadata.SetFreelistHead(next_entry); map_extent = &metadata->direct_map_extent; map_extent->map_size = map_size; - map_extent->padding_for_alignment = padding_for_alignment; map_extent->bucket = &metadata->bucket; } @@ -837,13 +813,13 @@ PA_DCHECK(this == &root->sentinel_bucket); PA_DCHECK(active_slot_spans_head == SlotSpanMetadata<thread_safe>::get_sentinel_slot_span()); + PA_DCHECK(!allocate_aligned_slot_span); // not supported for direct map // No fast path for direct-mapped allocations. if (flags & PartitionAllocFastPathOrReturnNull) return nullptr; - new_slot_span = - PartitionDirectMap(root, flags, raw_size, slot_span_alignment); + new_slot_span = PartitionDirectMap(root, flags, raw_size); if (new_slot_span) new_bucket = new_slot_span->bucket; // Memory from PageAllocator is always zeroed.
diff --git a/base/allocator/partition_allocator/partition_direct_map_extent.h b/base/allocator/partition_allocator/partition_direct_map_extent.h index 3fec6a9..b206b9a 100644 --- a/base/allocator/partition_allocator/partition_direct_map_extent.h +++ b/base/allocator/partition_allocator/partition_direct_map_extent.h
@@ -17,11 +17,7 @@ PartitionDirectMapExtent<thread_safe>* next_extent; PartitionDirectMapExtent<thread_safe>* prev_extent; PartitionBucket<thread_safe>* bucket; - // Mapped size, not including guard pages and meta-data or alignment padding. - size_t map_size; - // Padding between the first partition page (guard pages + meta-data) and - // the map. - size_t padding_for_alignment; + size_t map_size; // Mapped size, not including guard pages and meta-data. ALWAYS_INLINE static PartitionDirectMapExtent<thread_safe>* FromSlotSpan( SlotSpanMetadata<thread_safe>* slot_span); @@ -30,6 +26,11 @@ // Metadata page for direct-mapped allocations. template <bool thread_safe> struct PartitionDirectMapMetadata { + union { + PartitionSuperPageExtentEntry<thread_safe> extent; + // Never used, but must have the same size as a real PartitionPage. + PartitionPage<thread_safe> first_invalid_page; + }; PartitionPage<thread_safe> page; PartitionPage<thread_safe> subsequent_page; PartitionBucket<thread_safe> bucket; @@ -41,10 +42,12 @@ PartitionDirectMapExtent<thread_safe>::FromSlotSpan( SlotSpanMetadata<thread_safe>* slot_span) { PA_DCHECK(slot_span->bucket->is_direct_mapped()); - // |*slot_span| is the first field of |PartitionDirectMapMetadata|, just cast. - auto* metadata = - reinterpret_cast<PartitionDirectMapMetadata<thread_safe>*>(slot_span); - PA_DCHECK(&metadata->page.slot_span_metadata == slot_span); + auto* page = reinterpret_cast<PartitionPage<thread_safe>*>(slot_span); + // The page passed here is always |page| in |PartitionDirectMapMetadata| + // above. To get the metadata structure, need to get the invalid page address. + auto* first_invalid_page = page - 1; + auto* metadata = reinterpret_cast<PartitionDirectMapMetadata<thread_safe>*>( + first_invalid_page); return &metadata->direct_map_extent; }
diff --git a/base/allocator/partition_allocator/partition_page.cc b/base/allocator/partition_allocator/partition_page.cc index 0010844..0a00b0f 100644 --- a/base/allocator/partition_allocator/partition_page.cc +++ b/base/allocator/partition_allocator/partition_page.cc
@@ -9,7 +9,6 @@ #include "base/allocator/partition_allocator/page_allocator_constants.h" #include "base/allocator/partition_allocator/partition_address_space.h" #include "base/allocator/partition_allocator/partition_alloc_check.h" -#include "base/allocator/partition_allocator/partition_alloc_constants.h" #include "base/allocator/partition_allocator/partition_alloc_features.h" #include "base/allocator/partition_allocator/partition_alloc_forward.h" #include "base/allocator/partition_allocator/partition_direct_map_extent.h" @@ -46,7 +45,7 @@ root->DecreaseCommittedPages(slot_span->bucket->slot_size); size_t reserved_size = - extent->map_size + extent->padding_for_alignment + + extent->map_size + PartitionRoot<thread_safe>::GetDirectMapMetadataAndGuardPagesSize(); PA_DCHECK(!(reserved_size & DirectMapAllocationGranularityOffsetMask())); PA_DCHECK(root->total_size_of_direct_mapped_pages >= reserved_size); @@ -55,9 +54,9 @@ char* ptr = reinterpret_cast<char*>( SlotSpanMetadata<thread_safe>::ToSlotSpanStartPtr(slot_span)); - // The mapping may start at an unspecified location within a super page, but - // we always reserve memory aligned to super page size. - ptr = bits::AlignDown(ptr, kSuperPageSize); + // Account for the mapping starting a partition page before the actual + // allocation address. + ptr -= PartitionPageSize(); #if BUILDFLAG(ENABLE_BRP_DIRECTMAP_SUPPORT) return {ptr, reserved_size, root->UseBRPPool()};
diff --git a/base/allocator/partition_allocator/partition_root.cc b/base/allocator/partition_allocator/partition_root.cc index ecc39cc..84736ab 100644 --- a/base/allocator/partition_allocator/partition_root.cc +++ b/base/allocator/partition_allocator/partition_root.cc
@@ -657,22 +657,17 @@ size_t current_slot_size = slot_span->bucket->slot_size; char* slot_start = static_cast<char*>(SlotSpan::ToSlotSpanStartPtr(slot_span)); - // TODO(bartekn): Drop the alignment requirement of the existing allocation. if (new_slot_size == current_slot_size) { // No need to move any memory around, but update size and cookie below. // That's because raw_size may have changed. } else if (new_slot_size < current_slot_size) { - auto* extent = DirectMapExtent::FromSlotSpan(slot_span); - size_t current_map_size = extent->map_size; - // Calculate the new map size the way PartitionDirectMap() would, but - // assume keeping the same alignment. - size_t new_map_size = - GetDirectMapReservedSize(raw_size + extent->padding_for_alignment) - - extent->padding_for_alignment - GetDirectMapMetadataAndGuardPagesSize(); + size_t current_map_size = + DirectMapExtent::FromSlotSpan(slot_span)->map_size; + size_t new_map_size = GetDirectMapReservedSize(raw_size) - + GetDirectMapMetadataAndGuardPagesSize(); // Don't reallocate in-place if new map size would be less than 80 % of the // current map size, to avoid holding on to too much unused address space. - // TODO(bartekn): Compare reserved size, to get the whole picture. if ((new_map_size / SystemPageSize()) * 5 < (current_map_size / SystemPageSize()) * 4) return false;
diff --git a/base/allocator/partition_allocator/partition_root.h b/base/allocator/partition_allocator/partition_root.h index 56ffbfd4..b210eb7 100644 --- a/base/allocator/partition_allocator/partition_root.h +++ b/base/allocator/partition_allocator/partition_root.h
@@ -420,14 +420,13 @@ return bits::AlignUp(raw_size, SystemPageSize()); } - static ALWAYS_INLINE size_t GetDirectMapReservedSize(size_t padded_raw_size) { + static ALWAYS_INLINE size_t GetDirectMapReservedSize(size_t raw_size) { // Caller must check that the size is not above the MaxDirectMapped() // limit before calling. This also guards against integer overflow in the // calculation here. - PA_DCHECK(padded_raw_size <= MaxDirectMapped()); - return bits::AlignUp( - padded_raw_size + GetDirectMapMetadataAndGuardPagesSize(), - DirectMapAllocationGranularity()); + PA_DCHECK(raw_size <= MaxDirectMapped()); + return bits::AlignUp(raw_size + GetDirectMapMetadataAndGuardPagesSize(), + DirectMapAllocationGranularity()); } // PartitionRefCount contains a cookie if slow checks are enabled or @@ -1605,6 +1604,8 @@ // Catch unsupported alignment requests early. PA_CHECK(alignment <= kMaxSupportedAlignment); size_t raw_size = AdjustSizeForExtrasAdd(requested_size); + // TODO(bartekn): Support direct map. Until then, catch unsupported requests. + PA_CHECK(alignment <= PartitionPageSize() || raw_size <= kMaxBucketed); size_t adjusted_size = requested_size; if (alignment <= PartitionPageSize()) {
diff --git a/base/system/sys_info.h b/base/system/sys_info.h index ac1943c..b725b52c 100644 --- a/base/system/sys_info.h +++ b/base/system/sys_info.h
@@ -160,6 +160,7 @@ // Overrides |lsb_release| and |lsb_release_time|. Overrides cannot be nested. // Call ResetChromeOSVersionInfoForTest() to restore the previous values. + // Prefer base::test::ScopedChromeOSVersionInfo to calling this function. static void SetChromeOSVersionInfoForTest(const std::string& lsb_release, const Time& lsb_release_time);
diff --git a/base/system/sys_info_chromeos.cc b/base/system/sys_info_chromeos.cc index aefbb33..77f703f 100644 --- a/base/system/sys_info_chromeos.cc +++ b/base/system/sys_info_chromeos.cc
@@ -48,15 +48,7 @@ class ChromeOSVersionInfo { public: - ChromeOSVersionInfo() { Parse(); } - - void Parse() { - lsb_release_map_.clear(); - major_version_ = 0; - minor_version_ = 0; - bugfix_version_ = 0; - is_running_on_chromeos_ = false; - + ChromeOSVersionInfo() { std::string lsb_release, lsb_release_time_str; std::unique_ptr<Environment> env(Environment::Create()); bool parsed_from_env = @@ -83,6 +75,11 @@ parsed_from_env ? kLsbReleaseSourceEnv : kLsbReleaseSourceFile; } + // The test-only instance should not parse the lsb-release file, because that + // file exists on the linux test bots, but contains irrelevant values. + enum ForTest { FOR_TEST }; + explicit ChromeOSVersionInfo(ForTest for_test) {} + bool GetLsbReleaseValue(const std::string& key, std::string* value) { LsbReleaseMap::const_iterator iter = lsb_release_map_.find(key); if (iter == lsb_release_map_.end()) @@ -100,9 +97,10 @@ } const Time& lsb_release_time() const { return lsb_release_time_; } + void set_lsb_release_time(const Time& time) { lsb_release_time_ = time; } + bool is_running_on_chromeos() const { return is_running_on_chromeos_; } - private: void ParseLsbRelease(const std::string& lsb_release) { // Parse and cache lsb_release key pairs. There should only be a handful // of entries so the overhead for this will be small, and it can be @@ -147,25 +145,25 @@ } } + private: using LsbReleaseMap = std::map<std::string, std::string>; Time lsb_release_time_; LsbReleaseMap lsb_release_map_; - int32_t major_version_; - int32_t minor_version_; - int32_t bugfix_version_; - bool is_running_on_chromeos_; + int32_t major_version_ = 0; + int32_t minor_version_ = 0; + int32_t bugfix_version_ = 0; + bool is_running_on_chromeos_ = false; }; -bool g_use_chromeos_version_info_for_test = false; +ChromeOSVersionInfo* g_chromeos_version_info_for_test = nullptr; ChromeOSVersionInfo& GetChromeOSVersionInfo() { - // ChromeOSVersionInfo only stores the parsed lsb-release values. We use a - // second instance for overrides in tests so we can cleanly restore the - // original lsb-release. - if (g_use_chromeos_version_info_for_test) { - static base::NoDestructor<ChromeOSVersionInfo> version_info_for_test; - return *version_info_for_test; - } + // ChromeOSVersionInfo only stores the parsed lsb-release values, not the full + // contents of the lsb-release file. Therefore, use a second instance for + // overrides in tests so we can cleanly restore the original lsb-release. + if (g_chromeos_version_info_for_test) + return *g_chromeos_version_info_for_test; + static base::NoDestructor<ChromeOSVersionInfo> version_info; return *version_info; } @@ -236,18 +234,18 @@ // static void SysInfo::SetChromeOSVersionInfoForTest(const std::string& lsb_release, const Time& lsb_release_time) { - DCHECK(!g_use_chromeos_version_info_for_test) << "Nesting is not allowed"; - g_use_chromeos_version_info_for_test = true; - std::unique_ptr<Environment> env(Environment::Create()); - env->SetVar(kLsbReleaseKey, lsb_release); - env->SetVar(kLsbReleaseTimeKey, NumberToString(lsb_release_time.ToDoubleT())); - GetChromeOSVersionInfo().Parse(); + DCHECK(!g_chromeos_version_info_for_test) << "Nesting is not allowed"; + g_chromeos_version_info_for_test = + new ChromeOSVersionInfo(ChromeOSVersionInfo::FOR_TEST); + g_chromeos_version_info_for_test->ParseLsbRelease(lsb_release); + g_chromeos_version_info_for_test->set_lsb_release_time(lsb_release_time); } // static void SysInfo::ResetChromeOSVersionInfoForTest() { - DCHECK(g_use_chromeos_version_info_for_test); - g_use_chromeos_version_info_for_test = false; + DCHECK(g_chromeos_version_info_for_test); + delete g_chromeos_version_info_for_test; + g_chromeos_version_info_for_test = nullptr; } // static
diff --git a/base/system/sys_info_unittest.cc b/base/system/sys_info_unittest.cc index e6cdc65..64b6b31 100644 --- a/base/system/sys_info_unittest.cc +++ b/base/system/sys_info_unittest.cc
@@ -378,6 +378,19 @@ } } +// Regression test for https://crbug.com/1148904. +TEST_F(SysInfoTest, ScopedChromeOSVersionInfoDoesNotChangeEnvironment) { + std::unique_ptr<Environment> environment = Environment::Create(); + ASSERT_FALSE(environment->HasVar("LSB_RELEASE")); + { + const char kLsbRelease[] = + "CHROMEOS_RELEASE_NAME=Chrome OS\n" + "CHROMEOS_RELEASE_VERSION=1.2.3.4\n"; + test::ScopedChromeOSVersionInfo version(kLsbRelease, Time()); + } + EXPECT_FALSE(environment->HasVar("LSB_RELEASE")); +} + TEST_F(SysInfoTest, CrashOnBaseImage) { const char kLsbRelease[] = "CHROMEOS_RELEASE_NAME=Chrome OS\n"
diff --git a/build/android/gyp/util/build_utils.py b/build/android/gyp/util/build_utils.py index d1d3a72..a33c9c6a 100644 --- a/build/android/gyp/util/build_utils.py +++ b/build/android/gyp/util/build_utils.py
@@ -655,8 +655,8 @@ # Ninja does not support multiple outputs in depfiles. with open(depfile_path, 'w') as depfile: depfile.write(first_gn_output.replace(' ', '\\ ')) - depfile.write(': ') - depfile.write(' '.join(i.replace(' ', '\\ ') for i in inputs)) + depfile.write(': \\\n ') + depfile.write(' \\\n '.join(i.replace(' ', '\\ ') for i in inputs)) depfile.write('\n')
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 8777d72..896c5554 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -4.20210526.1.1 +4.20210527.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 8777d72..e204c51 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -4.20210526.1.1 +4.20210527.0.1
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni index 9be0b91..db11585e 100644 --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni
@@ -548,6 +548,7 @@ "java/res/drawable/btn_forward.xml", "java/res/drawable/btn_reload_stop.xml", "java/res/drawable/button_compat_shape.xml", + "java/res/drawable/capture_overlay_border.xml", "java/res/drawable/checkerboard_background.xml", "java/res/drawable/computer_black_24dp.xml", "java/res/drawable/contextual_search_panel_help_background.xml", @@ -586,6 +587,7 @@ "java/res/drawable/ic_file_download_scheduled_24dp.xml", "java/res/drawable/ic_find_in_page.xml", "java/res/drawable/ic_fingerprint_grey500_36dp.xml", + "java/res/drawable/ic_forward_arrow_black_24dp.xml", "java/res/drawable/ic_google_round.xml", "java/res/drawable/ic_google_services_48dp.xml", "java/res/drawable/ic_image_descriptions.xml", @@ -600,7 +602,6 @@ "java/res/drawable/ic_person_add_40dp.xml", "java/res/drawable/ic_photo_camera_black.xml", "java/res/drawable/ic_reading_list_folder.xml", - "java/res/drawable/ic_right_arrow_black_24dp.xml", "java/res/drawable/ic_settings_black.xml", "java/res/drawable/ic_signal_cellular_0_bar.xml", "java/res/drawable/ic_signal_cellular_1_bar.xml",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 6db329e5..ca1ae15f 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -1327,6 +1327,7 @@ "java/src/org/chromium/chrome/browser/ui/AppLaunchDrawBlocker.java", "java/src/org/chromium/chrome/browser/ui/BottomContainer.java", "java/src/org/chromium/chrome/browser/ui/BottomSheetManager.java", + "java/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayController.java", "java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java", "java/src/org/chromium/chrome/browser/ui/TabObscuringHandler.java", "java/src/org/chromium/chrome/browser/ui/TabObscuringHandlerSupplier.java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index 1f36428..7297b6f 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -607,6 +607,7 @@ "javatests/src/org/chromium/chrome/browser/translate/TranslateAssistContentTest.java", "javatests/src/org/chromium/chrome/browser/translate/TranslateCompactInfoBarTest.java", "javatests/src/org/chromium/chrome/browser/translate/TranslateIntentTest.java", + "javatests/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayControllerTest.java", "javatests/src/org/chromium/chrome/browser/ui/system/StatusBarColorControllerTest.java", "javatests/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarControllerTest.java", "javatests/src/org/chromium/chrome/browser/usage_stats/TabSuspensionTest.java",
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb index cbde815..2968d01a 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">عرض طرق الدفع</translation> <translation id="8507520749471379845">كلمات المرور متاحة</translation> <translation id="8705308553596171387">بلا كلمة مرور</translation> +<translation id="8849262850971482943">يمكنك استخدام بطاقتك الافتراضية للحصول على مستوى أعلى من الأمان.</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_as.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_as.xtb index 5b51678..cd7fb28 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_as.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_as.xtb
@@ -23,4 +23,5 @@ <translation id="8037472847879765671">পৰিশোধ পদ্ধতিসমূহ দেখুৱাওক</translation> <translation id="8507520749471379845">পাছৱৰ্ড উপলব্ধ</translation> <translation id="8705308553596171387">কোনো পাছৱৰ্ড নাই</translation> +<translation id="8849262850971482943">অতিৰিক্ত সুৰক্ষাৰ বাবে আপোনাৰ ভাৰ্চুৱেল কাৰ্ডখন ব্যৱহাৰ কৰক</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb index a7bebbd..4d7d3ce 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Zahlungsmethoden anzeigen</translation> <translation id="8507520749471379845">Passwörter verfügbar</translation> <translation id="8705308553596171387">Kein Passwort</translation> +<translation id="8849262850971482943">Verwenden Sie für zusätzliche Sicherheit Ihre virtuelle Karte</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb index cb0bb93d..ba1830a 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Muestra formas de pago</translation> <translation id="8507520749471379845">Contraseñas disponibles</translation> <translation id="8705308553596171387">Sin contraseña</translation> +<translation id="8849262850971482943">Usa tu tarjeta virtual para mejorar la seguridad</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb index f8f1d05..4fc6888 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Mostrar métodos de pago</translation> <translation id="8507520749471379845">Contraseñas disponibles</translation> <translation id="8705308553596171387">Sin contraseña</translation> +<translation id="8849262850971482943">Usa tu tarjeta virtual para aumentar la seguridad</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb index c714827..06e69eb 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Afficher les modes de paiement</translation> <translation id="8507520749471379845">Mots de passe disponibles</translation> <translation id="8705308553596171387">Aucun mot de passe</translation> +<translation id="8849262850971482943">Pour plus de sécurité, utilisez votre carte virtuelle</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb index f835541..cb68ab9 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Tampilkan metode pembayaran</translation> <translation id="8507520749471379845">Sandi tersedia</translation> <translation id="8705308553596171387">Tidak ada sandi</translation> +<translation id="8849262850971482943">Gunakan kartu virtual Anda untuk keamanan tambahan</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb index d56f255f..9a472cc 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Mostra metodi di pagamento</translation> <translation id="8507520749471379845">Password disponibili</translation> <translation id="8705308553596171387">Nessuna password</translation> +<translation id="8849262850971482943">Usa la carta virtuale per una maggiore sicurezza</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb index e3fa488..277fbc8f 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">お支払い方法を表示</translation> <translation id="8507520749471379845">使用可能なパスワード</translation> <translation id="8705308553596171387">パスワードなし</translation> +<translation id="8849262850971482943">セキュリティを強化するには仮想カードを使用してください</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_or.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_or.xtb index 53efd2f..4cc6a60 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_or.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_or.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">ପେମେଣ୍ଟ ପଦ୍ଧତି ଦେଖାନ୍ତୁ</translation> <translation id="8507520749471379845">ପାସ୍ୱାର୍ଡ ଉପଲବ୍ଧ ଅଛି</translation> <translation id="8705308553596171387">କୌଣସି ପାସୱାର୍ଡ ନାହିଁ</translation> +<translation id="8849262850971482943">ଅଧିକ ସୁରକ୍ଷା ପାଇଁ ଆପଣଙ୍କ ଭର୍ଚୁଆଲ୍ କାର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pa.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pa.xtb index 06c19748..fa6b2bb 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pa.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pa.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਦਿਖਾਓ</translation> <translation id="8507520749471379845">ਪਾਸਵਰਡ ਉਪਲਬਧ ਹਨ</translation> <translation id="8705308553596171387">ਕੋਈ ਪਾਸਵਰਡ ਨਹੀਂ</translation> +<translation id="8849262850971482943">ਵਾਧੂ ਸੁਰੱਖਿਆ ਲਈ ਆਪਣੇ ਆਭਾਸੀ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਕਰੋ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb index 5f7f0dc7..ad7c1add 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Mostrar formas de pagamento</translation> <translation id="8507520749471379845">Senhas disponíveis</translation> <translation id="8705308553596171387">Nenhuma senha</translation> +<translation id="8849262850971482943">Use seu cartão virtual para aumentar a segurança</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb index 02e991dc..01829d8 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Показать способы оплаты</translation> <translation id="8507520749471379845">Доступные варианты паролей</translation> <translation id="8705308553596171387">Без пароля</translation> +<translation id="8849262850971482943">Для дополнительной защиты используйте виртуальную карту.</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb index aed54d9..50c1aa52 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">கட்டண முறைகளைக் காட்டும்</translation> <translation id="8507520749471379845">கடவுச்சொற்கள் உள்ளன</translation> <translation id="8705308553596171387">கடவுச்சொல் இல்லை</translation> +<translation id="8849262850971482943">கூடுதல் பாதுகாப்பிற்கு விர்ச்சுவல் கார்டைப் பயன்படுத்தவும்</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb index 4448535..a73b8508 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Ödeme yöntemlerini göster</translation> <translation id="8507520749471379845">Kullanılabilir şifreler</translation> <translation id="8705308553596171387">Şifre yok</translation> +<translation id="8849262850971482943">Güvenliği artırmak için sanal kartınızı kullanın</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb index 01a9889..359953c3 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">Показати способи оплати</translation> <translation id="8507520749471379845">Доступні паролі</translation> <translation id="8705308553596171387">Немає пароля</translation> +<translation id="8849262850971482943">Скористайтеся віртуальною карткою для додаткової безпеки</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb index 4ca2a56..8ee4cf7 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">显示付款方式</translation> <translation id="8507520749471379845">有可用密码</translation> <translation id="8705308553596171387">无密码</translation> +<translation id="8849262850971482943">使用您的虚拟卡提升安全性</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-HK.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-HK.xtb index 47b3f15..a0e73dbd 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-HK.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-HK.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">顯示付款方法</translation> <translation id="8507520749471379845">有可用嘅密碼</translation> <translation id="8705308553596171387">無需密碼</translation> +<translation id="8849262850971482943">使用虛擬卡以提升安全性</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb index 5bc0126..8570cea 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb +++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb
@@ -24,4 +24,5 @@ <translation id="8037472847879765671">顯示付款方式</translation> <translation id="8507520749471379845">有可用的密碼</translation> <translation id="8705308553596171387">沒有密碼</translation> +<translation id="8849262850971482943">使用虛擬卡片讓安全更有保障</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java index d0448bf..bfe08f4a 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java
@@ -12,7 +12,6 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.browser.feed.v2.FeedProcessScopeDependencyProvider; import org.chromium.chrome.browser.feed.v2.FeedStream; -import org.chromium.chrome.browser.ntp.NewTabPageUma; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.xsurface.SurfaceScopeDependencyProvider; @@ -125,6 +124,12 @@ } @Override + public void reportOnUploadVisibilityLog(boolean success) { + RecordHistogram.recordBooleanHistogram( + "ContentSuggestions.Feed.UploadVisibilityLog", success); + } + + @Override public void reportVideoPlayEvent(boolean isMutedAutoplay, @VideoPlayEvent int event) { Log.i(TAG, "Feed video event %d", event); RecordHistogram.recordEnumeratedHistogram(
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java index 4b8519b9..68d1008 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java
@@ -10,6 +10,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.components.prefs.PrefService; import org.chromium.components.user_prefs.UserPrefs; @@ -29,10 +30,15 @@ } /** - * @return Whether the WebFeed UI is enabled. + * @return Whether the WebFeed UI should be enabled. Checks for both the WEB_FEED flag and if + * the user is signed in. */ public static boolean isWebFeedUIEnabled() { - return ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_FEED); + return ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_FEED) + && IdentityServicesProvider.get() + .getSigninManager(Profile.getLastUsedRegularProfile()) + .getIdentityManager() + .hasPrimaryAccount(); } /**
diff --git a/chrome/android/java/res/drawable/capture_overlay_border.xml b/chrome/android/java/res/drawable/capture_overlay_border.xml new file mode 100644 index 0000000..4d32b16 --- /dev/null +++ b/chrome/android/java/res/drawable/capture_overlay_border.xml
@@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2021 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > + <stroke android:width="5dp" android:color="@color/modern_blue_600_alpha_65"/> +</shape>
diff --git a/chrome/android/java/res/drawable/ic_right_arrow_black_24dp.xml b/chrome/android/java/res/drawable/ic_forward_arrow_black_24dp.xml similarity index 83% rename from chrome/android/java/res/drawable/ic_right_arrow_black_24dp.xml rename to chrome/android/java/res/drawable/ic_forward_arrow_black_24dp.xml index 39cd249..69bbf4fb 100644 --- a/chrome/android/java/res/drawable/ic_right_arrow_black_24dp.xml +++ b/chrome/android/java/res/drawable/ic_forward_arrow_black_24dp.xml
@@ -11,5 +11,5 @@ <path android:fillColor="@color/modern_grey_700" - android:pathData="M 6.23 20.23 L 8 22 L 18 12 L 8 2 L 6.23 3.77 L 14.46 12 Z" /> + android:pathData="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z" /> </vector> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/webapk_icon_name_update_dialog.xml b/chrome/android/java/res/layout/webapk_icon_name_update_dialog.xml index a904a184..3b2a8a2f 100644 --- a/chrome/android/java/res/layout/webapk_icon_name_update_dialog.xml +++ b/chrome/android/java/res/layout/webapk_icon_name_update_dialog.xml
@@ -15,7 +15,7 @@ <!-- The icon, name and short_name as it is before updating. --> <LinearLayout - android:layout_width="wrap_content" + android:layout_width="128dp" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:orientation="vertical" @@ -23,8 +23,8 @@ <ImageView android:id="@+id/app_icon_old" - android:layout_width="128dp" - android:layout_height="128dp" + android:layout_width="64dp" + android:layout_height="64dp" android:visibility="gone" android:contentDescription="@string/update_webapk_current_icon" /> @@ -33,7 +33,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:maxWidth="128dp" android:maxLines="5" android:ellipsize="end" android:textAppearance="@style/TextAppearance.TextMediumThick.Primary" /> @@ -43,22 +42,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:maxWidth="128dp" android:maxLines="5" android:ellipsize="end" android:textAppearance="@style/TextAppearance.TextMedium.Primary" /> </LinearLayout> - <ImageView + <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="45dp" + android:layout_marginTop="20dp" android:importantForAccessibility="no" - app:srcCompat="@drawable/ic_right_arrow_black_24dp" /> + app:srcCompat="@drawable/ic_forward_arrow_black_24dp" /> <!-- The icon, name and short_name as it will be after the update. --> <LinearLayout - android:layout_width="wrap_content" + android:layout_width="128dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:orientation="vertical" @@ -66,8 +64,8 @@ <ImageView android:id="@+id/app_icon_new" - android:layout_width="128dp" - android:layout_height="128dp" + android:layout_width="64dp" + android:layout_height="64dp" android:visibility="gone" android:contentDescription="@string/update_webapk_updated_icon"/> @@ -76,7 +74,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:maxWidth="128dp" android:maxLines="5" android:ellipsize="end" android:textAppearance="@style/TextAppearance.TextMediumThick.Primary" /> @@ -86,7 +83,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:maxWidth="128dp" android:maxLines="5" android:ellipsize="end" android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
diff --git a/chrome/android/java/res_app/layout/main.xml b/chrome/android/java/res_app/layout/main.xml index 07c8f06d..f207caed 100644 --- a/chrome/android/java/res_app/layout/main.xml +++ b/chrome/android/java/res_app/layout/main.xml
@@ -15,12 +15,27 @@ <include layout="@layout/compositor_view_holder"/> + <!-- Parent holder for the AR SurfaceView, used to render content when + in AR mode (which has some separate requirements preventing us from + using the default compositor surface view). This needs to be in + front of the compositor view (to obscure it), but behind any chrome + UI elements that we may want to render in front of it. --> <FrameLayout android:id="@+id/ar_view_holder" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> + <!-- The capture overlay needs to be behind UI elements that aren't being + captured, but can't be parented to the CompositorViewHolder because + it also needs to be in front of the AR content. --> + <View + android:id="@+id/capture_overlay" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/capture_overlay_border" + android:visibility="gone" /> + <FrameLayout android:id="@+id/overview_list_layout_holder" android:layout_width="match_parent"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java index a754be4d..0a77d67e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java
@@ -38,7 +38,6 @@ import org.chromium.base.task.AsyncTask; import org.chromium.chrome.R; import org.chromium.chrome.browser.autofill.AutofillUiUtils.ErrorType; -import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogProperties; @@ -192,7 +191,7 @@ Resources resources = context.getResources(); String modalDialogTitle = null; - if (isGooglePayLogoEnabled() && !isCardLocal) { + if (!isCardLocal) { Drawable mInlineTitleIcon = resources.getDrawable(googlePayDrawableId); // The first character will be replaced by the logo, and the consecutive spaces after // are used as padding. @@ -536,11 +535,6 @@ return mDelegate.checkUserInputValidity(mCardUnmaskInput.getText().toString()); } - private boolean isGooglePayLogoEnabled() { - return ChromeFeatureList.isEnabled( - ChromeFeatureList.AUTOFILL_DOWNSTREAM_CVC_PROMPT_USE_GOOGLE_LOGO); - } - /** * Sets the enabled state of the main contents, and hides or shows the verification overlay. * @param enabled True if the inputs should be useable, false if the verification overlay
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java index a97f2a6..3218e59 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.ui.TabObscuringHandler; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; import org.chromium.components.browser_ui.widget.InsetObserverView; +import org.chromium.components.browser_ui.widget.TouchEventObserver; import org.chromium.components.content_capture.OnscreenContentProvider; import org.chromium.components.embedder_support.view.ContentView; import org.chromium.content_public.browser.ImeAdapter; @@ -119,25 +120,6 @@ ViewGroup contentContainer, ControlContainer controlContainer); } - /** - * Observer interface for any object that needs to process touch events. - */ - public interface TouchEventObserver { - /** - * Determine if touch events should be forwarded to the observing object. - * Should return {@link true} if the object decided to consume the events. - * @param e {@link MotionEvent} object to process. - * @return {@code true} if the observer will process touch events going forward. - */ - boolean shouldInterceptTouchEvent(MotionEvent e); - - /** - * Handle touch events. - * @param e {@link MotionEvent} object to process. - */ - void handleTouchEvent(MotionEvent e); - } - private ObserverList<TouchEventObserver> mTouchEventObservers = new ObserverList<>(); private EventOffsetHandler mEventOffsetHandler;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java index 139b9e3..145e8021 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator.java
@@ -9,21 +9,24 @@ import android.os.Build; import android.view.ViewGroup; +import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import org.chromium.chrome.browser.ActivityTabProvider; -import org.chromium.chrome.browser.ActivityTabProvider.ActivityTabTabObserver; -import org.chromium.chrome.browser.SwipeRefreshHandler; -import org.chromium.chrome.browser.compositor.CompositorViewHolder; -import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; +import org.chromium.base.Callback; +import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.chrome.browser.layouts.LayoutManager; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver; +import org.chromium.chrome.browser.tab.CurrentTabObserver; +import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.browser_ui.widget.InsetObserverView; +import org.chromium.components.browser_ui.widget.TouchEventObserver; import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; + /** * Coordinator object for gesture navigation. */ @@ -34,7 +37,7 @@ private ViewGroup mParentView; private HistoryNavigationLayout mNavigationLayout; private InsetObserverView mInsetObserverView; - private ActivityTabTabObserver mActivityTabObserver; + private CurrentTabObserver mCurrentTabObserver; private ActivityLifecycleDispatcher mActivityLifecycleDispatcher; private BackActionDelegate mBackActionDelegate; private Tab mTab; @@ -44,28 +47,30 @@ private OverscrollGlowOverlay mOverscrollGlowOverlay; - private Runnable mInitRunnable; - private Runnable mCleanupRunnable; + private Callback<TouchEventObserver> mInitCallback; /** * Creates the coordinator for gesture navigation and initializes internal objects. + * @param window Window object. * @param lifecycleDispatcher Lifecycle dispatcher for the associated activity. - * @param compositorViewHolder Parent view for navigation layout. - * @param tabProvider Activity tab provider. + * @param parentView Parent view of the gesture navigation layout. + * @param requestRunnable Runnable executing the renderer update. + * @param tabSupplier Activity tab supplier. * @param insetObserverView View that provides information about the inset and inset * capabilities of the device. * @param backActionDelegate Delegate handling actions for back gesture. + * @param initRunnable Runnable to run when Navigation Handler is initialized. * @param layoutManager LayoutManager for handling overscroll glow effect as scene layer. * @return HistoryNavigationCoordinator object or null if not enabled via feature flag. */ public static HistoryNavigationCoordinator create(WindowAndroid window, - ActivityLifecycleDispatcher lifecycleDispatcher, - CompositorViewHolder compositorViewHolder, ActivityTabProvider tabProvider, + ActivityLifecycleDispatcher lifecycleDispatcher, ViewGroup parentView, + Runnable requestRunnable, ObservableSupplier<Tab> tabSupplier, InsetObserverView insetObserverView, BackActionDelegate backActionDelegate, - LayoutManagerImpl layoutManager) { + Callback<TouchEventObserver> initCallback, LayoutManager layoutManager) { HistoryNavigationCoordinator coordinator = new HistoryNavigationCoordinator(); - coordinator.init(window, lifecycleDispatcher, compositorViewHolder, tabProvider, - insetObserverView, backActionDelegate, layoutManager); + coordinator.init(window, lifecycleDispatcher, parentView, requestRunnable, tabSupplier, + insetObserverView, backActionDelegate, initCallback, layoutManager); return coordinator; } @@ -78,59 +83,49 @@ * Initializes the navigation layout and internal objects. */ private void init(WindowAndroid window, ActivityLifecycleDispatcher lifecycleDispatcher, - CompositorViewHolder compositorViewHolder, ActivityTabProvider tabProvider, + ViewGroup parentView, Runnable requestRunnable, ObservableSupplier<Tab> tabSupplier, InsetObserverView insetObserverView, BackActionDelegate backActionDelegate, - LayoutManagerImpl layoutManager) { - mOverscrollGlowOverlay = new OverscrollGlowOverlay(window, compositorViewHolder, - () -> compositorViewHolder.getLayoutManager().getActiveLayout().requestUpdate()); - mNavigationLayout = new HistoryNavigationLayout(compositorViewHolder.getContext(), - this::isNativePage, mOverscrollGlowOverlay, - (direction) -> mNavigationHandler.navigate(direction)); + Callback<TouchEventObserver> initCallback, LayoutManager layoutManager) { + mOverscrollGlowOverlay = new OverscrollGlowOverlay(window, parentView, requestRunnable); + mNavigationLayout = new HistoryNavigationLayout(parentView.getContext(), this::isNativePage, + mOverscrollGlowOverlay, (direction) -> mNavigationHandler.navigate(direction)); - mParentView = compositorViewHolder; + mParentView = parentView; mActivityLifecycleDispatcher = lifecycleDispatcher; mBackActionDelegate = backActionDelegate; lifecycleDispatcher.register(this); - compositorViewHolder.addView(mNavigationLayout); + parentView.addView(mNavigationLayout); - mActivityTabObserver = new ActivityTabProvider.ActivityTabTabObserver(tabProvider) { - @Override - protected void onObservingDifferentTab(Tab tab, boolean hint) { - if (mTab != null && mTab.isInitialized()) { - SwipeRefreshHandler.from(mTab).setNavigationCoordinator(null); - } - mTab = tab; - updateNavigationHandler(); - } + mCurrentTabObserver = new CurrentTabObserver(tabSupplier, + new EmptyTabObserver() { + @Override + public void onContentChanged(Tab tab) { + updateNavigationHandler(); + } - @Override - public void onContentChanged(Tab tab) { - updateNavigationHandler(); - } + @Override + public void onDestroyed(Tab tab) { + mTab = null; + updateNavigationHandler(); + } + }, + (tab) -> { + mTab = tab; + updateNavigationHandler(); + }); - @Override - public void onDestroyed(Tab tab) { - mTab = null; - updateNavigationHandler(); - } - }; - - mInitRunnable = () -> { - compositorViewHolder.addTouchEventObserver(mNavigationHandler); - }; - mCleanupRunnable = () -> { - compositorViewHolder.removeCallbacks(mUpdateNavigationStateRunnable); - if (mNavigationHandler != null) { - compositorViewHolder.removeTouchEventObserver(mNavigationHandler); - } - }; + mInitCallback = initCallback; // We wouldn't hear about the first tab until the content changed or we switched tabs // if tabProvider.get() != null. Do here what we do when tab switching happens. - if (tabProvider.get() != null) { - mTab = tabProvider.get(); + // Otherwise, just initialize |mEnabled| in preparation of the initialization of + // NavigationHandler for later tab switching/init. + if (tabSupplier.get() != null) { + mTab = tabSupplier.get(); onNavigationStateChanged(); + } else { + mEnabled = isFeatureEnabled(); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -141,6 +136,13 @@ GestureNavMetrics.logGestureType(isFeatureEnabled()); } + /** @return {@link TouchEventObserver} for gesture navigation component. */ + @Nullable + public TouchEventObserver getTouchEventObserver() { + // Can be null if gesture navigation was not triggered at all or already destroyed. + return mNavigationHandler; + } + private boolean isNativePage() { return mTab != null && mTab.isNativePage(); } @@ -192,7 +194,6 @@ mNavigationHandler.setTab(isDetached(mTab) ? null : mTab); } } - if (mTab != null) SwipeRefreshHandler.from(mTab).setNavigationCoordinator(this); } /** @@ -204,7 +205,7 @@ PropertyModelChangeProcessor.create( model, mNavigationLayout, GestureNavigationViewBinder::bind); mNavigationHandler = new NavigationHandler(model, mNavigationLayout, mBackActionDelegate); - mInitRunnable.run(); + mInitCallback.onResult(mNavigationHandler); } @Override @@ -269,16 +270,17 @@ * Destroy HistoryNavigationCoordinator object. */ public void destroy() { - if (mActivityTabObserver != null) { - mActivityTabObserver.destroy(); - mActivityTabObserver = null; + if (mCurrentTabObserver != null) { + mCurrentTabObserver.destroy(); + mCurrentTabObserver = null; } if (mInsetObserverView != null) { mInsetObserverView.removeObserver(this); mInsetObserverView = null; } - mCleanupRunnable.run(); mNavigationLayout = null; + mParentView.removeCallbacks(mUpdateNavigationStateRunnable); + if (mOverscrollGlowOverlay != null) { mOverscrollGlowOverlay.destroy(); mOverscrollGlowOverlay = null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationHandler.java index 18aab73..ee6f576 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/NavigationHandler.java
@@ -23,10 +23,10 @@ import androidx.annotation.IntDef; import androidx.annotation.VisibleForTesting; -import org.chromium.chrome.browser.compositor.CompositorViewHolder.TouchEventObserver; import org.chromium.chrome.browser.gesturenav.BackActionDelegate.ActionType; import org.chromium.chrome.browser.gesturenav.NavigationBubble.CloseTarget; import org.chromium.chrome.browser.tab.Tab; +import org.chromium.components.browser_ui.widget.TouchEventObserver; import org.chromium.ui.modelutil.PropertyModel; import java.lang.annotation.Retention;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java index 0e81ff3..0da7bce 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java
@@ -15,6 +15,8 @@ import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; import org.chromium.chrome.R; @@ -23,7 +25,6 @@ import org.chromium.components.infobars.ConfirmInfoBar; import org.chromium.components.infobars.InfoBarControlLayout; import org.chromium.components.infobars.InfoBarLayout; -import org.chromium.components.signin.base.AccountInfo; import org.chromium.ui.UiUtils; import java.util.ArrayList; @@ -91,7 +92,8 @@ } } - private final AccountInfo mAccountInfo; + private final @Nullable String mAccountFooterEmail; + private final @Nullable Bitmap mAccountFooterAvatar; private final long mNativeAutofillSaveCardInfoBar; private final List<CardDetail> mCardDetails = new ArrayList<>(); private int mIconDrawableId = -1; @@ -111,11 +113,15 @@ * @param linkText Link text to display in addition to the message. * @param buttonOk String to display on the OK button. * @param buttonCancel String to display on the Cancel button. - * @param accountInfo AccountInfo which includes user's email address and profile picture. + * @param accountFooterEmail The email to be shown on the footer, or null. The footer is + * only shown if both this and |accountFooterAvatar| are provided. + * @param accountFooterAvatar The avatar to be shown on the footer, or null. The footer is + * only shown if both this and |accountFooterEmail| are provided. */ private AutofillSaveCardInfoBar(long nativeAutofillSaveCardInfoBar, int iconId, Bitmap iconBitmap, String message, String linkText, String buttonOk, - String buttonCancel, boolean isGooglePayBrandingEnabled, AccountInfo accountInfo) { + String buttonCancel, boolean isGooglePayBrandingEnabled, + @Nullable String accountFooterEmail, @Nullable Bitmap accountFooterAvatar) { // If Google Pay branding is enabled, no icon is specified here; it is rather added in // |createContent|. This hides the ImageView that normally shows the icon and gets rid of // the left padding of the infobar content. @@ -126,7 +132,8 @@ mTitleText = message; mIsGooglePayBrandingEnabled = isGooglePayBrandingEnabled; mNativeAutofillSaveCardInfoBar = nativeAutofillSaveCardInfoBar; - mAccountInfo = accountInfo; + mAccountFooterEmail = accountFooterEmail; + mAccountFooterAvatar = accountFooterAvatar; } /** @@ -139,15 +146,20 @@ * @param linkText Link text to display in addition to the message. * @param buttonOk String to display on the OK button. * @param buttonCancel String to display on the Cancel button. - * @param accountInfo AccountInfo which includes user's email address and profile picture. + * @param accountFooterEmail The email to be shown on the footer, or null. The footer is + * only shown if both this and |accountFooterAvatar| are provided. + * @param accountFooterAvatar The avatar to be shown on the footer, or null. The footer is + * only shown if both this and |accountFooterEmail| are provided. * @return A new instance of the infobar. */ @CalledByNative private static AutofillSaveCardInfoBar create(long nativeAutofillSaveCardInfoBar, int iconId, Bitmap iconBitmap, String message, String linkText, String buttonOk, - String buttonCancel, boolean isGooglePayBrandingEnabled, AccountInfo accountInfo) { + String buttonCancel, boolean isGooglePayBrandingEnabled, + @Nullable String accountFooterEmail, @Nullable Bitmap accountFooterAvatar) { return new AutofillSaveCardInfoBar(nativeAutofillSaveCardInfoBar, iconId, iconBitmap, - message, linkText, buttonOk, buttonCancel, isGooglePayBrandingEnabled, accountInfo); + message, linkText, buttonOk, buttonCancel, isGooglePayBrandingEnabled, + accountFooterEmail, accountFooterAvatar); } /** @@ -233,8 +245,7 @@ if (ChromeFeatureList.isEnabled( ChromeFeatureList.AUTOFILL_ENABLE_SAVE_CARD_INFO_BAR_ACCOUNT_INDICATION_FOOTER) - && mAccountInfo != null && !TextUtils.isEmpty(mAccountInfo.getEmail()) - && mAccountInfo.getAccountImage() != null) { + && mAccountFooterEmail != null && mAccountFooterAvatar != null) { Resources res = layout.getResources(); int smallIconSize = res.getDimensionPixelSize(R.dimen.infobar_small_icon_size); int padding = res.getDimensionPixelOffset(R.dimen.infobar_padding); @@ -243,12 +254,12 @@ .inflate(R.layout.infobar_footer, null, false); TextView emailView = (TextView) footer.findViewById(R.id.infobar_footer_email); - emailView.setText(mAccountInfo.getEmail()); + emailView.setText(mAccountFooterEmail); RoundedCornerImageView profilePicView = (RoundedCornerImageView) footer.findViewById(R.id.infobar_footer_profile_pic); Bitmap resizedProfilePic = Bitmap.createScaledBitmap( - mAccountInfo.getAccountImage(), smallIconSize, smallIconSize, false); + mAccountFooterAvatar, smallIconSize, smallIconSize, false); profilePicView.setRoundedCorners( smallIconSize / 2, smallIconSize / 2, smallIconSize / 2, smallIconSize / 2); profilePicView.setImageBitmap(resizedProfilePic);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl.java index 64c2480d..bfde6a4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl.java
@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.ui.MediaCaptureOverlayController; import org.chromium.components.browser_ui.notifications.NotificationManagerProxy; import org.chromium.components.browser_ui.notifications.NotificationManagerProxyImpl; import org.chromium.components.browser_ui.notifications.NotificationMetadata; @@ -31,6 +32,7 @@ import org.chromium.components.webrtc.MediaCaptureNotificationUtil; import org.chromium.components.webrtc.MediaCaptureNotificationUtil.MediaType; import org.chromium.content_public.browser.WebContents; +import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; import java.util.HashSet; @@ -153,6 +155,18 @@ */ private void destroyNotification(int notificationId) { if (doesNotificationExist(notificationId)) { + if (mNotifications.get(notificationId) == MediaType.SCREEN_CAPTURE) { + final Tab tab = TabWindowManagerSingleton.getInstance().getTabById(notificationId); + if (tab != null) { + WindowAndroid window = tab.getWebContents().getTopLevelNativeWindow(); + MediaCaptureOverlayController overlayController = + MediaCaptureOverlayController.from(window); + if (overlayController != null) { + overlayController.stopCapture(tab); + } + } + } + mNotificationManager.cancel(NOTIFICATION_NAMESPACE, notificationId); mNotifications.delete(notificationId); updateSharedPreferencesEntry(notificationId, true); @@ -193,6 +207,18 @@ NotificationUmaTracker.getInstance().onNotificationShown( NotificationUmaTracker.SystemNotificationType.MEDIA_CAPTURE, notification.getNotification()); + + if (mediaType == MediaType.SCREEN_CAPTURE) { + final Tab tab = TabWindowManagerSingleton.getInstance().getTabById(notificationId); + if (tab != null) { + WindowAndroid window = tab.getWebContents().getTopLevelNativeWindow(); + MediaCaptureOverlayController overlayController = + MediaCaptureOverlayController.from(window); + if (overlayController != null) { + overlayController.startCapture(tab); + } + } + } } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java index c821850..30cdc51 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/SharingNotificationUtil.java
@@ -40,6 +40,8 @@ * @param id The notification id. * @param contentIntent The notification content intent. * @param deleteIntent The notification delete intent. + * @param confirmIntent The notification confirm intent. + * @param cancelIntent The notification cancel intent. * @param contentTitle The notification title text. * @param contentText The notification content text. * @param largeIconId The large notification icon resource id, 0 if not used. @@ -48,6 +50,7 @@ */ public static void showNotification(@SystemNotificationType int type, String group, int id, PendingIntentProvider contentIntent, PendingIntentProvider deleteIntent, + PendingIntentProvider confirmIntent, PendingIntentProvider cancelIntent, String contentTitle, String contentText, @DrawableRes int smallIconId, @DrawableRes int largeIconId, int color, boolean startsActivity) { Context context = ContextUtils.getApplicationContext(); @@ -67,17 +70,26 @@ .setAutoCancel(true) .setDefaults(Notification.DEFAULT_ALL); - if (startsActivity && BuildInfo.isAtLeastS()) { - // We can't use the NotificationIntentInterceptor to start Activities starting in - // Android S. Use the unmodified PendingIntent directly instead. - builder.setContentIntent(contentIntent.getPendingIntent()); - } else { - builder.setContentIntent(contentIntent); + if (contentIntent != null) { + if (startsActivity && BuildInfo.isAtLeastS()) { + // We can't use the NotificationIntentInterceptor to start Activities starting in + // Android S. Use the unmodified PendingIntent directly instead. + builder.setContentIntent(contentIntent.getPendingIntent()); + } else { + builder.setContentIntent(contentIntent); + } } - if (deleteIntent != null) { builder.setDeleteIntent(deleteIntent); } + if (confirmIntent != null) { + builder.addAction(R.drawable.ic_checkmark_24dp, resources.getString(R.string.ok), + confirmIntent, NotificationUmaTracker.ActionType.SHARING_CONFIRM); + } + if (cancelIntent != null) { + builder.addAction(R.drawable.ic_cancel_circle, resources.getString(R.string.cancel), + cancelIntent, NotificationUmaTracker.ActionType.SHARING_CANCEL); + } if (largeIconId != 0) { Bitmap largeIcon = BitmapFactory.decodeResource(resources, largeIconId);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java index ef5b10f..e618067 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallMessageHandler.java
@@ -59,7 +59,7 @@ NotificationUmaTracker.SystemNotificationType.CLICK_TO_CALL, NotificationConstants.GROUP_CLICK_TO_CALL, NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL_ERROR, /*contentIntent=*/null, - /*deleteIntent=*/null, + /*deleteIntent=*/null, /*confirmIntent=*/null, /*cancelIntent=*/null, context.getResources().getString( R.string.click_to_call_dialer_absent_notification_title), context.getResources().getString( @@ -108,7 +108,8 @@ NotificationUmaTracker.SystemNotificationType.CLICK_TO_CALL, NotificationConstants.GROUP_CLICK_TO_CALL, NotificationConstants.NOTIFICATION_ID_CLICK_TO_CALL, - getContentIntentProvider(phoneNumber), /*deleteIntent=*/null, contentTitle, + getContentIntentProvider(phoneNumber), /*deleteIntent=*/null, + /*confirmIntent=*/null, /*cancelIntent=*/null, contentTitle, context.getResources().getString(R.string.click_to_call_notification_text), R.drawable.ic_devices_16dp, R.drawable.ic_dialer_icon_blue_40dp, R.color.default_icon_color_blue, /*startsActivity=*/true);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java index a0d820a..c529b30 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java
@@ -212,8 +212,8 @@ NotificationUmaTracker.SystemNotificationType.SHARED_CLIPBOARD, NotificationConstants.GROUP_SHARED_CLIPBOARD, NotificationConstants.NOTIFICATION_ID_SHARED_CLIPBOARD_INCOMING, contentIntent, - /*deleteIntent=*/null, notificationTitle, - resources.getString(R.string.shared_clipboard_notification_text), + /*deleteIntent=*/null, /*confirmIntent=*/null, /*cancelIntent=*/null, + notificationTitle, resources.getString(R.string.shared_clipboard_notification_text), R.drawable.ic_devices_16dp, R.drawable.shared_clipboard_40dp, R.color.default_icon_color_blue, /*startsActivity=*/false); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java index 7b7f1fc..ce5b3ec 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java
@@ -25,8 +25,8 @@ * Handles Sms Fetcher messages and notifications for Android. */ public class SmsFetcherMessageHandler { - private static final String NOTIFICATION_ACTION_TAP = "sms_fetcher_notification.tap"; - private static final String NOTIFICATION_ACTION_DISMISS = "sms_fetcher_notification.dismiss"; + private static final String NOTIFICATION_ACTION_CONFIRM = "sms_fetcher_notification.confirm"; + private static final String NOTIFICATION_ACTION_CANCEL = "sms_fetcher_notification.cancel"; private static final String TAG = "SmsMessageHandler"; private static final boolean DEBUG = false; private static long sSmsFetcherMessageHandlerAndroid; @@ -42,18 +42,20 @@ boolean nativeIsDestroyed = sSmsFetcherMessageHandlerAndroid == 0; RecordHistogram.recordBooleanHistogram( "Sharing.SmsFetcherTapWithChromeDestroyed", nativeIsDestroyed); + SharingNotificationUtil.dismissNotification(NotificationConstants.GROUP_SMS_FETCHER, + NotificationConstants.NOTIFICATION_ID_SMS_FETCHER_INCOMING); // This could happen if the user manually swipes away Chrome from the task switcher or // the OS decides to destroy Chrome due to lack of memory etc. In these cases we just // close the notification. if (nativeIsDestroyed) return; switch (action) { - case NOTIFICATION_ACTION_TAP: - if (DEBUG) Log.d(TAG, "Notification tapped"); + case NOTIFICATION_ACTION_CONFIRM: + if (DEBUG) Log.d(TAG, "Notification confirmed"); SmsFetcherMessageHandlerJni.get().onConfirm( sSmsFetcherMessageHandlerAndroid, sOrigin); break; - case NOTIFICATION_ACTION_DISMISS: - if (DEBUG) Log.d(TAG, "Notification dismissed"); + case NOTIFICATION_ACTION_CANCEL: + if (DEBUG) Log.d(TAG, "Notification canceled"); SmsFetcherMessageHandlerJni.get().onDismiss( sSmsFetcherMessageHandlerAndroid, sOrigin); break; @@ -62,7 +64,8 @@ } /** - * Ask the user to tap the notification to verify the sms verification code. + * Ask users to interact with the notification to allow Chrome to submit the code to the remote + * device. * * @param oneTimeCode The one time code from SMS * @param origin The origin from the SMS @@ -75,14 +78,15 @@ sOrigin = origin; sSmsFetcherMessageHandlerAndroid = smsFetcherMessageHandlerAndroid; Context context = ContextUtils.getApplicationContext(); - PendingIntentProvider contentIntent = PendingIntentProvider.getBroadcast(context, - /*requestCode=*/0, - new Intent(context, NotificationReceiver.class).setAction(NOTIFICATION_ACTION_TAP), - PendingIntent.FLAG_UPDATE_CURRENT); - PendingIntentProvider deleteIntent = PendingIntentProvider.getBroadcast(context, + PendingIntentProvider confirmIntent = PendingIntentProvider.getBroadcast(context, /*requestCode=*/0, new Intent(context, NotificationReceiver.class) - .setAction(NOTIFICATION_ACTION_DISMISS), + .setAction(NOTIFICATION_ACTION_CONFIRM), + PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntentProvider cancelIntent = PendingIntentProvider.getBroadcast(context, + /*requestCode=*/0, + new Intent(context, NotificationReceiver.class) + .setAction(NOTIFICATION_ACTION_CANCEL), PendingIntent.FLAG_UPDATE_CURRENT); Resources resources = context.getResources(); String notificationTitle = remoteOs.equals("") @@ -93,9 +97,10 @@ SharingNotificationUtil.showNotification( NotificationUmaTracker.SystemNotificationType.SMS_FETCHER, NotificationConstants.GROUP_SMS_FETCHER, - NotificationConstants.NOTIFICATION_ID_SMS_FETCHER_INCOMING, contentIntent, - deleteIntent, notificationTitle, notificationText, R.drawable.ic_devices_48dp, - R.drawable.infobar_chrome, R.color.infobar_icon_drawable_color, + NotificationConstants.NOTIFICATION_ID_SMS_FETCHER_INCOMING, /*contentIntent=*/null, + /*deleteIntent=*/cancelIntent, confirmIntent, cancelIntent, notificationTitle, + notificationText, R.drawable.ic_devices_48dp, R.drawable.infobar_chrome, + R.color.infobar_icon_drawable_color, /*startsActivity=*/false); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java index c9e9f9d..42d0abc 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java
@@ -458,6 +458,18 @@ } /** + * Checks if recoverability of the trusted vault keys is degraded and user action is required, + * affecting currently enabled data types. + * + * @return true if recoverability is degraded. + */ + public boolean isTrustedVaultRecoverabilityDegraded() { + assert isEngineInitialized(); + return ProfileSyncServiceJni.get().isTrustedVaultRecoverabilityDegraded( + mNativeProfileSyncServiceAndroid); + } + + /** * @return Whether setting a custom passphrase is allowed. */ public boolean isCustomPassphraseAllowed() { @@ -634,6 +646,7 @@ boolean isTrustedVaultKeyRequired(long nativeProfileSyncServiceAndroid); boolean isTrustedVaultKeyRequiredForPreferredDataTypes( long nativeProfileSyncServiceAndroid); + boolean isTrustedVaultRecoverabilityDegraded(long nativeProfileSyncServiceAndroid); boolean isUsingExplicitPassphrase(long nativeProfileSyncServiceAndroid); boolean setDecryptionPassphrase(long nativeProfileSyncServiceAndroid, String passphrase); void setEncryptionPassphrase(long nativeProfileSyncServiceAndroid, String passphrase);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java index 456770e..538750d8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java
@@ -40,7 +40,6 @@ import org.chromium.chrome.browser.SyncFirstSetupCompleteSource; import org.chromium.chrome.browser.autofill.PersonalDataManager; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; -import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileAccountManagementMetrics; import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate; @@ -174,10 +173,7 @@ mIsFromSigninScreen = IntentUtils.safeGetBoolean(getArguments(), IS_FROM_SIGNIN_SCREEN, false); - getActivity().setTitle( - ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) - ? R.string.sync_category_title - : R.string.manage_sync_title); + getActivity().setTitle(R.string.sync_category_title); setHasOptionsMenu(true); if (mIsFromSigninScreen) { ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); @@ -212,20 +208,19 @@ SyncSettingsUtils.toOnClickListener(this, this::onTurnOffSyncClicked)); Profile profile = Profile.getLastUsedRegularProfile(); - if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) - && !mIsFromSigninScreen) { + if (!mIsFromSigninScreen) { // Child profiles should not be able to sign out. mTurnOffSync.setVisible(!profile.isChild()); findPreference(PREF_ADVANCED_CATEGORY).setVisible(true); /** - * If MOBILE_IDENTITY_CONSISTENCY is disabled, sync data type states are retained even - * if the user toggles 'Sync your Chrome data' off in {@link SyncAndServicesSettings} - * page. This leads to an UI error that shows that all data types are enabled to sync - * even though sync is shown as turned off in {@link ManageSyncSettings} page. - * This state is impossible to reach if MOBILE_IDENTITY_CONSISTENCY is enabled. - * TODO(https://crbug.com/1065029): This code will be removed after - * MOBILE_IDENTITY_CONSISTENCY has been rolled out and existing users have been migrated + * Prior to the launch of MOBILE_IDENTITY_CONSISTENCY, sync request was done through a + * toggle that has now been removed. Currently sync is requested if the user checks + * any data type to sync. If no data type is checked then sync is not requested. + * + * This code is should be kept in place until M104 so that the users that had toggled + * sync request off prior to MOBILE_IDENTITY_CONSISTENCY get a chance to migrate to the + * new flow. */ if (!ProfileSyncService.get().isSyncRequested()) { ProfileSyncService.get().setChosenDataTypes(false, new HashSet<>()); @@ -303,8 +298,7 @@ @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - if (!ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) - || !mIsFromSigninScreen) { + if (!mIsFromSigninScreen) { return super.onCreateView(inflater, container, savedInstanceState); } @@ -398,8 +392,7 @@ || (mSyncPaymentsIntegration.isChecked() && mSyncAutofill.isChecked())); // For child profiles sync should always be on. - if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) - && !Profile.getLastUsedRegularProfile().isChild()) { + if (!Profile.getLastUsedRegularProfile().isChild()) { boolean atLeastOneDataTypeEnabled = mSyncEverything.isChecked() || selectedModelTypes.size() > 0; if (mProfileSyncService.isSyncRequested() && !atLeastOneDataTypeEnabled) { @@ -714,6 +707,10 @@ SyncSettingsUtils.openTrustedVaultKeyRetrievalDialog( this, primaryAccountInfo, REQUEST_CODE_TRUSTED_VAULT_KEY_RETRIEVAL); return; + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING: + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS: + // TODO(crbug.com/1100279): Implement logic. + return; case SyncError.SYNC_SETUP_INCOMPLETE: mProfileSyncService.setSyncRequested(true); mProfileSyncService.setFirstSetupComplete(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java index 63bca304..f6ef6ba 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
@@ -523,6 +523,13 @@ } return; } + + if (mCurrentSyncError == SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING + || mCurrentSyncError + == SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS) { + // TODO(crbug.com/1100279): Implement logic. + return; + } } private static void removePreference(PreferenceGroup from, Preference preference) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncErrorCardPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncErrorCardPreference.java index dfa56fc0..a8b941bb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncErrorCardPreference.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncErrorCardPreference.java
@@ -171,23 +171,4 @@ public void onProfileDataUpdated(String accountEmail) { update(); } - - private boolean isTrustedVaultError() { - switch (mSyncError) { - case SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_EVERYTHING: - case SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS: - return true; - case SyncError.ANDROID_SYNC_DISABLED: - case SyncError.AUTH_ERROR: - case SyncError.CLIENT_OUT_OF_DATE: - case SyncError.OTHER_ERRORS: - case SyncError.PASSPHRASE_REQUIRED: - case SyncError.SYNC_SETUP_INCOMPLETE: - case SyncError.NO_ERROR: - return false; - default: - assert false : "Unknown sync error"; - return false; - } - } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java index 28bba2f..5fed1232 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncSettingsUtils.java
@@ -52,8 +52,10 @@ @IntDef({SyncError.NO_ERROR, SyncError.ANDROID_SYNC_DISABLED, SyncError.AUTH_ERROR, SyncError.PASSPHRASE_REQUIRED, SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_EVERYTHING, - SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS, SyncError.CLIENT_OUT_OF_DATE, - SyncError.SYNC_SETUP_INCOMPLETE, SyncError.OTHER_ERRORS}) + SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS, + SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING, + SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS, + SyncError.CLIENT_OUT_OF_DATE, SyncError.SYNC_SETUP_INCOMPLETE, SyncError.OTHER_ERRORS}) @Retention(RetentionPolicy.SOURCE) public @interface SyncError { int NO_ERROR = -1; @@ -62,8 +64,10 @@ int PASSPHRASE_REQUIRED = 2; int TRUSTED_VAULT_KEY_REQUIRED_FOR_EVERYTHING = 3; int TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS = 4; - int CLIENT_OUT_OF_DATE = 5; - int SYNC_SETUP_INCOMPLETE = 6; + int TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING = 5; + int TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS = 6; + int CLIENT_OUT_OF_DATE = 7; + int SYNC_SETUP_INCOMPLETE = 8; int OTHER_ERRORS = 128; } @@ -111,6 +115,13 @@ : SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS; } + if (profileSyncService.isEngineInitialized() + && profileSyncService.isTrustedVaultRecoverabilityDegraded()) { + return profileSyncService.isEncryptEverythingEnabled() + ? SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING + : SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS; + } + if (!profileSyncService.isFirstSetupComplete()) { return SyncError.SYNC_SETUP_INCOMPLETE; } @@ -140,6 +151,10 @@ return context.getString(R.string.hint_sync_retrieve_keys_for_everything); case SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS: return context.getString(R.string.hint_sync_retrieve_keys_for_passwords); + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING: + return context.getString(R.string.hint_sync_recoverability_degraded_for_everything); + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS: + return context.getString(R.string.hint_sync_recoverability_degraded_for_passwords); case SyncError.SYNC_SETUP_INCOMPLETE: return context.getString(R.string.hint_sync_settings_not_confirmed_description); case SyncError.NO_ERROR: @@ -164,6 +179,8 @@ return context.getString(R.string.passphrase_required_error_card_button); case SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_EVERYTHING: case SyncError.TRUSTED_VAULT_KEY_REQUIRED_FOR_PASSWORDS: + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING: + case SyncError.TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS: return context.getString(R.string.trusted_vault_error_card_button); case SyncError.SYNC_SETUP_INCOMPLETE: return context.getString(R.string.sync_promo_turn_on_sync); @@ -175,7 +192,6 @@ /** * Return a short summary of the current sync status. - * TODO(https://crbug.com/1129930): Refactor this method */ public static String getSyncStatusSummary(Context context) { if (!IdentityServicesProvider.get() @@ -227,7 +243,8 @@ return context.getString(R.string.sync_need_passphrase); } - if (profileSyncService.isTrustedVaultKeyRequiredForPreferredDataTypes()) { + if (profileSyncService.isTrustedVaultKeyRequiredForPreferredDataTypes() + || profileSyncService.isTrustedVaultRecoverabilityDegraded()) { return profileSyncService.isEncryptEverythingEnabled() ? context.getString(R.string.sync_error_card_title) : context.getString(R.string.password_sync_error_summary);
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 e59499d..88b917bf 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
@@ -21,12 +21,15 @@ import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.ActivityTabProvider.ActivityTabTabObserver; import org.chromium.chrome.browser.AppHooks; +import org.chromium.chrome.browser.SwipeRefreshHandler; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.banners.AppBannerInProductHelpController; import org.chromium.chrome.browser.banners.AppBannerInProductHelpControllerFactory; import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer; +import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; @@ -86,6 +89,7 @@ import org.chromium.chrome.features.start_surface.StartSurface; import org.chromium.components.browser_ui.bottomsheet.EmptyBottomSheetObserver; import org.chromium.components.browser_ui.util.ComposedBrowserControlsVisibilityDelegate; +import org.chromium.components.browser_ui.widget.TouchEventObserver; import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; import org.chromium.components.messages.MessageDispatcherProvider; import org.chromium.ui.base.ActivityWindowAndroid; @@ -98,6 +102,7 @@ private static boolean sEnableStatusIndicatorForTests; private final ObservableSupplierImpl<EphemeralTabCoordinator> mEphemeralTabCoordinatorSupplier; + private final RootUiTabObserver mRootUiTabObserver; private TabbedSystemUiCoordinator mSystemUiCoordinator; private @Nullable EmptyBackgroundViewWrapper mEmptyBackgroundViewWrapper; @@ -126,6 +131,38 @@ private int mStatusIndicatorHeight; private int mContinuousSearchHeight; + // Activity tab observer that updates the current tab used by various UI components. + private class RootUiTabObserver extends ActivityTabTabObserver { + private Tab mTab; + + private RootUiTabObserver(ActivityTabProvider activityTabProvider) { + super(activityTabProvider); + } + + @Override + public void onObservingDifferentTab(Tab tab, boolean hint) { + swapToTab(tab); + } + + private void swapToTab(Tab tab) { + if (mTab != null && !mTab.isDestroyed()) { + SwipeRefreshHandler.from(mTab).setNavigationCoordinator(null); + } + mTab = tab; + + if (tab != null) { + SwipeRefreshHandler.from(tab).setNavigationCoordinator( + mHistoryNavigationCoordinator); + } + } + + @Override + public void destroy() { + super.destroy(); + swapToTab(null); + } + } + /** * Construct a new TabbedRootUiCoordinator. * @param activity The activity whose UI the coordinator is responsible for. @@ -176,6 +213,7 @@ getAppBrowserControlsVisibilityDelegate().addDelegate( browserControlsManager.getBrowserVisibilityDelegate()); + mRootUiTabObserver = new RootUiTabObserver(tabProvider); } @Override @@ -208,6 +246,8 @@ mWebFeedFollowIntroController.destroy(); } + if (mRootUiTabObserver != null) mRootUiTabObserver.destroy(); + if (mAppBannerInProductHelpController != null) { AppBannerInProductHelpControllerFactory.detach(mAppBannerInProductHelpController); } @@ -217,6 +257,9 @@ } if (mHistoryNavigationCoordinator != null) { + TouchEventObserver obs = mHistoryNavigationCoordinator.getTouchEventObserver(); + CompositorViewHolder cvh = mActivity.getCompositorViewHolder(); + if (cvh != null && obs != null) cvh.removeTouchEventObserver(obs); mHistoryNavigationCoordinator.destroy(); mHistoryNavigationCoordinator = null; } @@ -297,10 +340,14 @@ public void onFinishNativeInitialization() { super.onFinishNativeInitialization(); assert mLayoutManager != null; + CompositorViewHolder cvh = mActivity.getCompositorViewHolder(); + ActivityTabProvider activityTabProvider = mActivity.getActivityTabProvider(); + mHistoryNavigationCoordinator = HistoryNavigationCoordinator.create( - mActivity.getWindowAndroid(), mActivity.getLifecycleDispatcher(), - mActivity.getCompositorViewHolder(), mActivity.getActivityTabProvider(), - mActivity.getInsetObserverView(), new BackActionDelegate() { + mActivity.getWindowAndroid(), mActivity.getLifecycleDispatcher(), cvh, + mCallbackController.makeCancelable( + () -> mLayoutManager.getActiveLayout().requestUpdate()), + activityTabProvider, mActivity.getInsetObserverView(), new BackActionDelegate() { @Override public @ActionType int getBackActionType(Tab tab) { if (tab.canGoBack()) return ActionType.NAVIGATE_BACK; @@ -316,7 +363,8 @@ // Back navigation gesture performs what the back button would do. mActivity.onBackPressed(); } - }, mLayoutManager); + }, cvh::addTouchEventObserver, mLayoutManager); + mRootUiTabObserver.swapToTab(activityTabProvider.get()); // TODO(twellington): Supply TabModelSelector as well and move initialization earlier. if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) { @@ -336,10 +384,10 @@ } if (EphemeralTabCoordinator.isSupported()) { - mEphemeralTabCoordinatorSupplier.set(new EphemeralTabCoordinator(mActivity, - mActivity.getWindowAndroid(), mActivity.getWindow().getDecorView(), - mActivity.getActivityTabProvider(), mActivity::getCurrentTabCreator, - getBottomSheetController(), true)); + mEphemeralTabCoordinatorSupplier.set( + new EphemeralTabCoordinator(mActivity, mActivity.getWindowAndroid(), + mActivity.getWindow().getDecorView(), activityTabProvider, + mActivity::getCurrentTabCreator, getBottomSheetController(), true)); } mIntentMetadataOneshotSupplier.onAvailable(mCallbackController.makeCancelable(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayController.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayController.java new file mode 100644 index 0000000..75c614c --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayController.java
@@ -0,0 +1,186 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.ui; + +import android.util.SparseArray; +import android.view.View; +import android.view.ViewGroup.MarginLayoutParams; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.chromium.base.UnownedUserData; +import org.chromium.base.UnownedUserDataKey; +import org.chromium.chrome.browser.tab.EmptyTabObserver; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabBrowserControlsOffsetHelper; +import org.chromium.ui.base.WindowAndroid; + +/** + * This class manages the visibility of an overlay border when tab capture is ongoing. + * The border will be visible if any of the captured/tracked tabs are user interactible + * (e.g. visible with no overlays hiding the content), and hidden otherwise. It attempts + * to respond to control state events to resize the UI as the size of the currently + * visible captured tab is changed. + */ +public class MediaCaptureOverlayController implements UnownedUserData { + private static final UnownedUserDataKey<MediaCaptureOverlayController> KEY = + new UnownedUserDataKey<MediaCaptureOverlayController>( + MediaCaptureOverlayController.class); + + private final CaptureOverlayTabObserver mTabObserver = new CaptureOverlayTabObserver(); + + private View mOverlayView; + private SparseArray<Tab> mCapturedTabs = new SparseArray<Tab>(); + private Tab mVisibleTab; + + private class CaptureOverlayTabObserver extends EmptyTabObserver { + /** + * When the Tab Switcher UI is summoned this is fired; though this does + * not get fired when the omnibox appears (that is currently handled due + * to the positioning of the element in the view hierarchy). The tab + * remains not interactible until it is switched back to. + */ + @Override + public void onInteractabilityChanged(Tab tab, boolean isInteractable) { + // There are two cases that we need to handle: + // 1) The currently visible tab is becoming invisible + // 2) A new tab is becoming visible + if (isInteractable && tab != mVisibleTab) { + setVisibleTab(tab); + } else if (!isInteractable && tab == mVisibleTab) { + clearVisibleTab(); + } + } + + @Override + public void onBrowserControlsOffsetChanged(Tab tab, int topControlsOffsetY, + int bottomControlsOffsetY, int contentOffsetY, int topControlsMinHeightOffsetY, + int bottomControlsMinHeightOffsetY) { + if (tab == mVisibleTab) updateMargins(); + } + + @Override + public void onDestroyed(Tab tab) { + stopCapture(tab); + } + } + + /** + * Get the Activity's {@link MediaCaptureOverlayController} from the provided {@link + * WindowAndroid}. + * @param window The window to get the manager from. + * @return The Activity's {@link MediaCaptureOverlayController}. + */ + public static @Nullable MediaCaptureOverlayController from(WindowAndroid window) { + if (window == null) return null; + return KEY.retrieveDataFromHost(window.getUnownedUserDataHost()); + } + + /** + * Make this instance of MediaCaptureOverlayController available through the activity's window. + * @param window A {@link WindowAndroid} to attach to. + * @param manager The {@link MediaCaptureOverlayController} to attach. + */ + private static void attach(WindowAndroid window, MediaCaptureOverlayController overlay) { + KEY.attachToHost(window.getUnownedUserDataHost(), overlay); + } + + /** + * Detach the provided MediaCaptureOverlayController from any host it is associated with. + * @param manager The {@link MediaCaptureOverlayController} to detach. + */ + private static void detach(MediaCaptureOverlayController overlay) { + KEY.detachFromAllHosts(overlay); + } + + public MediaCaptureOverlayController(WindowAndroid window, View overlayView) { + mOverlayView = overlayView; + attach(window, this); + } + + /** + * Mark that the provided {@link Tab} is being captured and begin tracking it's state + * to determine whether and at what size the CaptureOverlay needs to be shown. + * @param capturedTab A {@link Tab} which is being captured and should have the overlay shown + * while it is active. + */ + public void startCapture(Tab capturedTab) { + int tabId = capturedTab.getId(); + if (mCapturedTabs.indexOfKey(tabId) >= 0) return; + + capturedTab.addObserver(mTabObserver); + mCapturedTabs.put(tabId, capturedTab); + + if (capturedTab.isUserInteractable()) setVisibleTab(capturedTab); + } + + /** + * Mark that the provided {@link Tab} is no longer being captured, and that the capture + * overlay should no longer appear when it is active. + * @param capturedTab A {@link Tab} which is no longer being captured and should have the + * overlay hidden while it is active. + */ + public void stopCapture(Tab capturedTab) { + int tabId = capturedTab.getId(); + if (mCapturedTabs.indexOfKey(tabId) < 0) return; + + capturedTab.removeObserver(mTabObserver); + mCapturedTabs.remove(tabId); + + if (capturedTab == mVisibleTab) clearVisibleTab(); + } + + /** + * Mark that the provided tab is the visible tab. This is the only tab that will be referenced + * when determining the size of the overlay to show. This also forces the overlay visible if it + * is not. + */ + private void setVisibleTab(@NonNull Tab tab) { + mVisibleTab = tab; + updateMargins(); + mOverlayView.setVisibility(View.VISIBLE); + } + + /** + * Mark that the current visible tab is no longer visible and immediately hide the overlay. + */ + private void clearVisibleTab() { + mOverlayView.setVisibility(View.GONE); + mVisibleTab = null; + } + + /** + * If we have an overlay, update the margins/size of the overlay border to ensure that they + * surround the tab content. + */ + private void updateMargins() { + if (mVisibleTab == null) return; + + TabBrowserControlsOffsetHelper offsetHelper = + TabBrowserControlsOffsetHelper.get(mVisibleTab); + if (!offsetHelper.offsetInitialized()) return; + + MarginLayoutParams params = (MarginLayoutParams) mOverlayView.getLayoutParams(); + params.topMargin = offsetHelper.contentOffset(); + params.bottomMargin = offsetHelper.bottomControlsOffset(); + mOverlayView.setLayoutParams(params); + } + + /** + * Called by the {@link RootUiCoordinator}/owner of this object, when it should no longer be + * used or queryable. Any overlays will be immediately hidden, and all tracked tabs will be + * unsubscribed from. + */ + public void destroy() { + for (int i = 0; i < mCapturedTabs.size(); i++) { + mCapturedTabs.valueAt(i).removeObserver(mTabObserver); + } + mCapturedTabs.clear(); + clearVisibleTab(); + mOverlayView = null; + detach(this); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java index 8c03a21..6c92d82 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -196,6 +196,7 @@ protected Supplier<Tab> mStartSurfaceParentTabSupplier; @Nullable private VoiceRecognitionHandler.Observer mMicStateObserver; + private MediaCaptureOverlayController mCaptureController; /** * Create a new {@link RootUiCoordinator} for the given activity. @@ -380,6 +381,11 @@ mTabModelSelectorSupplier = null; } + if (mCaptureController != null) { + mCaptureController.destroy(); + mCaptureController = null; + } + mActivity = null; } @@ -454,6 +460,9 @@ }; VrModuleProvider.registerVrModeObserver(mVrModeObserver); + mCaptureController = new MediaCaptureOverlayController( + mActivity.getWindowAndroid(), mActivity.findViewById(R.id.capture_overlay)); + // Ensure the bottom sheet's container has been laid out at least once before hiding it. // TODO(1196804): This should be owned by the BottomSheetControllerImpl, but there are some // complexities around the order of events resulting from waiting for layout.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialog.java index d7d2abe..1a057977 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialog.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialog.java
@@ -73,15 +73,21 @@ WebApkIconNameUpdateCustomView dialogCustomView = (WebApkIconNameUpdateCustomView) LayoutInflaterUtils.inflate( context, R.layout.webapk_icon_name_update_dialog, null); + // Always show the icon, because the dialog looks weird if only WebappInfo#shortname or + // WebappInfo#name is changing. dialogCustomView.configureIcons( currentAppIcon, updatedAppIcon, oldIconAdaptive, newIconAdaptive); - if (shortNameChanging) { - dialogCustomView.configureShortNames(oldAppShortName, newAppShortName); - } if (nameChanging) { dialogCustomView.configureNames(oldAppName, newAppName); } + // Show the webapp short name in the scenario that neither the webapp short name nor the web + // app name has changed. This is to make it clearer which app is changing its identity in + // this scenario. + if (shortNameChanging || !nameChanging) { + dialogCustomView.configureShortNames(oldAppShortName, newAppShortName); + } + PropertyModel dialogModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) .with(ModalDialogProperties.CONTROLLER, this)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java index 1eb1761b..17fd9c0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcher.java
@@ -115,10 +115,10 @@ protected void onDataAvailable(String manifestStartUrl, String scopeUrl, String name, String shortName, String primaryIconUrl, String primaryIconMurmur2Hash, Bitmap primaryIconBitmap, boolean isPrimaryIconMaskable, String splashIconUrl, - String splashIconMurmur2Hash, Bitmap splashIconBitmap, String[] iconUrls, - @WebDisplayMode int displayMode, int orientation, long themeColor, long backgroundColor, - String shareAction, String shareParamsTitle, String shareParamsText, - boolean isShareMethodPost, boolean isShareEncTypeMultipart, + String splashIconMurmur2Hash, Bitmap splashIconBitmap, boolean isSplashIconMaskable, + String[] iconUrls, @WebDisplayMode int displayMode, int orientation, long themeColor, + long backgroundColor, String shareAction, String shareParamsTitle, + String shareParamsText, boolean isShareMethodPost, boolean isShareEncTypeMultipart, String[] shareParamsFileNames, String[][] shareParamsAccepts, String[][] shortcuts) { Context appContext = ContextUtils.getApplicationContext(); @@ -155,7 +155,7 @@ new WebappIcon(primaryIconBitmap), new WebappIcon(splashIconBitmap), name, shortName, displayMode, orientation, mOldInfo.source(), themeColor, backgroundColor, defaultBackgroundColor, isPrimaryIconMaskable, - false /* isSplashIconMaskable */, mOldInfo.webApkPackageName(), + isSplashIconMaskable, mOldInfo.webApkPackageName(), mOldInfo.shellApkVersion(), mOldInfo.manifestUrl(), manifestStartUrl, WebApkDistributor.BROWSER, iconUrlToMurmur2HashMap, shareTarget, mOldInfo.shouldForceNavigation(), mOldInfo.isSplashProvidedByWebApk(), null,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java index ce43a4b..5df6cf94 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkUpdateManager.java
@@ -526,12 +526,12 @@ WebApkUpdateManagerJni.get().storeWebApkUpdateRequestToFile(updateRequestPath, info.manifestStartUrl(), info.scopeUrl(), info.name(), info.shortName(), primaryIconUrl, info.icon().bitmap(), info.isIconAdaptive(), splashIconUrl, - info.splashIcon().bitmap(), iconUrls, iconHashes, info.displayMode(), - info.orientation(), info.toolbarColor(), info.backgroundColor(), shareTargetAction, - shareTargetParamTitle, shareTargetParamText, shareTargetIsMethodPost, - shareTargetIsEncTypeMultipart, shareTargetParamFileNames, shareTargetParamAccepts, - shortcuts, info.manifestUrl(), info.webApkPackageName(), versionCode, - isManifestStale, updateReasonsArray, callback); + info.splashIcon().bitmap(), info.isSplashIconMaskable(), iconUrls, iconHashes, + info.displayMode(), info.orientation(), info.toolbarColor(), info.backgroundColor(), + shareTargetAction, shareTargetParamTitle, shareTargetParamText, + shareTargetIsMethodPost, shareTargetIsEncTypeMultipart, shareTargetParamFileNames, + shareTargetParamAccepts, shortcuts, info.manifestUrl(), info.webApkPackageName(), + versionCode, isManifestStale, updateReasonsArray, callback); } @NativeMethods @@ -539,14 +539,14 @@ public void storeWebApkUpdateRequestToFile(String updateRequestPath, String startUrl, String scope, String name, String shortName, String primaryIconUrl, Bitmap primaryIcon, boolean isPrimaryIconMaskable, String splashIconUrl, - Bitmap splashIcon, String[] iconUrls, String[] iconHashes, - @WebDisplayMode int displayMode, int orientation, long themeColor, - long backgroundColor, String shareTargetAction, String shareTargetParamTitle, - String shareTargetParamText, boolean shareTargetParamIsMethodPost, - boolean shareTargetParamIsEncTypeMultipart, String[] shareTargetParamFileNames, - Object[] shareTargetParamAccepts, String[][] shortcuts, String manifestUrl, - String webApkPackage, int webApkVersion, boolean isManifestStale, - int[] updateReasons, Callback<Boolean> callback); + Bitmap splashIcon, boolean isSplashIconMaskable, String[] iconUrls, + String[] iconHashes, @WebDisplayMode int displayMode, int orientation, + long themeColor, long backgroundColor, String shareTargetAction, + String shareTargetParamTitle, String shareTargetParamText, + boolean shareTargetParamIsMethodPost, boolean shareTargetParamIsEncTypeMultipart, + String[] shareTargetParamFileNames, Object[] shareTargetParamAccepts, + String[][] shortcuts, String manifestUrl, String webApkPackage, int webApkVersion, + boolean isManifestStale, int[] updateReasons, Callback<Boolean> callback); public void updateWebApkFromFile(String updateRequestPath, WebApkUpdateCallback callback); } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java index d0196b38..815f9e0 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FakeProfileSyncService.java
@@ -23,6 +23,7 @@ private boolean mPassphraseRequiredForPreferredDataTypes; private boolean mTrustedVaultKeyRequired; private boolean mTrustedVaultKeyRequiredForPreferredDataTypes; + private boolean mTrustedVaultRecoverabilityDegraded; private boolean mEncryptEverythingEnabled; private boolean mRequiresClientUpgrade; private Set<Integer> mChosenTypes = new HashSet<>(); @@ -113,6 +114,15 @@ } @Override + public boolean isTrustedVaultRecoverabilityDegraded() { + return mTrustedVaultRecoverabilityDegraded; + } + + public void setTrustedVaultRecoverabilityDegraded(boolean recoverabilityDegraded) { + mTrustedVaultRecoverabilityDegraded = recoverabilityDegraded; + } + + @Override public boolean isEncryptEverythingEnabled() { return mEncryptEverythingEnabled; }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java index a8e35f7..d880c4d 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java
@@ -36,7 +36,6 @@ import org.chromium.base.test.util.FlakyTest; import org.chromium.chrome.R; import org.chromium.chrome.browser.autofill.PersonalDataManager; -import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.settings.SettingsActivity; import org.chromium.chrome.browser.settings.SettingsActivityTestRule; @@ -47,7 +46,6 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.util.ActivityTestUtils; import org.chromium.chrome.test.util.ChromeRenderTestRule; -import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.sync.ModelType; @@ -159,7 +157,6 @@ @Test @SmallTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testUnsettingAllDataTypesStopsSync() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); SyncTestUtil.waitForSyncFeatureActive(); @@ -178,7 +175,6 @@ @Test @SmallTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testSettingAnyDataTypeStartsSync() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setChosenDataTypes(false, new HashSet<>()); @@ -195,7 +191,6 @@ @Test @SmallTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testTogglingSyncEverythingStartsSync() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setChosenDataTypes(false, new HashSet<>()); @@ -210,7 +205,6 @@ @Test @SmallTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testTogglingSyncEverythingDoesNotStopSync() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setChosenDataTypes(false, new HashSet<>()); @@ -226,7 +220,6 @@ @Test @LargeTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testPressingTurnOffSyncAndSignOutShowsSignOutDialog() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setChosenDataTypes(true, null); @@ -549,7 +542,6 @@ @Test @SmallTest @Feature({"Sync"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testAdvancedSyncFlowPreferencesAndBottomBarShown() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); SyncTestUtil.waitForSyncFeatureActive(); @@ -566,7 +558,6 @@ @Test @LargeTest @Feature({"Sync", "RenderTest"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testAdvancedSyncFlowTopView() throws Exception { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); SyncTestUtil.waitForSyncFeatureActive(); @@ -578,7 +569,6 @@ @Test @LargeTest @Feature({"Sync", "RenderTest"}) - @Features.EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY) public void testAdvancedSyncFlowBottomView() throws Exception { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); SyncTestUtil.waitForSyncFeatureActive(); @@ -597,8 +587,6 @@ } private ManageSyncSettings startManageSyncPreferencesFromSyncConsentFlow() { - Assert.assertTrue( - ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)); mSettingsActivity = mSettingsActivityTestRule.startSettingsActivity( ManageSyncSettings.createArguments(true)); return mSettingsActivityTestRule.getFragment();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncAndServicesSettingsWithFakeProfileSyncServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncAndServicesSettingsWithFakeProfileSyncServiceTest.java index 27ed4d8..970fce4 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncAndServicesSettingsWithFakeProfileSyncServiceTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncAndServicesSettingsWithFakeProfileSyncServiceTest.java
@@ -54,6 +54,22 @@ Assert.assertNotNull("Sync error card should be shown", getSyncErrorCard(fragment)); } + @Test + @LargeTest + @Feature({"Sync", "Preferences"}) + public void testTrustedVaultRecoverabilityDegradedShowsSyncErrorCard() throws Exception { + FakeProfileSyncService fakeProfileSyncService = + (FakeProfileSyncService) mSyncTestRule.getProfileSyncService(); + mSyncTestRule.setUpAccountAndEnableSyncForTesting(); + SyncTestUtil.waitForSyncFeatureActive(); + fakeProfileSyncService.setEngineInitialized(true); + fakeProfileSyncService.setTrustedVaultRecoverabilityDegraded(true); + + SyncAndServicesSettings fragment = startSyncAndServicesPreferences(); + + Assert.assertNotNull("Sync error card should be shown", getSyncErrorCard(fragment)); + } + private SyncAndServicesSettings startSyncAndServicesPreferences() { mSettingsActivityTestRule.startSettingsActivity(); return mSettingsActivityTestRule.getFragment();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncErrorCardPreferenceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncErrorCardPreferenceTest.java index b50df77..d4642448 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncErrorCardPreferenceTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncErrorCardPreferenceTest.java
@@ -218,6 +218,52 @@ @LargeTest @Feature("RenderTest") @ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class) + public void testSyncErrorCardForTrustedVaultRecoverabilityDegradedForEverything( + boolean nightModeEnabled) throws Exception { + mFakeProfileSyncService.setEngineInitialized(true); + mFakeProfileSyncService.setTrustedVaultRecoverabilityDegraded(true); + mFakeProfileSyncService.setEncryptEverythingEnabled(true); + mAccountManagerTestRule.addTestAccountThenSigninAndEnableSync(mFakeProfileSyncService); + TestThreadUtils.runOnUiThreadBlocking( + () + -> Assert.assertEquals( + "TRUSTED_VAULT_RECOVERABILITY_DEGRADED SyncError should be set", + SyncSettingsUtils.SyncError + .TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_EVERYTHING, + SyncSettingsUtils.getSyncError())); + + mSettingsActivityTestRule.startSettingsActivity(); + mRenderTestRule.render(getPersonalizedSyncPromoView(), + "sync_error_card_trusted_vault_recoverability_degraded_for_everything"); + } + + @Test + @LargeTest + @Feature("RenderTest") + @ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class) + public void testSyncErrorCardForTrustedVaultRecoverabilityDegradedForPasswords( + boolean nightModeEnabled) throws Exception { + mFakeProfileSyncService.setEngineInitialized(true); + mFakeProfileSyncService.setTrustedVaultRecoverabilityDegraded(true); + mFakeProfileSyncService.setEncryptEverythingEnabled(false); + mAccountManagerTestRule.addTestAccountThenSigninAndEnableSync(mFakeProfileSyncService); + TestThreadUtils.runOnUiThreadBlocking( + () + -> Assert.assertEquals( + "TRUSTED_VAULT_RECOVERABILITY_DEGRADED SyncError should be set", + SyncSettingsUtils.SyncError + .TRUSTED_VAULT_RECOVERABILITY_DEGRADED_FOR_PASSWORDS, + SyncSettingsUtils.getSyncError())); + + mSettingsActivityTestRule.startSettingsActivity(); + mRenderTestRule.render(getPersonalizedSyncPromoView(), + "sync_error_card_trusted_vault_recoverability_degraded_for_passwords"); + } + + @Test + @LargeTest + @Feature("RenderTest") + @ParameterAnnotations.UseMethodParameter(NightModeTestUtils.NightModeParams.class) public void testSyncErrorCardForSyncSetupIncomplete(boolean nightModeEnabled) throws Exception { // Passing a null ProfileSyncService instance here would sign-in the user but // FirstSetupComplete will be unset.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayControllerTest.java new file mode 100644 index 0000000..e4dd9a64 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ui/MediaCaptureOverlayControllerTest.java
@@ -0,0 +1,165 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.ui; + +import android.support.test.InstrumentationRegistry; +import android.view.View; + +import androidx.test.filters.SmallTest; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.CriteriaHelper; +import org.chromium.base.test.util.Restriction; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.ChromeTabbedActivity; +import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.chrome.test.ChromeTabbedActivityTestRule; +import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule; +import org.chromium.chrome.test.util.ChromeTabUtils; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.ui.test.util.UiRestriction; + +import java.util.concurrent.TimeoutException; + +/** + * Tests for MediaCaptureOverlayController. + */ +@RunWith(ChromeJUnit4ClassRunner.class) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) +@Batch(Batch.PER_CLASS) +public class MediaCaptureOverlayControllerTest { + @ClassRule + public static final ChromeTabbedActivityTestRule sActivityTestRule = + new ChromeTabbedActivityTestRule(); + @Rule + public final BlankCTATabInitialStateRule mInitialStateRule = + new BlankCTATabInitialStateRule(sActivityTestRule, false); + private ChromeTabbedActivity mActivity; + + private MediaCaptureOverlayController mController; + private View mOverlayView; + + @Before + public void setUp() throws Exception { + mActivity = sActivityTestRule.getActivity(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + mController = MediaCaptureOverlayController.from(mActivity.getWindowAndroid()); + }); + Assert.assertNotNull(mController); + mOverlayView = mActivity.findViewById(R.id.capture_overlay); + } + + public Tab openNewTab() { + // Launch a new tab in the foreground. + ChromeTabUtils.newTabFromMenu(InstrumentationRegistry.getInstrumentation(), mActivity); + return mActivity.getActivityTab(); + } + + public void waitForOverlayVisibility(boolean visible) { + CriteriaHelper.pollUiThread(() -> { + return visible ? (mOverlayView.getVisibility() == View.VISIBLE) + : (mOverlayView.getVisibility() != View.VISIBLE); + }, "Overlay did not reach desired visibility in the alloted time."); + } + + @Test + @SmallTest + @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) + public void testSimpleCapture() { + Tab tab = mActivity.getActivityTab(); + + // Before capture starts the overlay should not be visible. + waitForOverlayVisibility(false); + + // Once capture starts the overlay should be visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(tab)); + waitForOverlayVisibility(true); + + // Once capture stops the overlay should no longer be visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.stopCapture(tab)); + waitForOverlayVisibility(false); + } + + @Test + @SmallTest + @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) + public void testShowHideWithOverview() throws TimeoutException { + Tab tab = mActivity.getActivityTab(); + + // Start capturing the tab and assert that the overlay is visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(tab)); + waitForOverlayVisibility(true); + + // Summon the overview, and assert that the overlay is no longer visible. + TestThreadUtils.runOnUiThreadBlocking( + () -> mActivity.getLayoutManager().showOverview(false)); + waitForOverlayVisibility(false); + + // Now hide the overview and assert that it becomes visible again. + TestThreadUtils.runOnUiThreadBlocking( + () -> mActivity.getLayoutManager().hideOverview(false)); + waitForOverlayVisibility(true); + } + + @Test + @SmallTest + @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) + public void testCloseTabStopsOverlay() { + Tab tab = mActivity.getActivityTab(); + + // Start capturing the tab and assert that the overlay is visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(tab)); + waitForOverlayVisibility(true); + + // Now close the tab and assert that the overlay disappears. + ChromeTabUtils.closeCurrentTab(InstrumentationRegistry.getInstrumentation(), mActivity); + waitForOverlayVisibility(false); + } + + @Test + @SmallTest + @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) + public void testSwitchToNonCapturedTab() throws TimeoutException { + Tab firstTab = mActivity.getActivityTab(); + + // Start capturing the tab and assert that the overlay is visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(firstTab)); + waitForOverlayVisibility(true); + + // Now open a new tab and assert that the overlay disappears. + Tab secondTab = openNewTab(); + waitForOverlayVisibility(false); + } + + @Test + @SmallTest + @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) + public void testStopOtherCapturedTab() throws TimeoutException { + Tab firstTab = mActivity.getActivityTab(); + + // Start capturing the tab and assert that the overlay is visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(firstTab)); + waitForOverlayVisibility(true); + + // Now open a new tab and begin capturing it and assert that the overlay becomes visible. + Tab secondTab = openNewTab(); + TestThreadUtils.runOnUiThreadBlocking(() -> mController.startCapture(secondTab)); + waitForOverlayVisibility(true); + + // Stop capturing the non-visible tab, and then assert that the overlay is still visible. + TestThreadUtils.runOnUiThreadBlocking(() -> mController.stopCapture(firstTab)); + waitForOverlayVisibility(true); + } +}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java index 0e2abee..ccf400d 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java
@@ -52,9 +52,11 @@ public static DialogParams createDefault() { DialogParams dialogParams = new DialogParams(); dialogParams.iconChanged = false; + dialogParams.expectIconShownAnyway = false; dialogParams.bitmapBefore = null; dialogParams.bitmapAfter = null; dialogParams.shortNameChanged = false; + dialogParams.expectShortNameShownAnyway = false; dialogParams.shortNameBefore = ""; dialogParams.shortNameAfter = ""; dialogParams.nameChanged = false; @@ -64,9 +66,11 @@ } public boolean iconChanged; + public boolean expectIconShownAnyway; public Bitmap bitmapBefore; public Bitmap bitmapAfter; public boolean shortNameChanged; + public boolean expectShortNameShownAnyway; public String shortNameBefore; public String shortNameAfter; public boolean nameChanged; @@ -136,17 +140,27 @@ dialogParams.bitmapBefore, dialogParams.bitmapAfter, false, false, this::onResult); - Assert.assertEquals(dialogParams.shortNameChanged ? dialogParams.shortNameBefore : null, + Assert.assertEquals( + dialogParams.shortNameChanged || dialogParams.expectShortNameShownAnyway + ? dialogParams.shortNameBefore + : null, getUpdateDialogAppNameLabel(R.id.short_app_name_old)); - Assert.assertEquals(dialogParams.shortNameChanged ? dialogParams.shortNameAfter : null, + Assert.assertEquals( + dialogParams.shortNameChanged || dialogParams.expectShortNameShownAnyway + ? dialogParams.shortNameAfter + : null, getUpdateDialogAppNameLabel(R.id.short_app_name_new)); Assert.assertEquals(dialogParams.nameChanged ? dialogParams.nameBefore : null, getUpdateDialogAppNameLabel(R.id.app_name_old)); Assert.assertEquals(dialogParams.nameChanged ? dialogParams.nameAfter : null, getUpdateDialogAppNameLabel(R.id.app_name_new)); - Assert.assertEquals(dialogParams.iconChanged ? dialogParams.bitmapBefore : null, + Assert.assertEquals(dialogParams.iconChanged || dialogParams.expectIconShownAnyway + ? dialogParams.bitmapBefore + : null, getUpdateDialogBitmap(R.id.app_icon_old)); - Assert.assertEquals(dialogParams.iconChanged ? dialogParams.bitmapAfter : null, + Assert.assertEquals(dialogParams.iconChanged || dialogParams.expectIconShownAnyway + ? dialogParams.bitmapAfter + : null, getUpdateDialogBitmap(R.id.app_icon_new)); modalDialogManager.getCurrentPresenterForTest().dismissCurrentDialog(expectAccept @@ -170,6 +184,8 @@ dialogParams.iconChanged = true; dialogParams.bitmapBefore = blue; dialogParams.bitmapAfter = red; + // Short name is force-shown when icon changes. + dialogParams.expectShortNameShownAnyway = true; verifyValues(/* expectAccept= */ true, dialogParams); // Test only short name changing. @@ -177,6 +193,8 @@ dialogParams.shortNameChanged = true; dialogParams.shortNameBefore = "short1"; dialogParams.shortNameAfter = "short2"; + // Icons always show, even if unchanged. + dialogParams.expectIconShownAnyway = true; verifyValues(/* expectAccept= */ true, dialogParams); // Test only long name changing. @@ -184,6 +202,8 @@ dialogParams.nameChanged = true; dialogParams.nameBefore = "name1"; dialogParams.nameAfter = "name2"; + // Icons always show, even if unchanged. + dialogParams.expectIconShownAnyway = true; verifyValues(/* expectAccept= */ true, dialogParams); // Test only short name and icon changing.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java index 6956f9c..799c01cd0 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java
@@ -53,7 +53,7 @@ */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE) -@Features.EnableFeatures({ChromeFeatureList.WEB_FEED}) +@Features.EnableFeatures({ChromeFeatureList.WEB_FEED, ChromeFeatureList.INTEREST_FEED_V2_HEARTS}) public class FeedSurfaceMediatorTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @@ -103,6 +103,7 @@ when(mWebFeedBridgeJniMock.isWebFeedSubscriber()).thenReturn(true); when(mIdentityService.getSigninManager(any(Profile.class))).thenReturn(mSigninManager); when(mSigninManager.getIdentityManager()).thenReturn(mIdentityManager); + when(mIdentityManager.hasPrimaryAccount()).thenReturn(true); when(mFeedSurfaceCoordinator.getRecyclerView()).thenReturn(new RecyclerView(mActivity)); when(mFeedSurfaceCoordinator.getStream()).thenReturn(null, mStream); when(mFeedSurfaceCoordinator.createFeedStream(anyBoolean())).thenReturn(mStream);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java index 81fa8ba..b6355ce 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java
@@ -50,6 +50,8 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileJni; +import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; +import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelFilter; @@ -59,6 +61,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.components.signin.identitymanager.IdentityManager; import org.chromium.components.webapps.AppBannerManager; import org.chromium.content.browser.ContentFeatureListImpl; import org.chromium.content.browser.ContentFeatureListImplJni; @@ -143,6 +146,12 @@ @Mock private OfflinePageUtils.Internal mOfflinePageUtils; @Mock + private SigninManager mSigninManager; + @Mock + private IdentityManager mIdentityManager; + @Mock + private IdentityServicesProvider mIdentityService; + @Mock private TabModelFilterProvider mTabModelFilterProvider; @Mock private TabModelFilter mTabModelFilter; @@ -191,6 +200,9 @@ ContentFeatureList.EXPERIMENTAL_ACCESSIBILITY_LABELS)) .thenReturn(false); OfflinePageUtils.setInstanceForTesting(mOfflinePageUtils); + when(mIdentityService.getSigninManager(any(Profile.class))).thenReturn(mSigninManager); + when(mSigninManager.getIdentityManager()).thenReturn(mIdentityManager); + IdentityServicesProvider.setInstanceForTests(mIdentityService); FeatureList.setTestCanUseDefaultsForTesting(); mTabbedAppMenuPropertiesDelegate = Mockito.spy( @@ -306,6 +318,16 @@ } @Test + public void getFooterResourceId_signedOutUser_doesNotReturnWebFeedMenuItem() { + setUpMocksForWebFeedFooter(); + when(mIdentityManager.hasPrimaryAccount()).thenReturn(false); + + assertNotEquals("Footer Resource ID should not be web_feed_main_menu_item.", + R.layout.web_feed_main_menu_item, + mTabbedAppMenuPropertiesDelegate.getFooterResourceId()); + } + + @Test public void getFooterResourceId_httpsUrl_returnsWebFeedMenuItem() { setUpMocksForWebFeedFooter(); @@ -319,6 +341,7 @@ when(mTab.isIncognito()).thenReturn(false); when(mTab.getOriginalUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.EXAMPLE_URL)); when(mOfflinePageUtils.isOfflinePage(mTab)).thenReturn(false); + when(mIdentityManager.hasPrimaryAccount()).thenReturn(true); } private void setUpMocksForPageMenu() {
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerUnitTest.java index a8ac672..28ded53 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerUnitTest.java
@@ -136,14 +136,14 @@ public void storeWebApkUpdateRequestToFile(String updateRequestPath, String startUrl, String scope, String name, String shortName, String primaryIconUrl, Bitmap primaryIcon, boolean isPrimaryIconMaskable, String splashIconUrl, - Bitmap splashIcon, String[] iconUrls, String[] iconHashes, - @WebDisplayMode int displayMode, int orientation, long themeColor, - long backgroundColor, String shareTargetAction, String shareTargetParamTitle, - String shareTargetParamText, boolean shareTargetParamIsMethodPost, - boolean shareTargetParamIsEncTypeMultipart, String[] shareTargetParamFileNames, - Object[] shareTargetParamAccepts, String[][] shortcuts, String manifestUrl, - String webApkPackage, int webApkVersion, boolean isManifestStale, - int[] updateReasons, Callback<Boolean> callback) {} + Bitmap splashIcon, boolean isSplashIconMaskable, String[] iconUrls, + String[] iconHashes, @WebDisplayMode int displayMode, int orientation, + long themeColor, long backgroundColor, String shareTargetAction, + String shareTargetParamTitle, String shareTargetParamText, + boolean shareTargetParamIsMethodPost, boolean shareTargetParamIsEncTypeMultipart, + String[] shareTargetParamFileNames, Object[] shareTargetParamAccepts, + String[][] shortcuts, String manifestUrl, String webApkPackage, int webApkVersion, + boolean isManifestStale, int[] updateReasons, Callback<Boolean> callback) {} @Override public void updateWebApkFromFile(
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index d164b7e..b92c448 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-92.0.4515.28_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-92.0.4515.32_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 3b22614f..7818578 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -9220,6 +9220,9 @@ <message name="IDS_HISTORY_CLOSED_RESTORE_WINDOW_MAC" desc="The Mac menu item for restoring all the tabs of a recently closed window."> Restore All Tabs </message> + <message name="IDS_HISTORY_INCOGNITO_DISCLAIMER_MAC" desc="The Mac menu item for the Incognito disclaimer text."> + History isn’t saved in Incognito + </message> <!-- Window menu --> <message name="IDS_MINIMIZE_WINDOW_MAC" desc="The Mac menu item for minimize the window menu."
diff --git a/chrome/app/generated_resources_grd/IDS_HISTORY_INCOGNITO_DISCLAIMER_MAC.png.sha1 b/chrome/app/generated_resources_grd/IDS_HISTORY_INCOGNITO_DISCLAIMER_MAC.png.sha1 new file mode 100644 index 0000000..0a688c0 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_HISTORY_INCOGNITO_DISCLAIMER_MAC.png.sha1
@@ -0,0 +1 @@ +c19f7b46f8031b8d97f541b1d0bfa8fdb59ca89a \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb index f54f1eb..0d1a216 100644 --- a/chrome/app/resources/chromium_strings_ar.xtb +++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -38,6 +38,7 @@ <translation id="2560420686485554789">يحتاج Chromium إلى الوصول إلى مساحة التخزين لتنزيل الملفات.</translation> <translation id="2572494885440352020">أداة مساعدة Chromium</translation> <translation id="2577788541081224677">للوصول من خلال جميع أجهزتك إلى بياناتك في Chromium، عليك تسجيل الدخول كي تتمكّن من تفعيل المزامنة.</translation> +<translation id="2580426763510374355">تثبيت نظام التشغيل Chromium</translation> <translation id="2583187216237139145">يمكن لمشرف الملف الشخصي للعمل إزالة أي بيانات مرتبطة بمتصفِّح Chromium والتي يتم إنشاؤها أثناء استخدام هذا الملف الشخصي (مثل إنشاء الإشارات المرجعية والسجلّ وكلمات المرور والإعدادات الأخرى).<ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">يلزم إعادة تشغيل نظام التشغيل Chromium حتى يتم تطبيق التحديث.</translation> <translation id="2648074677641340862">حدث خطأ في نظام التشغيل أثناء عملية التثبيت. يُرجى إعادة تنزيل Chromium.</translation> @@ -136,6 +137,7 @@ <translation id="5438241569118040789"><ph name="PAGE_TITLE" /> - الإصدار التجريبي من Chromium</translation> <translation id="5479196819031988440">يتعذر على نظام التشغيل Chromium فتح هذه الصفحة.</translation> <translation id="5480860683791598150">يحتاج Chromium للوصول إلى موقعك الجغرافي لمشاركته مع هذا الموقع.</translation> +<translation id="5481338274774984070">ينصح Chromium بعدم تنزيل هذا الملف أو فتحه.</translation> <translation id="549669000822060376">يُرجى الانتظار أثناء تثبيت Chromium لآخر تحديثات النظام.</translation> <translation id="5496810170689441661">يحاول Chromium تعديل كلمات المرور. للسماح بذلك، يُرجى كتابة كلمة مرور Windows الخاصة بك.</translation> <translation id="5527463683072221100">فتح ملفات PDF في Chromium</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index a5eb2fa..0022d7d 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">Taakbestuurder</translation> <translation id="4036778507053569103">Die beleid wat van die bediener afgelaai is, is ongeldig.</translation> <translation id="4037084878352560732">Perd</translation> -<translation id="4037889604535939429">Wysig persoon</translation> <translation id="4040753847560036377">Verkeerde PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Verlaat bladsy}other{Verlaat bladsye}}</translation> <translation id="4044612648082411741">Voer jou sertifikaatwagwoord in</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Stel Chrome as jou verstekblaaier</translation> <translation id="5711983031544731014">Kan nie ontsluit nie. Voer jou wagwoord in.</translation> <translation id="5712153969432126546">Werwe publiseer soms PDF's, soos dokumente, kontrakte en vorms</translation> -<translation id="5712323955984474772">Volgende opdatering</translation> <translation id="5715711091495208045">Inpropagent: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Versteksoekenjins</translation> <translation id="5719637365829998022">QR-kode is geskandeer.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Jou bestuurder het dit nog nie goedgekeur nie</translation> <translation id="6568283005472142698">Oortjiesoektog</translation> <translation id="6569911211938664415">Wagwoorde word in jou Google-rekening (<ph name="ACCOUNT" />) gestoor sodat jy hulle op enige toestel kan gebruik.</translation> -<translation id="6569934958368283244">Ander mense</translation> <translation id="6573497332121198392">Kan nie kortpad verwyder nie</translation> <translation id="657402800789773160">Herlaai hierdie bladsy</translation> <translation id="6577284282025554716">Aflaai is gekanselleer: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Stuur boodskap</translation> <translation id="8397825320644530257">Ontkoppel gekoppelde foon</translation> <translation id="8398877366907290961">Gaan nogtans voort</translation> -<translation id="8400146488506985033">Bestuur mense</translation> <translation id="8401432541486058167">Verskaf die PIN wat met jou slimkaart geassosieer word.</translation> <translation id="8404893580027489425">Die vingerafdruksensor is aan die regterkant van jou <ph name="DEVICE_TYPE" />. Raak met enige vinger liggies daaraan.</translation> <translation id="8405046151008197676">Kry hoogtepunte van die jongste opdatering</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> het jou toestemming nodig om te werk</translation> <translation id="8466417995783206254">Hierdie oortjie speel tans 'n video in prent-in-prent-modus.</translation> <translation id="8467326454809944210">Kies 'n ander taal</translation> -<translation id="8470214316007448308">Ander mense</translation> <translation id="8470513973197838199">Gestoorde wagwoorde vir <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Werwe koppel gewoonlik aan USB-toestelle vir kenmerke soos om 'n dokument te druk of om op 'n bergingtoestel te stoor</translation> <translation id="8471959340398751476">Afslag is af. Jy kan dit in die gepasmaakte kieslys aanskakel</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Vee invoer uit</translation> <translation id="8676770494376880701">Laekraglaaier gekoppel</translation> <translation id="8677212948402625567">Vou alles in …</translation> +<translation id="867767487203716855">Volgende opdatering</translation> <translation id="8677859815076891398">Geen albums nie. Skep 'n album in <ph name="LINK_BEGIN" />Google Foto's<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Oortjies krimp nie</translation> <translation id="8678933587484842200">Hoe wil jy hê moet hierdie program oopmaak?</translation> @@ -7135,7 +7131,6 @@ <translation id="87646919272181953">Google Foto's-album</translation> <translation id="8767621466733104912">Dateer Chrome outomaties vir alle gebruikers op</translation> <translation id="8770406935328356739">Uitbreidingwortelgids</translation> -<translation id="8770507190024617908">Bestuur mense</translation> <translation id="8771300903067484968">Beginbladsy se agtergrond is na die verstekagtergrond toe teruggestel.</translation> <translation id="8773302562181397928">Bespaar <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Bevestig terugstelling</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index a2271d43..f61168803 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -2870,7 +2870,6 @@ <translation id="4035758313003622889">&ተግባር አስተዳዳሪ</translation> <translation id="4036778507053569103">ከአገልጋዩ የወረደው መመሪያ ልክ ያልኾነ ነው።</translation> <translation id="4037084878352560732">ፈረስ</translation> -<translation id="4037889604535939429">ሰውን ያርትዑ</translation> <translation id="4040753847560036377">ትክክል ያልኾነ PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ከገጽ ውጣ}one{ከገጾች ውጣ}other{ከገጾች ውጣ}}</translation> <translation id="4044612648082411741">የእርስዎን የዕውቅና ማረጋገጫ ይለፍ ቃል ያስገቡ</translation> @@ -4336,7 +4335,6 @@ <translation id="5709557627224531708">Chromeን እንደ ነባሪ አሳሽዎ አድርገው ያቀናብሩት</translation> <translation id="5711983031544731014">ማስከፈት አልተቻለም። የይለፍ ቃልዎን ያስገቡ።</translation> <translation id="5712153969432126546">ጣቢያዎች አንዳንድ ጊዜ እንደ ሰነዶች፣ ውሎች እና ቅጾች ያሉ በPDF ያትማሉ</translation> -<translation id="5712323955984474772">ቀጣዩ ዝማኔ</translation> <translation id="5715711091495208045">የተሰኪ አስማሚ፦ <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ነባሪ የፍለጋ ፕሮግራሞች</translation> <translation id="5719637365829998022">የQR ኮድ ተቃኝቷል።</translation> @@ -5108,7 +5106,6 @@ <translation id="6563469144985748109">የእርስዎ አስተዳዳሪ ገና አላጸደቁትም</translation> <translation id="6568283005472142698">የትር ፍለጋ</translation> <translation id="6569911211938664415">በማንኛውም መሣሪያ ላይ እርስዎ ሊጠቀሙባቸው እንዲችሉ የይለፍ ቃላት በGoogle መለያዎ (<ph name="ACCOUNT" />) ላይ ተቀምጠዋል።</translation> -<translation id="6569934958368283244">ሌሎች ሰዎች</translation> <translation id="6573497332121198392">አቋራጭን ማስወገድ አልተቻለም</translation> <translation id="657402800789773160">ይህን ገጽ &ዳግም ጫን</translation> <translation id="6577284282025554716">ማውረድ ተሰርዟል፦ <ph name="FILE_NAME" /></translation> @@ -6799,7 +6796,6 @@ <translation id="8393700583063109961">መልዕክት ይላኩ</translation> <translation id="8397825320644530257">የተገናኘ ስልክ ያላቅቁ</translation> <translation id="8398877366907290961">ለማንኛውም ቀጥል</translation> -<translation id="8400146488506985033">ሰዎችን አቀናብር</translation> <translation id="8401432541486058167">ከእርስዎ ዘመናዊ ካርድ ጋር የተቆራኘውን ፒን ይስጡ።</translation> <translation id="8404893580027489425">የጣት አሻራ ዳሳሹ ከእርስዎ <ph name="DEVICE_TYPE" /> በቀኝ-እጅ በኩል ነው። በማንኛውም ጣት በስሱ ይንኩት።</translation> <translation id="8405046151008197676">ከቅርብ ጊዜው ዝማኔ ድምቀቶችን ያግኙ</translation> @@ -6855,7 +6851,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ለማሄድ የእርስዎ ፍቃድ ያስፈልገዋል</translation> <translation id="8466417995783206254">ይህ ትር አንድ ቪዲዮ በሥዕል-ውስጥ-ሥዕል ሁነታ ላይ እያጫወተ ነው።</translation> <translation id="8467326454809944210">ሌላ ቋንቋ ይምረጡ</translation> -<translation id="8470214316007448308">ሌሎች ሰዎች</translation> <translation id="8470513973197838199">የተቀመጡ የ<ph name="ORIGIN" /> የይለፍ ቃላት</translation> <translation id="8471525937465764768">ጣቢያዎች እንደ ሰነድ ማተም ወይም ወደ የማከማቻ መሣሪያ ማስቀመጥ ያሉ ባህሪያትን ለማግኘት አብዛኛው ጊዜ ከዩኤስቢ መሣሪያዎች ጋር ይገናኛሉ</translation> <translation id="8471959340398751476">ቅናሾች ጠፍተዋል። በአብጅ ምናሌ ውስጥ ሊያበሩዋቸው ይችላሉ</translation> @@ -7042,6 +7037,7 @@ <translation id="8676374126336081632">ግቤቱን አጽዳ</translation> <translation id="8676770494376880701">አነስተኛ ኃይል ያለው ባትሪ መሙያ ተገናኝቷል</translation> <translation id="8677212948402625567">ሁሉንም ሰብስብ...</translation> +<translation id="867767487203716855">ቀጣዩ ዝማኔ</translation> <translation id="8677859815076891398">ምንም አልበሞች የሉም። በ<ph name="LINK_BEGIN" />Google ፎቶዎች<ph name="LINK_END" /> ውስጥ አልበም ይፈጠሩ።</translation> <translation id="8678582529642151449">ትሮች አይሰበሰቡም</translation> <translation id="8678933587484842200">ይህ መተግበሪያ እንዴት እንዲጀምር ይፈልጋሉ?</translation> @@ -7130,7 +7126,6 @@ <translation id="87646919272181953">የGoogle ፎቶዎች አልበም</translation> <translation id="8767621466733104912">Chromeን ለሁሉም ተጠቃሚዎች በራስ-ሰር አዘምን</translation> <translation id="8770406935328356739">የቅጥያ ስርወ ማውጫ</translation> -<translation id="8770507190024617908">ሰዎችን አቀናብር</translation> <translation id="8771300903067484968">የጅምር ገጽ ጀርባው ወደ ነባሪው ጀርባ ዳግም ተጀምሯል።</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" />ን አስቀምጥ</translation> <translation id="8774379074441005279">ወደነበረበት መመለስን ያረጋግጡ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index ed962da..c7d2456 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -166,6 +166,7 @@ <translation id="1173894706177603556">إعادة تسمية</translation> <translation id="1173916544412572294">الشبكة <ph name="NETWORK_INDEX" /> من <ph name="NETWORK_COUNT" />، الهاتف<ph name="PHONE_NAME" />، حالة الاتصال <ph name="CONNECTION_STATUS" />، قوة الإشارة <ph name="SIGNAL_STRENGTH" />%، بطارية الهاتف <ph name="BATTERY_STATUS" />%، التفاصيل</translation> <translation id="1174073918202301297">تمت إضافة الاختصار</translation> +<translation id="1174366174291287894">اتصالك آمن دائمًا ما لم يخبرك Chrome بعكس ذلك.</translation> <translation id="117445914942805388">لمحو بيانات التصفُّح من جميع أجهزتك التي تمت مزامنتها ومن حسابك على Google، يُرجى <ph name="BEGIN_LINK" />الانتقال إلى إعدادات المزامنة<ph name="END_LINK" />.</translation> <translation id="1175364870820465910">ط&باعة...</translation> <translation id="1176471985365269981">المواقع الإلكترونية التي لا يُسمح لها بتعديل الملفات أو المجلدات على جهازك</translation> @@ -703,6 +704,7 @@ <translation id="173628468822554835">حسنًا. حسب الإعدادات التلقائية، لن تتلقّى إشعارات من المواقع الإلكترونية الجديدة التي تزورها.</translation> <translation id="1736419249208073774">استكشاف</translation> <translation id="1737968601308870607">الإبلاغ عن خطأ</translation> +<translation id="1739684185846730053">لا تزال إصدارات "مبادرة حماية الخصوصية" التجريبية في مرحلة التطوير المستمر ولا تتوفّر إلا في مناطق محدَّدة. في الوقت الحالي، قد تحاول المواقع الإلكترونية تجربة "مبادرة حماية الخصوصية" أثناء استخدام تقنيات الويب الحالية مثل ملفات تعريف الارتباط التابعة لجهات خارجية.</translation> <translation id="174123615272205933">مخصَّص</translation> <translation id="1741314857973421784">متابعة</translation> <translation id="1743570585616704562">لم يتم التعرف عليها</translation> @@ -751,6 +753,7 @@ <translation id="1781398670452016618">يتطلّب <ph name="DOMAIN" /> الاتصال بشبكة Wi-Fi الآن وتنزيل تحديث.</translation> <translation id="1781502536226964113">فتح صفحة علامة التبويب الجديدة</translation> <translation id="1781771911845953849">الحسابات والمزامنة</translation> +<translation id="1782101999402987960">لقد حظر المشرف التحديثات.</translation> <translation id="1782196717298160133">العثور على هاتفك</translation> <translation id="1784707308176068866">التشغيل في الخلفية عندما يطلبه تطبيق تعاون أصلي</translation> <translation id="1784849162047402014">مساحة القرص الموجودة على الجهاز منخفضة.</translation> @@ -1125,6 +1128,7 @@ <translation id="217576141146192373">تتعذّر إضافة طابعة. يُرجى التحقق من ضبط الطابعة والمحاولة مرة أخرى.</translation> <translation id="2177950615300672361">علامة تبويب التصفح المتخفي: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">اختراق المرجع المصدق (CA)</translation> +<translation id="2179416702468739594">جارٍ البحث عن الملفات التعريفية المتوفّرة. قد يؤدي هذا الإجراء إلى انقطاع الاتصال بشبكة الجوّال لبضع دقائق.</translation> <translation id="2182058453334755893">تم النسخ إلى الحافظة.</translation> <translation id="2184515124301515068">السماح لمتصفِّح Chrome باختيار الوقت الذي يمكن للمواقع الإلكترونية تشغيل الصوت فيه (مُوصى به)</translation> <translation id="2186711480981247270">صفحة تمت مشاركتها من جهاز آخر</translation> @@ -1140,6 +1144,7 @@ <translation id="2193365732679659387">إعدادات الثقة</translation> <translation id="2195331105963583686">سيظل بإمكانك استخدام هذا الجهاز <ph name="DEVICE_TYPE" /> بعد تلك الفترة، ولكن لن يتلقى الجهاز تحديثات تلقائية للبرامج والأمان بعد ذلك.</translation> <translation id="2195729137168608510">حماية البريد الإلكتروني</translation> +<translation id="2198625180564913276">جارٍ إضافة الملف الشخصي. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="2199298570273670671">خطأ</translation> <translation id="2199719347983604670">البيانات من مزامنة Chrome</translation> <translation id="2200094388063410062">البريد الإلكتروني</translation> @@ -1389,6 +1394,7 @@ <translation id="2469375675106140201">تخصيص التدقيق الإملائي</translation> <translation id="247051149076336810">عنوان URL لخادم مشاركة الملفات</translation> <translation id="2470702053775288986">تم إيقاف الإضافات غير المدعومة</translation> +<translation id="2470939964922472929">لقد أدخلت رقم تعريف شخصي غير صحيح عدّة مرات. لإعداد رقم تعريف شخصي جديد، أدخِل مفتاح إزالة حظر رقم التعريف الشخصي (PUK) المكوّن من 8 أرقام والمتوفّر من خلال مشغّل شبكة الجوّال.</translation> <translation id="2471469610750100598">أسود (تلقائي)</translation> <translation id="2471506181342525583">تم السماح بالوصول إلى الموقع الجغرافي</translation> <translation id="2473195200299095979">ترجم هذه الصفحة</translation> @@ -1686,6 +1692,7 @@ <translation id="2785873697295365461">أدوات وصف الملفات</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">رقم المجموعة</translation> <translation id="2789486458103222910">حسنًا</translation> <translation id="2791529110887957050">إزالة نظام التشغيل Linux</translation> <translation id="2791952154587244007">حدث خطأ. لن يمكن تشغيل تطبيق الكشك تلقائيًا على هذا الجهاز.</translation> @@ -1710,6 +1717,7 @@ <translation id="2805760958323556153">قيمة السياسة ExtensionInstallForcelist غير صالحة. يُرجى التواصل مع المشرف.</translation> <translation id="2805770823691782631">تفاصيل إضافية</translation> <translation id="2806372837663997957">رفض الجهاز الذي تحاول تنفيذ المشاركة معه طلبك.</translation> +<translation id="2806840421670364300">التعلُّم الموحّد للمجموعات النموذجية (FLoC)</translation> <translation id="2806891468525657116">الاختصار موجود من قَبل</translation> <translation id="2807517655263062534">هنا تظهر الملفات التي تم تنزيلها</translation> <translation id="2809586584051668049">و<ph name="NUMBER_ADDITIONAL_DISABLED" /> من الإضافات الأخرى</translation> @@ -1986,6 +1994,7 @@ <translation id="310671807099593501">يستخدم الموقع الإلكتروني البلوتوث.</translation> <translation id="3108931485517391283">يتعذّر تلقّي الملف</translation> <translation id="3109724472072898302">مصغّر</translation> +<translation id="3113592018909187986">يتبقى لديك محاولة واحدة. لن تتمكّن من استخدام هذه الشبكة إلى أن يتم إعداد رقم تعريف شخصي جديد.</translation> <translation id="311394601889664316">عدم السماح للمواقع الإلكترونية بتعديل الملفات أو المجلدات على جهازك</translation> <translation id="3115147772012638511">في انتظار ذاكرة التخزين المؤقت ...</translation> <translation id="3115580024857770654">تصغير الكل</translation> @@ -2026,6 +2035,7 @@ <translation id="315116470104423982">بيانات الجوال</translation> <translation id="3151539355209957474">وقت البدء</translation> <translation id="3151562827395986343">محو السجلّ وملفات تعريف الارتباط وذاكرة التخزين المؤقت والمزيد</translation> +<translation id="3151616662954589507">كاميرا الصور الذاتية</translation> <translation id="3151786313568798007">الاتجاه</translation> <translation id="3154351730702813399">قد يراقب مشرف الجهاز نشاط التصفح.</translation> <translation id="3154429428035006212">بلا إنترنت لمدة تتجاوز شهرًا</translation> @@ -2141,6 +2151,7 @@ <translation id="32939749466444286">يتعذَّر بدء حاوية نظام التشغيل Linux. يُرجى إعادة المحاولة.</translation> <translation id="3294437725009624529">ضيف</translation> <translation id="3294686910656423119">إحصاءات الاستخدام وتقارير الأعطال</translation> +<translation id="3295357220137379386">الجهاز مشغول.</translation> <translation id="329838636886466101">الإصلاح</translation> <translation id="3298789223962368867">تم إدخال عنوان URL غير صحيح.</translation> <translation id="32991397311664836">الأجهزة:</translation> @@ -2273,6 +2284,7 @@ <translation id="3440663250074896476">مزيد من الإجراءات للإشارة المرجعية <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">الشاشة</translation> <translation id="3441663102605358937">يُرجى تسجيل الدخول إلى الحساب <ph name="ACCOUNT" /> مرّة أخرى لإثبات ملكيته.</translation> +<translation id="3444641828375597683">يمكن للمعلِنين والناشرين استخدام تقنية "التعلُّم الموحّد للمجموعات النموذجية" (FLoC)، كما هو موضّح لاحقًا في هذه الصفحة.</translation> <translation id="3445047461171030979">إجابات "مساعد Google" السريعة</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> دقيقة</translation> <translation id="3445925074670675829">جهاز USB-C</translation> @@ -2852,7 +2864,7 @@ <translation id="4035758313003622889">مدير الم&هام</translation> <translation id="4036778507053569103">السياسة المُنزَّلة من الخادم غير صالحة.</translation> <translation id="4037084878352560732">حصان</translation> -<translation id="4037889604535939429">تعديل الشخص</translation> +<translation id="4040753847560036377">رمز PUK غير صحيح.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{الخروج من الصفحة}zero{الخروج من صفحة}two{الخروج من الصفحتين}few{الخروج من صفحات}many{الخروج من صفحة}other{الخروج من صفحة}}</translation> <translation id="4044612648082411741">إدخال كلمة المرور للشهادة</translation> <translation id="4044708573046946214">كلمة مرور قفل الشاشة</translation> @@ -3048,6 +3060,7 @@ <translation id="4285498937028063278">إزالة تثبيت</translation> <translation id="428565720843367874">تعذّر برنامج مكافحة الفيروسات بشكل غير متوقع أثناء فحص هذا الملف.</translation> <translation id="4287099557599763816">قارئ الشاشة</translation> +<translation id="428715201724021596">جارٍ الاتصال بالملف الشخصي. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="4287157641315808225">نعم، تفعيل ChromeVox</translation> <translation id="4287502603002637393">{MUTED_NOTIFICATIONS_COUNT,plural, =1{عرض}zero{عرض محتوى الإشعارات}two{عرض محتوى الإشعارَين}few{عرض محتوى الإشعارات}many{عرض محتوى الإشعارات}other{عرض محتوى الإشعارات}}</translation> <translation id="4289372044984810120">يمكنك إدارة حساباتك هنا. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> @@ -3060,6 +3073,7 @@ <translation id="4297813521149011456">دوران شاشة العرض</translation> <translation id="4299022904780065004">نافذة جديدة &للتصفُّح المتخفي</translation> <translation id="4301671483919369635">يتم السماح لهذه الصفحة بتعديل الملفات.</translation> +<translation id="4302605047395093221">على جميع مستخدمي هذا الجهاز إدخال رقم التعريف الشخصي للاتصال بشبكة الجوّال هذه.</translation> <translation id="4303079906735388947">إعداد رقم تعريف شخصي جديد لمفتاح الأمان</translation> <translation id="4305402730127028764">نسخ إلى <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">تبديل</translation> @@ -3244,6 +3258,7 @@ <translation id="4510479820467554003">قائمة حساب أحد الوالدَين</translation> <translation id="4510614391273086606">تتم الآن استعادة البيانات الاحتياطية الخاصّة بملفات نظام التشغيل Linux وتطبيقاته.</translation> <translation id="451102079304155829">سلات التسوّق</translation> +<translation id="4513275008300099962">إيقاف تراكب عناصر التحكم في النوافذ</translation> <translation id="4513946894732546136">ملاحظات</translation> <translation id="451407183922382411">تم التشغيل من قبل <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">تبديل الفيديو لتشغيله أو إيقافه مؤقتًا</translation> @@ -3274,6 +3289,7 @@ <translation id="4538792345715658285">تمّ التثبيت بموجب سياسة المؤسسة.</translation> <translation id="4541123282641193691">تعذّر التحقق من حسابك. يُرجى المحاولة مرة أخرى أو إعادة تشغيل Chromebook.</translation> <translation id="4541662893742891060">تعذّر الربط بهذا الملف الشخصي. للحصول على الدعم الفني، يُرجى التواصل مع مشغّل شبكة الجوّال.</translation> +<translation id="4541706525461326392">جارٍ إزالة الملف الشخصي. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="4541810033354695636">الواقع المعزّز</translation> <translation id="4542520061254486227">قراءة بياناتك على <ph name="WEBSITE_1" /> و<ph name="WEBSITE_2" /></translation> <translation id="454331522350252598">يمكن للمعلنين رصد الاهتمام المشترك بين الآلاف من المستخدمين، مثل حشد في حفل موسيقي، كما يمكنهم اختيار الإعلانات على مستوى هذا الحشد بدلاً من اختيارها على مستوى فردي.</translation> @@ -3651,6 +3667,7 @@ <translation id="4953808748584563296">الصورة الرمزية التلقائية البرتقالية</translation> <translation id="4955710816792587366">اختيار رقم التعريف الشخصي</translation> <translation id="4959262764292427323">يتم حفظ كلمات المرور في حسابك على Google حتى تتمكَّن من استخدامها على أي جهاز.</translation> +<translation id="496027654926814138">قد يتسبب <ph name="FILE_NAME" /> في سرقة المهاجِمين لمعلوماتك الشخصية.</translation> <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="4961361269522589229">وصفات طعام</translation> <translation id="496185450405387901">لقد ثبّت مشرفك هذا التطبيق.</translation> @@ -3690,6 +3707,7 @@ <translation id="5007392906805964215">مراجعة</translation> <translation id="50080882645628821">إزالة الملف الشخصي</translation> <translation id="5008936837313706385">اسم النشاط</translation> +<translation id="5009463889040999939">جارٍ إعادة تسمية الملف الشخصي. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="5010043101506446253">صلاحية الشهادة</translation> <translation id="5015344424288992913">إثبات هوية الخادم الوسيط...</translation> <translation id="5017633213534173756">تذكّر</translation> @@ -4034,6 +4052,7 @@ <translation id="5408750356094797285">تكبير/تصغير: <ph name="PERCENT" /></translation> <translation id="5409044712155737325">من حسابك على Google</translation> <translation id="5411472733320185105">عدم استخدام إعدادات الخادم الوكيل لهذه المضيفات والنطاقات:</translation> +<translation id="5414198321558177633">جارٍ إعادة تحميل قائمة الملفات الشخصية. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="5414566801737831689">قراءة رموز المواقع الإلكترونية التي تزورها</translation> <translation id="5417312524372586921">مظاهر المتصفح</translation> <translation id="5419405654816502573">Voice Match</translation> @@ -4583,10 +4602,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - تم توصيل جهاز USB</translation> <translation id="6028117231645531007">إضافة بصمة الإصبع</translation> <translation id="6031600495088157824">خيارات الإدخال في شريط الأدوات</translation> +<translation id="6032091552407840792">لا يتوفّر هذا الإصدار التجريبي سوى في <ph name="BEGIN_LINK" />بعض المناطق<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">للسماح للإضافة بالوصول إلى بيانات هذا الموقع الإلكتروني، انقر على الإضافة.</translation> <translation id="6032912588568283682">نظام الملفات</translation> <translation id="603539183851330738">زر التراجع عن التصحيح التلقائي. يمكنك التراجع عن تصحيح كلمة <ph name="TYPED_WORD" />. اضغط على مفتاح enter للتراجع عن التصحيح التلقائي، أو على مفتاح escape للتجاهل.</translation> <translation id="6038929619733116134">الحظر في حال كان الموقع الإلكتروني يعرض إعلانات مضلِّلة أو غير مرغوب فيها</translation> +<translation id="603895874132768835">لن تتمكّن من استخدام هذه الشبكة إلى أن يتم إعداد رقم تعريف شخصي جديد.</translation> <translation id="6039651071822577588">قاموس خصائص الشبكة غير صالح</translation> <translation id="6040143037577758943">إغلاق</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />تستخدم خدمة الموقع الجغرافي من Google مصادر مثل شبكات Wi‑Fi وشبكات الجوّال وأجهزة الاستشعار للمساعدة في تقدير الموقع الجغرافي لجهازك.<ph name="END_PARAGRAPH1" /> @@ -4599,6 +4620,7 @@ <translation id="6044805581023976844">يشارك <ph name="APP_NAME" /> علامة تبويب متصفح Chrome والصوت من خلال <ph name="TAB_NAME" />.</translation> <translation id="6045114302329202345">زر TrackPoint الأساسي</translation> <translation id="6047632800149092791">المزامنة لا تعمل على نحو سليم جرّب الخروج وتسجيل الدخول مرة أخرى.</translation> +<translation id="6049797270917061226">قد يتسبب هذا الملف في سرقة المهاجمين لمعلوماتك الشخصية.</translation> <translation id="6051354611314852653">عفوًا! تعذّر النظام في السماح بالدخول إلى واجهة برمجة التطبيقات على هذا الجهاز.</translation> <translation id="6052976518993719690">صلاحية شهادة SSL (طبقة المقابس الآمنة)</translation> <translation id="6053401458108962351">&محو بيانات التصفح...</translation> @@ -4826,12 +4848,14 @@ <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{طابعة جديدة على شبكتك}zero{طابعات جديدة على شبكتك}two{طابعتان جديدتان على شبكتك}few{طابعات جديدة على شبكتك}many{طابعات جديدة على شبكتك}other{طابعات جديدة على شبكتك}}</translation> <translation id="6285770818046456882">ألغى الجهاز الذي يشارك معك الملف عملية النقل.</translation> <translation id="6290613030083731160">ما مِن أجهزة متوفِّرة بالقرب منك للمشاركة معها. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> +<translation id="6291086328725007688">جارٍ التحقّق من رمز التفعيل. قد تستغرق هذه العملية بضع دقائق.</translation> <translation id="6291741848715722067">رمز تأكيد البيانات</translation> <translation id="6291949900244949761">طلب الإذن في حال محاولة أحد المواقع الوصول إلى أجهزة USB (مُوصى به)</translation> <translation id="6291953229176937411">إ&ظهار في الباحث</translation> <translation id="6292699686837272722">عرض علامات التبويب بحجم متوسط</translation> <translation id="6295158916970320988">جميع المواقع الإلكترونية</translation> <translation id="6295855836753816081">جارٍ الحفظ...</translation> +<translation id="6296410173147755564">رمز PUK غير صالح.</translation> <translation id="6298962879096096191">استخدام Google Play لتثبيت تطبيقات Android</translation> <translation id="6300177430812514606">المواقع الإلكترونية التي لا يُسمح لها بإنهاء إرسال البيانات أو استلامها</translation> <translation id="630065524203833229">إن&هاء</translation> @@ -4878,6 +4902,7 @@ <translation id="6340526405444716530">التخصيص</translation> <translation id="6341850831632289108">اكتشاف موقعك الفعلي</translation> <translation id="6342069812937806050">الآن</translation> +<translation id="6343003829431264373">الصفحات الزوجية فقط</translation> <translation id="6344170822609224263">قائمة الدخول لاتصالات الشبكة</translation> <translation id="6344576354370880196">الطابعات المحفوظة</translation> <translation id="6345418402353744910">يطلب الخادم الوكيل <ph name="PROXY" /> اسم المستخدم وكلمة المرور الخاصَّين بك حتى يتمكّن المشرف من إعداد الشبكة.</translation> @@ -4956,6 +4981,7 @@ <translation id="6438234780621650381">إعادة ضبط الإعدادات</translation> <translation id="6438992844451964465"><ph name="WINDOW_TITLE" /> - تشغيل الصوت</translation> <translation id="6442187272350399447">الروعة</translation> +<translation id="6442445294758185945">تعذُّر تنزيل التحديث. يُرجى إعادة المحاولة لاحقًا.</translation> <translation id="6444070574980481588">تعيين التاريخ والوقت</translation> <translation id="6444909401984215022"><ph name="WINDOW_TITLE" /> - يتم البحث عن جهاز يتضمّن بلوتوث</translation> <translation id="6445450263907939268">إذا كنت لا تريد هذه التغييرات، فيمكنك استعادة الإعدادات السابقة.</translation> @@ -5076,7 +5102,6 @@ <translation id="6563469144985748109">لم يوافق عليه مديرك حتى الآن</translation> <translation id="6568283005472142698">البحث عن علامة تبويب</translation> <translation id="6569911211938664415">يتم حفظ كلمات المرور في حسابك (<ph name="ACCOUNT" />) على Google حتى تتمكَّن من استخدامها على أي جهاز.</translation> -<translation id="6569934958368283244">مستخدمون آخرون</translation> <translation id="6573497332121198392">تتعذَّر إزالة الاختصار.</translation> <translation id="657402800789773160">إ&عادة تحميل هذه الصفحة</translation> <translation id="6577284282025554716">تم إلغاء التنزيل: <ph name="FILE_NAME" /></translation> @@ -5125,6 +5150,7 @@ <translation id="6624535038674360844">الملف <ph name="FILE_NAME" /> به محتوى حسّاس أو خطير. يُرجى طلب إصلاحه من المالك.</translation> <translation id="6624687053722465643">الطعم اللذيذ</translation> <translation id="6628328486509726751">تم التحميل في <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">يُرجى إدخال 4 أرقام على الأقل.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> يريد وصولاً دائمًا إلى شهادة للمصادقة الذاتية نيابةً عنك.</translation> <translation id="6635362468090274700">لا يمكن لأحد مشاركة الوسائط معك إلا إذا كان جهازك مرئيًا.<ph name="BR" /><ph name="BR" />لجعل جهازك مرئيًا بشكل مؤقت، يُرجى فتح منطقة الحالة، ثم تفعيل وضع الظهور في الميزة "مشاركة عن قرب".</translation> <translation id="6635944431854494329">يمكن للمالك التحكّم بهذه الميزة من الإعدادات > الإعدادات المتقدّمة > إرسال بيانات التشخيص والاستخدام إلى Google تلقائيًا.</translation> @@ -5163,6 +5189,7 @@ <translation id="6664774537677393800">حدث خطأ ما أثناء فتح ملفك الشخصي. يُرجى الخروج ثم إعادة تسجيل الدخول.</translation> <translation id="6670142487971298264">أصبح تطبيق <ph name="APP_NAME" /> متوفّرًا الآن.</translation> <translation id="6671320560732140690">{COUNT,plural, =1{عنوان واحد}zero{# عنوان}two{عنوانان}few{# عناوين}many{# عنوانًا}other{# عنوان}}</translation> +<translation id="6671497123040790595">جارٍ إعداد الإدارة من قِبل <ph name="MANAGER" /></translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">لبدء المزامنة، يجب إدخال عبارة المرور.</translation> <translation id="6675665718701918026">الإشارة إلى الأجهزة المتصلة</translation> @@ -5171,6 +5198,7 @@ <translation id="6680442031740878064">المساحة المتاحة: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">تقييم</translation> <translation id="6681668084120808868">التقاط صورة</translation> +<translation id="6683087162435654533">&استعادة جميع علامات التبويب</translation> <translation id="6683948477137300040">عرض رقم EID للجهاز ورمز الاستجابة السريعة في نافذة منبثقة</translation> <translation id="6684827949542560880">جارٍ تنزيل آخر تحديث</translation> <translation id="668599234725812620">فتح Google Play</translation> @@ -5740,6 +5768,7 @@ <translation id="7308643132139167865">لغات المواقع الإلكترونية</translation> <translation id="7309257895202129721">عرض &عناصر التحكم</translation> <translation id="7310598146671372464">تعذّر تسجيل الدخول لأن الخادم لا يدعم أنواع ترميز Kerberos المحدَّدة. يُرجى الاتصال بمشرفك.</translation> +<translation id="7315168816273861089">تفعيل تراكب عناصر التحكم في النوافذ</translation> <translation id="7320213904474460808">الاتصال بالشبكة تلقائيًا</translation> <translation id="7321545336522791733">خادم يتعذر الوصول إليه</translation> <translation id="7324297612904500502">منتدى الإصدار التجريبي</translation> @@ -5916,7 +5945,9 @@ <translation id="7506541170099744506">لقد تم تسجيل جهاز <ph name="DEVICE_TYPE" /> بنجاح لإدارة المؤسسة.</translation> <translation id="7507207699631365376">الاطّلاع على <ph name="BEGIN_LINK" />سياسة خصوصية<ph name="END_LINK" /> مقدّم الخدمة</translation> <translation id="7507930499305566459">شهادة الاستجابة للحالة</translation> +<translation id="7509097596023256288">جارٍ إعداد الإدارة</translation> <translation id="7509246181739783082">إثبات هويتك</translation> +<translation id="7511415964832680006">عند تفعيل "مبادرة حماية الخصوصية"، قد تستخدم المواقع الإلكترونية التقنيات الموضحة هنا للحفاظ على خصوصية المستخدمين مع توفير المحتوى والخدمات لهم. وتشمل هذه التقنيات بدائل عن آليات التتبُّع في المواقع الإلكترونية. قد تتم إضافة إصدارات تجريبية بمرور الوقت.</translation> <translation id="7513029293694390567">يمكنك تسجيل الدخول تلقائيًا إلى المواقع الإلكترونية باستخدام بيانات الاعتماد المخزّنة. وعندما تكون هذه الميزة غير مفعّلة، سيُطلب منك التحقّق من بيانات الاعتماد في كل مرة قبل تسجيل الدخول إلى موقع إلكتروني.</translation> <translation id="7514239104543605883">نسخ إلى جهازك</translation> <translation id="7514365320538308">تنزيل</translation> @@ -6277,6 +6308,8 @@ <translation id="7876027585589532670">يتعذَّر تعديل الاختصار.</translation> <translation id="7877451762676714207">خطأ غير معروف في الخادم. يُرجى إعادة المحاولة أو الاتصال بمشرف الخادم.</translation> <translation id="7879631849810108578">تم إعداد الاختصار: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">عندما تكون تقنية "التعلُّم الموحّد للمجموعات النموذجية" (FLoC) مفعّلة ونشطة، يستخدم Chrome سجل تصفّحك على مدار 7 أيام لتحديد المجموعة أو "المجموعة النموذجية" التي تنتمي إليها. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة. ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك. لا يتوفّر هذا الإصدار التجريبي من هذه التقنية سوى في + <ph name="BEGIN_LINK" />بعض المناطق<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">سيتم حذف البيانات المحلية عند إعادة التشغيل.</translation> <translation id="7881066108824108340">نظام أسماء النطاقات</translation> <translation id="7881483672146086348">عرض حساب</translation> @@ -6436,6 +6469,7 @@ <translation id="804786196054284061">اتفاقية ترخيص المستخدم</translation> <translation id="8048977114738515028">أنشِئ اختصارًا على سطح المكتب في جهازك للدخول إلى هذا الملف الشخصي مباشرةً.</translation> <translation id="8049029041626250638">يمكنك توصيل لوحة مفاتيح أو ماوس. وإذا كنت تستخدم أجهزة تتضمّن بلوتوث، يجب أن تكون هذه الأجهزة جاهزة لعملية الإقران.</translation> +<translation id="8049184478152619004">إدخال مفتاح إزالة حظر رقم التعريف الشخصي (PUK)</translation> <translation id="8049705080247101012">وضعت Google علامة على الإضافة <ph name="EXTENSION_NAME" /> باعتبارها ضارة وتم منع تثبيتها.</translation> <translation id="8049948037269924837">التمرير العكسي عبر لوحة اللمس</translation> <translation id="8050038245906040378">التوقيع بالرمز التجاري لـ Microsoft</translation> @@ -6472,6 +6506,7 @@ <translation id="8082106343289440791">هل تريد الإقران مع جهاز "<ph name="DEVICE_NAME" />"؟</translation> <translation id="8082390128630131497">سيؤدي إيقاف خيار "تصحيح الأخطاء عبر ADB" إلى إعادة ضبط جهاز <ph name="DEVICE_TYPE" /> هذا على الإعدادات الأصلية. وسيتم محو جميع حسابات المستخدمين والبيانات المحلّية.</translation> <translation id="8084114998886531721">كلمة مرور محفوظة</translation> +<translation id="8084510406207562688">&استعادة جميع علامات التبويب</translation> <translation id="8086015605808120405">جارٍ إعداد <ph name="PRINTER_NAME" /> ...</translation> <translation id="8086442853986205778">إعداد <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{هذا الملف مشفّر. يُرجى طلب فكّ تشفيره من المالك.}zero{بعض هذه الملفات مشفّرة. يُرجى طلب فكّ تشفيرها من المالك.}two{هذان الملفان مشفّران. يُرجى طلب فكّ تشفيرهما من المالك.}few{بعض هذه الملفات مشفّرة. يُرجى طلب فكّ تشفيرها من المالك.}many{بعض هذه الملفات مشفّرة. يُرجى طلب فكّ تشفيرها من المالك.}other{بعض هذه الملفات مشفّرة. يُرجى طلب فكّ تشفيرها من المالك.}}</translation> @@ -6513,6 +6548,7 @@ <translation id="8119438628456698432">جارٍ إنشاء ملفات السجلّ...</translation> <translation id="811994229154425014">مسافة مزدوجة لكتابة نقطة</translation> <translation id="8120505434908124087">تثبيت الملف الشخصي لشريحة eSIM</translation> +<translation id="812260729110117038">يمكن للمعلِنين والناشرين تحديد مدى فعالية الإعلانات بدون الحاجة إلى تتبّع نشاطك في المواقع الإلكترونية.</translation> <translation id="8123590694679414600">تم ترميز بياناتك باستخدام عبارة مرور المزامنة في <ph name="TIME" />. لا يتضمّن ذلك طرق الدفع والعناوين من Google Pay.</translation> <translation id="81238879832906896">زهرة صفراء وبيضاء</translation> @@ -6550,6 +6586,7 @@ <translation id="816055135686411707">حدث خطأ أثناء إعداد ثقة الشهادة</translation> <translation id="8160775796528709999">يمكنك الحصول على مقاطع شرح لملفات الصوت والفيديو عن طريق تفعيل ميزة "النسخ النصي التلقائي" من خلال الإعدادات.</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />، <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">من خلال <ph name="BEGIN_LINK" />مبادرة حماية الخصوصية<ph name="END_LINK" />، نعمل في Chrome على تطوير تقنيات جديدة لحمايتك من آليات التتبُّع في جميع المواقع الإلكترونية مع الحفاظ على محتوى شبكة الإنترنت المفتوحة المتاحة للجميع.</translation> <translation id="8161293209665121583">وضع القارئ لصفحات الويب</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{نقل علامة تبويب واحدة إلى نافذة جديدة}zero{نقل علامات تبويب إلى نافذة جديدة}two{نقل علامتَي تبويب إلى نافذة جديدة}few{نقل علامات تبويب إلى نافذة جديدة}many{نقل علامات تبويب إلى نافذة جديدة}other{نقل علامات تبويب إلى نافذة جديدة}}</translation> <translation id="8165997195302308593">إعادة توجيه منفذ Crostini</translation> @@ -6751,7 +6788,6 @@ <translation id="8393700583063109961">إرسال رسالة</translation> <translation id="8397825320644530257">قطع اتصال الهاتف المتّصل</translation> <translation id="8398877366907290961">المتابعة على كلّ حال</translation> -<translation id="8400146488506985033">إدارة الأشخاص</translation> <translation id="8401432541486058167">عليك تقديم رقم التعريف الشخصي المرتبط بالبطاقة الذكية التابعة لك.</translation> <translation id="8404893580027489425">مستشعر بصمات الإصبع في الجانب الأيمن من جهاز <ph name="DEVICE_TYPE" />. يمكنك لمسه برفقٍ بأي إصبع.</translation> <translation id="8405046151008197676">الحصول على السمات المميزة من آخر تحديث</translation> @@ -6807,7 +6843,6 @@ <translation id="8465444703385715657">يتطلب تشغيل <ph name="PLUGIN_NAME" /> إذنًا منك</translation> <translation id="8466417995783206254">تشغِّل علامة التبويب هذه فيديو في وضع "نافذة ضمن نافذة".</translation> <translation id="8467326454809944210">اختيار لغة أخرى</translation> -<translation id="8470214316007448308">مستخدمون آخرون</translation> <translation id="8470513973197838199">كلمات المرور المحفوظة لـ <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">تتّصل المواقع الإلكترونية عادةً بأجهزة USB لتتيح ميزات مثل طباعة مستند أو حفظ مستند على جهاز تخزين.</translation> <translation id="8471959340398751476">ميزة الحصول على الخصومات غير مفعّلة. يمكنك تفعيلها من خلال القائمة المخصّصة.</translation> @@ -6994,12 +7029,14 @@ <translation id="8676374126336081632">محو الإرسال</translation> <translation id="8676770494376880701">تمّ توصيل شاحن منخفض الطاقة</translation> <translation id="8677212948402625567">تصغير الكل...</translation> +<translation id="867767487203716855">التحديث التالي</translation> <translation id="8677859815076891398">لا تتوفّر أيّ ألبومات. يمكنك إنشاء ألبوم في <ph name="LINK_BEGIN" />صور Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">عدم تصغير علامات التبويب</translation> <translation id="8678933587484842200">كيف تريد بدء عمل هذا التطبيق؟</translation> <translation id="8680251145628383637">سجّل الدخول للحصول على الإشارات المرجعية، والسجل، وكلمات المرور، والإعدادات الأخرى على جميع أجهزتك. سيتم أيضًا تسجيل دخولك تلقائيًا إلى خدمات Google.</translation> <translation id="8681614230122836773">عثر متصفّح Chrome على برنامج ضارّ على جهاز الكمبيوتر.</translation> <translation id="8682730193597992579">تم توصيل <ph name="PRINTER_NAME" /> وهي جاهزة للاستخدام.</translation> +<translation id="8683081248374354009">إعادة تحديد المجموعة</translation> <translation id="8688591111840995413">كلمة مرور سيئة</translation> <translation id="8688672835843460752">متوفِّر</translation> <translation id="8690129572193755009">السماح للمواقع الإلكترونية بطلب معالجة البروتوكولات</translation> @@ -7081,7 +7118,6 @@ <translation id="87646919272181953">ألبوم "صور Google"</translation> <translation id="8767621466733104912">تحديث Chrome لجميع المستخدمين تلقائيًا</translation> <translation id="8770406935328356739">الدليل الجذر للإضافة</translation> -<translation id="8770507190024617908">إدارة الأشخاص</translation> <translation id="8771300903067484968">تمت إعادة ضبط خلفية الصفحة الرئيسية إلى الخلفية التلقائية.</translation> <translation id="8773302562181397928">حفظ <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">تأكيد الاستعادة</translation> @@ -7346,6 +7382,7 @@ <translation id="9031549947500880805">يمكنك الاحتفاظ بنسخة احتياطية في Google Drive. ويمكنك استعادة بياناتك أو تبديل جهازك بسهولة وفي أي وقت. وتتضمّن نسختك الاحتياطية بيانات التطبيق.</translation> <translation id="9033765790910064284">متابعة على أي حال</translation> <translation id="9033857511263905942">ل&صق</translation> +<translation id="9035689366572880647">إدخال رقم التعريف الشخصي الحالي</translation> <translation id="9037640663275993951">الجهاز غير مسموح به.</translation> <translation id="9037818663270399707">اتصالك بهذا الموقع الإلكتروني ليس خاصًا لجميع حركة بيانات الشبكة.</translation> <translation id="9037965129289936994">عرض الصفحة الأصلية</translation> @@ -7421,6 +7458,7 @@ <translation id="9112748030372401671">تغيير الخلفية</translation> <translation id="9112786533191410418">قد يكون الملف <ph name="FILE_NAME" /> خطيرًا. هل تريد إرسال الملف إلى Google لفحصه؟</translation> <translation id="9112987648460918699">بحث...</translation> +<translation id="9113240369465613386">الصفحات الفردية فقط</translation> <translation id="9114663181201435112">تسجيل الدخول بسهولة</translation> <translation id="9115675100829699941">إ&شارات مرجعية</translation> <translation id="9116465289595958864">آخر تعديل</translation> @@ -7575,6 +7613,7 @@ <translation id="991413375315957741">أجهزة استشعار الإضاءة أو الحركة</translation> <translation id="992032470292211616">قد تضر الإضافات والتطبيقات والمظاهر بجهازك. هل تريد فعلًا المتابعة؟</translation> <translation id="992256792861109788">وردي</translation> +<translation id="992401651319295351">يتبقى لديك <ph name="RETRIES" /> محاولة. لن تتمكّن من استخدام هذه الشبكة إلى أن يتم إعداد رقم تعريف شخصي جديد.</translation> <translation id="992592832486024913">إيقاف ChromeVox (التعليقات المنطوقة)</translation> <translation id="992778845837390402">الاحتفاظ بنسخة احتياطية من Linux قيد التقدم حاليًا</translation> <translation id="993540765962421562">التثبيت قيد التقدم</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index c0c1a021..26716de 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -709,6 +709,7 @@ <translation id="173628468822554835">বুজি পালোঁ। আপুনি চোৱা নতুন ছাইটসমূহে ডিফ’ল্ট হিচাপে আপোনালৈ জাননীসমূহ নপঠিয়াব।</translation> <translation id="1736419249208073774">অন্বেষণ কৰক</translation> <translation id="1737968601308870607">বাগ ফাইল কৰক</translation> +<translation id="1739684185846730053">গোপনীয়তা বিষয়ক ছেণ্ডবক্সৰ ট্ৰায়েলসমূহ এতিয়াও সক্ৰিয়ভাৱে বিকাশ কৰি থকা হৈছে আৰু এইবোৰ বাছনিকৃত কিছুমান অঞ্চলত উপলব্ধ। সদ্যহতে, ছাইটসমূহে তৃতীয় পক্ষৰ কুকিৰ দৰে বৰ্তমানৰ ৱেব প্ৰযুক্তিসমূহ ব্যৱহাৰ কৰি থাকিও গোপনীয়তা বিষয়ক ছেণ্ডবক্স ব্যৱহাৰ কৰি চাব পাৰে।</translation> <translation id="174123615272205933">কাষ্টম</translation> <translation id="1741314857973421784">অব্যাহত ৰাখক</translation> <translation id="1743570585616704562">চিনাক্ত কৰিব পৰা নাই</translation> @@ -1133,6 +1134,7 @@ <translation id="217576141146192373">প্ৰিণ্টাৰটো যোগ কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ প্ৰিণ্টাৰটোৰ কনফিগাৰেশ্বন পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="2177950615300672361">ইনক'গনিট' টেব: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA কম্প্ৰমাইজ</translation> +<translation id="2179416702468739594">উপলব্ধ প্ৰ’ফাইল বিচাৰি থকা হৈছে। এইটোৱে কেইমিনিটমানৰ বাবে আপোনাৰ ম’বাইলৰ নেটৱৰ্কৰ সংযোগ বিচ্ছিন্ন কৰিব পাৰে।</translation> <translation id="2182058453334755893">আপোনাৰ ক্লিপব’ৰ্ডলৈ প্ৰতিলিপি কৰা হৈছে</translation> <translation id="2184515124301515068">ছাইটসমূহে কেতিয়া ধ্বনি বজাব পাৰিব সেয়া Chromeক বাছনি কৰিবলৈ দিয়ক (আমি চুপাৰিছ কৰোঁ)</translation> <translation id="2186711480981247270">অন্য এটা ডিভাইচৰ পৰা শ্বেয়াৰ কৰা পৃষ্ঠা</translation> @@ -1401,6 +1403,7 @@ <translation id="2469375675106140201">বানান পৰীক্ষক কাষ্ট'মাইজ কৰক</translation> <translation id="247051149076336810">ফাইল শ্বেয়াৰ কৰা URL</translation> <translation id="2470702053775288986">অসমর্থিত এক্সটেনশ্বন অক্ষম কৰা হ’ল</translation> +<translation id="2470939964922472929">বহুবাৰ এটা ভুল পিন দিয়া হৈছে। এটা নতুন পিন ছেট কৰিবলৈ, আপোনাৰ বাহকে প্ৰদান কৰা ৮ টা অংকৰ অৱৰোধৰ পৰা আঁতৰোৱাৰ ব্যক্তিগত কীটো (PUK) দিয়ক।</translation> <translation id="2471469610750100598">ক’লা (ডিফ’ল্ট)</translation> <translation id="2471506181342525583">অৱস্থানৰ এক্সেছৰ অনুমতি দিয়া হৈছে</translation> <translation id="2473195200299095979">এই পৃষ্ঠাটো অনুবাদ কৰক</translation> @@ -1696,6 +1699,7 @@ <translation id="2785873697295365461">ফাইলৰ বিৱৰণ কৰোতা</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">গোটৰ সদস্য</translation> <translation id="2789486458103222910">ঠিক আছে</translation> <translation id="2791529110887957050">Linux আঁতৰাওক</translation> <translation id="2791952154587244007">কোনো আসোঁৱাহ হৈছে। এই ডিভাইচটোত কিয়’স্ক এপ্লিকেশ্বনসমূহ স্বয়ংক্ৰিয়ভাৱে লঞ্চ কৰিবলৈ সক্ষম নহ’ব।</translation> @@ -1997,6 +2001,7 @@ <translation id="310671807099593501">ছাইটটোৱে ব্লুটুথ ব্যৱহাৰ কৰি আছে</translation> <translation id="3108931485517391283">লাভ কৰিব নোৱাৰি</translation> <translation id="3109724472072898302">সংকুচিত কৰা আছে</translation> +<translation id="3113592018909187986">আপোনাৰ ১ টা প্ৰয়াস বাকী আছে। আপুনি এটা নতুন পিন ছেট নকৰা পৰ্যন্ত এই নেটৱৰ্কটো ব্যৱহাৰ কৰিবলৈ সক্ষম নহ’ব।</translation> <translation id="311394601889664316">ছাইটক আপোনাৰ ডিভাইচত ফাইল আৰু ফ’ল্ডাৰ সম্পাদনা কৰাৰ অনুমতি নিদিব</translation> <translation id="3115147772012638511">কেশ্বৰ কাৰণে অপেক্ষা কৰি থকা হৈছে...</translation> <translation id="3115580024857770654">সকলো সংকুচিত কৰক</translation> @@ -2285,6 +2290,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" />ৰ বাবে আৰু অধিক কাৰ্য</translation> <translation id="3441653493275994384">স্ক্ৰীণ</translation> <translation id="3441663102605358937">এই একাউণ্টটো সত্যাপন কৰিবলৈ <ph name="ACCOUNT" />ত পুনৰ ছাইন ইন কৰক</translation> +<translation id="3444641828375597683">বিজ্ঞাপনদাতা আৰু প্ৰকাশকে FLoC ব্যৱহাৰ কৰিব পাৰে, এই পৃষ্ঠাখনত পাছত ইয়াৰ বিষয়ে বৰ্ণনা কৰা হৈছে।</translation> <translation id="3445047461171030979">Google Assistantৰ দ্ৰুত উত্তৰসমূহ</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> মিনিট</translation> <translation id="3445925074670675829">ইউএছবি চি ডিভাইচ</translation> @@ -2865,7 +2871,7 @@ <translation id="4035758313003622889">&কাৰ্য পৰিচালক</translation> <translation id="4036778507053569103">ছাৰ্ভাৰৰ পৰা ডাউনল’ড কৰা নীতিটো অমান্য।</translation> <translation id="4037084878352560732">ঘোঁৰা</translation> -<translation id="4037889604535939429">প্ৰ’ফাইল সম্পাদনা কৰক</translation> +<translation id="4040753847560036377">ভুল PUK</translation> <translation id="4044612648082411741">আপোনাৰ প্ৰমাণপত্ৰৰ পাছৱৰ্ডটো দিয়ক</translation> <translation id="4044708573046946214">স্ক্ৰীন লকৰ পাছৱৰ্ড</translation> <translation id="404493185430269859">সন্ধানৰ ডিফ’ল্ট ইঞ্জিন</translation> @@ -3073,6 +3079,7 @@ <translation id="4297813521149011456">ঘূৰ্ণন দেখুৱাওক</translation> <translation id="4299022904780065004">নতুন &ইনক’গনিট’ ৱিণ্ড’</translation> <translation id="4301671483919369635">ফাইলসমূহ সম্পাদনা কৰিবলৈ এই পৃষ্ঠাটোক অনুমতি দিয়া হৈছে</translation> +<translation id="4302605047395093221">এই ডিভাইচটো ব্যৱহাৰ কৰি থকা যিকোনো লোকে এই ম’বাইল নেটৱৰ্কটোৰ সৈতে সংযোগ কৰিবলৈ পিনটো দিব লাগিব</translation> <translation id="4303079906735388947">আপোনাৰ সুৰক্ষা চাবিৰ বাবে এটা নতুন পিন ছেট কৰক</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" />লৈ প্ৰতিলিপি কৰক</translation> <translation id="4305817255990598646">সলনি কৰক</translation> @@ -3258,6 +3265,7 @@ <translation id="4510479820467554003">অভিভাৱকৰ একাউণ্টৰ সূচী</translation> <translation id="4510614391273086606">Linux ফাইল আৰু এপ্সমূহ সেইসমূহৰ বেক আপ কৰি থোৱা অৱস্থালৈ পুনঃস্থাপন কৰি থকা হৈছে।</translation> <translation id="451102079304155829">কাৰ্ট</translation> +<translation id="4513275008300099962">ৱিণ্ড’ নিয়ন্ত্ৰণৰ অ’ভাৰলে’ অক্ষম কৰক</translation> <translation id="4513946894732546136">মতামত</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" />ৰ দ্বাৰা সঞ্চালিত</translation> <translation id="4514610446763173167">প্লে' বা পজ কৰিবলৈ ভিডিঅ' ট'গল কৰক</translation> @@ -4328,7 +4336,6 @@ <translation id="5709557627224531708">Chromeক আপোনাৰ ডিফ'ল্ট ব্ৰাউজাৰ হিচাপে ছেট কৰক</translation> <translation id="5711983031544731014">আনলক কৰিব পৰা নগ’ল। আপোনাৰ পাছৱৰ্ড দিয়ক।</translation> <translation id="5712153969432126546">ছাইটে কেতিয়াবা কেতিয়াবা নথি, সম্পৰ্ক আৰু ফৰ্মৰ দৰে PDF প্ৰকাশ কৰে</translation> -<translation id="5712323955984474772">পৰৱৰ্তী আপডে’ট</translation> <translation id="5715711091495208045">প্লাগ ইন ব্ৰ’কাৰ: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">সন্ধানৰ ডিফ'ল্ট ইঞ্জিন</translation> <translation id="5719637365829998022">কিউআৰ ক’ডটো স্কেন কৰা হৈছে।</translation> @@ -4599,10 +4606,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB ডিভাইচ সংযোগ কৰা হৈছে</translation> <translation id="6028117231645531007">ফিংগাৰপ্ৰিণ্ট যোগ কৰক</translation> <translation id="6031600495088157824">টুলবাৰত থকা ইনপুটৰ বিকল্পসমূহ</translation> +<translation id="6032091552407840792">এই ট্ৰায়েলটো কেৱল <ph name="BEGIN_LINK" />কিছুমান অঞ্চল<ph name="END_LINK" />ত সক্ৰিয়।</translation> <translation id="6032715498678347852">কোনো এক্সটেনশ্বনক এই ছাইটটোলৈ এক্সেছ দিবলৈ এইটোত ক্লিক কৰক।</translation> <translation id="6032912588568283682">ফাইল ছিষ্টেম</translation> <translation id="603539183851330738">স্বয়ংক্ৰিয় শুধৰণি আনডু কৰা বুটাম। পুনৰ <ph name="TYPED_WORD" />লৈ সলনি কৰক। সক্ৰিয় কৰিবলৈ এণ্টাৰ টিপক, অগ্ৰাহ্য কৰিবলৈ এস্কে’প টিপক।</translation> <translation id="6038929619733116134">ছাইটে অননুমোদিত বা বিভ্ৰান্তিকৰ বিজ্ঞাপন দেখুৱালে সেয়া অৱৰোধ কৰক</translation> +<translation id="603895874132768835">আপুনি এটা নতুন পিন ছেট নকৰা পৰ্যন্ত এই নেটৱৰ্কটো ব্যৱহাৰ কৰিবলৈ সক্ষম নহ’ব</translation> <translation id="6039651071822577588">নেটৱৰ্ক সম্পত্তিৰ অভিধান ভুল হৈছে</translation> <translation id="6040143037577758943">বন্ধ কৰক</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Googleৰ অৱস্থান সেৱাই আপোনাৰ ডিভাইচৰ অৱস্থান নিৰ্ণয় কৰাত সহায় কৰিবলৈ ৱাই-ফাই আৰু ম’বাইল নেটৱৰ্কৰ দৰে উৎসবোৰ ব্যৱহাৰ কৰে৷<ph name="END_PARAGRAPH1" /> @@ -4850,6 +4859,7 @@ <translation id="6292699686837272722">টেবসমূহ এক মধ্যমীয়া প্ৰস্থলৈ সংকুচিত হয়</translation> <translation id="6295158916970320988">সকলো ছাইট</translation> <translation id="6295855836753816081">ছেভ কৰি থকা হৈছে...</translation> +<translation id="6296410173147755564">অমান্য PUK</translation> <translation id="6298962879096096191">Androidৰ এপ্ ইনষ্টল কৰিবলৈ Google Play ব্যৱহাৰ কৰক</translation> <translation id="6300177430812514606">ডেটা পঠিওৱা অথবা গ্ৰহণ কৰাটো সম্পূৰ্ণ কৰাৰ অনুমতি নাই</translation> <translation id="630065524203833229">প্ৰ&স্থান কৰক</translation> @@ -4896,6 +4906,7 @@ <translation id="6340526405444716530">ব্যক্তিগতকৰণ</translation> <translation id="6341850831632289108">আপোনাৰ অৱস্থান চিনাক্ত কৰক</translation> <translation id="6342069812937806050">খন্তেক পূর্বে</translation> +<translation id="6343003829431264373">কেৱল যুগ্ম সংখ্যাৰ পৃষ্ঠা</translation> <translation id="6344170822609224263">নেটৱর্ক সংযোগৰ এক্সেছ সূচী</translation> <translation id="6344576354370880196">ছেভ কৰি ৰখা প্ৰিণ্টাৰসমূহ</translation> <translation id="6345418402353744910">প্ৰশাসকগৰাকীয়ে আপোনাৰ নেটৱৰ্কটো কনফিগাৰ কৰিব পৰা হ'বলৈ প্ৰক্সিটোৰ <ph name="PROXY" /> বাবে আপোনাৰ ব্যৱহাৰকাৰীৰ নাম আৰু পাছৱৰ্ডৰ প্ৰয়োজন</translation> @@ -5093,7 +5104,6 @@ <translation id="6563469144985748109">আপোনাৰ পৰিচালকে এই পর্যন্ত এইটো অনুমোদন জনোৱা নাই</translation> <translation id="6568283005472142698">টেব সন্ধান</translation> <translation id="6569911211938664415">আপুনি আটাইবোৰ ডিভাইচতে ব্যৱহাৰ কৰিব পৰাকৈ নিজৰ Google একাউণ্টত (<ph name="ACCOUNT" />) পাছৱৰ্ডসমূহ ছেভ কৰি ৰখা হয়</translation> -<translation id="6569934958368283244">অন্য লোক</translation> <translation id="6573497332121198392">শ্বর্টকাট আঁতৰাব নোৱাৰি</translation> <translation id="657402800789773160">এই পৃষ্ঠাটো &পুনৰ ল'ড কৰক</translation> <translation id="6577284282025554716">ডাউনল’ড বাতিল কৰা হৈছে: <ph name="FILE_NAME" /></translation> @@ -5142,6 +5152,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" />ত সংবেদনশীল অথবা বিপজ্জনক সমল আছে। এইটোৰ গৰাকীক সমাধান কৰিবলৈ কওক।</translation> <translation id="6624687053722465643">মিষ্টতা</translation> <translation id="6628328486509726751"><ph name="WEBRTC_LOG_UPLOAD_TIME" />এ আপল’ড কৰা হৈছে</translation> +<translation id="6629518321609546825">অতি কমেও ৪ টা সংখ্যা দিয়ক</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" />ক আপোনাৰ হৈ নিজকে সত্যাপন কৰিবলৈ এখন প্ৰমাণপত্ৰলৈ চিৰদিনৰ বাবে এক্সেছৰ দৰকাৰ।</translation> <translation id="6635362468090274700">আপুনি নিজকে দৃশ্যমান নকৰালৈকে কোনেও আপোনাৰ সৈতে শ্বেয়াৰ কৰিব নোৱাৰে।<ph name="BR" /><ph name="BR" />আপোনাক নিজকে সাময়িকভাৱে দৃশ্যমান কৰিবলৈ বিভিন্ন স্থিতি দেখুওৱা ঠাইখিনি খোলক, তাৰ পাছত নিকটৱৰ্তী দৃশ্যমানতা অন কৰক।</translation> <translation id="6635944431854494329">গৰাকীজনে ছেটিংসমূহ > উন্নত > Googleলৈ স্বয়ংক্রিয়ভাৱে ডাইগন‘ষ্টিক আৰু ব্যৱহাৰৰ ডেটা পঠিয়াওকৰ পৰা এই সুবিধাটো নিয়ন্ত্ৰণ কৰিব পাৰে।</translation> @@ -5180,6 +5191,7 @@ <translation id="6664774537677393800">আপোনাৰ প্ৰ’ফাইলটো খুলি থাকোঁতে কিবা ভুল হ’ল। অনুগ্ৰহ কৰি ছাইন আউট কৰি পুনৰ ছাইন ইন কৰক।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> এতিয়া উপলব্ধ</translation> <translation id="6671320560732140690">{COUNT,plural, =1{এটা ঠিকনা}one{# টা ঠিকনা}other{# টা ঠিকনা}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" />ৰ দ্বাৰা পৰিচালনা কৰাৰ সুবিধাটো ছেট আপ কৰা</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (ইউএছবি)</translation> <translation id="6674571176963658787">ছিংক আৰম্ভ কৰিবলৈ আপোনাৰ পাছফ্ৰেজ দিয়ক</translation> <translation id="6675665718701918026">নির্দেশ কৰা ডিভাইচ সংযোগ কৰা হৈছে</translation> @@ -5188,6 +5200,7 @@ <translation id="6680442031740878064">উপলব্ধ: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">হাৰ</translation> <translation id="6681668084120808868">ফট’ তোলক</translation> +<translation id="6683087162435654533">আটাইবোৰ টেব পুনঃস্থাপন কৰক</translation> <translation id="6683948477137300040">ডিভাইচৰ ইআইডি আৰু কিউআৰ ক’ড পপআপ দেখুৱাওক</translation> <translation id="6684827949542560880">শেহতীয়া আপডে'টটো ডাউনল’ড কৰি থকা হৈছে</translation> <translation id="668599234725812620">Google Play খোলক</translation> @@ -5755,6 +5768,7 @@ <translation id="7308643132139167865">ৱেবছাইটৰ ভাষা</translation> <translation id="7309257895202129721">নিয়ন্ত্ৰণ দেখুৱাওক</translation> <translation id="7310598146671372464">লগইন কৰিব পৰা নগ’ল৷ ছাৰ্ভাৰটোৱে নিৰ্দিষ্ট কৰা Kerberosৰ এনক্ৰিপশ্বন প্ৰকাৰসমূহ সমৰ্থন নকৰে৷ আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation> +<translation id="7315168816273861089">ৱিণ্ড’ নিয়ন্ত্ৰণৰ অ’ভাৰলে’ সক্ষম কৰক</translation> <translation id="7320213904474460808">নেটৱৰ্কক ডিফ’ল্ট বনাওক</translation> <translation id="7321545336522791733">ছাৰ্ভাৰৰ লগত সংযোগ কৰিব পৰা নাই</translation> <translation id="7324297612904500502">বিটা ফ’ৰাম</translation> @@ -5931,7 +5945,9 @@ <translation id="7506541170099744506">আপোনাৰ <ph name="DEVICE_TYPE" />ক এণ্টাৰপ্ৰাইজ পৰিচালনাৰ বাবে পঞ্জীয়ন কৰা হৈছে।</translation> <translation id="7507207699631365376">এই প্ৰদানকাৰীৰ <ph name="BEGIN_LINK" />গোপনীয়তাৰ নীতি<ph name="END_LINK" /> চাওক</translation> <translation id="7507930499305566459">স্থিতি উত্তৰদাতাৰ প্ৰমাণপত্ৰ</translation> +<translation id="7509097596023256288">পৰিচালনা কৰাৰ সুবিধাটো ছেট আপ কৰি থকা হৈছে</translation> <translation id="7509246181739783082">আপোনাৰ পৰিচয় সত্যাপন কৰক</translation> +<translation id="7511415964832680006">অন কৰি থোৱা থাকিলে, ছাইটসমূহে নিজৰ সমল আৰু সেৱা প্ৰদান কৰিবলৈ ইয়াত দেখুওৱা গোপনীয়তা সংৰক্ষণৰ কৌশলসমূহ ব্যৱহাৰ কৰিব পাৰে। এইবিলাকত ক্ৰছ-ছাইট ট্ৰেকিঙৰ বিকল্পসমূহ অন্তৰ্ভুক্ত। সময়ৰ লগে লগে অধিক ট্ৰায়েল যোগ দিয়া হ’ব পাৰে।</translation> <translation id="7513029293694390567">ষ্ট’ৰ কৰি থোৱা ক্ৰিডেনশ্বিয়েল ব্যৱহাৰ কৰি ৱেবছাইটত স্বয়ংক্রিয়ভাৱে ছাইন ইন কৰক। যদি অক্ষম কৰি ৰখা হয় তেন্তে প্ৰতিবাৰ কোনো ৱেবছাইটত ছাইন ইন কৰাৰ সময়ত আপোনাক নিশ্চিত কৰিবলৈ কোৱা হ’ব।</translation> <translation id="7514239104543605883">আপোনাৰ ডিভাইচটোলৈ প্ৰতিলিপি কৰক</translation> <translation id="7514365320538308">ডাউনল'ড কৰক</translation> @@ -6290,6 +6306,7 @@ <translation id="7876027585589532670">শ্বৰ্টকাট সম্পাদনা কৰিব নোৱাৰি</translation> <translation id="7877451762676714207">ছার্ভাৰৰ অজ্ঞাত আসোঁৱাহ। অনুগ্ৰহ কৰি পাছত পুনৰ চেষ্টা কৰক বা ছার্ভাৰৰ প্ৰশাসকৰ সৈতে সম্পর্ক কৰক।</translation> <translation id="7879631849810108578">শ্বৰ্টকাট ছেট কৰা হৈছে: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">অন হৈ থকা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপুনি থকা কোনো গোট অথবা “একেধৰণৰ বৈশিষ্ট শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ ৭ দিনৰ ব্ৰাউজিঙৰ ইতিহাস ব্যৱহাৰ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে। এই ডিভাইচটোত আপোনাৰ ব্ৰাউজিঙৰ ইতিহাস ব্যক্তিগত কৰি ৰখা হয়। এই ট্ৰায়েলটো কেৱল <ph name="BEGIN_LINK" />কিছুমান অঞ্চল<ph name="END_LINK" />ত সক্ৰিয়।</translation> <translation id="7880823633812189969">আপুনি ৰিষ্টার্ট কৰিলে স্থানীয় ডেটা মচা হ'ব</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">একাউণ্টটো চাওক</translation> @@ -6448,6 +6465,7 @@ <translation id="804786196054284061">অন্তিম ব্যৱহাৰকাৰীৰ অনুজ্ঞাপত্ৰৰ চুক্তি</translation> <translation id="8048977114738515028">এই প্ৰ’ফাইলটোৰ পোনপটীয়াকৈ এক্সেছ পাবলৈ আপোনাৰ ডিভাইচত এটা ডেস্কটপ শ্বৰ্টকাট সৃষ্টি কৰক</translation> <translation id="8049029041626250638">এখন কীব’ৰ্ড অথবা এটা মাউছ সংযোগ কৰক। আপুনি যদি ব্লুটুথ ডিভাইচ ব্যৱহাৰ কৰি আছে, আপোনাৰ ডিভাইচসমূহ পেয়াৰ কৰিবলৈ সাজু হৈ আছে বুলি নিশ্চিত কৰক।</translation> +<translation id="8049184478152619004">অৱৰোধৰ পৰা আঁতৰোৱাৰ ব্যক্তিগত কীটো (PUK) দিয়ক</translation> <translation id="8049705080247101012">Googleএ "<ph name="EXTENSION_NAME" />"ক ক্ষতিকাৰক হিচাপে চিহ্নিত কৰিছে আৰু ইনষ্টলেশ্বন প্ৰক্ৰিয়াক বাধা প্ৰদান কৰিছে</translation> <translation id="8049948037269924837">টাচ্পেড ওলোটাকৈ স্ক্র’ল কৰাৰ সুবিধা</translation> <translation id="8050038245906040378">Microsoft কমাৰ্চিয়েল ক’ড ছাইনিং</translation> @@ -6484,6 +6502,7 @@ <translation id="8082106343289440791">"<ph name="DEVICE_NAME" />" ৰ সৈতে পেয়াৰ কৰিবনে?</translation> <translation id="8082390128630131497">ADB ডিবাগিং অক্ষম কৰা কার্যই এই <ph name="DEVICE_TYPE" />টো ফেক্টৰী ছেটিংসমূহলৈ ৰিছেট কৰিব। সকলো ব্যৱহাৰকাৰীৰ একাউণ্ট আৰু স্থানীয় ডেটা মচি পেলোৱা হ’ব।</translation> <translation id="8084114998886531721">ছেভ কৰা পাছৱর্ড</translation> +<translation id="8084510406207562688">আটাইবোৰ টেব পুনঃস্থাপন কৰক</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> কনফিগাৰ কৰি থকা হৈছে...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> ছেট আপ কৰক</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{এই ফাইলটো এনক্ৰিপ্ট কৰা আছে। এইটোৰ গৰাকীক ডিক্ৰিপ্ট কৰিবলৈ কওক।}one{এই ফাইলসমূহৰ কিছুসংখ্যক এনক্ৰিপ্ট কৰা আছে। সেইকেইটাৰ গৰাকীক ডিক্ৰিপ্ট কৰিবলৈ কওক।}other{এই ফাইলসমূহৰ কিছুসংখ্যক এনক্ৰিপ্ট কৰা আছে। সেইকেইটাৰ গৰাকীক ডিক্ৰিপ্ট কৰিবলৈ কওক।}}</translation> @@ -6525,6 +6544,7 @@ <translation id="8119438628456698432">লগ ফাইলসমূহ সৃষ্টি কৰি থকা হৈছে...</translation> <translation id="811994229154425014">দাড়ি টাইপ কৰিবলৈ দুবাৰ স্পে’চ টিপা</translation> <translation id="8120505434908124087">ই-ছিমৰ প্ৰ’ফাইল ইনষ্টল কৰক</translation> +<translation id="812260729110117038">বিজ্ঞাপনদাতা আৰু প্ৰকাশকে আপোনাক বিভিন্ন ছাইটত ট্ৰেক নকৰাকৈ বিজ্ঞাপনৰ ফলপ্ৰসূতা অধ্যয়ন কৰিব পাৰে।</translation> <translation id="8123590694679414600">আপোনাৰ ছিংক পাছফ্ৰেজৰ সৈতে <ph name="TIME" />ত ডেটা এনক্ৰিপ্ট কৰা হৈছে। ইয়াত Google Payৰ পৰিশোধ পদ্ধতি আৰু ঠিকনাবোৰ অন্তৰ্ভুক্ত নহয়।</translation> <translation id="81238879832906896">হালধীয়া আৰু বগা ফুল</translation> @@ -6562,6 +6582,7 @@ <translation id="816055135686411707">প্ৰমাণপত্ৰৰ বিশ্বাস ছেট কৰোঁতে আসোঁৱাহ হ’ল</translation> <translation id="8160775796528709999">ছেটিংসমূহত লাইভ কেপশ্বন সক্ষম কৰি আপোনাৰ অডিঅ’ আৰু ভিডিঅ’ৰ বাবে কেপশ্বনসমূহ পাওক</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Chromeএ <ph name="BEGIN_LINK" />গোপনীয়তা বিষয়ক ছেণ্ডবক্স<ph name="END_LINK" />ৰ জৰিয়তে, আপোনাক মুক্ত ৱেবক সুৰক্ষিত কৰি ৰাখি ক্ৰছ-ছাইট ট্ৰেকিঙৰ পৰা আপোনাক সুৰক্ষা প্ৰদান কৰিবলৈ নতুন প্ৰযুক্তি বিকাশ কৰি আছে।</translation> <translation id="8161293209665121583">ৱে’ব পৃষ্ঠাসমূহৰ বাবে ৰীডাৰ ম’ড</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{টেবটো নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}one{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}other{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}}</translation> <translation id="8165997195302308593">Crostiniৰ প’ৰ্ট ফৰৱাৰ্ডিং</translation> @@ -6762,7 +6783,6 @@ <translation id="8393511274964623038">প্লাগইন বন্ধ কৰক</translation> <translation id="8397825320644530257">সংযুক্ত হৈ থকা ফ’নৰ সংযোগ বিচ্ছিন্ন কৰক</translation> <translation id="8398877366907290961">যিকোনো প্ৰকাৰে অব্যাহত ৰাখক</translation> -<translation id="8400146488506985033">লোক পৰিচালনা কৰক</translation> <translation id="8401432541486058167">আপোনাৰ স্মাৰ্ট কাৰ্ডখনৰ সৈতে জড়িত পিনটো দিয়ক।</translation> <translation id="8404893580027489425">ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো আপোনাৰ <ph name="DEVICE_TYPE" />ৰ সোঁফালে আছে। যিকোনো এটা আঙুলিৰে এইটো লাহেকৈ স্পৰ্শ কৰক।</translation> <translation id="8405046151008197676">শেহতীয়া আপডে'টটোত হোৱা পৰিৱর্তনবোৰৰ সাৰাংশ পাওক</translation> @@ -6818,7 +6838,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" />ক চলিবলৈ আপোনাৰ অনুমতিৰ আৱশ্যক</translation> <translation id="8466417995783206254">এই টেবটোৱে চিত্ৰৰ ভিতৰত চিত্ৰ ম'ডত এটা ভিডিঅ' প্লে' কৰি আছে।</translation> <translation id="8467326454809944210">অন্য এটা ভাষা বাছনি কৰক</translation> -<translation id="8470214316007448308">অন্য লোক</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />ৰ বাবে ছেভ কৰি থোৱা পাছৱৰ্ড</translation> <translation id="8471525937465764768">ছাইটসমূহে সচৰাচৰ নথি প্ৰিণ্ট কৰা অথবা এটা ষ্ট'ৰেজ ডিভাইচত ছেভ কৰাৰ দৰে সুবিধাসমূহৰ বাবে ইউএছবি ডিভাইচসমূহৰ সৈতে সংযোগ কৰে</translation> <translation id="8471959340398751476">ৰেহাইসমূহ অফ কৰা আছে। আপুনি সেইবোৰ কাষ্টমাইজ মেনুখনত অন কৰিব পাৰে</translation> @@ -7005,6 +7024,7 @@ <translation id="8676374126336081632">ইনপুট মচক</translation> <translation id="8676770494376880701">কম শক্তিযুক্ত চ্চাৰ্জাৰ সংযোগ কৰা হৈছে</translation> <translation id="8677212948402625567">সকলো সংকোচন কৰক...</translation> +<translation id="867767487203716855">পৰৱৰ্তী আপডে’ট</translation> <translation id="8677859815076891398">কোনো এলবাম নাই। <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />ত এটা এলবাম সৃষ্টি কৰক।</translation> <translation id="8678582529642151449">টেবসমূহ সংকুচিত নহয়</translation> <translation id="8678933587484842200">আপুনি এই এপ্লিকেশ্বনটো কেনেকৈ লঞ্চ হোৱাটো বিচাৰে?</translation> @@ -7093,7 +7113,6 @@ <translation id="87646919272181953">Google Photosৰ এলবাম</translation> <translation id="8767621466733104912">সকলো ব্যৱহাৰকাৰীৰ বাবে Chrome স্বয়ংক্ৰিয়ভাৱে আপডে'ট কৰক</translation> <translation id="8770406935328356739">এক্সটেনশ্বন ৰুট ডাইৰেক্টৰী</translation> -<translation id="8770507190024617908">লোকক পৰিচালনা কৰক</translation> <translation id="8771300903067484968">আৰম্ভণিৰ পৃষ্ঠাৰ নেপথ্য ডিফ’ল্ট নেপথ্যলৈ ৰিছেট কৰা হ’ল।</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ছেভ কৰক</translation> <translation id="8774379074441005279">পুনঃস্থাপন নিশ্চিত কৰক</translation> @@ -7355,6 +7374,7 @@ <translation id="9031549947500880805">Google Driveত বেক আপ লওক। আপোনাৰ ডেটা সহজে পুনঃস্থাপন কৰক অথবা যিকোনো সময়তে ডিভাইচ সলনি কৰক। আপোনাৰ বেকআপত এপ্ ডেটাও আছে।</translation> <translation id="9033765790910064284">যি হ’লেও অব্যাহত ৰাখক</translation> <translation id="9033857511263905942">&পেষ্ট কৰক</translation> +<translation id="9035689366572880647">বৰ্তমানৰ পিনটো দিয়ক</translation> <translation id="9037640663275993951">ডিভাইচটোৰ অনুমতি নাই</translation> <translation id="9037818663270399707">সকলো নেটৱৰ্কৰ ট্ৰেফিকৰ বাবে আপোনাৰ সংযোগটো ব্যক্তিগত নহয়</translation> <translation id="9037965129289936994">প্ৰকৃত সমল দেখুৱাওক</translation> @@ -7430,6 +7450,7 @@ <translation id="9112748030372401671">আপোনাৰ ৱালপেপাৰ সলনি কৰক</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> বিপজ্জনক হ’ব পাৰে। স্কেন কৰিবৰ বাবে Googleলৈ পঠিয়াবনে?</translation> <translation id="9112987648460918699">বিচাৰক...</translation> +<translation id="9113240369465613386">কেৱল অযুগ্ম সংখ্যাৰ পৃষ্ঠা</translation> <translation id="9114663181201435112">সহজে ছাইন ইন কৰক</translation> <translation id="9115675100829699941">&বুকমার্কসমূহ</translation> <translation id="9116465289595958864">অন্তিমবাৰ সংশোধিত</translation> @@ -7584,6 +7605,7 @@ <translation id="991413375315957741">গতি অথবা পোহৰ ধৰা পেলাব পৰা ছেন্সৰ</translation> <translation id="992032470292211616">এক্সটেনশ্বন, এপ আৰু থীমসমূহে আপোনাৰ ডিভাইচৰ ক্ষতিসাধন কৰিন। আপুনি এয়া নিশ্চিতভাৱে অব্যাহত ৰাখিব বিচাৰেনে?</translation> <translation id="992256792861109788">গুলপীয়া</translation> +<translation id="992401651319295351">আপোনাৰ <ph name="RETRIES" /> টা প্ৰয়াস বাকী আছে। আপুনি এটা নতুন পিন ছেট নকৰা পৰ্যন্ত এই নেটৱৰ্কটো ব্যৱহাৰ কৰিবলৈ সক্ষম নহ’ব।</translation> <translation id="992592832486024913">ChromeVox অক্ষম কৰক (কথিত মতামত)</translation> <translation id="992778845837390402">বর্তমান Linuxৰ বেকআপ প্ৰক্ৰিয়া চলি আছে</translation> <translation id="993540765962421562">ইনষ্টল কৰা প্ৰক্রিয়া চলি আছে</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 81625df..ab28da5 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -2859,7 +2859,6 @@ <translation id="4035758313003622889">Tapşırıq meneceri</translation> <translation id="4036778507053569103">Serverdən endirilmiş qayda yanlışdır.</translation> <translation id="4037084878352560732">At</translation> -<translation id="4037889604535939429">Şəxsi redaktə edin</translation> <translation id="4040753847560036377">Yanlış PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Səhifədən Çıxın}other{Səhifələrdən Çıxın}}</translation> <translation id="4044612648082411741">Sertifikat parolunuzu daxil edin</translation> @@ -4325,7 +4324,6 @@ <translation id="5709557627224531708">Chrome'u defolt brauzer kimi quraşdırın</translation> <translation id="5711983031544731014">Kilidi açmaq mümkün olmadı. Şifrənizi daxil edin.</translation> <translation id="5712153969432126546">Saytlar bəzən sənədlər, müqavilələr və formalar kimi PDF-lər yayımlayır</translation> -<translation id="5712323955984474772">Növbəti Güncəlləmə</translation> <translation id="5715711091495208045">Plaqin Broker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Defolt axtarış sistemləri</translation> <translation id="5719637365829998022">QR kod skanlanıb.</translation> @@ -5095,7 +5093,6 @@ <translation id="6563469144985748109">Meneceriniz hələ ki təsdiq etməyib</translation> <translation id="6568283005472142698">Tab Axtarışı</translation> <translation id="6569911211938664415">Parollar Google Hesabınızda (<ph name="ACCOUNT" />) yadda saxlanılıb. Onları istənilən cihazda istifadə edə bilərsiniz.</translation> -<translation id="6569934958368283244">Digər şəxslər</translation> <translation id="6573497332121198392">Qısayolu silmək olmur</translation> <translation id="657402800789773160">Bu Səhifəni Yenidən yükləyin</translation> <translation id="6577284282025554716">Endirmə ləğv edildi: <ph name="FILE_NAME" /></translation> @@ -6779,7 +6776,6 @@ <translation id="8393700583063109961">Mesaj göndərin</translation> <translation id="8397825320644530257">Qoşulmuş telefonu ayırın</translation> <translation id="8398877366907290961">Hər halda davam edin</translation> -<translation id="8400146488506985033">İnsanları idarə edin</translation> <translation id="8401432541486058167">Smart kartınızla əlaqəli PIN daxil edin.</translation> <translation id="8404893580027489425">Barmaq izi sensoru <ph name="DEVICE_TYPE" /> cihazınızın sağ tərəfindədir. Barmağınızla ona yavaşca toxunun.</translation> <translation id="8405046151008197676">Ən yeni güncəlləmə ilə bağlı yenilikləri əldə edin</translation> @@ -6835,7 +6831,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> işləmək üçün icazənizi gözləyir</translation> <translation id="8466417995783206254">Bu tab şəkil içində şəkil funksiyasında video oxudur.</translation> <translation id="8467326454809944210">Başqa dil seçin</translation> -<translation id="8470214316007448308">Digər Şəxslər</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> üçün parollar yadda saxlanıldı</translation> <translation id="8471525937465764768">Saytlar adətən sənəd çap etmək və ya yaddaş cihazında saxlamaq kimi xüsusiyyətlər üçün USB cihazlarına qoşulur</translation> <translation id="8471959340398751476">Endirimlər deaktivdir. Onları fərdiləşdirmə menyusunda aktiv edə bilərsiniz</translation> @@ -7022,6 +7017,7 @@ <translation id="8676374126336081632">Daxiletməni silin</translation> <translation id="8676770494376880701">Enerjiyə qənaət edən şarjer qoşuldu</translation> <translation id="8677212948402625567">Hamısını yığcamlaşdırın...</translation> +<translation id="867767487203716855">Növbəti güncəlləmə</translation> <translation id="8677859815076891398">Albom yoxdur. <ph name="LINK_BEGIN" />Google Fotoda<ph name="LINK_END" /> albom yaradın.</translation> <translation id="8678582529642151449">Tabların ölçüsü dəyişmir</translation> <translation id="8678933587484842200">Bu tətbiqin necə başlamasını istərdiniz?</translation> @@ -7108,7 +7104,6 @@ <translation id="87646919272181953">Google Foto albomu</translation> <translation id="8767621466733104912">Chrome'u bütün istifadəçilər üçün avtomatik güncəlləyin</translation> <translation id="8770406935328356739">Artırma kökü kataqolu</translation> -<translation id="8770507190024617908">İnsanları İdarə Edin</translation> <translation id="8771300903067484968">Başlanğıc səhifəsinin arxa fonu defolt arxa fona sıfırlanıb.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> cihazını yadda saxlayın</translation> <translation id="8774379074441005279">Bərpanı təsdiq edin</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 3f9129d..462e97f 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -2863,7 +2863,6 @@ <translation id="4035758313003622889">&Менеджар заданняў</translation> <translation id="4036778507053569103">Палітыка, спампаваная з сервера, памылковая.</translation> <translation id="4037084878352560732">Конь</translation> -<translation id="4037889604535939429">Змяніць профіль карыстальніка</translation> <translation id="4040753847560036377">Няправільны PUK-код</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Старонка выхаду}one{Старонкі выхаду}few{Старонкі выхаду}many{Старонкі выхаду}other{Старонкі выхаду}}</translation> <translation id="4044612648082411741">Увядзіце пароль сертыфіката</translation> @@ -3004,7 +3003,7 @@ <translation id="4211851069413100178">Адпраўка даных пра выкарыстанне і дыягностыку. Дапамажыце палепшыць функцыянальнасць прылады Android шляхам аўтаматычнай адпраўкі ў Google даных пра дыягностыку, выкарыстанне прылады і праграм. Яны будуць карысныя для паляпшэння стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Гэта <ph name="BEGIN_LINK1" />налада<ph name="END_LINK1" /> ўключана ўладальнікам. Уладальнік можа ўключыць адпраўку ў Google даных пра выкарыстанне і дыягностыку гэтай прылады. Калі налада "Дадатковыя дзеянні ў інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google. <ph name="BEGIN_LINK2" />Даведацца больш<ph name="END_LINK2" /></translation> <translation id="42126664696688958">Экспартаваць</translation> <translation id="42137655013211669">Доступ да рэсурсу быў забаронены серверам.</translation> -<translation id="4217571870635786043">Дыктаванне</translation> +<translation id="4217571870635786043">Галасавы ўвод</translation> <translation id="4218274196133425560">Выдаліць выключэнне для <ph name="HOST_NAME" /></translation> <translation id="4220648711404560261">Падчас актывацыі ўзнікла памылка.</translation> <translation id="4222772810963087151">Звесткі пра зборку</translation> @@ -4329,7 +4328,6 @@ <translation id="5709557627224531708">Зрабіць Chrome стандартным браўзерам</translation> <translation id="5711983031544731014">Не ўдалося разблакіраваць. Увядзіце пароль.</translation> <translation id="5712153969432126546">Часам сайты публікуюць PDF-файлы (напрыклад, дакументы, кантракты і формы)</translation> -<translation id="5712323955984474772">Наступнае абнаўленне</translation> <translation id="5715711091495208045">Брокер убудовы: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Стандартныя пошукавыя сістэмы</translation> <translation id="5719637365829998022">QR-код адсканіраваны.</translation> @@ -5098,7 +5096,6 @@ <translation id="6563469144985748109">Ваш менеджар пакуль што не ўхваліў гэты сайт</translation> <translation id="6568283005472142698">Пошук па ўкладках</translation> <translation id="6569911211938664415">Паролі захоўваюцца ў вашым Уліковым запісе Google (<ph name="ACCOUNT" />), і вы можаце карыстацца імі на любой прыладзе.</translation> -<translation id="6569934958368283244">Іншыя людзі</translation> <translation id="6573497332121198392">Не ўдалося выдаліць ярлык</translation> <translation id="657402800789773160">&Перазагрузіць старонку</translation> <translation id="6577284282025554716">Спампоўванне скасавана: <ph name="FILE_NAME" /></translation> @@ -6012,7 +6009,7 @@ <translation id="7582582252461552277">Прыярытэтная сетка</translation> <translation id="7582844466922312471">Мабільная перадача даных</translation> <translation id="7583948862126372804">Колькасць</translation> -<translation id="7586051298768394542">Не ўдалося спампаваць файлы для ператварэння маўлення ў тэкст. Функцыя дыктавання працягне працаваць, але пры гэтым запісы вашага голасу будуць адпраўляцца ў Google.</translation> +<translation id="7586051298768394542">Не ўдалося спампаваць файлы для ператварэння маўлення ў тэкст. Функцыя галасавога ўводу працягне працаваць, але пры гэтым запісы вашага голасу будуць адпраўляцца ў Google.</translation> <translation id="7586498138629385861">Chrome будзе працягваць працаваць, пакуль праграмы Chrome адкрыты.</translation> <translation id="7589461650300748890">Гэй! Асцярожней.</translation> <translation id="7593653750169415785">Заблакіравана аўтаматычна, бо вы некалькі разоў адхілілі апавяшчэнні</translation> @@ -6101,7 +6098,7 @@ <translation id="7674416868315480713">Выключыць усе парты, якія пераадрасоўваюцца ў сістэме Linux</translation> <translation id="7674542105240814168">Доступ да даных геалакацыі забаронены</translation> <translation id="7676119992609591770">Знойдзена некалькі (<ph name="NUM" />) укладак па запыце "<ph name="SEARCH_TEXT" />"</translation> -<translation id="7676867886086876795">Адпраўка запісаў вашага голасу сэрвісам Google дазваляе вам набіраць тэкст дыктаваннем у тэкставых палях.</translation> +<translation id="7676867886086876795">Запіс вашага голасу адпраўляецца ў Google. Гэта дазваляе выкарыстоўваць галасавы ўвод для любога тэкставага поля.</translation> <translation id="7680416688940118410">Каліброўка сэнсарнага экрана</translation> <translation id="7681095912841365527">Сайт можа выкарыстоўваць Bluetooth</translation> <translation id="7681597159868843240">Сайты звычайна выкарыстоўваюць датчыкі руху прылады для работы такіх функцый, як віртуальная рэальнасць або адсочванне фізічнага стану</translation> @@ -6783,7 +6780,6 @@ <translation id="8393700583063109961">Адправіць паведамленне</translation> <translation id="8397825320644530257">Адключыць падключаны тэлефон</translation> <translation id="8398877366907290961">Усё роўна працягнуць</translation> -<translation id="8400146488506985033">Кіраваць данымі карыстальнікаў</translation> <translation id="8401432541486058167">Укажыце PIN-код, звязаны з разумнай карткай.</translation> <translation id="8404893580027489425">Сканер адбіткаў пальцаў знаходзіцца на правым баку прылады <ph name="DEVICE_TYPE" />. Злёгку дакраніцеся да яго любым пальцам.</translation> <translation id="8405046151008197676">Атрымайце асноўную інфармацыю пра апошняе абнаўленне</translation> @@ -6839,7 +6835,6 @@ <translation id="8465444703385715657">Убудове "<ph name="PLUGIN_NAME" />" для запуску патрабуецца ваш дазвол</translation> <translation id="8466417995783206254">Гэта ўкладка прайграе відэа ў рэжыме "відарыс у відарысе".</translation> <translation id="8467326454809944210">Выбраць іншую мову</translation> -<translation id="8470214316007448308">Іншыя людзі</translation> <translation id="8470513973197838199">Захаваныя паролі для сайта <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Сайты звычайна падключаюцца да прылад USB для работы такіх функцый, як друкаванне дакументаў або захаванне даных на прыладзе знешняга сховішча</translation> <translation id="8471959340398751476">Функцыя пошуку скідак выключана. Уключыць яе можна праз меню наладжвання</translation> @@ -7026,6 +7021,7 @@ <translation id="8676374126336081632">Ачысціць поле ўводу</translation> <translation id="8676770494376880701">Падключана зарадная прылада малой магутнасці</translation> <translation id="8677212948402625567">Згарнуць усё...</translation> +<translation id="867767487203716855">Наступнае абнаўленне</translation> <translation id="8677859815076891398">Альбомаў няма. Стварыце альбом у <ph name="LINK_BEGIN" />Google Фота<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Укладкі не сціскаюцца</translation> <translation id="8678933587484842200">Якім спосабам запускаць гэту праграму?</translation> @@ -7105,7 +7101,7 @@ <translation id="8756969031206844760">Абнавіць пароль?</translation> <translation id="8757090071857742562">Не ўдалося трансліраваць працоўны стол. Праверце, ці далі вы дазвол на запыт пачаць абагульваць ваш экран.</translation> <translation id="8757203080302669031">Гэта ўкладка шукае прылады з Bluetooth.</translation> -<translation id="8758418656925882523">Уключыць набор тэксту дыктаваннем</translation> +<translation id="8758418656925882523">Уключыць галасавы ўвод</translation> <translation id="8759408218731716181">Не ўдалося наладзіць уваход у некалькі ўліковых запісаў</translation> <translation id="8759753423332885148">Даведацца больш.</translation> <translation id="8761945298804995673">Гэты карыстальнік ужо існуе</translation> @@ -7114,7 +7110,6 @@ <translation id="87646919272181953">Альбом Google Фота</translation> <translation id="8767621466733104912">Аўтаматычна абнаўляць Chrome для ўсіх карыстальнікаў</translation> <translation id="8770406935328356739">Каранёвы каталог пашырэння</translation> -<translation id="8770507190024617908">Кіраваць данымі карыстальнікаў</translation> <translation id="8771300903067484968">Фон пачатковай старонкі скінуты. Цяпер там стандартны фон.</translation> <translation id="8773302562181397928">Захаваць <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Пацвярджэнне аднаўлення</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index c238771..89237b7f 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2579,6 +2579,7 @@ <translation id="3742666961763734085">Не бе намерена организационна единица с това име. Моля, опитайте отново.</translation> <translation id="3744111561329211289">Синхронизиране на заден план</translation> <translation id="3747077776423672805">За да премахнете приложения, отворете „Настройки“ > „Google Play Магазин“ > „Управление на предпочитанията за Android“ > „Приложения“ или мениджъра на приложенията. Докоснете това, което искате да деинсталирате (може да се наложи да прекарате пръст надясно или наляво, за да го намерите). Докоснете „Деинсталиране“ или „Деактивиране“.</translation> +<translation id="3747220812138541072">Показване на вложени предложения, докато пишете</translation> <translation id="3748706263662799310">Подаване на сигнал за програмна грешка</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3753033997400164841">Съхранете веднъж. Използвайте навсякъде</translation> @@ -2873,7 +2874,6 @@ <translation id="4035758313003622889">Мени&джър на задачите</translation> <translation id="4036778507053569103">Изтегленото от сървъра правило е невалидно.</translation> <translation id="4037084878352560732">Кон</translation> -<translation id="4037889604535939429">Редактиране на подстраницата за човека</translation> <translation id="4040753847560036377">Неправилен PUK код</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Изход от страницата}other{Изход от страниците}}</translation> <translation id="4044612648082411741">Въведете паролата си за сертификата</translation> @@ -3270,6 +3270,7 @@ <translation id="4510614391273086606">Файловете и приложенията за Linux се възстановяват от резервното копие.</translation> <translation id="451102079304155829">кошници</translation> <translation id="4513275008300099962">Деактивиране на наслагването с контроли за прозореца</translation> +<translation id="4513872120116766993">Предвиждащо писане</translation> <translation id="4513946894732546136">Отзиви</translation> <translation id="451407183922382411">Предоставено от <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Превключвател за възпроизвеждане или поставяне на пауза на видеоклипа</translation> @@ -4343,7 +4344,6 @@ <translation id="5709557627224531708">Задаване на Chrome като браузър по подразбиране</translation> <translation id="5711983031544731014">Не може да се отключи. Въведете паролата си.</translation> <translation id="5712153969432126546">Сайтовете понякога публикуват PDF файлове, като например документи, договори и формуляри</translation> -<translation id="5712323955984474772">Следваща актуализация</translation> <translation id="5715711091495208045">Посредник за приставки: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Търсещи машини по подразбиране</translation> <translation id="5719637365829998022">QR кодът е сканиран.</translation> @@ -4434,6 +4434,7 @@ <translation id="5826395379250998812">Свържете своя <ph name="DEVICE_TYPE" /> с телефона си. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="5826993284769733527">Полупрозрачно</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">Предвиждане на следващата дума</translation> <translation id="5828545842856466741">Добавяне на потребителски профил...</translation> <translation id="5828633471261496623">Отпечатва се...</translation> <translation id="5830720307094128296">Запазване на страницата &като...</translation> @@ -5115,7 +5116,6 @@ <translation id="6563469144985748109">Мениджърът ви все още не е одобрил заявката</translation> <translation id="6568283005472142698">Търсене на раздели</translation> <translation id="6569911211938664415">Паролите се запазват в профила ви в Google (<ph name="ACCOUNT" />), за да можете да ги използвате на всяко устройство</translation> -<translation id="6569934958368283244">Други хора</translation> <translation id="6573497332121198392">Прекият път не бе премахнат</translation> <translation id="657402800789773160">&Презареждане на тази страница</translation> <translation id="6577284282025554716">Изтеглянето е анулирано: <ph name="FILE_NAME" /></translation> @@ -6305,6 +6305,7 @@ <translation id="78526636422538552">Функцията за добавяне на профили в Google е деактивирана</translation> <translation id="7853747251428735">Още инструмен&ти</translation> <translation id="7855678561139483478">Преместване на раздела в нов прозорец</translation> +<translation id="7857093393627376423">Текстови предложения</translation> <translation id="7857117644404132472">Добавяне на изключение</translation> <translation id="7857949311770343000">Това очакваният от вас нов раздел ли е?</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6802,7 +6803,6 @@ <translation id="8393700583063109961">Изпратете съобщение</translation> <translation id="8397825320644530257">Прекратяване на връзката със свързания телефон</translation> <translation id="8398877366907290961">Продължаване напред въпреки това</translation> -<translation id="8400146488506985033">Управление на хората</translation> <translation id="8401432541486058167">Въведете ПИН, свързан със смарткартата ви</translation> <translation id="8404893580027489425">Сензорът за отпечатъци се намира в дясната част на вашия <ph name="DEVICE_TYPE" />. Докоснете го леко с който и да е пръст.</translation> <translation id="8405046151008197676">Вижте най-важното от най-новата актуализация</translation> @@ -6858,7 +6858,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> се нуждае от разрешението ви, за да стартира</translation> <translation id="8466417995783206254">В този раздел се възпроизвежда видеоклип в режим „Картина в картината“.</translation> <translation id="8467326454809944210">Избор на друг език</translation> -<translation id="8470214316007448308">Други хора</translation> <translation id="8470513973197838199">Запазени пароли за <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Сайтовете обикновено се свързват с USB устройства, за да осигуряват функции като отпечатване на документи или запазване в устройство за съхранение</translation> <translation id="8471959340398751476">Отстъпките са изключени. Можете да ги включите от менюто за персонализиране</translation> @@ -7045,6 +7044,7 @@ <translation id="8676374126336081632">Изчистване на въведеното</translation> <translation id="8676770494376880701">Свързано е зарядно устройство с малка мощност</translation> <translation id="8677212948402625567">Свиване на всички...</translation> +<translation id="867767487203716855">Следваща актуализация</translation> <translation id="8677859815076891398">Няма албуми. Създайте албум в <ph name="LINK_BEGIN" />Google Снимки<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Разделите не се свиват</translation> <translation id="8678933587484842200">Как искате да се стартира това приложение?</translation> @@ -7133,7 +7133,6 @@ <translation id="87646919272181953">Албум в Google Снимки</translation> <translation id="8767621466733104912">Автоматично актуализиране на Chrome за всички потребители</translation> <translation id="8770406935328356739">Основна директория на разширението</translation> -<translation id="8770507190024617908">Управление на хората</translation> <translation id="8771300903067484968">Възстановен е стандартният фон на началната страница.</translation> <translation id="8773302562181397928">Запазване на <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Потвърждаване на възстановяването</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index aba84de2f..eb10fe1e 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -2868,7 +2868,6 @@ <translation id="4035758313003622889">&কার্য পরিচালক</translation> <translation id="4036778507053569103">সার্ভার থেকে ডাউনলোড করা নীতিটি ভুল।</translation> <translation id="4037084878352560732">ঘোড়া</translation> -<translation id="4037889604535939429">ব্যক্তির সম্পাদনা করুন</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{পৃষ্ঠাটি ছেড়ে যান}one{পৃষ্ঠাগুলি ছেড়ে যান}other{পৃষ্ঠাগুলি ছেড়ে যান}}</translation> <translation id="4044612648082411741">আপনার সার্টিফিকেটের পাসওয়ার্ড লিখুন</translation> <translation id="4044708573046946214">স্ক্রিন লক করার পাসওয়ার্ড</translation> @@ -4335,7 +4334,6 @@ <translation id="5709557627224531708">Chrome-কে আপনার ডিফল্ট ব্রাউজার হিসেবে সেট করুন</translation> <translation id="5711983031544731014">আনলক করতে অক্ষম৷ আপনার পাসওয়ার্ড লিখুন৷</translation> <translation id="5712153969432126546">সাইট কখনও কখনও পিডিএফ ফাইল প্রকাশ করে, যেমন ডকুমেন্ট, চুক্তিপত্র এবং ফর্ম</translation> -<translation id="5712323955984474772">পরবর্তী আপডেট</translation> <translation id="5715711091495208045">প্লাগ-ইন ব্রোকার: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ডিফল্ট সার্চ ইঞ্জিনগুলি</translation> <translation id="5719637365829998022">QR কোড স্ক্যান করা হয়েছে।</translation> @@ -5103,7 +5101,6 @@ <translation id="6563469144985748109">আপনার পরিচালক এখনও এটি অনুমোদন করেন নি</translation> <translation id="6568283005472142698">ট্যাব সার্চ করা</translation> <translation id="6569911211938664415">পাসওয়ার্ড আপনার Google অ্যাকাউন্টে (<ph name="ACCOUNT" />) সেভ করা থাকে তাই আপনি যেকোনও ডিভাইসে পাসওয়ার্ড ব্যবহার করতে পারবেন</translation> -<translation id="6569934958368283244">অন্যান্য লোকজন</translation> <translation id="6573497332121198392">শর্টকাট সরানো যাচ্ছে না</translation> <translation id="657402800789773160">&Reload This Page</translation> <translation id="6577284282025554716">ডাউনলোড বাতিল হয়েছে: <ph name="FILE_NAME" /></translation> @@ -6776,7 +6773,6 @@ <translation id="8393700583063109961">বার্তা পাঠান</translation> <translation id="8397825320644530257">যুক্ত থাকা ফোন ডিসকানেক্ট করুন</translation> <translation id="8398877366907290961">যাইহোক এগিয়ে যান</translation> -<translation id="8400146488506985033">ব্যক্তিগণকে পরিচালনা করুন</translation> <translation id="8401432541486058167">আপনার স্মার্ট কার্ডের পিন নম্বরটি দিন।</translation> <translation id="8404893580027489425">আপনার <ph name="DEVICE_TYPE" />-এর ডানদিকে আঙ্গুলের ছাপের সেন্সর আছে। যেকোনও আঙ্গুল দিয়ে সেটি আলতো করে টাচ করুন।</translation> <translation id="8405046151008197676">লেটেস্ট আপডেটের হাইলাইটগুলি দেখুন</translation> @@ -6832,7 +6828,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> চালানোর জন্য আপনার অনুমতি প্রয়োজন</translation> <translation id="8466417995783206254">এই ট্যাবটি ছবির-মধ্যে-ছবি মোডে ভিডিওটি চালাচ্ছে।</translation> <translation id="8467326454809944210">অন্য ভাষা বেছে নিন</translation> -<translation id="8470214316007448308">অন্যান্য লোকজন</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> এর জন্য সেভ করা পাসওয়ার্ডগুলি</translation> <translation id="8471525937465764768">ডকুমেন্ট প্রিন্ট করা অথবা স্টোরেজ ডিভাইসে সেভ করার মতো ফিচারের জন্য সাইট সাধারণত USB ডিভাইসের সাথে কানেক্ট করে</translation> <translation id="8471959340398751476">ছাড়ের সুবিধা বন্ধ করা আছে। আপনি কাস্টমাইজ মেনু থেকে এই সুবিধা চালু করতে পারবেন</translation> @@ -7019,6 +7014,7 @@ <translation id="8676374126336081632">ইনপুট সাফ করুন</translation> <translation id="8676770494376880701">নিম্ন শক্তির চার্জার সংযুক্ত করা হয়েছে</translation> <translation id="8677212948402625567">সবগুলি আড়াল করুন...</translation> +<translation id="867767487203716855">পরবর্তী আপডেট</translation> <translation id="8677859815076891398">কোনও অ্যালবাম নেই। <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />-এ একটি অ্যালবাম তৈরি করুন।</translation> <translation id="8678582529642151449">ট্যাব সঙ্কুচিত হয় না</translation> <translation id="8678933587484842200">আপনি কীভাবে এই অ্যাপটি চালু করতে চান?</translation> @@ -7107,7 +7103,6 @@ <translation id="87646919272181953">Google Photos অ্যালবাম</translation> <translation id="8767621466733104912">সকল ব্যবহারকারীর জন্য স্বয়ংক্রিয়ভাবে Chrome আপডেট করুন</translation> <translation id="8770406935328356739">এক্সটেনশান রুট ডিরেক্টরি</translation> -<translation id="8770507190024617908">ব্যক্তিগণকে পরিচালনা করুন</translation> <translation id="8771300903067484968">স্টার্ট পেজের ব্যাকগ্রাউন্ড ডিফল্ট ব্যাকগ্রাউন্ডে রিসেট করা হয়েছে।</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> সেভ করুন</translation> <translation id="8774379074441005279">ফিরিয়ে আনতে কনফার্ম করুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 7e6b3b2..e4506e3 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -2874,7 +2874,6 @@ <translation id="4035758313003622889">Upravi&telj zadataka</translation> <translation id="4036778507053569103">Pravilo preuzeto sa servera je nevažeće.</translation> <translation id="4037084878352560732">Konj</translation> -<translation id="4037889604535939429">Uredite osobu</translation> <translation id="4040753847560036377">Pogrešan PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Napusti stranicu}one{Napusti stranice}few{Napusti stranice}other{Napusti stranice}}</translation> <translation id="4044612648082411741">Unesite lozinku potvrde</translation> @@ -4343,7 +4342,6 @@ <translation id="5709557627224531708">Postavite Chrome kao zadani preglednik</translation> <translation id="5711983031544731014">Nije moguće otključati. Unesite lozinku.</translation> <translation id="5712153969432126546">Web lokacije ponekad objavljuju PDF-ove, kao što su dokumenti, ugovori i obrasci</translation> -<translation id="5712323955984474772">Sljedeće ažuriranje</translation> <translation id="5715711091495208045">Posrednik dodatka: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Zadani pretraživači</translation> <translation id="5719637365829998022">QR kôd je skeniran.</translation> @@ -5115,7 +5113,6 @@ <translation id="6563469144985748109">Voditelj je još nije odobrio</translation> <translation id="6568283005472142698">Pretraživanje kartica</translation> <translation id="6569911211938664415">Lozinke se pohranjuju na vaš Google račun (<ph name="ACCOUNT" />) da ih možete koristiti na bilo kojem uređaju</translation> -<translation id="6569934958368283244">Druge osobe</translation> <translation id="6573497332121198392">Nije moguće ukloniti prečicu</translation> <translation id="657402800789773160">&Ponovo učitaj ovu stranicu</translation> <translation id="6577284282025554716">Otkazano je preuzimanje fajla: <ph name="FILE_NAME" /></translation> @@ -6802,7 +6799,6 @@ <translation id="8393700583063109961">Pošalji poruku</translation> <translation id="8397825320644530257">Prekinite vezu s povezanim telefonom</translation> <translation id="8398877366907290961">Svejedno nastavi</translation> -<translation id="8400146488506985033">Upravljaj osobama</translation> <translation id="8401432541486058167">Unesite PIN koji je povezan s vašom pametnom karticom.</translation> <translation id="8404893580027489425">Senzor za otisak prsta se nalazi na desnoj strani uređaja <ph name="DEVICE_TYPE" />. Nježno ga dodirnite bilo kojim prstom.</translation> <translation id="8405046151008197676">Otkrijte istaknute novosti o najnovijem ažuriranju</translation> @@ -6858,7 +6854,6 @@ <translation id="8465444703385715657">Za pokretanje dodatka <ph name="PLUGIN_NAME" /> je potrebno vaše odobrenje</translation> <translation id="8466417995783206254">Ova kartica reproducira videozapis u načinu rada slika u slici.</translation> <translation id="8467326454809944210">Odaberi drugi jezik</translation> -<translation id="8470214316007448308">Druge osobe</translation> <translation id="8470513973197838199">Sačuvane lozinke za <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Web lokacije se obično povezuju s USB uređajima radi funkcija kao što je štampanje dokumenta ili pohranjivanje na uređaj za pohranu</translation> <translation id="8471959340398751476">Popusti su isključeni. Možete ih uključiti u meniju za prilagođavanje</translation> @@ -7045,6 +7040,7 @@ <translation id="8676374126336081632">Brisanje unosa</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> <translation id="8677212948402625567">Suzi sve...</translation> +<translation id="867767487203716855">Sljedeće ažuriranje</translation> <translation id="8677859815076891398">Nema albuma. Kreirajte album u <ph name="LINK_BEGIN" />Google Fotografijama<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Kartice se ne smanjuju</translation> <translation id="8678933587484842200">Kako želite da se ova aplikacija pokreće?</translation> @@ -7133,7 +7129,6 @@ <translation id="87646919272181953">Album Google Fotografija</translation> <translation id="8767621466733104912">Automatski ažuriraj Chrome za sve korisnike</translation> <translation id="8770406935328356739">Temeljni direktorij ekstenzije</translation> -<translation id="8770507190024617908">Upravljaj osobama</translation> <translation id="8771300903067484968">Pozadina početne stranice je vraćena na zadanu pozadinu.</translation> <translation id="8773302562181397928">Sačuvajte štampač <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potvrda vraćanja</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index dc18fe3..350a219 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2860,7 +2860,6 @@ <translation id="4035758313003622889">Gestor de &tasques</translation> <translation id="4036778507053569103">La política que s'ha baixat del servidor no és vàlida.</translation> <translation id="4037084878352560732">Cavall</translation> -<translation id="4037889604535939429">Edita la persona</translation> <translation id="4040753847560036377">El PUK no és correcte</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Surt de la pàgina}other{Surt de les pàgines}}</translation> <translation id="4044612648082411741">Introdueix la contrasenya del certificat</translation> @@ -4330,7 +4329,6 @@ <translation id="5709557627224531708">Defineix Chrome com a navegador predeterminat</translation> <translation id="5711983031544731014">No es pot desbloquejar: introduïu la contrasenya</translation> <translation id="5712153969432126546">A vegades, els llocs web publiquen fitxers PDF, com ara documents, contractes i formularis</translation> -<translation id="5712323955984474772">Propera actualització</translation> <translation id="5715711091495208045">Agent de connectors: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motors de cerca predeterminats</translation> <translation id="5719637365829998022">S'ha escanejat el codi QR.</translation> @@ -5102,7 +5100,6 @@ <translation id="6563469144985748109">El teu gestor encara no ho ha aprovat</translation> <translation id="6568283005472142698">Cerca de pestanyes</translation> <translation id="6569911211938664415">Les contrasenyes es desen al Compte de Google (<ph name="ACCOUNT" />) perquè les puguis utilitzar en tots els dispositius</translation> -<translation id="6569934958368283244">Altres persones</translation> <translation id="6573497332121198392">No es pot suprimir la drecera</translation> <translation id="657402800789773160">&Torna a carregar aquesta pàgina</translation> <translation id="6577284282025554716">Baixada cancel·lada: <ph name="FILE_NAME" /></translation> @@ -6789,7 +6786,6 @@ <translation id="8393700583063109961">Envia el missatge</translation> <translation id="8397825320644530257">Desconnecta el telèfon connectat</translation> <translation id="8398877366907290961">Continua igualment</translation> -<translation id="8400146488506985033">Gestiona persones</translation> <translation id="8401432541486058167">Proporciona el PIN que està associat a la teva targeta intel·ligent.</translation> <translation id="8404893580027489425">El sensor d'empremtes digitals és a la part dreta del <ph name="DEVICE_TYPE" />. Toca'l lleugerament amb un dit.</translation> <translation id="8405046151008197676">Descobreix les novetats més destacades de la darrera actualització</translation> @@ -6845,7 +6841,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> necessita el teu permís per executar-se</translation> <translation id="8466417995783206254">En aquesta pestanya s'està reproduint un vídeo en mode de pantalla en pantalla.</translation> <translation id="8467326454809944210">Tria un altre idioma</translation> -<translation id="8470214316007448308">Altres persones</translation> <translation id="8470513973197838199">Contrasenyes desades per a <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Els llocs web solen connectar-se a dispositius USB per a funcions com ara desar dades en un dispositiu d'emmagatzematge o imprimir un document</translation> <translation id="8471959340398751476">Els descomptes estan desactivats. Pots activar-los al menú de personalització.</translation> @@ -7032,6 +7027,7 @@ <translation id="8676374126336081632">Esborra l'entrada</translation> <translation id="8676770494376880701">S'ha connectat un carregador de baix consum</translation> <translation id="8677212948402625567">Redueix-ho tot...</translation> +<translation id="867767487203716855">Propera actualització</translation> <translation id="8677859815076891398">No hi ha cap àlbum. Crea'n un a <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Les pestanyes no es redueixen</translation> <translation id="8678933587484842200">Com voldries que s'iniciés aquesta aplicació?</translation> @@ -7120,7 +7116,6 @@ <translation id="87646919272181953">Àlbum de Google Fotos</translation> <translation id="8767621466733104912">Actualitza Chrome automàticament per a tots els usuaris</translation> <translation id="8770406935328356739">Directori arrel de l'extensió</translation> -<translation id="8770507190024617908">Gestiona persones</translation> <translation id="8771300903067484968">El fons de la pàgina d'inici s'ha restablert al fons predeterminat.</translation> <translation id="8773302562181397928">Desa <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirma la restauració</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index c8209e11..66c91aae 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -2859,7 +2859,6 @@ <translation id="4035758313003622889">Správce úloh</translation> <translation id="4036778507053569103">Zásada stažená ze serveru není platná.</translation> <translation id="4037084878352560732">Kůň</translation> -<translation id="4037889604535939429">Úprava osoby</translation> <translation id="4040753847560036377">Nesprávný kód PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Opustit stránku}few{Opustit stránky}many{Opustit stránky}other{Opustit stránky}}</translation> <translation id="4044612648082411741">Zadejte heslo certifikátu</translation> @@ -4327,7 +4326,6 @@ <translation id="5709557627224531708">Nastavte si Chrome jako výchozí prohlížeč</translation> <translation id="5711983031544731014">Zařízení nelze odemknout. Zadejte heslo.</translation> <translation id="5712153969432126546">Weby někdy publikují soubory PDF, např. dokumenty, smlouvy a formuláře</translation> -<translation id="5712323955984474772">Další aktualizace</translation> <translation id="5715711091495208045">Zprostředkovatel pluginu: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Výchozí vyhledávače</translation> <translation id="5719637365829998022">QR kód byl naskenován.</translation> @@ -5098,7 +5096,6 @@ <translation id="6563469144985748109">Správce vám přístup na web dosud neschválil.</translation> <translation id="6568283005472142698">Vyhledávání v kartách</translation> <translation id="6569911211938664415">Hesla se ukládají do vašeho účtu Google (<ph name="ACCOUNT" />), abyste je mohli používat na všech zařízeních.</translation> -<translation id="6569934958368283244">Jiní lidé</translation> <translation id="6573497332121198392">Zkratku nelze odstranit</translation> <translation id="657402800789773160">&Načíst tuto stránku znovu</translation> <translation id="6577284282025554716">Stahování zrušeno: <ph name="FILE_NAME" /></translation> @@ -6779,7 +6776,6 @@ <translation id="8393700583063109961">Odeslat zprávu</translation> <translation id="8397825320644530257">Odpojit připojený telefon</translation> <translation id="8398877366907290961">Přesto pokračovat</translation> -<translation id="8400146488506985033">Správa uživatelů</translation> <translation id="8401432541486058167">Zadejte kód PIN přidružený k vaší chytré kartě.</translation> <translation id="8405046151008197676">Zobrazit hlavní změny v poslední aktualizaci</translation> <translation id="8407199357649073301">Úroveň protokolu:</translation> @@ -6834,7 +6830,6 @@ <translation id="8465444703385715657">Plugin <ph name="PLUGIN_NAME" /> potřebuje ke spuštění vaše povolení</translation> <translation id="8466417995783206254">Na této kartě se přehrává video v režimu obrazu v obraze</translation> <translation id="8467326454809944210">Vybrat jiný jazyk</translation> -<translation id="8470214316007448308">Jiní lidé</translation> <translation id="8470513973197838199">Uložená hesla z webu <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Weby se obvykle připojují k zařízením USB kvůli funkcím, jako je tisk dokumentu nebo uložení obsahu na paměťové zařízení</translation> <translation id="8471959340398751476">Slevy jsou vypnuté. Můžete je zapnout v nabídce přizpůsobení</translation> @@ -7021,6 +7016,7 @@ <translation id="8676374126336081632">Vymazat vstup</translation> <translation id="8676770494376880701">Byla připojena nabíječka s nízkým napětím</translation> <translation id="8677212948402625567">Sbalit vše...</translation> +<translation id="867767487203716855">Další aktualizace</translation> <translation id="8677859815076891398">Žádná alba. Vytvořte album ve <ph name="LINK_BEGIN" />Fotkách Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Karty se nezmenšují</translation> <translation id="8678933587484842200">Jak tuto aplikaci chcete spouštět?</translation> @@ -7109,7 +7105,6 @@ <translation id="87646919272181953">Album Fotek Google</translation> <translation id="8767621466733104912">Automaticky aktualizovat Chrome pro všechny uživatele</translation> <translation id="8770406935328356739">Kořenový adresář rozšíření</translation> -<translation id="8770507190024617908">Správa uživatelů</translation> <translation id="8771300903067484968">Pozadí úvodní stránky bylo resetováno na výchozí pozadí.</translation> <translation id="8773302562181397928">Uložit tiskárnu <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potvrzení obnovení</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 090ea69..54650bda 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2877,7 +2877,6 @@ <translation id="4035758313003622889">&Jobliste</translation> <translation id="4036778507053569103">Den politik, der er downloadet fra serveren, er ugyldig.</translation> <translation id="4037084878352560732">Hest</translation> -<translation id="4037889604535939429">Rediger personen</translation> <translation id="4040753847560036377">PUK-koden er forkert</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Forlad side}one{Forlad side}other{Forlad sider}}</translation> <translation id="4044612648082411741">Angiv adgangskoden til dit certifikat</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Angiv Chrome som din standardbrowser</translation> <translation id="5711983031544731014">Enheden kan ikke låses op. Angiv din adgangskode.</translation> <translation id="5712153969432126546">Websites kan nogle gange udgive PDF-filer som f.eks. dokumenter, kontrakter og formularer</translation> -<translation id="5712323955984474772">Næste opdatering</translation> <translation id="5715711091495208045">Pluginmægler: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standardsøgemaskiner</translation> <translation id="5719637365829998022">QR-koden blev scannet.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Din administrator har ikke godkendt det endnu</translation> <translation id="6568283005472142698">Søgning efter tekst under faner</translation> <translation id="6569911211938664415">Adgangskoder gemmes på din Google-konto (<ph name="ACCOUNT" />), så du kan bruge dem på enhver enhed</translation> -<translation id="6569934958368283244">Andre personer</translation> <translation id="6573497332121198392">Genvejen kan ikke fjernes</translation> <translation id="657402800789773160">&Genindlæs denne side</translation> <translation id="6577284282025554716">Downloaden blev annulleret: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Send en besked</translation> <translation id="8397825320644530257">Afbryd forbindelsen til den tilsluttede telefon</translation> <translation id="8398877366907290961">Fortsæt alligevel</translation> -<translation id="8400146488506985033">Administrer personer</translation> <translation id="8401432541486058167">Brug den pinkode, der hører til dit chipkort.</translation> <translation id="8404893580027489425">Fingeraftrykslæseren sidder til højre på din <ph name="DEVICE_TYPE" />. Tryk let på den med en finger.</translation> <translation id="8405046151008197676">Få højdepunkter fra den seneste opdatering</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> kræver din tilladelse for at køre</translation> <translation id="8466417995783206254">Denne fane afspiller en video i tilstanden med integreret billede.</translation> <translation id="8467326454809944210">Vælg et andet sprog</translation> -<translation id="8470214316007448308">Andre personer</translation> <translation id="8470513973197838199">Gemte adgangskoder til <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Websites opretter normalt forbindelse til USB-enheder for at kunne udskrive dokumenter eller gemme filer på en lagerenhed</translation> <translation id="8471959340398751476">Rabatter er slået fra. Du kan slå rabatter til i menuen for tilpasning</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Ryd indtastning</translation> <translation id="8676770494376880701">Oplader med lav kraft er tilsluttet</translation> <translation id="8677212948402625567">Skjul alle...</translation> +<translation id="867767487203716855">Næste opdatering</translation> <translation id="8677859815076891398">Der er ingen album. Opret et album i <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Faner formindskes ikke</translation> <translation id="8678933587484842200">Hvordan vil du starte denne app?</translation> @@ -7136,7 +7132,6 @@ <translation id="87646919272181953">Google Fotos-album</translation> <translation id="8767621466733104912">Opdater Chrome automatisk for alle brugere</translation> <translation id="8770406935328356739">Udvidelsens rodmappe</translation> -<translation id="8770507190024617908">Administrer personer</translation> <translation id="8771300903067484968">Baggrunden for startsiden er nulstillet til standardbaggrunden.</translation> <translation id="8773302562181397928">Gem <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Bekræft gendannelse</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 7531508b..8434548 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -697,6 +697,7 @@ <translation id="173628468822554835">Ok. Standardmäßig senden Ihnen neue Websites, die Sie besuchen, keine Benachrichtigungen.</translation> <translation id="1736419249208073774">Entdecken</translation> <translation id="1737968601308870607">Fehler melden</translation> +<translation id="1739684185846730053">Privacy Sandbox befindet sich noch in der Entwicklung und Testversionen sind nur in ausgewählten Regionen verfügbar. Manche Websites, die Privacy Sandbox probeweise nutzen, verwenden momentan möglicherweise weiterhin aktuelle Web-Technologien wie Drittanbieter-Cookies.</translation> <translation id="174123615272205933">Benutzerdefiniert</translation> <translation id="1741314857973421784">Weiter</translation> <translation id="1743570585616704562">Nicht erkannt</translation> @@ -1120,8 +1121,10 @@ <translation id="217576141146192373">Drucker kann nicht hinzugefügt werden. Prüfen Sie bitte die Konfiguration des Druckers und versuchen Sie es noch einmal.</translation> <translation id="2177950615300672361">Inkognitotab: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Kompromittierung der Zertifizierungsstelle</translation> +<translation id="2179416702468739594">Es wird nach verfügbaren Profilen gesucht. Das kann dazu führen, dass Ihre Mobilfunkverbindung einige Minuten getrennt wird.</translation> <translation id="2182058453334755893">In die Zwischenablage kopiert</translation> <translation id="2184515124301515068">Chrome die Entscheidung überlassen, wann Audioinhalte auf Websites abgespielt werden (empfohlen)</translation> +<translation id="2186711480981247270">Von einem anderen Gerät geteilte Seite</translation> <translation id="2187675480456493911">Mit anderen Geräten in Ihrem Konto synchronisiert. Von anderen Nutzern geänderte Einstellungen werden nicht synchronisiert. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation> <translation id="2187895286714876935">Fehler beim Importieren des Serverzertifikats</translation> <translation id="2187906491731510095">Erweiterungen wurden aktualisiert</translation> @@ -1384,6 +1387,7 @@ <translation id="2469375675106140201">Rechtschreibprüfung anpassen</translation> <translation id="247051149076336810">Netzwerkfreigabe-URL</translation> <translation id="2470702053775288986">Nicht unterstützte Erweiterungen deaktiviert</translation> +<translation id="2470939964922472929">Es wurde zu oft die falsche PIN eingegeben. Geben Sie zum Festlegen einer neuen PIN den achtstelligen PIN-Entsperrschlüssel (PUK) ein, den Sie von Ihrem Mobilfunkanbieter erhalten haben.</translation> <translation id="2471469610750100598">Schwarz (Standard)</translation> <translation id="2471506181342525583">Standortzugriff gewährt</translation> <translation id="2473195200299095979">Diese Seite übersetzen</translation> @@ -1680,6 +1684,7 @@ <translation id="2785873697295365461">Dateideskriptoren</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Gruppennummer</translation> <translation id="2789486458103222910">Ok</translation> <translation id="2791529110887957050">Linux entfernen</translation> <translation id="2791952154587244007">Ein Fehler ist aufgetreten. Die Kioskanwendung kann auf diesem Gerät nicht automatisch gestartet werden.</translation> @@ -1981,6 +1986,7 @@ <translation id="310671807099593501">Die Website verwendet Bluetooth</translation> <translation id="3108931485517391283">Empfang nicht möglich</translation> <translation id="3109724472072898302">Minimiert</translation> +<translation id="3113592018909187986">Sie haben noch 1 Versuch. Sie können dieses Mobilfunknetz erst verwenden, wenn Sie eine neue PIN festlegen.</translation> <translation id="311394601889664316">Websites dürfen keine Dateien oder Ordner auf meinem Gerät bearbeiten</translation> <translation id="3115147772012638511">Warten auf den Cache...</translation> <translation id="3115580024857770654">Alle ausblenden</translation> @@ -2269,6 +2275,7 @@ <translation id="3440663250074896476">Weitere Aktionen für <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Bildschirm</translation> <translation id="3441663102605358937">Melden Sie sich noch einmal bei <ph name="ACCOUNT" /> an, um dieses Konto zu bestätigen</translation> +<translation id="3444641828375597683">Werbetreibende und Publisher können FLoC verwenden. Informationen dazu finden Sie weiter unten auf dieser Seite.</translation> <translation id="3445047461171030979">Schnelle Antworten bei Google Assistant</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3445925074670675829">USB-C-Gerät</translation> @@ -2851,7 +2858,7 @@ <translation id="4035758313003622889">&Taskmanager</translation> <translation id="4036778507053569103">Die vom Server heruntergeladene Richtlinie ist ungültig.</translation> <translation id="4037084878352560732">Pferd</translation> -<translation id="4037889604535939429">Person bearbeiten</translation> +<translation id="4040753847560036377">Falscher PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Seite verlassen}other{Seiten verlassen}}</translation> <translation id="4044612648082411741">Sie müssen Ihr Zertifikatspasswort eingeben</translation> <translation id="4044708573046946214">Passwort für die Displaysperre</translation> @@ -3060,6 +3067,7 @@ <translation id="4297813521149011456">Displayausrichtung</translation> <translation id="4299022904780065004">Neues &Inkognitofenster</translation> <translation id="4301671483919369635">Diese Website ist berechtigt, Dateien zu bearbeiten</translation> +<translation id="4302605047395093221">Jeder Nutzer dieses Geräts muss die PIN eingeben, um eine Verbindung mit diesem Mobilfunknetz herzustellen</translation> <translation id="4303079906735388947">Richten Sie eine neue PIN für Ihren Sicherheitsschlüssel ein</translation> <translation id="4305402730127028764">Auf <ph name="DEVICE_NAME" /> kopieren</translation> <translation id="4305817255990598646">Wechseln</translation> @@ -3244,6 +3252,7 @@ <translation id="4510479820467554003">Liste der Elternkonten</translation> <translation id="4510614391273086606">Linux-Dateien und ‑Apps werden auf den Stand des letzten Back-ups zurückgesetzt.</translation> <translation id="451102079304155829">Einkaufswagen</translation> +<translation id="4513275008300099962">Einblenden von Fenstersteuerelementen deaktivieren</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="451407183922382411">Powered by <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Video wiedergeben oder pausieren</translation> @@ -4314,7 +4323,6 @@ <translation id="5709557627224531708">Chrome als Standardbrowser festlegen</translation> <translation id="5711983031544731014">Entsperren nicht möglich. Bitte geben Sie Ihr Passwort ein,</translation> <translation id="5712153969432126546">Websites veröffentlichen manchmal PDFs wie Dokumente, Verträge und Formulare</translation> -<translation id="5712323955984474772">Nächste Aktualisierung</translation> <translation id="5715711091495208045">Plug-in-Broker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standardsuchmaschinen</translation> <translation id="5719637365829998022">Der QR-Code wurde gescannt.</translation> @@ -4586,10 +4594,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> – USB-Gerät verbunden</translation> <translation id="6028117231645531007">Fingerabdruck hinzufügen</translation> <translation id="6031600495088157824">Eingabeoptionen in Symbolleiste</translation> +<translation id="6032091552407840792">Diese Testversion ist probeweise nur in <ph name="BEGIN_LINK" />ausgewählten Regionen verfügbar<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Wenn eine Erweiterung Zugriff auf diese Website haben soll, klicken Sie sie an.</translation> <translation id="6032912588568283682">Dateisystem</translation> <translation id="603539183851330738">Taste zum Rückgängigmachen der Autokorrektur. „<ph name="TYPED_WORD" />“ wiederherstellen. Drücken Sie zum Aktivieren die Enter-Taste und zum Ablehnen die Escape-Taste.</translation> <translation id="6038929619733116134">Blockieren, wenn Website aufdringliche oder irreführende Werbung anzeigt</translation> +<translation id="603895874132768835">Sie können dieses Mobilfunknetz erst verwenden, wenn Sie eine neue PIN festlegen</translation> <translation id="6039651071822577588">Netzwerkeigenschaften-Wörterbuch ungültig</translation> <translation id="6040143037577758943">Schließen</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Der Standortdienst von Google nutzt Quellen wie WLANs, Mobilfunknetze und Sensoren, um den ungefähren Standort Ihres Geräts zu ermitteln.<ph name="END_PARAGRAPH1" /> @@ -4837,6 +4847,7 @@ <translation id="6292699686837272722">Tabs werden auf eine mittlere Breite verkleinert</translation> <translation id="6295158916970320988">Alle Websites</translation> <translation id="6295855836753816081">Wird gespeichert...</translation> +<translation id="6296410173147755564">Ungültiger PUK</translation> <translation id="6298962879096096191">Google Play verwenden, um Android-Apps zu installieren</translation> <translation id="6300177430812514606">Dürfen den Datenversand und ‑empfang nicht abschließen</translation> <translation id="630065524203833229">&Beenden</translation> @@ -4883,6 +4894,7 @@ <translation id="6340526405444716530">Personalisierung</translation> <translation id="6341850831632289108">Ihren physischen Standort ermitteln</translation> <translation id="6342069812937806050">Gerade eben</translation> +<translation id="6343003829431264373">Nur gerade Seitenzahlen</translation> <translation id="6344170822609224263">Auf Liste der Netzwerkverbindungen zugreifen</translation> <translation id="6344576354370880196">Gespeicherte Drucker</translation> <translation id="6345418402353744910">Für den Proxy <ph name="PROXY" /> werden dein Nutzername und Passwort benötigt, damit der Administrator dein Netzwerk konfigurieren kann</translation> @@ -5079,7 +5091,6 @@ <translation id="6563469144985748109">Der Administrator hat die Berechtigung noch nicht erteilt</translation> <translation id="6568283005472142698">Tab-Suche</translation> <translation id="6569911211938664415">Passwörter werden in Ihrem Google-Konto (<ph name="ACCOUNT" />) gespeichert, sodass Sie sie auf jedem Gerät verwenden können</translation> -<translation id="6569934958368283244">Andere Personen</translation> <translation id="6573497332121198392">Verknüpfung kann nicht entfernt werden</translation> <translation id="657402800789773160">&Diese Seite neu laden</translation> <translation id="6577284282025554716">Download abgebrochen: <ph name="FILE_NAME" /></translation> @@ -5128,6 +5139,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> enthält vertrauliche oder schädliche Inhalte. Bitten Sie den Inhaber, das Problem zu beheben.</translation> <translation id="6624687053722465643">Törtchen</translation> <translation id="6628328486509726751">Hochgeladen am <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Geben Sie mindestens 4 Ziffern ein</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> fordert ständigen Zugriff auf ein Zertifikat an, um sich in Ihrem Namen zu authentifizieren.</translation> <translation id="6635362468090274700">Andere Personen können nur Daten mit Ihnen teilen, wenn Sie sich sichtbar machen.<ph name="BR" /><ph name="BR" />Wenn Sie sich vorübergehend sichtbar machen möchten, öffnen Sie den Statusbereich und schalten Sie „Nearby-Sichtbarkeit“ ein.</translation> <translation id="6635944431854494329">Diese Funktion kann vom Inhaber über "Einstellungen" > "Erweitert" > "Diagnose- und Nutzungsdaten automatisch an Google senden" gesteuert werden.</translation> @@ -5166,6 +5178,7 @@ <translation id="6664774537677393800">Beim Öffnen Ihres Profils ist ein Fehler aufgetreten. Melden Sie sich bitte ab und dann wieder an.</translation> <translation id="6670142487971298264">Die App "<ph name="APP_NAME" />" ist jetzt verfügbar</translation> <translation id="6671320560732140690">{COUNT,plural, =1{eine Adresse}other{# Adressen}}</translation> +<translation id="6671497123040790595">Verwaltung durch <ph name="MANAGER" /> wird eingerichtet</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Geben Sie Ihre Passphrase ein, um die Synchronisierung zu starten</translation> <translation id="6675665718701918026">Zeigegerät verbunden</translation> @@ -5174,6 +5187,7 @@ <translation id="6680442031740878064">Verfügbar: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Geschwindigkeit</translation> <translation id="6681668084120808868">Foto machen</translation> +<translation id="6683087162435654533">Alle Tabs wi&ederherstellen</translation> <translation id="6683948477137300040">Pop-up mit Geräte-EID und QR-Code anzeigen</translation> <translation id="6684827949542560880">Das neueste Update wird heruntergeladen</translation> <translation id="668599234725812620">Google Play öffnen</translation> @@ -5743,6 +5757,7 @@ <translation id="7308643132139167865">Websitesprachen</translation> <translation id="7309257895202129721">&Steuerelemente anzeigen</translation> <translation id="7310598146671372464">Fehler beim Anmelden. Der Server unterstützt keine angegebenen Kerberos-Verschlüsselungstypen. Bitte wenden Sie sich an Ihren Administrator.</translation> +<translation id="7315168816273861089">Einblenden von Fenstersteuerelementen aktivieren</translation> <translation id="7320213904474460808">Netzwerk als Standard festlegen</translation> <translation id="7321545336522791733">Server nicht erreichbar</translation> <translation id="7324297612904500502">Beta-Forum</translation> @@ -5919,7 +5934,9 @@ <translation id="7506541170099744506">Ihr <ph name="DEVICE_TYPE" /> wurde erfolgreich für die Unternehmensverwaltung angemeldet.</translation> <translation id="7507207699631365376"><ph name="BEGIN_LINK" />Datenschutzerklärung<ph name="END_LINK" /> dieses Dienstanbieters ansehen</translation> <translation id="7507930499305566459">Zertifikat für Statusantwortdienst</translation> +<translation id="7509097596023256288">Verwaltung wird eingerichtet</translation> <translation id="7509246181739783082">Identität bestätigen</translation> +<translation id="7511415964832680006">Wenn diese Option aktiviert ist, können Websites die hier aufgeführten Technologien, die zu einem besseren Datenschutz beitragen, zur Bereitstellung ihrer Inhalte und Dienste verwenden. Hierzu zählen unter anderem Alternativen zum websiteübergreifenden Tracking. Mit der Zeit können weitere Testfunktionen hinzukommen.</translation> <translation id="7513029293694390567">Sie werden mithilfe gespeicherter Anmeldedaten automatisch auf Websites angemeldet. Wenn diese Funktion deaktiviert ist, werden Sie bei jeder Anmeldung auf einer Website nach einer Bestätigung gefragt.</translation> <translation id="7514239104543605883">Auf mein Gerät kopieren</translation> <translation id="7514365320538308">Herunterladen</translation> @@ -6280,6 +6297,7 @@ <translation id="7876027585589532670">Verknüpfung kann nicht bearbeitet werden</translation> <translation id="7877451762676714207">Unbekannter Serverfehler. Bitte versuchen Sie es erneut oder wenden Sie sich an den Serveradministrator.</translation> <translation id="7879631849810108578">Tastenkombination festgelegt: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Wenn FLoC aktiviert und aktiv ist, verwendet Chrome den Browserverlauf der letzten sieben Tage, um eine Gruppe oder „Kohorte“ für Sie zu bestimmen. Werbetreibende können Werbung für die einzelnen Gruppen auswählen. Ihr Browserverlauf wird sicher auf Ihrem Gerät gespeichert. Diese Testversion ist probeweise nur in <ph name="BEGIN_LINK" />ausgewählten Regionen verfügbar<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Lokale Daten werden beim nächsten Neustart gelöscht</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Konto anzeigen</translation> @@ -6439,6 +6457,7 @@ <translation id="804786196054284061">Endnutzer-Lizenzvereinbarung</translation> <translation id="8048977114738515028">Erstellen Sie auf Ihrem Gerät eine Desktopverknüpfung, um direkt auf dieses Profil zuzugreifen</translation> <translation id="8049029041626250638">Verbinde eine Tastatur oder Maus mit deinem Gerät. Achte bei Verwendung eines Bluetooth-Geräts darauf, ob es bereit zur Kopplung ist.</translation> +<translation id="8049184478152619004">PIN-Entsperrschlüssel (PUK) eingeben</translation> <translation id="8049705080247101012">"<ph name="EXTENSION_NAME" />" wurde von Google als schädlich eingestuft und die Installation wurde blockiert</translation> <translation id="8049948037269924837">Gegenläufiges Scrollen für Touchpad</translation> <translation id="8050038245906040378">Kommerzielle Microsoft-Codesignatur</translation> @@ -6475,6 +6494,7 @@ <translation id="8082106343289440791">Mit "<ph name="DEVICE_NAME" />" koppeln?</translation> <translation id="8082390128630131497">Wenn Sie die ADB-Fehlerbehebung deaktivieren, wird dieses <ph name="DEVICE_TYPE" /> auf die Werkseinstellungen zurückgesetzt. Alle Benutzerkonten und lokalen Daten werden entfernt.</translation> <translation id="8084114998886531721">Gespeichertes Passwort</translation> +<translation id="8084510406207562688">Alle Tabs wi&ederherstellen</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> wird konfiguriert...</translation> <translation id="8086442853986205778">"<ph name="PRINTER_NAME" />" einrichten</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Diese Datei ist verschlüsselt. Bitten Sie den Inhaber, sie zu entschlüsseln.}other{Einige dieser Dateien sind verschlüsselt. Bitten Sie den Inhaber, sie zu entschlüsseln.}}</translation> @@ -6516,6 +6536,7 @@ <translation id="8119438628456698432">Protokolldateien werden erstellt…</translation> <translation id="811994229154425014">Punkteingabe durch Doppeltippen auf die Leertaste</translation> <translation id="8120505434908124087">eSIM-Profil einrichten</translation> +<translation id="812260729110117038">Werbetreibende und Publisher können die Wirksamkeit von Anzeigen prüfen, ohne Sie dabei websiteübergreifend zu tracken.</translation> <translation id="8123590694679414600">Ihre Daten wurden am <ph name="TIME" /> mit Ihrer Synchronisierungspassphrase verschlüsselt. Davon ausgenommen sind Zahlungsmethoden oder Adressen von Google Pay.</translation> <translation id="81238879832906896">Gelbe und weiße Blume</translation> <translation id="8124313775439841391">Verwaltete ONC-Eigenschaften</translation> @@ -6552,6 +6573,7 @@ <translation id="816055135686411707">Fehler beim Festlegen der Vertrauenswürdigkeit des Zertifikats</translation> <translation id="8160775796528709999">Aktivieren Sie „Automatische Untertitel“ in den Einstellungen, um Ihre Audioinhalte und Videos zu untertiteln</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Im Rahmen der Initiative <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> werden neue Technologien entwickelt, die zum Schutz vor websiteübergreifenden Tracking-Mechanismen und zum Erhalt des offenen Webs beitragen.</translation> <translation id="8161293209665121583">Lesemodus für Webseiten</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Tab in ein neues Fenster verschieben}other{Tabs in ein neues Fenster verschieben}}</translation> <translation id="8165997195302308593">Crostini-Portweiterleitung</translation> @@ -6753,7 +6775,6 @@ <translation id="8393700583063109961">Nachricht senden</translation> <translation id="8397825320644530257">Verbundenes Smartphone trennen</translation> <translation id="8398877366907290961">Trotzdem fortfahren</translation> -<translation id="8400146488506985033">Nutzer verwalten</translation> <translation id="8401432541486058167">Geben Sie die PIN für Ihre Smartcard an.</translation> <translation id="8404893580027489425">Der Fingerabdrucksensor befindet sich auf der rechten Seite Ihres <ph name="DEVICE_TYPE" />. Berühren Sie ihn leicht mit dem Finger.</translation> <translation id="8405046151008197676">Wichtiges zum letzten Update ansehen</translation> @@ -6809,7 +6830,6 @@ <translation id="8465444703385715657">Zum Ausführen von <ph name="PLUGIN_NAME" /> ist Ihre Genehmigung erforderlich</translation> <translation id="8466417995783206254">Auf diesem Tab wird ein Video im Bild-im-Bild-Modus abgespielt.</translation> <translation id="8467326454809944210">Andere Sprache auswählen</translation> -<translation id="8470214316007448308">Andere Personen</translation> <translation id="8470513973197838199">Gespeicherte Passwörter für <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Websites verwenden normalerweise USB-Geräte für Funktionen wie das Drucken eines Dokuments oder das Speichern auf einem Speichergerät</translation> <translation id="8471959340398751476">Rabatte sind deaktiviert. Sie können diese im Anpassungsmenü aktivieren.</translation> @@ -6996,6 +7016,7 @@ <translation id="8676374126336081632">Eingabe löschen</translation> <translation id="8676770494376880701">Leistungsschwaches Ladegerät angeschlossen</translation> <translation id="8677212948402625567">Alle minimieren...</translation> +<translation id="867767487203716855">Nächste Aktualisierung</translation> <translation id="8677859815076891398">Keine Alben. Ein Album in <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" /> erstellen.</translation> <translation id="8678582529642151449">Tabs werden nicht verkleinert</translation> <translation id="8678933587484842200">Wie soll diese Anwendung gestartet werden?</translation> @@ -7084,7 +7105,6 @@ <translation id="87646919272181953">Google Fotos-Album</translation> <translation id="8767621466733104912">Chrome automatisch für alle Nutzer aktualisieren</translation> <translation id="8770406935328356739">Stammverzeichnis der Erweiterung</translation> -<translation id="8770507190024617908">Nutzer verwalten</translation> <translation id="8771300903067484968">Der Hintergrund der Startseite wurde auf den standardmäßigen Hintergrund zurückgesetzt.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> speichern</translation> <translation id="8774379074441005279">Wiederherstellung bestätigen</translation> @@ -7345,6 +7365,7 @@ <translation id="9031549947500880805">In Google Drive sichern. Sie können Ihre Daten jederzeit wiederherstellen – auch auf einem anderen Gerät. In Ihrer Sicherung sind auch App-Daten enthalten.</translation> <translation id="9033765790910064284">Trotzdem fortfahren</translation> <translation id="9033857511263905942">&Einfügen</translation> +<translation id="9035689366572880647">Aktuelle PIN eingeben</translation> <translation id="9037640663275993951">Gerät ist nicht zulässig</translation> <translation id="9037818663270399707">Ihre Verbindung ist für den gesamten Netzwerkverkehr nicht privat</translation> <translation id="9037965129289936994">Original anzeigen</translation> @@ -7420,6 +7441,7 @@ <translation id="9112748030372401671">Hintergrundbild ändern</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> könnte schädlich sein. Zum Scannen an Google senden?</translation> <translation id="9112987648460918699">Suchen...</translation> +<translation id="9113240369465613386">Nur ungerade Seitenzahlen</translation> <translation id="9114663181201435112">Einfach anmelden</translation> <translation id="9115675100829699941">&Lesezeichen</translation> <translation id="9116465289595958864">Zuletzt geändert</translation> @@ -7574,6 +7596,7 @@ <translation id="991413375315957741">Bewegungs- oder Lichtsensoren</translation> <translation id="992032470292211616">Erweiterungen, Apps und Designs können Schäden auf Ihrem Gerät verursachen. Möchten Sie wirklich fortfahren?</translation> <translation id="992256792861109788">Rosa</translation> +<translation id="992401651319295351">Sie haben noch <ph name="RETRIES" /> Versuche. Sie können dieses Mobilfunknetz erst verwenden, wenn Sie eine neue PIN festlegen.</translation> <translation id="992592832486024913">ChromeVox deaktivieren (gesprochenes Feedback)</translation> <translation id="992778845837390402">Sicherung für Linux wird gerade ausgeführt</translation> <translation id="993540765962421562">Die Installation wird ausgeführt</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 7943fed..cde20bc 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">Δια&χείριση εργασιών</translation> <translation id="4036778507053569103">Η πολιτική της οποίας έγινε λήψη από τον διακομιστή δεν είναι έγκυρη.</translation> <translation id="4037084878352560732">Άλογο</translation> -<translation id="4037889604535939429">Επεξεργασία ατόμου</translation> <translation id="4040753847560036377">Εσφαλμένος κωδικός PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Έξοδος από τη σελίδα}other{Έξοδος από τις σελίδες}}</translation> <translation id="4044612648082411741">Εισαγάγετε τον κωδικό πρόσβασης του πιστοποιητικού σας</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Ορισμός του Chrome ως προεπιλεγμένο πρόγραμμα περιήγησης</translation> <translation id="5711983031544731014">Το ξεκλείδωμα δεν είναι δυνατό. Πληκτρολογήστε τον κωδικό πρόσβασής σας.</translation> <translation id="5712153969432126546">Οι ιστότοποι μερικές φορές δημοσιεύουν PDF, όπως έγγραφα, συμβόλαια και φόρμες.</translation> -<translation id="5712323955984474772">Επόμενη ενημέρωση</translation> <translation id="5715711091495208045">Μεσάζων προσθηκών: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Προεπιλεγμένες μηχανές αναζήτησης</translation> <translation id="5719637365829998022">Ο κωδικός QR σαρώθηκε.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Ο διαχειριστής σας δεν τον έχει εγκρίνει ακόμα</translation> <translation id="6568283005472142698">Αναζήτηση καρτελών</translation> <translation id="6569911211938664415">Οι κωδικοί πρόσβασης αποθηκεύονται στον Λογαριασμό σας Google (<ph name="ACCOUNT" />) για να μπορείτε να τους χρησιμοποιήσετε σε οποιαδήποτε συσκευή.</translation> -<translation id="6569934958368283244">Άλλα άτομα</translation> <translation id="6573497332121198392">Δεν είναι δυνατή η κατάργηση της συντόμευσης</translation> <translation id="657402800789773160">&Επαναφόρτωση αυτής της σελίδας</translation> <translation id="6577284282025554716">Η λήψη ακυρώθηκε: <ph name="FILE_NAME" /></translation> @@ -6805,7 +6802,6 @@ <translation id="8393700583063109961">Αποστολή μηνύματος</translation> <translation id="8397825320644530257">Αποσύνδεση συνδεδεμένου τηλεφώνου</translation> <translation id="8398877366907290961">Συνέχεια</translation> -<translation id="8400146488506985033">Διαχείριση ατόμων</translation> <translation id="8401432541486058167">Καταχωρίστε το PIN που συσχετίζεται με την έξυπνη κάρτα σας.</translation> <translation id="8404893580027489425">Ο αισθητήρας δακτυλικών αποτυπωμάτων βρίσκεται στη δεξιά πλευρά της συσκευής <ph name="DEVICE_TYPE" />. Αγγίξτε τον ελαφρώς με οποιοδήποτε δάκτυλο.</translation> <translation id="8405046151008197676">Δείτε τα σημαντικότερα στοιχεία της τελευταίας ενημέρωσης.</translation> @@ -6861,7 +6857,6 @@ <translation id="8465444703385715657">Η προσθήκη <ph name="PLUGIN_NAME" /> απαιτεί την άδειά σας για να εκτελεστεί</translation> <translation id="8466417995783206254">Αυτή η καρτέλα αναπαράγει κάποιο βίντεο στη λειτουργία picture-in-picture.</translation> <translation id="8467326454809944210">Επιλογή άλλης γλώσσας</translation> -<translation id="8470214316007448308">Άλλα άτομα</translation> <translation id="8470513973197838199">Αποθηκευμένοι κωδικοί πρόσβασης για το <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Οι ιστότοποι συνδέονται συνήθως σε συσκευές USB για διάφορες λειτουργίες, όπως η εκτύπωση εγγράφων ή η αποθήκευση σε μια συσκευή αποθήκευσης.</translation> <translation id="8471959340398751476">Οι εκπτώσεις είναι απενεργοποιημένες. Μπορείτε να τις ενεργοποιήσετε στο μενού προσαρμογής</translation> @@ -7048,6 +7043,7 @@ <translation id="8676374126336081632">Διαγραφή καταχώρισης</translation> <translation id="8676770494376880701">Ο συνδεδεμένος φορτιστής παρέχει χαμηλή ισχύ</translation> <translation id="8677212948402625567">Σύμπτυξη όλων...</translation> +<translation id="867767487203716855">Επόμενη ενημέρωση</translation> <translation id="8677859815076891398">Δεν υπάρχουν λευκώματα. Δημιουργήστε ένα λεύκωμα στις <ph name="LINK_BEGIN" />Φωτογραφίες Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Καρτέλες που δεν σμικρύνονται</translation> <translation id="8678933587484842200">Πώς θέλετε να ανοίγει αυτή η εφαρμογή;</translation> @@ -7134,7 +7130,6 @@ <translation id="87646919272181953">Λεύκωμα Φωτογραφιών Google</translation> <translation id="8767621466733104912">Αυτόματη ενημέρωση του Chrome για όλους τους χρήστες</translation> <translation id="8770406935328356739">Κατάλογος ρίζας επέκτασης</translation> -<translation id="8770507190024617908">Διαχείριση ατόμων</translation> <translation id="8771300903067484968">Έγινε επαναφορά του φόντου της αρχικής σελίδας στο προεπιλεγμένο φόντο.</translation> <translation id="8773302562181397928">Εξοικονομήστε <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Επιβεβαίωση επαναφοράς</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 1f2a91cf..9b8429d 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&Task manager</translation> <translation id="4036778507053569103">The policy downloaded from the server is invalid.</translation> <translation id="4037084878352560732">Horse</translation> -<translation id="4037889604535939429">Edit person</translation> <translation id="4040753847560036377">Incorrect PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Exit Page}other{Exit Pages}}</translation> <translation id="4044612648082411741">Enter your certificate password</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Set Chrome as your default browser</translation> <translation id="5711983031544731014">Unable to unlock. Enter your password.</translation> <translation id="5712153969432126546">Sites sometimes publish PDFs, like documents, contracts and forms</translation> -<translation id="5712323955984474772">Next update</translation> <translation id="5715711091495208045">Plug-in Broker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Default search engines</translation> <translation id="5719637365829998022">QR code has been scanned.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Your manager hasn't approved it yet</translation> <translation id="6568283005472142698">Tab search</translation> <translation id="6569911211938664415">Passwords are saved in your Google Account (<ph name="ACCOUNT" />) so that you can use them on any device</translation> -<translation id="6569934958368283244">Other people</translation> <translation id="6573497332121198392">Can't remove shortcut</translation> <translation id="657402800789773160">&Reload This Page</translation> <translation id="6577284282025554716">Download cancelled: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Send message</translation> <translation id="8397825320644530257">Disconnect connected phone</translation> <translation id="8398877366907290961">Proceed anyway</translation> -<translation id="8400146488506985033">Manage people</translation> <translation id="8401432541486058167">Provide the PIN that’s associated with your smart card.</translation> <translation id="8404893580027489425">The fingerprint sensor is on the right-hand side of your <ph name="DEVICE_TYPE" />. Touch it lightly with any finger.</translation> <translation id="8405046151008197676">Get highlights from the latest update</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> needs your permission to run</translation> <translation id="8466417995783206254">This tab is playing a video in picture-in-picture mode.</translation> <translation id="8467326454809944210">Choose another language</translation> -<translation id="8470214316007448308">Other people</translation> <translation id="8470513973197838199">Saved passwords for <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Sites usually connect to USB devices for features like printing a document or saving to a storage device</translation> <translation id="8471959340398751476">Discounts are off. You can turn them on in the customise menu</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Clear input</translation> <translation id="8676770494376880701">Low-power charger connected</translation> <translation id="8677212948402625567">Collapse all...</translation> +<translation id="867767487203716855">Next update</translation> <translation id="8677859815076891398">No albums. Create an album in <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Tabs don't shrink</translation> <translation id="8678933587484842200">How would you like this application to launch?</translation> @@ -7135,7 +7131,6 @@ <translation id="87646919272181953">Google Photos album</translation> <translation id="8767621466733104912">Automatically update Chrome for all users</translation> <translation id="8770406935328356739">Extension root directory</translation> -<translation id="8770507190024617908">Manage People</translation> <translation id="8771300903067484968">Start page background has been reset to the default background.</translation> <translation id="8773302562181397928">Save <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirm Restore</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index cd961c0..841c528 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -697,6 +697,7 @@ <translation id="173628468822554835">Entendido. De forma predeterminada, los nuevos sitios que visites no te enviarán notificaciones.</translation> <translation id="1736419249208073774">Explorar</translation> <translation id="1737968601308870607">Incluir error</translation> +<translation id="1739684185846730053">Las pruebas de Privacy Sandbox siguen en desarrollo y están disponibles en ciertas regiones. Por ahora, los sitios pueden usar Privacy Sandbox y seguir utilizando tecnologías web actuales, como las cookies de terceros.</translation> <translation id="174123615272205933">Personalizado</translation> <translation id="1741314857973421784">Continuar</translation> <translation id="1743570585616704562">No se reconoció</translation> @@ -1120,6 +1121,7 @@ <translation id="217576141146192373">No se puede agregar la impresora. Revisa la configuración de la impresora y vuelve a intentarlo.</translation> <translation id="2177950615300672361">Pestaña de incógnito: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Compromiso de entidad de certificación</translation> +<translation id="2179416702468739594">Se están buscando perfiles disponibles. Es posible que se desconecte tu red móvil por unos minutos.</translation> <translation id="2182058453334755893">Se copió en tu portapapeles</translation> <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios pueden reproducir sonido (recomendado)</translation> <translation id="2186711480981247270">Página compartida desde otro dispositivo</translation> @@ -1385,6 +1387,7 @@ <translation id="2469375675106140201">Personalizar el corrector ortográfico</translation> <translation id="247051149076336810">URL del sistema de archivos compartidos</translation> <translation id="2470702053775288986">Extensiones no admitidas inhabilitadas</translation> +<translation id="2470939964922472929">Se ingresó el PIN de forma incorrecta demasiadas veces. Para configurar un PIN nuevo, ingresa la clave personal de desbloqueo (PUK) de 8 dígitos que te proporcionó tu proveedor.</translation> <translation id="2471469610750100598">Negro (predeterminado)</translation> <translation id="2471506181342525583">Se permite el acceso a ubicaciones</translation> <translation id="2473195200299095979">Traducir esta página</translation> @@ -1681,6 +1684,7 @@ <translation id="2785873697295365461">Descriptores de archivo</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Número de grupo</translation> <translation id="2789486458103222910">Aceptar</translation> <translation id="2791529110887957050">Quitar Linux</translation> <translation id="2791952154587244007">Se produjo un error. La aplicación del kiosco no podrá iniciarse automáticamente en este dispositivo.</translation> @@ -1982,6 +1986,7 @@ <translation id="310671807099593501">El sitio está usando la conexión Bluetooth</translation> <translation id="3108931485517391283">No se puede recibir el archivo</translation> <translation id="3109724472072898302">Contraído</translation> +<translation id="3113592018909187986">Te queda 1 intento. Para usar esta red, deberás configurar un nuevo PIN.</translation> <translation id="311394601889664316">No permitir que los sitios editen archivos ni carpetas de tu dispositivo</translation> <translation id="3115147772012638511">Esperando caché...</translation> <translation id="3115580024857770654">Contraer todo</translation> @@ -2270,6 +2275,7 @@ <translation id="3440663250074896476">Más acciones para <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Pantalla</translation> <translation id="3441663102605358937">Vuelve a acceder a <ph name="ACCOUNT" /> para verificar esta cuenta</translation> +<translation id="3444641828375597683">Los anunciantes y los publicadores pueden usar el FLoC, que se describe más adelante en esta página.</translation> <translation id="3445047461171030979">Respuestas rápidas del Asistente de Google</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3445925074670675829">Dispositivo USB-C</translation> @@ -2852,7 +2858,7 @@ <translation id="4035758313003622889">Adminis&trador de &tareas</translation> <translation id="4036778507053569103">La política descargada del servidor no es válida.</translation> <translation id="4037084878352560732">Caballo</translation> -<translation id="4037889604535939429">Editar persona</translation> +<translation id="4040753847560036377">La PUK es incorrecta.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Salir de la página}other{Salir de las páginas}}</translation> <translation id="4044612648082411741">Ingresar la contraseña del certificado</translation> <translation id="4044708573046946214">Contraseña de bloqueo de pantalla</translation> @@ -3061,6 +3067,7 @@ <translation id="4297813521149011456">Rotación de la pantalla</translation> <translation id="4299022904780065004">Nueva ventana de &incógnito</translation> <translation id="4301671483919369635">Esta página puede editar archivos</translation> +<translation id="4302605047395093221">La persona que use este dispositivo deberá ingresar el PIN para conectarse a esta red móvil.</translation> <translation id="4303079906735388947">Configura un nuevo PIN para tu llave de seguridad</translation> <translation id="4305402730127028764">Copiar a <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Cambiar</translation> @@ -3245,6 +3252,7 @@ <translation id="4510479820467554003">Lista de cuentas parentales</translation> <translation id="4510614391273086606">Se están restableciendo los archivos y apps de Linux al estado de la copia de seguridad.</translation> <translation id="451102079304155829">carritos</translation> +<translation id="4513275008300099962">Inhabilitar la superposición de los controles de las ventanas</translation> <translation id="4513946894732546136">Comentario</translation> <translation id="451407183922382411">Con la tecnología de <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Reproduce o pausa el video</translation> @@ -4317,7 +4325,6 @@ <translation id="5709557627224531708">Establecer Chrome como tu navegador predeterminado</translation> <translation id="5711983031544731014">No se puede desbloquear. Ingresa la contraseña.</translation> <translation id="5712153969432126546">A veces, los sitios publican archivos PDF, como documentos, contratos y formularios</translation> -<translation id="5712323955984474772">Próxima actualización</translation> <translation id="5715711091495208045">Agente del complemento: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motores de búsqueda predeterminados</translation> <translation id="5719637365829998022">Se escaneó el código QR.</translation> @@ -4589,10 +4596,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" />: Se conectó el dispositivo USB</translation> <translation id="6028117231645531007">Agregar huella dactilar</translation> <translation id="6031600495088157824">Opciones de entrada de la barra de herramientas</translation> +<translation id="6032091552407840792">Esta prueba está activada solo en <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Haz clic en una extensión para otorgarle acceso a este sitio.</translation> <translation id="6032912588568283682">Sistema de archivos</translation> <translation id="603539183851330738">Botón para deshacer la autocorrección. Revertir a <ph name="TYPED_WORD" />. Presiona Intro para Deshacer o Esc para descartar.</translation> <translation id="6038929619733116134">Bloquear si el sitio muestra anuncios intrusivos o engañosos</translation> +<translation id="603895874132768835">Para usar esta red, deberás configurar un nuevo PIN.</translation> <translation id="6039651071822577588">Diccionario de propiedades de la red con formato no válido</translation> <translation id="6040143037577758943">Cerrar</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />El servicio de ubicación de Google usa fuentes como conexiones Wi-Fi, redes móviles y sensores para calcular la ubicación de tu dispositivo.<ph name="END_PARAGRAPH1" /> @@ -4840,6 +4849,7 @@ <translation id="6292699686837272722">Las pestañas se achican a un ancho mediano</translation> <translation id="6295158916970320988">Todos los sitios</translation> <translation id="6295855836753816081">Guardando…</translation> +<translation id="6296410173147755564">La PUK no es válida.</translation> <translation id="6298962879096096191">Usar Google Play para instalar apps de Android</translation> <translation id="6300177430812514606">No puede completar el envío ni la recepción de datos</translation> <translation id="630065524203833229">&Salir</translation> @@ -4886,6 +4896,7 @@ <translation id="6340526405444716530">Personalización</translation> <translation id="6341850831632289108">Detectar tu ubicación física</translation> <translation id="6342069812937806050">Recién</translation> +<translation id="6343003829431264373">Solo páginas pares</translation> <translation id="6344170822609224263">Acceder a la lista de conexiones de red</translation> <translation id="6344576354370880196">Impresoras guardadas</translation> <translation id="6345418402353744910">Para que el administrador pueda configurar tu red, proporciona tu nombre de usuario y contraseña para el proxy <ph name="PROXY" />.</translation> @@ -5085,7 +5096,6 @@ <translation id="6563469144985748109">Tu administrador aún no lo aprobó</translation> <translation id="6568283005472142698">Búsqueda de pestañas</translation> <translation id="6569911211938664415">Las contraseñas se guardan en tu Cuenta de Google (<ph name="ACCOUNT" />) para que puedas usarlas en cualquier dispositivo.</translation> -<translation id="6569934958368283244">Otras personas</translation> <translation id="6573497332121198392">No se puede quitar el acceso directo.</translation> <translation id="657402800789773160">&Volver a cargar esta página</translation> <translation id="6577284282025554716">Se canceló la descarga: <ph name="FILE_NAME" /></translation> @@ -5134,6 +5144,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> incluye contenido sensible o peligroso. Pídele al propietario que solucione el problema.</translation> <translation id="6624687053722465643">Dulzura</translation> <translation id="6628328486509726751">Fecha y hora de carga: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Ingresa al menos 4 dígitos.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> solicita acceso permanente a un certificado para autenticarse en tu nombre.</translation> <translation id="6635362468090274700">Para que las personas puedan compartir contenido contigo, primero debes estar visible.<ph name="BR" /><ph name="BR" />Para activar tu visibilidad de forma temporal, abre el área de estado y, luego, activa la visibilidad de Nearby.</translation> <translation id="6635944431854494329">El propietario puede controlar esta función desde Configuración > Configuración avanzada > Enviar automáticamente datos de uso y diagnóstico a Google.</translation> @@ -5172,6 +5183,7 @@ <translation id="6664774537677393800">Se produjo un error al abrir tu perfil. Sal de tu cuenta y vuelve a acceder.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ya está disponible</translation> <translation id="6671320560732140690">{COUNT,plural, =1{una dirección}other{# direcciones}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> está configurando la administración</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Para iniciar la sincronización, ingresa tu frase de contraseña.</translation> <translation id="6675665718701918026">Dispositivo señalador conectado</translation> @@ -5180,6 +5192,7 @@ <translation id="6680442031740878064">Disponible: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Velocidad</translation> <translation id="6681668084120808868">Tomar foto</translation> +<translation id="6683087162435654533">R&establecer todas las pestañas</translation> <translation id="6683948477137300040">Mostrar la ventana emergente del código QR y del EID del dispositivo</translation> <translation id="6684827949542560880">Se está descargando la actualización más reciente</translation> <translation id="668599234725812620">Abrir Google Play</translation> @@ -5749,6 +5762,7 @@ <translation id="7308643132139167865">Idiomas de sitios web</translation> <translation id="7309257895202129721">Mostrar &controles</translation> <translation id="7310598146671372464">No pudiste acceder porque el servidor no es compatible con los tipos de encriptación de Kerberos especificados. Comunícate con el administrador.</translation> +<translation id="7315168816273861089">Habilitar la superposición de los controles de las ventanas</translation> <translation id="7320213904474460808">Elegir la red predeterminada</translation> <translation id="7321545336522791733">No se puede acceder al servidor</translation> <translation id="7324297612904500502">Foro de la versión Beta</translation> @@ -5925,7 +5939,9 @@ <translation id="7506541170099744506">Tu dispositivo <ph name="DEVICE_TYPE" /> se inscribió correctamente para la administración empresarial.</translation> <translation id="7507207699631365376">Consulta la <ph name="BEGIN_LINK" />Política de Privacidad<ph name="END_LINK" /> de este proveedor</translation> <translation id="7507930499305566459">Certificado del respondedor de estado</translation> +<translation id="7509097596023256288">Se está configurando la administración</translation> <translation id="7509246181739783082">Verifica tu identidad</translation> +<translation id="7511415964832680006">Si habilitas esta opción, los sitios podrán utilizar las técnicas de protección de la privacidad que se muestran aquí para ofrecer su contenido y sus servicios. Entre estas técnicas, se incluyen alternativas al seguimiento entre sitios web. Es posible que se agreguen más funciones de prueba a lo largo del tiempo.</translation> <translation id="7513029293694390567">Accede automáticamente a los sitios web con las credenciales almacenadas. Si la función está inhabilitada, deberás confirmar siempre tu identidad para acceder a un sitio web.</translation> <translation id="7514239104543605883">Copiar a tu dispositivo</translation> <translation id="7514365320538308">Descargar</translation> @@ -6286,6 +6302,8 @@ <translation id="7876027585589532670">No se puede editar el acceso directo.</translation> <translation id="7877451762676714207">Error de servidor desconocido. Inténtalo nuevamente o comunícate con el administrador del servidor.</translation> <translation id="7879631849810108578">Conjunto de combinaciones de teclas: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Si habilitas esta tecnología y el estado es "activada", Chrome usará tu historial de navegación durante 7 días para determinar el grupo, o "cohorte", al que perteneces. Los anunciantes pueden seleccionar anuncios para el grupo. El historial de navegación se mantendrá privado en tu dispositivo. Esta prueba está activada solo en + <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Se borrarán los datos locales en el reinicio</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Ver cuenta</translation> @@ -6445,6 +6463,7 @@ <translation id="804786196054284061">Acuerdo de licencia de usuario final</translation> <translation id="8048977114738515028">Crea un acceso directo de escritorio en tu dispositivo para acceder directamente a este perfil</translation> <translation id="8049029041626250638">Conecta un teclado o mouse. Si usas dispositivos Bluetooth, asegúrate de que estén listos para vincularse.</translation> +<translation id="8049184478152619004">Ingresa la clave personal de desbloqueo (PUK).</translation> <translation id="8049705080247101012">Google marcó <ph name="EXTENSION_NAME" /> como extensión maliciosa y se canceló la instalación</translation> <translation id="8049948037269924837">Desplazamiento invertido del panel táctil</translation> <translation id="8050038245906040378">Firma de código comercial de Microsoft</translation> @@ -6481,6 +6500,7 @@ <translation id="8082106343289440791">¿Deseas vincular "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Si inhabilitas la depuración de adb, se restablecerá el dispositivo <ph name="DEVICE_TYPE" /> a la configuración de fábrica. Se borrarán todas las cuentas de usuario y los datos locales.</translation> <translation id="8084114998886531721">Se guardó la contraseña</translation> +<translation id="8084510406207562688">R&establecer todas las pestañas</translation> <translation id="8086015605808120405">Configurando <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">Configurar <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Este archivo está encriptado. Pídele al propietario que lo desencripte.}other{Algunos de estos archivos están encriptados. Pídele al propietario que los desencripte.}}</translation> @@ -6522,6 +6542,7 @@ <translation id="8119438628456698432">Generando archivos de registro…</translation> <translation id="811994229154425014">Doble espacio para escribir un punto</translation> <translation id="8120505434908124087">Instalar el perfil de eSIM</translation> +<translation id="812260729110117038">Los anunciantes y los publicadores pueden analizar la eficacia de los anuncios sin que estos hagan un seguimiento de los sitios que visitas.</translation> <translation id="8123590694679414600">Se encriptaron los datos con tu frase de contraseña de sincronización el <ph name="TIME" />. No se incluyen formas de pago ni direcciones de Google Pay.</translation> <translation id="81238879832906896">Flor amarilla y blanca</translation> @@ -6559,6 +6580,7 @@ <translation id="816055135686411707">Error en la configuración de confiabilidad del certificado</translation> <translation id="8160775796528709999">Si quieres obtener subtítulos para el audio y el video, habilita el Subtitulado instantáneo en la configuración</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">A través de <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome está desarrollando nuevas tecnologías para protegerte ante el seguimiento entre sitios, a la vez que preservan la Web abierta.</translation> <translation id="8161293209665121583">Modo de lectura para páginas web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover la pestaña a una ventana nueva}other{Mover las pestañas a una ventana nueva}}</translation> <translation id="8165997195302308593">Redirección de puertos para Crostini</translation> @@ -6760,7 +6782,6 @@ <translation id="8393700583063109961">Enviar mensaje</translation> <translation id="8397825320644530257">Desconectar un teléfono conectado</translation> <translation id="8398877366907290961">Continuar de todos modos</translation> -<translation id="8400146488506985033">Administrar personas</translation> <translation id="8401432541486058167">Proporciona el PIN asociado a tu tarjeta inteligente.</translation> <translation id="8404893580027489425">El sensor de huellas dactilares se encuentra del lado derecho de tu <ph name="DEVICE_TYPE" />. Tócalo suavemente con un dedo.</translation> <translation id="8405046151008197676">Conoce las novedades de la última actualización</translation> @@ -6816,7 +6837,6 @@ <translation id="8465444703385715657">Se necesita tu permiso para ejecutar <ph name="PLUGIN_NAME" /></translation> <translation id="8466417995783206254">Esta pestaña está reproduciendo un video en el modo de pantalla en pantalla.</translation> <translation id="8467326454809944210">Elegir otro idioma</translation> -<translation id="8470214316007448308">Otras personas</translation> <translation id="8470513973197838199">Se guardaron contraseñas para <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Por lo general los sitios se conectan a dispositivos USB para habilitar funciones, como imprimir un documento o guardar datos en un dispositivo de almacenamiento.</translation> <translation id="8471959340398751476">Se desactivaron las notificaciones de descuentos. Puedes activarlas en el menú de personalización.</translation> @@ -7003,6 +7023,7 @@ <translation id="8676374126336081632">Borrar entrada</translation> <translation id="8676770494376880701">Cargador de baja potencia conectado</translation> <translation id="8677212948402625567">Contraer todo...</translation> +<translation id="867767487203716855">Próxima actualización</translation> <translation id="8677859815076891398">No hay álbumes. Crea un álbum en <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Las pestañas no se achican</translation> <translation id="8678933587484842200">¿Cómo deseas que se ejecute esta app?</translation> @@ -7091,7 +7112,6 @@ <translation id="87646919272181953">Álbum de Google Fotos</translation> <translation id="8767621466733104912">Actualizar Chrome automáticamente para todos los usuarios</translation> <translation id="8770406935328356739">Directorio de raíz de la extensión</translation> -<translation id="8770507190024617908">Administrar personas</translation> <translation id="8771300903067484968">El fondo de pantalla de la página de inicio se restableció al fondo de pantalla predeterminado.</translation> <translation id="8773302562181397928">Ahorra <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirma que quieres restablecer</translation> @@ -7352,6 +7372,7 @@ <translation id="9031549947500880805">Crea una copia de seguridad en Google Drive. Restaura tus datos o cambia de dispositivo en cualquier momento con facilidad. Se incluyen datos de apps.</translation> <translation id="9033765790910064284">Continuar de todos modos</translation> <translation id="9033857511263905942">&Pegar</translation> +<translation id="9035689366572880647">Ingresar el PIN actual</translation> <translation id="9037640663275993951">El dispositivo no está habilitado</translation> <translation id="9037818663270399707">Tu conexión no es privada para todo el tráfico de red.</translation> <translation id="9037965129289936994">Mostrar original</translation> @@ -7427,6 +7448,7 @@ <translation id="9112748030372401671">Cambiar el fondo de pantalla</translation> <translation id="9112786533191410418">El archivo <ph name="FILE_NAME" /> puede ser peligroso. ¿Quieres enviarlo a Google para analizarlo?</translation> <translation id="9112987648460918699">Buscar...</translation> +<translation id="9113240369465613386">Solo páginas impares</translation> <translation id="9114663181201435112">Acceder de forma fácil</translation> <translation id="9115675100829699941">&Favoritos</translation> <translation id="9116465289595958864">Última modificación</translation> @@ -7581,6 +7603,7 @@ <translation id="991413375315957741">sensores de luz o movimiento</translation> <translation id="992032470292211616">Las extensiones, las aplicaciones y los temas pueden dañar tu dispositivo. ¿Confirmas que quieres continuar?</translation> <translation id="992256792861109788">Rosa</translation> +<translation id="992401651319295351">Te quedan <ph name="RETRIES" /> intentos. Para usar esta red, deberás configurar un nuevo PIN.</translation> <translation id="992592832486024913">Inhabilitar ChromeVox (comentarios por voz)</translation> <translation id="992778845837390402">La copia de seguridad de Linux está en curso</translation> <translation id="993540765962421562">La instalación está en curso</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 173a3d71..3fc3c09 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -700,6 +700,7 @@ <translation id="173628468822554835">Entendido. De forma predeterminada, los sitios nuevos a los que accedas no te enviarán notificaciones.</translation> <translation id="1736419249208073774">Más información</translation> <translation id="1737968601308870607">Incluir error</translation> +<translation id="1739684185846730053">Las pruebas de Privacy Sandbox aún se encuentran en desarrollo y solo están disponibles en algunas regiones. Por ahora, los sitios pueden probar Privacy Sandbox y seguir utilizando tecnologías web actuales, como las cookies de terceros.</translation> <translation id="174123615272205933">Personalizados</translation> <translation id="1741314857973421784">Continuar</translation> <translation id="1743570585616704562">No se ha reconocido</translation> @@ -1123,6 +1124,7 @@ <translation id="217576141146192373">No se ha podido añadir la impresora. Revisa la configuración de tu impresora y vuelve a intentarlo.</translation> <translation id="2177950615300672361">Pestaña de incógnito: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Compromiso de entidad emisora de certificados</translation> +<translation id="2179416702468739594">Buscando perfiles disponibles. Es posible que tu red móvil se desconecte durante unos minutos.</translation> <translation id="2182058453334755893">Se ha copiado en tu portapapeles</translation> <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios pueden reproducir sonidos (recomendado)</translation> <translation id="2186711480981247270">Página compartida desde otro dispositivo</translation> @@ -1389,6 +1391,7 @@ <translation id="2469375675106140201">Personalizar el corrector ortográfico</translation> <translation id="247051149076336810">URL del sistema de archivos compartidos</translation> <translation id="2470702053775288986">Extensiones no admitidas inhabilitadas</translation> +<translation id="2470939964922472929">Se ha escrito un PIN incorrecto demasiadas veces. Para establecer un nuevo PIN, escribe el código PUK de 8 dígitos proporcionado por tu operador.</translation> <translation id="2471469610750100598">Negro (predeterminado)</translation> <translation id="2471506181342525583">Acceso a la ubicación permitido</translation> <translation id="2473195200299095979">Traducir esta página</translation> @@ -1684,6 +1687,7 @@ <translation id="2785873697295365461">Descriptores de archivo</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Número de grupo</translation> <translation id="2789486458103222910">Aceptar</translation> <translation id="2791529110887957050">Eliminar Linux</translation> <translation id="2791952154587244007">Se ha producido un error. La aplicación de kiosk no podrá iniciarse automáticamente en este dispositivo.</translation> @@ -1985,6 +1989,7 @@ <translation id="310671807099593501">El sitio web está usando el Bluetooth</translation> <translation id="3108931485517391283">Error al recibir</translation> <translation id="3109724472072898302">Contraído</translation> +<translation id="3113592018909187986">Te queda 1 intento. No podrás usar esta red hasta que establezcas un nuevo PIN.</translation> <translation id="311394601889664316">No permitir que los sitios editen archivos ni carpetas de tu dispositivo</translation> <translation id="3115147772012638511">Esperando caché...</translation> <translation id="3115580024857770654">Ocultar todo</translation> @@ -2273,6 +2278,7 @@ <translation id="3440663250074896476">Más acciones aplicables a <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Pantalla</translation> <translation id="3441663102605358937">Vuelve a iniciar sesión en <ph name="ACCOUNT" /> para verificar la cuenta</translation> +<translation id="3444641828375597683">Los anunciantes y editores pueden usar el aprendizaje federado de cohortes (FLoC), que se describe más adelante.</translation> <translation id="3445047461171030979">Respuestas rápidas del Asistente de Google</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3445925074670675829">Dispositivo USB-C</translation> @@ -2854,7 +2860,7 @@ <translation id="4035758313003622889">Adminis&trador de tareas</translation> <translation id="4036778507053569103">La política que has descargado del servidor no es válida.</translation> <translation id="4037084878352560732">Caballo</translation> -<translation id="4037889604535939429">Cambiar persona</translation> +<translation id="4040753847560036377">PUK incorrecto</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Salir de la página}other{Salir de las páginas}}</translation> <translation id="4044612648082411741">Introduce la contraseña del certificado</translation> <translation id="4044708573046946214">Contraseña de bloqueo de pantalla</translation> @@ -3063,6 +3069,7 @@ <translation id="4297813521149011456">Rotación de pantalla</translation> <translation id="4299022904780065004">Nueva ventana de &incógnito</translation> <translation id="4301671483919369635">Esta página tiene permiso para editar archivos</translation> +<translation id="4302605047395093221">Cualquiera que use este dispositivo deberá escribir el PIN para conectarse a esta red móvil.</translation> <translation id="4303079906735388947">Configura un nuevo PIN para tu llave de seguridad</translation> <translation id="4305402730127028764">Copiar en <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Cambiar</translation> @@ -3247,6 +3254,7 @@ <translation id="4510479820467554003">Lista de cuentas parentales</translation> <translation id="4510614391273086606">Se está restaurando el estado de copia de seguridad de los archivos y aplicaciones de Linux.</translation> <translation id="451102079304155829">carritos</translation> +<translation id="4513275008300099962">Inhabilitar la superposición de los controles de ventanas</translation> <translation id="4513946894732546136">Comentarios</translation> <translation id="451407183922382411">Con la tecnología de <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Reproducir o pausar el video</translation> @@ -4319,7 +4327,6 @@ <translation id="5709557627224531708">Establecer Google Chrome como navegador predeterminado</translation> <translation id="5711983031544731014">No se puede realizar el desbloqueo. Introduce tu contraseña.</translation> <translation id="5712153969432126546">A veces, los sitios publican archivos PDF, como documentos, contratos y formularios</translation> -<translation id="5712323955984474772">Próxima actualización</translation> <translation id="5715711091495208045">Agente de complementos: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Buscadores predeterminados</translation> <translation id="5719637365829998022">Código QR escaneado.</translation> @@ -4591,10 +4598,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" />: dispositivo USB conectado</translation> <translation id="6028117231645531007">Añadir huella digital</translation> <translation id="6031600495088157824">Opciones de entrada en la barra de herramientas</translation> +<translation id="6032091552407840792">Esta prueba solo está activa en <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Para permitir que una extensión acceda a este sitio web, haz clic en ella.</translation> <translation id="6032912588568283682">Sistema de archivos</translation> <translation id="603539183851330738">Botón para deshacer la autocorrección. Revierte el cambio a <ph name="TYPED_WORD" />. Pulsa Intro para activar el botón o Escape para salir.</translation> <translation id="6038929619733116134">Bloquear si el sitio web muestra anuncios invasivos o engañosos</translation> +<translation id="603895874132768835">No podrás usar esta red hasta que establezcas un nuevo PIN.</translation> <translation id="6039651071822577588">El formato del diccionario de propiedades de la red es incorrecto.</translation> <translation id="6040143037577758943">Cerrar</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />El servicio de ubicación de Google utiliza distintas fuentes, como sensores y redes Wi‑Fi o móviles, para determinar la ubicación de este dispositivo.<ph name="END_PARAGRAPH1" /> @@ -4842,6 +4851,7 @@ <translation id="6292699686837272722">el tamaño de las pestañas se ajusta a un ancho medio</translation> <translation id="6295158916970320988">Todos los sitios</translation> <translation id="6295855836753816081">Guardando...</translation> +<translation id="6296410173147755564">PUK no válido</translation> <translation id="6298962879096096191">Usa Google Play para descargar aplicaciones de Android</translation> <translation id="6300177430812514606">No puede terminar de enviar o recibir datos</translation> <translation id="630065524203833229">&Salir</translation> @@ -4888,6 +4898,7 @@ <translation id="6340526405444716530">Personalización</translation> <translation id="6341850831632289108">Detectar tu ubicación física</translation> <translation id="6342069812937806050">Justo ahora</translation> +<translation id="6343003829431264373">Solo páginas pares</translation> <translation id="6344170822609224263">Accede a la lista de conexiones de red</translation> <translation id="6344576354370880196">Impresoras guardadas</translation> <translation id="6345418402353744910">El proxy <ph name="PROXY" /> necesita tu nombre de usuario y tu contraseña para que el administrador pueda configurar tu red</translation> @@ -5087,7 +5098,6 @@ <translation id="6563469144985748109">Tu administrador aún no la ha aprobado</translation> <translation id="6568283005472142698">Búsqueda en pestañas</translation> <translation id="6569911211938664415">Las contraseñas se guardan en tu cuenta de Google (<ph name="ACCOUNT" />) para que puedas utilizarlas en cualquier dispositivo.</translation> -<translation id="6569934958368283244">Otras personas</translation> <translation id="6573497332121198392">No se puede quitar el acceso directo</translation> <translation id="657402800789773160">Volver a &cargar la página</translation> <translation id="6577284282025554716">Descarga cancelada: <ph name="FILE_NAME" /></translation> @@ -5136,6 +5146,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> incluye contenido sensible o peligroso. Pídele al propietario que lo corrija.</translation> <translation id="6624687053722465643">Dulzura</translation> <translation id="6628328486509726751">Fecha y hora de subida: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Escribe al menos 4 números</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> desea acceder de forma permanente a un certificado parar autenticarse en tu nombre.</translation> <translation id="6635362468090274700">Nadie podrá compartir nada contigo hasta que tu dispositivo sea visible.<ph name="BR" /><ph name="BR" />Para hacerlo visible temporalmente, abre el área de estado y activa la visibilidad Nearby.</translation> <translation id="6635944431854494329">El propietario puede controlar esta función desde Configuración > Configuración avanzada > Enviar automáticamente los datos de uso y diagnóstico a Google.</translation> @@ -5174,6 +5185,7 @@ <translation id="6664774537677393800">Se ha producido un error al abrir tu perfil. Cierra sesión y vuelve a iniciarla.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ya está disponible</translation> <translation id="6671320560732140690">{COUNT,plural, =1{una dirección}other{# direcciones}}</translation> +<translation id="6671497123040790595">Configurando la gestión de <ph name="MANAGER" /></translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Para iniciar la sincronización, escribe tu frase de contraseña</translation> <translation id="6675665718701918026">Dispositivo señalador conectado</translation> @@ -5182,6 +5194,7 @@ <translation id="6680442031740878064">Disponible: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Velocidad</translation> <translation id="6681668084120808868">Sacar foto</translation> +<translation id="6683087162435654533">Restaurar todas las pestañas</translation> <translation id="6683948477137300040">Mostrar ventana emergente con EID y código QR del dispositivo</translation> <translation id="6684827949542560880">Descargando la última actualización</translation> <translation id="668599234725812620">Abrir Google Play</translation> @@ -5751,6 +5764,7 @@ <translation id="7308643132139167865">Idiomas de sitios web</translation> <translation id="7309257895202129721">Mostrar &controles</translation> <translation id="7310598146671372464">No se ha podido iniciar sesión. El servidor no admite los tipos de cifrado Kerberos especificados. Ponte en contacto con tu administrador.</translation> +<translation id="7315168816273861089">Habilitar la superposición de los controles de ventanas</translation> <translation id="7320213904474460808">Establecer como red predeterminada</translation> <translation id="7321545336522791733">No se puede acceder al servidor</translation> <translation id="7324297612904500502">Foro beta</translation> @@ -5927,7 +5941,9 @@ <translation id="7506541170099744506">El dispositivo <ph name="DEVICE_TYPE" /> se ha registrado correctamente para ser administrado por la empresa.</translation> <translation id="7507207699631365376">Consulta la <ph name="BEGIN_LINK" />política de privacidad<ph name="END_LINK" /> de este proveedor</translation> <translation id="7507930499305566459">Certificado de respuesta de estado</translation> +<translation id="7509097596023256288">Configurando la gestión</translation> <translation id="7509246181739783082">Verifica tu identidad</translation> +<translation id="7511415964832680006">Si está habilitado, los sitios podrán utilizar las técnicas de protección de la privacidad que se muestran aquí para ofrecer su contenido y sus servicios. Entre estas técnicas, se incluyen alternativas al seguimiento entre sitios. Es posible que se añadan más pruebas a lo largo del tiempo.</translation> <translation id="7513029293694390567">Permite iniciar sesión automáticamente en sitios web con credenciales almacenadas. Si esta función está inhabilitada, se te solicitará la confirmación cada vez que intentes iniciar sesión en un sitio web.</translation> <translation id="7514239104543605883">Copiar en tu dispositivo</translation> <translation id="7514365320538308">Descargar</translation> @@ -6288,6 +6304,8 @@ <translation id="7876027585589532670">No se puede editar el acceso directo</translation> <translation id="7877451762676714207">Se ha producido un error desconocido en el servidor. Vuelve a intentarlo o ponte en contacto con el administrador del servidor.</translation> <translation id="7879631849810108578">Combinación de teclas establecida: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Cuando está habilitado y en estado activo, Chrome usa tu historial de navegación durante 7 días para determinar en qué grupo o "cohorte" te encuentras. Los anunciantes pueden seleccionar anuncios para el grupo. Tu historial de navegación se conservará en tu dispositivo y será privado. Esta prueba solo está activa en + <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Los datos locales se eliminarán cuando reinicies</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Ver cuenta</translation> @@ -6447,6 +6465,7 @@ <translation id="804786196054284061">Contrato de licencia de usuario final</translation> <translation id="8048977114738515028">Crea un acceso directo en el escritorio de tu dispositivo para acceder directamente a este perfil</translation> <translation id="8049029041626250638">Conecta un teclado o un ratón. Si usas dispositivos Bluetooth, asegúrate de que estén listos para emparejarse.</translation> +<translation id="8049184478152619004">Escribe el código PUK</translation> <translation id="8049705080247101012">Google ha marcado "<ph name="EXTENSION_NAME" />" como extensión maliciosa, por lo que ha evitado que se instale</translation> <translation id="8049948037269924837">Desplazamiento inverso del panel táctil</translation> <translation id="8050038245906040378">Firma de código comercial de Microsoft</translation> @@ -6483,6 +6502,7 @@ <translation id="8082106343289440791">¿Quieres emparejar "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Si se inhabilita la depuración ADB, se restablecerá la configuración de fábrica de este <ph name="DEVICE_TYPE" />. Se borrarán todas las cuentas de usuario y todos los datos locales.</translation> <translation id="8084114998886531721">Contraseña guardada</translation> +<translation id="8084510406207562688">Restaurar todas las pestañas</translation> <translation id="8086015605808120405">Configurando <ph name="PRINTER_NAME" />...</translation> <translation id="8086442853986205778">Configurar <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Este archivo está cifrado. Pídele al propietario que lo descifre.}other{Algunos de estos archivos están cifrados. Pídele al propietario que los descifre.}}</translation> @@ -6524,6 +6544,7 @@ <translation id="8119438628456698432">Generando archivos de registro...</translation> <translation id="811994229154425014">Doble espacio para escribir un punto</translation> <translation id="8120505434908124087">Instalar perfil de eSIM</translation> +<translation id="812260729110117038">Los anunciantes y editores pueden analizar la efectividad de los anuncios sin hacer un seguimiento de los sitios que visitas.</translation> <translation id="8123590694679414600">Los datos se cifraron con tu frase de contraseña de sincronización el <ph name="TIME" />. El cifrado no incluye los métodos de pago ni las direcciones de Google Pay.</translation> <translation id="81238879832906896">Flor blanca y amarilla</translation> @@ -6561,6 +6582,7 @@ <translation id="816055135686411707">Error al configurar el certificado de confianza</translation> <translation id="8160775796528709999">Obtén subtítulos para tu contenido de audio y vídeo habilitando Subtítulos automáticos en los ajustes</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Con <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome desarrolla nuevas tecnologías que te protegerán de mecanismos de seguimiento entre sitios y, a la vez, preservarán la Web abierta.</translation> <translation id="8161293209665121583">Modo de lectura en páginas web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover pestaña a una nueva ventana}other{Mover pestañas a una nueva ventana}}</translation> <translation id="8165997195302308593">Redirección de puertos de Crostini</translation> @@ -6762,7 +6784,6 @@ <translation id="8393700583063109961">Enviar mensaje</translation> <translation id="8397825320644530257">Desconectar teléfono conectado</translation> <translation id="8398877366907290961">Continuar de todos modos</translation> -<translation id="8400146488506985033">Gestionar usuarios</translation> <translation id="8401432541486058167">Introduce el PIN asociado a tu tarjeta inteligente.</translation> <translation id="8404893580027489425">El sensor de huellas digitales está en el lado derecho de tu <ph name="DEVICE_TYPE" />. Tócalo ligeramente con un dedo.</translation> <translation id="8405046151008197676">Consulta los aspectos destacados de la última actualización</translation> @@ -6818,7 +6839,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> necesita tu permiso para ejecutarse</translation> <translation id="8466417995783206254">En esta pestaña se está reproduciendo un vídeo en modo imagen en imagen.</translation> <translation id="8467326454809944210">Elegir otro idioma</translation> -<translation id="8470214316007448308">Otras personas</translation> <translation id="8470513973197838199">Contraseñas guardadas de <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Los sitios se suelen conectar a dispositivos USB para usarlos en funciones como la impresión de documentos o el guardado de contenido en dispositivos de almacenamiento.</translation> <translation id="8471959340398751476">Los descuentos están desactivados. Puedes activarlos en el menú Personalizar.</translation> @@ -7005,6 +7025,7 @@ <translation id="8676374126336081632">Borrar entrada</translation> <translation id="8676770494376880701">Cargador de baja potencia conectado</translation> <translation id="8677212948402625567">Ocultar todos...</translation> +<translation id="867767487203716855">Próxima actualización</translation> <translation id="8677859815076891398">No hay álbumes. Crea un álbum en <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">el tamaño de las pestañas no se ajusta</translation> <translation id="8678933587484842200">¿Cómo te gustaría que se iniciara esta aplicación?</translation> @@ -7093,7 +7114,6 @@ <translation id="87646919272181953">Álbum de Google Fotos</translation> <translation id="8767621466733104912">Actualizar Chrome automáticamente para todos los usuarios</translation> <translation id="8770406935328356739">Directorio raíz de la extensión</translation> -<translation id="8770507190024617908">Gestionar usuarios</translation> <translation id="8771300903067484968">El fondo de pantalla de la página de inicio se ha restablecido al fondo de pantalla predeterminado.</translation> <translation id="8773302562181397928">Guardar <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmar restauración</translation> @@ -7354,6 +7374,7 @@ <translation id="9031549947500880805">Crea copias de seguridad en Google Drive. Recupera tus datos de forma sencilla o cambia de dispositivo en cualquier momento. La copia de seguridad también incluye datos de las aplicaciones.</translation> <translation id="9033765790910064284">Continuar de todos modos</translation> <translation id="9033857511263905942">&Pegar</translation> +<translation id="9035689366572880647">Escribe el PIN actual</translation> <translation id="9037640663275993951">El dispositivo no está permitido</translation> <translation id="9037818663270399707">Tu conexión no es privada para todo el tráfico de red</translation> <translation id="9037965129289936994">Mostrar original</translation> @@ -7429,6 +7450,7 @@ <translation id="9112748030372401671">Cambia tu fondo de pantalla</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> podría ser peligroso. ¿Enviar a Google para analizarlo?</translation> <translation id="9112987648460918699">Buscar...</translation> +<translation id="9113240369465613386">Solo páginas impares</translation> <translation id="9114663181201435112">Iniciar sesión fácilmente</translation> <translation id="9115675100829699941">&Marcadores</translation> <translation id="9116465289595958864">Última modificación</translation> @@ -7583,6 +7605,7 @@ <translation id="991413375315957741">sensores de luz o movimiento</translation> <translation id="992032470292211616">Las extensiones, las aplicaciones y los temas pueden dañar tu dispositivo. ¿Seguro que quieres continuar?</translation> <translation id="992256792861109788">Rosa</translation> +<translation id="992401651319295351">Te quedan <ph name="RETRIES" /> intentos. No podrás usar esta red hasta que establezcas un nuevo PIN.</translation> <translation id="992592832486024913">Inhabilitar ChromeVox (mensajes de voz)</translation> <translation id="992778845837390402">Se está creando una copia de seguridad de Linux</translation> <translation id="993540765962421562">Instalación en curso</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index acce388..38c0b50 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2867,7 +2867,6 @@ <translation id="4035758313003622889">&Tegumihaldur</translation> <translation id="4036778507053569103">Serverist alla laaditud reegel on kehtetu.</translation> <translation id="4037084878352560732">Hobune</translation> -<translation id="4037889604535939429">Isiku muutmine</translation> <translation id="4040753847560036377">Vale PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Välju lehelt}other{Välju lehtedelt}}</translation> <translation id="4044612648082411741">Sisestage oma sertifikaadi parool</translation> @@ -4335,7 +4334,6 @@ <translation id="5709557627224531708">Määrake Chrome vaikebrauseriks</translation> <translation id="5711983031544731014">Ei õnnestu avada. Sisestage parool.</translation> <translation id="5712153969432126546">Mõnikord avaldavad saidid PDF-e, nt dokumente, lepinguid ja vorme</translation> -<translation id="5712323955984474772">Järgmises värskenduses</translation> <translation id="5715711091495208045">Pistikprogrammi vahendaja: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Vaikeotsingumootorid</translation> <translation id="5719637365829998022">QR-kood skanniti.</translation> @@ -5107,7 +5105,6 @@ <translation id="6563469144985748109">Haldur ei ole seda veel kinnitanud</translation> <translation id="6568283005472142698">Otsing vahelehtedelt</translation> <translation id="6569911211938664415">Paroolid salvestatakse teie Google'i kontole (<ph name="ACCOUNT" />), et saaksite neid kasutada mis tahes seadmes</translation> -<translation id="6569934958368283244">Teised inimesed</translation> <translation id="6573497332121198392">Otseteed ei saa eemaldada</translation> <translation id="657402800789773160">&Laadi see leht uuesti</translation> <translation id="6577284282025554716">Allalaadimine on tühistatud: <ph name="FILE_NAME" /></translation> @@ -6794,7 +6791,6 @@ <translation id="8393700583063109961">Saatke sõnum</translation> <translation id="8397825320644530257">Ühendatud telefoni eemaldamine</translation> <translation id="8398877366907290961">Jätka ikkagi</translation> -<translation id="8400146488506985033">Halda inimesi</translation> <translation id="8401432541486058167">Sisestage oma kiipkaardi PIN-kood.</translation> <translation id="8404893580027489425">Sõrmejäljeandur on seadme <ph name="DEVICE_TYPE" /> paremas servas. Puudutage seda õrnalt mis tahes sõrmega.</translation> <translation id="8405046151008197676">Vaadake viimase värskenduse esiletõstetud teavet</translation> @@ -6850,7 +6846,6 @@ <translation id="8465444703385715657">Pistikprogramm <ph name="PLUGIN_NAME" /> vajab käitamiseks teie luba</translation> <translation id="8466417995783206254">Vahelehel esitatakse videot režiimis Pilt pildis</translation> <translation id="8467326454809944210">Teise keele valimine</translation> -<translation id="8470214316007448308">Teised inimesed</translation> <translation id="8470513973197838199">Salvestatud paroolid – <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Saidid loovad USB-seadmetega ühenduse tavaliselt teatud funktsioonide jaoks, näiteks dokumentide printimiseks või salvestusseadmele talletamiseks</translation> <translation id="8471959340398751476">Allahindlused on välja lülitatud. Saate need menüüs Kohandamine sisse lülitada.</translation> @@ -7037,6 +7032,7 @@ <translation id="8676374126336081632">Tühjenda sisestus</translation> <translation id="8676770494376880701">Väikese energiakuluga laadija on ühendatud</translation> <translation id="8677212948402625567">Ahenda kõik ... </translation> +<translation id="867767487203716855">Järgmine värskendus</translation> <translation id="8677859815076891398">Albumeid pole. Looge album teenuses <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Vahelehed ei kahane</translation> <translation id="8678933587484842200">Kuidas soovite selle rakenduse käivitada?</translation> @@ -7125,7 +7121,6 @@ <translation id="87646919272181953">Teenuse Google Photos album</translation> <translation id="8767621466733104912">Värskenda Chrome'i automaatselt kõikide kasutajate jaoks</translation> <translation id="8770406935328356739">Laienduse juurkataloog</translation> -<translation id="8770507190024617908">Halda inimesi</translation> <translation id="8771300903067484968">Avalehe taust lähtestati vaiketaustale.</translation> <translation id="8773302562181397928">Salvesta <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Taastamise kinnitamine</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 8f71e47..652dd36 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -2860,7 +2860,6 @@ <translation id="4035758313003622889">&Zereginen kudeatzailea</translation> <translation id="4036778507053569103">Zerbitzaritik deskargatu den gidalerroak ez du balio.</translation> <translation id="4037084878352560732">Zaldia</translation> -<translation id="4037889604535939429">Editatu pertsona</translation> <translation id="4040753847560036377">Okerreko PUKa</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Irten orritik}other{Irten orrietatik}}</translation> <translation id="4044612648082411741">Idatzi ziurtagiriaren pasahitza</translation> @@ -4328,7 +4327,6 @@ <translation id="5709557627224531708">Ezarri Chrome arakatzaile lehenetsi gisa</translation> <translation id="5711983031544731014">Ezin da desblokeatu. Idatzi pasahitza.</translation> <translation id="5712153969432126546">Batzuetan, webguneek PDFak argitaratzen dituzte, hala nola dokumentuak, kontratuak eta inprimakiak</translation> -<translation id="5712323955984474772">Hurrengo eguneratzea</translation> <translation id="5715711091495208045">Pluginaren bitartekaria: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Bilatzaile lehenetsiak</translation> <translation id="5719637365829998022">Eskaneatu da QR kodea.</translation> @@ -5100,7 +5098,6 @@ <translation id="6563469144985748109">Kudeatzaileak ez du onartu eskaera oraindik</translation> <translation id="6568283005472142698">Fitxa-bilaketa</translation> <translation id="6569911211938664415">Pasahitzak Google-ko kontuan gordetzen dira (<ph name="ACCOUNT" />), edozein gailutan eskura izan ditzazun</translation> -<translation id="6569934958368283244">Jende gehiago</translation> <translation id="6573497332121198392">Ezin da kendu lasterbidea</translation> <translation id="657402800789773160">&Kargatu orria berriro</translation> <translation id="6577284282025554716">Bertan behera utzi da <ph name="FILE_NAME" /> fitxategia deskargatzeko prozesua</translation> @@ -6785,7 +6782,6 @@ <translation id="8393700583063109961">Bidali mezua</translation> <translation id="8397825320644530257">Deskonektatu konektatutako telefonoa</translation> <translation id="8398877366907290961">Jarraitu, hala ere</translation> -<translation id="8400146488506985033">Kudeatu jendea</translation> <translation id="8401432541486058167">Eman txartel adimendunarekin lotutako PIN kodea.</translation> <translation id="8404893580027489425"><ph name="DEVICE_TYPE" /> gailuaren eskuineko aldean dago hatz-marken sentsorea. Uki ezazu edozein hatzekin leuntasunez.</translation> <translation id="8405046151008197676">Irakurri azken eguneratzeari buruzko datu aipagarriak</translation> @@ -6841,7 +6837,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> pluginak zure baimena behar du exekutatzeko</translation> <translation id="8466417995783206254">Fitxa honetan, bideo bat pantaila txiki gainjarriko moduan erreproduzitzen ari da.</translation> <translation id="8467326454809944210">Aukeratu beste hizkuntza bat</translation> -<translation id="8470214316007448308">Jende gehiago</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> webgunean gordetako pasahitzak</translation> <translation id="8471525937465764768">Webguneak USB bidezko gailuetara konektatu ohi dira dokumentu bat inprimatzeko edo biltegiratze-gailu batean gordetzeko, eta antzeko eginbideak eskaintzeko</translation> <translation id="8471959340398751476">Deskontuak aurkitzeko eginbidea desaktibatuta dago. Aktiba ezazu Pertsonalizatu menuan.</translation> @@ -7028,6 +7023,7 @@ <translation id="8676374126336081632">Garbitu idatzitakoa</translation> <translation id="8676770494376880701">Potentzia txikiko kargagailua konektatu da</translation> <translation id="8677212948402625567">Tolestu guztiak…</translation> +<translation id="867767487203716855">Hurrengo eguneratzea</translation> <translation id="8677859815076891398">Ez dago albumik. Sortu bat <ph name="LINK_BEGIN" />Google Argazkiak<ph name="LINK_END" /> zerbitzuan.</translation> <translation id="8678582529642151449">Fitxak ez dira txikitzen</translation> <translation id="8678933587484842200">Nola abiarazi behar da aplikazio hau?</translation> @@ -7116,7 +7112,6 @@ <translation id="87646919272181953">Google Argazkiak zerbitzuko albuma</translation> <translation id="8767621466733104912">Eguneratu Chrome automatikoki erabiltzaile guztiei</translation> <translation id="8770406935328356739">Luzapenaren erroko direktorioa</translation> -<translation id="8770507190024617908">Kudeatu jendea</translation> <translation id="8771300903067484968">Atzeko plano lehenetsia berrezarri da orri nagusian.</translation> <translation id="8773302562181397928">Gorde <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Berretsi leheneratu nahi duzula</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 36f3246..1adf7c99 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -2873,7 +2873,6 @@ <translation id="4035758313003622889">مدیر &فعالیت ها</translation> <translation id="4036778507053569103">خطمشی بارگیریشده از سرور نامعتبر است.</translation> <translation id="4037084878352560732">اسب</translation> -<translation id="4037889604535939429">ویرایش شخص</translation> <translation id="4040753847560036377">PUK نادرست است</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{خروج از صفحه}one{خروج از صفحهها}other{خروج از صفحهها}}</translation> <translation id="4044612648082411741">گذرواژه گواهیتان را وارد کنید</translation> @@ -4342,7 +4341,6 @@ <translation id="5709557627224531708">تنظیم Chrome بهعنوان مرورگر پیشفرض</translation> <translation id="5711983031544731014">قفل باز نشد. گذرواژهتان را وارد کنید.</translation> <translation id="5712153969432126546">سایتها گاهیاوقات فایلهای PDF (ازجمله سند، قرارداد، و فرم) منتشر میکنند</translation> -<translation id="5712323955984474772">بهروزرسانی بعدی</translation> <translation id="5715711091495208045">واسطه افزایه: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">موتورهای جستجوی پیشفرض</translation> <translation id="5719637365829998022">رمزینه پاسخسریع اسکن شده است.</translation> @@ -5114,7 +5112,6 @@ <translation id="6563469144985748109">مدیرتان هنوز این سایت را تأیید نکرده است</translation> <translation id="6568283005472142698">جستجوی برگه</translation> <translation id="6569911211938664415">گذرواژهها در «حساب Google» شما (<ph name="ACCOUNT" />) ذخیره میشوند تا بتوانید در همه دستگاههایتان از آنها استفاده کنید.</translation> -<translation id="6569934958368283244">افراد دیگر</translation> <translation id="6573497332121198392">نمیتوان میانبر را برداشت</translation> <translation id="657402800789773160">&بارگیری مجدد این صفحه</translation> <translation id="6577284282025554716">بارگیری لغو شد: <ph name="FILE_NAME" /></translation> @@ -6801,7 +6798,6 @@ <translation id="8393700583063109961">ارسال پیام</translation> <translation id="8397825320644530257">قطع اتصال تلفن متصل</translation> <translation id="8398877366907290961">در هر حال ادامه داده شود</translation> -<translation id="8400146488506985033">مدیریت افراد</translation> <translation id="8401432541486058167">پین مرتبط با کارت هوشمندتان را ارائه کنید.</translation> <translation id="8404893580027489425">حسگر اثر انگشت در سمت راست <ph name="DEVICE_TYPE" /> قرار دارد. با یکی از انگشتهایتان آن را بهآرامی لمس کنید.</translation> <translation id="8405046151008197676">دریافت موارد مهم آخرین بهروزرسانی</translation> @@ -6857,7 +6853,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> برای اجرا به مجوز شما نیاز دارد</translation> <translation id="8466417995783206254">این برگه درحال پخش ویدیو در حالت تصویردرتصویر است.</translation> <translation id="8467326454809944210">انتخاب زبانی دیگر</translation> -<translation id="8470214316007448308">افراد دیگر</translation> <translation id="8470513973197838199">گذرواژههای ذخیرهشده برای <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">سایتها معمولاً برای ارائه ویژگیهایی مانند چاپ سند یا ذخیره در دستگاه ذخیرهسازی به دستگاههای USB متصل میشوند</translation> <translation id="8471959340398751476">تخفیفها خاموش هستند. میتوانید در منوی سفارشی آنها را روشن کنید</translation> @@ -7044,6 +7039,7 @@ <translation id="8676374126336081632">پاک کردن ورودی</translation> <translation id="8676770494376880701">شارژر برق متصل شده ضعیف است</translation> <translation id="8677212948402625567">کوچک کردن همه...</translation> +<translation id="867767487203716855">بهروزرسانی بعدی</translation> <translation id="8677859815076891398">آلبومی وجود ندارد. آلبومی در <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> ایجاد کنید.</translation> <translation id="8678582529642151449">برگهها کوچک نمیشوند</translation> <translation id="8678933587484842200">میخواهید این برنامه چگونه راهاندازی شود؟</translation> @@ -7132,7 +7128,6 @@ <translation id="87646919272181953">آلبوم Google Photos</translation> <translation id="8767621466733104912">بهروزرسانی خودکار Chrome برای همه کاربران</translation> <translation id="8770406935328356739">دایرکتوری ریشه افزونه:</translation> -<translation id="8770507190024617908">مدیریت افراد</translation> <translation id="8771300903067484968">پسزمینه صفحه شروع روی پسزمینه پیشفرض بازنشانی شده است.</translation> <translation id="8773302562181397928">ذخیره <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">تأیید بازیابی</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 7d3f630..a9a8e8a4 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2872,7 +2872,6 @@ <translation id="4035758313003622889">&Tehtävänhallinta</translation> <translation id="4036778507053569103">Palvelimelta ladattu käytäntö on virheellinen.</translation> <translation id="4037084878352560732">Hevonen</translation> -<translation id="4037889604535939429">Muokkaa henkilöä</translation> <translation id="4040753847560036377">Väärä PUK-koodi</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Sulje sivu}other{Sulje sivut}}</translation> <translation id="4044612648082411741">Anna varmenteen salasana.</translation> @@ -4341,7 +4340,6 @@ <translation id="5709557627224531708">Aseta Chrome oletusselaimeksi</translation> <translation id="5711983031544731014">Avaaminen ei onnistu. Lisää salasana.</translation> <translation id="5712153969432126546">Sivustot julkaisevat joskus PDF-tiedostoja, kuten asiakirjoja, sopimuksia ja lomakkeita</translation> -<translation id="5712323955984474772">Seuraava päivitys</translation> <translation id="5715711091495208045">Laajennuksen välittäjä: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Oletushakukoneet</translation> <translation id="5719637365829998022">QR-koodi on skannattu.</translation> @@ -5113,7 +5111,6 @@ <translation id="6563469144985748109">Ylläpitäjä ei ole hyväksynyt sitä vielä.</translation> <translation id="6568283005472142698">Välilehtihaku</translation> <translation id="6569911211938664415">Salasanat tallennetaan Google-tilillesi (<ph name="ACCOUNT" />), jotta voit käyttää niitä kaikilla laitteilla</translation> -<translation id="6569934958368283244">Muut ihmiset</translation> <translation id="6573497332121198392">Pikakuvaketta ei voi poistaa</translation> <translation id="657402800789773160">&Päivitä tämä sivu</translation> <translation id="6577284282025554716">Lataus peruutettu: <ph name="FILE_NAME" /></translation> @@ -6799,7 +6796,6 @@ <translation id="8393700583063109961">Lähetä viesti</translation> <translation id="8397825320644530257">Katkaise yhdistetyn puhelimen yhteys</translation> <translation id="8398877366907290961">Jatka silti</translation> -<translation id="8400146488506985033">Hallinnoi käyttäjiä</translation> <translation id="8401432541486058167">Ilmoita älykorttiisi liittyvä PIN-koodi.</translation> <translation id="8404893580027489425">Sormenjälkitunnistin on laitteen (<ph name="DEVICE_TYPE" />) oikeassa reunassa. Kosketa sitä kevyesti millä tahansa sormella.</translation> <translation id="8405046151008197676">Katso uusimman päivityksen parhaat palat</translation> @@ -6855,7 +6851,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> tarvitsee suoritusluvan.</translation> <translation id="8466417995783206254">Tämä välilehti toistaa videota kuva kuvassa ‑tilassa.</translation> <translation id="8467326454809944210">Valitse toinen kieli</translation> -<translation id="8470214316007448308">Muut ihmiset</translation> <translation id="8470513973197838199">Tallennetut salasanat: <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Sivustot yhdistävät yleensä USB-laitteisiin tulostaakseen dokumentteja tai lisätäkseen niitä tallennustilaan</translation> <translation id="8471959340398751476">Alennukset ovat pois käytöstä. Voit ottaa ne takaisin käyttöön muokkausvalikosta.</translation> @@ -7042,6 +7037,7 @@ <translation id="8676374126336081632">Tyhjennä teksti</translation> <translation id="8676770494376880701">Pienitehoinen laturi kytketty</translation> <translation id="8677212948402625567">Tiivistä kaikki...</translation> +<translation id="867767487203716855">Seuraava päivitys</translation> <translation id="8677859815076891398">Albumeja ei ole. Luo albumi <ph name="LINK_BEGIN" />Google Kuvissa<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Välilehdet eivät kutistu</translation> <translation id="8678933587484842200">Miten haluat käynnistää tämän sovelluksen?</translation> @@ -7130,7 +7126,6 @@ <translation id="87646919272181953">Google Kuvat ‑albumi</translation> <translation id="8767621466733104912">Päivitä kaikkien käyttäjien Chrome automaattisesti</translation> <translation id="8770406935328356739">Laajennuksen juurihakemisto</translation> -<translation id="8770507190024617908">Hallinnoi käyttäjiä</translation> <translation id="8771300903067484968">Aloitussivun taustakuvaksi on palautettu oletustaustakuva.</translation> <translation id="8773302562181397928">Tallenna <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Vahvista palautus</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 1fe7fea..1a7939b 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2877,7 +2877,6 @@ <translation id="4035758313003622889">&Task manager</translation> <translation id="4036778507053569103">Invalid ang patakarang na-download mula sa server.</translation> <translation id="4037084878352560732">Kabayo</translation> -<translation id="4037889604535939429">I-edit ang tao</translation> <translation id="4040753847560036377">Mali ang PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Umalis sa Page}one{Umalis sa Mga Page}other{Umalis sa Mga Page}}</translation> <translation id="4044612648082411741">Ilagay ang password ng iyong certificate</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Itakda ang Chrome bilang iyong default na browser</translation> <translation id="5711983031544731014">Hindi mai-unlock. Ilagay ang iyong password.</translation> <translation id="5712153969432126546">Paminsan-minsan, nagpa-publish ang mga site ng mga PDF, tulad ng mga dokumento, kontrata, at form</translation> -<translation id="5712323955984474772">Susunod na Update</translation> <translation id="5715711091495208045">Broker ng plugin: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Mga default na search engine</translation> <translation id="5719637365829998022">Na-scan na ang QR code.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Hindi pa ito inaaprubahan ng iyong manager</translation> <translation id="6568283005472142698">Paghahanap sa Tab</translation> <translation id="6569911211938664415">Sine-save ang mga password sa iyong Google Account (<ph name="ACCOUNT" />) para magamit mo ang mga ito sa anumang device</translation> -<translation id="6569934958368283244">Iba pang tao</translation> <translation id="6573497332121198392">Hindi maalis ang shortcut</translation> <translation id="657402800789773160">&I-reload ang Pahinang Ito</translation> <translation id="6577284282025554716">Nakansela ang pag-download: <ph name="FILE_NAME" /></translation> @@ -6805,7 +6802,6 @@ <translation id="8393700583063109961">Ipadala ang mensahe</translation> <translation id="8397825320644530257">Idiskonekta ang nakakonektang telepono</translation> <translation id="8398877366907290961">Magpatuloy</translation> -<translation id="8400146488506985033">Pamahalaan ang mga tao</translation> <translation id="8401432541486058167">Ibigay ang PIN na nauugnay sa iyong smart card.</translation> <translation id="8404893580027489425">Nasa kanang gilid ng iyong <ph name="DEVICE_TYPE" /> ang sensor para sa fingerprint. Pindutin ito nang magaan gamit ang alinmang daliri.</translation> <translation id="8405046151008197676">Kunin ang mga highlight mula sa pinakabagong update</translation> @@ -6862,7 +6858,6 @@ <translation id="8465444703385715657">Kailangan ng <ph name="PLUGIN_NAME" /> ng iyong pahintulot upang tumakbo</translation> <translation id="8466417995783206254">Nagpe-play ang tab na ito ng video sa picture-in-picture mode.</translation> <translation id="8467326454809944210">Pumili ng iba pang wika</translation> -<translation id="8470214316007448308">Iba Pang Tao</translation> <translation id="8470513973197838199">Mga naka-save na password para sa <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Karaniwang kumokonekta ang mga site sa mga USB device para sa mga feature gaya ng pag-print ng dokumento o pag-save sa storage device</translation> <translation id="8471959340398751476">Naka-off ang mga diskwento. Puwede mong i-on ang mga ito sa menu na i-customize</translation> @@ -7049,6 +7044,7 @@ <translation id="8676374126336081632">I-clear ang input</translation> <translation id="8676770494376880701">Nakakabit ang low-power charger</translation> <translation id="8677212948402625567">Tiklupin lahat...</translation> +<translation id="867767487203716855">Susunod na update</translation> <translation id="8677859815076891398">Walang album. Gumawa ng album sa <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Hindi liliit ang mga tab</translation> <translation id="8678933587484842200">Paano mo gustong ilunsad ang application na ito?</translation> @@ -7137,7 +7133,6 @@ <translation id="87646919272181953">Album sa Google Photos</translation> <translation id="8767621466733104912">Awtomatikong i-update ang Chrome para sa lahat ng user</translation> <translation id="8770406935328356739">Root directory ng extension</translation> -<translation id="8770507190024617908">Pamahalaan ang Mga Tao</translation> <translation id="8771300903067484968">Na-reset sa default na background ang background ng start page.</translation> <translation id="8773302562181397928">Makatipid ng <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Kumpirmahin ang Pag-restore</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index 4316ae9d..db50e4f 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -2862,7 +2862,6 @@ <translation id="4035758313003622889">Gestionnaire de &tâches</translation> <translation id="4036778507053569103">La politique téléchargée du serveur n'est pas valide.</translation> <translation id="4037084878352560732">Cheval</translation> -<translation id="4037889604535939429">Modifier la personne</translation> <translation id="4040753847560036377">Clé personnelle de déblocage incorrecte</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Quitter la page}one{Quitter la page}other{Quitter les pages}}</translation> <translation id="4044612648082411741">Entrez le mot de passe de votre certificat</translation> @@ -4330,7 +4329,6 @@ <translation id="5709557627224531708">Définir Chrome comme navigateur par défaut</translation> <translation id="5711983031544731014">Impossible de procéder au déverrouillage. Veuillez entrer votre mot de passe.</translation> <translation id="5712153969432126546">Les sites publient parfois des fichiers en format PDF, comme des documents, des contrats et des formulaires</translation> -<translation id="5712323955984474772">Prochaine mise à jour</translation> <translation id="5715711091495208045">Gestionnaire de plugiciels : <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Moteurs de recherche par défaut</translation> <translation id="5719637365829998022">Le code QR a été numérisé.</translation> @@ -5102,7 +5100,6 @@ <translation id="6563469144985748109">Votre gestionnaire n'a pas encore donné son autorisation</translation> <translation id="6568283005472142698">Recherche d'onglet</translation> <translation id="6569911211938664415">Les mots de passe sont enregistrés dans votre compte Google (<ph name="ACCOUNT" />) afin que vous puissiez les utiliser sur n'importe quel appareil</translation> -<translation id="6569934958368283244">Autres personnes</translation> <translation id="6573497332121198392">Impossible de supprimer le raccourci</translation> <translation id="657402800789773160">Actualise&r cette page</translation> <translation id="6577284282025554716">Téléchargement annulé : <ph name="FILE_NAME" /></translation> @@ -6788,7 +6785,6 @@ <translation id="8393700583063109961">Envoyer un message</translation> <translation id="8397825320644530257">Déconnecter le téléphone connecté</translation> <translation id="8398877366907290961">Continuer</translation> -<translation id="8400146488506985033">Gérer les personnes</translation> <translation id="8401432541486058167">Entrez le NIP associé à votre carte à puce.</translation> <translation id="8404893580027489425">Le capteur d'empreintes digitales se trouve sur le côté droit de votre <ph name="DEVICE_TYPE" />. Touchez-le doucement avec n'importe quel doigt.</translation> <translation id="8405046151008197676">Consultez les faits saillants de la dernière mise à jour</translation> @@ -6844,7 +6840,6 @@ <translation id="8465444703385715657">Le plugiciel <ph name="PLUGIN_NAME" /> a besoin de votre autorisation pour s'exécuter</translation> <translation id="8466417995783206254">Cet onglet fait jouer une vidéo en mode d'incrustation d'image.</translation> <translation id="8467326454809944210">Choisir une autre langue</translation> -<translation id="8470214316007448308">Autres personnes</translation> <translation id="8470513973197838199">Mots de passe enregistrés pour <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Les sites se connectent généralement aux appareils USB pour proposer des fonctionnalités comme l'impression de document ou l'enregistrement sur un périphérique de stockage</translation> <translation id="8471959340398751476">Les rabais sont désactivés. Vous pouvez les activer dans le menu de personnalisation</translation> @@ -7031,6 +7026,7 @@ <translation id="8676374126336081632">Effacer l'entrée</translation> <translation id="8676770494376880701">Chargeur de faible puissance connecté</translation> <translation id="8677212948402625567">Tout réduire…</translation> +<translation id="867767487203716855">Prochaine mise à jour</translation> <translation id="8677859815076891398">Aucun album. Créez un album dans <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Les onglets ne sont pas réduits</translation> <translation id="8678933587484842200">Comment souhaitez-vous lancer cette application?</translation> @@ -7119,7 +7115,6 @@ <translation id="87646919272181953">Album Google Photos</translation> <translation id="8767621466733104912">Mettre à jour Chrome automatiquement pour tous les utilisateurs</translation> <translation id="8770406935328356739">Répertoire racine de l'extension</translation> -<translation id="8770507190024617908">Gérer les personnes</translation> <translation id="8771300903067484968">L'arrière-plan de la page d'accueil a été réinitialisé à sa valeur par défaut.</translation> <translation id="8773302562181397928">Enregistrer <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmez la restauration</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 3acd308..329413982 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -701,6 +701,7 @@ <translation id="173628468822554835">OK. Par défaut, les nouveaux sites que vous consultez ne vous enverront pas de notifications.</translation> <translation id="1736419249208073774">Découvrir</translation> <translation id="1737968601308870607">Signaler un problème</translation> +<translation id="1739684185846730053">Les essais Privacy Sandbox sont encore en développement et ne sont disponibles que dans certaines régions. Pour le moment, les sites peuvent essayer Privacy Sandbox sans désactiver les technologies Web actuelles comme les cookies tiers.</translation> <translation id="174123615272205933">Personnalisé</translation> <translation id="1741314857973421784">Continuer</translation> <translation id="1743570585616704562">Non reconnu</translation> @@ -1124,6 +1125,7 @@ <translation id="217576141146192373">Impossible d'ajouter une imprimante. Vérifiez la configuration de votre imprimante et réessayez.</translation> <translation id="2177950615300672361">Onglet de navigation privée : <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Autorité de certification compromise</translation> +<translation id="2179416702468739594">Recherche des profils disponibles… Votre réseau mobile risque de se déconnecter pendant quelques minutes.</translation> <translation id="2182058453334755893">Copié dans le presse-papiers</translation> <translation id="2184515124301515068">Chrome détermine quand activer le son des sites (recommandé)</translation> <translation id="2186711480981247270">Page partagée depuis un autre appareil</translation> @@ -1389,6 +1391,7 @@ <translation id="2469375675106140201">Personnaliser le correcteur orthographique</translation> <translation id="247051149076336810">URL de partage de fichiers</translation> <translation id="2470702053775288986">Désactivation des extensions non compatibles</translation> +<translation id="2470939964922472929">Vous avez saisi un code PIN erroné trop de fois. Pour définir un nouveau code PIN, saisissez les 8 chiffres de la clé de déblocage personnelle (PUK) fournie par votre opérateur.</translation> <translation id="2471469610750100598">Noir (par défaut)</translation> <translation id="2471506181342525583">Accès à la position autorisé</translation> <translation id="2473195200299095979">Traduire cette page</translation> @@ -1685,6 +1688,7 @@ <translation id="2785873697295365461">Descripteurs de fichiers</translation> <translation id="2787354132612937472">–</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Numéro du groupe</translation> <translation id="2789486458103222910">OK</translation> <translation id="2791529110887957050">Supprimer Linux</translation> <translation id="2791952154587244007">Une erreur s'est produite. Impossible de lancer automatiquement l'application kiosque sur cet appareil.</translation> @@ -1986,6 +1990,7 @@ <translation id="310671807099593501">Le site utilise le Bluetooth</translation> <translation id="3108931485517391283">Impossible de recevoir le transfert</translation> <translation id="3109724472072898302">Réduit</translation> +<translation id="3113592018909187986">Il vous reste 1 tentative. Vous ne pourrez pas utiliser ce réseau tant que vous n'aurez pas configuré un nouveau code PIN.</translation> <translation id="311394601889664316">Ne pas autoriser les sites à modifier les fichiers ni les dossiers sur votre appareil</translation> <translation id="3115147772012638511">En attente de l'affichage du cache</translation> <translation id="3115580024857770654">Tout réduire</translation> @@ -2274,6 +2279,7 @@ <translation id="3440663250074896476">Autres actions pour <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Écran</translation> <translation id="3441663102605358937">Connectez-vous de nouveau à <ph name="ACCOUNT" /> pour valider ce compte</translation> +<translation id="3444641828375597683">Les annonceurs et les éditeurs peuvent utiliser le FLoC, décrit plus loin sur cette page.</translation> <translation id="3445047461171030979">Réponses rapides sur l'Assistant Google</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3445925074670675829">Appareil USB de type C</translation> @@ -2856,7 +2862,7 @@ <translation id="4035758313003622889">Gestionnaire de &tâches</translation> <translation id="4036778507053569103">La règle téléchargée depuis le serveur n'est pas valide.</translation> <translation id="4037084878352560732">Cheval</translation> -<translation id="4037889604535939429">Modifier le profil utilisateur</translation> +<translation id="4040753847560036377">Clé PUK incorrecte</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Quitter la page}one{Quitter la page}other{Quitter les pages}}</translation> <translation id="4044612648082411741">Saisissez le mot de passe du certificat.</translation> <translation id="4044708573046946214">Mot de passe de verrouillage de l'écran</translation> @@ -3065,6 +3071,7 @@ <translation id="4297813521149011456">Rotation de l'écran</translation> <translation id="4299022904780065004">Nouvelle fenêtre de navigation &privée</translation> <translation id="4301671483919369635">Cette page est autorisée à modifier les fichiers</translation> +<translation id="4302605047395093221">Toute personne qui utilise cet appareil devra saisir le code PIN pour se connecter à ce réseau mobile</translation> <translation id="4303079906735388947">Configurez un nouveau code pour votre clé de sécurité</translation> <translation id="4305402730127028764">Copier sur <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Changer</translation> @@ -3249,6 +3256,7 @@ <translation id="4510479820467554003">Liste de comptes parentaux</translation> <translation id="4510614391273086606">Les applications et fichiers Linux sont restaurés tels qu'ils étaient au moment de la sauvegarde.</translation> <translation id="451102079304155829">les paniers</translation> +<translation id="4513275008300099962">Désactiver la superposition des commandes de fenêtre</translation> <translation id="4513946894732546136">Commentaires</translation> <translation id="451407183922382411">Fourni par <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Activer/Désactiver la lecture ou la mise en pause de la vidéo</translation> @@ -4322,7 +4330,6 @@ <translation id="5709557627224531708">Définir Chrome comme navigateur par défaut</translation> <translation id="5711983031544731014">Déverrouillage impossible. Veuillez saisir votre mot de passe.</translation> <translation id="5712153969432126546">Les sites publient parfois des PDF, comme des documents, des contrats et des formulaires</translation> -<translation id="5712323955984474772">Prochaine mise à jour</translation> <translation id="5715711091495208045">Gestionnaire de plug-ins : "<ph name="PLUGIN_NAME" />"</translation> <translation id="5719603411793408026">Moteurs de recherche par défaut</translation> <translation id="5719637365829998022">Code QR scanné.</translation> @@ -4594,10 +4601,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> – Appareil USB connecté</translation> <translation id="6028117231645531007">Ajouter une empreinte digitale</translation> <translation id="6031600495088157824">Options de saisie dans la barre d'outils</translation> +<translation id="6032091552407840792">Cet essai n'est actif que dans <ph name="BEGIN_LINK" />certaines régions<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Pour autoriser l'accès à ce site pour une extension, cliquez sur celle-ci.</translation> <translation id="6032912588568283682">Système de fichiers</translation> <translation id="603539183851330738">Ce bouton permet d'annuler la correction automatique et de rétablir le mot "<ph name="TYPED_WORD" />". Appuyez sur Entrée pour le rétablir ou sur Échap pour ignorer l'annulation.</translation> <translation id="6038929619733116134">Bloquer si le site affiche des annonces intrusives ou trompeuses</translation> +<translation id="603895874132768835">Vous ne pourrez pas utiliser ce réseau tant que vous n'aurez pas configuré un nouveau code PIN</translation> <translation id="6039651071822577588">Dictionnaire des propriétés du réseau non conforme.</translation> <translation id="6040143037577758943">Fermer</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Le service de localisation de Google utilise des sources comme le Wi-Fi, les réseaux mobiles et les capteurs pour estimer la position de votre appareil.<ph name="END_PARAGRAPH1" /> @@ -4845,6 +4854,7 @@ <translation id="6292699686837272722">Onglets réduits à une largeur moyenne</translation> <translation id="6295158916970320988">Tous les sites</translation> <translation id="6295855836753816081">Enregistrement…</translation> +<translation id="6296410173147755564">Clé PUK incorrecte</translation> <translation id="6298962879096096191">Utilise Google Play pour installer des applications Android</translation> <translation id="6300177430812514606">Non autorisé à terminer l'envoi ou la réception de données</translation> <translation id="630065524203833229">&Quitter</translation> @@ -4891,6 +4901,7 @@ <translation id="6340526405444716530">Personnalisation</translation> <translation id="6341850831632289108">Détecter votre position géographique</translation> <translation id="6342069812937806050">À l'instant</translation> +<translation id="6343003829431264373">Pages paires uniquement</translation> <translation id="6344170822609224263">Accéder à la liste des connexions réseau</translation> <translation id="6344576354370880196">Imprimantes enregistrées</translation> <translation id="6345418402353744910">Votre nom d'utilisateur et votre mot de passe sont requis pour le proxy <ph name="PROXY" /> afin que l'administrateur puisse configurer votre réseau</translation> @@ -5090,7 +5101,6 @@ <translation id="6563469144985748109">Votre responsable ne l'a pas encore autorisé</translation> <translation id="6568283005472142698">Recherche dans les onglets</translation> <translation id="6569911211938664415">Les mots de passe sont enregistrés dans votre compte Google (<ph name="ACCOUNT" />), afin que vous puissiez les utiliser sur tous vos appareils</translation> -<translation id="6569934958368283244">Autres personnes</translation> <translation id="6573497332121198392">Impossible de supprimer le raccourci</translation> <translation id="657402800789773160">&Rafraîchir cette page</translation> <translation id="6577284282025554716">Téléchargement annulé : <ph name="FILE_NAME" /></translation> @@ -5139,6 +5149,7 @@ <translation id="6624535038674360844">Le contenu du fichier "<ph name="FILE_NAME" />" est sensible ou dangereux. Demandez à son propriétaire de résoudre ce problème.</translation> <translation id="6624687053722465643">Cupcake</translation> <translation id="6628328486509726751">Date et heure d'importation : <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Saisissez au moins 4 chiffres</translation> <translation id="6630752851777525409">Une demande d'accès permanent à un certificat pour s'authentifier en votre nom a été initiée pour l'extension "<ph name="EXTENSION_NAME" />".</translation> <translation id="6635362468090274700">Personne ne peut partager du contenu avec vous tant que vous n'avez pas choisi d'être visible.<ph name="BR" /><ph name="BR" />Pour devenir visible temporairement, ouvrez la zone d'état, puis activez "Visibilité à proximité".</translation> <translation id="6635944431854494329">Le propriétaire peut contrôler cette fonctionnalité dans Paramètres > Paramètres avancés > Envoyer automatiquement des données de diagnostic et d'utilisation à Google.</translation> @@ -5177,6 +5188,7 @@ <translation id="6664774537677393800">Une erreur s'est produite lors de l'ouverture de votre profil. Veuillez vous déconnecter, puis vous connecter de nouveau.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> désormais disponible</translation> <translation id="6671320560732140690">{COUNT,plural, =1{une adresse}one{# adresse}other{# adresses}}</translation> +<translation id="6671497123040790595">Configurer la gestion par <ph name="MANAGER" /></translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Pour lancer la synchronisation, saisissez votre phrase secrète</translation> <translation id="6675665718701918026">Dispositif de pointage connecté</translation> @@ -5185,6 +5197,7 @@ <translation id="6680442031740878064">Espace disponible : <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Cadence</translation> <translation id="6681668084120808868">Prendre une photo</translation> +<translation id="6683087162435654533">R&estaurer tous les onglets</translation> <translation id="6683948477137300040">Afficher la fenêtre pop-up contenant le code QR et le numéro EID de l'appareil</translation> <translation id="6684827949542560880">Téléchargement de la toute dernière mise à jour</translation> <translation id="668599234725812620">Ouvrir Google Play</translation> @@ -5754,6 +5767,7 @@ <translation id="7308643132139167865">Langues des sites Web</translation> <translation id="7309257895202129721">Afficher les &commandes</translation> <translation id="7310598146671372464">Échec de la connexion. Le serveur n'accepte pas les types de chiffrement Kerberos spécifiés. Veuillez contacter votre administrateur.</translation> +<translation id="7315168816273861089">Activer la superposition des commandes de fenêtre</translation> <translation id="7320213904474460808">Définir un réseau par défaut</translation> <translation id="7321545336522791733">Serveur inaccessible</translation> <translation id="7324297612904500502">Forum bêta</translation> @@ -5930,7 +5944,9 @@ <translation id="7506541170099744506">Votre <ph name="DEVICE_TYPE" /> a bien été enregistré pour bénéficier de la gestion d'entreprise.</translation> <translation id="7507207699631365376">Afficher les <ph name="BEGIN_LINK" />Règles de confidentialité<ph name="END_LINK" /> de ce fournisseur</translation> <translation id="7507930499305566459">Certificat du répondeur d'état</translation> +<translation id="7509097596023256288">Configurer la gestion</translation> <translation id="7509246181739783082">Valider votre identité</translation> +<translation id="7511415964832680006">Lorsque cette option est activée, les sites peuvent utiliser les techniques présentées ici, qui préservent la vie privée, pour fournir leurs contenus et leurs services. Ces techniques incluent des alternatives au suivi intersite. D'autres méthodes pourront être mises à l'essai par la suite.</translation> <translation id="7513029293694390567">Permet de se connecter automatiquement aux sites Web à l'aide des identifiants enregistrés. Si cette fonctionnalité est désactivée, vous êtes invité à confirmer chaque connexion à un site Web.</translation> <translation id="7514239104543605883">Copier sur votre appareil</translation> <translation id="7514365320538308">Télécharger</translation> @@ -6291,6 +6307,8 @@ <translation id="7876027585589532670">Impossible de modifier le raccourci</translation> <translation id="7877451762676714207">Erreur serveur inconnue. Veuillez réessayer ou contacter l'administrateur du serveur.</translation> <translation id="7879631849810108578">Raccourci défini : <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Lorsque cette option est activée et que son état est actif, Chrome utilise votre historique de navigation des 7 derniers jours pour déterminer le groupe ("cohorte") auquel vous appartenez. Les annonceurs peuvent sélectionner des annonces pour ce groupe. Votre historique de navigation restera privé sur votre appareil. Cet essai n'est actif que dans + <ph name="BEGIN_LINK" />certaines régions<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Les données locales seront supprimées lorsque vous redémarrerez l'appareil</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Afficher le compte</translation> @@ -6450,6 +6468,7 @@ <translation id="804786196054284061">Contrat de licence utilisateur final</translation> <translation id="8048977114738515028">Créez un raccourci sur le bureau pour accéder directement à ce profil depuis votre appareil</translation> <translation id="8049029041626250638">Connectez un clavier ou une souris. Si vous utilisez des appareils Bluetooth, assurez-vous qu'ils sont prêts à être associés.</translation> +<translation id="8049184478152619004">Saisissez la clé de déblocage personnelle (PUK)</translation> <translation id="8049705080247101012">Google a signalé l'extension <ph name="EXTENSION_NAME" /> comme malveillante et a bloqué son installation</translation> <translation id="8049948037269924837">Défilement inversé avec le pavé tactile</translation> <translation id="8050038245906040378">Signature du code commercial Microsoft</translation> @@ -6486,6 +6505,7 @@ <translation id="8082106343289440791">Associer à "<ph name="DEVICE_NAME" />" ?</translation> <translation id="8082390128630131497">La désactivation du débogage ADB rétablira la configuration d'usine de <ph name="DEVICE_TYPE" />. Tous les comptes utilisateur et toutes les données locales seront supprimés.</translation> <translation id="8084114998886531721">Mot de passe enregistré</translation> +<translation id="8084510406207562688">R&estaurer tous les onglets</translation> <translation id="8086015605808120405">Configuration de <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">Configurer l'imprimante <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Ce fichier étant chiffré, demandez à son propriétaire de le déchiffrer.}one{Ce fichier étant chiffré, demandez à son propriétaire de le déchiffrer.}other{Certains de ces fichiers étant chiffrés, demandez à leur propriétaire de les déchiffrer.}}</translation> @@ -6527,6 +6547,7 @@ <translation id="8119438628456698432">Génération des fichiers journaux…</translation> <translation id="811994229154425014">Appuyer deux fois sur la barre d'espace pour saisir un point</translation> <translation id="8120505434908124087">Installer le profil eSIM</translation> +<translation id="812260729110117038">Les annonceurs et les éditeurs peuvent évaluer l'efficacité des annonces sans utiliser le suivi intersite.</translation> <translation id="8123590694679414600">Les données ont été chiffrées avec votre phrase secrète de synchronisation à la date suivante : <ph name="TIME" />. Ceci ne s'applique pas aux modes de paiement et adresses Google Pay.</translation> <translation id="81238879832906896">Fleur jaune et blanche</translation> @@ -6564,6 +6585,7 @@ <translation id="816055135686411707">Erreur de définition du paramètre de confiance du certificat</translation> <translation id="8160775796528709999">Activez l'option "Sous-titres instantanés" dans les paramètres afin de bénéficier de sous-titres pour vos contenus vidéo et audio</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Avec <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome développe de nouvelles technologies pour vous protéger contre le suivi intersite tout en préservant le Web ouvert.</translation> <translation id="8161293209665121583">Mode Lecteur pour les pages Web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Déplacer l'onglet vers une nouvelle fenêtre}one{Déplacer l'onglet vers une nouvelle fenêtre}other{Déplacer les onglets vers une nouvelle fenêtre}}</translation> <translation id="8165997195302308593">Transfert de port Crostini</translation> @@ -6765,7 +6787,6 @@ <translation id="8393700583063109961">Envoyer un message</translation> <translation id="8397825320644530257">Dissocier le téléphone connecté</translation> <translation id="8398877366907290961">Poursuivre quand même</translation> -<translation id="8400146488506985033">Gérer les utilisateurs</translation> <translation id="8401432541486058167">Utilisez le code associé à votre carte à puce.</translation> <translation id="8404893580027489425">Le lecteur d'empreinte digitale se trouve sur le côté droit de votre <ph name="DEVICE_TYPE" />. Appuyez dessus légèrement avec n'importe quel doigt.</translation> <translation id="8405046151008197676">Découvrez les nouveautés de la dernière mise à jour</translation> @@ -6821,7 +6842,6 @@ <translation id="8465444703385715657">L'exécution de <ph name="PLUGIN_NAME" /> requiert votre autorisation.</translation> <translation id="8466417995783206254">Une vidéo est diffusée en mode PIP dans cet onglet.</translation> <translation id="8467326454809944210">Sélectionner une autre langue</translation> -<translation id="8470214316007448308">Autres personnes</translation> <translation id="8470513973197838199">Mots de passe enregistrés pour <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Les sites se connectent généralement aux appareils USB pour proposer des fonctionnalités comme l'impression de documents ou l'enregistrement sur un périphérique de stockage</translation> <translation id="8471959340398751476">Les remises sont désactivées. Vous pouvez les activer dans le menu de personnalisation.</translation> @@ -7008,6 +7028,7 @@ <translation id="8676374126336081632">Effacer la saisie</translation> <translation id="8676770494376880701">Chargeur de faible puissance connecté</translation> <translation id="8677212948402625567">Tout réduire...</translation> +<translation id="867767487203716855">Prochaine mise à jour</translation> <translation id="8677859815076891398">Aucun album. Créez-en un dans <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Onglets non réduits</translation> <translation id="8678933587484842200">Comment souhaitez-vous que cette application soit lancée ?</translation> @@ -7096,7 +7117,6 @@ <translation id="87646919272181953">Album Google Photos</translation> <translation id="8767621466733104912">Mettre à jour Chrome automatiquement pour tous les utilisateurs</translation> <translation id="8770406935328356739">Répertoire racine de l'extension</translation> -<translation id="8770507190024617908">Gérer les utilisateurs</translation> <translation id="8771300903067484968">L'arrière-plan par défaut de la page d'accueil a été rétabli.</translation> <translation id="8773302562181397928">Enregistrer l'imprimante <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmer la restauration</translation> @@ -7358,6 +7378,7 @@ <translation id="9031549947500880805">Sauvegarder dans Google Drive. Restaurez vos données ou changez d'appareil facilement et à tout moment. Les données des applications sont également sauvegardées.</translation> <translation id="9033765790910064284">Continuer</translation> <translation id="9033857511263905942">&Coller</translation> +<translation id="9035689366572880647">Saisissez le code PIN actuel</translation> <translation id="9037640663275993951">Appareil non autorisé</translation> <translation id="9037818663270399707">Votre connexion n'est pas privée pour l'ensemble du trafic réseau</translation> <translation id="9037965129289936994">Afficher l'original</translation> @@ -7433,6 +7454,7 @@ <translation id="9112748030372401671">Changer le fond d'écran</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> est peut-être dangereux. L'envoyer à Google pour analyse ?</translation> <translation id="9112987648460918699">Rechercher...</translation> +<translation id="9113240369465613386">Pages impaires uniquement</translation> <translation id="9114663181201435112">Connectez-vous en toute simplicité</translation> <translation id="9115675100829699941">&Favoris</translation> <translation id="9116465289595958864">Dernière modification</translation> @@ -7587,6 +7609,7 @@ <translation id="991413375315957741">capteurs de mouvement ou de lumière</translation> <translation id="992032470292211616">Les extensions, les applications et les thèmes peuvent endommager votre appareil. Voulez-vous vraiment continuer ?</translation> <translation id="992256792861109788">Rose</translation> +<translation id="992401651319295351">Il vous reste <ph name="RETRIES" /> tentatives. Vous ne pourrez pas utiliser ce réseau tant que vous n'aurez pas configuré un nouveau code PIN.</translation> <translation id="992592832486024913">Désactiver ChromeVox (commentaires audio)</translation> <translation id="992778845837390402">Sauvegarde Linux…</translation> <translation id="993540765962421562">Installation…</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 5cab4dd..085dd36e 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -13,7 +13,7 @@ <translation id="1008557486741366299">Agora non</translation> <translation id="1010498023906173788">Esta pestana está conectada a un porto en serie.</translation> <translation id="1010833424573920260">{NUM_PAGES,plural, =1{Páxina que non responde}other{Páxinas que non responden}}</translation> -<translation id="1011355516189274711">Volume da síntese de voz</translation> +<translation id="1011355516189274711">Volume da saída de texto a voz</translation> <translation id="1012794136286421601">Estanse sincronizando os teus ficheiros de Documentos, Follas de Cálculo, Presentacións e Debuxos. Abre a aplicación Google Drive para acceder a eles con conexión ou sen ela.</translation> <translation id="1012876632442809908">Dispositivo USB‑C (porto frontal)</translation> <translation id="1015041505466489552">TrackPoint</translation> @@ -396,7 +396,7 @@ <translation id="1426410128494586442">Si</translation> <translation id="142655739075382478">A aplicación <ph name="APP_NAME" /> está bloqueada</translation> <translation id="1426870617281699524">Fai clic en Tentar de novo e acepta a solicitude no teu ordenador</translation> -<translation id="1427179946227469514">Ton da síntese de voz</translation> +<translation id="1427179946227469514">Ton da conversión de texto a voz</translation> <translation id="1427269577154060167">País</translation> <translation id="142758023928848008">Activar as teclas presas (para executar atallos do teclado escribíndoos de forma secuencial)</translation> <translation id="142765311413773645">Caducou a licenza de <ph name="APP_NAME" /></translation> @@ -484,7 +484,7 @@ <translation id="1521442365706402292">Xestionar certificados</translation> <translation id="1521774566618522728">Dispositivo activo hoxe</translation> <translation id="152234381334907219">Contrasinais que non se gardan nunca</translation> -<translation id="1523978563989812243">Motores de síntese de voz</translation> +<translation id="1523978563989812243">Motores de conversión de texto a voz</translation> <translation id="1524430321211440688">Teclado</translation> <translation id="1524563461097350801">Non, grazas</translation> <translation id="1525740877599838384">Utilizar só a wifi para determinar a localización</translation> @@ -2498,7 +2498,7 @@ <translation id="3677959414150797585">Inclúe aplicacións, páxinas web e moito máis. Envía estatísticas para mellorar as suxestións só se escolliches compartir datos de uso.</translation> <translation id="3678156199662914018">Extensión: <ph name="EXTENSION_NAME" /></translation> <translation id="3678188444105291936">As páxinas que visites nesta ventá non aparecerán no historial do navegador nin deixarán outros rastros (por exemplo, cookies) no ordenador unha vez peches sesión. Non se conservarán os ficheiros que descargues nin os marcadores que crees.</translation> -<translation id="3680683624079082902">Voz da síntese de voz</translation> +<translation id="3680683624079082902">Voz da conversión de texto a voz</translation> <translation id="3681311097828166361">Grazas polo teu comentario. Agora estás sen conexión, polo que o informe se enviará máis tarde.</translation> <translation id="3682824389861648626">Límite de movemento</translation> <translation id="3683524264665795342">Solicitude para compartir a pantalla de <ph name="APP_NAME" /></translation> @@ -2859,7 +2859,6 @@ <translation id="4035758313003622889">Xestor de &tarefas</translation> <translation id="4036778507053569103">A política descargada do servidor non é válida.</translation> <translation id="4037084878352560732">Cabalo</translation> -<translation id="4037889604535939429">Editar persoa</translation> <translation id="4040753847560036377">O PUK é incorrecto</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Páxina de saída}other{Páxinas de saída}}</translation> <translation id="4044612648082411741">Introduce o contrasinal do certificado</translation> @@ -4099,7 +4098,7 @@ <translation id="5468173180030470402">Buscando ficheiros compartidos</translation> <translation id="5469852975082458401">Podes navegar polas páxinas cun cursor de texto. Preme F7 para desactivar esta función.</translation> <translation id="5470735824776589490">É necesario reiniciar o dispositivo para poder restablecelo cun Powerwash. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> -<translation id="5471768120198416576">Ola! Son a túa voz de síntese de voz.</translation> +<translation id="5471768120198416576">Ola! Son a túa voz de conversión de texto a voz.</translation> <translation id="5472627187093107397">Gardar os contrasinais deste sitio</translation> <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{O PIN debe ter como mínimo 1 carácter}other{O PIN debe ter como mínimo # caracteres}}</translation> <translation id="5473333559083690127">Volve introducir o novo PIN</translation> @@ -4327,7 +4326,6 @@ <translation id="5709557627224531708">Define Chrome como navegador predeterminado</translation> <translation id="5711983031544731014">Non se pode desbloquear. Introduce o teu contrasinal.</translation> <translation id="5712153969432126546">Ás veces, os sitios publican PDF (por exemplo, documentos, contratos e formularios)</translation> -<translation id="5712323955984474772">Seguinte actualización</translation> <translation id="5715711091495208045">Axente do plugin: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motores de busca predeterminados</translation> <translation id="5719637365829998022">Código QR lido.</translation> @@ -4965,7 +4963,7 @@ <translation id="6419546358665792306">Cargar extensión descomprimida</translation> <translation id="6419843101460769608">Non permitir que ningún sitio acceda aos dispositivos Bluetooth</translation> <translation id="642469772702851743">O propietario bloqueou este dispositivo (número de serie: <ph name="SERIAL_NUMBER" />).</translation> -<translation id="6425556984042222041">Velocidade da síntese de voz</translation> +<translation id="6425556984042222041">Velocidade da saída de texto a voz</translation> <translation id="6426200009596957090">Abrir configuración de ChromeVox</translation> <translation id="642729974267661262">Sitios que non poden reproducir son</translation> <translation id="6429384232893414837">Produciuse un erro na actualización</translation> @@ -5099,7 +5097,6 @@ <translation id="6563469144985748109">O teu xestor aínda non o aprobou</translation> <translation id="6568283005472142698">Busca de pestanas</translation> <translation id="6569911211938664415">Os contrasinais gárdanse na túa Conta de Google (<ph name="ACCOUNT" />) para que poidas usalos en calquera dispositivo</translation> -<translation id="6569934958368283244">Outras persoas</translation> <translation id="6573497332121198392">Non se puido quitar o atallo</translation> <translation id="657402800789773160">&Recargar esta páxina</translation> <translation id="6577284282025554716">Cancelouse a descarga do ficheiro <ph name="FILE_NAME" /></translation> @@ -5152,7 +5149,7 @@ <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> solicita acceso permanente a un certificado para autenticarse no teu nome.</translation> <translation id="6635362468090274700">Ninguén pode compartir contido contigo ata que o teu dispositivo sexa visible.<ph name="BR" /><ph name="BR" />Se queres facelo visible de forma temporal, abre a área de estado e, a continuación, activa Visibilidade.</translation> <translation id="6635944431854494329">O propietario pode controlar esta función en Configuración > Avanzada > Enviar de forma automática datos de uso e diagnóstico a Google.</translation> -<translation id="6635956300022133031">Selecciona e personaliza as voces da síntese de voz</translation> +<translation id="6635956300022133031">Selecciona e personaliza as voces da conversión de texto a voz</translation> <translation id="6639554308659482635">Memoria SQLite</translation> <translation id="6640268266988685324">Pestana aberta</translation> <translation id="6642720633335369752">Para ver todas as ventás abertas da aplicación, pasa o dedo cara arriba desde a parte inferior da pantalla e mantena premida.</translation> @@ -5736,7 +5733,7 @@ <translation id="727441411541283857"><ph name="PERCENTAGE" /> %. <ph name="TIME" /> para completar a carga</translation> <translation id="727952162645687754">Erro de descarga</translation> <translation id="7280041992884344566">Produciuse un erro mentres Chrome buscaba software daniño</translation> -<translation id="7280649757394340890">Configuración da síntese de voz</translation> +<translation id="7280649757394340890">Configuración da conversión de texto a voz</translation> <translation id="7280877790564589615">Solicitouse permiso</translation> <translation id="7282547042039404307">Suave</translation> <translation id="7282992757463864530">Barra de información</translation> @@ -6784,7 +6781,6 @@ <translation id="8393700583063109961">Enviar mensaxe</translation> <translation id="8397825320644530257">Desconectar teléfono conectado</translation> <translation id="8398877366907290961">Continuar igualmente</translation> -<translation id="8400146488506985033">Xestionar persoas</translation> <translation id="8401432541486058167">Introduce o PIN asociado á túa tarxeta intelixente.</translation> <translation id="8404893580027489425">O sensor de impresión dixital atópase no lateral dereito do dispositivo (<ph name="DEVICE_TYPE" />). Tócao suavemente con calquera dedo.</translation> <translation id="8405046151008197676">Descubre o máis destacado da última actualización</translation> @@ -6840,7 +6836,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> precisa do teu permiso para executarse</translation> <translation id="8466417995783206254">Esta pestana está reproducindo un vídeo no modo de pantalla superposta.</translation> <translation id="8467326454809944210">Escoller outro idioma</translation> -<translation id="8470214316007448308">Outras persoas</translation> <translation id="8470513973197838199">Gardáronse os contrasinais para <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Os sitios adoitan conectarse aos dispositivos USB para ofrecerche determinadas funcións (por exemplo, imprimir documentos ou gardar información nun dispositivo de almacenamento)</translation> <translation id="8471959340398751476">Os descontos están desactivados. Podes activalos no menú de personalización</translation> @@ -7027,6 +7022,7 @@ <translation id="8676374126336081632">Borrar texto</translation> <translation id="8676770494376880701">Cargador de baixa potencia conectado</translation> <translation id="8677212948402625567">Contraer todo...</translation> +<translation id="867767487203716855">Seguinte actualización</translation> <translation id="8677859815076891398">Non hai ningún álbum. Crea un en <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">As pestanas non se reducen</translation> <translation id="8678933587484842200">Como queres que se inicie esta aplicación?</translation> @@ -7115,7 +7111,6 @@ <translation id="87646919272181953">Álbums de Google Fotos</translation> <translation id="8767621466733104912">Actualizar Chrome para todos os usuarios automaticamente</translation> <translation id="8770406935328356739">Directorio raíz da extensión</translation> -<translation id="8770507190024617908">Xestionar persoas</translation> <translation id="8771300903067484968">Restableceuse o fondo predeterminado da pantalla de inicio.</translation> <translation id="8773302562181397928">Gardar <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmar restauración</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index d57404e6..3b88cfa59 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2852,7 +2852,6 @@ <translation id="4035758313003622889">&કાર્ય વ્યવસ્થાપક</translation> <translation id="4036778507053569103">સર્વરમાંથી ડાઉનલોડ કરેલી પૉલિસી અમાન્ય છે.</translation> <translation id="4037084878352560732">ઘોડો</translation> -<translation id="4037889604535939429">વ્યક્તિની માહિતીમાં ફેરફાર કરો</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{પેજમાંથી બહાર નીકળો}one{પેજમાંથી બહાર નીકળો}other{પેજમાંથી બહાર નીકળો}}</translation> <translation id="4044612648082411741">તમારો પ્રમાણપત્ર પાસવર્ડ દાખલ કરો</translation> <translation id="4044708573046946214">સ્ક્રીન લૉકનો પાસવર્ડ</translation> @@ -4318,7 +4317,6 @@ <translation id="5709557627224531708">Chromeને તમારા ડિફૉલ્ટ બ્રાઉઝર તરીકે સેટ કરો</translation> <translation id="5711983031544731014">અનલૉક કરવામાં અસમર્થ છે. તમારો પાસવર્ડ દાખલ કરો.</translation> <translation id="5712153969432126546">સાઇટ અમુક વખતે PDFs પ્રકાશિત કરે છે, જેમ કે દસ્તાવેજો, કરારો અને ફોર્મ</translation> -<translation id="5712323955984474772">આગલી અપડેટ</translation> <translation id="5715711091495208045">પ્લગિન બ્રોકર: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ડિફૉલ્ટ શોધ એંજિન્સ</translation> <translation id="5719637365829998022">QR કોડ સ્કૅન કરવામાં આવ્યો છે.</translation> @@ -5087,7 +5085,6 @@ <translation id="6563469144985748109">તમારા સંચાલકે હજી સુધી તેને મંજૂર કરેલ નથી</translation> <translation id="6568283005472142698">ટૅબની શોધ</translation> <translation id="6569911211938664415">તમારા Google એકાઉન્ટ (<ph name="ACCOUNT" />)માં પાસવર્ડ સાચવવામાં આવે છે, જેથી તમે કોઈપણ ડિવાઇસ પર તેનો ઉપયોગ કરી શકો</translation> -<translation id="6569934958368283244">અન્ય લોકો</translation> <translation id="6573497332121198392">શૉર્ટકટ કાઢી નાખી શકાતો નથી</translation> <translation id="657402800789773160">&Reload This Page</translation> <translation id="6577284282025554716">ડાઉનલોડ રદ કર્યું: <ph name="FILE_NAME" /></translation> @@ -6756,7 +6753,6 @@ <translation id="8393700583063109961">સંદેશ મોકલો</translation> <translation id="8397825320644530257">કનેક્ટ થયેલા ફોનને ડિસકનેક્ટ કરવાના સેટિંગ</translation> <translation id="8398877366907290961">કોઈપણ રીતે આગળ વધારો</translation> -<translation id="8400146488506985033">લોકોને મેનેજ કરો</translation> <translation id="8401432541486058167">તમારા સ્માર્ટ કાર્ડ સાથે સંકળાયેલો હોય તે પિન પ્રદાન કરો.</translation> <translation id="8404893580027489425">ફિંગરપ્રિન્ટ સેન્સર તમારા <ph name="DEVICE_TYPE" />ની જમણી બાજુએ છે. તેને કોઈપણ આંગળી વડે હળવેથી સ્પર્શ કરો.</translation> <translation id="8405046151008197676">એકદમ નવી અપડેટની હાઇલાઇટ મેળવો</translation> @@ -6812,7 +6808,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ને ચલાવવા માટે તમારી પરવાનગીની જરૂર છે</translation> <translation id="8466417995783206254">આ ટૅબમાં ચિત્રમાં ચિત્ર મોડમાં વીડિઓ ચાલી રહ્યો છે.</translation> <translation id="8467326454809944210">બીજી ભાષા પસંદ કરો</translation> -<translation id="8470214316007448308">અન્ય લોકો</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> માટે સાચવેલા પાસવર્ડ</translation> <translation id="8471525937465764768">દસ્તાવેજ પ્રિન્ટ કરવા જેવી અથવા સ્ટોરેજ ડિવાઇસમાં સાચવવા જેવી સુવિધાઓ માટે, સાઇટ સામાન્ય રીતે USB ડિવાઇસ સાથે કનેક્ટ કરે છે</translation> <translation id="8471959340398751476">છૂટ મેળવવાની સુવિધા બંધ છે. તમે તેને 'કસ્ટમાઇઝ કરો' મેનૂમાં જઈને ચાલુ કરી શકો છો</translation> @@ -6999,6 +6994,7 @@ <translation id="8676374126336081632">ઇનપુટ સાફ કરો</translation> <translation id="8676770494376880701">નિમ્ન-પાવર ચાર્જર કનેક્ટ કર્યું છે</translation> <translation id="8677212948402625567">બધાને સંકુચિત કરો...</translation> +<translation id="867767487203716855">આગલી અપડેટ</translation> <translation id="8677859815076891398">કોઈ આલ્બમ નથી. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />માં કોઈ આલ્બમ બનાવો.</translation> <translation id="8678582529642151449">ટૅબ સંકોચાતી નથી</translation> <translation id="8678933587484842200">તમે આ ઍપ્લિકેશન કેવી રીતે લૉન્ચ કરવાનું પસંદ કરશો?</translation> @@ -7087,7 +7083,6 @@ <translation id="87646919272181953">Google Photos આલ્બમ</translation> <translation id="8767621466733104912">Chrome ને તમામ વપરાશકર્તાઓ માટે ઑટોમૅટિક રીતે અપડેટ કરો</translation> <translation id="8770406935328356739">એક્સ્ટેન્શન રૂટ ડિરેક્ટરી</translation> -<translation id="8770507190024617908">લોકોને મેનેજ કરો</translation> <translation id="8771300903067484968">પ્રારંભ પેજના બૅકગ્રાઉન્ડને ડિફૉલ્ટ બૅકગ્રાઉન્ડ તરીકે સેટ કરવામાં આવ્યું છે.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" />ને સાચવો</translation> <translation id="8774379074441005279">પુનઃસ્થાપિત કરવાનું કન્ફર્મ કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index e6f57c2..cb0c218 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2875,7 +2875,6 @@ <translation id="4035758313003622889">&कार्य मैनेजर</translation> <translation id="4036778507053569103">सर्वर से डाउनलोड की गई नीति गलत है.</translation> <translation id="4037084878352560732">घोड़ा</translation> -<translation id="4037889604535939429">व्यक्ति की जानकारी बदलें</translation> <translation id="4040753847560036377">PUK गलत है</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{पेज से बाहर निकलें}one{पेज से बाहर निकलें}other{पेज से बाहर निकलें}}</translation> <translation id="4044612648082411741">अपना प्रमाणपत्र पासवर्ड डालें</translation> @@ -4344,7 +4343,6 @@ <translation id="5709557627224531708">Chrome को अपने डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करें</translation> <translation id="5711983031544731014">अनलॉक करने में असमर्थ है. अपना पासवर्ड डालें.</translation> <translation id="5712153969432126546">कभी-कभी साइटें, पीडीएफ़ प्रकाशित करती हैं. जैसे, दस्तावेज़, कॉन्ट्रैक्ट, और फ़ॉर्म</translation> -<translation id="5712323955984474772">अगला अपडेट</translation> <translation id="5715711091495208045">प्लग इन ब्रोकर: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">डिफ़ॉल्ट सर्च इंजन</translation> <translation id="5719637365829998022">क्यूआर कोड स्कैन किया गया.</translation> @@ -5116,7 +5114,6 @@ <translation id="6563469144985748109">आपके मैनेजर ने अभी तक इसकी अनुमति नहीं दी है</translation> <translation id="6568283005472142698">टैब सर्च</translation> <translation id="6569911211938664415">पासवर्ड आपके Google खाते (<ph name="ACCOUNT" />) में सेव किए जाते हैं, इसलिए आप उन्हें किसी भी डिवाइस पर इस्तेमाल कर सकते हैं</translation> -<translation id="6569934958368283244">दूसरे लोग</translation> <translation id="6573497332121198392">शॉर्टकट नहीं हटाया जा सकता</translation> <translation id="657402800789773160">&यह पेज फिर से लोड करें</translation> <translation id="6577284282025554716">डाउनलोड रोका गया: <ph name="FILE_NAME" /></translation> @@ -6802,7 +6799,6 @@ <translation id="8393700583063109961">संदेश भेजें</translation> <translation id="8397825320644530257">जुड़ा हुआ Android फ़ोन हटाएं</translation> <translation id="8398877366907290961">फिर भी आगे बढ़ें</translation> -<translation id="8400146488506985033">लोगों को प्रबंधित करें</translation> <translation id="8401432541486058167">ऐसा पिन डालें जो आपके स्मार्ट कार्ड से जुड़ा हुआ हो.</translation> <translation id="8404893580027489425">फ़िंगरप्रिंट सेंसर, आपके <ph name="DEVICE_TYPE" /> की दाईं ओर है. इसे किसी भी उंगली से हल्के से छुएं.</translation> <translation id="8405046151008197676">हाल ही के अपडेट की खास बातें जानें</translation> @@ -6858,7 +6854,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> को चलाने के लिए आपकी अनुमति चाहिए</translation> <translation id="8466417995783206254">यह टैब वीडियो को 'पिक्चर में पिक्चर' मोड में चला रहा है.</translation> <translation id="8467326454809944210">कोई दूसरी भाषा चुनें</translation> -<translation id="8470214316007448308">दूसरे लोग</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> के लिए सेव किए गए पासवर्ड</translation> <translation id="8471525937465764768">आम तौर पर, साइटें, दस्तावेज़ को प्रिंट करने या स्टोरेज डिवाइस में चीज़ें सेव करने जैसी सुविधाओं के लिए, यूएसबी डिवाइस से कनेक्ट करती हैं</translation> <translation id="8471959340398751476">छूट की जानकारी पाने की सुविधा बंद है. आप 'पसंद के मुताबिक बनाएं' मेन्यू में जाकर, इस सुविधा को चालू कर सकते हैं</translation> @@ -7045,6 +7040,7 @@ <translation id="8676374126336081632">इनपुट साफ़ करें</translation> <translation id="8676770494376880701">कम-शक्ति वाला चार्जर</translation> <translation id="8677212948402625567">सभी को छोटा करें...</translation> +<translation id="867767487203716855">अगला अपडेट</translation> <translation id="8677859815076891398">कोई एल्बम नहीं. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> में एल्बम बनाएं.</translation> <translation id="8678582529642151449">टैब छोटे नहीं किए जा सकते</translation> <translation id="8678933587484842200">आप इस ऐप्लिकेशन को कैसे लॉन्च करना चाहते हैं?</translation> @@ -7133,7 +7129,6 @@ <translation id="87646919272181953">Google Photos की एल्बम</translation> <translation id="8767621466733104912">Chrome को सभी उपयोगकर्ताओं के लिए अपने आप अपडेट करें</translation> <translation id="8770406935328356739">एक्सटेंशन मूल निर्देशिका</translation> -<translation id="8770507190024617908">लोगों को प्रबंधित करें</translation> <translation id="8771300903067484968">स्टार्ट पेज के बैकग्राउंड को डिफ़ॉल्ट बैकग्राउंड पर रीसेट कर दिया गया है.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> को सेव करें</translation> <translation id="8774379074441005279">बहाल करने की पुष्टि करें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index e7d011a7..2f7c9d2 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -2863,7 +2863,6 @@ <translation id="4035758313003622889">&Upravitelj zadacima</translation> <translation id="4036778507053569103">Pravilo preuzeto s poslužitelja nije važeće.</translation> <translation id="4037084878352560732">Konj</translation> -<translation id="4037889604535939429">Uređivanje osobe</translation> <translation id="4040753847560036377">PUK nije točan</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Zatvori stranicu}one{Zatvori stranicu}few{Zatvori stranice}other{Zatvori stranica}}</translation> <translation id="4044612648082411741">Unesite zaporku za certifikat</translation> @@ -4331,7 +4330,6 @@ <translation id="5709557627224531708">Postavite Chrome kao zadani preglednik</translation> <translation id="5711983031544731014">Otključavanje nije moguće. Unesite svoju zaporku.</translation> <translation id="5712153969432126546">Web-lokacije ponekad objavljuju PDF-ove, primjerice dokumente, ugovore i obrasce</translation> -<translation id="5712323955984474772">Sljedeće ažuriranje</translation> <translation id="5715711091495208045">Broker dodatka: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Zadane tražilice</translation> <translation id="5719637365829998022">QR kôd je skeniran.</translation> @@ -5103,7 +5101,6 @@ <translation id="6563469144985748109">Voditelj je još nije odobrio</translation> <translation id="6568283005472142698">Pretraživanje kartica</translation> <translation id="6569911211938664415">Zaporke se spremaju na vaš Google račun (<ph name="ACCOUNT" />) kako biste ih mogli upotrebljavati na bilo kojem uređaju</translation> -<translation id="6569934958368283244">Druge osobe</translation> <translation id="6573497332121198392">Nije moguće ukloniti prečac</translation> <translation id="657402800789773160">&Reload This Page (Ponovo učitaj ovu stranicu)</translation> <translation id="6577284282025554716">Preuzimanje otkazano: <ph name="FILE_NAME" /></translation> @@ -6789,7 +6786,6 @@ <translation id="8393700583063109961">Pošaljite poruku</translation> <translation id="8397825320644530257">Prekidanje veze povezanog telefona</translation> <translation id="8398877366907290961">Svejedno nastavi</translation> -<translation id="8400146488506985033">Upravljaj korisnicima</translation> <translation id="8401432541486058167">Unesite PIN za pametnu karticu.</translation> <translation id="8404893580027489425">Senzor otiska prsta nalazi se s desne strane uređaja <ph name="DEVICE_TYPE" />. Dodirnite ga lagano bilo kojim prstom.</translation> <translation id="8405046151008197676">Primite najzanimljivije dijelove najnovijeg ažuriranja</translation> @@ -6845,7 +6841,6 @@ <translation id="8465444703385715657">Dodatak <ph name="PLUGIN_NAME" /> treba vaše dopuštenje da bi se pokrenuo</translation> <translation id="8466417995783206254">Ova kartica prikazuje videozapis u načinu slike u slici.</translation> <translation id="8467326454809944210">Odabir drugog jezika</translation> -<translation id="8470214316007448308">Druge osobe</translation> <translation id="8470513973197838199">Spremljene zaporke za <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Web-lokacije se obično povezuju s USB uređajima radi značajki poput ispisa dokumenta ili njihovog spremanja na uređaj za pohranu</translation> <translation id="8471959340398751476">Traženje popusta je isključeno. Možete ga uključiti putem izbornika za prilagodbu</translation> @@ -7032,6 +7027,7 @@ <translation id="8676374126336081632">Brisanje unosa</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> <translation id="8677212948402625567">Sažmi sve...</translation> +<translation id="867767487203716855">Sljedeće ažuriranje</translation> <translation id="8677859815076891398">Nema albuma. Izradite album u <ph name="LINK_BEGIN" />Google fotografijama<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Kartice se ne smanjuju</translation> <translation id="8678933587484842200">Kako želite da se ova aplikacija pokreće?</translation> @@ -7120,7 +7116,6 @@ <translation id="87646919272181953">Album Google fotografija</translation> <translation id="8767621466733104912">Automatski ažuriraj Chrome za sve korisnike</translation> <translation id="8770406935328356739">Korijenski direktorij proširirenja</translation> -<translation id="8770507190024617908">Upravljaj korisnicima</translation> <translation id="8771300903067484968">Pozadina početne stranice vraćena je na zadanu pozadinu.</translation> <translation id="8773302562181397928">Spremite <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potvrđivanje vraćanja</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 2212957..8235514 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2873,7 +2873,6 @@ <translation id="4035758313003622889">&Feladatkezelő</translation> <translation id="4036778507053569103">A szerverről letöltött házirend érvénytelen.</translation> <translation id="4037084878352560732">Ló</translation> -<translation id="4037889604535939429">Személy adatainak szerkesztése</translation> <translation id="4040753847560036377">Helytelen PUK-kód</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Oldal elhagyása}other{Oldalak elhagyása}}</translation> <translation id="4044612648082411741">A tanúsítvány jelszavának megadása</translation> @@ -4344,7 +4343,6 @@ <translation id="5709557627224531708">A Chrome beállítása alapértelmezett böngészőként</translation> <translation id="5711983031544731014">Nem lehet végrehajtani a feloldást. Adja meg jelszavát.</translation> <translation id="5712153969432126546">A webhelyek néha közzétesznek PDF formátumú tartalmakat (pl. dokumentumokat, szerződéseket vagy űrlapokat)</translation> -<translation id="5712323955984474772">Következő frissítés</translation> <translation id="5715711091495208045">Beépülő modul közvetítője: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Alapértelmezett keresőmotorok</translation> <translation id="5719637365829998022">QR-kód beolvasása sikeres.</translation> @@ -5116,7 +5114,6 @@ <translation id="6563469144985748109">A kezelő még nem hagyta jóvá</translation> <translation id="6568283005472142698">Keresés a lapokon</translation> <translation id="6569911211938664415">A jelszavakat Google-fiókjába (<ph name="ACCOUNT" />) mentjük, hogy bármelyik eszközén használhassa őket.</translation> -<translation id="6569934958368283244">További személyek</translation> <translation id="6573497332121198392">A parancsikon nem távolítható el</translation> <translation id="657402800789773160">Az oldal új&ratöltése</translation> <translation id="6577284282025554716">Letöltés megszakítva: <ph name="FILE_NAME" /></translation> @@ -6802,7 +6799,6 @@ <translation id="8393700583063109961">Üzenet küldése</translation> <translation id="8397825320644530257">Csatlakoztatott telefon leválasztása</translation> <translation id="8398877366907290961">Továbblépés</translation> -<translation id="8400146488506985033">Személyek kezelése</translation> <translation id="8401432541486058167">Adja meg az intelligens kártyájához tartozó PIN-kódot.</translation> <translation id="8404893580027489425">Az ujjlenyomat-érzékelő a(z) <ph name="DEVICE_TYPE" /> eszköz jobb oldalán található. Érintse meg finoman valamelyik ujjával.</translation> <translation id="8405046151008197676">Tekintse át a legutóbbi frissítés összefoglalóját</translation> @@ -6858,7 +6854,6 @@ <translation id="8465444703385715657">A(z) <ph name="PLUGIN_NAME" /> futtatásához az Ön engedélyére van szükség</translation> <translation id="8466417995783206254">A videó lejátszása a lapon kép a képben módban történik.</translation> <translation id="8467326454809944210">Másik nyelv választása</translation> -<translation id="8470214316007448308">További személyek</translation> <translation id="8470513973197838199">A(z) <ph name="ORIGIN" /> mentett jelszavai</translation> <translation id="8471525937465764768">A webhelyek általában bizonyos funkciók (például dokumentumok nyomtatásának vagy tárolóeszközön való mentésének) végrehajtása érdekében csatlakoznak USB-eszközökhöz</translation> <translation id="8471959340398751476">A kedvezmények keresése ki van kapcsolva. Bekapcsolhatja a személyre szabási menüben.</translation> @@ -7045,6 +7040,7 @@ <translation id="8676374126336081632">Beírt szöveg törlése</translation> <translation id="8676770494376880701">Kis teljesítményű töltő csatlakoztatva</translation> <translation id="8677212948402625567">Összes listanézete...</translation> +<translation id="867767487203716855">Következő frissítés</translation> <translation id="8677859815076891398">Nincs album. Hozzon létre albumot a <ph name="LINK_BEGIN" />Google Fotókban<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">A lapok nem zsugorodnak össze</translation> <translation id="8678933587484842200">Hogyan szeretné elindítani ezt az alkalmazást?</translation> @@ -7133,7 +7129,6 @@ <translation id="87646919272181953">Google Fotók-album</translation> <translation id="8767621466733104912">A Chrome automatikus frissítése az összes felhasználó számára</translation> <translation id="8770406935328356739">A bővítmény gyökérkönyvtára</translation> -<translation id="8770507190024617908">Személyek kezelése</translation> <translation id="8771300903067484968">A kezdőoldal háttere vissza lett állítva az alapértelmezett háttérre.</translation> <translation id="8773302562181397928">A következő nyomtató mentése: <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Visszaállítás megerősítése</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 4c60e431..98aede0 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -2862,7 +2862,6 @@ <translation id="4035758313003622889">&Խնդիրների կառավարիչ</translation> <translation id="4036778507053569103">Սերվերից ներբեռնված քաղաքականությունն անվավեր է:</translation> <translation id="4037084878352560732">Ձի</translation> -<translation id="4037889604535939429">Փոխել օգտատիրոջը</translation> <translation id="4040753847560036377">PUK կոդը սխալ է</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Փակել էջը}one{Փակել էջը}other{Փակել էջը}}</translation> <translation id="4044612648082411741">Մուտքագրեք հավաստագրի գաղտնաբառը</translation> @@ -4333,7 +4332,6 @@ <translation id="5709557627224531708">Դարձրեք Chrome-ը կանխադրված դիտարկիչ</translation> <translation id="5711983031544731014">Հնարավոր չէ ապակողպել: Մուտքագրեք ձեր գաղտնաբառը:</translation> <translation id="5712153969432126546">Կայքերը երբեմն հրապարակում են PDF ֆայլեր, օրինակ՝ փաստաթղթեր, պայմանագրեր և այլ ձևեր։</translation> -<translation id="5712323955984474772">Հաջորդ թարմացումը</translation> <translation id="5715711091495208045">Փլագինի միջնորդ՝ <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Կանխադրված որոնման համակարգեր</translation> <translation id="5719637365829998022">QR կոդը սկանավորվեց</translation> @@ -5105,7 +5103,6 @@ <translation id="6563469144985748109">Ձեր ադմինիստրատորը դեռ չի հաստատել</translation> <translation id="6568283005472142698">Որոնում ներդիրներում</translation> <translation id="6569911211938664415">Գաղտնաբառերը պահվում են ձեր Google հաշվում (<ph name="ACCOUNT" />), որպեսզի դրանք կարողանաք օգտագործել ցանկացած սարքում։</translation> -<translation id="6569934958368283244">Այլ մարդիկ</translation> <translation id="6573497332121198392">Չհաջողվեց հեռացնել դյուրանցումը</translation> <translation id="657402800789773160">&Վերաբեռնել այս էջը</translation> <translation id="6577284282025554716">Ներբեռնումը չեղարկվել է՝ <ph name="FILE_NAME" /></translation> @@ -6789,7 +6786,6 @@ <translation id="8393700583063109961">Ուղարկել հաղորդագրություն</translation> <translation id="8397825320644530257">Չեղարկել հեռախոսի հետ կապը</translation> <translation id="8398877366907290961">Շարունակել</translation> -<translation id="8400146488506985033">Օգտատերերի կառավարում</translation> <translation id="8401432541486058167">Մուտքագրեք PIN կոդը, որը կապված է ձեր խելացի քարտի հետ։</translation> <translation id="8404893580027489425">Մատնահետքի սկաները գտնվում է ձեր <ph name="DEVICE_TYPE" /> սարքի աջ մասում։ Մատով թեթևակի հպեք դրան։</translation> <translation id="8405046151008197676">Ծանոթացեք վերջին թարմացման մասին հիմնական տեղեկություններին</translation> @@ -6845,7 +6841,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> փլագինն աշխատեցնելու համար հարկավոր է ձեր թույլտվությունը</translation> <translation id="8466417995783206254">Այս ներդիրում նվագարկվում է տեսանյութ «նկար նկարի մեջ» ռեժիմում։</translation> <translation id="8467326454809944210">Ընտրել մեկ այլ լեզու</translation> -<translation id="8470214316007448308">Այլ մարդիկ</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> կայքի պահված գաղտնաբառերը</translation> <translation id="8471525937465764768">Կայքերը սովորաբար միանում են USB սարքերին՝ փաստաթուղթ տպելու, սարքի հիշողությունում որևէ տարր պահելու և նման այլ գործառույթների համար</translation> <translation id="8471959340398751476">Զեղչերն անջատված են։ Կարող եք դրանք միացնել անհատականացման ընտրացանկում։</translation> @@ -7032,6 +7027,7 @@ <translation id="8676374126336081632">Մաքրել ներածումը</translation> <translation id="8676770494376880701">Կապակցվել է թույլ լիցքով լիցքավորիչ</translation> <translation id="8677212948402625567">Կոծկել բոլորը…</translation> +<translation id="867767487203716855">Հաջորդ թարմացումը</translation> <translation id="8677859815076891398">Ալբոմներ չկան: Ստեղծեք ալբոմ <ph name="LINK_BEGIN" />Google Լուսանկարներում<ph name="LINK_END" />։</translation> <translation id="8678582529642151449">Ներդիրները չեն փոքրացվում</translation> <translation id="8678933587484842200">Ինչպե՞ս գործարկել այս հավելվածը։</translation> @@ -7120,7 +7116,6 @@ <translation id="87646919272181953">Google Լուսանկարների ալբոմ</translation> <translation id="8767621466733104912">Ինքնաթարմացնել Chrome-ը բոլոր օգտատերերի համար</translation> <translation id="8770406935328356739">Ընդլայնման արմատային գրացուցակ</translation> -<translation id="8770507190024617908">Օգտատերերի կառավարում</translation> <translation id="8771300903067484968">Գլխավոր էջը վերակայվել է կանխադրված ֆոնով։</translation> <translation id="8773302562181397928">Պահել «<ph name="PRINTER_NAME" />» տպիչը</translation> <translation id="8774379074441005279">Հաստատեք վերականգնումը</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 2dea5310..b965a183 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -711,6 +711,7 @@ <translation id="173628468822554835">Oke. Secara default, situs baru yang Anda kunjungi tidak akan mengirimkan notifikasi.</translation> <translation id="1736419249208073774">Jelajahi</translation> <translation id="1737968601308870607">Bug file</translation> +<translation id="1739684185846730053">Uji coba Privacy Sandbox masih dalam pengembangan aktif dan hanya tersedia di wilayah tertentu. Untuk saat ini, situs dapat mencoba Privacy Sandbox sambil tetap menggunakan teknologi web saat ini seperti cookie pihak ketiga.</translation> <translation id="174123615272205933">Kustom</translation> <translation id="1741314857973421784">Lanjutkan</translation> <translation id="1743570585616704562">Tidak dikenali</translation> @@ -1135,6 +1136,7 @@ <translation id="217576141146192373">Tidak dapat menambahkan printer. Harap periksa konfigurasi printer Anda, lalu coba lagi.</translation> <translation id="2177950615300672361">Tab Samaran: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA Mencurigakan</translation> +<translation id="2179416702468739594">Mencari profil yang tersedia. Hal ini dapat menyebabkan jaringan seluler Anda terputus selama beberapa menit.</translation> <translation id="2182058453334755893">Disalin ke Papan Klip Anda</translation> <translation id="2184515124301515068">Izinkan Chrome memilih kapan situs dapat memutar suara (direkomendasikan)</translation> <translation id="2186711480981247270">Halaman yang dibagikan dari perangkat lain</translation> @@ -1403,6 +1405,7 @@ <translation id="2469375675106140201">Sesuaikan pemeriksaan ejaan</translation> <translation id="247051149076336810">URL berbagi file</translation> <translation id="2470702053775288986">Ekstensi yang tidak didukung dinonaktifkan</translation> +<translation id="2470939964922472929">Terlalu sering memasukkan PIN yang salah. Coba siapkan PIN baru, masukkan Kunci Pembuka Blokir Pribadi (PUK) 8 digit yang diberikan oleh operator Anda.</translation> <translation id="2471469610750100598">Hitam (default)</translation> <translation id="2471506181342525583">Akses lokasi diizinkan</translation> <translation id="2473195200299095979">Terjemahkan halaman ini</translation> @@ -1699,6 +1702,7 @@ <translation id="2785873697295365461">Deskriptor file</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Nomor grup</translation> <translation id="2789486458103222910">Oke</translation> <translation id="2791529110887957050">Hapus Linux</translation> <translation id="2791952154587244007">Terjadi kesalahan. Aplikasi kios tidak akan dapat diluncurkan secara otomatis di perangkat ini.</translation> @@ -2000,6 +2004,7 @@ <translation id="310671807099593501">Situs sedang menggunakan bluetooth</translation> <translation id="3108931485517391283">Tidak dapat menerima</translation> <translation id="3109724472072898302">Diciutkan</translation> +<translation id="3113592018909187986">Tersisa 1 upaya lagi. Anda tidak akan dapat menggunakan jaringan ini hingga Anda menyiapkan PIN baru.</translation> <translation id="311394601889664316">Jangan izinkan situs mengedit file atau folder di perangkat Anda</translation> <translation id="3115147772012638511">Menunggu cache...</translation> <translation id="3115580024857770654">Ciutkan semua</translation> @@ -2288,6 +2293,7 @@ <translation id="3440663250074896476">Tindakan lainnya untuk <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Layar</translation> <translation id="3441663102605358937">Login ke <ph name="ACCOUNT" /> lagi untuk memverifikasi akun ini</translation> +<translation id="3444641828375597683">Pengiklan dan penayang dapat menggunakan FLoC, yang dijelaskan selanjutnya di halaman ini.</translation> <translation id="3445047461171030979">Jawaban cepat Asisten Google</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> mnt</translation> <translation id="3445925074670675829">Perangkat USB-C</translation> @@ -2394,7 +2400,7 @@ <translation id="3554493885489666172">Perangkat Anda dikelola oleh <ph name="PROFILE_NAME" />. Administrator dapat mengakses data di profil mana pun di perangkat ini.</translation> <translation id="3555812735919707620">Buang ekstensi</translation> <translation id="3556000484321257665">Mesin telusur diubah ke <ph name="URL" />.</translation> -<translation id="3556433843310711081">Pengelola dapat membuka blokirnya untuk Anda</translation> +<translation id="3556433843310711081">Pengelola dapat berhenti memblokirnya untuk Anda</translation> <translation id="3557101512409028104">Setel pembatasan situs dan batas waktu pemakaian perangkat dengan Family Link</translation> <translation id="3559262020195162408">Gagal menginstal kebijakan di perangkat.</translation> <translation id="3559533181353831840">Sekitar <ph name="TIME_LEFT" /> lagi</translation> @@ -2870,7 +2876,7 @@ <translation id="4035758313003622889">&Pengelola tugas</translation> <translation id="4036778507053569103">Kebijakan yang didownload dari server tidak valid.</translation> <translation id="4037084878352560732">Kuda</translation> -<translation id="4037889604535939429">Edit orang</translation> +<translation id="4040753847560036377">PUK salah</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Keluar dari Halaman}other{Keluar dari Halaman}}</translation> <translation id="4044612648082411741">Memasukkan sandi sertifikat</translation> <translation id="4044708573046946214">Sandi kunci layar</translation> @@ -3079,6 +3085,7 @@ <translation id="4297813521149011456">Rotasi layar</translation> <translation id="4299022904780065004">&Jendela Samaran baru</translation> <translation id="4301671483919369635">Halaman ini diizinkan untuk mengedit file</translation> +<translation id="4302605047395093221">Siapa pun yang menggunakan perangkat ini perlu memasukkan PIN untuk terhubung ke jaringan seluler ini</translation> <translation id="4303079906735388947">Siapkan PIN baru untuk kunci keamanan Anda</translation> <translation id="4305402730127028764">Salin ke <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Alihkan</translation> @@ -3264,6 +3271,7 @@ <translation id="4510479820467554003">Daftar akun orang tua</translation> <translation id="4510614391273086606">File dan aplikasi Linux sedang dipulihkan ke keadaan cadangannya.</translation> <translation id="451102079304155829">keranjang</translation> +<translation id="4513275008300099962">Nonaktifkan overlay kontrol jendela</translation> <translation id="4513946894732546136">Masukan</translation> <translation id="451407183922382411">Diberdayakan oleh <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Tombol putar atau jeda video</translation> @@ -4336,7 +4344,6 @@ <translation id="5709557627224531708">Setel Chrome sebagai browser default Anda</translation> <translation id="5711983031544731014">Tidak dapat membuka. Masukkan sandi Anda.</translation> <translation id="5712153969432126546">Situs terkadang memublikasikan PDF, seperti dokumen, kontrak, dan formulir</translation> -<translation id="5712323955984474772">Update Berikutnya</translation> <translation id="5715711091495208045">Pialang Plugin: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Mesin telusur default</translation> <translation id="5719637365829998022">Kode QR sudah dipindai.</translation> @@ -4351,7 +4358,7 @@ <translation id="5728450728039149624">Opsi layar kunci Smart Lock</translation> <translation id="5729712731028706266">&Lihat</translation> <translation id="5731247495086897348">Tem&pel dan Buka</translation> -<translation id="5732392974455271431">Orang tua dapat membuka blokirnya untukmu</translation> +<translation id="5732392974455271431">Orang tua dapat berhenti memblokirnya untukmu</translation> <translation id="5734362860645681824">Komunikasi</translation> <translation id="5734697361979786483">Tambahkan berbagi file</translation> <translation id="5736796278325406685">Masukkan nama pengguna yang valid</translation> @@ -4608,10 +4615,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - Perangkat USB tersambung</translation> <translation id="6028117231645531007">Tambahkan sidik jari</translation> <translation id="6031600495088157824">Opsi masukan di toolbar</translation> +<translation id="6032091552407840792">Uji coba ini hanya aktif di <ph name="BEGIN_LINK" />beberapa wilayah<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Agar ekstensi dapat mengakses situs ini, klik ekstensi.</translation> <translation id="6032912588568283682">Sistem file</translation> <translation id="603539183851330738">Tombol urungkan koreksi otomatis. Kembalikan ke <ph name="TYPED_WORD" />. Tekan enter untuk mengaktifkan, escape untuk menutup.</translation> <translation id="6038929619733116134">Blokir jika situs menampilkan iklan yang mengganggu atau menyesatkan</translation> +<translation id="603895874132768835">Anda tidak akan dapat menggunakan jaringan ini hingga Anda menyiapkan PIN baru</translation> <translation id="6039651071822577588">Kamus properti jaringan rusak</translation> <translation id="6040143037577758943">Tutup</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Layanan lokasi Google menggunakan sumber seperti Wi‑Fi, jaringan seluler, dan sensor untuk membantu memperkirakan lokasi perangkat Anda.<ph name="END_PARAGRAPH1" /> @@ -4859,6 +4868,7 @@ <translation id="6292699686837272722">Tab dikecilkan ke lebar sedang</translation> <translation id="6295158916970320988">Semua situs</translation> <translation id="6295855836753816081">Menyimpan...</translation> +<translation id="6296410173147755564">PUK tidak valid</translation> <translation id="6298962879096096191">Menggunakan Google Play untuk memasang aplikasi Android</translation> <translation id="6300177430812514606">Tidak diizinkan menyelesaikan pengiriman atau penerimaan data</translation> <translation id="630065524203833229">K&eluar</translation> @@ -4905,6 +4915,7 @@ <translation id="6340526405444716530">Personalisasi</translation> <translation id="6341850831632289108">Mendeteksi lokasi fisik Anda</translation> <translation id="6342069812937806050">Baru saja</translation> +<translation id="6343003829431264373">Hanya halaman genap</translation> <translation id="6344170822609224263">Mengakses daftar koneksi jaringan</translation> <translation id="6344576354370880196">Printer tersimpan</translation> <translation id="6345418402353744910">Perlu nama pengguna dan sandi Anda untuk proxy <ph name="PROXY" /> agar admin dapat mengonfigurasi jaringan Anda</translation> @@ -5104,7 +5115,6 @@ <translation id="6563469144985748109">Pengelola Anda belum menyetujuinya</translation> <translation id="6568283005472142698">Penelusuran Tab</translation> <translation id="6569911211938664415">Sandi disimpan di Akun Google Anda (<ph name="ACCOUNT" />) agar Anda dapat menggunakannya di perangkat mana pun</translation> -<translation id="6569934958368283244">Orang lain</translation> <translation id="6573497332121198392">Tidak dapat menghapus pintasan</translation> <translation id="657402800789773160">&Muat Ulang Halaman Ini</translation> <translation id="6577284282025554716">Download dibatalkan: <ph name="FILE_NAME" /></translation> @@ -5153,6 +5163,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> berisi konten sensitif atau berbahaya. Minta pemiliknya untuk memperbaiki.</translation> <translation id="6624687053722465643">Legit</translation> <translation id="6628328486509726751"><ph name="WEBRTC_LOG_UPLOAD_TIME" /> yang diupload</translation> +<translation id="6629518321609546825">Masukkan minimal 4 angka</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> menginginkan akses permanen ke sertifikat untuk mengautentikasi dirinya sendiri atas nama Anda.</translation> <translation id="6635362468090274700">Tidak ada yang dapat berbagi dengan Anda sampai perangkat Anda terlihat.<ph name="BR" /><ph name="BR" />Agar perangkat terlihat untuk sementara, buka area status, lalu aktifkan visibilitas Berbagi Langsung.</translation> <translation id="6635944431854494329">Pemilik dapat mengontrol fitur ini dari Setelan > Lanjutan > Otomatis kirimkan data diagnostik dan penggunaan ke Google.</translation> @@ -5191,6 +5202,7 @@ <translation id="6664774537677393800">Terjadi kesalahan saat membuka profil Anda. Harap keluar, lalu masuk lagi.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> kini telah tersedia</translation> <translation id="6671320560732140690">{COUNT,plural, =1{1 alamat}other{# alamat}}</translation> +<translation id="6671497123040790595">Menyiapkan pengelolaan oleh <ph name="MANAGER" /></translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Untuk memulai sinkronisasi, masukkan frasa sandi</translation> <translation id="6675665718701918026">Perangkat penunjuk telah tersambung</translation> @@ -5199,6 +5211,7 @@ <translation id="6680442031740878064">Tersedia: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Beri rating</translation> <translation id="6681668084120808868">Ambil foto</translation> +<translation id="6683087162435654533">&Pulihkan Semua Tab</translation> <translation id="6683948477137300040">Tampilkan pop-up EID perangkat dan kode QR</translation> <translation id="6684827949542560880">Mendownload update terbaru</translation> <translation id="668599234725812620">Buka Google Play</translation> @@ -5768,6 +5781,7 @@ <translation id="7308643132139167865">Bahasa situs</translation> <translation id="7309257895202129721">Tampilkan &kontrol</translation> <translation id="7310598146671372464">Gagal login. Server tidak mendukung jenis enkripsi Kerberos yang ditentukan. Harap hubungi administrator.</translation> +<translation id="7315168816273861089">Aktifkan overlay kontrol jendela</translation> <translation id="7320213904474460808">Jadikan jaringan default</translation> <translation id="7321545336522791733">Server tidak dapat dijangkau</translation> <translation id="7324297612904500502">Forum Beta</translation> @@ -5944,7 +5958,9 @@ <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> berhasil didaftarkan untuk pengelolaan perusahaan.</translation> <translation id="7507207699631365376">Lihat <ph name="BEGIN_LINK" />kebijakan privasi<ph name="END_LINK" /> penyedia ini</translation> <translation id="7507930499305566459">Sertifikat Penanggap Status</translation> +<translation id="7509097596023256288">Menyiapkan pengelolaan</translation> <translation id="7509246181739783082">Verifikasi identitas Anda</translation> +<translation id="7511415964832680006">Jika aktif, situs dapat menggunakan teknik yang melindungi privasi seperti yang ditunjukkan di sini untuk menyediakan konten dan layanannya. Ini termasuk alternatif untuk pelacakan lintas situs. Uji coba lainnya dapat ditambahkan seiring waktu.</translation> <translation id="7513029293694390567">Otomatis login ke situs menggunakan kredensial yang tersimpan. Jika dinonaktifkan, Anda akan dimintai konfirmasi setiap kali login ke situs.</translation> <translation id="7514239104543605883">Salin ke perangkat Anda</translation> <translation id="7514365320538308">Download</translation> @@ -6172,7 +6188,7 @@ <translation id="7753735457098489144">Gagal menginstal karena ruang penyimpanan tidak cukup. Untuk mengosongkan ruang, hapus file dari penyimpanan perangkat.</translation> <translation id="7754347746598978109">Tidak diizinkan menggunakan JavaScript</translation> <translation id="7754704193130578113">Tanyakan lokasi penyimpanan setiap file sebelum mendownload</translation> -<translation id="7755287808199759310">Orang tua dapat membuka blokirnya untukmu</translation> +<translation id="7755287808199759310">Orang tua dapat berhenti memblokirnya untukmu</translation> <translation id="7757592200364144203">Ubah nama perangkat</translation> <translation id="7757787379047923882">Teks dibagikan dari <ph name="DEVICE_NAME" /></translation> <translation id="7758143121000533418">Family Link</translation> @@ -6305,6 +6321,8 @@ <translation id="7876027585589532670">Tidak dapat mengedit pintasan</translation> <translation id="7877451762676714207">Kesalahan server tidak diketahui. Coba lagi, atau hubungi administrator server.</translation> <translation id="7879631849810108578">Pintasan yang disetel: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Jika diaktifkan dan statusnya masih berlaku, Chrome akan menggunakan histori penjelajahan Anda selama 7 hari untuk menentukan grup, atau “kohor”, tempat Anda berada. Pengiklan dapat memilih iklan untuk grup tersebut. Histori penjelajahan Anda tetap bersifat pribadi di perangkat Anda. Uji coba ini hanya aktif di + <ph name="BEGIN_LINK" />beberapa wilayah<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Data lokal akan dihapus saat Anda memulai ulang</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Lihat Akun</translation> @@ -6464,6 +6482,7 @@ <translation id="804786196054284061">Perjanjian Lisensi Pengguna Akhir</translation> <translation id="8048977114738515028">Buat pintasan desktop di perangkat Anda untuk mengakses langsung ke profil ini</translation> <translation id="8049029041626250638">Hubungkan keyboard atau mouse. Jika Anda menggunakan perangkat Bluetooth, pastikan perangkat siap disambungkan.</translation> +<translation id="8049184478152619004">Masukkan Kunci Pembuka Blokir Pribadi (PUK)</translation> <translation id="8049705080247101012">Google telah menandai "<ph name="EXTENSION_NAME" />" sebagai berbahaya dan penginstalannya telah dicegah</translation> <translation id="8049948037269924837">Scroll terbalik touchpad</translation> <translation id="8050038245906040378">Microsoft Commercial Code Signing</translation> @@ -6500,6 +6519,7 @@ <translation id="8082106343289440791">Sambungkan dengan "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Menonaktifkan proses debug ADB akan menyetel ulang <ph name="DEVICE_TYPE" /> ini ke setelan pabrik. Semua akun dan data lokal pengguna akan dihapus.</translation> <translation id="8084114998886531721">Sandi tersimpan</translation> +<translation id="8084510406207562688">&Pulihkan semua tab</translation> <translation id="8086015605808120405">Mengonfigurasi <ph name="PRINTER_NAME" /> ...</translation> <translation id="8086442853986205778">Siapkan <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{File ini dienkripsi. Minta pemiliknya untuk mendekripsi.}other{Beberapa file ini dienkripsi. Minta pemiliknya untuk mendekripsi.}}</translation> @@ -6541,6 +6561,7 @@ <translation id="8119438628456698432">Membuat file log ...</translation> <translation id="811994229154425014">Spasi dua kali untuk mengetik titik</translation> <translation id="8120505434908124087">Instal profil eSIM</translation> +<translation id="812260729110117038">Pengiklan dan penayang dapat mempelajari keefektifan iklan dengan cara yang tidak melacak Anda di berbagai situs.</translation> <translation id="8123590694679414600">Data dienkripsi dengan frasa sandi sinkronisasi Anda pada tanggal <ph name="TIME" />. Data ini tidak mencakup alamat dan metode pembayaran dari Google Pay.</translation> <translation id="81238879832906896">Bunga kuning dan putih</translation> @@ -6578,6 +6599,7 @@ <translation id="816055135686411707">Kesalahan Saat Menyetel Kepercayaan Sertifikat</translation> <translation id="8160775796528709999">Dapatkan teks untuk audio dan video Anda dengan mengaktifkan Teks Otomatis di setelan</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Dengan <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome mengembangkan teknologi baru untuk mengamankan Anda dari pelacakan lintas situs sekaligus mempertahankan web terbuka.</translation> <translation id="8161293209665121583">Mode pembaca untuk halaman web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Pindahkan Tab ke Jendela Baru}other{Pindahkan beberapa Tab ke Jendela Baru}}</translation> <translation id="8165997195302308593">Penerusan port Crostini</translation> @@ -6779,7 +6801,6 @@ <translation id="8393700583063109961">Kirim pesan</translation> <translation id="8397825320644530257">Putuskan hubungan ponsel yang terhubung</translation> <translation id="8398877366907290961">Tetap lanjutkan</translation> -<translation id="8400146488506985033">Kelola orang</translation> <translation id="8401432541486058167">Masukkan PIN yang terkait dengan kartu smart Anda.</translation> <translation id="8404893580027489425">Sensor sidik jari berada di bagian kanan <ph name="DEVICE_TYPE" />. Sentuh sensor menggunakan jari mana pun.</translation> <translation id="8405046151008197676">Dapatkan sorotan dari update terakhir</translation> @@ -6835,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> memerlukan izin Anda untuk dijalankan</translation> <translation id="8466417995783206254">Tab ini diputar dalam mode picture-in-picture.</translation> <translation id="8467326454809944210">Pilih bahasa lain</translation> -<translation id="8470214316007448308">Orang Lain</translation> <translation id="8470513973197838199">Sandi yang tersimpan untuk <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Situs biasanya terhubung ke perangkat USB untuk fitur seperti pencetakan dokumen atau penyimpanan ke perangkat penyimpanan</translation> <translation id="8471959340398751476">Diskon nonaktif. Anda dapat mengaktifkannya di menu sesuaikan</translation> @@ -7022,6 +7042,7 @@ <translation id="8676374126336081632">Hapus masukan</translation> <translation id="8676770494376880701">Pengisi daya rendah terpasang</translation> <translation id="8677212948402625567">Ciutkan semua...</translation> +<translation id="867767487203716855">Update berikutnya</translation> <translation id="8677859815076891398">Tidak ada album. Buat album di <ph name="LINK_BEGIN" />Google Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Tab tidak dikecilkan</translation> <translation id="8678933587484842200">Bagaimana Anda ingin meluncurkan aplikasi ini?</translation> @@ -7110,7 +7131,6 @@ <translation id="87646919272181953">Album Google Foto</translation> <translation id="8767621466733104912">Update Chrome secara otomatis untuk semua pengguna</translation> <translation id="8770406935328356739">Direktori akar ekstensi</translation> -<translation id="8770507190024617908">Kelola Orang</translation> <translation id="8771300903067484968">Latar belakang halaman awal telah direset ke latar belakang default.</translation> <translation id="8773302562181397928">Simpan <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Konfirmasikan Pemulihan</translation> @@ -7371,6 +7391,7 @@ <translation id="9031549947500880805">Cadangkan ke Google Drive. Pulihkan data Anda atau beralih perangkat kapan saja dengan mudah. Cadangan Anda mencakup data aplikasi.</translation> <translation id="9033765790910064284">Tetap lanjutkan</translation> <translation id="9033857511263905942">&Tempel</translation> +<translation id="9035689366572880647">Masukkan PIN saat ini</translation> <translation id="9037640663275993951">Perangkat tidak diizinkan</translation> <translation id="9037818663270399707">Koneksi Anda tidak bersifat pribadi untuk semua traffic jaringan</translation> <translation id="9037965129289936994">Tampilkan Halaman Asli</translation> @@ -7446,6 +7467,7 @@ <translation id="9112748030372401671">Ubah wallpaper Anda</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> mungkin berbahaya. Kirim ke Google untuk dipindai?</translation> <translation id="9112987648460918699">Temukan...</translation> +<translation id="9113240369465613386">Hanya halaman ganjil</translation> <translation id="9114663181201435112">Login dengan mudah</translation> <translation id="9115675100829699941">&Bookmark</translation> <translation id="9116465289595958864">Terakhir diubah</translation> @@ -7600,6 +7622,7 @@ <translation id="991413375315957741">sensor gerakan atau cahaya</translation> <translation id="992032470292211616">Ekstensi, aplikasi, dan tema dapat membahayakan perangkat Anda. Yakin ingin melanjutkan?</translation> <translation id="992256792861109788">Pink</translation> +<translation id="992401651319295351">Tersisa <ph name="RETRIES" /> upaya lagi. Anda tidak akan dapat menggunakan jaringan ini hingga Anda menyiapkan PIN baru.</translation> <translation id="992592832486024913">Nonaktifkan ChromeVox (masukan lisan)</translation> <translation id="992778845837390402">Backup Linux saat ini sedang berlangsung</translation> <translation id="993540765962421562">Penginstalan sedang berlangsung</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index b19fe63..f67ab8e 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">Verks&tjórn</translation> <translation id="4036778507053569103">Reglan sem sótt var frá þjóninum er ógild.</translation> <translation id="4037084878352560732">Hestur</translation> -<translation id="4037889604535939429">Breyta aðila</translation> <translation id="4040753847560036377">Rangt PUK-númer</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Loka síðu}one{Loka síðum}other{Loka síðum}}</translation> <translation id="4044612648082411741">Sláðu inn aðgangsorð vottorðs</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Stilltu Chrome sem sjálfgefinn vafra</translation> <translation id="5711983031544731014">Ekki tókst að opna. Sláðu inn aðgangsorðið þitt.</translation> <translation id="5712153969432126546">Stundum birta vefsvæði PDF-skjöl, t.d. fylgiskjöl, samninga og eyðublöð</translation> -<translation id="5712323955984474772">Næsta uppfærsla</translation> <translation id="5715711091495208045">Miðlari viðbótar: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Sjálfgefnar leitarvélar</translation> <translation id="5719637365829998022">QR-kóði var skannaður inn.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Umsjónarmaðurinn hefur enn ekki samþykkt þetta</translation> <translation id="6568283005472142698">Flipaleit</translation> <translation id="6569911211938664415">Aðgangsorð eru vistuð á Google reikningnum þínum (<ph name="ACCOUNT" />) til að þú getir notað þau í hvaða tæki sem er</translation> -<translation id="6569934958368283244">Annað fólk</translation> <translation id="6573497332121198392">Ekki er hægt að fjarlægja flýtileið</translation> <translation id="657402800789773160">Endu&rhlaða þessa síðu</translation> <translation id="6577284282025554716">Hætt við niðurhal: <ph name="FILE_NAME" /></translation> @@ -6803,7 +6800,6 @@ <translation id="8393700583063109961">Senda skilaboð</translation> <translation id="8397825320644530257">Aftengja tengdan síma</translation> <translation id="8398877366907290961">Halda samt áfram</translation> -<translation id="8400146488506985033">Vinna með einstaklinga</translation> <translation id="8401432541486058167">Sláðu inn PIN-númerið fyrir snjallkortið þitt.</translation> <translation id="8404893580027489425">Fingrafaralesarinn er hægra megin á <ph name="DEVICE_TYPE" />. Snertu hann laust með fingrinum.</translation> <translation id="8405046151008197676">Fá það helsta úr nýjustu uppfærslunni</translation> @@ -6859,7 +6855,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> þarf heimild þína til að keyra</translation> <translation id="8466417995783206254">Þessi flipi spilar myndskeið í stillingunni „mynd í mynd“.</translation> <translation id="8467326454809944210">Velja annað tungumál</translation> -<translation id="8470214316007448308">Annað fólk</translation> <translation id="8470513973197838199">Vistuð aðgangsorð fyrir <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Vefsvæði tengjast yfirleitt USB-tækjum til að nota eiginleika eins og að prenta skjal eða vista í geymslutæki</translation> <translation id="8471959340398751476">Afslættir eru ekki virkir. Þú getur virkjað þá í sérsniðsvalmynd</translation> @@ -7046,6 +7041,7 @@ <translation id="8676374126336081632">Hreinsa innslátt</translation> <translation id="8676770494376880701">Afllítið hleðslutæki tengt</translation> <translation id="8677212948402625567">Minnka allt...</translation> +<translation id="867767487203716855">Næsta uppfærsla</translation> <translation id="8677859815076891398">Engin albúm. Búðu til albúm í <ph name="LINK_BEGIN" />Google myndum<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Flipar minnka ekki</translation> <translation id="8678933587484842200">Hvernig á þetta forrit að opnast?</translation> @@ -7134,7 +7130,6 @@ <translation id="87646919272181953">Albúm í Google myndum</translation> <translation id="8767621466733104912">Uppfæra Chrome sjálfkrafa fyrir alla notendur</translation> <translation id="8770406935328356739">Rótarmappa viðbóta</translation> -<translation id="8770507190024617908">Vinna með einstaklinga</translation> <translation id="8771300903067484968">Bakgrunnur upphafssíðu hefur verið endurstilltur á sjálfgefinn bakgrunn.</translation> <translation id="8773302562181397928">Vista <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Staðfesta endurheimt</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index a504f1c..0e39512b 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -700,6 +700,7 @@ <translation id="173628468822554835">Ok. Per impostazione predefinita, i nuovi siti che visiti non ti invieranno notifiche.</translation> <translation id="1736419249208073774">Esplora</translation> <translation id="1737968601308870607">Segnala bug</translation> +<translation id="1739684185846730053">Le prove di Privacy Sandbox sono ancora in fase di sviluppo attivo e sono disponibili soltanto in alcune aree geografiche. Per il momento i siti possono provare Privacy Sandbox continuando a usare le attuali tecnologie web quali i cookie di terze parti.</translation> <translation id="174123615272205933">Personalizzati</translation> <translation id="1741314857973421784">Continua</translation> <translation id="1743570585616704562">Non riconosciuta</translation> @@ -1123,6 +1124,7 @@ <translation id="217576141146192373">Impossibile aggiungere la stampante. Controlla la configurazione della stampante e riprova.</translation> <translation id="2177950615300672361">Scheda di navigazione in incognito: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Compromesso CA</translation> +<translation id="2179416702468739594">Ricerca di profili disponibili in corso… Questa operazione potrebbe causare la disconnessione della rete mobile per alcuni minuti.</translation> <translation id="2182058453334755893">Copia negli appunti eseguita</translation> <translation id="2184515124301515068">Consenti a Chrome di scegliere quando i siti possono riprodurre audio (opzione consigliata)</translation> <translation id="2186711480981247270">Pagina condivisa da un altro dispositivo</translation> @@ -1388,6 +1390,7 @@ <translation id="2469375675106140201">Personalizza controllo ortografico</translation> <translation id="247051149076336810">URL condivisione file</translation> <translation id="2470702053775288986">Estensioni non supportate disattivate</translation> +<translation id="2470939964922472929">Hai inserito troppe volte un PIN non corretto. Per configurarne uno nuovo, inserisci il PUK (codice personale di sblocco) di 8 cifre fornito dal tuo operatore.</translation> <translation id="2471469610750100598">Nero (predefinito)</translation> <translation id="2471506181342525583">Accesso alla posizione consentito</translation> <translation id="2473195200299095979">Traduci questa pagina</translation> @@ -1684,6 +1687,7 @@ <translation id="2785873697295365461">Descrittori di file</translation> <translation id="2787354132612937472">-</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Numero del gruppo</translation> <translation id="2789486458103222910">OK</translation> <translation id="2791529110887957050">Rimuovere Linux</translation> <translation id="2791952154587244007">Si è verificato un errore. Impossibile avviare automaticamente l'applicazione kiosk su questo dispositivo.</translation> @@ -1985,6 +1989,7 @@ <translation id="310671807099593501">Il sito sta usando il Bluetooth</translation> <translation id="3108931485517391283">Impossibile ricevere</translation> <translation id="3109724472072898302">Compresso</translation> +<translation id="3113592018909187986">Hai ancora 1 tentativo a disposizione. Non potrai utilizzare questa rete finché non configuri un nuovo PIN.</translation> <translation id="311394601889664316">Non consentire ai siti di modificare file o cartelle sul dispositivo</translation> <translation id="3115147772012638511">In attesa di elaborazione cache...</translation> <translation id="3115580024857770654">Comprimi tutto</translation> @@ -2273,6 +2278,7 @@ <translation id="3440663250074896476">Altre azioni per <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Schermo</translation> <translation id="3441663102605358937">Accedi di nuovo all'account <ph name="ACCOUNT" /> per effettuare la verifica</translation> +<translation id="3444641828375597683">Gli inserzionisti e i publisher possono usare la tecnologia FLoC, descritta più avanti in questa pagina.</translation> <translation id="3445047461171030979">Risposte rapide dell'Assistente Google</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> min</translation> <translation id="3445925074670675829">Dispositivo USB-C</translation> @@ -2855,7 +2861,7 @@ <translation id="4035758313003622889">&Task Manager</translation> <translation id="4036778507053569103">La norma scaricata dal server non è valida.</translation> <translation id="4037084878352560732">Cavallo</translation> -<translation id="4037889604535939429">Modifica persona</translation> +<translation id="4040753847560036377">PUK errato</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Esci dalla pagina}other{Esci dalle pagine}}</translation> <translation id="4044612648082411741">Inserisci la password del certificato</translation> <translation id="4044708573046946214">Password del blocco schermo</translation> @@ -3064,6 +3070,7 @@ <translation id="4297813521149011456">Rotazione del display</translation> <translation id="4299022904780065004">Nuova finestra di navigazione in &incognito</translation> <translation id="4301671483919369635">Questa pagina è autorizzata a modificare i file</translation> +<translation id="4302605047395093221">Chiunque utilizzi questo dispositivo dovrà inserire il PIN per connettersi a questa rete mobile</translation> <translation id="4303079906735388947">Configura un nuovo PIN per il token di sicurezza</translation> <translation id="4305402730127028764">Copia su <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Cambia</translation> @@ -3248,6 +3255,7 @@ <translation id="4510479820467554003">Elenco account genitore</translation> <translation id="4510614391273086606">È in corso il ripristino dello stato di backup delle app e dei file Linux.</translation> <translation id="451102079304155829">carrelli</translation> +<translation id="4513275008300099962">Disattiva overlay "window-controls"</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="451407183922382411">Con tecnologia <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Attiva/disattiva il video per riprodurre o mettere in pausa</translation> @@ -4320,7 +4328,6 @@ <translation id="5709557627224531708">Imposta Chrome come browser predefinito</translation> <translation id="5711983031544731014">Impossibile sbloccare. Inserisci la password.</translation> <translation id="5712153969432126546">A volte i siti pubblicano PDF, come documenti, contratti e moduli</translation> -<translation id="5712323955984474772">Prossimo aggiornamento</translation> <translation id="5715711091495208045">Plug-in Broker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motori di ricerca predefiniti</translation> <translation id="5719637365829998022">Il codice QR è stato scansionato.</translation> @@ -4592,10 +4599,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - Dispositivo USB collegato</translation> <translation id="6028117231645531007">Aggiungi impronta</translation> <translation id="6031600495088157824">Opzioni di immissione nella barra degli strumenti</translation> +<translation id="6032091552407840792">Questa prova è attiva soltanto in <ph name="BEGIN_LINK" />alcune aree geografiche<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Per consentire a un'estensione di accedere a questo sito, fai clic sull'estensione.</translation> <translation id="6032912588568283682">File system</translation> <translation id="603539183851330738">Pulsante per annullare la correzione automatica. Ripristina <ph name="TYPED_WORD" />. Premi Invio per attivare o Esc per ignorare.</translation> <translation id="6038929619733116134">Blocca se il sito mostra annunci invasivi o fuorvianti</translation> +<translation id="603895874132768835">Non potrai utilizzare questa rete finché non configuri un nuovo PIN</translation> <translation id="6039651071822577588">Formato del dizionario delle proprietà di rete non corretto</translation> <translation id="6040143037577758943">Chiudi</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Il servizio di geolocalizzazione di Google utilizza fonti quali reti mobili, Wi-Fi e sensori per stabilire la posizione del tuo dispositivo.<ph name="END_PARAGRAPH1" /> @@ -4843,6 +4852,7 @@ <translation id="6292699686837272722">Le schede si riducono a una larghezza media</translation> <translation id="6295158916970320988">Tutti i siti</translation> <translation id="6295855836753816081">Salvataggio in corso...</translation> +<translation id="6296410173147755564">PUK non valido</translation> <translation id="6298962879096096191">Utilizza Google Play per installare le app Android</translation> <translation id="6300177430812514606">Non possono terminare di inviare o ricevere dati</translation> <translation id="630065524203833229">E&sci</translation> @@ -4889,6 +4899,7 @@ <translation id="6340526405444716530">Personalizzazione</translation> <translation id="6341850831632289108">Rilevamento della posizione fisica dell'utente</translation> <translation id="6342069812937806050">In questo momento</translation> +<translation id="6343003829431264373">Solo pagine pari</translation> <translation id="6344170822609224263">Accesso all'elenco di connessioni di rete</translation> <translation id="6344576354370880196">Stampanti salvate</translation> <translation id="6345418402353744910">È necessario indicare il nome utente e la password per il proxy <ph name="PROXY" /> affinché l'amministratore possa configurare la tua rete</translation> @@ -5088,7 +5099,6 @@ <translation id="6563469144985748109">Il tuo gestore non ha ancora approvato la richiesta</translation> <translation id="6568283005472142698">Ricerca nelle schede</translation> <translation id="6569911211938664415">Le password vengono salvate nel tuo Account Google (<ph name="ACCOUNT" />) in modo che tu possa usarle su qualsiasi dispositivo</translation> -<translation id="6569934958368283244">Altre persone</translation> <translation id="6573497332121198392">Impossibile rimuovere la scorciatoia</translation> <translation id="657402800789773160">&Ricarica questa pagina</translation> <translation id="6577284282025554716">Download annullato: <ph name="FILE_NAME" /></translation> @@ -5137,6 +5147,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> include contenuti sensibili o pericolosi. Chiedi al proprietario di risolvere il problema.</translation> <translation id="6624687053722465643">Dolcezza</translation> <translation id="6628328486509726751">Data/ora caricamento: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Inserisci almeno 4 cifre</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> desidera un accesso permanente a un certificato per eseguire l'autenticazione a tuo nome.</translation> <translation id="6635362468090274700">Nessuno può condividere contenuti con te finché non ti rendi visibile.<ph name="BR" /><ph name="BR" />Per renderti visibile temporaneamente, apri l'area di stato e attiva la funzionalità Visibilità nelle vicinanze.</translation> <translation id="6635944431854494329">Il proprietario può controllare questa funzionalità dalla sezione Impostazioni > Avanzate > Invia automaticamente a Google dati di diagnostica e utilizzo.</translation> @@ -5175,6 +5186,7 @@ <translation id="6664774537677393800">Si è verificato un problema durante l'apertura del profilo. Esci e accedi di nuovo.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> è ora disponibile</translation> <translation id="6671320560732140690">{COUNT,plural, =1{un indirizzo}other{# indirizzi}}</translation> +<translation id="6671497123040790595">Impostazione della gestione da parte di <ph name="MANAGER" /> in corso…</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Per avviare la sincronizzazione devi inserire la tua passphrase</translation> <translation id="6675665718701918026">Dispositivo di puntamento collegato</translation> @@ -5183,6 +5195,7 @@ <translation id="6680442031740878064">Disponibile: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Velocità</translation> <translation id="6681668084120808868">Scatta foto</translation> +<translation id="6683087162435654533">Ripristina tutt&e le schede</translation> <translation id="6683948477137300040">Mostra EID dispositivo e popup codice QR</translation> <translation id="6684827949542560880">Download dell'ultimo aggiornamento</translation> <translation id="668599234725812620">Apri Google Play</translation> @@ -5752,6 +5765,7 @@ <translation id="7308643132139167865">Lingue dei siti web</translation> <translation id="7309257895202129721">Visualizza &comandi</translation> <translation id="7310598146671372464">Impossibile accedere. Il server non supporta i tipi di crittografia Kerberos specificati. Contatta l'amministratore.</translation> +<translation id="7315168816273861089">Attiva overlay "window-controls"</translation> <translation id="7320213904474460808">Scegli rete predefinita</translation> <translation id="7321545336522791733">Server non raggiungibile</translation> <translation id="7324297612904500502">Forum per la versione Beta</translation> @@ -5928,7 +5942,9 @@ <translation id="7506541170099744506">Il dispositivo <ph name="DEVICE_TYPE" /> è stato registrato correttamente per la gestione aziendale.</translation> <translation id="7507207699631365376">Vedi le <ph name="BEGIN_LINK" />norme sulla privacy<ph name="END_LINK" /> del fornitore di servizi</translation> <translation id="7507930499305566459">Certificato risponditore stato</translation> +<translation id="7509097596023256288">Impostazione della gestione in corso…</translation> <translation id="7509246181739783082">Verifica la tua identità</translation> +<translation id="7511415964832680006">Se attivi questa funzionalità, i siti potrebbero usare le tecniche che garantiscono la tutela della privacy mostrate qui per fornire i propri contenuti e servizi. Sono incluse alternative al tracciamento tra siti. Nel tempo potrebbero essere aggiunte altre prove.</translation> <translation id="7513029293694390567">Accedi automaticamente ai siti web utilizzando credenziali memorizzate. Se la funzione non è attiva, ti viene chiesta la conferma prima di ogni accesso ai siti web.</translation> <translation id="7514239104543605883">Copia sul tuo dispositivo</translation> <translation id="7514365320538308">Scarica</translation> @@ -6289,6 +6305,8 @@ <translation id="7876027585589532670">Impossibile modificare la scorciatoia</translation> <translation id="7877451762676714207">Errore del server sconosciuto. Riprova o contatta l'amministratore del server.</translation> <translation id="7879631849810108578">Scorciatoia impostata: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Quando la funzionalità è attivata e lo stato è attivo, Chrome usa la tua cronologia di navigazione di 7 giorni per definire un gruppo, o "coorte", di cui fai parte. Gli inserzionisti possono selezionare annunci per il gruppo. La cronologia di navigazione rimane privata sul tuo dispositivo. Questa prova è attiva soltanto in + <ph name="BEGIN_LINK" />alcune aree geografiche<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">I dati locali verranno eliminati al riavvio</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Visualizza account</translation> @@ -6448,6 +6466,7 @@ <translation id="804786196054284061">Contratto di licenza con l'utente finale</translation> <translation id="8048977114738515028">Crea un collegamento sul desktop del dispositivo per accedere direttamente al profilo</translation> <translation id="8049029041626250638">Collega una tastiera o un mouse. Se usi dispositivi Bluetooth, assicurati che siano pronti per essere accoppiati.</translation> +<translation id="8049184478152619004">Inserisci PUK (codice personale di sblocco)</translation> <translation id="8049705080247101012">Google ha contrassegnato l'estensione "<ph name="EXTENSION_NAME" />" come dannosa ed è stata impedita l'installazione</translation> <translation id="8049948037269924837">Scorrimento invertito del touchpad</translation> <translation id="8050038245906040378">Firma codice commerciale Microsoft</translation> @@ -6484,6 +6503,7 @@ <translation id="8082106343289440791">Vuoi eseguire l'accoppiamento con "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">La disattivazione del debug ADB ripristinerà le impostazioni di fabbrica di questo <ph name="DEVICE_TYPE" />. Tutti gli account utente e i dati locali verranno resettati.</translation> <translation id="8084114998886531721">Password salvata</translation> +<translation id="8084510406207562688">Ripristina tutt&e le schede</translation> <translation id="8086015605808120405">Configurazione di <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">Configura <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Questo file è criptato. Chiedi al proprietario di decriptarlo.}other{Alcuni di questi file sono criptati. Chiedi al proprietario di decriptarli.}}</translation> @@ -6525,6 +6545,7 @@ <translation id="8119438628456698432">Generazione dei file di log…</translation> <translation id="811994229154425014">Doppio spazio per digitare il punto</translation> <translation id="8120505434908124087">Installa profilo eSIM</translation> +<translation id="812260729110117038">Gli inserzionisti e i publisher possono esaminare l'efficacia degli annunci senza tracciarti tra i siti.</translation> <translation id="8123590694679414600">I dati sono stati criptati con la tua passphrase di sincronizzazione il giorno <ph name="TIME" />. Non sono inclusi i metodi di pagamento e gli indirizzi di Google Pay.</translation> <translation id="81238879832906896">Fiore bianco e giallo</translation> <translation id="8124313775439841391">ONC gestito</translation> @@ -6561,6 +6582,7 @@ <translation id="816055135686411707">Errore durante l'impostazione dell'attendibilità del certificato</translation> <translation id="8160775796528709999">Aggiungi sottotitoli ai tuoi contenuti audio e video attivando la funzionalità Sottotitoli in tempo reale nelle impostazioni</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Con <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome sviluppa nuove tecnologie che ti tutelano dai meccanismi di tracciamento tra siti salvaguardando al contempo il Web aperto.</translation> <translation id="8161293209665121583">Modalità Reader per le pagine web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Sposta scheda in una nuova finestra}other{Sposta schede in una nuova finestra}}</translation> <translation id="8165997195302308593">Port forwarding su Crostini</translation> @@ -6762,7 +6784,6 @@ <translation id="8393700583063109961">Invia messaggio</translation> <translation id="8397825320644530257">Disconnettere un telefono connesso</translation> <translation id="8398877366907290961">Procedi comunque</translation> -<translation id="8400146488506985033">Gestisci utenti</translation> <translation id="8401432541486058167">Specifica il PIN associato alla tua smart card.</translation> <translation id="8404893580027489425">Il sensore di impronte digitali si trova sul lato destro del tuo <ph name="DEVICE_TYPE" />. Toccalo leggermente con un dito.</translation> <translation id="8405046151008197676">Scopri le novità principali dell'ultimo aggiornamento</translation> @@ -6818,7 +6839,6 @@ <translation id="8465444703385715657">Per poter eseguire <ph name="PLUGIN_NAME" /> è necessaria la tua autorizzazione</translation> <translation id="8466417995783206254">In questa scheda è in corso la riproduzione di un video in modalità Picture in picture.</translation> <translation id="8467326454809944210">Seleziona un'altra lingua</translation> -<translation id="8470214316007448308">Altre persone</translation> <translation id="8470513973197838199">Password salvate per il sito <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">In genere, i siti si connettono a dispositivi USB per funzionalità come la stampa di un documento o il salvataggio su un dispositivo di archiviazione</translation> <translation id="8471959340398751476">Gli sconti sono disattivati. Puoi attivarli nel menu Personalizza</translation> @@ -7005,6 +7025,7 @@ <translation id="8676374126336081632">Cancella testo inserito</translation> <translation id="8676770494376880701">Caricabatterie a basso consumo collegato</translation> <translation id="8677212948402625567">Comprimi tutto...</translation> +<translation id="867767487203716855">Prossimo aggiornamento</translation> <translation id="8677859815076891398">Nessun album. Crea un album in<ph name="LINK_BEGIN" />Google Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Le schede non si riducono</translation> <translation id="8678933587484842200">Come vuoi che venga lanciata questa applicazione?</translation> @@ -7093,7 +7114,6 @@ <translation id="87646919272181953">Album di Google Foto</translation> <translation id="8767621466733104912">Aggiorna automaticamente Chrome per tutti gli utenti</translation> <translation id="8770406935328356739">Directory principale dell'estensione</translation> -<translation id="8770507190024617908">Gestisci utenti</translation> <translation id="8771300903067484968">Lo sfondo della pagina iniziale è stato reimpostato allo sfondo predefinito.</translation> <translation id="8773302562181397928">Salva <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Conferma il ripristino</translation> @@ -7354,6 +7374,7 @@ <translation id="9031549947500880805">Effettua il backup su Google Drive. Ripristina facilmente i tuoi dati o cambia dispositivo in qualsiasi momento. La copia di backup include i dati delle app.</translation> <translation id="9033765790910064284">Continua comunque</translation> <translation id="9033857511263905942">&Incolla</translation> +<translation id="9035689366572880647">Inserisci il PIN attuale</translation> <translation id="9037640663275993951">Il dispositivo non è consentito</translation> <translation id="9037818663270399707">La connessione non è privata per tutto il traffico di rete</translation> <translation id="9037965129289936994">Mostra originale</translation> @@ -7429,6 +7450,7 @@ <translation id="9112748030372401671">Modifica dello sfondo</translation> <translation id="9112786533191410418">Il file <ph name="FILE_NAME" /> potrebbe essere pericoloso. Inviarlo a Google per la scansione?</translation> <translation id="9112987648460918699">Trova...</translation> +<translation id="9113240369465613386">Solo pagine dispari</translation> <translation id="9114663181201435112">Accedi facilmente</translation> <translation id="9115675100829699941">&Preferiti</translation> <translation id="9116465289595958864">Ultima modifica</translation> @@ -7583,6 +7605,7 @@ <translation id="991413375315957741">sensori di movimento o della luce</translation> <translation id="992032470292211616">Estensioni, app e temi possono danneggiare il tuo dispositivo. Vuoi continuare?</translation> <translation id="992256792861109788">Rosa</translation> +<translation id="992401651319295351">Hai ancora <ph name="RETRIES" /> tentativi a disposizione. Non potrai utilizzare questa rete finché non configuri un nuovo PIN.</translation> <translation id="992592832486024913">Disattiva ChromeVox (lettura vocale)</translation> <translation id="992778845837390402">È in corso il backup di Linux</translation> <translation id="993540765962421562">Installazione in corso</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 4593692e..4f9e99b4 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&מנהל המשימות</translation> <translation id="4036778507053569103">המדיניות שהורדה מהשרת אינה חוקית.</translation> <translation id="4037084878352560732">סוס</translation> -<translation id="4037889604535939429">עריכת פרטי משתמש</translation> <translation id="4040753847560036377">ה-PUK שגוי</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{יציאה מהדף}two{יציאה מהדפים}many{יציאה מהדפים}other{יציאה מהדפים}}</translation> <translation id="4044612648082411741">יש להזין את סיסמת האישור</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">הגדרת Chrome כדפדפן ברירת המחדל</translation> <translation id="5711983031544731014">לא ניתן לבטל את הנעילה. יש להזין את הסיסמה שלך.</translation> <translation id="5712153969432126546">לפעמים אתרים מפרסמים קובצי PDF, כמו מסמכים, חוזים וטפסים</translation> -<translation id="5712323955984474772">העדכון הבא</translation> <translation id="5715711091495208045">מתווך פלאגין: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">מנועי חיפוש המוגדרים כברירת מחדל</translation> <translation id="5719637365829998022">קוד ה-QR נסרק.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">המנהל שלך עדיין לא אישר זאת</translation> <translation id="6568283005472142698">חיפוש בכרטיסיות</translation> <translation id="6569911211938664415">סיסמאות נשמרות בחשבון Google (<ph name="ACCOUNT" />) כדי לאפשר לך להשתמש בהן בכל המכשירים</translation> -<translation id="6569934958368283244">אנשים אחרים</translation> <translation id="6573497332121198392">לא ניתן להסיר את קיצור הדרך</translation> <translation id="657402800789773160">&טעינת דף זה מחדש</translation> <translation id="6577284282025554716">ההורדה בוטלה: <ph name="FILE_NAME" /></translation> @@ -6805,7 +6802,6 @@ <translation id="8393700583063109961">שליחת הודעה</translation> <translation id="8397825320644530257">ניתוק הטלפון המחובר</translation> <translation id="8398877366907290961">להמשיך בכל זאת</translation> -<translation id="8400146488506985033">ניהול משתמשים</translation> <translation id="8401432541486058167">עליך לציין את קוד האימות המשויך לכרטיס החכם שלך.</translation> <translation id="8404893580027489425">חיישן טביעות האצבע מופיע בצד ימין של מכשיר <ph name="DEVICE_TYPE" /> שלך. יש לגעת בו בעדינות באחת האצבעות.</translation> <translation id="8405046151008197676">ריכזנו עבורך את הפרטים החשובים לגבי העדכון האחרון</translation> @@ -6861,7 +6857,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> צריך אישור ממך כדי לפעול</translation> <translation id="8466417995783206254">בכרטיסייה הזו מופעל סרטון במצב 'תמונה בתוך תמונה'.</translation> <translation id="8467326454809944210">בחירת שפה אחרת</translation> -<translation id="8470214316007448308">אנשים אחרים</translation> <translation id="8470513973197838199">סיסמאות שנשמרו בשביל <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">אתרים מתחברים בדרך כלל להתקני USB כדי לתמוך בתכונות כמו הדפסת מסמכים או שמירה בהתקן אחסון</translation> <translation id="8471959340398751476">ההנחות כבויות. ניתן להפעיל אותן בתפריט ההתאמה האישית</translation> @@ -7048,6 +7043,7 @@ <translation id="8676374126336081632">ניקוי קלט</translation> <translation id="8676770494376880701">חובר מטען בעל מתח נמוך</translation> <translation id="8677212948402625567">כיווץ הכול...</translation> +<translation id="867767487203716855">העדכון הבא</translation> <translation id="8677859815076891398">אין אלבומים. ניתן ליצור אלבום ב<ph name="LINK_BEGIN" />תמונות Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">הכרטיסיות לא יתכווצו</translation> <translation id="8678933587484842200">איך להפעיל את האפליקציה הזו?</translation> @@ -7136,7 +7132,6 @@ <translation id="87646919272181953">אלבום של Google Photos</translation> <translation id="8767621466733104912">עדכון אוטומטי של Chrome אצל כל המשתמשים</translation> <translation id="8770406935328356739">ספריית הבסיס של תוסף</translation> -<translation id="8770507190024617908">ניהול אנשים</translation> <translation id="8771300903067484968">רקע דף הפתיחה עבר איפוס לרקע ברירת המחדל.</translation> <translation id="8773302562181397928">שמירת <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">אישור השחזור</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 54076c2..992dbfd 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -700,6 +700,7 @@ <translation id="173628468822554835">今後、新しくアクセスしたサイトでは、デフォルトで通知が表示されなくなります。</translation> <translation id="1736419249208073774">詳しく見る</translation> <translation id="1737968601308870607">バグを報告</translation> +<translation id="1739684185846730053">プライバシー サンドボックスの試用版はまだ開発段階にあり、一部の地域でのみご利用可能です。このため、現時点では多くのサイトでサードパーティ Cookie など現行のウェブ技術を引き続き使用しつつ、プライバシー サンドボックスが試験的に導入されると考えられます。</translation> <translation id="174123615272205933">カスタム</translation> <translation id="1741314857973421784">次へ</translation> <translation id="1743570585616704562">認識されませんでした</translation> @@ -1123,6 +1124,7 @@ <translation id="217576141146192373">プリンタを追加できません。プリンタの設定を確認して、もう一度お試しください。</translation> <translation id="2177950615300672361">シークレット タブ: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">認証局が侵害された</translation> +<translation id="2179416702468739594">使用可能なプロファイルを検出しています。これにより、モバイル ネットワークが数分切断されることがあります。</translation> <translation id="2182058453334755893">クリップボードにコピーされました</translation> <translation id="2184515124301515068">サイトで音声が再生される可能性がある場合、Chrome で自動的に許可またはブロックする(推奨)</translation> <translation id="2186711480981247270">別のデバイスから共有されたページ</translation> @@ -1388,6 +1390,7 @@ <translation id="2469375675106140201">スペルチェックをカスタマイズ</translation> <translation id="247051149076336810">ファイル共有 URL</translation> <translation id="2470702053775288986">サポートされていない拡張機能が無効</translation> +<translation id="2470939964922472929">間違った PIN が繰り返し入力されました。新しい PIN を設定するには、携帯通信会社が提供する 8 桁の PIN ブロック解除キー(PUK)を入力してください。</translation> <translation id="2471469610750100598">黒(デフォルト)</translation> <translation id="2471506181342525583">位置情報へのアクセスが許可されています</translation> <translation id="2473195200299095979">このページを翻訳</translation> @@ -1684,6 +1687,7 @@ <translation id="2785873697295365461">ファイル記述子</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">グループ番号</translation> <translation id="2789486458103222910">OK</translation> <translation id="2791529110887957050">Linux の削除</translation> <translation id="2791952154587244007">エラーが発生しました。キオスク アプリケーションをこのデバイスで自動的に起動することはできません。</translation> @@ -1985,6 +1989,7 @@ <translation id="310671807099593501">サイトで Bluetooth が使用されています</translation> <translation id="3108931485517391283">受信できません</translation> <translation id="3109724472072898302">折りたたみ表示中</translation> +<translation id="3113592018909187986">入力できるのはあと 1 回です。新しい PIN を設定するまでこのネットワークは使用できません。</translation> <translation id="311394601889664316">サイトにデバイス上のファイルやフォルダの編集を許可しない</translation> <translation id="3115147772012638511">キャッシュを待機しています...</translation> <translation id="3115580024857770654">すべて折りたたむ</translation> @@ -2273,6 +2278,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" /> に対するその他の操作</translation> <translation id="3441653493275994384">画面</translation> <translation id="3441663102605358937">もう一度 <ph name="ACCOUNT" /> にログインしてこのアカウントの確認を行ってください</translation> +<translation id="3444641828375597683">広告主やパブリッシャーは FLoC を使用できます。FLoC についてはこのページで後述します。</translation> <translation id="3445047461171030979">Google アシスタントのクイック アンサー</translation> <translation id="3445288400492335833"><ph name="MINUTES" />分</translation> <translation id="3445925074670675829">USB-C デバイス</translation> @@ -2855,7 +2861,7 @@ <translation id="4035758313003622889">タスク マネージャ(&T)</translation> <translation id="4036778507053569103">サーバーからダウンロードされたポリシーが無効です。</translation> <translation id="4037084878352560732">馬</translation> -<translation id="4037889604535939429">画像と名前を設定</translation> +<translation id="4040753847560036377">PUK が正しくありません</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ページを離れる}other{ページを離れる}}</translation> <translation id="4044612648082411741">証明書のパスワードを入力してください</translation> <translation id="4044708573046946214">画面ロックのパスワード</translation> @@ -3064,6 +3070,7 @@ <translation id="4297813521149011456">ディスプレイの回転</translation> <translation id="4299022904780065004">新しいシークレット ウィンドウ(&I)</translation> <translation id="4301671483919369635">このページはファイルの編集が許可されています</translation> +<translation id="4302605047395093221">このデバイスでこのモバイル ネットワークに接続するには、PIN を入力する必要があります。</translation> <translation id="4303079906735388947">セキュリティ キーの新しい PIN を設定します</translation> <translation id="4305402730127028764">「<ph name="DEVICE_NAME" />」にコピー</translation> <translation id="4305817255990598646">切り替え</translation> @@ -3248,6 +3255,7 @@ <translation id="4510479820467554003">保護者のアカウント リスト</translation> <translation id="4510614391273086606">Linux のファイルとアプリをバックアップした状態に復元しています。</translation> <translation id="451102079304155829">カート</translation> +<translation id="4513275008300099962">ウィンドウ コントロールのオーバーレイを無効にする</translation> <translation id="4513946894732546136">フィードバック</translation> <translation id="451407183922382411">Powered by <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">動画の再生と一時停止を切り替え</translation> @@ -4320,7 +4328,6 @@ <translation id="5709557627224531708">Chrome を既定のブラウザに設定する</translation> <translation id="5711983031544731014">ロックを解除できません。パスワードを入力してください。</translation> <translation id="5712153969432126546">一部のサイトはドキュメント、契約、フォームなどの PDF を一般に提供しています</translation> -<translation id="5712323955984474772">次の更新</translation> <translation id="5715711091495208045">プラグイン ブローカー: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">既定の検索エンジン</translation> <translation id="5719637365829998022">QR コードをスキャンしました。</translation> @@ -4592,10 +4599,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB デバイスに接続されています</translation> <translation id="6028117231645531007">指紋を追加</translation> <translation id="6031600495088157824">ツールバーの入力オプション</translation> +<translation id="6032091552407840792">この試用版は、<ph name="BEGIN_LINK" />一部の地域<ph name="END_LINK" />でのみ使用できます。</translation> <translation id="6032715498678347852">このサイトに拡張機能がアクセスするのを許可するには、クリックしてください。</translation> <translation id="6032912588568283682">ファイル システム</translation> <translation id="603539183851330738">自動修正を元に戻すボタン。「<ph name="TYPED_WORD" />」に戻します。戻す場合は Enter キー、修正されたままにする場合は Esc キーを押してください。</translation> <translation id="6038929619733116134">煩わしい広告や誤解を招く広告が表示されるサイトの場合にブロックします</translation> +<translation id="603895874132768835">新しい PIN を設定するまでこのネットワークは使用できません。</translation> <translation id="6039651071822577588">ネットワーク プロパティ辞書が不正です</translation> <translation id="6040143037577758943">閉じる</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google の位置情報サービスは、Wi‑Fi やモバイル ネットワーク、センサーなどのソースからお使いのデバイスの現在地を推定します。<ph name="END_PARAGRAPH1" /> @@ -4843,6 +4852,7 @@ <translation id="6292699686837272722">タブを中サイズまで縮小</translation> <translation id="6295158916970320988">すべてのサイト</translation> <translation id="6295855836753816081">保存しています...</translation> +<translation id="6296410173147755564">無効な PUK です</translation> <translation id="6298962879096096191">Google Play を使用して Android アプリをインストールします</translation> <translation id="6300177430812514606">データの送受信の完了を許可しないサイト</translation> <translation id="630065524203833229">終了(&X)</translation> @@ -4889,6 +4899,7 @@ <translation id="6340526405444716530">カスタマイズ</translation> <translation id="6341850831632289108">現在地を検出する</translation> <translation id="6342069812937806050">たった今</translation> +<translation id="6343003829431264373">偶数のページのみ</translation> <translation id="6344170822609224263">ネットワーク接続のリストにアクセスする</translation> <translation id="6344576354370880196">保存済みのプリンタ</translation> <translation id="6345418402353744910">管理者がネットワークを設定できるよう、プロキシ「<ph name="PROXY" />」のユーザー名とパスワードを指定してください</translation> @@ -5088,7 +5099,6 @@ <translation id="6563469144985748109">管理者がまだサイトを開くことを許可していません</translation> <translation id="6568283005472142698">タブ検索</translation> <translation id="6569911211938664415">パスワードは Google アカウント(<ph name="ACCOUNT" />)に保存されるため、どのデバイスからでも使用できます</translation> -<translation id="6569934958368283244">他のユーザー</translation> <translation id="6573497332121198392">ショートカットの削除はできません</translation> <translation id="657402800789773160">ページを再読み込み(&R)</translation> <translation id="6577284282025554716"><ph name="FILE_NAME" /> のダウンロードがキャンセルされました</translation> @@ -5137,6 +5147,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> はデリケートなコンテンツまたは危険なコンテンツです。所有者に修正するよう依頼してください。</translation> <translation id="6624687053722465643">スイーツ</translation> <translation id="6628328486509726751">アップロード日時: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">4 桁以上の数字を入力してください</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> が、自身を自動的に認証できるよう、証明書への恒久的なアクセス許可を求めています。</translation> <translation id="6635362468090274700">検出を有効にするまで、誰もあなたと共有できません。<ph name="BR" /><ph name="BR" />検出を一時的に有効にするには、ステータス領域を開いて、周辺ユーザーによる検出をオンにします。</translation> <translation id="6635944431854494329">所有者はこの機能を [設定] > [詳細設定] > [診断と使用状況のデータを Google に自動送信する] で管理できます。</translation> @@ -5175,6 +5186,7 @@ <translation id="6664774537677393800">プロフィールを開こうとして問題が発生しました。ログアウトしてから再度ログインしてください。</translation> <translation id="6670142487971298264">「<ph name="APP_NAME" />」を利用できます</translation> <translation id="6671320560732140690">{COUNT,plural, =1{住所}other{# 件の住所}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> の管理対象として設定する</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" />(USB)</translation> <translation id="6674571176963658787">同期を開始するには、パスフレーズを入力してください</translation> <translation id="6675665718701918026">ポインティング デバイスが接続されました</translation> @@ -5183,6 +5195,7 @@ <translation id="6680442031740878064">空き容量: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">速度</translation> <translation id="6681668084120808868">写真を撮る</translation> +<translation id="6683087162435654533">すべてのタブを復元(&E)</translation> <translation id="6683948477137300040">デバイスの EID と QR コードのポップアップを表示します</translation> <translation id="6684827949542560880">最新のアップデートをダウンロードしています</translation> <translation id="668599234725812620">Google Play を開く</translation> @@ -5752,6 +5765,7 @@ <translation id="7308643132139167865">ウェブサイトの言語</translation> <translation id="7309257895202129721">コントロールを表示(&C)</translation> <translation id="7310598146671372464">ログインできませんでした。指定した Kerberos 暗号化タイプがサーバーでサポートされていません。管理者にお問い合わせください。</translation> +<translation id="7315168816273861089">ウィンドウ コントロールのオーバーレイを有効にする</translation> <translation id="7320213904474460808">デフォルトのネットワーク</translation> <translation id="7321545336522791733">サーバーにアクセスできません</translation> <translation id="7324297612904500502">ベータ版フォーラム</translation> @@ -5928,7 +5942,9 @@ <translation id="7506541170099744506">この <ph name="DEVICE_TYPE" /> は組織の管理対象として登録されました。</translation> <translation id="7507207699631365376">このプロバイダの<ph name="BEGIN_LINK" />プライバシー ポリシー<ph name="END_LINK" />をご覧ください</translation> <translation id="7507930499305566459">ステータス レスポンダ証明書</translation> +<translation id="7509097596023256288">管理対象の設定</translation> <translation id="7509246181739783082">本人確認</translation> +<translation id="7511415964832680006">オンにすると、サイトでコンテンツやサービスを提供する際に、ここで示されているプライバシー保護技術が使用される場合があります。これには、クロスサイト トラッキングの代わりとなる技術も含まれます。今後、試用版の技術がさらに追加される可能性があります。</translation> <translation id="7513029293694390567">保存されている認証情報を使用してウェブサイトに自動的にログインします。この機能が無効になっている場合は、ウェブサイトにログインするときに毎回確認を求められます。</translation> <translation id="7514239104543605883">デバイスにコピー</translation> <translation id="7514365320538308">ダウンロード</translation> @@ -6289,6 +6305,7 @@ <translation id="7876027585589532670">ショートカットの編集はできません</translation> <translation id="7877451762676714207">不明なサーバー エラーが発生しました。もう一度お試しになるか、サーバー管理者にご連絡ください。</translation> <translation id="7879631849810108578">ショートカットが設定されました: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">FLoC をオンにして、ステータスが有効な場合、Chrome で 7 日間の閲覧履歴に基づいて、特定の「コホート」つまりグループに分類されます。広告主はこのグループに対して広告を表示するよう設定できます。閲覧履歴はデバイスに保存され、プライバシーが保たれます。この試用版は、<ph name="BEGIN_LINK" />一部の地域<ph name="END_LINK" />でのみ使用できます。</translation> <translation id="7880823633812189969">再起動すると、ローカルデータが削除されます</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">アカウントを表示</translation> @@ -6448,6 +6465,7 @@ <translation id="804786196054284061">エンドユーザー使用許諾契約</translation> <translation id="8048977114738515028">デバイスにデスクトップ ショートカットを作成して、このプロフィールに直接アクセスできるようにします</translation> <translation id="8049029041626250638">キーボードまたはマウスを接続してください。Bluetooth デバイスを使用している場合は、ペア設定できる状態であることを確認してください。</translation> +<translation id="8049184478152619004">PIN ブロック解除キー(PUK)を入力してください</translation> <translation id="8049705080247101012">「<ph name="EXTENSION_NAME" />」は、不正な拡張機能として認識されているためインストールされませんでした</translation> <translation id="8049948037269924837">タッチパッドの逆スクロール</translation> <translation id="8050038245906040378">Microsoft 商用コード署名</translation> @@ -6484,6 +6502,7 @@ <translation id="8082106343289440791">「<ph name="DEVICE_NAME" />」とペア設定しますか?</translation> <translation id="8082390128630131497">ADB デバッグを無効にすると、この <ph name="DEVICE_TYPE" /> が出荷時の設定にリセットされます。ユーザー アカウントとローカルデータはすべて消去されます。</translation> <translation id="8084114998886531721">保存したパスワード</translation> +<translation id="8084510406207562688">すべてのタブを復元(&E)</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> を設定しています...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> をセットアップ</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{このファイルは暗号化されています。所有者に復号するよう依頼してください。}other{一部のファイルは暗号化されています。所有者に復号するよう依頼してください。}}</translation> @@ -6525,6 +6544,7 @@ <translation id="8119438628456698432">ログファイルを生成しています...</translation> <translation id="811994229154425014">スペース 2 つでピリオドを入力</translation> <translation id="8120505434908124087">eSIM プロファイルのインストール</translation> +<translation id="812260729110117038">広告主やパブリッシャーは、サイトをまたいでユーザーをトラッキングすることなく、広告の成果を把握できます。</translation> <translation id="8123590694679414600"><ph name="TIME" /> にデータを同期パスフレーズで暗号化しました。 なお、Google Pay のお支払い方法と住所はこれには含まれていません。</translation> <translation id="81238879832906896">黄色と白の花</translation> @@ -6562,6 +6582,7 @@ <translation id="816055135686411707">証明書の信頼設定エラー</translation> <translation id="8160775796528709999">音声と動画の字幕を生成するには、設定で自動字幕起こしを有効にします</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />(<ph name="TIME_REMAINING" />)</translation> +<translation id="81610453212785426">Chrome では、<ph name="BEGIN_LINK" />プライバシー サンドボックス<ph name="END_LINK" />という取り組みを通じて、クロスサイト トラッキングからユーザーを保護しつつ、オープンウェブの理念を支える新しい技術を開発しています。</translation> <translation id="8161293209665121583">ウェブページのリーダーモード</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{タブを新しいウィンドウに移動}other{タブを新しいウィンドウに移動}}</translation> <translation id="8165997195302308593">Crostini のポート転送</translation> @@ -6763,7 +6784,6 @@ <translation id="8393700583063109961">メッセージを送信</translation> <translation id="8397825320644530257">接続済みスマートフォンの切断</translation> <translation id="8398877366907290961">このまま続行</translation> -<translation id="8400146488506985033">ユーザーを管理</translation> <translation id="8401432541486058167">スマートカードに関連付けられている PIN を入力してください。</translation> <translation id="8404893580027489425">指紋認証センサーは <ph name="DEVICE_TYPE" /> の右側にあります。いずれかの指で軽く触れてください。</translation> <translation id="8405046151008197676">最新のアップデートの概要をご確認ください</translation> @@ -6819,7 +6839,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> が実行の許可を求めています</translation> <translation id="8466417995783206254">このタブではピクチャー イン ピクチャー モードで動画を再生しています。</translation> <translation id="8467326454809944210">別の言語を選択</translation> -<translation id="8470214316007448308">他のユーザー</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> 用に保存されているパスワード</translation> <translation id="8471525937465764768">多くのサイトは、ドキュメントを印刷したりストレージ デバイスに保存するために USB デバイスに接続します。</translation> <translation id="8471959340398751476">割引情報の取得はオフになっています。カスタマイズ メニューでオンにすることができます</translation> @@ -7006,6 +7025,7 @@ <translation id="8676374126336081632">入力内容を消去</translation> <translation id="8676770494376880701">低電力の充電器に接続されています</translation> <translation id="8677212948402625567">すべてを折りたたむ...</translation> +<translation id="867767487203716855">次の更新</translation> <translation id="8677859815076891398">アルバムはありません。<ph name="LINK_BEGIN" />Google フォト<ph name="LINK_END" />でアルバムを作成してください。</translation> <translation id="8678582529642151449">タブを縮小しない</translation> <translation id="8678933587484842200">このアプリケーションの起動方法を選択してください。</translation> @@ -7094,7 +7114,6 @@ <translation id="87646919272181953">Google フォトのアルバム</translation> <translation id="8767621466733104912">すべてのユーザーに対して Chrome を自動的に更新</translation> <translation id="8770406935328356739">拡張機能のルート ディレクトリ</translation> -<translation id="8770507190024617908">ユーザーを管理</translation> <translation id="8771300903067484968">スタートページの背景をデフォルトの背景にリセットしました。</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> を保存</translation> <translation id="8774379074441005279">復元を実行</translation> @@ -7355,6 +7374,7 @@ <translation id="9031549947500880805">Google ドライブにデータをバックアップします。これにより、いつでも簡単にデータを復元したりデバイスを切り替えたりできます。バックアップ内容にはアプリのデータが含まれます。</translation> <translation id="9033765790910064284">続行</translation> <translation id="9033857511263905942">貼り付け(&P)</translation> +<translation id="9035689366572880647">現在のPINを入力</translation> <translation id="9037640663275993951">デバイスは許可されていません</translation> <translation id="9037818663270399707">この接続ではすべてのネットワーク トラフィックのプライバシーが保護されません</translation> <translation id="9037965129289936994">原文のページを表示</translation> @@ -7430,6 +7450,7 @@ <translation id="9112748030372401671">壁紙を変更する</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> は危害を及ぼす可能性があります。Google に送信してスキャンしますか?</translation> <translation id="9112987648460918699">検索...</translation> +<translation id="9113240369465613386">奇数のページのみ</translation> <translation id="9114663181201435112">簡単にログイン</translation> <translation id="9115675100829699941">ブックマーク(&B)</translation> <translation id="9116465289595958864">最終更新</translation> @@ -7584,6 +7605,7 @@ <translation id="991413375315957741">モーション センサーまたは光センサー</translation> <translation id="992032470292211616">拡張機能、アプリ、テーマはお使いのデバイスに悪影響を与える可能性があります。続行してもよろしいですか?</translation> <translation id="992256792861109788">ピンク</translation> +<translation id="992401651319295351">入力できるのはあと <ph name="RETRIES" /> 回です。新しい PIN を設定するまでこのネットワークは使用できません。</translation> <translation id="992592832486024913">ChromeVox(音声フィードバック)を無効にする</translation> <translation id="992778845837390402">現在、Linux のバックアップが進行中です</translation> <translation id="993540765962421562">インストールしています</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index c0482d2..91b570d 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -2861,7 +2861,6 @@ <translation id="4035758313003622889">&ამოცანების მმართველი</translation> <translation id="4036778507053569103">სერვერიდან ჩამოტვირთული წესები არასწორია.</translation> <translation id="4037084878352560732">ცხენი</translation> -<translation id="4037889604535939429">პიროვნების რედაქტირება</translation> <translation id="4040753847560036377">PUK-კოდი არასწორია</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{გვერდიდან გასვლა}other{გვერდებიდან გასვლა}}</translation> <translation id="4044612648082411741">შეიყვანეთ თქვენი სერტიფიკატის პაროლი</translation> @@ -4329,7 +4328,6 @@ <translation id="5709557627224531708">დააყენეთ Chrome ნაგულისხმევ ბრაუზერად</translation> <translation id="5711983031544731014">განბლოკვა შეუძლებელია. შეიყვანეთ პაროლი.</translation> <translation id="5712153969432126546">საიტები ზოგჯერ აქვეყნებს ისეთ PDF-ებს, როგორიცაა, მაგალითად, დოკუმენტები, კონტრაქტები, ფორმები და ა.შ.</translation> -<translation id="5712323955984474772">შემდეგი განახლება</translation> <translation id="5715711091495208045">დანამატის ბროკერი: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ნაგულისხმევი საძიებო სისტემები</translation> <translation id="5719637365829998022">QR-კოდი დასკანირდა.</translation> @@ -5101,7 +5099,6 @@ <translation id="6563469144985748109">თქვენს მენეჯერს ის ჯერ არ დაუდასტურებია</translation> <translation id="6568283005472142698">ჩანართებში ძიება</translation> <translation id="6569911211938664415">პაროლები ინახება თქვენს Google ანგარიშში (<ph name="ACCOUNT" />), რაც ნიშნავს, რომ მათი გამოყენება ნებისმიერ მოწყობილობაზე შეგიძლიათ</translation> -<translation id="6569934958368283244">სხვა ადამიანები</translation> <translation id="6573497332121198392">მალსახმობი ვერ ამოიშალა</translation> <translation id="657402800789773160">&ამ გვერდის ხელახლა ჩატვირთვა</translation> <translation id="6577284282025554716">ჩამოტვირთვა გაუქმდა: <ph name="FILE_NAME" /></translation> @@ -6785,7 +6782,6 @@ <translation id="8393700583063109961">შეტყობინების გაგზავნა</translation> <translation id="8397825320644530257">დაკავშირებულ ტელეფონთან კავშირის გაწყვეტა</translation> <translation id="8398877366907290961">მაინც გაგრძელება</translation> -<translation id="8400146488506985033">ადამიანების მართვა</translation> <translation id="8401432541486058167">მიუთითეთ PIN-კოდი, რომელიც დაკავშირებულია თქვენს სმარტ-ბარათთან.</translation> <translation id="8404893580027489425">თითის ანაბეჭდის სენსორი მდებარეობს <ph name="DEVICE_TYPE" />-ის მარჯვენა მხარეს. შეეხეთ მას მსუბუქად ნებისმიერი თითით.</translation> <translation id="8405046151008197676">გაეცანით ძირითად სიახლეებს ბოლო განახლებაში</translation> @@ -6841,7 +6837,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> გასაშვებად თქვენს ნებართვას საჭიროებს</translation> <translation id="8466417995783206254">ეს ჩანართი ვიდეოს დასაკრავად იყენებს რეჟიმს „გამოსახულება გამოსახულებაში“.</translation> <translation id="8467326454809944210">სხვა ენის არჩევა</translation> -<translation id="8470214316007448308">სხვა ადამიანები</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />-ისთვის შენახული პაროლები</translation> <translation id="8471525937465764768">როგორც წესი, საიტები USB-მოწყობილობებს უკავშირდება ისეთი ფუნქციების უზრუნველსაყოფად, როგორიცაა, მაგალითად, დოკუმენტის ბეჭდვა თუ მეხსიერების მოწყობილობაზე შენახვა</translation> <translation id="8471959340398751476">ფასდაკლებები გამორთულია. მართი ჩართვა შეგიძლიათ მორგების მენიუდან.</translation> @@ -7028,6 +7023,7 @@ <translation id="8676374126336081632">შეყვანილი ტექსტის გასუფთავება</translation> <translation id="8676770494376880701">დაბალი სიმძლავრის დამტენი დაკავშირებულია</translation> <translation id="8677212948402625567">ყველას აკეცვა…</translation> +<translation id="867767487203716855">შემდეგი განახლება</translation> <translation id="8677859815076891398">ალბომები არ არის. შექმენით ალბომები <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />-ში.</translation> <translation id="8678582529642151449">ჩანართები არ შევიწროვდება</translation> <translation id="8678933587484842200">რა გზით გსურთ ამ აპლიკაციის გაშვება?</translation> @@ -7116,7 +7112,6 @@ <translation id="87646919272181953">Google Photos ალბომი</translation> <translation id="8767621466733104912">Chrome-ის ავტომატურად განახლება ყველა მომხმარებლისთვის</translation> <translation id="8770406935328356739">გაფართოების ძირეული დირექტორია</translation> -<translation id="8770507190024617908">ადამიანების მართვა</translation> <translation id="8771300903067484968">საწყისი გვერდის ფონი გადაყენებულია ნაგულისხმევ ფონზე.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" />-ის შენახვა</translation> <translation id="8774379074441005279">დაადასტურეთ აღდგენა</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index a9442039..d9685fa 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -2857,7 +2857,6 @@ <translation id="4035758313003622889">&Тапсырмалар реттеушісі</translation> <translation id="4036778507053569103">Серверден жүктеп алынған саясат жарамсыз.</translation> <translation id="4037084878352560732">Жылқы</translation> -<translation id="4037889604535939429">Пайдаланушы мәліметтерін өзгерту</translation> <translation id="4040753847560036377">PUK коды дұрыс емес.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Беттен шығу}other{Беттерден шығу}}</translation> <translation id="4044612648082411741">Сертификат құпия сөзін енгізу</translation> @@ -4325,7 +4324,6 @@ <translation id="5709557627224531708">Chrome браузерін әдепкі етіп орнатыңыз</translation> <translation id="5711983031544731014">Құлпын ашу мүмкін емес. Құпия сөзіңізді енгізіңіз.</translation> <translation id="5712153969432126546">Сайттар кейде PDF-терді (мысалы, құжаттар, келісімшарттар және үлгілер) жариялайды.</translation> -<translation id="5712323955984474772">Келесі жаңарту</translation> <translation id="5715711091495208045">Плагин делдалы: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Әдепкі іздеу жүйелері</translation> <translation id="5719637365829998022">QR коды сканерленді.</translation> @@ -5097,7 +5095,6 @@ <translation id="6563469144985748109">Менеджеріңіз әлі мақұлдаған жоқ</translation> <translation id="6568283005472142698">Қойындыны іздеу</translation> <translation id="6569911211938664415">Құпия сөздер Google есептік жазбаңызда (<ph name="ACCOUNT" />) сақталады және оларды кез келген құрылғыда пайдалана аласыз.</translation> -<translation id="6569934958368283244">Басқа адамдар</translation> <translation id="6573497332121198392">Таңбашаны өшіру мүмкін емес.</translation> <translation id="657402800789773160">&Бұл бетті қайта жүктеу</translation> <translation id="6577284282025554716">Жүктеп алудан бас тартылды: <ph name="FILE_NAME" /></translation> @@ -6782,7 +6779,6 @@ <translation id="8393700583063109961">Хабар жіберу</translation> <translation id="8397825320644530257">Байланыстырылған телефонды ажырату</translation> <translation id="8398877366907290961">Бәрібір жалғастыру</translation> -<translation id="8400146488506985033">Адамдарды басқару</translation> <translation id="8401432541486058167">Смарт картаңызбен байланыстырылған PIN кодын көрсетіңіз.</translation> <translation id="8404893580027489425">Саусақ ізін оқу сканері <ph name="DEVICE_TYPE" /> құрылғысының оң жағында орналасқан. Оны кез келген саусақпен түртіңіз.</translation> <translation id="8405046151008197676">Ең соңғы нұсқаға қатысты негізгі ақпарат алыңыз.</translation> @@ -6838,7 +6834,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> плагині іске қосылуы үшін рұқсатыңыз қажет</translation> <translation id="8466417995783206254">Бұл қойынды "суреттегі сурет" режимінде бейне ойнатуда.</translation> <translation id="8467326454809944210">Басқа тілді таңдау</translation> -<translation id="8470214316007448308">Басқа адамдар</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> сайты үшін құпия сөздер сақталды</translation> <translation id="8471525937465764768">Сайттар әдетте құжатты басып шығару немесе жад құрылғысына сақтау сияқты функциялар үшін USB құрылғыларына қосылады</translation> <translation id="8471959340398751476">Жеңілдіктер өшірулі. Оларды арнаулы мәзірден қосуыңызға болады.</translation> @@ -7025,6 +7020,7 @@ <translation id="8676374126336081632">Енгізілгенді өшіру</translation> <translation id="8676770494376880701">Төмен қуат зарядтағышы қосылды</translation> <translation id="8677212948402625567">Барлығын жию…</translation> +<translation id="867767487203716855">Келесі жаңарту</translation> <translation id="8677859815076891398">Альбомдар жоқ. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> қызметінде альбом жасаңыз.</translation> <translation id="8678582529642151449">қойындылар кішіреймейді</translation> <translation id="8678933587484842200">Бұл қолданбаны қалай іске қосқыңыз келеді?</translation> @@ -7113,7 +7109,6 @@ <translation id="87646919272181953">Google Photos альбомы</translation> <translation id="8767621466733104912">Chrome браузерін барлық пайдаланушылар үшін автоматты жаңарту</translation> <translation id="8770406935328356739">Кеңейтімнің түбір каталогы:</translation> -<translation id="8770507190024617908">Адамдарды басқару</translation> <translation id="8771300903067484968">Бастау бетінің фондық режимі әдепкі фонға қайтарылды.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> сақтау</translation> <translation id="8774379074441005279">Қалпына келтіруді растау</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 9306f09..59f2ff1 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -2583,6 +2583,7 @@ <translation id="3742666961763734085">រកមិនឃើញឯកតារៀបចំដែលមានឈ្មោះនោះទេ។ សូមព្យាយាមម្ដងទៀត។</translation> <translation id="3744111561329211289">សមកាលកម្មផ្ទៃខាងក្រោយ</translation> <translation id="3747077776423672805">ដើម្បីលុបកម្មវិធី សូមចូលទៅកាន់ការកំណត់ > Google Play Store > គ្រប់គ្រងចំណូលចិត្ត Android > កម្មវិធី ឬកម្មវិធីគ្រប់គ្រងកម្មវិធី។ បន្ទាប់មកចុចកម្មវិធីដែលអ្នកចង់លុប (អ្នកអាចនឹងត្រូវអូសទៅស្តាំ ឬទៅឆ្វេងដើម្បីស្វែងរកកម្មវិធីនោះ)។ បន្ទាប់មកចុចលុប ឬបិទ។</translation> +<translation id="3747220812138541072">បង្ហាញការណែនាំអំពីការសរសេរក្នុងជួរដែលបង្ហាញ នៅពេលអ្នកវាយបញ្ចូល</translation> <translation id="3748706263662799310">រាយការណ៍អំពីបញ្ហា</translation> <translation id="3752582316358263300">យល់ព្រម...</translation> <translation id="3753033997400164841">រក្សាទុកម្ដង ប្រើបានគ្រប់ទីកន្លែង។</translation> @@ -2876,7 +2877,6 @@ <translation id="4035758313003622889">កម្មវិធីគ្រប់គ្រងភារកិច្ច</translation> <translation id="4036778507053569103">គោលការណ៍ដែលបានទាញយកពីម៉ាស៊ីនមេគ្មានសុពលភាពទេ។</translation> <translation id="4037084878352560732">សេះ</translation> -<translation id="4037889604535939429">កែសម្រួលមនុស្ស</translation> <translation id="4040753847560036377">PUK មិនត្រឹមត្រូវទេ</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ចាកចេញពីទំព័រ}other{ចាកចេញពីទំព័រ}}</translation> <translation id="4044612648082411741">បញ្ចូលពាក្យសម្ងាត់វិញ្ញាបនបត្ររបស់អ្នក</translation> @@ -3273,6 +3273,7 @@ <translation id="4510614391273086606">កម្មវិធី និងឯកសារ Linux កំពុងត្រូវបានស្ដារទៅជាទម្រង់បម្រុងទុក។</translation> <translation id="451102079304155829">រទេះ</translation> <translation id="4513275008300099962">បិទការត្រួតគ្នានៃការគ្រប់គ្រងវិនដូ</translation> +<translation id="4513872120116766993">ការសរសេរតាមការទស្សន៍ទាយ</translation> <translation id="4513946894732546136">មតិ</translation> <translation id="451407183922382411">ដោយមានជំនួយពី <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">បិទ/បើកវីដេអូដើម្បីលេង ឬផ្អាក</translation> @@ -4346,7 +4347,6 @@ <translation id="5709557627224531708">កំណត់ Chrome ជាកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើមរបស់អ្នក</translation> <translation id="5711983031544731014">មិនអាចដោះសោបានទេ។ បញ្ចូលពាក្យសម្ងាត់របស់អ្នក។</translation> <translation id="5712153969432126546">ជួលកាល គេហទំព័របោះផ្សាយឯកសារ PDF ផ្សេងៗដូចជា ឯកសារ កិច្ចសន្យា និងទម្រង់បែបបទជាដើម</translation> -<translation id="5712323955984474772">ការដំឡើងកំណែបន្ទាប់</translation> <translation id="5715711091495208045">អន្តរការរីកម្មវិធីជំនួយ៖ <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ម៉ាស៊ីនគ្រប៉គ្រងលំនាំដើម</translation> <translation id="5719637365829998022">កូដ QR ត្រូវបានស្កេន។</translation> @@ -4437,6 +4437,7 @@ <translation id="5826395379250998812">ភ្ជាប់ <ph name="DEVICE_TYPE" /> ជាមួយទូរសព្ទរបស់អ្នក។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation> <translation id="5826993284769733527">ថ្លាព្រាល</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">ការទស្សន៍ទាយពាក្យបន្ទាប់</translation> <translation id="5828545842856466741">បញ្ចូលកម្រងព័ត៌មាន...</translation> <translation id="5828633471261496623">កំពុងបោះពុម្ព...</translation> <translation id="5830720307094128296">រក្សាទុកទំព័រជា...</translation> @@ -5118,7 +5119,6 @@ <translation id="6563469144985748109">អ្នកគ្រប់គ្រងរបស់អ្នកមិនទាន់យល់ព្រមនៅឡើយទេ</translation> <translation id="6568283005472142698">ការស្វែងរកផ្ទាំង</translation> <translation id="6569911211938664415">ពាក្យសម្ងាត់ត្រូវបានរក្សាទុកនៅក្នុងគណនី Google របស់អ្នក (<ph name="ACCOUNT" />) ដើម្បីឱ្យអ្នកអាចប្រើពាក្យសម្ងាត់ទាំងនោះនៅលើឧបករណ៍ណាក៏បាន</translation> -<translation id="6569934958368283244">មនុស្សផ្សេងទៀត</translation> <translation id="6573497332121198392">មិនអាចលុបផ្លូវកាត់បានទេ</translation> <translation id="657402800789773160">ដំណើរការទំព័រនេះឡើងវិញ</translation> <translation id="6577284282025554716">បានបោះបង់ការទាញយក៖ <ph name="FILE_NAME" /></translation> @@ -6308,6 +6308,7 @@ <translation id="78526636422538552">ការបញ្ចូលគណនី Google បន្ថែមត្រូវបានបិទ</translation> <translation id="7853747251428735">ឧបករណ៍ច្រើនទៀត</translation> <translation id="7855678561139483478">ផ្លាស់ទីផ្ទាំងទៅវិនដូថ្មី</translation> +<translation id="7857093393627376423">ការណែនាំអំពីពាក្យឬឃ្លា</translation> <translation id="7857117644404132472">បន្ថែមការលើកលែង</translation> <translation id="7857949311770343000">តើនេះគឺជាទំព័រផ្ទាំងថ្មីដែលអ្នកបានចង់បាន?</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6804,7 +6805,6 @@ <translation id="8393700583063109961">ផ្ញើសារ</translation> <translation id="8397825320644530257">ផ្ដាច់ទូរសព្ទដែលបានភ្ជាប់</translation> <translation id="8398877366907290961">បន្តទោះបីជាយ៉ាងណាក៏ដោយ</translation> -<translation id="8400146488506985033">គ្រប់គ្រងមនុស្ស</translation> <translation id="8401432541486058167">ផ្ដល់កូដ PIN ដែលពាក់ព័ន្ធនឹងកាតឆ្លាតវៃរបស់អ្នក។</translation> <translation id="8404893580027489425">ឧបករណ៍ចាប់ស្នាមម្រាមដៃស្ថិតនៅផ្នែកខាងស្ដាំនៃ <ph name="DEVICE_TYPE" /> របស់អ្នក។ សូមប៉ះឧបករណ៍ចាប់ស្នាមម្រាមដៃនេះថ្នមៗដោយប្រើម្រាមដៃណាមួយ។</translation> <translation id="8405046151008197676">ទទួលបានការរំលេចពីកំណែថ្មីបំផុត</translation> @@ -6860,7 +6860,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ត្រូវការសិទ្ធិអនុញ្ញាតពីអ្នកដើម្បីដំណើរការ</translation> <translation id="8466417995783206254">ផ្ទាំងនេះកំពុងចាក់វីដេអូក្នុងមុខងាររូបក្នុងរូប។</translation> <translation id="8467326454809944210">ជ្រើសរើសភាសាផ្សេងទៀត</translation> -<translation id="8470214316007448308">មនុស្សផ្សេងទៀត</translation> <translation id="8470513973197838199">បានរក្សាទុកពាក្យសម្ងាត់សម្រាប់ <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">ជាធម្មតា គេហទំព័រភ្ជាប់ជាមួយឧបករណ៍ USB សម្រាប់មុខងារផ្សេងៗដូចជា ការបោះពុម្ពឯកសារ ឬការរក្សាទុកទៅក្នុងឧបករណ៍ផ្ទុកជាដើម</translation> <translation id="8471959340398751476">ការបញ្ចុះតម្លៃត្រូវបានបិទ។ អ្នកអាចបើកការបញ្ចុះតម្លៃនៅក្នុងម៉ឺនុយប្ដូរតាមបំណង</translation> @@ -7047,6 +7046,7 @@ <translation id="8676374126336081632">ជម្រះការបញ្ចូល</translation> <translation id="8676770494376880701">ឆ្នាំងសាកដែលមានថាមពលទាបត្រូវបានភ្ជាប់</translation> <translation id="8677212948402625567">បង្រួមចូលទាំងអស់...</translation> +<translation id="867767487203716855">ការដំឡើងកំណែបន្ទាប់</translation> <translation id="8677859815076891398">គ្មានអាល់ប៊ុមទេ។ សូមបង្កើតអាល់ប៊ុមនៅក្នុង <ph name="LINK_BEGIN" />Google រូបថត<ph name="LINK_END" />។</translation> <translation id="8678582529642151449">ផ្ទាំងមិនបង្រួមទេ</translation> <translation id="8678933587484842200">តើអ្នកចង់ឱ្យកម្មវិធីនេះចាប់ផ្តើមយ៉ាងដូចម្តេច?</translation> @@ -7135,7 +7135,6 @@ <translation id="87646919272181953">អាល់ប៊ុម Google រូបថត</translation> <translation id="8767621466733104912">ធ្វើបច្ចុប្បន្នភាព Chrome ដោយស្វ័យប្រវត្តិសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់</translation> <translation id="8770406935328356739">ថត root ផ្នែកបន្ថែម</translation> -<translation id="8770507190024617908">គ្រប់គ្រងមនុស្ស</translation> <translation id="8771300903067484968">ផ្ទៃខាងក្រោយនៃទំព័រចាប់ផ្ដើមត្រូវបានកំណត់ទៅផ្ទៃខាងក្រោយលំនាំដើមឡើងវិញ។</translation> <translation id="8773302562181397928">រក្សាទុក <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">បញ្ជាក់ការស្ដារ</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 14db5e3a..a7e8113 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -2863,7 +2863,6 @@ <translation id="4035758313003622889">&ಕಾರ್ಯ ನಿರ್ವಾಹಕ</translation> <translation id="4036778507053569103">ಸರ್ವರ್ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಲಾದ ಕಾರ್ಯನೀತಿಯು ಅಮಾನ್ಯವಾಗಿದೆ.</translation> <translation id="4037084878352560732">ಕುದುರೆ</translation> -<translation id="4037889604535939429">ವ್ಯಕ್ತಿಯ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ನಿರ್ಗಮನ ಪುಟ}one{ನಿರ್ಗಮನ ಪುಟಗಳು}other{ನಿರ್ಗಮನ ಪುಟಗಳು}}</translation> <translation id="4044612648082411741">ನಿಮ್ಮ ಪ್ರಮಾಣಪತ್ರ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> <translation id="4044708573046946214">ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಪಾಸ್ವರ್ಡ್</translation> @@ -4330,7 +4329,6 @@ <translation id="5709557627224531708">Chrome ಅನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ರೂಪದಲ್ಲಿ ಹೊಂದಿಸಿ</translation> <translation id="5711983031544731014">ಅನ್ಲಾಕ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ.</translation> <translation id="5712153969432126546">ಸೈಟ್ಗಳು ಕೆಲವೊಮ್ಮೆ ಡಾಕ್ಯುಮೆಂಟ್ಗಳು, ಒಪ್ಪಂದಗಳು ಮತ್ತು ಫಾರ್ಮ್ಗಳಂತಹ PDF ಗಳನ್ನು ಪ್ರಕಟಿಸುತ್ತವೆ</translation> -<translation id="5712323955984474772">ಮುಂದಿನ ಅಪ್ಡೇಟ್</translation> <translation id="5715711091495208045">ಪ್ಲಗಿನ್ ಬ್ರೋಕರ್: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟ ಇಂಜಿನ್ಗಳು</translation> <translation id="5719637365829998022">QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗಿದೆ.</translation> @@ -5098,7 +5096,6 @@ <translation id="6563469144985748109">ನಿಮ್ಮ ಮ್ಯಾನೇಜರ್ ಇನ್ನೂ ಇದನ್ನು ಅಂಗೀಕರಿಸಿಲ್ಲ</translation> <translation id="6568283005472142698">ಟ್ಯಾಬ್ ಹುಡುಕಾಟ</translation> <translation id="6569911211938664415">ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆ (<ph name="ACCOUNT" />) ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ, ಇದರಿಂದ ನೀವು ಅವುಗಳನ್ನು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದು.</translation> -<translation id="6569934958368283244">ಇತರ ಜನರು</translation> <translation id="6573497332121198392">ಶಾರ್ಟ್ಕಟ್ ತೆಗೆದುಹಾಕಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="657402800789773160">ಈ ಪುಟವನ್ನು &ರೀಲೋಡ್ ಮಾಡಿ</translation> <translation id="6577284282025554716">ಡೌನ್ಲೋಡ್ ರದ್ದುಪಡಿಸಲಾಗಿದೆ: <ph name="FILE_NAME" /></translation> @@ -6770,7 +6767,6 @@ <translation id="8393700583063109961">ಸಂದೇಶ ಕಳುಹಿಸು</translation> <translation id="8397825320644530257">ಕನೆಕ್ಟ್ ಆಗಿರುವ ಫೋನ್ ಅನ್ನು ಡಿಸ್ಕನೆಕ್ಟ್ ಮಾಡಿ</translation> <translation id="8398877366907290961">ಏನಾಗಲಿ ಮುಂದುವರೆಯಿರಿ</translation> -<translation id="8400146488506985033">ಜನರನ್ನು ನಿರ್ವಹಿಸು</translation> <translation id="8401432541486058167">ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್ನೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಪಿನ್ ಅನ್ನು ಒದಗಿಸಿ.</translation> <translation id="8404893580027489425">ಈ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ಬಲಭಾಗದಲ್ಲಿದೆ. ಯಾವುದೇ ಬೆರಳಿನ ಮೂಲಕ ಅದನ್ನು ಮೆಲ್ಲಗೆ ಸ್ಪರ್ಶಿಸಿ.</translation> <translation id="8405046151008197676">ಇತ್ತೀಚಿನ ಅಪ್ಡೇಟ್ ಕುರಿತು ಮುಖ್ಯಾಂಶಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ</translation> @@ -6826,7 +6822,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ರನ್ ಮಾಡಲು ನಿಮ್ಮ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation> <translation id="8466417995783206254">ಚಿತ್ರದಲ್ಲಿನ ಚಿತ್ರ ಮೋಡ್ನಲ್ಲಿ ಈ ಟ್ಯಾಬ್ ವೀಡಿಯೊವನ್ನು ಪ್ಲೇ ಮಾಡುತ್ತಿದೆ.</translation> <translation id="8467326454809944210">ಬೇರೊಂದು ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> -<translation id="8470214316007448308">ಇತರ ಜನರು</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> ಗಾಗಿ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ</translation> <translation id="8471525937465764768">ಸೈಟ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ, ಡಾಕ್ಯುಮೆಂಟ್ ಮುದ್ರಿಸುವುದು ಅಥವಾ ಸಂಗ್ರಹಣಾ ಸಾಧನಕ್ಕೆ ಉಳಿಸುವಂತಹ ಫೀಚರ್ಗಳಿಗಾಗಿ USB ಸಾಧನಗಳಿಗೆ ಕನೆಕ್ಟ್ ಆಗುತ್ತವೆ</translation> <translation id="8471959340398751476">ರಿಯಾಯಿತಿಗಳನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮೆನುವಿನಲ್ಲಿ ಆನ್ ಮಾಡಬಹುದು</translation> @@ -7013,6 +7008,7 @@ <translation id="8676374126336081632">ಇನ್ಪುಟ್ ತೆರವುಗೊಳಿಸು</translation> <translation id="8676770494376880701">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ</translation> <translation id="8677212948402625567">ಎಲ್ಲವನ್ನು ಕುಗ್ಗಿಸು...</translation> +<translation id="867767487203716855">ಮುಂದಿನ ಅಪ್ಡೇಟ್</translation> <translation id="8677859815076891398">ಯಾವುದೇ ಆಲ್ಬಮ್ಗಳಿಲ್ಲ. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> ನಲ್ಲಿ ಆಲ್ಬಮ್ ಅನ್ನು ರಚಿಸಿ.</translation> <translation id="8678582529642151449">ಟ್ಯಾಬ್ಗಳು ಕುಗ್ಗುವುದಿಲ್ಲ</translation> <translation id="8678933587484842200">ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನೀವು ಹೇಗೆ ಪ್ರಾರಂಭಿಸಲು ಬಯಸುತ್ತೀರಿ?</translation> @@ -7101,7 +7097,6 @@ <translation id="87646919272181953">Google Photos ಆಲ್ಬಮ್</translation> <translation id="8767621466733104912">ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗಾಗಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ Chrome ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ</translation> <translation id="8770406935328356739">ವಿಸ್ತರಣೆ ಮೂಲ ಡೈರೆಕ್ಟರಿ</translation> -<translation id="8770507190024617908">ಜನರನ್ನು ನಿರ್ವಹಿಸು</translation> <translation id="8771300903067484968">ಆರಂಭಿಕ ಪುಟದ ಹಿನ್ನೆಲೆಯನ್ನು ಡೀಫಾಲ್ಟ್ ಹಿನ್ನೆಲೆಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ಅನ್ನು ಉಳಿಸಿ</translation> <translation id="8774379074441005279">ಮರುಸ್ಥಾಪನೆಯನ್ನು ದೃಢೀಕರಿಸಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 5a0a067..c2cda99 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">작업 관리자(&T)</translation> <translation id="4036778507053569103">서버에서 다운로드한 정책이 올바르지 않습니다.</translation> <translation id="4037084878352560732">말</translation> -<translation id="4037889604535939429">사용자 수정</translation> <translation id="4040753847560036377">잘못된 PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{페이지 나가기}other{페이지 나가기}}</translation> <translation id="4044612648082411741">인증서 비밀번호를 입력하세요.</translation> @@ -4342,7 +4341,6 @@ <translation id="5709557627224531708">Chrome을 기본 브라우저로 설정</translation> <translation id="5711983031544731014">잠금 해제할 수 없습니다. 비밀번호를 입력하세요.</translation> <translation id="5712153969432126546">사이트에서 때때로 문서, 계약서, 양식과 같은 PDF를 게시할 수 있습니다.</translation> -<translation id="5712323955984474772">다음 업데이트</translation> <translation id="5715711091495208045">플러그인 중개인: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">기본 검색엔진</translation> <translation id="5719637365829998022">QR 코드가 스캔되었습니다.</translation> @@ -5114,7 +5112,6 @@ <translation id="6563469144985748109">관리자가 아직 승인하지 않았습니다.</translation> <translation id="6568283005472142698">탭 검색</translation> <translation id="6569911211938664415">어느 기기에서나 사용할 수 있도록 비밀번호가 Google 계정(<ph name="ACCOUNT" />)에 저장됩니다.</translation> -<translation id="6569934958368283244">다른 사용자</translation> <translation id="6573497332121198392">바로가기를 삭제할 수 없음</translation> <translation id="657402800789773160">페이지 새로고침(&R)</translation> <translation id="6577284282025554716">다운로드 취소됨: <ph name="FILE_NAME" /></translation> @@ -6801,7 +6798,6 @@ <translation id="8393700583063109961">메시지 보내기</translation> <translation id="8397825320644530257">연결된 휴대전화 연결 해제</translation> <translation id="8398877366907290961">무시하고 계속하기</translation> -<translation id="8400146488506985033">사용자 관리</translation> <translation id="8401432541486058167">스마트 카드와 연결된 PIN을 입력하세요.</translation> <translation id="8404893580027489425">지문 센서는 <ph name="DEVICE_TYPE" /> 오른쪽에 있습니다. 손가락으로 가볍게 터치하세요.</translation> <translation id="8405046151008197676">최신 업데이트에서 중요한 사항을 확인하세요.</translation> @@ -6857,7 +6853,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" />에 실행 권한이 필요합니다.</translation> <translation id="8466417995783206254">이 탭에서는 PIP 모드로 동영상이 재생되고 있습니다.</translation> <translation id="8467326454809944210">다른 언어 선택</translation> -<translation id="8470214316007448308">다른 사용자</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />의 저장된 비밀번호</translation> <translation id="8471525937465764768">사이트에서는 일반적으로 문서 인쇄 또는 스토리지 기기에 저장과 같은 기능을 사용하기 위해 USB 기기에 연결합니다.</translation> <translation id="8471959340398751476">할인 기능이 사용 중지되었습니다. 맞춤설정 메뉴에서 사용 설정할 수 있습니다.</translation> @@ -7044,6 +7039,7 @@ <translation id="8676374126336081632">입력내용 지우기</translation> <translation id="8676770494376880701">저출력 충전기 연결됨</translation> <translation id="8677212948402625567">모두 접기...</translation> +<translation id="867767487203716855">다음 업데이트</translation> <translation id="8677859815076891398">앨범이 없습니다. <ph name="LINK_BEGIN" />Google 포토<ph name="LINK_END" />에서 앨범을 만드세요.</translation> <translation id="8678582529642151449">탭이 줄어들지 않음</translation> <translation id="8678933587484842200">이 애플리케이션을 실행할 방법을 선택하세요.</translation> @@ -7132,7 +7128,6 @@ <translation id="87646919272181953">Google 포토 앨범</translation> <translation id="8767621466733104912">모든 사용자의 Chrome 자동 업데이트</translation> <translation id="8770406935328356739">확장 프로그램 루트 디렉터리</translation> -<translation id="8770507190024617908">사용자 관리</translation> <translation id="8771300903067484968">시작 페이지 배경화면이 기본 배경화면으로 재설정되었습니다.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> 저장</translation> <translation id="8774379074441005279">복원 확인</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 69abfe47..28f6543 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&Тапшырмаларды башкаргыч</translation> <translation id="4036778507053569103">Серверден жүктөлүп алынган саясат жараксыз.</translation> <translation id="4037084878352560732">Жылкы</translation> -<translation id="4037889604535939429">Колдонуучуну алмаштыруу</translation> <translation id="4040753847560036377">PUK туура эмес</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Барактан чыгуу}other{Барактардан чыгуу}}</translation> <translation id="4044612648082411741">Тастыктамаңыздын сырсөзүн киргизиңиз</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Chrome'ду демейки серепчи катары белгилөө</translation> <translation id="5711983031544731014">Кулпусун ачуу мүмкүн эмес. Сырсөзүңүздү киргизиңиз.</translation> <translation id="5712153969432126546">Сайттар айрым учурларда документтер, келишимдер жана формалар сыяктуу PDF файлдарды жарыялашат</translation> -<translation id="5712323955984474772">Кийинки жаңыртуу</translation> <translation id="5715711091495208045">Плагин брокери: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Демейки издөө каражаттары</translation> <translation id="5719637365829998022">QR код скандалды.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Башкаруучуңуз буга уруксат бере элек</translation> <translation id="6568283005472142698">Өтмөктө издөө</translation> <translation id="6569911211938664415">Бардык түзмөктөрүңүздө колдонуу үчүн сырсөздөр Google аккаунтуңузда (<ph name="ACCOUNT" />) сакталат</translation> -<translation id="6569934958368283244">Башка кишилер</translation> <translation id="6573497332121198392">Ыкчам баскыч өчпөй жатат</translation> <translation id="657402800789773160">&Бул бетти кайра жүктөө</translation> <translation id="6577284282025554716">Жүктөп алуу жокко чыгарылды: <ph name="FILE_NAME" /></translation> @@ -6803,7 +6800,6 @@ <translation id="8393700583063109961">Билдирүү жөнөтүү</translation> <translation id="8397825320644530257">Туташтырылган телефонду ажыратуу</translation> <translation id="8398877366907290961">Баары бир улантуу</translation> -<translation id="8400146488506985033">Байланыштарды башкаруу</translation> <translation id="8401432541486058167">Акылдуу картаңыз менен байланышкан PIN кодду киргизиңиз.</translation> <translation id="8404893580027489425">Манжа изинин сенсору <ph name="DEVICE_TYPE" /> түзмөгүңүздүн оң жагында жайгашкан. Ага манжаңыздын бирөө менен акырын тийип коюңуз.</translation> <translation id="8405046151008197676">Акыркы жаңыртуу жөнүндө маалымат алыңыз</translation> @@ -6859,7 +6855,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> плагинин иштетүү үчүн сиздин уруксатыңыз талап кылынат</translation> <translation id="8466417995783206254">Бул өтмөктөгү видео сүрөт ичиндеги сүрөт режиминде ойнотулуп жатат.</translation> <translation id="8467326454809944210">Башка тилди тандоо</translation> -<translation id="8470214316007448308">Башка кишилер</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> үчүн сакталган сырсөздөр</translation> <translation id="8471525937465764768">Сайттар документти басып чыгаруу же сактагыч түзмөккө сактоо сыяктуу функциялар үчүн USB түзмөктөргө туташат</translation> <translation id="8471959340398751476">Арзандатуулар өчүк. Аларды ыңгайлаштыруу менюсунан күйгүзө аласыз</translation> @@ -7046,6 +7041,7 @@ <translation id="8676374126336081632">Киргизилген нерсени тазалоо</translation> <translation id="8676770494376880701">Кубаты төмөн кубаттагыч туташтырылды</translation> <translation id="8677212948402625567">Баарын жыйнап коюу…</translation> +<translation id="867767487203716855">Кийинки жаңыртуу</translation> <translation id="8677859815076891398">Альбомдор жок. <ph name="LINK_BEGIN" />Google Фотодо<ph name="LINK_END" /> альбом түзүңүз.</translation> <translation id="8678582529642151449">Өтмөктөр кичирейбейт</translation> <translation id="8678933587484842200">Бул колдонмону кандай жол менен ачкыңыз келет?</translation> @@ -7134,7 +7130,6 @@ <translation id="87646919272181953">Google Фотодогу альбом</translation> <translation id="8767621466733104912">Chrome'ду бардык колдонуучулар үчүн автоматтык түрдө жаңыртуу</translation> <translation id="8770406935328356739">Кеңейтүүнүн өзөктүк каталогу</translation> -<translation id="8770507190024617908">Байланыштарды башкаруу</translation> <translation id="8771300903067484968">Башкы беттин фону демейки фонго коюлду.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> сактоо</translation> <translation id="8774379074441005279">Калыбына келтирүүнү ырастоо</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 2ef8d34..8d18a29 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -2873,7 +2873,6 @@ <translation id="4035758313003622889">ຕົວຈັດການໜ້າວຽກ</translation> <translation id="4036778507053569103">ນະໂຍບາຍທີ່ດາວໂຫຼດຈາກເຊີບເວີໃຊ້ບໍ່ໄດ້.</translation> <translation id="4037084878352560732">ມ້າ</translation> -<translation id="4037889604535939429">ແກ້ໄຂບຸກຄົນ</translation> <translation id="4040753847560036377">PUK ບໍ່ຖືກຕ້ອງ</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ອອກຈາກໜ້າ}other{ອອກຈາກໜ້າ}}</translation> <translation id="4044612648082411741">ປ້ອນລະຫັດຜ່ານໃບຢັ້ງຢືນ</translation> @@ -4342,7 +4341,6 @@ <translation id="5709557627224531708">ຕັ້ງຄ່າ Chrome ເປັນໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ</translation> <translation id="5711983031544731014">ບໍ່ສາມາດປົດລັອກໄດ້. ປ້ອນລະຫັດຜ່ານຂອງທ່ານເຂົ້າໄປ.</translation> <translation id="5712153969432126546">ບາງເທື່ອເວັບໄຊຈະເຜີຍແຜ່ PDF ຕ່າງໆ ເຊັ່ນ: ເອກະສານ, ສັນຍາ ແລະ ແບບຟອມ</translation> -<translation id="5712323955984474772">ອັບເດດຕໍ່ໄປ</translation> <translation id="5715711091495208045">ຕົວຈັດຫາປລັກອິນ: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ໂປຣແກຣມຊອກຫາເລີ່ມຕົ້ນ</translation> <translation id="5719637365829998022">ສະແກນລະຫັດ QR ແລ້ວ.</translation> @@ -5114,7 +5112,6 @@ <translation id="6563469144985748109">ຜູ້ຈັດການຂອງທ່ານຍັງບໍ່ທັນອະນຸມັດມັນເທື່ອ</translation> <translation id="6568283005472142698">ການຊອກຫາໃນແຖບ</translation> <translation id="6569911211938664415">ລະຫັດຜ່ານຖືກບັນທຶກໄວ້ໃນບັນຊີ Google ຂອງທ່ານແລ້ວ (<ph name="ACCOUNT" />) ເພື່ອໃຫ້ທ່ານສາມາດໃຊ້ພວກມັນຢູ່ອຸປະກອນໃດກໍໄດ້.</translation> -<translation id="6569934958368283244">ບຸກຄົນອື່ນ</translation> <translation id="6573497332121198392">ບໍ່ສາມາດລຶບທາງລັດອອກໄດ້</translation> <translation id="657402800789773160">ໂຫຼດຫນ້ານີ້ຄືນອີກ</translation> <translation id="6577284282025554716">ຍົກເລີກການດາວໂຫຼດແລ້ວ: <ph name="FILE_NAME" /></translation> @@ -6799,7 +6796,6 @@ <translation id="8393700583063109961">ສົ່ງຂໍ້ຄວາມ</translation> <translation id="8397825320644530257">ຕັດການເຊື່ອມຕໍ່ໂທລະສັບທີ່ເຊື່ອມຕໍ່ແລ້ວ</translation> <translation id="8398877366907290961">ແນວໃດກໍ່ດໍາເນີນການຕໍ່</translation> -<translation id="8400146488506985033">ຈັດການຜູ້ຄົນ</translation> <translation id="8401432541486058167">ໃຫ້ PIN ທີ່ເຊື່ອມໂຍງກັບບັດອັດສະລິຍະຂອງທ່ານ.</translation> <translation id="8404893580027489425">ເຊັນເຊີລາຍນີ້ວມືແມ່ນຢູ່ທາງຂວາມືຂອງ <ph name="DEVICE_TYPE" /> ທ່ານ. ແຕະມັນຄ່ອຍໆໂດຍໃຊ້ນິ້ວໃດກໍໄດ້.</translation> <translation id="8405046151008197676">ຮັບໄຮໄລ້ຈາກການອັບເດດຫຼ້າສຸດ</translation> @@ -6855,7 +6851,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ຕ້ອງການການອະນຸຍາດຂອງທ່ານເພື່ອເປີດໃຊ້</translation> <translation id="8466417995783206254">ແຖບນີ້ກຳລັງຫຼິ້ນວິດີໂອໃນໂໝດສະແດງຜົນຊ້ອນກັນ.</translation> <translation id="8467326454809944210">ເລືອກພາສາອື່ນ</translation> -<translation id="8470214316007448308">ບຸກຄົນອື່ນ</translation> <translation id="8470513973197838199">ລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ສຳລັບ <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">ໂດຍປົກກະຕິ ເວັບໄຊຈະເຊື່ອມຕໍ່ກັບອຸປະກອນ USB ສຳລັບຄຸນສົມບັດ ເຊັ່ນ: ການພິມເອກະສານ ຫຼື ການບັນທຶກໄວ້ໃນອຸປະກອນຈັດເກັບຂໍ້ມູນ</translation> <translation id="8471959340398751476">ສ່ວນຫຼຸດຖືກປິດການນຳໃຊ້ຢູ່. ທ່ານສາມາດເປີດໃຊ້ພວກມັນໄດ້ໃນເມນູປັບແຕ່ງ</translation> @@ -7042,6 +7037,7 @@ <translation id="8676374126336081632">ລຶບການປ້ອນເຂົ້າ</translation> <translation id="8676770494376880701">ເຄື່ອງສາກແບບໃຊ້ໄຟຕໍ່າເຊື່ອມຕໍ່ແລ້ວ</translation> <translation id="8677212948402625567">ຍຸບເຊື່ອງທັງໝົດ...</translation> +<translation id="867767487203716855">ອັບເດດຕໍ່ໄປ</translation> <translation id="8677859815076891398">ບໍ່ມີອະລະບ້ຳ. ສ້າງອະລະບໍ້າໃນ <ph name="LINK_BEGIN" />Google ຮູບພາບ<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">ບໍ່ມີການຫຍໍ້ຂະໜາດແຖບ</translation> <translation id="8678933587484842200">ທ່ານຕ້ອງການໃຫ້ແອັບພລິເຄຊັນນີ້ເປີດໃຊ້ແນວໃດ?</translation> @@ -7130,7 +7126,6 @@ <translation id="87646919272181953">ອະລະບໍ້າ Google ຮູບພາບ</translation> <translation id="8767621466733104912">ອັບເດດ Chrome ໂດຍອັດຕະໂນມັດສຳລັບຜູ້ໃຊ້ທຸກຄົນ</translation> <translation id="8770406935328356739">ໄດເຣັກທໍຣີພື້ນຖານຂອງສ່ວນຂະຫຍາຍ</translation> -<translation id="8770507190024617908">ຈັດການຜູ້ຄົນ</translation> <translation id="8771300903067484968">ພາບພື້ນຫຼັງຂອງໜ້າເລີ່ມຕົ້ນໄດ້ຖືກຣີເຊັດເປັນພາບພື້ນຫຼັງເລີ່ມຕົ້ນແລ້ວ.</translation> <translation id="8773302562181397928">ບັນທຶກ <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">ຢືນຢັນກູ້ຄືນ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 85daeb7..a8f2472 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -2879,7 +2879,6 @@ <translation id="4035758313003622889">&Užduočių tvarkytuvė</translation> <translation id="4036778507053569103">Iš serverio atsisiųsta politika yra netinkama.</translation> <translation id="4037084878352560732">Arklys</translation> -<translation id="4037889604535939429">Asmens informacijos redagavimas</translation> <translation id="4040753847560036377">Netinkamas PUK kodas</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Išeiti iš puslapio}one{Išeiti iš puslapių}few{Išeiti iš puslapių}many{Išeiti iš puslapių}other{Išeiti iš puslapių}}</translation> <translation id="4044612648082411741">Įveskite sertifikato slaptažodį</translation> @@ -4349,7 +4348,6 @@ <translation id="5709557627224531708">Nustatyti „Chrome“ kaip numatytąją naršyklę</translation> <translation id="5711983031544731014">Nepavyko atrakinti. Įveskite slaptažodį.</translation> <translation id="5712153969432126546">Svetainėse kartais skelbiami PDF failai, pvz., dokumentai, sutartys ir formos</translation> -<translation id="5712323955984474772">Kitas naujinys</translation> <translation id="5715711091495208045">Papildinių tarpininkas: „<ph name="PLUGIN_NAME" />“</translation> <translation id="5719603411793408026">Numatytieji paieškos varikliai</translation> <translation id="5719637365829998022">QR kodas nuskaitytas.</translation> @@ -5121,7 +5119,6 @@ <translation id="6563469144985748109">Jūsų valdytojas dar jos nepatvirtino</translation> <translation id="6568283005472142698">Skirtukų paieška</translation> <translation id="6569911211938664415">Slaptažodžiai išsaugomi „Google“ paskyroje (<ph name="ACCOUNT" />), kad galėtumėte juos naudoti bet kuriame įrenginyje.</translation> -<translation id="6569934958368283244">Kiti žmonės</translation> <translation id="6573497332121198392">Negalima pašalinti sparčiojo klavišo</translation> <translation id="657402800789773160">&Iš naujo įkelti šį puslapį</translation> <translation id="6577284282025554716">Atsisiuntimas atšauktas: <ph name="FILE_NAME" /></translation> @@ -6808,7 +6805,6 @@ <translation id="8393700583063109961">Siųsti pranešimą</translation> <translation id="8397825320644530257">Atsieti susietą telefoną</translation> <translation id="8398877366907290961">Vis tiek tęsti</translation> -<translation id="8400146488506985033">Tvarkyti žmones</translation> <translation id="8401432541486058167">Nurodykite su išmaniąja kortele susietą PIN kodą.</translation> <translation id="8404893580027489425">Kontrolinio kodo jutiklis yra įrenginio „<ph name="DEVICE_TYPE" />“ dešinėje pusėje. Lengvai jį palieskite bet kuriuo pirštu.</translation> <translation id="8405046151008197676">Gaukite svarbiausios informacijos apie paskiausią naujinį</translation> @@ -6864,7 +6860,6 @@ <translation id="8465444703385715657">Norint paleisti „<ph name="PLUGIN_NAME" />“ reikalingas jūsų leidimas</translation> <translation id="8466417995783206254">Šiame skirtuke vaizdo įrašas leidžiamas vaizdo vaizde režimu.</translation> <translation id="8467326454809944210">Pasirinkti kitą kalbą</translation> -<translation id="8470214316007448308">Kiti žmonės</translation> <translation id="8470513973197838199">Išsaugoti <ph name="ORIGIN" /> slaptažodžiai</translation> <translation id="8471525937465764768">Paprastai svetainėse prisijungiama prie USB įrenginių vykdant tam tikras funkcijas, pvz., spausdinant dokumentą ar saugant saugyklos įrenginyje</translation> <translation id="8471959340398751476">Nuolaidų funkcija išjungta. Ją galite įjungti tinkinimo meniu</translation> @@ -7051,6 +7046,7 @@ <translation id="8676374126336081632">Išvalyti įvestą tekstą</translation> <translation id="8676770494376880701">Prijungtas mažos galios įkroviklis</translation> <translation id="8677212948402625567">Sutraukti viską...</translation> +<translation id="867767487203716855">Kitas naujinys</translation> <translation id="8677859815076891398">Nėra albumų. Sukurkite albumą <ph name="LINK_BEGIN" />„Google“ nuotraukose<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Skirtukai nesumažinami</translation> <translation id="8678933587484842200">Kaip norite paleisti šią programą?</translation> @@ -7139,7 +7135,6 @@ <translation id="87646919272181953">„Google“ nuotraukų albumas</translation> <translation id="8767621466733104912">Automatiškai atnaujinti „Chrome“ visiems naudotojams</translation> <translation id="8770406935328356739">Plėtinio šakninis katalogas</translation> -<translation id="8770507190024617908">Tvarkyti žmones</translation> <translation id="8771300903067484968">Pradžios puslapio fonas iš naujo nustatytas kaip numatytasis fonas.</translation> <translation id="8773302562181397928">Išsaugoti „<ph name="PRINTER_NAME" />“</translation> <translation id="8774379074441005279">Atkūrimo patvirtinimas</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index fb4f6ec..42cfe47 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2863,7 +2863,6 @@ <translation id="4035758313003622889">Uzdevumu pārvaldnieks</translation> <translation id="4036778507053569103">No servera lejupielādētā politika nav derīga.</translation> <translation id="4037084878352560732">Zirgs</translation> -<translation id="4037889604535939429">Personas informācijas rediģēšana</translation> <translation id="4040753847560036377">Nepareizs PUK kods</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Iziet no lapas}zero{Iziet no lapām}one{Iziet no lapām}other{Iziet no lapām}}</translation> <translation id="4044612648082411741">Ievadiet sertifikāta paroli</translation> @@ -4331,7 +4330,6 @@ <translation id="5709557627224531708">Chrome iestatīšana par noklusējuma pārlūku</translation> <translation id="5711983031544731014">Neizdevās atbloķēt. Ievadiet paroli.</translation> <translation id="5712153969432126546">Dažkārt vietnēs tiek publicēti PDF faili, piemēram, dokumenti, līgumi un veidlapas.</translation> -<translation id="5712323955984474772">Nākamais atjauninājums</translation> <translation id="5715711091495208045">Spraudņa starpnieks: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Noklusējuma meklētājprogrammas</translation> <translation id="5719637365829998022">QR kods ir noskenēts.</translation> @@ -5100,7 +5098,6 @@ <translation id="6563469144985748109">Jūsu vadītājs vēl nav to apstiprinājis</translation> <translation id="6568283005472142698">Meklēšana cilnēs</translation> <translation id="6569911211938664415">Paroles tiek saglabātas jūsu Google kontā (<ph name="ACCOUNT" />), lai jūs varētu tās izmantot jebkurā ierīcē.</translation> -<translation id="6569934958368283244">Citas personas</translation> <translation id="6573497332121198392">Nevar noņemt saīsni</translation> <translation id="657402800789773160">&Atkārtoti ielādēt šo lapu</translation> <translation id="6577284282025554716">Lejupielāde atcelta: <ph name="FILE_NAME" /></translation> @@ -6786,7 +6783,6 @@ <translation id="8393700583063109961">Sūtīt ziņojumu</translation> <translation id="8397825320644530257">Saistīta tālruņa atvienošana</translation> <translation id="8398877366907290961">Turpināt jebkurā gadījumā</translation> -<translation id="8400146488506985033">Pārvaldīt personas</translation> <translation id="8401432541486058167">Norādiet PIN, kas ir saistīts ar jūsu viedkarti.</translation> <translation id="8404893580027489425">Pirksta nospieduma sensors atrodas ierīces (<ph name="DEVICE_TYPE" />) labajā pusē. Viegli pieskarieties tam ar jebkuru pirkstu.</translation> <translation id="8405046151008197676">Iegūstiet svarīgāko informāciju no jaunākā atjauninājuma</translation> @@ -6842,7 +6838,6 @@ <translation id="8465444703385715657">Spraudņa <ph name="PLUGIN_NAME" /> izpildīšanai ir nepieciešama jūsu atļauja</translation> <translation id="8466417995783206254">Šajā cilnē videoklips tiek atskaņots režīmā “Attēls attēlā”.</translation> <translation id="8467326454809944210">Izvēlēties citu valodu</translation> -<translation id="8470214316007448308">Citas personas</translation> <translation id="8470513973197838199">Saglabātās paroles vietnei <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Parasti vietnēs savienojums ar USB ierīcēm tiek veidots, lai nodrošinātu noteiktas funkcijas, piemēram, dokumentu drukāšanu vai saglabāšanu atmiņas ierīcē.</translation> <translation id="8471959340398751476">Atlaides ir izslēgtas. Varat tās ieslēgt pielāgošanas izvēlnē.</translation> @@ -7029,6 +7024,7 @@ <translation id="8676374126336081632">Notīrīt ievadi</translation> <translation id="8676770494376880701">Pievienots lādētājs ar mazu strāvas padevi</translation> <translation id="8677212948402625567">Sakļaut visu...</translation> +<translation id="867767487203716855">Nākamais atjauninājums</translation> <translation id="8677859815076891398">Nav albumu. Varat izveidot albumu pakalpojumā <ph name="LINK_BEGIN" />Google fotoattēli<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Cilnes netiek samazinātas</translation> <translation id="8678933587484842200">Kā vēlaties palaist šo lietojumprogrammu?</translation> @@ -7117,7 +7113,6 @@ <translation id="87646919272181953">Google fotoattēlu albumi</translation> <translation id="8767621466733104912">Automātiski atjaunināt pārlūku Chrome visiem lietotājiem</translation> <translation id="8770406935328356739">Paplašinājuma saknes direktorijs</translation> -<translation id="8770507190024617908">Pārvaldīt personas</translation> <translation id="8771300903067484968">Sākumlapas fons ir atiestatīts uz noklusējuma fonu.</translation> <translation id="8773302562181397928">Saglabāt ierīci <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Atjaunošanas apstiprinājums</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 399e9be..b5ea1a3 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2877,7 +2877,6 @@ <translation id="4035758313003622889">&Управник со задачи</translation> <translation id="4036778507053569103">Правилото преземено од серверот е неважечко.</translation> <translation id="4037084878352560732">Коњ</translation> -<translation id="4037889604535939429">Уредете го лицето</translation> <translation id="4040753847560036377">Погрешен PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Излези од страницата}one{Излези од страниците}other{Излези од страниците}}</translation> <translation id="4044612648082411741">Внесете ја лозинката за сертификатот</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Поставете го Chrome за ваш стандарден прелистувач</translation> <translation id="5711983031544731014">Не може да се отклучи. Внесете ја лозинката.</translation> <translation id="5712153969432126546">Сајтовите понекогаш објавуваат документи, договори и формулари во PDF-формат</translation> -<translation id="5712323955984474772">Следно ажурирање</translation> <translation id="5715711091495208045">Посредник со приклучоци: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Стандардни пребарувачи</translation> <translation id="5719637365829998022">QR-кодот е скениран.</translation> @@ -4810,7 +4808,7 @@ <translation id="6238767809035845642">Текст споделен од друг уред</translation> <translation id="6238923052227198598">Прикажувај ја последната забелешка на заклучениот екран</translation> <translation id="6239558157302047471">Повторно вчитај ја &рамката</translation> -<translation id="6240821072888636753">Секогаш прашувај</translation> +<translation id="6240821072888636753">Прашувај секогаш</translation> <translation id="6241530762627360640">Пристапете до информации за уреди со Bluetooth што се спарени со вашиот систем и откријте уреди со Bluetooth во близина</translation> <translation id="6241844896329831164">Не е потребен пристап</translation> <translation id="6242574558232861452">Се проверува согласно безбедносните правила на организацијата.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Управникот уште не го одобрил</translation> <translation id="6568283005472142698">Пребарување картички</translation> <translation id="6569911211938664415">Лозинките се зачувуваат во вашата сметка на Google (<ph name="ACCOUNT" />) за да може да ги користите на кој било уред</translation> -<translation id="6569934958368283244">Други луѓе</translation> <translation id="6573497332121198392">Не може да се отстрани кратенката</translation> <translation id="657402800789773160">&Пак вчитај страница</translation> <translation id="6577284282025554716">Преземањето е откажано: <ph name="FILE_NAME" /></translation> @@ -6807,7 +6804,6 @@ <translation id="8393700583063109961">Испрати порака</translation> <translation id="8397825320644530257">Прекини врска со поврзаниот телефон</translation> <translation id="8398877366907290961">Сепак продолжи</translation> -<translation id="8400146488506985033">Управувај со луѓе</translation> <translation id="8401432541486058167">Наведете го PIN-кодот што е поврзан со вашата паметна картичка.</translation> <translation id="8404893580027489425">Сензорот за отпечатоци е на десната страна од вашиот <ph name="DEVICE_TYPE" />. Допрете го нежно со кој било прст.</translation> <translation id="8405046151008197676">Дознајте ги најдобрите карактеристики од најновото ажурирање</translation> @@ -6863,7 +6859,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> бара ваша дозвола за да се изврши</translation> <translation id="8466417995783206254">Картичкава пушта видео во режимот „слика во слика“.</translation> <translation id="8467326454809944210">Изберете друг јазик</translation> -<translation id="8470214316007448308">Други луѓе</translation> <translation id="8470513973197838199">Зачувани лозинки за <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Сајтовите обично се поврзуваат со USB-уредите за функции како што се печатењето документи или зачувувањето на уред за складирање</translation> <translation id="8471959340398751476">Попустите се исклучени. Може да ги вклучите во менито за приспособување</translation> @@ -7050,6 +7045,7 @@ <translation id="8676374126336081632">Јасно внесување</translation> <translation id="8676770494376880701">Поврзан е полнач со ниско напојување</translation> <translation id="8677212948402625567">Собери ги сите...</translation> +<translation id="867767487203716855">Следно ажурирање</translation> <translation id="8677859815076891398">Нема албуми. Создајте албум во <ph name="LINK_BEGIN" />Фотографии на Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Картичките не се собираат</translation> <translation id="8678933587484842200">Како би сакале да стартува апликацијава?</translation> @@ -7138,7 +7134,6 @@ <translation id="87646919272181953">Албум на „Фотографии на Google“</translation> <translation id="8767621466733104912">Автоматски ажурирај го Chrome за сите корисници</translation> <translation id="8770406935328356739">Основен именик на екстензии</translation> -<translation id="8770507190024617908">Управувај со луѓе</translation> <translation id="8771300903067484968">Заднината на почетната страница е ресетирана на стандардната заднина.</translation> <translation id="8773302562181397928">Зачувај го <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Потврдете го враќањето</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index c330a01..83d9621 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1126,6 +1126,7 @@ <translation id="2179416702468739594">ലഭ്യമായ പ്രൊഫൈലുകൾ തിരയുന്നു. ഇത് നിങ്ങളുടെ മൊബൈൽ നെറ്റ്വർക്ക് അൽപ്പസമയത്തേക്ക് വിച്ഛേദിച്ചേക്കാം.</translation> <translation id="2182058453334755893">നിങ്ങളുടെ ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി</translation> <translation id="2184515124301515068">സൈറ്റുകൾക്ക് എപ്പോൾ ശബ്ദം പ്ലേ ചെയ്യാനാവും എന്നത് (ശുപാർശ ചെയ്തത്) തിരഞ്ഞെടുക്കാൻ Chrome-നെ അനുവദിക്കുക</translation> +<translation id="2186711480981247270">മറ്റൊരു ഉപകരണത്തിൽ നിന്ന് പങ്കിട്ട പേജ്</translation> <translation id="2187675480456493911">നിങ്ങളുടെ അക്കൗണ്ടിലെ മറ്റ് ഉപകരണങ്ങളുമായി സമന്വയിപ്പിച്ചു. മറ്റ് ഉപയോക്താക്കൾ പരിഷ്കരിച്ച ക്രമീകരണം സമന്വയിപ്പിക്കില്ല. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="2187895286714876935">സെര്വര് സാക്ഷ്യപത്ര ഇറക്കുമതി പിശക്</translation> <translation id="2187906491731510095">വിപുലീകരണങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു</translation> @@ -2858,7 +2859,6 @@ <translation id="4035758313003622889">&ടാസ്ക് മാനേജര്</translation> <translation id="4036778507053569103">സെർവറിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്ത നയം അസാധുവാണ്.</translation> <translation id="4037084878352560732">കുതിര</translation> -<translation id="4037889604535939429">വ്യക്തിയെ എഡിറ്റുചെയ്യുക</translation> <translation id="4040753847560036377">PUK തെറ്റാണ്</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{പേജിൽ നിന്ന് പുറത്തുകടക്കുക}other{പേജുകളിൽ നിന്ന് പുറത്തുകടക്കുക}}</translation> <translation id="4044612648082411741">നിങ്ങളുടെ സർട്ടിഫിക്കറ്റ് പാസ്വേഡ് നൽകുക</translation> @@ -4327,7 +4327,6 @@ <translation id="5709557627224531708">Chrome-നെ നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറായി സജ്ജീകരിക്കുക</translation> <translation id="5711983031544731014">അൺലോക്ക് ചെയ്യാനായില്ല. നിങ്ങളുടെ പാസ്വേഡ് നൽകുക.</translation> <translation id="5712153969432126546">സൈറ്റുകൾ ചിലപ്പോൾ ഡോക്യുമെന്റുകളും കരാറുകളും ഫോമുകളും പോലുള്ള PDF-കൾ പ്രസിദ്ധീകരിക്കുന്നു</translation> -<translation id="5712323955984474772">അടുത്ത അപ്ഡേറ്റ്</translation> <translation id="5715711091495208045">പ്ലഗിൻ ബ്രോക്കർ: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ഡിഫോൾട്ട് തിരയൽ യന്ത്രങ്ങൾ</translation> <translation id="5719637365829998022">QR കോഡ് സ്കാൻ ചെയ്തു.</translation> @@ -5100,7 +5099,6 @@ <translation id="6563469144985748109">നിങ്ങളുടെ മാനേജർ ഇതുവരെ അംഗീകാരം നൽകിയിട്ടില്ല</translation> <translation id="6568283005472142698">ടാബ് തിരയൽ</translation> <translation id="6569911211938664415">പാസ്വേഡുകൾ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ (<ph name="ACCOUNT" />) സംരക്ഷിക്കുന്നതിനാൽ ഏത് ഉപകരണത്തിലും അവ ഉപയോഗിക്കാനാകും</translation> -<translation id="6569934958368283244">മറ്റ് ആളുകൾ</translation> <translation id="6573497332121198392">കുറുക്കുവഴി നീക്കം ചെയ്യാനാകില്ല</translation> <translation id="657402800789773160">&ഈ പേജ് വീണ്ടും ലോഡ് ചെയ്യുക</translation> <translation id="6577284282025554716">ഡൗൺലോഡ് റദ്ദാക്കി: <ph name="FILE_NAME" /></translation> @@ -6786,7 +6784,6 @@ <translation id="8393700583063109961">സന്ദേശം അയയ്ക്കുക</translation> <translation id="8397825320644530257">കണക്റ്റ് ചെയ്ത ഫോൺ വിച്ഛേദിക്കുക</translation> <translation id="8398877366907290961">എങ്ങനെയാണെങ്കിലും മുന്നോട്ട് പോകുക</translation> -<translation id="8400146488506985033">ആളുകളെ മാനേജുചെയ്യുക</translation> <translation id="8401432541486058167">നിങ്ങളുടെ സ്മാർട്ട് കാർഡിന്റെ പിൻ നൽകുക.</translation> <translation id="8404893580027489425">വിരലടയാള സെൻസർ നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ന്റെ വലത് വശത്താണ്. ഏതെങ്കിലും വിരലുകൊണ്ട് അതിൽ മൃദുവായി സ്പർശിക്കുക.</translation> <translation id="8405046151008197676">ഏറ്റവും പുതിയ അപ്ഡേറ്റിന്റെ ഹൈലൈറ്റുകൾ നേടൂ</translation> @@ -6842,7 +6839,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> പ്ലഗിന് പ്രവർത്തിക്കാൻ നിങ്ങളുടെ അനുമതി ആവശ്യമുണ്ട്</translation> <translation id="8466417995783206254">ചിത്രത്തിനുള്ളിലെ ചിത്രം മോഡിൽ ഈ ടാബ് ഒരു വീഡിയോ പ്ലേ ചെയ്യുന്നു.</translation> <translation id="8467326454809944210">മറ്റൊരു ഭാഷ തിരഞ്ഞെടുക്കുക</translation> -<translation id="8470214316007448308">മറ്റ് ആളുകൾ</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />-നായി സംരക്ഷിച്ച പാസ്വേഡുകൾ</translation> <translation id="8471525937465764768">ഡോക്യുമെന്റ് പ്രിന്റ് ചെയ്യുന്നതോ സ്റ്റോറേജ് ഉപകരണത്തിൽ സംരക്ഷിക്കുന്നതോ പോലുള്ള ഫീച്ചറുകൾക്ക്, സൈറ്റുകൾ സാധാരണയായി USB ഉപകരണങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യാറുണ്ട്</translation> <translation id="8471959340398751476">ഡിസ്കൗണ്ടുകൾ ഓഫാണ്. അവ നിങ്ങൾക്ക് ഇഷ്ടാനുസൃതമാക്കൽ മെനുവിൽ ഓണാക്കാം</translation> @@ -7029,6 +7025,7 @@ <translation id="8676374126336081632">ഇൻപുട്ട് മായ്ക്കുക</translation> <translation id="8676770494376880701">കുറഞ്ഞ തോതിൽ വൈദ്യുതി പ്രവഹിക്കുന്ന ചാർജർ കണക്റ്റുചെയ്തു</translation> <translation id="8677212948402625567">എല്ലാം ചുരുക്കുക</translation> +<translation id="867767487203716855">അടുത്ത അപ്ഡേറ്റ്</translation> <translation id="8677859815076891398">ആൽബങ്ങളൊന്നുമില്ല. <ph name="LINK_BEGIN" />Google Photos-ൽ<ph name="LINK_END" /> ആൽബം സൃഷ്ടിക്കുക.</translation> <translation id="8678582529642151449">ടാബുകൾ ഉള്ളിലേക്ക് ചുരുക്കില്ല</translation> <translation id="8678933587484842200">ഈ ആപ്പ് എങ്ങനെ ലോഞ്ച് ചെയ്യാനാണ് നിങ്ങൾ ആഗ്രഹിക്കുന്നത്?</translation> @@ -7116,7 +7113,6 @@ <translation id="87646919272181953">Google Photos ആൽബം</translation> <translation id="8767621466733104912">എല്ലാ ഉപയോക്താക്കൾക്കുമായി സ്വയമേവ Chrome അപ്ഡേറ്റ് ചെയ്യുക</translation> <translation id="8770406935328356739">വിപുലീകരണ റൂട്ട് ഡയറക്റ്ററി</translation> -<translation id="8770507190024617908">ആളുകളെ മാനേജുചെയ്യുക</translation> <translation id="8771300903067484968">ആരംഭ പേജിൻ്റെ പശ്ചാത്തലം ഡിഫോൾട്ട് പശ്ചാത്തലമാക്കി പുനഃക്രമീകരിച്ചു.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> സംരക്ഷിക്കുക</translation> <translation id="8774379074441005279">പുനഃസ്ഥാപിക്കൽ സ്ഥിരീകരിക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index f853d15..e94ec9f 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2579,6 +2579,7 @@ <translation id="3742666961763734085">Ийм нэртэй байгууллагын нэгжийг олж чадахгүй байна. Дахин оролдоно уу.</translation> <translation id="3744111561329211289">Дэвсгэрт синк хийх</translation> <translation id="3747077776423672805">Аппуудыг устгахын тулд Тохиргоо > Google Play Дэлгүүр > Android-н сонголтыг удирдах > Апп эсвэл Аппын менежер хэсэгт очно уу. Дараа нь устгахыг хүссэн аппаа товшино уу (та аппыг олохын тулд баруун эсвэл зүүн тийш шудрах шаардлагатай байж болзошгүй). Дараа нь Устгах эсвэл Идэвхгүй болгох гэснийг товшино уу.</translation> +<translation id="3747220812138541072">Таныг бичих үед мөрд гарч ирэх бичих зөвлөмжийг харуулна</translation> <translation id="3748706263662799310">Алдааг мэдээлэх</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3753033997400164841">Нэг удаа хадгалаад. Хүссэн газраа ашиглаарай</translation> @@ -2871,7 +2872,6 @@ <translation id="4035758313003622889">& Асуудлын менежер</translation> <translation id="4036778507053569103">Серверээс татсан удирдамж хүчингүй байна.</translation> <translation id="4037084878352560732">Морь</translation> -<translation id="4037889604535939429">Хүн засах</translation> <translation id="4040753847560036377">PUK буруу байна</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Хуудаснаас гарах}other{Хуудаснуудаас гарах}}</translation> <translation id="4044612648082411741">Сертификатынхаа нууц үгийг оруулна уу</translation> @@ -3268,6 +3268,7 @@ <translation id="4510614391273086606">Linux-н файлууд болон аппуудыг тэдний хуулбарласан төлөвт сэргээж байна.</translation> <translation id="451102079304155829">сагс</translation> <translation id="4513275008300099962">Цонхны хяналтын давхарлалтыг идэвхгүй болгох</translation> +<translation id="4513872120116766993">Бичих үгсийг урьдчилан санал болгох</translation> <translation id="4513946894732546136">Санал дүгнэлт</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" />-р хүргэсэн</translation> <translation id="4514610446763173167">Видеог тоглуулах эсвэл түр зогсоохын тулд асаах/унтраах</translation> @@ -4341,7 +4342,6 @@ <translation id="5709557627224531708">Chrome-г өгөгдмөл хөтчөөрөө тохируулна уу</translation> <translation id="5711983031544731014">Түгжээг тайлах боломжгүй байна. Нууц үгээ оруулна уу.</translation> <translation id="5712153969432126546">Сайтууд заримдаа документ, гэрээ болон маягт зэрэг PDF-г нийтэлдэг</translation> -<translation id="5712323955984474772">Дараагийн шинэчлэлт</translation> <translation id="5715711091495208045">Нэмэлт өргөтгөлийн зуучлагч: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Өгөгдмөл хайлтын систем</translation> <translation id="5719637365829998022">QR кодыг скан хийсэн.</translation> @@ -4432,6 +4432,7 @@ <translation id="5826395379250998812"><ph name="DEVICE_TYPE" />-г утастайгаа холбоно уу. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="5826993284769733527">Хагас тунгалаг</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">Дараагийн үг тааварлалт</translation> <translation id="5828545842856466741">Профайл нэмэх...</translation> <translation id="5828633471261496623">Хэвлэж байна...</translation> <translation id="5830720307094128296">Хуудсыг ... гэх хадгалах</translation> @@ -5112,7 +5113,6 @@ <translation id="6563469144985748109">Таны менежер үүнийг одоогоор зөвшөөрөөгүй байна</translation> <translation id="6568283005472142698">Таб хайлт</translation> <translation id="6569911211938664415">Нууц үгнүүдийг таны Google Бүртгэлд (<ph name="ACCOUNT" />) хадгалдаг бөгөөд та тэдгээрийг дурын төхөөрөмж дээр ашиглах боломжтой</translation> -<translation id="6569934958368283244">Бусад хүмүүс</translation> <translation id="6573497332121198392">Товчлолыг хасах боломжгүй</translation> <translation id="657402800789773160">Энэ хуудсыг дахин ачаалах</translation> <translation id="6577284282025554716">Таталтыг цуцалсан: <ph name="FILE_NAME" /></translation> @@ -6301,6 +6301,7 @@ <translation id="78526636422538552">Илүү Google Бүртгэл нэмэхийг идэвхгүй болгосон</translation> <translation id="7853747251428735">Бусад хэрэгсэл</translation> <translation id="7855678561139483478">Табыг шинэ цонх руу зөөх</translation> +<translation id="7857093393627376423">Текстийн зөвлөмж</translation> <translation id="7857117644404132472">Онцгой тохиолдол нэмэх</translation> <translation id="7857949311770343000">Энэ таны хүссэн шинэ хуудас мөн үү?</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6795,7 +6796,6 @@ <translation id="8393700583063109961">Мессеж илгээх</translation> <translation id="8397825320644530257">Холбогдсон утсыг салгах</translation> <translation id="8398877366907290961">Ямарч байсан үргэлжлүүлье</translation> -<translation id="8400146488506985033">Хүмүүсийг удирдах</translation> <translation id="8401432541486058167">Таны ухаалаг карттай холбоотой ПИН-г оруулна уу.</translation> <translation id="8404893580027489425">Хурууны хээ мэдрэгч нь таны <ph name="DEVICE_TYPE" />-н баруун гар талд байна. Үүнд дурын хуруугаар зөөлөн хүрнэ үү.</translation> <translation id="8405046151008197676">Хамгийн сүүлийн шинэчлэлтийн талаар тодруулга авах</translation> @@ -6851,7 +6851,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" />-г ажиллуулахын тулд таны зөвшөөрөл шаардлагатай</translation> <translation id="8466417995783206254">Энэ таб видеог дэлгэцэн доторх дэлгэц горимд тоглуулж байна.</translation> <translation id="8467326454809944210">Өөр хэл сонгох</translation> -<translation id="8470214316007448308">Бусад хүмүүс</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />-н хадгалсан нууц үг</translation> <translation id="8471525937465764768">Сайтууд ихэвчлэн документ хэвлэх эсвэл хадгалах сангийн төхөөрөмжид хадгалах зэрэг онцлогуудад зориулж USB төхөөрөмжид холбогддог</translation> <translation id="8471959340398751476">Хөнгөлөлт унтраалттай байна. Та үүнийг өөрчлөх цэсэд асаах боломжтой</translation> @@ -7038,6 +7037,7 @@ <translation id="8676374126336081632">Оролтыг цэвэрлэх</translation> <translation id="8676770494376880701">Цэнэглэгчийг холбосон байна</translation> <translation id="8677212948402625567">Бүгдийг нуух...</translation> +<translation id="867767487203716855">Дараагийн шинэчлэлт</translation> <translation id="8677859815076891398">Цомог байхгүй. <ph name="LINK_BEGIN" />Google Зурагт<ph name="LINK_END" /> цомог үүсгэнэ үү.</translation> <translation id="8678582529642151449">Табууд агшихгүй</translation> <translation id="8678933587484842200">Та энэ аппыг хэрхэн ажиллуулах хүсэлтэй байна вэ?</translation> @@ -7124,7 +7124,6 @@ <translation id="87646919272181953">Google Зургийн цомог</translation> <translation id="8767621466733104912">Бүх хэрэглэгчид Chrome-г автоматаар шинэчилнэ үү</translation> <translation id="8770406935328356739">Өргөтгөлийн үндсэн лавлалт</translation> -<translation id="8770507190024617908">Хүмүүсийг удирдах</translation> <translation id="8771300903067484968">Эхлэх хуудасны арын дэвсгэрийг өгөгдмөл арын дэвсгэрээр шинэчиллээ.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" />-г хадгалах</translation> <translation id="8774379074441005279">Сэргээхийг баталгаажуулах</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 2870117..73a4959c 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1138,6 +1138,7 @@ <translation id="2179416702468739594">उपलब्ध प्रोफाइल शोधत आहे. यामुळे तुमचे मोबाइल नेटवर्क काही मिनिटांसाठी डिस्कनेक्ट होऊ शकते.</translation> <translation id="2182058453334755893">तुमच्या क्लिपबोर्डवर कॉपी केले</translation> <translation id="2184515124301515068">जेव्हा साइट आवाज प्ले करेल तेव्हा Chrome ला निवड करू दे (शिफारस केलेले)</translation> +<translation id="2186711480981247270">दुसऱ्या डिव्हाइसवरून शेअर केलेले पेज</translation> <translation id="2187675480456493911">तुमच्या खात्यावरील इतर डिव्हाइसशी सिंक केले आहे. इतर वापरकर्त्यांनी बदललेली सेटिंग्ज सिंक केली जाणार नाहीत. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> <translation id="2187895286714876935">सर्व्हर सर्टिफिकेट आयात एरर</translation> <translation id="2187906491731510095">विस्तार अपडेट केले</translation> @@ -2874,7 +2875,6 @@ <translation id="4035758313003622889">&कार्य व्यवस्थापक</translation> <translation id="4036778507053569103">सर्व्हरवरून डाउनलोड केलेले धोरण चुकीचे आहे.</translation> <translation id="4037084878352560732">घोडा</translation> -<translation id="4037889604535939429">व्यक्ती संपादित करा</translation> <translation id="4040753847560036377">चुकीचा PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{पेजमधून बाहेर या}other{पेजमधून बाहेर या}}</translation> <translation id="4044612648082411741">तुमचा सर्टिफिकेट पासवर्ड एंटर करा</translation> @@ -4341,7 +4341,6 @@ <translation id="5709557627224531708">Chrome ला तुमचा डीफॉल्ट ब्राउझर म्हणून सेट करा</translation> <translation id="5711983031544731014">अनलॉक करता आले नाही. तुमचा पासवर्ड एंटर करा.</translation> <translation id="5712153969432126546">साइट काहीवेळा दस्तऐवज, करार आणि फॉर्म यांसारख्या PDF प्रकाशित करतात</translation> -<translation id="5712323955984474772">पुढील अपडेट</translation> <translation id="5715711091495208045">प्लगइन ब्रोकर: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">डीफॉल्ट शोध इंजीन</translation> <translation id="5719637365829998022">QR कोड स्कॅन केला आहे.</translation> @@ -5114,7 +5113,6 @@ <translation id="6563469144985748109">आपल्या व्यवस्थापकाने अद्याप ती मंजूर केली नाही</translation> <translation id="6568283005472142698">टॅब शोध</translation> <translation id="6569911211938664415">तुम्हाला कोणत्याही डिव्हाइसवर वापरता यावेत म्हणून तुमच्या Google खाते (<ph name="ACCOUNT" />) मध्ये पासवर्ड सेव्ह केले जातात.</translation> -<translation id="6569934958368283244">इतर लोक</translation> <translation id="6573497332121198392">शॉर्टकट काढून टाकू शकत नाही</translation> <translation id="657402800789773160">हे पृष्ठ &रीलोड करा</translation> <translation id="6577284282025554716">डाउनलोड रद्द केले: <ph name="FILE_NAME" /></translation> @@ -6799,7 +6797,6 @@ <translation id="8393700583063109961">संदेश पाठवा</translation> <translation id="8397825320644530257">कनेक्ट केलेला फोन डिस्कनेक्ट करा</translation> <translation id="8398877366907290961">तरीही पुढे चला</translation> -<translation id="8400146488506985033">लोकांना व्यवस्थापित करा</translation> <translation id="8401432541486058167">तुमच्या स्मार्ट कार्डशी संलग्न असलेला पिन द्या.</translation> <translation id="8404893580027489425">फिंगरप्रिंट सेन्सर तुमच्या <ph name="DEVICE_TYPE" /> च्या उजव्या बाजूला आहे. कोणत्याही बोटाने त्याला हळुवार स्पर्श करा.</translation> <translation id="8405046151008197676">नवीनतम अपडेटमधून हायलाइट मिळवा</translation> @@ -6855,7 +6852,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ला रन करण्यासाठी तुमची परवानगी आवश्यक आहे.</translation> <translation id="8466417995783206254">हा टॅब चित्रात-चित्र मोडमध्ये व्हिडिओ प्ले करत आहे.</translation> <translation id="8467326454809944210">दुसरी भाषा निवडा</translation> -<translation id="8470214316007448308">इतर लोक</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> साठी सेव्ह केलेले पासवर्ड</translation> <translation id="8471525937465764768">दस्तऐवज प्रिंट करणे किंवा स्टोरेज डिव्हाइसमध्ये सेव्ह करणे यांसारख्या वैशिष्ट्यांसाठी साइट सामान्यपणे USB डिव्हाइसशी कनेक्ट करतात</translation> <translation id="8471959340398751476">सवलती बंद आहेत. तुम्ही कस्टमाइझ करा मेनूमधून त्या सुरू करू शकता</translation> @@ -7042,6 +7038,7 @@ <translation id="8676374126336081632">इनपुट साफ करा</translation> <translation id="8676770494376880701">निम्न-उर्जेचे चार्जर कनेक्ट केले</translation> <translation id="8677212948402625567">सर्व कोलॅप्स करा...</translation> +<translation id="867767487203716855">पुढील अपडेट</translation> <translation id="8677859815076891398">कोणतेही अल्बम नाहीत. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> मध्ये एखादा अल्बम तयार करा.</translation> <translation id="8678582529642151449">टॅब लहान केले जात नाहीत</translation> <translation id="8678933587484842200">हे ॲप्लिकेशन कसे लॉंच व्हावे असे तुम्हाला वाटते?</translation> @@ -7130,7 +7127,6 @@ <translation id="87646919272181953">Google Photos अल्बम</translation> <translation id="8767621466733104912">सर्व वापरकर्त्यांसाठी Chrome आपोआप अपडेट करा</translation> <translation id="8770406935328356739">एक्स्टेंशन मूळ डिरेक्टरी</translation> -<translation id="8770507190024617908">लोकांना व्यवस्थापित करा</translation> <translation id="8771300903067484968">पेज बॅकग्राउंड सुरू करा डीफॉल्ट बॅकग्राउंडवर रीसेट केले गेले आहे.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> सेव्ह करा</translation> <translation id="8774379074441005279">रिस्टोअर करण्याची खात्री करा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 101ca93..7c5f8b92 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -916,7 +916,7 @@ <translation id="1938351510777341717">Perintah Luaran</translation> <translation id="1940546824932169984">Peranti yang disambungkan</translation> <translation id="1942600407708803723">Matikan apabila penutup ditutup</translation> -<translation id="1944528062465413897">Kod berpasangan Bluetooth:</translation> +<translation id="1944528062465413897">Kod gandingan Bluetooth:</translation> <translation id="1944921356641260203">Kemas kini ditemui</translation> <translation id="1946577776959096882">Lihat akaun</translation> <translation id="1949584741547056205">Jawapan Pantas</translation> @@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&Pengurus tugas</translation> <translation id="4036778507053569103">Dasar yang dimuat turun daripada pelayan tidak sah.</translation> <translation id="4037084878352560732">Kuda</translation> -<translation id="4037889604535939429">Edit orang</translation> <translation id="4040753847560036377">PUK salah</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Keluar daripada Halaman}other{Keluar daripada Halaman}}</translation> <translation id="4044612648082411741">Masukkan kata laluan sijil anda</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Tetapkan Chrome sebagai penyemak imbas lalai anda</translation> <translation id="5711983031544731014">Tidak dapat membuka kunci. Masukkan kata laluan anda.</translation> <translation id="5712153969432126546">Kadangkala laman menerbitkan PDF, seperti dokumen, kontrak dan borang</translation> -<translation id="5712323955984474772">Kemas Kini Seterusnya</translation> <translation id="5715711091495208045">Broker Pemalam: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Enjin carian lalai</translation> <translation id="5719637365829998022">Kod QR telah diimbas.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Pengurus anda belum meluluskannya</translation> <translation id="6568283005472142698">Carian Tab</translation> <translation id="6569911211938664415">Kata laluan disimpan dalam Akaun Google anda (<ph name="ACCOUNT" />) supaya anda dapat menggunakan kata laluan tersebut pada mana-mana peranti</translation> -<translation id="6569934958368283244">Orang lain</translation> <translation id="6573497332121198392">Tidak dapat mengalih keluar pintasan</translation> <translation id="657402800789773160">&Muatkan Semula Halaman Ini</translation> <translation id="6577284282025554716">Muat turun dibatalkan: <ph name="FILE_NAME" /></translation> @@ -6805,7 +6802,6 @@ <translation id="8393700583063109961">Hantar mesej</translation> <translation id="8397825320644530257">Putuskan sambungan telefon yang bersambung</translation> <translation id="8398877366907290961">Teruskan juga</translation> -<translation id="8400146488506985033">Urus orang</translation> <translation id="8401432541486058167">Sediakan PIN yang dikaitkan dengan kad pintar anda.</translation> <translation id="8404893580027489425">Penderia cap jari terletak di sisi sebelah kanan <ph name="DEVICE_TYPE" /> anda. Sentuh dengan lembut menggunakan mana-mana jari.</translation> <translation id="8405046151008197676">Dapatkan sorotan daripada kemas kini terbaharu</translation> @@ -6861,7 +6857,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> memerlukan kebenaran anda untuk dijalankan</translation> <translation id="8466417995783206254">Tab ini memainkan video dalam mod gambar dalam gambar.</translation> <translation id="8467326454809944210">Pilih bahasa lain</translation> -<translation id="8470214316007448308">Orang Lain</translation> <translation id="8470513973197838199">Kata laluan disimpan untuk <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Tapak biasanya menyambung kepada peranti USB untuk ciri seperti mencetak dokumen atau menyimpan pada peranti storan</translation> <translation id="8471959340398751476">Diskaun dimatikan. Anda boleh menghidupkan diskaun dalam menu sesuaikan</translation> @@ -7048,6 +7043,7 @@ <translation id="8676374126336081632">Kosongkan input</translation> <translation id="8676770494376880701">Pengecas berkuasa rendah disambungkan</translation> <translation id="8677212948402625567">Runtuhkan semua...</translation> +<translation id="867767487203716855">Kemas kini seterusnya</translation> <translation id="8677859815076891398">Tiada album. Buat album dalam <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Tab tidak mengecil</translation> <translation id="8678933587484842200">Bagaimanakah anda mahu apl ini dilancarkan?</translation> @@ -7136,7 +7132,6 @@ <translation id="87646919272181953">Album Google Photos</translation> <translation id="8767621466733104912">Kemas kini Chrome untuk semua pengguna secara automatik</translation> <translation id="8770406935328356739">Direktori akar sambungan</translation> -<translation id="8770507190024617908">Urus Orang</translation> <translation id="8771300903067484968">Latar belakang halaman mula telah ditetapkan semula kepada latar belakang lalai.</translation> <translation id="8773302562181397928">Simpan <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Sahkan Pemulihan</translation> @@ -7151,7 +7146,7 @@ <translation id="878069093594050299">Sijil telah disahkan untuk penggunaan berikut:</translation> <translation id="8781834595282316166">Tab Baharu dalam Kumpulan</translation> <translation id="8782565991310229362">Pelancaran aplikasi kios dibatalkan.</translation> -<translation id="8783834180813871000">Taip kod berpasangan Bluetooth, kemudian tekan Return atau Enter.</translation> +<translation id="8783834180813871000">Taip kod gandingan Bluetooth, kemudian tekan Return atau Enter.</translation> <translation id="8784626084144195648">Purata Bin</translation> <translation id="8785622406424941542">Stilus</translation> <translation id="8787254343425541995">Benarkan proksi untuk rangkaian yang dikongsi</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index f786821..66b6863b 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -1535,7 +1535,7 @@ <translation id="2610780100389066815">Microsoft ယုံကြည်မှု စာရင်းထက်မှတ်ထိုး</translation> <translation id="2612676031748830579">ကဒ်နံပါတ်</translation> <translation id="2616366145935564096">သင်၏ ဒေတာကို<ph name="WEBSITE_1" />မှာ ဖတ်ပါ၊ ပြောင်းလဲပါ</translation> -<translation id="2617342710774726426">ဆင်းမ်ကဒ် လော့ခ်ကျနေပါသည်</translation> +<translation id="2617342710774726426">ဆင်းမ်ကတ် လော့ခ်ကျနေပါသည်</translation> <translation id="2618797463720777311">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကို စနစ်ထည့်သွင်းခြင်း</translation> <translation id="2619761439309613843">နေ့စဉ် ပြန်လည်စတင်ရန်</translation> <translation id="2620215283731032047"><ph name="FILE_NAME" /> ကို လုံခြုံစွာ ဒေါင်းလုဒ်လုပ်၍မရပါ။</translation> @@ -2874,7 +2874,6 @@ <translation id="4035758313003622889">အလုပ် မန်နေဂျာ</translation> <translation id="4036778507053569103">ဆာဗာမှနေ၍ ဒေါင်းလုဒ်လုပ်ထားသည့် မူဝါဒသည် မမှန်ကန်ပါ။</translation> <translation id="4037084878352560732">မြင်း</translation> -<translation id="4037889604535939429">လူပုဂ္ဂိုလ်ကို တည်းဖြတ်ပါ</translation> <translation id="4040753847560036377">PUK မမှန်ပါ</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{စာမျက်နှာကို ပိတ်ရန်}other{စာမျက်နှာများကို ပိတ်ရန်}}</translation> <translation id="4044612648082411741">သင်၏ အသိအမှတ်ပြုလက်မှတ် စကားဝှက်ကို ထည့်ပါ</translation> @@ -3847,7 +3846,7 @@ <translation id="5158983316805876233">ပရိုတိုကော အားလုံး အတွက် တစ်ခုတည်းသော ပရော့က်စီကို သုံးရန်</translation> <translation id="5159094275429367735">Crostini စနစ် ထည့်သွင်းရန်</translation> <translation id="5159419673777902220">နောက်ဆက်တွဲခွင့်ပြုချက်များကို သင့်မိဘက ပိတ်ထားသည်</translation> -<translation id="5160634252433617617">လက်ကွက် ခလုတ်ခုံ</translation> +<translation id="5160634252433617617">စက်၏ ကီးဘုတ်</translation> <translation id="5160857336552977725">သင့်<ph name="DEVICE_TYPE" /> သို့ လက်မှတ်ထိုးဝင်ရန်</translation> <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> မှ USB ကိရိယာများ</translation> <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> ကို ပိတ်ထားလိုက်ပါပြီ</translation> @@ -4344,7 +4343,6 @@ <translation id="5709557627224531708">Chromium ကို သင်၏မူရင်းဘရောင်ဇာအဖြစ် သတ်မှတ်ပါ</translation> <translation id="5711983031544731014">သော့ဖွင့် မရပါ။ သင်၏ စကားဝှက်ကို ရိုက်ထည့်ပါ။</translation> <translation id="5712153969432126546">ဝဘ်ဆိုက်များသည် စာရွက်စာတမ်း၊ စာချုပ်နှင့် ဖောင်များကဲ့သို့ PDF များကို တစ်ခါတစ်ရံ ထုတ်ဝေသည်</translation> -<translation id="5712323955984474772">လာမည့် အပ်ဒိတ်</translation> <translation id="5715711091495208045">ပလတ်အင် အကျိုးဆောင်- <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">မူရင်းရှာဖွေမှုအင်ဂျင်များ</translation> <translation id="5719637365829998022">QR ကုဒ်ကို စကင်ဖတ်ပြီးပါပြီ။</translation> @@ -5113,7 +5111,6 @@ <translation id="6563469144985748109">သင့်စီမံခန့်ခွဲသူသည် ၎င်းကို အတည်မပြုသေးပါ</translation> <translation id="6568283005472142698">တဘ်ရှာဖွေမှု</translation> <translation id="6569911211938664415">မည်သည့်စက်တွင်မဆို အသုံးပြုနိုင်ရန် စကားဝှက်များကို သင်၏ Google Account (<ph name="ACCOUNT" />) တွင် သိမ်းထားပါသည်။</translation> -<translation id="6569934958368283244">အခြားလူများ</translation> <translation id="6573497332121198392">ဖြတ်လမ်းလင့်ခ်ကို ဖယ်ရှား၍မရပါ</translation> <translation id="657402800789773160">&ဒီစာမျက်နှာကို ပြန်တင်ရန်</translation> <translation id="6577284282025554716">ဒေါင်းလုဒ်လုပ်ခြင်းကို ပယ်ဖျက်ထားသည်− <ph name="FILE_NAME" /></translation> @@ -6799,7 +6796,6 @@ <translation id="8393700583063109961">စာပို့ရန်</translation> <translation id="8397825320644530257">ချိတ်ဆက်ထားသောဖုန်းကို ဖြုတ်ရန်</translation> <translation id="8398877366907290961">မည်သို့ပင် ဖြစ်စေ ရှေ့ဆက်မည်</translation> -<translation id="8400146488506985033">လူများကို စီမံခန့်ခွဲပါ</translation> <translation id="8401432541486058167">သင့်အဆင့်မြင့်ကတ်နှင့် ဆက်စပ်နေသော ပင်နံပါတ်ကို ပေးပါ။</translation> <translation id="8404893580027489425">လက်ဗွေ အာရုံခံကိရိယာသည် သင့် <ph name="DEVICE_TYPE" /> ၏ ညာဘက်တွင် ရှိသည်။ လက်တစ်ချောင်းဖြင့် ၎င်းကို အသာထိပါ။</translation> <translation id="8405046151008197676">နောက်ဆုံးထွက် အပ်ဒိတ်မှ အထူးအသားပေးများကို ရယူပါ</translation> @@ -6826,7 +6822,7 @@ <translation id="8428634594422941299">ရပါပြီ</translation> <translation id="84297032718407999">သင်သည် <ph name="LOGOUT_TIME_LEFT" /> အတွင်း ထွက်သွားပါမည်</translation> <translation id="8431190899827883166">တို့ရန်များကို ပြခြင်း</translation> -<translation id="8431909052837336408">ဆင်းမ်ကဒ် ပင်နံပါတ်ပြောင်းရန်</translation> +<translation id="8431909052837336408">ဆင်းမ်ကတ် ပင်နံပါတ်ပြောင်းရန်</translation> <translation id="8434480141477525001">NaCl အမှားရှာပြင်ခြင်း ပို့တ်</translation> <translation id="8435395510592618362">သင်မည်သူမည်ဝါဖြစ်ကြောင်း <ph name="APP_NAME" /> နှင့် အတည်ပြုပါ</translation> <translation id="8437209419043462667">US</translation> @@ -6839,7 +6835,7 @@ <translation id="8448729345478502352">သင်၏ မျက်နှာပြင်ပေါ်ရှိ အရာများကို ပိုသေးအောင် သို့မဟုတ် ပိုကြီးအောင် ပြုလုပ်ပါ</translation> <translation id="8449008133205184768">ကပ်ပေးရန် နှင့် စတိုင် ညှိပေ</translation> <translation id="8449036207308062757">သိုလှောင်ခန်းကို စီမံခန့်ခွဲပါ</translation> -<translation id="8452135315243592079">ဆင်းမ်ကဒ် မရှိပါ</translation> +<translation id="8452135315243592079">ဆင်းမ်ကတ် မရှိပါ</translation> <translation id="8455026683977728932">ADB သရုပ်ဖော်ပုံကို ဖွင့်၍မရပါ</translation> <translation id="8456512334795994339">အလုပ်နှင့် ဖျော်ဖြေရေးအတွက် အက်ပ်များ ရှာဖွေပါ</translation> <translation id="845702320058262034">ချိတ်ဆက်၍ မရပါ။ သင့်ဖုန်း၏ ဘလူးတုသ်ကို ဖွင့်ထားပါ။</translation> @@ -6855,7 +6851,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> သည် အလုပ်လုပ်နိုင်ရန် သင့်ခွင့်ပြုချက် လိုအပ်သည်</translation> <translation id="8466417995783206254">ဤတဘ်သည် ဗီဒီယိုကို 'တစ်ခုပေါ်တစ်ခုထပ်၍ ဖွင့်သည့်မုဒ်' တွင် ဖွင့်နေသည်။</translation> <translation id="8467326454809944210">အခြားဘာသာစကားတစ်ခု ရွေးရန်</translation> -<translation id="8470214316007448308">အခြားလူများ</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> အတွက် သိမ်းဆည်းထားသည့် စကားဝှက်များ</translation> <translation id="8471525937465764768">မှတ်တမ်းဖိုင်ပုံနှိပ်ထုတ်ရန် သို့မဟုတ် သိုလှောင်ခန်းကိရိယာတွင် သိမ်းရန်ကဲ့သို့ ဝန်ဆောင်မှုများအတွက် USB ကိရိယာများသို့ ဝဘ်ဆိုက်များက ချိတ်ဆက်လေ့ရှိသည်</translation> <translation id="8471959340398751476">လျှော့ဈေးများကို ပိတ်ထားသည်။ မီနူးစိတ်ကြိုက်ပြင်သည့် နေရာတွင် ၎င်းတို့ကို ပြန်ဖွင့်နိုင်သည်</translation> @@ -7042,6 +7037,7 @@ <translation id="8676374126336081632">ထည့်သွင်းမှု ရှင်းရန်</translation> <translation id="8676770494376880701">ပါဝါနှိမ့် အားသွင်းကိရိယာ ချိတ်ဆက်ထားသည်</translation> <translation id="8677212948402625567">အားလုံး ခေါက်သိမ်းရန်...</translation> +<translation id="867767487203716855">လာမည့် အပ်ဒိတ်</translation> <translation id="8677859815076891398">အယ်လ်ဘမ် မရှိပါ။ <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> တွင် အယ်လ်ဘမ်တစ်ခု ပြုလုပ်ပါ။</translation> <translation id="8678582529642151449">တဘ်များချုံ့သွားမည် မဟုတ်ပါ</translation> <translation id="8678933587484842200">ဤအပလီကေးရှင်းကို မည်ကဲ့သို့ စတင်စေလိုပါသနည်း။</translation> @@ -7130,7 +7126,6 @@ <translation id="87646919272181953">Google Photos အယ်လ်ဘမ်</translation> <translation id="8767621466733104912">အသုံးပြုသူများ အားလုံးအတွက် Chrome ကို အလိုအလျောက် အပ်ဒိတ်လုပ်ပါ</translation> <translation id="8770406935328356739">နောက်ဆက်တွဲ ပင်မလမ်းကြောင်း</translation> -<translation id="8770507190024617908">လူများကို စီမံခန့်ခွဲပါ</translation> <translation id="8771300903067484968">စတင်သည့် စာမျက်နှာနောက်ခံကို မူလနောက်ခံသို့ ပြင်ဆင်သတ်မှတ်ထားပါသည်။</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ကို သိမ်းရန်</translation> <translation id="8774379074441005279">ပြန်ယူခြင်းကို အတည်ပြုခြင်း</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 63eb4ce2..89546b6 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -38,7 +38,7 @@ <translation id="1038462104119736705">Linux प्रयोग गर्न कम्तीमा पनि <ph name="INSTALL_SIZE" /> ठाउँ खाली राख्न सिफारिस गरिन्छ। थप ठाउँ खाली गर्न आफ्नो यन्त्रमा भएका फाइलहरू मेटाउनुहोस्।</translation> <translation id="1039337018183941703">अमान्य वा बिग्रिएको फाइल</translation> <translation id="1041175011127912238">यो पृष्ठले प्रतिक्रिया जनाइरहेको छैन</translation> -<translation id="1041263367839475438">उपलब्ध यन्त्रहरू</translation> +<translation id="1041263367839475438">उपलब्ध डिभाइस</translation> <translation id="1042174272890264476">तपाइँको कम्प्युटर <ph name="SHORT_PRODUCT_NAME" /> को RLZ अन्तरनिर्मित पुस्तकालयसँग पनि आउँछ। एक विशेष वृद्धि जनक अभियानद्वारा चालू भएको खोजीहरू र <ph name="SHORT_PRODUCT_NAME" /> प्रयोगहरू नाप्नको लागि RLZ ले एउटा अद्वितीय नभएको, व्यक्तिगत नभएको ठम्याउन सकिने ट्याग तोक्छ। यी लेबुलहरू कहिलेकाही <ph name="PRODUCT_NAME" /> मा Google खोजी क्वेरीहरूमका देखा पर्छन्।</translation> <translation id="1043818413152647937">यी अनुप्रयोगहरूका डेटा पनि खाली गर्ने हो?</translation> <translation id="104710386808485638">Linux पुनः सुरु गर्ने हो?</translation> @@ -581,7 +581,7 @@ <translation id="1621729191093924223">माइक्रोफोन प्रयोग गर्ने सुविधाहरूले काम गर्ने छैनन्</translation> <translation id="1621831347985899379"><ph name="DEVICE_TYPE" /> मा भएको डेटा मेटाइने छ</translation> <translation id="1622054403950683339">Wi-Fi नेटवर्क हटाउनुहोस्</translation> -<translation id="1623132449929929218">छविहरू अहिले उपलब्ध छैनन्। वालपेपरका सङ्ग्रहहरू हेर्न कृपया इन्टरनेटमा पुनः जडान गर्नुहोस्।</translation> +<translation id="1623132449929929218">छविहरू अहिले उपलब्ध छैनन्। वालपेपरका सङ्ग्रहहरू हेर्न कृपया इन्टरनेटमा पुनः कनेक्ट गर्नुहोस्।</translation> <translation id="1623723619460186680">निलो प्रकाश घटाउने कार्य</translation> <translation id="1624012933569991823">सेटिङ</translation> <translation id="1624599281783425761">तपाईं अब उप्रान्त <ph name="MERCHANT" /> देख्नु हुने छैन</translation> @@ -919,7 +919,7 @@ <translation id="1974043046396539880">CRL वितरण बिन्दुहरू</translation> <translation id="1974060860693918893">उन्नत</translation> <translation id="1974159333077206889">सबै स्पिकरमा उस्तै अडियो प्रयोग गरियोस्</translation> -<translation id="1974821797477522211">नेटवर्कमा जडान गर्नुहोस्</translation> +<translation id="1974821797477522211">नेटवर्कमा कनेक्ट गर्नुहोस्</translation> <translation id="1975841812214822307">हटाउनुहोस्...</translation> <translation id="1976150099241323601">सुरक्षा यन्त्रमा साइन इन गर्नुहोस्</translation> <translation id="1976928778492259496">फिंगरप्रिन्ट सेन्सर तपाईंको <ph name="DEVICE_TYPE" /> को बायाँतिर हुन्छ। यसलाई जुनसुकै औँलाले हल्का छुनुहोस्।</translation> @@ -946,7 +946,7 @@ <translation id="2000419248597011803">यसले ठेगाना पट्टी र खोज बाकसका केही कुकी र खोजहरूलाई तपाईंको डिफल्ट खोज इन्जिनमा पठाउँछ</translation> <translation id="2002109485265116295">वास्तविक समय</translation> <translation id="200217416291116199">अपग्रेड गर्ने कार्य पूरा हुन नसकेका खण्डमा फाइलहरू नगुमुन् भन्नाका खातिर अपग्रेड गर्नुअघि फाइलहरू ब्याकअप गर्नुहोस्। तपाईंले अपग्रेड सुरु गर्नुभयो भने Linux बन्द हुने छ। कृपया सुरु गर्नुअघि खोलिएका फाइलहरू सेभ गर्नुहोस्।</translation> -<translation id="2003130567827682533">'<ph name="NAME" />' नामक मोबाइल डेटा सेवा सक्रिय गर्न सर्वप्रथम कुनै Wi-Fi नेटवर्कमा जडान गर्नुहोस्</translation> +<translation id="2003130567827682533">'<ph name="NAME" />' नामक मोबाइल डेटा सेवा सक्रिय गर्न सर्वप्रथम कुनै Wi-Fi नेटवर्कमा कनेक्ट गर्नुहोस्</translation> <translation id="2005199804247617997">अन्य प्रोफाइलहरू</translation> <translation id="2006638907958895361">लिंकलाई <ph name="APP" /> मा खोल्नुहोस्</translation> <translation id="2007404777272201486">एउटा मामिला प्रतिवेदन गर्नुहोस्...</translation> @@ -1104,7 +1104,7 @@ <translation id="216169395504480358">Wi-Fi थप्नुहोस्...</translation> <translation id="2162155940152307086">तपाईंले सिंकसम्बन्धी सेटिङहरूको पृष्ठ छोडेपछि सिंक सुरु हुने छ</translation> <translation id="2163004395084716754">यो की पहिचान हुन सकेन। बाहिर निस्कन कुनै पनि की थिच्नुहोस्।</translation> -<translation id="2163470535490402084">तपाईँको <ph name="DEVICE_TYPE" /> मा साइन इन गर्न कृपया इन्टरनेट जडान गर्नुहोस्।</translation> +<translation id="2163470535490402084">तपाईँको <ph name="DEVICE_TYPE" /> मा साइन इन गर्न कृपया इन्टरनेट कनेक्ट गर्नुहोस्।</translation> <translation id="2164131635608782358"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> र थप एउटा स्विच</translation> <translation id="2165421703844373933">"Ok Google" भनेर आफ्नो सहायकमाथि पहुँच राख्नुहोस्। ब्याट्रीको खपत कम गर्न “सक्रिय (सिफारिस गरिएको)” छनौट गर्नुहोस्। तपाईंको सहायकले तपाईंको यन्त्र बिजुलीको प्लगमा जोडिएको वा चार्ज भइरहेको बेलामा मात्र जवाफ दिने छ।</translation> <translation id="2166369534954157698">अ आ इ ई उ ऊ ए ऐ ओ औ अं अ: क ख ग घ ङ</translation> @@ -1525,7 +1525,7 @@ <translation id="2627424346328942291">सेयर गर्न सकिएन</translation> <translation id="2628770867680720336">ADB डिबग प्रक्रिया सक्षम पार्न यो Chromebook को सेटिङ रिसेट गरी फ्याक्ट्री संस्करणमा लैजानु पर्ने हुन्छ। <ph name="BEGIN_LINK_LEARN_MORE" />थप जान्नुहोस्<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="2629227353894235473">Android एपहरू बनाउनुहोस्</translation> -<translation id="2630681426381349926">सुरु गर्नको लागि Wi-Fi मा जडान गर्नुहोस्</translation> +<translation id="2630681426381349926">सुरु गर्नको लागि Wi-Fi मा कनेक्ट गर्नुहोस्</translation> <translation id="2631498379019108537">सेल्फमा इनपुटका विकल्पहरू देखाउनुहोस्</translation> <translation id="2633212996805280240">"<ph name="EXTENSION_NAME" />" हटाउने?</translation> <translation id="263325223718984101"><ph name="PRODUCT_NAME" /> ले स्थापना पूरा गर्न सकेन, तर यसको डिस्क छविबाट चालउन जारी राख्नेछ।</translation> @@ -1722,7 +1722,7 @@ <translation id="2824942875887026017"><ph name="IDS_SHORT_PRODUCT_NAME" /> ले तपाईंको प्रशासकका प्रोक्सी सेटिङ प्रयोग गरिरहेको छ</translation> <translation id="2825758591930162672">विषयको सार्वजनिक कुञ्जी</translation> <translation id="2828375943530438449">साइन इन गर्ने पेजबाट अघिल्लो पेजमा फर्कनुहोस्</translation> -<translation id="2828650939514476812">Wi-Fi नेटवर्कसँग जडान गर्नुहोस्</translation> +<translation id="2828650939514476812">Wi-Fi नेटवर्कसँग कनेक्ट गर्नुहोस्</translation> <translation id="2831430281393059038">डिभाइस प्रयोग गर्न मिल्ने हुनु पर्छ</translation> <translation id="2835547721736623118">वाक् पहिचान सेवा</translation> <translation id="2836269494620652131">क्र्यास</translation> @@ -2845,7 +2845,6 @@ <translation id="4035758313003622889">&कार्य व्यवस्थापक</translation> <translation id="4036778507053569103">सर्भरबाट डाउनलोड गरिएको नीति अमान्य छ।</translation> <translation id="4037084878352560732">घोडा</translation> -<translation id="4037889604535939429">व्यक्तिलाई सम्पादन गर्नुहोस्</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{पृष्ठबाट बाहिरिनुहोस्}other{पृष्ठहरूबाट बाहिरिनुहोस्}}</translation> <translation id="4044612648082411741">आफ्नो प्रमाणपत्रको पासवर्ड प्रविष्टि गर्नुहोस्</translation> <translation id="4044708573046946214">स्क्रिन लक पासवर्ड</translation> @@ -3024,7 +3023,7 @@ <translation id="4266679478228765574">फोल्डरहरू हटाउनुले ती फोल्डर सेयर हुन छाड्ने छन् तर ती फोल्डरभित्र रहेका फाइलहरू भने मेटाइने छैनन्।</translation> <translation id="4267455501101322486">शैक्षिक स्रोत साधनहरू प्रयोग गर्नका लागि एउटा खाता थप्न आफ्ना अभिभावकलाई खाता थप्ने अनुमति दिन आग्रह गर्नुहोस्</translation> <translation id="4267924571297947682">अभिभावकसँग अनुमति माग्नुहोस्</translation> -<translation id="4267953847983678297">सेलुलर नेटवर्कमा स्वतः जडान गर्नुहोस्</translation> +<translation id="4267953847983678297">सेलुलर नेटवर्कमा स्वतः कनेक्ट गर्नुहोस्</translation> <translation id="4268025649754414643">कुञ्जी इन्सिफरमेन्ट</translation> <translation id="4268670020635416342">कार्यालय, व्यक्तिगत वा बच्चाबच्ची जस्तो कुनै नाम वा लेबल हाल्नुहोस्</translation> <translation id="4270393598798225102">संस्करण <ph name="NUMBER" /></translation> @@ -3723,7 +3722,7 @@ <translation id="5059526285558225588">सेयर गरिनु पर्ने जानकारी छनौट गर्नुहोस्</translation> <translation id="5060332552815861872">सुरक्षित गर्नका लागि १ प्रिन्टर उपलब्ध छ।</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{यस फोल्डरमा एउटा पुस्तक चिन्ह छ। तपाईं निश्चित रूपमा यसलाई मेटाउन चाहनुहुन्छ?}other{यस फोल्डरमा # वटा पुस्तक चिन्हहरू छन्। तपाईं निश्चित रूपमा यसलाई मेटाउन चाहनुहुन्छ?}}</translation> -<translation id="5062930723426326933">साइन-इन असफल भयो, कृपया इन्टरनेटमा जडान गर्नुहोस् र पुन: प्रयास गर्नुहोस्।</translation> +<translation id="5062930723426326933">साइन-इन असफल भयो, कृपया इन्टरनेटमा कनेक्ट गर्नुहोस् र पुन: प्रयास गर्नुहोस्।</translation> <translation id="5063480226653192405">उपयोग</translation> <translation id="5065775832226780415">Smart Lock</translation> <translation id="5067399438976153555">सधैं सक्रिय</translation> @@ -3905,7 +3904,7 @@ <translation id="526260164969390554">पूर्ण स्क्रिन म्याग्निफायर अन वा अफ गर्न Ctrl+<ph name="SEARCH_KEY_NAME" />+M थिच्नुहोस्। जुम इन गरेका बेला स्क्रिनमा एक ठाउँबाट अर्को ठाउँमा जान Ctrl+Alt+एरो कीहरू थिच्नुहोस्।</translation> <translation id="5262784498883614021">नेटवर्कमा स्वतः कनेक्ट गर्नुहोस्</translation> <translation id="5264148714798105376">लोड हुन एक मिनेट जति लाग्न सक्छ।</translation> -<translation id="5264252276333215551">कृपया किओस्क मोडमा तपाईंको एप्लिकेसनलाई लन्च गर्न इन्टरनेटमा जडान गर्नुहोस्।</translation> +<translation id="5264252276333215551">कृपया किओस्क मोडमा तपाईंको एप्लिकेसनलाई लन्च गर्न इन्टरनेटमा कनेक्ट गर्नुहोस्।</translation> <translation id="5265562206369321422">एक हप्ता भन्दा बढीको लागि अफलाइन</translation> <translation id="5265797726250773323">स्थापना गर्ने क्रममा त्रुटि भयो</translation> <translation id="5266113311903163739">प्रमाणपत्र प्राधिकरण आयात त्रुटि</translation> @@ -3946,7 +3945,7 @@ <translation id="5305688511332277257">कुनै स्थापित छैन</translation> <translation id="5307030433605830021">स्रोत समर्थित छैन</translation> <translation id="5307386115243749078">ब्लुटुथको स्विचसँग कनेक्ट गर्नुहोस्</translation> -<translation id="5308380583665731573">जडान गर्नुहोस्</translation> +<translation id="5308380583665731573">कनेक्ट गर्नुहोस्</translation> <translation id="5310281978693206542">आफ्ना यन्त्रहरूमा लिंक पठाउनुहोस्</translation> <translation id="5311304534597152726">यस रूपमा साइन इन गर्दै</translation> <translation id="5311565231560644461">साइटहरूलाई भर्चुअल रियालिटी चल्ने तपाईंका यन्त्रहरू र तिनमा भएका डेटा प्रयोग गर्न नदिनुहोस्</translation> @@ -5009,7 +5008,7 @@ <translation id="6503077044568424649">सबैभन्दा धेरै भ्रमण गरिएको</translation> <translation id="650457560773015827">बायाँतिरको बटन</translation> <translation id="6504601948739128893">तपाईंको डिभाइसमा इन्स्टल गरिएका फन्ट प्रयोग गर्न नदिइएका साइटहरू</translation> -<translation id="6504611359718185067">प्रिन्टर थप्नका लागि इन्टरनेटमा जडान गर्नुहोस्</translation> +<translation id="6504611359718185067">प्रिन्टर थप्नका लागि इन्टरनेटमा कनेक्ट गर्नुहोस्</translation> <translation id="6506374932220792071">SHA-256 सहितको X9.62 ECDSA हस्ताक्षर</translation> <translation id="6508248480704296122"><ph name="NAME_PH" /> सँग सम्बन्धित</translation> <translation id="6508261954199872201">एप: <ph name="APP_NAME" /></translation> @@ -5068,7 +5067,6 @@ <translation id="6563469144985748109">तपाईंको प्रबन्धकले अझै पनि यसलाई अनुमोदन गर्नुभएको छैन</translation> <translation id="6568283005472142698">ट्याबमा खोज्ने सुविधा</translation> <translation id="6569911211938664415">तपाईं आफ्ना पासवर्डहरू जुनसुकै डिभाइसमा प्रयोग गर्न सक्नुहोस् भन्नाका खातिर ती पासवर्डहरू तपाईंको Google खाता (<ph name="ACCOUNT" />) मा सुरक्षित गरिन्छ</translation> -<translation id="6569934958368283244">अन्य मान्छेहरू</translation> <translation id="6573497332121198392">सर्टकट हटाउन सकिँदैन</translation> <translation id="657402800789773160">यो पेजलाई &पुन: लोड गर्नुहोस्</translation> <translation id="6577284282025554716">डाउनलोड रद्द गरियो: <ph name="FILE_NAME" /></translation> @@ -5189,7 +5187,7 @@ <translation id="6707389671160270963">SSL सेवाग्राही प्रमाणपत्र</translation> <translation id="6709002550153567782">{NUM_PAGES,plural, =0{<ph name="PAGE_TITLE" />}=1{<ph name="PAGE_TITLE" /> र अन्य १ ट्याब}other{<ph name="PAGE_TITLE" /> र अन्य # ट्याबहरू}}</translation> <translation id="6709133671862442373">समाचार</translation> -<translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> प्रयोग गरेर जडान गर्नुहोस्</translation> +<translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> प्रयोग गरेर कनेक्ट गर्नुहोस्</translation> <translation id="6710213216561001401">अघिल्लो</translation> <translation id="6713233729292711163">कार्य प्रोफाइल हाल्नुहोस्</translation> <translation id="6715803357256707211">तपाईंको Linux एप स्थापना गर्ने क्रममा कुनै त्रुटि भयो। विस्तृत विवरणका लागि सूचनामा क्लिक गर्नुहोस्।</translation> @@ -5235,7 +5233,7 @@ <translation id="6770602306803890733">तपाईं र वेब प्रयोग गर्ने सम्पूर्ण प्रयोगकर्ताहरूलाई झन् सुरक्षित राख्छ</translation> <translation id="6771503742377376720">एउटा प्रमाणीकरण अधिकार हो</translation> <translation id="6772339735733515807">आफ्ना एक्स्टेन्सनहरूको व्यवस्थापन गर्नुहोस्</translation> -<translation id="6775163072363532304">उपलब्ध यन्त्रहरू यहाँ देखिने छन्।</translation> +<translation id="6775163072363532304">उपलब्ध डिभाइस यहाँ देखिने छन्।</translation> <translation id="6777817260680419853">रिडिरेक्ट गर्न रोक लगाइयो</translation> <translation id="6778737459546443941">तपाईंको अभिभावले अझै पनि यसलाई अनुमोदन गर्नुभएको छैन</translation> <translation id="6779447100905857289">तपाईंका कार्टहरू</translation> @@ -5300,7 +5298,7 @@ <translation id="6833479554815567477">यो ट्याब <ph name="GROUP_NAME" /> समूहबाट हटाइयो - <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">कुनै स्मार्ट तथा सुरक्षित ब्राउजरमा बदल्नुहोस्</translation> <translation id="683540480453879381"><ph name="FILE_EXTENSIONS" /> फाइलहरू खोल्नुहोस्</translation> -<translation id="6835762382653651563">कृपया तपाईँको <ph name="DEVICE_TYPE" /> अद्यावधिक गर्न इन्टरनेटमा जडान गर्नुहोस्।</translation> +<translation id="6835762382653651563">कृपया तपाईँको <ph name="DEVICE_TYPE" /> अद्यावधिक गर्न इन्टरनेटमा कनेक्ट गर्नुहोस्।</translation> <translation id="6838034009068684089">कुनै साइटले मेरा स्क्रिनहरूमा विन्डो राख्न र त्यहाँ भएका विन्डो खोल्न खोज्दा त्यसो गर्न दिने कि नदिने भनी सोधियोस् (सिफारिस गरिएको)</translation> <translation id="6839225236531462745">प्रमाणपत्र मेटाइमा त्रुटी</translation> <translation id="6839916869147598086">साइन इन परिवर्तन गरिएको छ</translation> @@ -5799,7 +5797,7 @@ <translation id="7385854874724088939">छाप्ने प्रयास गर्दा केही गलत भयो। कृपया तपाइँको मुद्रक जाँच गरि पुण; प्रयास गर्नुहोस्।</translation> <translation id="7385896526023870365">यो विस्तारले कुनै अतिरिक्त साइटमाथि पहुँच राख्न सक्दैन।</translation> <translation id="7387273928653486359">स्वीकार्य</translation> -<translation id="7388209873137778229">यो सुविधा उपलब्ध यन्त्रहरू मात्र देखाइएका छन्।</translation> +<translation id="7388209873137778229">यो सुविधा उपलब्ध डिभाइस मात्र देखाइएका छन्।</translation> <translation id="7392118418926456391">भाइरस स्क्यान असफल भयो</translation> <translation id="7392915005464253525">बन्द विण्डोलाई पुन: खो&ल्नुहोस्</translation> <translation id="7393073300870882456">{COUNT,plural, =1{एउटा वस्तु कपी गरियो}other{{COUNT} वटा वस्तु कपी गरिए}}</translation> @@ -5862,7 +5860,7 @@ <translation id="7456847797759667638">खुला स्थान...</translation> <translation id="7457384018036134905">Chrome OS का सेटिङमा गई भाषाहरू व्यवस्थापन गर्नुहोस्</translation> <translation id="7457831169406914076">{COUNT,plural, =1{एउटा लिंक}other{# वटा लिंक}}</translation> -<translation id="7458168200501453431">Google खोजमा प्रयोग हुने हिज्जे-जाँचकर्ता नै प्रयोग गर्छ। तपाईंले ब्राउजरमा टाइप गर्नुभएको पाठ Google लाई पठाइन्छ।</translation> +<translation id="7458168200501453431">Google खोजमा प्रयोग हुने स्पेल चेकर नै प्रयोग गर्छ। तपाईंले ब्राउजरमा टाइप गर्नुभएको पाठ Google लाई पठाइन्छ।</translation> <translation id="7460045493116006516">तपाईंले स्थापना गर्नुभएको हालको विषयवस्तु</translation> <translation id="7461924472993315131">पिन</translation> <translation id="746216226901520237">अर्को पटकदेखि, तपाईंको फोनले तपाईंको <ph name="DEVICE_TYPE" /> अनलक गर्ने छ। तपाईं सेटिङहरूमा गई Smart Lock निष्क्रिय पार्न सक्नुहुन्छ।</translation> @@ -5870,7 +5868,7 @@ <translation id="7465635034594602553">केही चिज गडबड भयो। कृपया केही बेर प्रतीक्षा गरी <ph name="APP_NAME" /> फेरि चलाउनुहोस्।</translation> <translation id="7465778193084373987">नेटस्केप प्रमाणपत्र रिभोकेसन युआरएल</translation> <translation id="746861123368584540">यो एक्स्टेन्सन लोड गरिएको छ</translation> -<translation id="7469894403370665791">यो नेटवर्कमा स्वचालित रूपमा जडान गर्नुहोस्</translation> +<translation id="7469894403370665791">यो नेटवर्कमा स्वचालित रूपमा कनेक्ट गर्नुहोस्</translation> <translation id="7470424110735398630">तपाईंको क्लिपबोर्ड हेर्ने अनुमति दिइएका साइटहरू</translation> <translation id="747114903913869239">त्रुटि: विस्तार डिकोड गर्न असक्षम भयो</translation> <translation id="7473891865547856676">पर्दैन, धन्यवाद</translation> @@ -6374,7 +6372,7 @@ <translation id="7982789257301363584">सञ्जाल</translation> <translation id="7984068253310542383"><ph name="DISPLAY_NAME" /> प्रतिविम्ब</translation> <translation id="7986295104073916105">पढ्नुहोस् र सुरक्षित पासवर्ड सेटिङहरू परिवर्तन गर्नुहोस्</translation> -<translation id="7987814697832569482">सधैँ यो VPN मार्फत जडान गर्नुहोस्</translation> +<translation id="7987814697832569482">सधैँ यो VPN मार्फत कनेक्ट गर्नुहोस्</translation> <translation id="7988355189918024273">पहुँच सम्बन्धी सुविधाहरूलाई सक्षम पार्नुहोस्</translation> <translation id="7991296728590311172">स्विचमार्फत पहुँच राख्ने सुविधासम्बन्धी सेटिङहरू</translation> <translation id="7997826902155442747">प्रक्रिया प्राथमिकता</translation> @@ -6742,7 +6740,6 @@ <translation id="8393700583063109961">सन्देश पठाउनुहोस्</translation> <translation id="8397825320644530257">कनेक्ट गरिएको फोन डिस्कनेक्ट गर्नुहोस्</translation> <translation id="8398877366907290961">जे भए पनि अघि बढ्नुहोस्</translation> -<translation id="8400146488506985033">व्यक्तिहरूको व्यवस्थापन गर्नुहोस्</translation> <translation id="8401432541486058167">आफ्नो स्मार्ट कार्डसँग सम्बद्ध PIN प्रदान गर्नुहोस्।</translation> <translation id="8404893580027489425">फिंगरप्रिन्ट सेन्सर तपाईंको <ph name="DEVICE_TYPE" /> को दायाँतिर हुन्छ। यसलाई जुनसुकै औँलाले हल्का छुनुहोस्।</translation> <translation id="8405046151008197676">पछिल्लो अद्यावधिकका हाइलाइटहरू प्राप्त गर्नुहोस्</translation> @@ -6798,7 +6795,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> सञ्चालन गर्नका लागि तपाईंको अनुमति चाहिन्छ</translation> <translation id="8466417995783206254">यो ट्याबले picture-in-picture मोडमा भिडियो प्ले गर्दै छ।</translation> <translation id="8467326454809944210">अर्को भाषा छनौट गर्नुहोस्</translation> -<translation id="8470214316007448308">अन्य मान्छेहरू</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> का सुरक्षित गरिएका पासवर्डहरू</translation> <translation id="8471525937465764768">साइटहरूले डकुमेन्ट प्रिन्ट गर्ने वा भण्डारण यन्त्रमा सुरक्षित गर्ने जस्ता सुविधाहरू प्रदान गर्न सामान्यतया USB मा कनेक्ट गर्छन्।</translation> <translation id="8471959340398751476">छुटसम्बन्धी जानकारी प्राप्त गर्ने सुविधा अफ गरिएको छ। तपाईं 'आफूले चाहेको जस्तो बनाउनुहोस्' नामक मेनुमा गएर यो सुविधा अन गर्न सक्नुहुन्छ</translation> @@ -7072,7 +7068,6 @@ <translation id="87646919272181953">Google Photos को एल्बम</translation> <translation id="8767621466733104912">सबै प्रयोगकर्ताहरूको Chrome स्वतः अपडेट गर्नुहोस्</translation> <translation id="8770406935328356739">विस्तारको मूल निर्देशिका</translation> -<translation id="8770507190024617908">व्यक्तिहरूको व्यवस्थापन गर्नुहोस्</translation> <translation id="8771300903067484968">सुरुको पृष्ठको पृष्ठभूमिलाई डिफल्ट पृष्ठभूमिका रूपमा पुनः सेट गरिएको छ।</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> सेभ गर्नुहोस्</translation> <translation id="8774379074441005279">पुनर्स्थापना गर्ने कार्य पुष्टि गर्नुहोस्</translation> @@ -7420,7 +7415,7 @@ <translation id="9126149354162942022">कर्सरको रङ</translation> <translation id="9128317794749765148">सेटअप सम्पन्न हुन सकेन</translation> <translation id="9128335130883257666"><ph name="INPUT_METHOD_NAME" /> को सेटिङ पृष्ठ खोल्नुहोस्</translation> -<translation id="9128870381267983090">नेटवर्कमा जडान गर्नुहोस्</translation> +<translation id="9128870381267983090">नेटवर्कमा कनेक्ट गर्नुहोस्</translation> <translation id="9130015405878219958">अवैध मोड प्रविष्ट गरियो।</translation> <translation id="9131487537093447019">ब्लूटुथ यन्त्रहरूबाट सन्देश पठाउनुहोस् र प्राप्त गर्नुहोस्।</translation> <translation id="9137013805542155359">मूल देखाउनुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 3997090..45eff101 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -2567,6 +2567,7 @@ <translation id="3742666961763734085">Kan geen organisatie-eenheid met die naam vinden. Probeer het opnieuw.</translation> <translation id="3744111561329211289">Synchronisatie op de achtergrond</translation> <translation id="3747077776423672805">Als je apps wilt verwijderen, ga je naar Instellingen > Google Play Store > Android-voorkeuren beheren > Apps of App-beheer. Tik op de app die je wilt verwijderen (je moet mogelijk naar rechts of links swipen om de app te vinden). Tik vervolgens op Verwijderen of Uitzetten.</translation> +<translation id="3747220812138541072">Inline schrijfsuggesties laten zien terwijl je typt</translation> <translation id="3748706263662799310">Een fout melden</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3753033997400164841">Eén keer opslaan, Overal gebruiken</translation> @@ -2860,7 +2861,6 @@ <translation id="4035758313003622889">&Taakbeheer</translation> <translation id="4036778507053569103">Het beleid dat van de server is gedownload, is ongeldig.</translation> <translation id="4037084878352560732">Paard</translation> -<translation id="4037889604535939429">Persoon bewerken</translation> <translation id="4040753847560036377">Onjuiste pukcode</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Pagina afsluiten}other{Pagina's afsluiten}}</translation> <translation id="4044612648082411741">Geef je certificaatwachtwoord op</translation> @@ -3256,6 +3256,7 @@ <translation id="4510614391273086606">Linux-bestanden en -apps worden hersteld naar de status van de back-up.</translation> <translation id="451102079304155829">winkelwagens</translation> <translation id="4513275008300099962">Overlay voor vensterbediening uitzetten</translation> +<translation id="4513872120116766993">Voorspellend schrijven</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="451407183922382411">Mogelijk gemaakt door <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Video schakelen tussen afspelen en pauzeren</translation> @@ -4326,7 +4327,6 @@ <translation id="5709557627224531708">Chrome instellen als je standaardbrowser</translation> <translation id="5711983031544731014">Kan niet ontgrendelen. Geef je wachtwoord op.</translation> <translation id="5712153969432126546">Sites publiceren soms pdf's, zoals documenten, contracten en formulieren</translation> -<translation id="5712323955984474772">Volgende update</translation> <translation id="5715711091495208045">Plug-inbroker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standaardzoekmachines</translation> <translation id="5719637365829998022">De QR-code is gescand</translation> @@ -4417,6 +4417,7 @@ <translation id="5826395379250998812">Koppel je <ph name="DEVICE_TYPE" /> aan je telefoon. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="5826993284769733527">Semi-transparant</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">Woordvoorspelling</translation> <translation id="5828545842856466741">Profiel toevoegen...</translation> <translation id="5828633471261496623">Bezig met afdrukken....</translation> <translation id="5830720307094128296">Pagina opslaan &als...</translation> @@ -5098,7 +5099,6 @@ <translation id="6563469144985748109">Je beheerder heeft dit nog niet goedgekeurd</translation> <translation id="6568283005472142698">Zoeken op tabbladen</translation> <translation id="6569911211938664415">Wachtwoorden worden in je Google-account (<ph name="ACCOUNT" />) opgeslagen, zodat je ze op elk apparaat kunt gebruiken</translation> -<translation id="6569934958368283244">Andere mensen</translation> <translation id="6573497332121198392">Kan snelkoppeling niet verwijderen</translation> <translation id="657402800789773160">&Laad pagina opnieuw</translation> <translation id="6577284282025554716">Download geannuleerd: <ph name="FILE_NAME" /></translation> @@ -6287,6 +6287,7 @@ <translation id="78526636422538552">Toevoegen van meer Google-accounts staat uit</translation> <translation id="7853747251428735">Meer hu&lpprogramma's</translation> <translation id="7855678561139483478">Tabblad verplaatsen naar nieuw venster</translation> +<translation id="7857093393627376423">Tekstsuggesties</translation> <translation id="7857117644404132472">Uitzondering toevoegen</translation> <translation id="7857949311770343000">Is dit de nieuwe pagina met tabbladen die je had verwacht?</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6783,7 +6784,6 @@ <translation id="8393700583063109961">Bericht verzenden</translation> <translation id="8397825320644530257">Verbonden telefoon loskoppelen</translation> <translation id="8398877366907290961">Toch doorgaan</translation> -<translation id="8400146488506985033">Mensen beheren</translation> <translation id="8401432541486058167">Geef de pincode op die hoort bij je smartkaart.</translation> <translation id="8404893580027489425">De vingerafdruksensor zit aan de rechterkant van je <ph name="DEVICE_TYPE" />. Raak deze kort aan met een vinger.</translation> <translation id="8405046151008197676">Ontvang de hoogtepunten van de nieuwste update</translation> @@ -6839,7 +6839,6 @@ <translation id="8465444703385715657">Voor het uitvoeren van <ph name="PLUGIN_NAME" /> is je toestemming nodig</translation> <translation id="8466417995783206254">De video op dit tabblad wordt afgespeeld in de scherm-in-scherm-modus.</translation> <translation id="8467326454809944210">Een andere taal kiezen</translation> -<translation id="8470214316007448308">Andere mensen</translation> <translation id="8470513973197838199">Opgeslagen wachtwoorden voor <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Sites maken meestal verbinding met USB-apparaten voor functies zoals het afdrukken van een document of opslaan naar een opslagapparaat</translation> <translation id="8471959340398751476">Kortingen staan uit. Je kunt ze aanzetten via het menu Aanpassen.</translation> @@ -7026,6 +7025,7 @@ <translation id="8676374126336081632">Invoer wissen</translation> <translation id="8676770494376880701">Laag-vermogen-lader aangesloten</translation> <translation id="8677212948402625567">Alles samenvouwen...</translation> +<translation id="867767487203716855">Volgende update</translation> <translation id="8677859815076891398">Geen albums. Maak een album in <ph name="LINK_BEGIN" />Google Foto's<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Tabbladen krimpen niet</translation> <translation id="8678933587484842200">Hoe moet deze app worden gestart?</translation> @@ -7115,7 +7115,6 @@ <translation id="87646919272181953">Google Foto's-album</translation> <translation id="8767621466733104912">Chrome automatisch updaten voor alle gebruikers</translation> <translation id="8770406935328356739">Hoofddirectory van extensie</translation> -<translation id="8770507190024617908">Mensen beheren</translation> <translation id="8771300903067484968">De achtergrond van de startpagina is gereset naar de standaardachtergrond.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> opslaan</translation> <translation id="8774379074441005279">Herstel bevestigen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index cc06c0d..a8d2ed1 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -2868,7 +2868,6 @@ <translation id="4035758313003622889">&Oppgavebehandling</translation> <translation id="4036778507053569103">Regelen som ble lastet ned fra tjeneren, er ugyldig.</translation> <translation id="4037084878352560732">Hest</translation> -<translation id="4037889604535939429">Endre person</translation> <translation id="4040753847560036377">Feil PUK-kode.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Lukk siden}other{Lukk sidene}}</translation> <translation id="4044612648082411741">Angi sertifikatpassordet ditt</translation> @@ -4336,7 +4335,6 @@ <translation id="5709557627224531708">Angi Chrome som standardnettleser</translation> <translation id="5711983031544731014">Kan ikke låse opp. Skriv inn passordet ditt.</translation> <translation id="5712153969432126546">Nettsteder publiserer av og til PDF-filer, for eksempel dokumenter, kontrakter og skjemaer</translation> -<translation id="5712323955984474772">Neste oppdatering</translation> <translation id="5715711091495208045">Programtilleggsmegler: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standard søkemotorer</translation> <translation id="5719637365829998022">QR-koden er skannet.</translation> @@ -5108,7 +5106,6 @@ <translation id="6563469144985748109">Administratoren din har ikke godkjent det ennå</translation> <translation id="6568283005472142698">Fanesøk</translation> <translation id="6569911211938664415">Passordene er lagret i Google-kontoen din (<ph name="ACCOUNT" />), slik at du kan bruke dem på alle enheter</translation> -<translation id="6569934958368283244">Andre personer</translation> <translation id="6573497332121198392">Kan ikke fjerne snarveien</translation> <translation id="657402800789773160">&Last inn denne siden på nytt</translation> <translation id="6577284282025554716">Nedlasting avbrutt: <ph name="FILE_NAME" /></translation> @@ -6794,7 +6791,6 @@ <translation id="8393700583063109961">Send melding</translation> <translation id="8397825320644530257">Koble fra den tilkoblede telefonen</translation> <translation id="8398877366907290961">Fortsett likevel</translation> -<translation id="8400146488506985033">Administrer personer</translation> <translation id="8401432541486058167">Oppgi PIN-koden som er tilknyttet smartkortet ditt.</translation> <translation id="8404893580027489425">Fingeravtrykkssensoren er på høyre side av <ph name="DEVICE_TYPE" />. Trykk forsiktig på den med hvilken som helst finger.</translation> <translation id="8405046151008197676">Se høydepunktene i den nyeste oppdateringen</translation> @@ -6850,7 +6846,6 @@ <translation id="8465444703385715657">Du må gi tillatelse for at <ph name="PLUGIN_NAME" /> skal kunne kjøre</translation> <translation id="8466417995783206254">Denne fanen spiller av en video i bilde-i-bilde-modus.</translation> <translation id="8467326454809944210">Velg et annet språk</translation> -<translation id="8470214316007448308">Andre personer</translation> <translation id="8470513973197838199">Lagrede passord for <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Nettsteder kobler vanligvis til USB-enheter for å kunne tilby funksjoner som å skrive ut dokumenter eller lagre filer på lagringsenheter</translation> <translation id="8471959340398751476">Rabatter er avslått. Du kan slå dem på i tilpasningsmenyen</translation> @@ -7037,6 +7032,7 @@ <translation id="8676374126336081632">Slett teksten</translation> <translation id="8676770494376880701">Laveffektslader er tilkoblet</translation> <translation id="8677212948402625567">Skjul alle</translation> +<translation id="867767487203716855">Neste oppdatering</translation> <translation id="8677859815076891398">Ingen album. Opprett et album i <ph name="LINK_BEGIN" />Google Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Faner krymper ikke</translation> <translation id="8678933587484842200">Hvordan vil du at denne appen skal starte?</translation> @@ -7125,7 +7121,6 @@ <translation id="87646919272181953">Google Foto-album</translation> <translation id="8767621466733104912">Oppdater Chrome automatisk for alle brukere</translation> <translation id="8770406935328356739">Rotkatalog for utvidelser</translation> -<translation id="8770507190024617908">Administrer personer</translation> <translation id="8771300903067484968">Bakgrunnen på startsiden er tilbakestilt til standardbakgrunnen.</translation> <translation id="8773302562181397928">Lagre <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Bekreft gjenoppretting</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index bc8d134fd..bc72a39 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -699,6 +699,7 @@ <translation id="173628468822554835">ବୁଝିଗଲି। ଡିଫଲ୍ଟ ଭାବେ, ଆପଣ ଯେଉଁ ନୂଆ ସାଇଟ୍ଗୁଡ଼ିକୁ ଯିବେ ତାହା ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପଠାଇବ ନାହିଁ।</translation> <translation id="1736419249208073774">ଏକ୍ସପ୍ଲୋର୍ କରନ୍ତୁ</translation> <translation id="1737968601308870607">ବଗ୍ର ସୂଚନା ଦିଅନ୍ତୁ</translation> +<translation id="1739684185846730053">Privacy Sandbox ଟ୍ରାଏଲଗୁଡ଼ିକ ଏବେ ବି ବିକଶିତ ହେଉଛି ଏବଂ ଚୟନିତ ଅଞ୍ଚଳଗୁଡ଼ିକରେ ଉପଲବ୍ଧ ଅଛି। ବର୍ତ୍ତମାନ ପାଇଁ, ସାଇଟଗୁଡ଼ିକ ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକ ପରି ବର୍ତ୍ତମାନର ୱେବ୍ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବା ସମୟରେ Privacy Sandbox ବ୍ୟବହାର କରି ଦେଖିପାରେ।</translation> <translation id="174123615272205933">କଷ୍ଟମ୍</translation> <translation id="1741314857973421784">ଜାରି ରଖନ୍ତୁ</translation> <translation id="1743570585616704562">ଚିହ୍ନଟ ହେଲାନାହିଁ</translation> @@ -1120,8 +1121,10 @@ <translation id="217576141146192373">ପ୍ରିଣ୍ଟର୍ ଯୋଗ କରିବାକୁ ଅକ୍ଷମ। ଦୟାକରି ଆପଣଙ୍କ ପ୍ରିଣ୍ଟର୍ର କନ୍ଫିଗ୍ରେସନ୍ ଯାଞ୍ଚ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="2177950615300672361">ଇନ୍କଗ୍ନିଟୋ ଟାବ୍: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA କମ୍ପ୍ରୋମାଇଜ୍</translation> +<translation id="2179416702468739594">ଉପଲବ୍ଧ ପ୍ରୋଫାଇଲଗୁଡ଼ିକୁ ଖୋଜାଯାଉଛି। ଏହା ଯୋଗୁଁ ଆପଣଙ୍କ ମୋବାଇଲ ନେଟୱାର୍କ ଅଳ୍ପ ସମୟ ପାଇଁ ବିଚ୍ଛିନ୍ନ ହୋଇପାରେ।</translation> <translation id="2182058453334755893">ଆପଣଙ୍କର କ୍ଲିପ୍ବୋର୍ଡକୁ କପି କରାଯାଇଛି</translation> <translation id="2184515124301515068">ସାଇଟ୍ଗୁଡ଼ିକ କେତେବେଳେ ସାଉଣ୍ଡ୍ ଚାଲୁ କରିବେ ତାହା Chromeକୁ ବାଛିବାକୁ ଦିଅନ୍ତୁ (ସୁପାରିଶ କରାଯାଇଛି)</translation> +<translation id="2186711480981247270">ଅନ୍ୟ ଏକ ଡିଭାଇସରୁ ସେୟାର୍ କରାଯାଇଥିବା ପୃଷ୍ଠା</translation> <translation id="2187675480456493911">ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ଥିବା ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକ ସହ ସିଙ୍କ୍ ହୋଇଛି। ଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ପରିବର୍ତ୍ତନ କରାଯାଇଥିବା ସେଟିଂସ୍ ସିଙ୍କ୍ ହେବ ନାହିଁ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ସର୍ଭର୍ ସାର୍ଟିଫିକେଟ୍ ଇମ୍ପୋର୍ଟ କରିବାରେ ତ୍ରୁଟି</translation> <translation id="2187906491731510095">ଏକ୍ସଟେନ୍ସନ୍ଗୁଡ଼ିକ ଅପ୍ଡେଟ୍ କରାଯାଇଛି</translation> @@ -1385,6 +1388,7 @@ <translation id="2469375675106140201">ବନାନ ଯାଞ୍ଚ କଷ୍ଟମାଇଜ୍ କରନ୍ତୁ</translation> <translation id="247051149076336810">ଫାଇଲ୍ ସେୟାର୍ URL</translation> <translation id="2470702053775288986">ଅସମର୍ଥିତ ଏକ୍ସଟେନ୍ସନ୍ଗୁଡ଼ିକ ଅକ୍ଷମ ଅଛି</translation> +<translation id="2470939964922472929">ଏକ ଭୁଲ PIN ବହୁତ ଥର ଲେଖାଯାଇଛି। ଏକ ନୂଆ PIN ସେଟ୍ ଅପ୍ କରିବାକୁ, ଆପଣଙ୍କ କ୍ୟାରିଅର୍ ଦ୍ୱାରା ପ୍ରଦାନ କରାଯାଇଥିବା 8-ଅଙ୍କ ବିଶିଷ୍ଟ ବ୍ୟକ୍ତିଗତ ଅନବ୍ଲକ୍ କରିବା କୀ (PUK) ଲେଖନ୍ତୁ।</translation> <translation id="2471469610750100598">କଳା (ଡିଫଲ୍ଟ)</translation> <translation id="2471506181342525583">ଲୋକେସନ୍ ଆକ୍ସେସର ଅନୁମତି ଦିଆଯାଇଛି</translation> <translation id="2473195200299095979">ଏହି ପୃଷ୍ଠା ଅନୁବାଦ କରନ୍ତୁ</translation> @@ -1681,6 +1685,7 @@ <translation id="2785873697295365461">ଫାଇଲ୍ ଡେସ୍କ୍ରିପ୍ଟର୍</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">ଗୋଷ୍ଠୀ ନମ୍ବର</translation> <translation id="2789486458103222910">ଠିକ୍ ଅଛି</translation> <translation id="2791529110887957050">Linux କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="2791952154587244007">ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା। କିଓସ୍କ ଆପ୍ଲିକେସନ୍ ଏହି ଡିଭାଇସ୍ରେ ଅଟୋ-ଲଞ୍ଚ କରିବା ପାଇଁ ସକ୍ଷମ ହେବନାହିଁ।</translation> @@ -1982,6 +1987,7 @@ <translation id="310671807099593501">ସାଇଟ୍ ଆପଣଙ୍କର ବ୍ଲୁଟୁଥ୍ ବ୍ୟବହାର କରୁଛି।</translation> <translation id="3108931485517391283">ପ୍ରାପ୍ତ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="3109724472072898302">ସଙ୍କୁଚିତ କରାଗଲା</translation> +<translation id="3113592018909187986">ଆପଣଙ୍କ ପାଖରେ 1ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି। ଆପଣ ଏକ ନୂଆ PIN ସେଟ୍ ଅପ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହି ନେଟୱାର୍କକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସକ୍ଷମ ହେବେ ନାହିଁ।</translation> <translation id="311394601889664316">ଆପଣଙ୍କ ଡିଭାଇସରେ ଫାଇଲ୍ କିମ୍ଵା ଫୋଲ୍ଡରଗୁଡ଼ିକୁ ଏଡିଟ୍ କରିବା ପାଇଁ ସାଇଟଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ</translation> <translation id="3115147772012638511">କେଚ୍ ନିମନ୍ତେ ପ୍ରତୀକ୍ଷାରତ...</translation> <translation id="3115580024857770654">ସବୁ ସଙ୍କୁଚିତ କରନ୍ତୁ</translation> @@ -2270,6 +2276,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" /> ପାଇଁ ଅଧିକ ପଦକ୍ଷେପ</translation> <translation id="3441653493275994384">ସ୍କ୍ରିନ୍</translation> <translation id="3441663102605358937">ଏହି ଆକାଉଣ୍ଟକୁ ଯାଞ୍ଚ କରିବାକୁ <ph name="ACCOUNT" />ରେ ପୁଣି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> +<translation id="3444641828375597683">ବିଜ୍ଞାପନଦାତା ଏବଂ ପବ୍ଲିସରମାନେ ଏହି ପୃଷ୍ଠାରେ ପରେ ବର୍ଣ୍ଣନା କରାଯାଇଥିବା FLoC ବ୍ୟବହାର କରିପାରିବେ।</translation> <translation id="3445047461171030979">Google Assistant ଦ୍ରୁତ ଉତ୍ତରଗୁଡ଼ିକ</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> ମିନିଟ୍</translation> <translation id="3445925074670675829">USB-C ଡିଭାଇସ୍</translation> @@ -2851,7 +2858,7 @@ <translation id="4035758313003622889">&ଟାସ୍କ ପରିଚାଳକ</translation> <translation id="4036778507053569103">ସର୍ଭରରୁ ଡାଉନ୍ଲୋଡ୍ ହୋଇଥିବା ନୀତି ଅବୈଧ ଅଟେ।</translation> <translation id="4037084878352560732">ଘୋଡା</translation> -<translation id="4037889604535939429">ବ୍ୟକ୍ତିଙ୍କର ସୂଚନା ଏଡିଟ୍ କରନ୍ତୁ</translation> +<translation id="4040753847560036377">ଭୁଲ PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ପୃଷ୍ଠାରୁ ବାହାରି ଯାଆନ୍ତୁ}other{ପୃଷ୍ଠାରୁ ବାହାରି ଯାଆନ୍ତୁ}}</translation> <translation id="4044612648082411741">ଆପଣଙ୍କ ସାର୍ଟିଫିକେଟ୍ର ପାସ୍ୱାର୍ଡ ଲେଖନ୍ତୁ</translation> <translation id="4044708573046946214">ସ୍କ୍ରିନ୍ ଲକ୍ ପାସୱାର୍ଡ</translation> @@ -3060,6 +3067,7 @@ <translation id="4297813521149011456">ଡିସପ୍ଲେର ଘୂର୍ଣ୍ଣନ</translation> <translation id="4299022904780065004">ନୂଆ &ଇନକଗ୍ନିଟୋ ୱିଣ୍ଡୋ</translation> <translation id="4301671483919369635">ଫାଇଲ୍ଗୁଡ଼ିକୁ ଏଡିଟ୍ କରିବା ପାଇଁ ଏହି ପୃଷ୍ଠାକୁ ଅନୁମତି ଅଛି</translation> +<translation id="4302605047395093221">ଏହି ଡିଭାଇସ୍ ବ୍ୟବହାର କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କୁ ଏହି ମୋବାଇଲ ନେଟୱାର୍କ ସହ ସଂଯୋଗ କରିବା ପାଇଁ PIN ଲେଖିବାକୁ ପଡ଼ିବ</translation> <translation id="4303079906735388947">ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ ପାଇଁ ଗୋଟିଏ ନୂଆ ପିନ୍ ସେଟ୍ ଅପ୍ କରନ୍ତୁ</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" />କୁ କପି କରନ୍ତୁ</translation> <translation id="4305817255990598646">ସ୍ୱିଚ୍ କରନ୍ତୁ</translation> @@ -3245,6 +3253,7 @@ <translation id="4510479820467554003">ବାପାମାଙ୍କ ଆକାଉଣ୍ଟ ତାଲିକା</translation> <translation id="4510614391273086606">Linux ଫାଇଲ୍ ଏବଂ ଆପଗୁଡ଼ିକୁ ସେଗୁଡ଼ିକର ବ୍ୟାକଅପ୍ କରାଯାଇଥିବା ସ୍ଥିତିରେ ରିଷ୍ଟୋର୍ କରାଯାଉଛି।</translation> <translation id="451102079304155829">କାର୍ଟଗୁଡ଼ିକ</translation> +<translation id="4513275008300099962">ୱିଣ୍ଡୋ ନିୟନ୍ତ୍ରଣ ଓଭରଲେକୁ ଅକ୍ଷମ କରନ୍ତୁ</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> ଦ୍ୱାରା ସମର୍ଥିତ</translation> <translation id="4514610446763173167">ଭିଡିଓକୁ ଚଲାଇବା କିମ୍ବା ବିରତ କରିବା ପାଇଁ ଟୋଗଲ୍ କରନ୍ତୁ</translation> @@ -4317,7 +4326,6 @@ <translation id="5709557627224531708">Chromeକୁ ଆପଣଙ୍କର ଡିଫଲ୍ଟ ବ୍ରାଉଜର୍ ଭାବେ ସେଟ୍ କରନ୍ତୁ।</translation> <translation id="5711983031544731014">ଅନ୍ଲକ୍ କରିବାରେ ଅକ୍ଷମ। ନିଜର ପାସ୍ୱାର୍ଡ ଲେଖନ୍ତୁ।</translation> <translation id="5712153969432126546">ସାଇଟଗୁଡ଼ିକ ବେଳେବେଳେ ଡକ୍ୟୁମେଣ୍ଟ, ଚୁକ୍ତି ଏବଂ ଫର୍ମଗୁଡ଼ିକ ପରି PDFଗୁଡ଼ିକୁ ପବ୍ଲିସ୍ କରେ</translation> -<translation id="5712323955984474772">ପରବର୍ତ୍ତୀ ଅପଡେଟ୍</translation> <translation id="5715711091495208045">ପ୍ଲଗ୍ଇନ୍ ବ୍ରୋକର୍: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ଡିଫଲ୍ଟ ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation> <translation id="5719637365829998022">QR କୋଡକୁ ସ୍କାନ୍ କରାଯାଇଛି।</translation> @@ -4589,10 +4597,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB ଡିଭାଇସ୍ ସଂଯୋଗ ହୋଇଛି</translation> <translation id="6028117231645531007">ଟିପଚିହ୍ନ ଯୋଗ କରନ୍ତୁ</translation> <translation id="6031600495088157824">ଟୁଲବାରରେ ଇନପୁଟ୍ ବିକଳ୍ପଗୁଡ଼ିକ</translation> +<translation id="6032091552407840792">ଏହି ଟ୍ରାଏଲ୍ କେବଳ <ph name="BEGIN_LINK" />କିଛି ଅଞ୍ଚଳ<ph name="END_LINK" />ରେ ସକ୍ରିୟ ଅଛି।</translation> <translation id="6032715498678347852">ଏକ ଏକ୍ସଟେନସନକୁ ଏହି ସାଇଟ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଦେବାକୁ, ଏଥିରେ କ୍ଲିକ୍ କରନ୍ତୁ।</translation> <translation id="6032912588568283682">ଫାଇଲ୍ ସିଷ୍ଟମ୍</translation> <translation id="603539183851330738">'ସ୍ୱତଃସଂଶୋଧନକୁ ପୂର୍ବବତ୍ କରନ୍ତୁ' ବଟନ୍। <ph name="TYPED_WORD" />କୁ ଫେରି ଆସନ୍ତୁ। ସକ୍ରିୟ କରିବାକୁ Enter କୀ ଏବଂ ଖାରଜ କରିବାକୁ Escape କୀ ଦବାନ୍ତୁ।</translation> <translation id="6038929619733116134">ଯଦି ସାଇଟ୍ ଅନଧିକାର ପ୍ରବେଶ କରିଥିବା କିମ୍ବା ବିଭ୍ରାନ୍ତିକର ବିଜ୍ଞାପନ ଦେଖାଉଛି, ତେବେ ବ୍ଲକ୍ କରନ୍ତୁ</translation> +<translation id="603895874132768835">ଆପଣ ଏକ ନୂଆ PIN ସେଟ୍ ଅପ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହି ନେଟୱାର୍କକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସକ୍ଷମ ହେବେ ନାହିଁ</translation> <translation id="6039651071822577588">ନେଟ୍ୱାର୍କ ଗୁଣଧର୍ମ ଶବ୍ଦକୋଷ ବିକୃତ ହୋଇଛି</translation> <translation id="6040143037577758943">ବନ୍ଦ</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Googleର ଲୋକେସନ୍ ସେବା, ଆପଣଙ୍କ ଡିଭାଇସ୍ର ଲୋକେସନ୍ ଆକଳନ କରିବାରେ ସାହାଯ୍ୟ କରିବା ପାଇଁ ୱାଇ-ଫାଇ, ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ଓ ସେନ୍ସର୍ଗୁଡ଼ିକ ଭଳି ଉତ୍ସକୁ ବ୍ୟବହାର କରେ।<ph name="END_PARAGRAPH1" /> @@ -4840,6 +4850,7 @@ <translation id="6292699686837272722">ଟାବଗୁଡ଼ିକର ଚଉଡ଼ା ସଙ୍କୁଚିତ ହୋଇ ମଧ୍ୟମ ଲମ୍ବା ହୋଇଯାଏ</translation> <translation id="6295158916970320988">ସମସ୍ତ ସାଇଟ୍ଗୁଡ଼ିକ</translation> <translation id="6295855836753816081">ସେଭ୍ ହେଉଛି…</translation> +<translation id="6296410173147755564">ଅବୈଧ PUK</translation> <translation id="6298962879096096191">Android ଆପ୍ସ ଇନ୍ଷ୍ଟଲ୍ କରିବାକୁ Google Play ବ୍ୟବହାର କରନ୍ତୁ</translation> <translation id="6300177430812514606">ଡାଟା ପଠାଇବା କିମ୍ବା ଗ୍ରହଣ କରିବା ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation> <translation id="630065524203833229">&ପ୍ରସ୍ଥାନ କରନ୍ତୁ</translation> @@ -4886,6 +4897,7 @@ <translation id="6340526405444716530">ବ୍ୟକ୍ତିଗତକରଣ</translation> <translation id="6341850831632289108">ଆପଣଙ୍କର ଭୌତିକ ଲୋକେସନ୍ ଚିହ୍ନଟ କରନ୍ତୁ</translation> <translation id="6342069812937806050">ଏହିକ୍ଷଣି</translation> +<translation id="6343003829431264373">କେବଳ ଯୁଗ୍ମ ସଂଖ୍ୟା ବିଶିଷ୍ଟ ପୃଷ୍ଠାଗୁଡ଼ିକ</translation> <translation id="6344170822609224263">ନେଟ୍ୱର୍କ ସଂଯୋଗର ଏକ ତାଲିକା ଆକ୍ସେସ୍ କରନ୍ତୁ</translation> <translation id="6344576354370880196">ସେଭ୍ କରାଯାଇଥିବା ପ୍ରିଣ୍ଟରଗୁଡ଼ିକ</translation> <translation id="6345418402353744910">ପ୍ରକ୍ସି <ph name="PROXY" /> ପାଇଁ ଆପଣଙ୍କ ଉପଯୋଗକର୍ତ୍ତାନାମ ଏବଂ ପାସୱାର୍ଡ ଆବଶ୍ୟକ ଅଟେ ଯାହା ଦ୍ୱାରା ଆଡମିନ୍ ଆପଣଙ୍କର ନେଟୱାର୍କକୁ କନଫିଗର୍ କରିପାରିବେ</translation> @@ -5086,7 +5098,6 @@ <translation id="6563469144985748109">ଏପର୍ଯ୍ୟନ୍ତସୁଦ୍ଧା ଆପଣଙ୍କର ପରିଚାଳକ ଏହାକୁ ଅନୁମୋଦିତ କରିନାହାନ୍ତି</translation> <translation id="6568283005472142698">ଟାବ୍ ସନ୍ଧାନ</translation> <translation id="6569911211938664415">ପାସୱାର୍ଡଗୁଡ଼ିକ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ (<ph name="ACCOUNT" />)ରେ ସେଭ୍ କରାଯାଇଛି ଯାହା ଫଳରେ ଆପଣ ସେଗୁଡ଼ିକୁ ଯେ କୌଣସି ଡିଭାଇସରେ ବ୍ୟବହାର କରିପାରିବେ</translation> -<translation id="6569934958368283244">ଅନ୍ୟ ବ୍ୟକ୍ତି</translation> <translation id="6573497332121198392">ସର୍ଟକଟକୁ କଢ଼ା ଯାଇପାରିବ ନାହିଁ</translation> <translation id="657402800789773160">ଏହି ପୃଷ୍ଠାକୁ &ରିଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="6577284282025554716">ଏହି ଫାଇଲ୍ ଡାଉନ୍ଲୋଡ୍ ବାତିଲ୍ ହେଲା: <ph name="FILE_NAME" /></translation> @@ -5135,6 +5146,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" />ରେ ସମ୍ବେଦନଶୀଳ କିମ୍ବା ବିପଦଜନକ ବିଷୟବସ୍ତୁ ଅଛି। ଏହାକୁ ସମାଧାନ କରିବା ପାଇଁ ଏହାର ମାଲିକଙ୍କୁ କୁହନ୍ତୁ।</translation> <translation id="6624687053722465643">ମଧୁରତା</translation> <translation id="6628328486509726751"><ph name="WEBRTC_LOG_UPLOAD_TIME" />ରେ ଅପ୍ଲୋଡ୍ ହୋଇଛି</translation> +<translation id="6629518321609546825">ଅତି କମରେ 4ଟି ଅଙ୍କ ଲେଖନ୍ତୁ</translation> <translation id="6630752851777525409">ଆପଣଙ୍କ ତରଫରୁ ଏକ ସାର୍ଟିଫିକେଟ୍ ପ୍ରମାଣିକିକରଣ କରିବାକୁ <ph name="EXTENSION_NAME" /> ସ୍ଥାୟୀ ଆକ୍ସେସ୍ ଚାହୁଁଛି।</translation> <translation id="6635362468090274700">ଆପଣ ନିଜକୁ ଦୃଶ୍ୟମାନ ନକରିବା ପର୍ଯ୍ୟନ୍ତ କେହି ଆପଣଙ୍କ ସହ ସେୟାର୍ କରିପାରିବେ ନାହିଁ।<ph name="BR" /><ph name="BR" />ଅସ୍ଥାୟୀ ଭାବେ ନିଜକୁ ଦୃଶ୍ୟମାନ କରିବାକୁ, ସ୍ଥିତି କ୍ଷେତ୍ର ଖୋଲନ୍ତୁ, ତା'ପରେ Nearby ଭିଜିବିଲିଟୀ ଚାଲୁ କରନ୍ତୁ।</translation> @@ -5174,6 +5186,7 @@ <translation id="6664774537677393800">ଆପଣଙ୍କର ପ୍ରୋଫାଇଲ୍ ଖୋଲିବା ସମୟରେ କିଛି ତ୍ରୁଟି ହୋଇଛି। ଦୟାକରି ସାଇନ୍ ଆଉଟ୍ କରିବା ପରେ ପୁଣିଥରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ବର୍ତ୍ତମାନ ଉପଲବ୍ଧ ଅଛି</translation> <translation id="6671320560732140690">{COUNT,plural, =1{ଏକ ଠିକଣା}other{#ଟି ଠିକଣା}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> ଦ୍ୱାରା ପରିଚାଳନା ସେଟ୍ ଅପ୍ କରାଯାଉଛି</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ, ଆପଣଙ୍କ ପାସଫ୍ରେଜ୍ ଲେଖନ୍ତୁ</translation> <translation id="6675665718701918026">ପଏଣ୍ଟିଂ ଡିଭାଇସ୍ ସଂଯୋଗ ହୋଇଛି</translation> @@ -5182,6 +5195,7 @@ <translation id="6680442031740878064"><ph name="AVAILABLE_SPACE" />: ଉପଲବ୍ଧ ଅଛି</translation> <translation id="6680650203439190394">କେତେ ଶିଘ୍ର</translation> <translation id="6681668084120808868">ଫଟୋ ଉଠାନ୍ତୁ</translation> +<translation id="6683087162435654533">ସମସ୍ତ ଟାବ୍ ରିଷ୍ଟୋର କରନ୍ତୁ</translation> <translation id="6683948477137300040">ଡିଭାଇସ୍ EID ଏବଂ QR କୋଡ୍ ପପଅପ୍ ଦେଖାନ୍ତୁ</translation> <translation id="6684827949542560880">ନବୀନତମ ଅପଡେଟ୍ ଡାଉନଲୋଡ୍ କରାଯାଉଛି</translation> <translation id="668599234725812620">Google Play ଖୋଲନ୍ତୁ</translation> @@ -5751,6 +5765,7 @@ <translation id="7308643132139167865">ୱେବସାଇଟର ଭାଷାଗୁଡ଼ିକ</translation> <translation id="7309257895202129721">&ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଦେଖାନ୍ତୁ</translation> <translation id="7310598146671372464">ଲଗ୍ଇନ୍ କରିହେଲା ନାହିଁ। ସର୍ଭର ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଥିବା Kerberos ଏନ୍କ୍ରିପ୍ସନ୍ ପ୍ରକାରକୁ ସମର୍ଥନ କରୁନାହିଁ। ଆପଣଙ୍କର ବ୍ୟବସ୍ଥାପକଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> +<translation id="7315168816273861089">ୱିଣ୍ଡୋ ନିୟନ୍ତ୍ରଣ ଓଭରଲେକୁ ସକ୍ଷମ କରନ୍ତୁ</translation> <translation id="7320213904474460808">ନେଟୱାର୍କ ପାଇଁ ଡିଫଲ୍ଟ</translation> <translation id="7321545336522791733">ସର୍ଭର୍ ଅପହଞ୍ଚ ଦୂରତାରେ ଅଛି</translation> <translation id="7324297612904500502">ବିଟା ଫୋରମ୍</translation> @@ -5927,7 +5942,9 @@ <translation id="7506541170099744506">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" /> ସଫଳତାପୂର୍ବକ ଏଣ୍ଟର୍ପ୍ରାଇଜ୍ ପରିଚାଳନା ପାଇଁ ନାମାଙ୍କିତ କରାଯାଇଛି।</translation> <translation id="7507207699631365376">ଏହି ପ୍ରଦାନକାରୀଙ୍କର <ph name="BEGIN_LINK" />ଗୋପନୀୟତା ନୀତି<ph name="END_LINK" /> ଦେଖନ୍ତୁ</translation> <translation id="7507930499305566459">ସ୍ଥିତି ପ୍ରତିକ୍ରିୟାଦାତା ସାର୍ଟିଫିକେଟ୍</translation> +<translation id="7509097596023256288">ପରିଚାଳନା ସେଟ୍ ଅପ୍ କରାଯାଉଛି</translation> <translation id="7509246181739783082">ଆପଣଙ୍କ ପରିଚୟ ଯାଞ୍ଚ କରନ୍ତୁ</translation> +<translation id="7511415964832680006">ଚାଲୁ ଥିଲେ, ସାଇଟଗୁଡ଼ିକ ସେଗୁଡ଼ିକର ବିଷୟବସ୍ତୁ ଓ ସେବା ପ୍ରଦାନ କରିବା ପାଇଁ ଏଠାରେ ଦେଖାଯାଇଥିବା ଗୋପନୀୟତା-ସଂରକ୍ଷଣ ସମ୍ବନ୍ଧିତ କୌଶଳଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରେ। ଏଥିରେ କ୍ରସ୍-ସାଇଟ୍ ଟ୍ରାକିଂର ବିକଳ୍ପଗୁଡ଼ିକ ଅନ୍ତର୍ଭୁକ୍ତ ଅଛି। ଅଧିକ ଟ୍ରାଏଲ୍ ସମୟ ଅନୁସାରେ ଯୋଗ କରାଯାଇପାରେ।</translation> <translation id="7513029293694390567">ଷ୍ଟୋର୍ ଥିବା ବିଶ୍ୱସନୀୟତା ବ୍ୟବହାର କରି ୱେବ୍ସାଇଟ୍ରେ ସ୍ୱଚାଳିତରୂପେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ। ଯଦି ଏହା ଅକ୍ଷମ କରାଯାଏ, ତେବେ ଏକ ୱେବ୍ସାଇଟ୍ରେ ସାଇନ୍ ଇନ୍ କରିବା ପୂର୍ବରୁ ପ୍ରତ୍ୟେକଥର ଆପଣଙ୍କୁ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ କୁହାଯିବ।</translation> <translation id="7514239104543605883">ଆପଣଙ୍କର ଡିଭାଇସ୍କୁ କପି କରନ୍ତୁ</translation> <translation id="7514365320538308">ଡାଉନ୍ଲୋଡ୍ କରନ୍ତୁ</translation> @@ -6288,6 +6305,7 @@ <translation id="7876027585589532670">ସର୍ଟକଟକୁ ଏଡିଟ୍ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="7877451762676714207">ଅଜଣା ସର୍ଭର୍ ତ୍ରୁଟି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ସର୍ଭର୍ ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> <translation id="7879631849810108578">ସର୍ଟକଟ୍ ସେଟ୍ କରାଯାଇଛି: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">ଚାଲୁ ଥିଲେ ଏବଂ ସ୍ଥିତି ସକ୍ରିୟ ଥିଲେ, ଆପଣ ଯେଉଁ ଗୋଷ୍ଠୀ କିମ୍ବା “ଦଳ”ରେ ଅଛନ୍ତି ତାହା ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ Chrome ଆପଣଙ୍କର 7 ଦିନର ବ୍ରାଉଜିଂ ଇତିହାସ ବ୍ୟବହାର କରେ। ବିଜ୍ଞାପନଦାତାମାନେ ଗୋଷ୍ଠୀ ପାଇଁ ବିଜ୍ଞାପନଗୁଡ଼ିକୁ ଚୟନ କରିପାରିବେ। ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଇତିହାସ ଆପଣଙ୍କ ଡିଭାଇସରେ ବ୍ୟକ୍ତିଗତ ରଖାଯାଏ। ଏହି ଟ୍ରାଏଲ୍ କେବଳ <ph name="BEGIN_LINK" />କିଛି ଅଞ୍ଚଳ<ph name="END_LINK" />ରେ ସକ୍ରିୟ ଅଛି।</translation> <translation id="7880823633812189969">ଯେତେବେଳେ ଆପଣ ରିଷ୍ଟାର୍ଟ କରିବେ ସେତେବେଳେ ସ୍ଥାନୀୟ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">ଆକାଉଣ୍ଟ ଦେଖନ୍ତୁ</translation> @@ -6445,6 +6463,7 @@ <translation id="804786196054284061">ଅନ୍ତିମ ଉପଯୋଗକର୍ତ୍ତା ଲାଇସେନ୍ସ ଚୁକ୍ତି</translation> <translation id="8048977114738515028">ଏହି ପ୍ରୋଫାଇଲକୁ ସିଧାସଳଖ ଭାବେ ଆକ୍ସେସ୍ କରିବାକୁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ଡେସ୍କଟପ୍ ସର୍ଟକଟ୍ ତିଆରି କରନ୍ତୁ</translation> <translation id="8049029041626250638">ଏକ କୀବୋର୍ଡ କିମ୍ବା ମାଉସ୍ ସଂଯୋଗ କରନ୍ତୁ। ଯଦି ଆପଣ ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସଗୁଡ଼ିକୁ ବ୍ୟବହାର କରୁଛନ୍ତି, ତେବେ ଆପଣଙ୍କ ଡିଭାଇସଗୁଡ଼ିକ ପେୟାର୍ କରିବାକୁ ପ୍ରସ୍ତୁତ ଅଛି ବୋଲି ସୁନିଶ୍ଚିତ କରନ୍ତୁ।</translation> +<translation id="8049184478152619004">ବ୍ୟକ୍ତିଗତ ଅନବ୍ଲକ୍ କରିବା କୀ (PUK) ଲେଖନ୍ତୁ</translation> <translation id="8049705080247101012">Google "<ph name="EXTENSION_NAME" />"କୁ କ୍ଷତିକାରକ ରୂପେ ଫ୍ଲାଗ୍ କରିଛି ଏବଂ ଇନ୍ଷ୍ଟଲେସନ୍ ବାଧିତ ହୋଇଛି</translation> <translation id="8049948037269924837">ଟଚପ୍ୟାଡ୍ ରିଭର୍ସ ସ୍କ୍ରୋଲିଂ</translation> <translation id="8050038245906040378">Microsoft ବାଣିଜ୍ୟ କୋଡ୍ ସ୍ୱାକ୍ଷର</translation> @@ -6481,6 +6500,7 @@ <translation id="8082106343289440791">"<ph name="DEVICE_NAME" />" ସହ ପେୟାର୍ କରିବେ?</translation> <translation id="8082390128630131497">ADB ଡିବଗିଂ ଅକ୍ଷମ କରିବା ଦ୍ୱାରା ଏହି <ph name="DEVICE_TYPE" /> ଫ୍ୟାକ୍ଟୋରୀ ସେଟିଂସ୍ରେ ରିସେଟ୍ ହୋଇଯିବ। ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଆକାଉଣ୍ଟ ଏବଂ ସ୍ଥାନୀୟ ଡାଟା ଲିଭିଯିବ।</translation> <translation id="8084114998886531721">ସେଭ୍ ହୋଇଥିବା ପାସ୍ୱର୍ଡ</translation> +<translation id="8084510406207562688">ସମସ୍ତ ଟାବ୍ ରିଷ୍ଟୋର କରନ୍ତୁ</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> କନ୍ଫିଗର୍ କରାଯାଉଛି ...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> ସେଟ୍ ଅପ୍ କରନ୍ତୁ</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{ଏହି ଫାଇଲଟି ଏନକ୍ରିପ୍ଟ କରାଯାଇଛି। ଏହାର ମାଲିକଙ୍କୁ ଡିକ୍ରିପ୍ଟ କରିବାକୁ କୁହନ୍ତୁ।}other{ଏହି ଫାଇଲଗୁଡ଼ିକ ମଧ୍ୟରୁ କିଛି ଫାଇଲ୍ ଏନକ୍ରିପ୍ଟ କରାଯାଇଛି। ସେଗୁଡ଼ିକର ମାଲିକଙ୍କୁ ଡିକ୍ରିପ୍ଟ କରିବାକୁ କୁହନ୍ତୁ।}}</translation> @@ -6522,6 +6542,7 @@ <translation id="8119438628456698432">ଲଗ୍ ଫାଇଲଗୁଡ଼ିକ ସୃଷ୍ଟି କରାଯାଉଛି...</translation> <translation id="811994229154425014">ପୂର୍ଣ୍ଣଚ୍ଛେଦ ଟାଇପ୍ କରିବା ପାଇଁ ଦୁଇଥର-ସ୍ପେସ୍ ବଟନ୍ ଦବାନ୍ତୁ</translation> <translation id="8120505434908124087">eSIM ପ୍ରୋଫାଇଲ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation> +<translation id="812260729110117038">ବିଜ୍ଞାପନଦାତା ଏବଂ ପବ୍ଲିସରମାନେ ଏପରି ଉପାୟରେ ବିଜ୍ଞାପନଗୁଡ଼ିକର ପ୍ରଭାବକୁ ଅଧ୍ୟୟନ କରିପାରିବେ ଯାହା ଆପଣଙ୍କୁ ବିଭିନ୍ନ ସାଇଟରେ ଟ୍ରାକ୍ କରେ ନାହିଁ।</translation> <translation id="8123590694679414600">ଆପଣଙ୍କର ସିଙ୍କ୍ ପାସ୍ଫ୍ରେଜ୍ରେ <ph name="TIME" />ଟାରେ ଡାଟା ଏନ୍କ୍ରିପ୍ଟ କରାଯାଇଥିଲା। ଏଥିରେ Google Payରୁ ପେମେଣ୍ଟ କରିବାର ପଦ୍ଧତି ଏବଂ ଠିକଣା ସାମିଲ୍ ନାହିଁ।</translation> <translation id="81238879832906896">ହଳଦିଆ ଓ ଧଳା ଫୁଲ</translation> <translation id="8124313775439841391">ପରିଚାଳିତ ONC</translation> @@ -6558,6 +6579,7 @@ <translation id="816055135686411707">ସାର୍ଟିଫିକେଟ୍ ବିଶ୍ୱାସ ସେଟ୍ କରିବାରେ ତ୍ରୁଟି</translation> <translation id="8160775796528709999">ସେଟିଂସରେ ଲାଇଭ୍ କ୍ୟାପ୍ସନକୁ ସକ୍ଷମ କରି ଆପଣଙ୍କ ଅଡିଓ ଏବଂ ଭିଡିଓ ପାଇଁ କ୍ୟାପ୍ସନଗୁଡ଼ିକ ପାଆନ୍ତୁ</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426"><ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> ସହିତ Chrome ଓପନ ୱେବକୁ ସଂରକ୍ଷିତ କରିବା ସମୟରେ କ୍ରସ୍-ସାଇଟ୍ ଟ୍ରାକିଂରୁ ଆପଣଙ୍କୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ନୂଆ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକୁ ବିକଶିତ କରୁଛି।</translation> <translation id="8161293209665121583">ୱେବ୍ ପୃଷ୍ଠା ପାଇଁ ରିଡର୍ ମୋଡ୍</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବ୍ ମୁଭ୍ କରନ୍ତୁ}other{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବଗୁଡ଼ିକ ମୁଭ୍ କରନ୍ତୁ}}</translation> <translation id="8165997195302308593">Crostini ପୋର୍ଟ ଫରୱାର୍ଡିଂ</translation> @@ -6759,7 +6781,6 @@ <translation id="8393700583063109961">ମେସେଜ୍ ପଠାନ୍ତୁ</translation> <translation id="8397825320644530257">ସଂଯୁକ୍ତ ଥିବା ଫୋନକୁ ବିଚ୍ଛିନ୍ନ କରନ୍ତୁ</translation> <translation id="8398877366907290961">ଯେକୌଣସି ପ୍ରକାରେ ଆଗେଇ ଚାଲନ୍ତୁ</translation> -<translation id="8400146488506985033">ଲୋକମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="8401432541486058167">ଆପଣଙ୍କର ସ୍ମାର୍ଟ କାର୍ଡ ସହିତ ସମ୍ବନ୍ଧିତ ଥିବା PIN ପ୍ରଦାନ କରନ୍ତୁ।</translation> <translation id="8404893580027489425">ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ର ଡାହାଣ-ପାର୍ଶ୍ୱରେ ଟିପଚିହ୍ନ ସେନ୍ସର୍ ଅଛି। ଏହାକୁ ଯେ କୌଣସି ଆଙ୍ଗୁଠିରେ ହାଲୁକା ଭାବେ ସ୍ପର୍ଶ କରନ୍ତୁ।</translation> <translation id="8405046151008197676">ନବୀନତମ ଅପ୍ଡେଟ୍ରୁ ହାଇଲାଇଟ୍ସ ପାଆନ୍ତୁ</translation> @@ -6815,7 +6836,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" />କୁ ଚଲାଇବା ପାଇଁ ଆପଣଙ୍କର ଅନୁମତି ଆବଶ୍ୟକ</translation> <translation id="8466417995783206254">ଏହି ଟାବ୍ ଛବି ଭିତରେ ଛବି ମୋଡ୍ରେ ଏକ ଭିଡିଓ ଚଲାଉଛି।</translation> <translation id="8467326454809944210">ଅନ୍ୟ ଏକ ଭାଷା ବାଛନ୍ତୁ</translation> -<translation id="8470214316007448308">ଅନ୍ୟ ବ୍ୟକ୍ତି</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> ପାଇଁ ପାସ୍ୱର୍ଡ ସେଭ୍ କରାଯାଇଛି</translation> <translation id="8471525937465764768">ଏକ ଡକ୍ୟୁମେଣ୍ଟ ପ୍ରିଣ୍ଟ କରିବା କିମ୍ବା ଏକ ଷ୍ଟୋରେଜ୍ ଡିଭାଇସରେ ସେଭ୍ କରିବା ପରି ଫିଚରଗୁଡ଼ିକ ପାଇଁ ସାଇଟଗୁଡ଼ିକ ସାଧାରଣତଃ USB ଡିଭାଇସଗୁଡ଼ିକ ସହ ସଂଯୋଗ କରିଥାଏ</translation> <translation id="8471959340398751476">ରିହାତି ବନ୍ଦ ଅଛି। ଆପଣ କଷ୍ଟମାଇଜ୍ ମେନୁରେ ସେଗୁଡ଼ିକୁ ଚାଲୁ କରିପାରିବେ</translation> @@ -7002,6 +7022,7 @@ <translation id="8676374126336081632">ଇନ୍ପୁଟ୍ ଖାଲି କରନ୍ତୁ</translation> <translation id="8676770494376880701">ନିମ୍ନ-ଶକ୍ତିର ଚାର୍ଜର୍ ସଂଯୋଗ କରାଯାଇଛି</translation> <translation id="8677212948402625567">ସମସ୍ତ ସଙ୍କୁଚିତ କରନ୍ତୁ...</translation> +<translation id="867767487203716855">ପରବର୍ତ୍ତୀ ଅପଡେଟ୍</translation> <translation id="8677859815076891398">କୌଣସି ଆଲବମ୍ ନାହିଁ। <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />ରେ ଏକ ଆଲବମ୍ ତିଆରି କରନ୍ତୁ।</translation> <translation id="8678582529642151449">ଟାବଗୁଡ଼ିକ ସଙ୍କୁଚିତ ହୁଏ ନାହିଁ</translation> <translation id="8678933587484842200">ଆପଣ ଏହି ଆପ୍ଲିକେସନ୍କୁ କିପରି ଲଞ୍ଚ କରିବାକୁ ଚାହିଁବେ?</translation> @@ -7090,7 +7111,6 @@ <translation id="87646919272181953">Google Photos ଆଲବମ</translation> <translation id="8767621466733104912">ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ସ୍ୱଚାଳିତ ଭାବେ Chrome ଅପ୍ଡେଟ୍ କରେ</translation> <translation id="8770406935328356739">ଏକ୍ସଣ୍ଟେନ୍ସନ୍ ରୁଟ୍ ଡିରେକ୍ଟୋରୀ</translation> -<translation id="8770507190024617908">ଲୋକମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="8771300903067484968">ପ୍ରାରମ୍ଭ ପୃଷ୍ଠାର ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡକୁ ଡିଫଲ୍ଟ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡରେ ରିସେଟ୍ କରାଯାଇଛି।</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ସେଭ୍ କରନ୍ତୁ</translation> <translation id="8774379074441005279">ରିଷ୍ଟୋର୍ କରିବାକୁ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> @@ -7351,6 +7371,7 @@ <translation id="9031549947500880805">Google Driveରେ ବ୍ୟାକଅପ୍ ନିଅନ୍ତୁ। ସହଜରେ ଆପଣଙ୍କ ଡାଟା ରିଷ୍ଟୋର୍ କରନ୍ତୁ କିମ୍ୱା ଯେ କୌଣସି ସମୟରେ ଡିଭାଇସ୍ ସ୍ୱିଚ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ବ୍ୟାକଅପ୍ ଆପ୍ ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ କରେ।</translation> <translation id="9033765790910064284">ଯେ କୌଣସି ମତେ ଜାରି ରଖନ୍ତୁ</translation> <translation id="9033857511263905942">&ପେଷ୍ଟ କରନ୍ତୁ</translation> +<translation id="9035689366572880647">ବର୍ତ୍ତମାନର PIN ଲେଖନ୍ତୁ</translation> <translation id="9037640663275993951">ଡିଭାଇସକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation> <translation id="9037818663270399707">ଆପଣଙ୍କ ସଂଯୋଗ ସମସ୍ତ ନେଟୱାର୍କ ଟ୍ରାଫିକ୍ ପାଇଁ ବ୍ୟକ୍ତିଗତ ନୁହେଁ</translation> <translation id="9037965129289936994">ମୂଳ ଲେଖା ଦେଖାନ୍ତୁ</translation> @@ -7426,6 +7447,7 @@ <translation id="9112748030372401671">ଆପଣଙ୍କର ୱାଲ୍ପେପର୍କୁ ବଦଳାନ୍ତୁ</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> ବିପଦଜନକ ହୋଇପାରେ। ସ୍କାନିଂ ପାଇଁ Googleକୁ ପଠାଇବେ?</translation> <translation id="9112987648460918699">ଖୋଜନ୍ତୁ...</translation> +<translation id="9113240369465613386">କେବଳ ଅଯୁଗ୍ମ ସଂଖ୍ୟା ବିଶିଷ୍ଟ ପୃଷ୍ଠାଗୁଡ଼ିକ</translation> <translation id="9114663181201435112">ସହଜରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="9115675100829699941">&ବୁକ୍ମାର୍କ</translation> <translation id="9116465289595958864">ଅନ୍ତିମଥର ସଂଶୋଧିତ ହୋଇଥିଲା</translation> @@ -7580,6 +7602,7 @@ <translation id="991413375315957741">ମୋସନ୍ କିମ୍ବା ଲାଇଟ୍ ସେନ୍ସରଗୁଡ଼ିକ</translation> <translation id="992032470292211616">ଏକ୍ସଟେନ୍ସନ୍, ଆପ୍ ଓ ଥିମ୍ ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍କୁ କ୍ଷତି କରିପାରେ। ଆପଣ କ'ଣ ନିଶ୍ଚିତ ଭାବରେ ଜାରିରଖିବାକୁ ଚାହୁଁଛନ୍ତି?</translation> <translation id="992256792861109788">ଗୋଲାପି</translation> +<translation id="992401651319295351">ଆପଣଙ୍କ ପାଖରେ <ph name="RETRIES" />ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି। ଆପଣ ଏକ ନୂଆ PIN ସେଟ୍ ଅପ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହି ନେଟୱାର୍କକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସକ୍ଷମ ହେବେ ନାହିଁ।</translation> <translation id="992592832486024913">ChromeVox ଅକ୍ଷମ କରନ୍ତୁ (କଥିତ ମତାମତ)</translation> <translation id="992778845837390402">ବର୍ତ୍ତମାନ Linuxର ବ୍ୟାକ୍ଅପ୍ ଚାଲିଛି</translation> <translation id="993540765962421562">ଇନ୍ଷ୍ଟଲେସନ୍ ଚାଲୁଛି</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 596297f..694c032 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -712,6 +712,7 @@ <translation id="173628468822554835">ਸਮਝ ਲਿਆ। ਪੂਰਵ-ਨਿਰਧਾਰਤ ਤੌਰ 'ਤੇ, ਜਿਨ੍ਹਾਂ ਸਾਈਟਾਂ 'ਤੇ ਤੁਸੀਂ ਜਾਂਦੇ ਹੋ ਉਹ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜਣਗੀਆਂ।</translation> <translation id="1736419249208073774">ਪੜਚੋਲ ਕਰੋ</translation> <translation id="1737968601308870607">ਫਾਈਲ ਬੱਗ</translation> +<translation id="1739684185846730053">ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ ਪਰਖਾਂ ਅਜੇ ਵੀ ਵਿਕਾਸ ਅਧੀਨ ਹਨ ਅਤੇ ਚੁਣੇ ਗਏ ਖੇਤਰਾਂ ਵਿੱਚ ਉਪਲਬਧ ਹਨ। ਹੁਣ ਲਈ, ਸਾਈਟਾਂ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਵਰਗੀਆਂ ਮੌਜੂਦਾ ਵੈੱਬ ਤਕਨਾਲੋਜੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ ਨੂੰ ਅਜ਼ਮਾ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="174123615272205933">ਵਿਉਂਤਬੱਧ</translation> <translation id="1741314857973421784">ਜਾਰੀ ਰੱਖੋ</translation> <translation id="1743570585616704562">ਪਛਾਣ ਨਹੀਂ ਹੋਈ</translation> @@ -1136,8 +1137,10 @@ <translation id="217576141146192373">ਪ੍ਰਿੰਟਰ ਨੂੰ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਿੰਟਰ ਦੇ ਸੰਰੂਪਣ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="2177950615300672361">ਇਨਕੋਗਨਿਟੋ ਟੈਬ: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA ਸਮਝੌਤਾ</translation> +<translation id="2179416702468739594">ਉਪਲਬਧ ਪ੍ਰੋਫਾਈਲਾਂ ਨੂੰ ਲੱਭਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਇਸ ਨਾਲ ਤੁਹਾਡਾ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਕੁਝ ਮਿੰਟਾਂ ਲਈ ਡਿਸਕਨੈਕਟ ਹੋ ਸਕਦਾ ਹੈ।</translation> <translation id="2182058453334755893">ਤੁਹਾਡੇ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation> <translation id="2184515124301515068">Chrome ਨੂੰ ਚੁਣਨ ਦਿਓ ਕਿ ਸਾਈਟਾਂ ਕਦੋਂ ਧੁਨੀ ਚਲਾ ਸਕਦੀਆਂ ਹਨ (ਸਿਫ਼ਾਰਸ਼ੀ)</translation> +<translation id="2186711480981247270">ਪੰਨੇ ਨੂੰ ਹੋਰ ਡੀਵਾਈਸ ਤੋਂ ਸਾਂਝਾ ਕੀਤਾ ਗਿਆ ਹੈ</translation> <translation id="2187675480456493911">ਤੁਹਾਡੇ ਖਾਤੇ 'ਤੇ ਹੋਰ ਡੀਵਾਈਸਾਂ ਨਾਲ ਸਮਕਾਲੀਕਰਨ ਕੀਤਾ ਗਿਆ। ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਸੋਧੀਆਂ ਗਈਆਂ ਸੈਟਿੰਗਾਂ ਦਾ ਸਮਕਾਲੀਕਰਨ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation> <translation id="2187895286714876935">ਸਰਵਰ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਆਯਾਤ ਗੜਬੜ</translation> <translation id="2187906491731510095">ਐਕਸਟੈਂਸ਼ਨਾਂ ਅੱਪਡੇਟ ਕੀਤੀਆਂ ਗਈਆਂ</translation> @@ -1403,6 +1406,7 @@ <translation id="2469375675106140201">ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰੋ</translation> <translation id="247051149076336810">ਫ਼ਾਈਲ ਸਾਂਝਾਕਰਨ URL</translation> <translation id="2470702053775288986">ਅਸਮਰਥਿਤ ਐਕਸਟੈਂਸ਼ਨਾਂ ਅਸਮਰੱਥ</translation> +<translation id="2470939964922472929">ਗਲਤ ਪਿੰਨ ਬਹੁਤ ਵਾਰ ਦਾਖਲ ਕੀਤਾ ਗਿਆ। ਇੱਕ ਨਵਾਂ ਪਿੰਨ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ, ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਵੱਲੋਂ ਮੁਹੱਈਆ ਕੀਤੀ 8-ਅੰਕਾਂ ਦੀ ਨਿੱਜੀ ਅਣਬਲਾਕ ਕਰਨ ਵਾਲੀ ਕੁੰਜੀ (PUK) ਦਾਖਲ ਕਰੋ।</translation> <translation id="2471469610750100598">ਕਾਲਾ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)</translation> <translation id="2471506181342525583">ਟਿਕਾਣਾ ਪਹੁੰਚ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ</translation> <translation id="2473195200299095979">ਇਸ ਸਫ਼ੇ ਦਾ ਅਨੁਵਾਦ ਕਰੋ</translation> @@ -1699,6 +1703,7 @@ <translation id="2785873697295365461">ਫ਼ਾਈਲ ਵਰਣਨਕਰਤਾ</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">ਗਰੁੱਪ ਨੰਬਰ</translation> <translation id="2789486458103222910">ਠੀਕ ਹੈ</translation> <translation id="2791529110887957050">Linux ਹਟਾਓ</translation> <translation id="2791952154587244007">ਇੱਕ ਗੜਬੜ ਹੋਈ। ਕਿਓਸਕ ਐਪਲੀਕੇਸ਼ਨ ਇਸ ਡੀਵਾਈਸ ਤੇ ਸਵੈ-ਲਾਂਚ ਨਹੀਂ ਕਰ ਸਕੇਗਾ।</translation> @@ -1999,6 +2004,7 @@ <translation id="310671807099593501">ਸਾਈਟ ਬਲੂਟੁੱਥ ਵਰਤ ਰਹੀ ਹੈ</translation> <translation id="3108931485517391283">ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="3109724472072898302">ਨਸ਼ਟ ਹੋਇਆ</translation> +<translation id="3113592018909187986">ਤੁਹਾਡੇ ਕੋਲ 1 ਕੋਸ਼ਿਸ਼ ਬਾਕੀ ਹੈ। ਤੁਸੀਂ ਨਵੇਂ ਪਿੰਨ ਦਾ ਸੈੱਟ ਅੱਪ ਕਰ ਲੈਣ ਤੱਕ ਇਹ ਨੈੱਟਵਰਕ ਵਰਤ ਨਹੀਂ ਸਕਦੇ।</translation> <translation id="311394601889664316">ਸਾਈਟਾਂ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਫ਼ਾਈਲਾਂ ਜਾਂ ਫੋਲਡਰਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਾ ਦਿਓ</translation> <translation id="3115147772012638511">ਕੈਸ਼ੇ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ...</translation> <translation id="3115580024857770654">ਸਭ ਸਮੇਟੋ</translation> @@ -2287,6 +2293,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" /> ਲਈ ਹੋਰ ਕਾਰਵਾਈਆਂ</translation> <translation id="3441653493275994384">ਸਕ੍ਰੀਨ</translation> <translation id="3441663102605358937">ਇਸ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਦੁਬਾਰਾ <ph name="ACCOUNT" /> 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> +<translation id="3444641828375597683">ਵਿਗਿਆਪਨਦਾਤੇ ਅਤੇ ਪ੍ਰਕਾਸ਼ਕ, ਇਸ ਪੰਨੇ 'ਤੇ ਬਾਅਦ ਵਿੱਚ ਦੱਸੀ ਗਈ FLoC ਤਕਨਾਲੋਜੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਨ।</translation> <translation id="3445047461171030979">Google Assistant ਤਤਕਾਲ ਜਵਾਬ</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> ਮਿੰਟ</translation> <translation id="3445925074670675829">USB-C ਡੀਵਾਈਸ</translation> @@ -2869,7 +2876,7 @@ <translation id="4035758313003622889">&ਕੰਮ ਪ੍ਰਬੰਧਕ</translation> <translation id="4036778507053569103">ਸਰਵਰ ਤੋਂ ਡਾਊਨਲੋਡ ਕੀਤੀ ਨੀਤੀ ਅਵੈਧ ਹੈ।</translation> <translation id="4037084878352560732">ਘੋੜਾ</translation> -<translation id="4037889604535939429">ਵਿਅਕਤੀ ਦੀ ਜਾਣਕਾਰੀ ਦਾ ਸੰਪਾਦਨ ਕਰੋ</translation> +<translation id="4040753847560036377">ਗਲਤ PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{ਪੰਨੇ ਤੋਂ ਬਾਹਰ ਜਾਓ}one{ਪੰਨੇ ਤੋਂ ਬਾਹਰ ਜਾਓ}other{ਪੰਨਿਆਂ ਤੋਂ ਬਾਹਰ ਜਾਓ}}</translation> <translation id="4044612648082411741">ਆਪਣੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਦਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ</translation> <translation id="4044708573046946214">ਸਕ੍ਰੀਨ ਲਾਕ ਪਾਸਵਰਡ</translation> @@ -3078,6 +3085,7 @@ <translation id="4297813521149011456">ਡਿਸਪਲੇ ਘੁਮਾਅ</translation> <translation id="4299022904780065004">ਨਵੀਂ &ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ</translation> <translation id="4301671483919369635">ਇਸ ਪੰਨੇ ਕੋਲ ਫ਼ਾਈਲਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ</translation> +<translation id="4302605047395093221">ਇਹ ਡੀਵਾਈਸ ਵਰਤਣ ਵਾਲੇ ਹਰੇਕ ਵਿਅਕਤੀ ਨੂੰ ਇਸ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਪਿੰਨ ਦਾਖਲ ਕਰਨਾ ਪਵੇਗਾ</translation> <translation id="4303079906735388947">ਆਪਣੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਲਈ ਇੱਕ ਨਵਾਂ ਪਿੰਨ ਸੈੱਟ ਕਰੋ</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" /> 'ਤੇ ਕਾਪੀ ਕਰੋ</translation> <translation id="4305817255990598646">ਸਵਿੱਚ ਕਰੋ</translation> @@ -3263,6 +3271,7 @@ <translation id="4510479820467554003">ਮਾਂ-ਪਿਓ ਦੇ ਖਾਤਿਆਂ ਦੀ ਸੂਚੀ</translation> <translation id="4510614391273086606">Linux ਫ਼ਾਈਲਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਉਸੇ ਤਰ੍ਹਾਂ ਮੁੜ-ਬਹਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਜਿਵੇਂ ਉਹਨਾਂ ਦਾ ਬੈਕਅੱਪ ਲਿਆ ਗਿਆ ਸੀ।</translation> <translation id="451102079304155829">ਕਾਰਟ</translation> +<translation id="4513275008300099962">ਵਿੰਡੋ ਕੰਟਰੋਲ ਓਵਰਲੇ ਨੂੰ ਬੰਦ ਕਰੋ</translation> <translation id="4513946894732546136">ਵਿਚਾਰ</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> ਵੱਲੋਂ ਸੰਚਾਲਿਤ</translation> <translation id="4514610446763173167">ਵੀਡੀਓ ਨੂੰ ਚਲਾਉਣ ਜਾਂ ਰੋਕਣ ਲਈ ਟੌਗਲ ਕਰੋ</translation> @@ -4335,7 +4344,6 @@ <translation id="5709557627224531708">Chrome ਨੂੰ ਆਪਣੇ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਬ੍ਰਾਊਜ਼ਰ ਵਜੋਂ ਸੈੱਟ ਕਰੋ</translation> <translation id="5711983031544731014">ਅਣਲਾਕ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ। ਆਪਣਾ ਪਾਸਵਰਡ ਦਰਜ ਕਰੋ।</translation> <translation id="5712153969432126546">ਸਾਈਟਾਂ ਕਈ ਵਾਰ ਦਸਤਾਵੇਜ਼, ਇਕਰਾਰਨਾਮਿਆਂ ਅਤੇ ਫ਼ਾਰਮਾਂ ਵਰਗੇ PDF ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਦੀਆਂ ਹਨ</translation> -<translation id="5712323955984474772">ਅਗਲਾ ਅੱਪਡੇਟ</translation> <translation id="5715711091495208045">ਪਲੱਗਇਨ ਬ੍ਰੋਕਰ: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਖੋਜ ਇੰਜਣ</translation> <translation id="5719637365829998022">QR ਕੋਡ ਸਕੈਨ ਕੀਤਾ ਗਿਆ।</translation> @@ -4607,10 +4615,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB ਡੀਵਾਈਸ ਕਨੈਕਟ ਕੀਤੀ ਗਈ</translation> <translation id="6028117231645531007">ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="6031600495088157824">ਟੂਲਬਾਰ ਵਿੱਚ ਇਨਪੁੱਟ ਵਿਕਲਪ</translation> +<translation id="6032091552407840792">ਇਹ ਪਰਖ ਸਿਰਫ਼ <ph name="BEGIN_LINK" />ਕੁਝ ਖੇਤਰਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਹੀ ਕਿਰਿਆਸ਼ੀਲ ਹੈ।</translation> <translation id="6032715498678347852">ਇਸ ਸਾਈਟ ਨੂੰ ਐਕਸਟੈਂਸ਼ਨ ਪਹੁੰਚ ਦੇਣ ਲਈ, ਇਸ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।</translation> <translation id="6032912588568283682">ਫਾਈਲ ਸਿਸਟਮ</translation> <translation id="603539183851330738">ਸਵੈ-ਸੁਧਾਰ ਨੂੰ ਅਣਕੀਤਾ ਕਰੋ ਬਟਨ। <ph name="TYPED_WORD" /> 'ਤੇ ਵਾਪਸ ਲਿਜਾਓ। ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ enter, ਖਾਰਜ ਕਰਨ ਲਈ escape ਦਬਾਓ।</translation> <translation id="6038929619733116134">ਜੇਕਰ ਸਾਈਟ ਦਖਲਅੰਦਾਜ਼ੀ ਜਾਂ ਗੁਮਰਾਹ ਕਰਨ ਵਾਲੇ ਵਿਗਿਆਪਨ ਦਿਖਾਉਂਦੀ ਹੈ, ਤਾਂ ਉਸਨੂੰ ਬਲਾਕ ਕਰੋ</translation> +<translation id="603895874132768835">ਤੁਸੀਂ ਨਵੇਂ ਪਿੰਨ ਦਾ ਸੈੱਟ ਅੱਪ ਕਰ ਲੈਣ ਤੱਕ ਇਹ ਨੈੱਟਵਰਕ ਵਰਤ ਨਹੀਂ ਸਕਦੇ</translation> <translation id="6039651071822577588">ਨੈੱਟਵਰਕ ਪ੍ਰਾਪਰਟੀ ਸ਼ਬਦਕੋਸ਼ ਨੁਕਸਦਾਰ</translation> <translation id="6040143037577758943">ਬੰਦ ਕਰੋ</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google ਦੀ ਟਿਕਾਣਾ ਸੇਵਾ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਵਾਈ‑ਫਾਈ, ਮੋਬਾਈਲ ਨੈੱਟਵਰਕਾਂ ਅਤੇ ਸੈਂਸਰਾਂ ਵਰਗੇ ਸਰੋਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ।<ph name="END_PARAGRAPH1" /> @@ -4858,6 +4868,7 @@ <translation id="6292699686837272722">ਟੈਬਾਂ ਦੀ ਚੌੜਾਈ ਸੁੰਗੜ ਕੇ ਦਰਮਿਆਨੀ ਹੋ ਜਾਂਦੀ ਹੈ</translation> <translation id="6295158916970320988">ਸਾਰੀਆਂ ਸਾਈਟਾਂ</translation> <translation id="6295855836753816081">ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation> +<translation id="6296410173147755564">ਅਵੈਧ PUK</translation> <translation id="6298962879096096191">Android ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਲਈ Google Play ਦੀ ਵਰਤੋਂ ਕਰੋ</translation> <translation id="6300177430812514606">ਡਾਟਾ ਭੇਜਣ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਪੂਰੀ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation> <translation id="630065524203833229">ਬਾ&ਹਰ ਜਾਓ</translation> @@ -4904,6 +4915,7 @@ <translation id="6340526405444716530">ਵਿਅਕਤੀਗਤਕਰਨ</translation> <translation id="6341850831632289108">ਆਪਣਾ ਫਿਜੀਕਲ ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਖੋਜੋ</translation> <translation id="6342069812937806050">ਬਿਲਕੁਲ ਹੁਣੇ</translation> +<translation id="6343003829431264373">ਸਿਰਫ਼ ਜਿਸਤ ਪੰਨੇ</translation> <translation id="6344170822609224263">ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨਾਂ ਦੀ ਪਹੁੰਚ ਸੂਚੀ</translation> <translation id="6344576354370880196">ਰੱਖਿਅਤ ਕੀਤੇ ਪ੍ਰਿੰਟਰ</translation> <translation id="6345418402353744910">ਤੁਹਾਡਾ ਵਰਤੋਂਕਾਰ ਨਾਮ ਅਤੇ ਪਾਸਵਰਡ ਪ੍ਰੌਕਸੀ <ph name="PROXY" /> ਲਈ ਲੋੜੀਂਦੇ ਹਨ ਤਾਂ ਕਿ ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਡੇ ਨੈੱਟਵਰਕ ਦਾ ਸੰਰੂਪਣ ਕਰ ਸਕੇ</translation> @@ -5103,7 +5115,6 @@ <translation id="6563469144985748109">ਤੁਹਾਡੇ ਪ੍ਰਬੰਧਕ ਨੇ ਹਾਲੇ ਇਸ ਦੀ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੱਤੀ ਹੈ</translation> <translation id="6568283005472142698">ਟੈਬ ਖੋਜ</translation> <translation id="6569911211938664415">ਪਾਸਵਰਡ ਤੁਹਾਡੇ Google ਖਾਤੇ (<ph name="ACCOUNT" />) ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਕਿ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਡੀਵਾਈਸ 'ਤੇ ਵਰਤ ਸਕੋ</translation> -<translation id="6569934958368283244">ਦੂਜੇ ਲੋਕ</translation> <translation id="6573497332121198392">ਸ਼ਾਰਟਕੱਟ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ</translation> <translation id="657402800789773160">&ਇਹ ਸਫ਼ਾ ਰੀਲੋਡ ਕਰੋ</translation> <translation id="6577284282025554716">ਡਾਊਨਲੋਡ ਰੱਦ ਹੋਇਆ: <ph name="FILE_NAME" /></translation> @@ -5152,6 +5163,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> ਵਿੱਚ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਂ ਖਤਰਨਾਕ ਸਮੱਗਰੀ ਹੈ। ਇਸ ਦੇ ਮਾਲਕ ਨੂੰ ਸਹੀ ਕਰਨ ਲਈ ਕਹੋ।</translation> <translation id="6624687053722465643">ਮਿੱਠਾ</translation> <translation id="6628328486509726751"><ph name="WEBRTC_LOG_UPLOAD_TIME" /> ਅਪਲੋਡ ਕੀਤਾ ਗਿਆ</translation> +<translation id="6629518321609546825">ਘੱਟੋ ਘੱਟ 4 ਨੰਬਰ ਦਾਖਲ ਕਰੋ</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> ਤੁਹਾਡੇ ਵੱਲੋਂ ਖੁਦ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਇੱਕ ਸਰਟੀਫਿਕੇਟ ਤੱਕ ਸਥਾਈ ਪਹੁੰਚ ਚਾਹੁੰਦਾ ਹੈ।</translation> <translation id="6635362468090274700">ਕੋਈ ਵੀ ਤੁਹਾਡੇ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕਰ ਸਕਦਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਦਿਖਣਯੋਗ ਨਹੀਂ ਬਣਾਉਂਦੇ।<ph name="BR" /><ph name="BR" />ਆਪਣੇ ਆਪ ਨੂੰ ਕੁਝ ਸਮੇਂ ਲਈ ਦਿਖਣਯੋਗ ਬਣਾਉਣ ਲਈ, ਸਥਿਤੀ ਖੇਤਰ ਖੋਲ੍ਹੋ, ਫਿਰ ਨਜ਼ਦੀਕੀ ਦਿਖਣਯੋਗਤਾ ਚਾਲੂ ਕਰੋ।</translation> <translation id="6635944431854494329">ਮਾਲਕ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸੈਟਿੰਗਾਂ > ਉੱਨਤ > Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ ਅਤੇ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜੋ, ਤੋਂ ਕੰਟਰੋਲ ਕਰ ਸਕਦਾ ਹੈ।</translation> @@ -5190,6 +5202,7 @@ <translation id="6664774537677393800">ਤੁਹਾਡੇ ਪ੍ਰੋਫ਼ਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ ਸੀ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਈਨ-ਆਊਟ ਹੋ ਕੇ ਫਿਰ ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> ਹੁਣ ਉਪਲਬਧ ਹੈ</translation> <translation id="6671320560732140690">{COUNT,plural, =1{ਇੱਕ ਪਤਾ}one{# ਪਤਾ}other{# ਪਤੇ}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਨ ਦਾ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਦਾਖਲ ਕਰੋ</translation> <translation id="6675665718701918026">ਪੁਆਇੰਟਰ ਵਾਲੀ ਡੀਵਾਈਸ ਕੀਤਾ ਗਿਆ</translation> @@ -5198,6 +5211,7 @@ <translation id="6680442031740878064">ਉਪਲਬਧ: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">ਦਰ</translation> <translation id="6681668084120808868">ਫ਼ੋਟੋ ਲਓ</translation> +<translation id="6683087162435654533">ਸਾਰੀਆਂ ਟੈਬਾਂ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰੋ</translation> <translation id="6683948477137300040">ਡੀਵਾਈਸ EID ਅਤੇ QR ਕੋਡ ਪੌਪਅੱਪ ਦਿਖਾਓ</translation> <translation id="6684827949542560880">ਨਵੀਨਤਮ ਅੱਪਡੇਟ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="668599234725812620">Google Play ਖੋਲ੍ਹੋ</translation> @@ -5767,6 +5781,7 @@ <translation id="7308643132139167865">ਵੈੱਬਸਾਈਟ ਦੀਆਂ ਭਾਸ਼ਾਵਾਂ</translation> <translation id="7309257895202129721">ਦਿਖਾਓ &ਨਿਯੰਤਰਣ</translation> <translation id="7310598146671372464">ਲੌਗਇਨ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ। ਸਰਵਰ ਨਿਰਧਾਰਤ Kerberos ਇਨਕ੍ਰਿਪਸ਼ਨ ਦੀਆਂ ਕਿਸਮਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation> +<translation id="7315168816273861089">ਵਿੰਡੋ ਕੰਟਰੋਲ ਓਵਰਲੇ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="7320213904474460808">ਨੈੱਟਵਰਕ 'ਤੇ ਪੂਰਵ-ਨਿਰਧਾਰਤ</translation> <translation id="7321545336522791733">ਸਰਵਰ ਪਹੁੰਚਯੋਗ ਨਹੀਂ</translation> <translation id="7324297612904500502">ਬੀਟਾ ਫ਼ੋਰਮ</translation> @@ -5943,7 +5958,9 @@ <translation id="7506541170099744506">ਤੁਹਾਡੀ <ph name="DEVICE_TYPE" /> ਨੂੰ ਉਦਯੋਗਿਕ ਪ੍ਰਬੰਧਨ ਲਈ ਸਫਲਤਾਪੂਰਵਕ ਦਾਖਲ ਕਰ ਲਿਆ ਗਿਆ ਹੈ।</translation> <translation id="7507207699631365376">ਇਸ ਪ੍ਰਦਾਨਕ ਦੀ <ph name="BEGIN_LINK" />ਪਰਦੇਦਾਰੀ ਨੀਤੀ<ph name="END_LINK" /> ਦੇਖੋ</translation> <translation id="7507930499305566459">ਸਥਿਤੀ ਜਵਾਬ ਪ੍ਰਮਾਣ-ਪੱਤਰ</translation> +<translation id="7509097596023256288">ਪ੍ਰਬੰਧਨ ਦਾ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="7509246181739783082">ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> +<translation id="7511415964832680006">ਚਾਲੂ ਹੋਣ 'ਤੇ, ਸਾਈਟਾਂ ਆਪਣੀ ਸਮੱਗਰੀ ਅਤੇ ਸੇਵਾਵਾਂ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਇੱਥੇ ਦਿਖਾਈਆਂ ਗਈਆਂ ਪਰਦੇਦਾਰੀ-ਸੰਭਾਲਣ ਵਾਲੀਆਂ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹਨਾਂ ਵਿੱਚ ਕ੍ਰਾਸ-ਸਾਈਟ ਟਰੈਕਿੰਗ ਦੇ ਵਿਕਲਪ ਸ਼ਾਮਲ ਹਨ। ਸਮੇਂ ਦੇ ਨਾਲ ਹੋਰ ਪਰਖਾਂ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="7513029293694390567">ਸਟੋਰ ਕੀਤੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ-ਆਪ ਸਾਈਟਾਂ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ। ਬੰਦ ਹੋਣ 'ਤੇ, ਤਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਵੈੱਬਸਾਈਟ 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਹਰ ਵਾਰ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾਵੇਗਾ।</translation> <translation id="7514239104543605883">ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਕਾਪੀ ਕਰੋ</translation> <translation id="7514365320538308">ਡਾਊਨਲੋਡ ਕਰੋ</translation> @@ -6303,6 +6320,8 @@ <translation id="7876027585589532670">ਸ਼ਾਰਟਕੱਟ ਦਾ ਸੰਪਾਦਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="7877451762676714207">ਅਗਿਆਤ ਸਰਵਰ ਅਸ਼ੁੱਧੀ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਸਰਵਰ ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation> <translation id="7879631849810108578">ਸ਼ਾਰਟਕੱਟ ਸੈੱਟ ਕੀਤਾ ਗਿਆ: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">ਚਾਲੂ ਹੋਣ ਅਤੇ ਸਥਿਤੀ ਦੇ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ 'ਤੇ, Chrome ਵੱਲੋਂ 7 ਦਿਨਾਂ ਤੋਂ ਜ਼ਿਆਦਾ ਦੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਨੂੰ ਵਰਤ ਕੇ ਉਸ ਗਰੁੱਪ, ਜਾਂ "ਸਮਗੁਣ" ਨੂੰ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ ਸ਼ਾਮਲ ਹੋ। ਵਿਗਿਆਪਨਦਾਤੇ ਗਰੁੱਪ ਲਈ ਵਿਗਿਆਪਨਾਂ ਨੂੰ ਚੁਣ ਸਕਦੇ ਹਨ। ਤੁਹਾਡਾ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਨਿੱਜੀ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਪਰਖ ਸਿਰਫ਼ + <ph name="BEGIN_LINK" />ਕੁਝ ਖੇਤਰਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਹੀ ਕਿਰਿਆਸ਼ੀਲ ਹੈ।</translation> <translation id="7880823633812189969">ਜਦੋਂ ਤੁਸੀਂ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋਗੇ ਤਾਂ ਸਥਾਨਕ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">ਖਾਤਾ ਦੇਖੋ</translation> @@ -6461,6 +6480,7 @@ <translation id="804786196054284061">ਵਰਤੋਂਕਾਰ ਦਾ ਲਾਇਸੰਸ ਇਕਰਾਰਨਾਮਾ</translation> <translation id="8048977114738515028">ਇਸ ਪ੍ਰੋਫਾਈਲ 'ਤੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਪਹੁੰਚ ਕਰਨ ਲਈ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਡੈਸਕਟਾਪ ਸ਼ਾਰਟਕੱਟ ਬਣਾਓ</translation> <translation id="8049029041626250638">ਕਿਸੇ ਕੀ-ਬੋਰਡ ਜਾਂ ਮਾਊਸ ਨੂੰ ਕਨੈਕਟ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਤਿਆਰ ਹਨ।</translation> +<translation id="8049184478152619004">ਨਿੱਜੀ ਅਣਬਲਾਕ ਕਰਨ ਵਾਲੀ ਕੁੰਜੀ (PUK) ਦਾਖਲ ਕਰੋ</translation> <translation id="8049705080247101012">Google ਨੇ "<ph name="EXTENSION_NAME" />" ਨੂੰ ਖਰਾਬ ਦੇ ਤੌਰ 'ਤੇ ਫਲੈਗ ਕੀਤਾ ਹੈ ਅਤੇ ਸਥਾਪਨਾ ਨੂੰ ਰੋਕ ਦਿੱਤਾ ਗਿਆ ਹੈ</translation> <translation id="8049948037269924837">ਟੱਚਪੈਡ ਦੀ ਉਲਟ ਸਕ੍ਰੋਲਿੰਗ</translation> <translation id="8050038245906040378">Microsoft ਵਪਾਰਕ ਕੋਡ ਸਾਈਨਿੰਗ</translation> @@ -6497,6 +6517,7 @@ <translation id="8082106343289440791">ਕੀ "<ph name="DEVICE_NAME" />" ਨਾਲ ਜੋੜਾਬੱਧ ਕਰਨਾ ਹੈ?</translation> <translation id="8082390128630131497">ADB ਡੀਬੱਗਿੰਗ ਨੂੰ ਬੰਦ ਕਰਨ ਨਾਲ ਇਹ <ph name="DEVICE_TYPE" /> ਨੂੰ ਫੈਕਟਰੀ ਸੈਟਿੰਗਾਂ 'ਤੇ ਰੀਸੈੱਟ ਕਰੇਗਾ। ਸਾਰੇ ਵਰਤੋਂਕਾਰ ਖਾਤਿਆਂ ਅਤੇ ਸਥਾਨਕ ਡਾਟੇ ਨੂੰ ਮਿਟਾਇਆ ਜਾਵੇਗਾ।</translation> <translation id="8084114998886531721">ਰੱਖਿਅਤ ਕੀਤਾ ਪਾਸਵਰਡ</translation> +<translation id="8084510406207562688">ਸਾਰੀਆਂ ਟੈਬਾਂ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰੋ</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> ਦਾ ਸੰਰੂਪਣ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> ਨੂੰ ਸੈੱਟਅੱਪ ਕਰੋ</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{ਇਹ ਫ਼ਾਈਲ ਇਨਕ੍ਰਿਪਟਡ ਹੈ। ਇਸਦੇ ਮਾਲਕ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਕਹੋ।}one{ਇਹ ਫ਼ਾਈਲ ਇਨਕ੍ਰਿਪਟਡ ਹੈ। ਇਸਦੇ ਮਾਲਕ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਕਹੋ।}other{ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੁਝ ਫ਼ਾਈਲਾਂ ਇਨਕ੍ਰਿਪਟਡ ਹਨ। ਇਹਨਾਂ ਦੇ ਮਾਲਕਾਂ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਕਹੋ।}}</translation> @@ -6538,6 +6559,7 @@ <translation id="8119438628456698432">ਲੌਗ ਫ਼ਾਈਲਾਂ ਸਿਰਜੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ...</translation> <translation id="811994229154425014">ਪੂਰਨ ਵਿਰਾਮ ਟਾਈਪ ਕਰਨ ਲਈ ਡਬਲ-ਸਪੇਸ</translation> <translation id="8120505434908124087">ਈ-ਸਿਮ ਪ੍ਰੋਫਾਈਲ ਸਥਾਪਤ ਕਰੋ</translation> +<translation id="812260729110117038">ਵਿਗਿਆਪਨਦਾਤੇ ਅਤੇ ਪ੍ਰਕਾਸ਼ਕ ਵਿਗਿਆਪਨਾਂ ਦੀ ਪ੍ਰਭਾਵਕਤਾ ਦਾ ਅਧਿਐਨ ਅਜਿਹੇ ਤਰੀਕੇ ਨਾਲ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਸਾਈਟਾਂ 'ਤੇ ਟਰੈਕ ਨਹੀਂ ਕਰਦਾ।</translation> <translation id="8123590694679414600"><ph name="TIME" /> ਨੂੰ ਡਾਟਾ ਤੁਹਾਡੇ ਸਮਕਾਲੀਕਰਨ ਪਾਸਫਰੇਜ਼ ਨਾਲ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਸ ਵਿੱਚ Google Pay ਦੀਆਂ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਅਤੇ ਪਤੇ ਸ਼ਾਮਲ ਨਹੀਂ ਹਨ।</translation> <translation id="81238879832906896">ਪੀਲਾ ਅਤੇ ਸਫ਼ੈਦ ਫੁੱਲ</translation> <translation id="8124313775439841391">ਵਿਵਸਥਿਤ ONC</translation> @@ -6574,6 +6596,7 @@ <translation id="816055135686411707">ਪ੍ਰਮਾਣ-ਪੱਤਰ ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਗੜਬੜ</translation> <translation id="8160775796528709999">ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਲਾਈਵ ਸੁਰਖੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰਕੇ ਆਪਣੇ ਆਡੀਓ ਅਤੇ ਵੀਡੀਓ ਲਈ ਸੁਰਖੀਆਂ ਪ੍ਰਾਪਤ ਕਰੋ</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426"><ph name="BEGIN_LINK" />ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ<ph name="END_LINK" /> ਦੇ ਨਾਲ, Chrome ਨਵੀਆਂ ਤਕਨਾਲੋਜੀਆਂ ਦਾ ਵਿਕਾਸ ਕਰ ਰਿਹਾ ਹੈ, ਤਾਂਕਿ ਖੁੱਲੇ ਵੈੱਬ ਨੂੰ ਸੰਭਾਲ ਕੇ ਰੱਖਣ ਦੇ ਨਾਲ-ਨਾਲ ਤੁਹਾਨੂੰ ਕ੍ਰਾਸ-ਸਾਈਟ ਟਰੈਕਿੰਗ ਤੋਂ ਸੁਰੱਖਿਅਤ ਰੱਖਿਆ ਜਾ ਸਕੇ।</translation> <translation id="8161293209665121583">ਵੈੱਬ ਪੰਨਿਆਂ ਲਈ ਰੀਡਰ ਮੋਡ</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}one{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}other{ਟੈਬਾਂ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}}</translation> <translation id="8165997195302308593">Crostini ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ</translation> @@ -6775,7 +6798,6 @@ <translation id="8393700583063109961">ਸੁਨੇਹਾ ਭੇਜੋ</translation> <translation id="8397825320644530257">ਕਨੈਕਟ ਕੀਤੇ ਫ਼ੋਨ ਨੂੰ ਡਿਸਕਨੈਕਟ ਕਰੋ</translation> <translation id="8398877366907290961">ਫੇਰ ਵੀ ਜਾਰੀ ਰੱਖੋ</translation> -<translation id="8400146488506985033">ਲੋਕਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="8401432541486058167">ਆਪਣੇ ਸਮਾਰਟ ਕਾਰਡ ਨਾਲ ਸੰਬੰਧਿਤ ਪਿੰਨ ਮੁਹੱਈਆ ਕਰਵਾਓ</translation> <translation id="8404893580027489425">ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਤੁਹਾਡੇ <ph name="DEVICE_TYPE" /> ਦੇ ਸੱਜੇ ਪਾਸੇ ਹੈ। ਇਸਨੂੰ ਕਿਸੇ ਵੀ ਉਂਗਲ ਨਾਲ ਹਲਕਾ ਜਿਹਾ ਸਪਰਸ਼ ਕਰੋ।</translation> <translation id="8405046151008197676">ਨਵੀਨਤਮ ਅੱਪਡੇਟ ਤੋਂ ਝਲਕੀਆਂ ਪ੍ਰਾਪਤ ਕਰੋ</translation> @@ -6831,7 +6853,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ਨੂੰ ਚੱਲਣ ਲਈ ਤੁਹਾਡੀ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ</translation> <translation id="8466417995783206254">ਇਹ ਟੈਬ ਵੀਡੀਓ ਨੂੰ ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ ਮੋਡ ਵਿੱਚ ਚਲਾ ਰਹੀ ਹੈ।</translation> <translation id="8467326454809944210">ਕੋਈ ਹੋਰ ਭਾਸ਼ਾ ਚੁਣੋ</translation> -<translation id="8470214316007448308">ਦੂਜੇ ਲੋਕ</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> ਲਈ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ</translation> <translation id="8471525937465764768">ਸਾਈਟਾਂ ਆਮ ਤੌਰ 'ਤੇ ਕਿਸੇ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ ਜਾਂ ਕਿਸੇ ਸਟੋਰੇਜ ਡੀਵਾਈਸ 'ਤੇ ਰੱਖਿਅਤ ਕਰਨ ਜਿਹੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲਈ USB ਡੀਵਾਈਸਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਦੀਆਂ ਹਨ</translation> <translation id="8471959340398751476">ਛੋਟਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਬੰਦ ਹੈ। ਤੁਸੀਂ ਵਿਉਂਤਬੱਧ ਮੀਨੂ ਵਿੱਚ ਇਸਨੂੰ ਚਾਲੂ ਕਰ ਸਕਦੇ ਹੋ</translation> @@ -7018,6 +7039,7 @@ <translation id="8676374126336081632">ਇਨਪੁਟ ਹਟਾਓ</translation> <translation id="8676770494376880701">ਘੱਟ-ਪਾਵਰ ਦਾ ਚਾਰਜਰ ਕਨੈਕਟ ਕੀਤਾ</translation> <translation id="8677212948402625567">ਸਭ ਸਮੇਟੋ</translation> +<translation id="867767487203716855">ਅਗਲਾ ਅੱਪਡੇਟ</translation> <translation id="8677859815076891398">ਕੋਈ ਐਲਬਮ ਨਹੀਂ ਹੈ। <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> ਵਿੱਚ ਐਲਬਮ ਬਣਾਓ।</translation> <translation id="8678582529642151449">ਟੈਬਾਂ ਨਹੀਂ ਸੁੰਗੜਨਗੀਆਂ</translation> <translation id="8678933587484842200">ਤੁਸੀਂ ਇਸ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਕਿਵੇਂ ਲਾਂਚ ਕਰਨਾ ਚਾਹੋਗੇ?</translation> @@ -7106,7 +7128,6 @@ <translation id="87646919272181953">Google Photos ਐਲਬਮ</translation> <translation id="8767621466733104912">Chrome ਨੂੰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਅੱਪਡੇਟ ਕਰੋ</translation> <translation id="8770406935328356739">ਐਕਸਟੈਂਸ਼ਨ ਰੂਟ ਡਾਇਰੈਕਟਰੀ</translation> -<translation id="8770507190024617908">ਲੋਕਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="8771300903067484968">ਸ਼ੁਰੂਆਤੀ ਪੰਨੇ ਦੇ ਬੈਕਗ੍ਰਾਊਂਡ ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਬੈਕਗ੍ਰਾਊਂਡ ਵਜੋਂ ਰੀਸੈੱਟ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ਨੂੰ ਰੱਖਿਅਤ ਕਰੋ</translation> <translation id="8774379074441005279">ਮੁੜ-ਬਹਾਲ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> @@ -7368,6 +7389,7 @@ <translation id="9031549947500880805">'Google ਡਰਾਈਵ' ਵਿੱਚ ਬੈਕਅੱਪ ਲਓ। ਕਿਸੇ ਵੇਲੇ ਵੀ ਅਸਾਨੀ ਨਾਲ ਆਪਣਾ ਡਾਟਾ ਮੁੜ-ਬਹਾਲ ਕਰੋ ਜਾਂ ਡੀਵਾਈਸਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰੋ। ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਵਿੱਚ ਐਪ ਡਾਟਾ ਸ਼ਾਮਲ ਹੈ।</translation> <translation id="9033765790910064284">ਫਿਰ ਵੀ ਜਾਰੀ ਰੱਖੋ</translation> <translation id="9033857511263905942">&ਪੇਸਟ ਕਰੋ</translation> +<translation id="9035689366572880647">ਮੌਜੂਦਾ ਪਿੰਨ ਦਾਖਲ ਕਰੋ</translation> <translation id="9037640663275993951">ਡੀਵਾਈਸ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation> <translation id="9037818663270399707">ਤੁਹਾਡਾ ਕਨੈਕਸ਼ਨ ਸਾਰੇ ਨੈੱਟਵਰਕ ਟਰੈਫ਼ਿਕ ਲਈ ਨਿੱਜੀ ਨਹੀਂ ਹੈ</translation> <translation id="9037965129289936994">ਮੂਲ ਦਿਖਾਓ </translation> @@ -7443,6 +7465,7 @@ <translation id="9112748030372401671">ਆਪਣਾ ਵਾਲਪੇਪਰ ਬਦਲੋ</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> ਖਤਰਨਾਕ ਹੋ ਸਕਦੀ ਹੈ। ਕੀ ਸਕੈਨ ਕਰਨ ਲਈ Google ਨੂੰ ਭੇਜਣਾ ਹੈ?</translation> <translation id="9112987648460918699">ਲੱਭੋ...</translation> +<translation id="9113240369465613386">ਸਿਰਫ਼ ਟਾਂਕ ਪੰਨੇ</translation> <translation id="9114663181201435112">ਆਸਾਨੀ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="9115675100829699941">&ਬੁੱਕਮਾਰਕਸ</translation> <translation id="9116465289595958864">ਪਿਛਲੀ ਵਾਰ ਸੰਸ਼ੋਧਿਤ</translation> @@ -7597,6 +7620,7 @@ <translation id="991413375315957741">ਮੋਸ਼ਨ ਜਾਂ ਲਾਈਟ ਸੈਂਸਰ</translation> <translation id="992032470292211616">ਐਕਸਟੈਂਸ਼ਨਾਂ, ਐਪਾਂ ਅਤੇ ਵਿਸ਼ੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਸਕਦੇ ਹਨ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="992256792861109788">ਗੁਲਾਬੀ</translation> +<translation id="992401651319295351">ਤੁਹਾਡੇ ਕੋਲ <ph name="RETRIES" /> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ। ਤੁਸੀਂ ਨਵੇਂ ਪਿੰਨ ਦਾ ਸੈੱਟ ਅੱਪ ਕਰ ਲੈਣ ਤੱਕ ਇਹ ਨੈੱਟਵਰਕ ਵਰਤ ਨਹੀਂ ਸਕਦੇ।</translation> <translation id="992592832486024913">ChromeVox ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ (ਬੋਲੀ ਪ੍ਰਤੀਕਰਮ)</translation> <translation id="992778845837390402">ਇਸ ਵੇਲੇ Linux ਦਾ ਬੈਕਅੱਪ ਜਾਰੀ ਹੈ</translation> <translation id="993540765962421562">ਸਥਾਪਨਾ ਜਾਰੀ ਹੈ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 8ac3cab..1c9aec06 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -2858,7 +2858,6 @@ <translation id="4035758313003622889">&Menedżer zadań</translation> <translation id="4036778507053569103">Zasady pobrane z serwera są nieprawidłowe.</translation> <translation id="4037084878352560732">Koń</translation> -<translation id="4037889604535939429">Edytuj dane osoby</translation> <translation id="4040753847560036377">Nieprawidłowy kod PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Zamknij stronę}few{Zamknij strony}many{Zamknij strony}other{Zamknij strony}}</translation> <translation id="4044612648082411741">Podaj hasło certyfikatu</translation> @@ -4326,7 +4325,6 @@ <translation id="5709557627224531708">Ustaw Chrome jako domyślną przeglądarkę</translation> <translation id="5711983031544731014">Nie można odblokować. Wpisz hasło.</translation> <translation id="5712153969432126546">Czasami witryny publikują pliki PDF takie jak dokumenty, umowy i formularze</translation> -<translation id="5712323955984474772">Następna aktualizacja</translation> <translation id="5715711091495208045">Broker wtyczek: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Domyślne wyszukiwarki</translation> <translation id="5719637365829998022">Zeskanowano kod QR.</translation> @@ -5095,7 +5093,6 @@ <translation id="6563469144985748109">Twój menedżer jeszcze na to nie zezwolił</translation> <translation id="6568283005472142698">Wyszukiwanie kart</translation> <translation id="6569911211938664415">Hasła są zapisywane na Twoim koncie Google (<ph name="ACCOUNT" />), dzięki czemu możesz ich używać na dowolnym urządzeniu</translation> -<translation id="6569934958368283244">Inne osoby</translation> <translation id="6573497332121198392">Nie można usunąć skrótu</translation> <translation id="657402800789773160">&Załaduj ponownie tę stronę</translation> <translation id="6577284282025554716">Anulowano pobieranie: <ph name="FILE_NAME" /></translation> @@ -6782,7 +6779,6 @@ <translation id="8393700583063109961">Wyślij wiadomość</translation> <translation id="8397825320644530257">Odłącz połączony telefon</translation> <translation id="8398877366907290961">Kontynuuj mimo wszystko</translation> -<translation id="8400146488506985033">Zarządzaj użytkownikami</translation> <translation id="8401432541486058167">Wpisz kod PIN powiązany z Twoją kartą elektroniczną.</translation> <translation id="8404893580027489425">Czytnik linii papilarnych znajduje się po prawej stronie urządzenia <ph name="DEVICE_TYPE" />. Dotknij go delikatnie dowolnym palcem.</translation> <translation id="8405046151008197676">Poznaj najważniejsze ulepszenia z najnowszej aktualizacji</translation> @@ -6838,7 +6834,6 @@ <translation id="8465444703385715657">Uruchomienie wtyczki <ph name="PLUGIN_NAME" /> wymaga Twojej zgody</translation> <translation id="8466417995783206254">Na tej karcie jest odtwarzany film w trybie obrazu w obrazie.</translation> <translation id="8467326454809944210">Wybierz inny język</translation> -<translation id="8470214316007448308">Inne osoby</translation> <translation id="8470513973197838199">Zapisane hasła do <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Strony zwykle łączą się z urządzeniami USB na przykład w celu drukowania dokumentów lub zapisywania plików na urządzeniu pamięci masowej</translation> <translation id="8471959340398751476">Zniżki są wyłączone. Możesz je włączyć w menu Dostosuj.</translation> @@ -7025,6 +7020,7 @@ <translation id="8676374126336081632">Wyczyść wpisany tekst</translation> <translation id="8676770494376880701">Podłączono ładowarkę o małej mocy</translation> <translation id="8677212948402625567">Zwiń wszystko...</translation> +<translation id="867767487203716855">Następna aktualizacja</translation> <translation id="8677859815076891398">Brak albumów. Utwórz album w <ph name="LINK_BEGIN" />Zdjęciach Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Karty się nie zmniejszają</translation> <translation id="8678933587484842200">Jak chcesz uruchamiać tę aplikację?</translation> @@ -7113,7 +7109,6 @@ <translation id="87646919272181953">Album Zdjęcia Google</translation> <translation id="8767621466733104912">Automatycznie aktualizuj Chrome u wszystkich użytkowników</translation> <translation id="8770406935328356739">Główny katalog rozszerzenia</translation> -<translation id="8770507190024617908">Zarządzaj użytkownikami</translation> <translation id="8771300903067484968">Na stronie startowej zostało przywrócone domyślne tło.</translation> <translation id="8773302562181397928">Zapisz drukarkę <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potwierdzenie przywrócenia danych</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 6e8dd5e..a25e8e1 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -712,6 +712,7 @@ <translation id="173628468822554835">Ok. Por padrão, os novos sites que você visitar não enviarão notificações.</translation> <translation id="1736419249208073774">Explorar</translation> <translation id="1737968601308870607">Cadastre um bug</translation> +<translation id="1739684185846730053">Os testes dessa tecnologia ainda estão em desenvolvimento ativo e estão disponíveis apenas em algumas regiões. Por enquanto, os sites podem testar o Sandbox de privacidade enquanto continuam usando as tecnologias atuais da Web, como cookies de terceiros.</translation> <translation id="174123615272205933">Personalizada</translation> <translation id="1741314857973421784">Continuar</translation> <translation id="1743570585616704562">Não reconhecida</translation> @@ -1136,6 +1137,7 @@ <translation id="217576141146192373">Não foi possível adicionar a impressora. Verifique a configuração da impressora e tente novamente.</translation> <translation id="2177950615300672361">Guia anônima: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Compromisso da autoridade de certificação</translation> +<translation id="2179416702468739594">Procurando perfis disponíveis. Isso pode fazer com que a rede móvel se desconecte por alguns minutos.</translation> <translation id="2182058453334755893">Copiado para a área de transferência</translation> <translation id="2184515124301515068">Permitir que Chrome defina quando os sites podem reproduzir sons (recomendado)</translation> <translation id="2186711480981247270">Página compartilhada de outro dispositivo</translation> @@ -1404,6 +1406,7 @@ <translation id="2469375675106140201">Personalizar verificação ortográfica</translation> <translation id="247051149076336810">URL de compartilhamento de arquivos</translation> <translation id="2470702053775288986">Extensões incompatíveis desativadas</translation> +<translation id="2470939964922472929">Um PIN incorreto foi digitado muitas vezes. Para configurar um novo PIN, digite a chave de desbloqueio pessoal (PUK) de oito dígitos fornecida pela sua operadora.</translation> <translation id="2471469610750100598">Preto (padrão)</translation> <translation id="2471506181342525583">Acesso à localização permitido</translation> <translation id="2473195200299095979">Traduzir esta página</translation> @@ -1700,6 +1703,7 @@ <translation id="2785873697295365461">Descritores de arquivos</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Número do grupo</translation> <translation id="2789486458103222910">Ok</translation> <translation id="2791529110887957050">Remover Linux</translation> <translation id="2791952154587244007">Ocorreu um erro. Não será possível iniciar automaticamente o aplicativo de quiosque neste dispositivo.</translation> @@ -2001,6 +2005,7 @@ <translation id="310671807099593501">O site está usando o Bluetooth</translation> <translation id="3108931485517391283">Não foi possível receber</translation> <translation id="3109724472072898302">Recolhido</translation> +<translation id="3113592018909187986">Você tem 1 tentativa restante. Não será possível usar esta rede até que um novo PIN seja configurado.</translation> <translation id="311394601889664316">Não permitir que os sites editem arquivos ou pastas no seu dispositivo</translation> <translation id="3115147772012638511">Aguardando o cache...</translation> <translation id="3115580024857770654">Recolher tudo</translation> @@ -2290,6 +2295,7 @@ <translation id="3440663250074896476">Mais ações para <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Tela</translation> <translation id="3441663102605358937">Faça login em <ph name="ACCOUNT" /> novamente para verificar essa conta</translation> +<translation id="3444641828375597683">Anunciantes e editores podem usar o FLoC, descrito posteriormente nesta página.</translation> <translation id="3445047461171030979">Respostas rápidas do Google Assistente</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> minutos</translation> <translation id="3445925074670675829">Dispositivo USB-C</translation> @@ -2872,7 +2878,7 @@ <translation id="4035758313003622889">&Gerenciador de tarefas</translation> <translation id="4036778507053569103">A política transferida do servidor por meio de download é inválida.</translation> <translation id="4037084878352560732">Cavalo</translation> -<translation id="4037889604535939429">Editar pessoa</translation> +<translation id="4040753847560036377">PUK incorreta</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Sair da página}one{Sair da página}other{Sair das páginas}}</translation> <translation id="4044612648082411741">Digite a senha do certificado</translation> <translation id="4044708573046946214">Senha do bloqueio de tela</translation> @@ -3081,6 +3087,7 @@ <translation id="4297813521149011456">Rotação da tela</translation> <translation id="4299022904780065004">Nova &janela anônima</translation> <translation id="4301671483919369635">Esta página tem permissão para editar arquivos</translation> +<translation id="4302605047395093221">Para usar este dispositivo, será necessário digitar o PIN para se conectar a esta rede móvel</translation> <translation id="4303079906735388947">Configure um novo PIN para sua chave de segurança</translation> <translation id="4305402730127028764">Copiar para <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Alternar</translation> @@ -3266,6 +3273,7 @@ <translation id="4510479820467554003">Lista das contas de pai/mãe</translation> <translation id="4510614391273086606">Arquivos e apps Linux estão sendo restaurados ao estado salvo em backup.</translation> <translation id="451102079304155829">carrinhos</translation> +<translation id="4513275008300099962">Desativar sobreposição de controles de janelas</translation> <translation id="4513946894732546136">Comentários</translation> <translation id="451407183922382411">Tecnologia da <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Alternar vídeo entre reproduzir e pausar</translation> @@ -4339,7 +4347,6 @@ <translation id="5709557627224531708">Definir o Chrome como seu navegador padrão</translation> <translation id="5711983031544731014">Não foi possível realizar o desbloqueio. Insira sua senha.</translation> <translation id="5712153969432126546">Às vezes, os sites podem publicar PDFs, como documentos, contratos, e formulários</translation> -<translation id="5712323955984474772">Próxima atualização</translation> <translation id="5715711091495208045">Agente do plug-in: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Mecanismos de pesquisa padrão</translation> <translation id="5719637365829998022">Leitura do código QR realizada.</translation> @@ -4611,10 +4618,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - Dispositivo USB conectado</translation> <translation id="6028117231645531007">Adicionar impressão digital</translation> <translation id="6031600495088157824">Opções de entrada na barra de ferramentas</translation> +<translation id="6032091552407840792">Esse teste está disponível apenas em <ph name="BEGIN_LINK" />algumas regiões<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Para conceder a uma extensão acesso a este site, clique nela.</translation> <translation id="6032912588568283682">Sistema de arquivos</translation> <translation id="603539183851330738">Desfazer opção de correção automática. Reverter para <ph name="TYPED_WORD" />. Pressione "Enter" para ativar ou "Esc" para dispensar.</translation> <translation id="6038929619733116134">Bloquear se o site mostrar anúncios invasivos ou enganosos</translation> +<translation id="603895874132768835">Não será possível usar esta rede até que um novo PIN seja configurado.</translation> <translation id="6039651071822577588">Dicionário de propriedade da rede incorreto</translation> <translation id="6040143037577758943">Fechar</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />O serviço de localização do Google usa fontes como redes móveis, Wi‑Fi e sensores para ajudar a estimar o local do seu dispositivo.<ph name="END_PARAGRAPH1" /> @@ -4862,6 +4871,7 @@ <translation id="6292699686837272722">as guias são encolhidas para uma largura média</translation> <translation id="6295158916970320988">Todos os sites</translation> <translation id="6295855836753816081">Salvando...</translation> +<translation id="6296410173147755564">PUK inválida</translation> <translation id="6298962879096096191">Usar o Google Play para instalar apps do Android</translation> <translation id="6300177430812514606">Bloquear o término de envio ou recebimento de dados</translation> <translation id="630065524203833229">&Sair</translation> @@ -4908,6 +4918,7 @@ <translation id="6340526405444716530">Personalização</translation> <translation id="6341850831632289108">Detectar sua localização física</translation> <translation id="6342069812937806050">Neste instante</translation> +<translation id="6343003829431264373">Somente páginas pares</translation> <translation id="6344170822609224263">Acessar lista de conexões de rede</translation> <translation id="6344576354370880196">Impressoras salvas</translation> <translation id="6345418402353744910">É preciso inserir seu nome de usuário e sua senha para o proxy <ph name="PROXY" />. Assim, o administrador poderá configurar sua rede.</translation> @@ -5107,7 +5118,6 @@ <translation id="6563469144985748109">Seu administrador ainda não o aprovou</translation> <translation id="6568283005472142698">Pesquisa de guias</translation> <translation id="6569911211938664415">As senhas são salvas na sua Conta do Google (<ph name="ACCOUNT" />) para que você possa usá-las em qualquer dispositivo</translation> -<translation id="6569934958368283244">Outras pessoas</translation> <translation id="6573497332121198392">Falha ao remover o atalho</translation> <translation id="657402800789773160">&Recarregar esta página</translation> <translation id="6577284282025554716">Download cancelado: <ph name="FILE_NAME" /></translation> @@ -5156,6 +5166,7 @@ <translation id="6624535038674360844">O arquivo <ph name="FILE_NAME" /> tem conteúdo confidencial ou perigoso. Peça para o proprietário corrigir isso.</translation> <translation id="6624687053722465643">Docinho</translation> <translation id="6628328486509726751">Horário do envio: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Digite pelo menos quatro números</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> deseja acesso permanente a um certificado para autenticar-se no seu nome.</translation> <translation id="6635362468090274700">Ninguém pode compartilhar com você sem que você esteja visível.<ph name="BR" /><ph name="BR" />Para ficar visível temporariamente, abra a área de status e ative a visibilidade do Compartilhar por proximidade.</translation> <translation id="6635944431854494329">O proprietário pode controlar esse recurso em "Config. > Avançado > Enviar automaticamente dados de uso e diagnóstico ao Google".</translation> @@ -5194,6 +5205,7 @@ <translation id="6664774537677393800">Ocorreu um erro ao abrir seu perfil. Saia da conta e faça login novamente.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> já está disponível</translation> <translation id="6671320560732140690">{COUNT,plural, =1{um endereço}one{# endereço}other{# endereços}}</translation> +<translation id="6671497123040790595">Configurando o gerenciamento por <ph name="MANAGER" /></translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Para iniciar a sincronização, digite a senha longa</translation> <translation id="6675665718701918026">Dispositivo apontador conectado</translation> @@ -5202,6 +5214,7 @@ <translation id="6680442031740878064">Disponível: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Velocidade</translation> <translation id="6681668084120808868">Tirar foto</translation> +<translation id="6683087162435654533">R&estaurar todas as guias</translation> <translation id="6683948477137300040">Mostre o EID do dispositivo e o pop-up do código QR</translation> <translation id="6684827949542560880">Fazendo o download da atualização mais recente</translation> <translation id="668599234725812620">Abrir o Google Play</translation> @@ -5771,6 +5784,7 @@ <translation id="7308643132139167865">Idiomas de sites</translation> <translation id="7309257895202129721">Mostrar &controles</translation> <translation id="7310598146671372464">Não foi possível fazer login. O servidor não é compatível com os tipos de criptografia do Kerberos especificados. Entre em contato com seu administrador.</translation> +<translation id="7315168816273861089">Ativar sobreposição de controles de janelas</translation> <translation id="7320213904474460808">Usar rede como padrão</translation> <translation id="7321545336522791733">Servidor inacessível</translation> <translation id="7324297612904500502">Fórum do Beta</translation> @@ -5947,7 +5961,9 @@ <translation id="7506541170099744506">Seu <ph name="DEVICE_TYPE" /> foi inscrito para o gerenciamento empresarial.</translation> <translation id="7507207699631365376">Consulte a <ph name="BEGIN_LINK" />política de privacidade<ph name="END_LINK" /> deste provedor</translation> <translation id="7507930499305566459">Certificado do respondente de status</translation> +<translation id="7509097596023256288">O gerenciamento está sendo configurado</translation> <translation id="7509246181739783082">Verificar sua identidade</translation> +<translation id="7511415964832680006">Quando esse recurso estiver ativado, os sites poderão usar as técnicas de preservação de privacidade mostradas aqui para exibir conteúdo e serviços. Isso inclui alternativas ao rastreamento entre sites. Ao longo do tempo, é possível que outros testes sejam adicionados.</translation> <translation id="7513029293694390567">Faça login automaticamente nos sites que usam credenciais armazenadas. Quando o recurso estiver desativado, será necessário fornecer uma confirmação todas as vezes que fizer login em um site.</translation> <translation id="7514239104543605883">Copiar para o dispositivo</translation> <translation id="7514365320538308">Fazer o download</translation> @@ -6308,6 +6324,8 @@ <translation id="7876027585589532670">Não é possível editar o atalho</translation> <translation id="7877451762676714207">Erro de servidor desconhecido. Tente novamente ou entre em contato com o administrador do servidor.</translation> <translation id="7879631849810108578">Atalho definido: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Quando esse recurso estiver ativado, o Chrome usará seu histórico de navegação de sete dias para determinar seu grupo ou "coorte". Os anunciantes podem selecionar anúncios para o grupo. Seu histórico de navegação é armazenado de forma particular no dispositivo. Este teste está disponível apenas em + <ph name="BEGIN_LINK" />algumas regiões<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Os dados locais serão excluídos quando você reiniciar</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Visualizar conta</translation> @@ -6467,6 +6485,7 @@ <translation id="804786196054284061">Contrato de licença do usuário final</translation> <translation id="8048977114738515028">Criar um atalho na área de trabalho no seu dispositivo para acessar este perfil diretamente</translation> <translation id="8049029041626250638">Conecte um teclado ou um mouse. Se você está usando dispositivos Bluetooth, confira se eles estão prontos para o pareamento.</translation> +<translation id="8049184478152619004">Digite a chave de desbloqueio pessoal (PUK)</translation> <translation id="8049705080247101012">O Google sinalizou a extensão "<ph name="EXTENSION_NAME" />" como maliciosa e impediu a instalação</translation> <translation id="8049948037269924837">Rolagem reversa do touchpad</translation> <translation id="8050038245906040378">Assinatura do código comercial da Microsoft</translation> @@ -6503,6 +6522,7 @@ <translation id="8082106343289440791">Parear com "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Desativar a depuração do adb redefinirá este <ph name="DEVICE_TYPE" /> para a configuração original. Todas as contas de usuário e os dados locais serão apagados.</translation> <translation id="8084114998886531721">Senha salva</translation> +<translation id="8084510406207562688">R&estaurar todas as guias</translation> <translation id="8086015605808120405">Configurando <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">Configurar <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{O arquivo está criptografado. Peça para o proprietário descriptografar.}one{O arquivo está criptografado. Peça para o proprietário descriptografar.}other{Alguns dos arquivos estão criptografados. Peça para o proprietário descriptografar.}}</translation> @@ -6544,6 +6564,7 @@ <translation id="8119438628456698432">Gerando arquivos de registros…</translation> <translation id="811994229154425014">Espaço duplo para inserir um ponto</translation> <translation id="8120505434908124087">Instalar perfil de eSIM</translation> +<translation id="812260729110117038">Anunciantes e editores também podem analisar a eficácia dos anúncios sem rastrear suas ações em sites.</translation> <translation id="8123590694679414600">Os dados foram criptografados com sua senha longa de sincronização em <ph name="TIME" />. Isso não inclui formas de pagamento e endereços do Google Pay.</translation> <translation id="81238879832906896">Flor amarela e branca</translation> @@ -6581,6 +6602,7 @@ <translation id="816055135686411707">Erro nas configurações de confiança do certificado</translation> <translation id="8160775796528709999">Ative o recurso Legenda instantânea nas configurações para exibir legendas para seus áudios e vídeos</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Com o <ph name="BEGIN_LINK" />Sandbox de privacidade<ph name="END_LINK" />, o Chrome está desenvolvendo novas tecnologias de proteção contra mecanismos de rastreamento enquanto mantém a Web livre.</translation> <translation id="8161293209665121583">Modo leitor para páginas da Web</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Mover guia para uma nova janela}one{Mover guia para uma nova janela}other{Mover guias para uma nova janela}}</translation> <translation id="8165997195302308593">Encaminhamento de portas do Crostini</translation> @@ -6782,7 +6804,6 @@ <translation id="8393700583063109961">Enviar mensagem</translation> <translation id="8397825320644530257">Desconectar smartphone conectado</translation> <translation id="8398877366907290961">Continuar mesmo assim</translation> -<translation id="8400146488506985033">Gerenciar pessoas</translation> <translation id="8401432541486058167">Insira o PIN associado ao seu cartão inteligente.</translation> <translation id="8404893580027489425">O sensor de impressão digital está no lado direito do seu <ph name="DEVICE_TYPE" />. Toque nele de leve com qualquer dedo.</translation> <translation id="8405046151008197676">Veja os destaques da atualização mais recente</translation> @@ -6838,7 +6859,6 @@ <translation id="8465444703385715657">O pulg-in <ph name="PLUGIN_NAME" /> precisa da sua permissão para ser executado</translation> <translation id="8466417995783206254">Esta guia está reproduzindo um vídeo em picture-in-picture.</translation> <translation id="8467326454809944210">Escolher outro idioma</translation> -<translation id="8470214316007448308">Outras pessoas</translation> <translation id="8470513973197838199">Senhas salvas para <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Os sites geralmente se conectam a dispositivos USB para recursos como imprimir um documento ou salvar em um dispositivo de armazenamento</translation> <translation id="8471959340398751476">Os descontos estão desativados. Você pode ativá-los no menu de personalização</translation> @@ -7025,6 +7045,7 @@ <translation id="8676374126336081632">Limpar entrada</translation> <translation id="8676770494376880701">Carregador de baixa potência conectado</translation> <translation id="8677212948402625567">Recolher tudo...</translation> +<translation id="867767487203716855">Próxima atualização</translation> <translation id="8677859815076891398">Nenhum álbum. Crie um no <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">as guias não são encolhidas</translation> <translation id="8678933587484842200">Como você gostaria que este app fosse iniciado?</translation> @@ -7113,7 +7134,6 @@ <translation id="87646919272181953">Álbum do Google Fotos</translation> <translation id="8767621466733104912">Atualizar automaticamente o Chrome para todos os usuários</translation> <translation id="8770406935328356739">Diretório raiz da extensão</translation> -<translation id="8770507190024617908">Gerenciar pessoas</translation> <translation id="8771300903067484968">O plano de fundo da página inicial foi redefinido para o plano de fundo padrão.</translation> <translation id="8773302562181397928">Salvar <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmar restauração</translation> @@ -7375,6 +7395,7 @@ <translation id="9031549947500880805">Fazer backup no Google Drive Restaure seus dados ou troque de dispositivo a qualquer momento com facilidade. Seu backup inclui dados do app.</translation> <translation id="9033765790910064284">Continuar mesmo assim</translation> <translation id="9033857511263905942">&Colar</translation> +<translation id="9035689366572880647">Digite o PIN atual</translation> <translation id="9037640663275993951">O dispositivo não é permitido</translation> <translation id="9037818663270399707">Sua conexão não é particular em todo o tráfego de rede</translation> <translation id="9037965129289936994">Mostrar original</translation> @@ -7450,6 +7471,7 @@ <translation id="9112748030372401671">Altere seu papel de parede</translation> <translation id="9112786533191410418">O arquivo <ph name="FILE_NAME" /> pode ser perigoso. Enviar ao Google para verificação?</translation> <translation id="9112987648460918699">Buscar...</translation> +<translation id="9113240369465613386">Somente páginas ímpares</translation> <translation id="9114663181201435112">Fazer login de forma fácil</translation> <translation id="9115675100829699941">&Favoritos</translation> <translation id="9116465289595958864">Última modificação</translation> @@ -7604,6 +7626,7 @@ <translation id="991413375315957741">sensores de luz ou movimento</translation> <translation id="992032470292211616">Extensões, aplicativos e temas podem danificar seu dispositivo. Você quer mesmo continuar?</translation> <translation id="992256792861109788">Rosa</translation> +<translation id="992401651319295351">Você tem <ph name="RETRIES" /> tentativas restantes. Não será possível usar esta rede até que um novo PIN seja configurado.</translation> <translation id="992592832486024913">Desativar ChromeVox (feedback falado)</translation> <translation id="992778845837390402">O backup do Linux está em andamento</translation> <translation id="993540765962421562">Instalação em andamento</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 0f6acac..778a511 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2862,7 +2862,6 @@ <translation id="4035758313003622889">Gestor de &tarefas</translation> <translation id="4036778507053569103">A política transferida do servidor é inválida.</translation> <translation id="4037084878352560732">Cavalo</translation> -<translation id="4037889604535939429">Editar pessoa</translation> <translation id="4040753847560036377">PUK incorreto</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Sair da página}other{Sair das páginas}}</translation> <translation id="4044612648082411741">Introduzir a palavra-passe do certificado</translation> @@ -4331,7 +4330,6 @@ <translation id="5709557627224531708">Definir o Chrome como o navegador predefinido</translation> <translation id="5711983031544731014">Não foi possível desbloquear. Introduza a sua palavra-passe.</translation> <translation id="5712153969432126546">Por vezes, os sites publicam PDFs, como documentos, contratos e formulários</translation> -<translation id="5712323955984474772">Próxima atualização</translation> <translation id="5715711091495208045">Mediador de plug-ins: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motores de pesquisa predefinidos</translation> <translation id="5719637365829998022">O código QR foi digitalizado.</translation> @@ -5103,7 +5101,6 @@ <translation id="6563469144985748109">O seu gestor ainda não o aprovou</translation> <translation id="6568283005472142698">Pesquisa de separadores</translation> <translation id="6569911211938664415">As palavras-passe são guardadas na sua Conta Google (<ph name="ACCOUNT" />) para que as possa utilizar em qualquer dispositivo</translation> -<translation id="6569934958368283244">Outras pessoas</translation> <translation id="6573497332121198392">Não foi possível remover o atalho.</translation> <translation id="657402800789773160">&Recarregar esta página</translation> <translation id="6577284282025554716">Transferência cancelada: <ph name="FILE_NAME" /></translation> @@ -6789,7 +6786,6 @@ <translation id="8393700583063109961">Enviar mensagem</translation> <translation id="8397825320644530257">Desligar telemóvel associado</translation> <translation id="8398877366907290961">Prosseguir</translation> -<translation id="8400146488506985033">Gerir pessoas</translation> <translation id="8401432541486058167">Indique o PIN que está associado ao seu cartão inteligente.</translation> <translation id="8404893580027489425">O sensor de impressões digitais está do lado direito do <ph name="DEVICE_TYPE" />. Toque levemente no mesmo com qualquer dedo.</translation> <translation id="8405046151008197676">Obtenha os destaques da atualização mais recente.</translation> @@ -6845,7 +6841,6 @@ <translation id="8465444703385715657">O <ph name="PLUGIN_NAME" /> necessita da sua autorização para ser executado</translation> <translation id="8466417995783206254">Este separador está a reproduzir um vídeo no modo ecrã no ecrã.</translation> <translation id="8467326454809944210">Selecionar outro idioma</translation> -<translation id="8470214316007448308">Outras Pessoas</translation> <translation id="8470513973197838199">Palavras-passe guardadas para <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Normalmente, os sites estabelecem ligação a dispositivos USB para funcionalidades como imprimir um documento ou guardar num dispositivo de armazenamento.</translation> <translation id="8471959340398751476">Os descontos estão desativados. Pode ativá-los no menu Personalizar</translation> @@ -7032,6 +7027,7 @@ <translation id="8676374126336081632">Limpar texto</translation> <translation id="8676770494376880701">Carregador de baixo consumo ligado</translation> <translation id="8677212948402625567">Reduzir tudo...</translation> +<translation id="867767487203716855">Próxima atualização</translation> <translation id="8677859815076891398">Não existem álbuns. Crie um álbum no <ph name="LINK_BEGIN" />Google Fotos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Os separadores não são reduzidos</translation> <translation id="8678933587484842200">Como pretende que esta aplicação seja iniciada?</translation> @@ -7120,7 +7116,6 @@ <translation id="87646919272181953">Álbum do Google Fotos</translation> <translation id="8767621466733104912">Atualizar automaticamente o Chrome para todos os utilizadores</translation> <translation id="8770406935328356739">Diretório raiz da extensão</translation> -<translation id="8770507190024617908">Gerir pessoas</translation> <translation id="8771300903067484968">O fundo da página de inicio foi reposto para a predefinição.</translation> <translation id="8773302562181397928">Guardar <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirme o restauro</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 94f31b4..e452a25 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2862,7 +2862,6 @@ <translation id="4035758313003622889">&Manager de activități</translation> <translation id="4036778507053569103">Politica descărcată de pe server nu este validă.</translation> <translation id="4037084878352560732">Cal</translation> -<translation id="4037889604535939429">Editează persoana</translation> <translation id="4040753847560036377">Cod PUK incorect</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Închide pagina}few{Închide paginile}other{Închide paginile}}</translation> <translation id="4044612648082411741">Introdu parola pentru certificat</translation> @@ -4330,7 +4329,6 @@ <translation id="5709557627224531708">Setează Chrome ca browser prestabilit</translation> <translation id="5711983031544731014">Nu se poate debloca. Introdu parola.</translation> <translation id="5712153969432126546">Site-urile publică uneori fișiere PDF, cum ar documente, contracte și formulare</translation> -<translation id="5712323955984474772">Următoarea actualizare</translation> <translation id="5715711091495208045">Broker pluginuri: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motoarele de căutare prestabilite</translation> <translation id="5719637365829998022">Codul QR a fost scanat.</translation> @@ -5102,7 +5100,6 @@ <translation id="6563469144985748109">Administratorul nu l-a aprobat încă</translation> <translation id="6568283005472142698">Căutarea filelor</translation> <translation id="6569911211938664415">Parolele sunt salvate în Contul tău Google (<ph name="ACCOUNT" />), astfel încât să le poți folosi pe orice dispozitiv</translation> -<translation id="6569934958368283244">Alte persoane</translation> <translation id="6573497332121198392">Nu se poate elimina comanda rapidă</translation> <translation id="657402800789773160">&Reîncarcă această pagină</translation> <translation id="6577284282025554716">Descărcare anulată: <ph name="FILE_NAME" /></translation> @@ -6788,7 +6785,6 @@ <translation id="8393700583063109961">Trimite un mesaj</translation> <translation id="8397825320644530257">Deconectează telefonul conectat</translation> <translation id="8398877366907290961">Continuă oricum</translation> -<translation id="8400146488506985033">Gestionează persoanele</translation> <translation id="8401432541486058167">Introdu codul PIN asociat cardului inteligent.</translation> <translation id="8404893580027489425">Senzorul de amprente se află pe partea dreaptă a dispozitivului <ph name="DEVICE_TYPE" />. Atinge-l ușor cu orice deget.</translation> <translation id="8405046151008197676">Vezi informațiile importante despre ultima actualizare</translation> @@ -6844,7 +6840,6 @@ <translation id="8465444703385715657">Pluginul <ph name="PLUGIN_NAME" /> are nevoie de permisiunea ta pentru a rula</translation> <translation id="8466417995783206254">Această filă redă un videoclip în modul picture-in-picture.</translation> <translation id="8467326454809944210">Alege altă limbă</translation> -<translation id="8470214316007448308">Alte persoane</translation> <translation id="8470513973197838199">Parole salvate pentru <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Site-urile se conectează de obicei la dispozitive USB pentru funcții cum ar fi imprimarea unui document sau salvarea pe un dispozitiv de stocare</translation> <translation id="8471959340398751476">Reducerile sunt dezactivate. Le poți activa în meniul de personalizare</translation> @@ -7031,6 +7026,7 @@ <translation id="8676374126336081632">Șterge textul introdus</translation> <translation id="8676770494376880701">A fost conectat un încărcător de putere joasă</translation> <translation id="8677212948402625567">Restrânge-le pe toate...</translation> +<translation id="867767487203716855">Următoarea actualizare</translation> <translation id="8677859815076891398">Niciun album. Creează un album în <ph name="LINK_BEGIN" />Google Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Filele nu se micșorează</translation> <translation id="8678933587484842200">Cum dorești să se lanseze această aplicație?</translation> @@ -7119,7 +7115,6 @@ <translation id="87646919272181953">Album Google Foto</translation> <translation id="8767621466733104912">Actualizează automat Chrome pentru toți utilizatorii</translation> <translation id="8770406935328356739">Director rădăcină pentru extensie</translation> -<translation id="8770507190024617908">Gestionează persoanele</translation> <translation id="8771300903067484968">Fundalul paginii de pornire a fost resetat la fundalul prestabilit.</translation> <translation id="8773302562181397928">Salvați <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Confirmă restabilirea</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 728f3cc..e48a5c94 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -702,6 +702,7 @@ <translation id="173628468822554835">ОК. По умолчанию новые сайты не будут отправлять вам уведомления.</translation> <translation id="1736419249208073774">Подробнее</translation> <translation id="1737968601308870607">Сообщить об ошибке</translation> +<translation id="1739684185846730053">Пробные функции Privacy Sandbox находятся на стадии разработки и доступны не во всех регионах. Пока сайты могут использовать Privacy Sandbox, не отказываясь от уже существующих веб-технологий, таких как сторонние файлы cookie.</translation> <translation id="174123615272205933">Другое</translation> <translation id="1741314857973421784">Далее</translation> <translation id="1743570585616704562">Не распознано</translation> @@ -1125,6 +1126,7 @@ <translation id="217576141146192373">Не удалось добавить принтер. Проверьте его настройки и повторите попытку.</translation> <translation id="2177950615300672361">Вкладка в режиме инкогнито: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Скомпрометированный ЦС</translation> +<translation id="2179416702468739594">Поиск доступных профилей… Подключение к мобильной сети может быть прервано на несколько минут.</translation> <translation id="2182058453334755893">Скопировано в буфер обмена.</translation> <translation id="2184515124301515068">Разрешить браузеру определять, на каких сайтах можно воспроизводить звук (рекомендуется)</translation> <translation id="2186711480981247270">Страница, полученная с другого устройства</translation> @@ -1390,6 +1392,7 @@ <translation id="2469375675106140201">Настроить проверку правописания</translation> <translation id="247051149076336810">URL общей папки</translation> <translation id="2470702053775288986">Неподдерживаемые расширения отключены</translation> +<translation id="2470939964922472929">Слишком много попыток ввести PIN-код. Чтобы задать новый PIN-код, введите 8-значный PUK-код, предоставленный оператором связи.</translation> <translation id="2471469610750100598">Черный (по умолчанию)</translation> <translation id="2471506181342525583">Есть доступ к вашим геоданным</translation> <translation id="2473195200299095979">Перевести эту страницу</translation> @@ -1685,6 +1688,7 @@ <translation id="2785873697295365461">Дескрипторы файлов</translation> <translation id="2787354132612937472">–</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Номер группы</translation> <translation id="2789486458103222910">ОК</translation> <translation id="2791529110887957050">Удалить Linux</translation> <translation id="2791952154587244007">Не удалось разрешить автозапуск киоск-приложений на этом устройстве</translation> @@ -1986,6 +1990,7 @@ <translation id="310671807099593501">Сайт использует Bluetooth</translation> <translation id="3108931485517391283">Не удалось получить файл</translation> <translation id="3109724472072898302">Свернуто</translation> +<translation id="3113592018909187986">Осталась одна попытка. Вы не сможете использовать эту сеть, пока не зададите новый PIN-код.</translation> <translation id="311394601889664316">Запретить сайтам изменять файлы и папки на устройстве</translation> <translation id="3115147772012638511">Ожидание кеша…</translation> <translation id="3115580024857770654">Свернуть все</translation> @@ -2274,6 +2279,7 @@ <translation id="3440663250074896476">Другие действия с закладкой <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Экран</translation> <translation id="3441663102605358937">Войдите в аккаунт <ph name="ACCOUNT" /> ещё раз, чтобы подтвердить его</translation> +<translation id="3444641828375597683">Рекламодатели и издатели могут использовать технологию FLoC, описание которой приведено дальше на этой странице.</translation> <translation id="3445047461171030979">Быстрые ответы Google Ассистента</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> мин.</translation> <translation id="3445925074670675829">Устройство USB-C</translation> @@ -2856,7 +2862,7 @@ <translation id="4035758313003622889">&Диспетчер задач</translation> <translation id="4036778507053569103">Скачанная с сервера политика недействительна.</translation> <translation id="4037084878352560732">Лошадь</translation> -<translation id="4037889604535939429">Сменить пользователя</translation> +<translation id="4040753847560036377">Неверный PUK-код.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Закрыть страницу}one{Закрыть страницы}few{Закрыть страницы}many{Закрыть страницы}other{Закрыть страницы}}</translation> <translation id="4044612648082411741">Введите пароль сертификата</translation> <translation id="4044708573046946214">Пароль для блокировки экрана</translation> @@ -3065,6 +3071,7 @@ <translation id="4297813521149011456">Поворот экрана</translation> <translation id="4299022904780065004">Новое окно в режиме &инкогнито</translation> <translation id="4301671483919369635">У этой страницы есть доступ для изменения файлов</translation> +<translation id="4302605047395093221">Все пользователи устройства должны будут вводить указанный PIN-код при подключении к этой мобильной сети.</translation> <translation id="4303079906735388947">Установите новый PIN-код для электронного ключа.</translation> <translation id="4305402730127028764">Копировать на устройство "<ph name="DEVICE_NAME" />"</translation> <translation id="4305817255990598646">Переключиться</translation> @@ -3249,6 +3256,7 @@ <translation id="4510479820467554003">Аккаунты родителей</translation> <translation id="4510614391273086606">Восстановление файлов и приложений Linux из резервной копии</translation> <translation id="451102079304155829">корзины</translation> +<translation id="4513275008300099962">Отключить оверлей элементов управления окном</translation> <translation id="4513946894732546136">Отзыв</translation> <translation id="451407183922382411">Технологии <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Запустить или приостановить видео</translation> @@ -4321,7 +4329,6 @@ <translation id="5709557627224531708">Сделайте Google Chrome браузером по умолчанию</translation> <translation id="5711983031544731014">Невозможно разблокировать. Введите пароль.</translation> <translation id="5712153969432126546">Иногда на сайтах публикуются файлы в формате PDF, например документы, договоры или формы.</translation> -<translation id="5712323955984474772">Следующее обновление</translation> <translation id="5715711091495208045">Посредник: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Поисковая система по умолчанию</translation> <translation id="5719637365829998022">QR-код отсканирован.</translation> @@ -4593,10 +4600,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" />: подключено USB-устройство</translation> <translation id="6028117231645531007">Добавить отпечаток пальца</translation> <translation id="6031600495088157824">Показать настройки ввода на панели инструментов</translation> +<translation id="6032091552407840792">Эта пробная функция доступна только в <ph name="BEGIN_LINK" />некоторых регионах<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Чтобы предоставить расширению доступ к сайту, нажмите на него</translation> <translation id="6032912588568283682">Файловая система</translation> <translation id="603539183851330738">Выбрана кнопка, позволяющая отменить автозамену. При ее нажатии будет восстановлено слово "<ph name="TYPED_WORD" />". Нажмите Ввод, чтобы нажать на кнопку, или Escape, чтобы выйти.</translation> <translation id="6038929619733116134">Блокировать, если сайт показывает навязчивую или вводящую в заблуждение рекламу.</translation> +<translation id="603895874132768835">Вы не сможете использовать эту сеть, пока не зададите новый PIN-код.</translation> <translation id="6039651071822577588">Словарь сетевых свойств поврежден</translation> <translation id="6040143037577758943">Закрыть</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Когда геолокация Google включена, местоположение устройства определяется с помощью датчиков, Wi‑Fi и мобильных сетей.<ph name="END_PARAGRAPH1" /> @@ -4844,6 +4853,7 @@ <translation id="6292699686837272722">вкладки уменьшаются в четыре раза</translation> <translation id="6295158916970320988">Все сайты</translation> <translation id="6295855836753816081">Сохранение...</translation> +<translation id="6296410173147755564">Недействительный PUK-код.</translation> <translation id="6298962879096096191">Использование Google Play для установки приложений Android</translation> <translation id="6300177430812514606">Запретить сайтам завершать отправку и получение данных</translation> <translation id="630065524203833229">В&ыход</translation> @@ -4890,6 +4900,7 @@ <translation id="6340526405444716530">Персонализация</translation> <translation id="6341850831632289108">Определение вашего местоположения</translation> <translation id="6342069812937806050">только что</translation> +<translation id="6343003829431264373">Только четные страницы</translation> <translation id="6344170822609224263">Доступ к списку сетевых подключений</translation> <translation id="6344576354370880196">Сохраненные принтеры</translation> <translation id="6345418402353744910">Чтобы администратор мог настроить вашу сеть, прокси-серверу <ph name="PROXY" /> требуется ваше имя и пароль.</translation> @@ -5089,7 +5100,6 @@ <translation id="6563469144985748109">Ещё не одобрено администратором</translation> <translation id="6568283005472142698">Поиск по вкладкам</translation> <translation id="6569911211938664415">Пароли сохраняются в аккаунте Google (<ph name="ACCOUNT" />) и доступны вам на любом устройстве.</translation> -<translation id="6569934958368283244">Другие пользователи</translation> <translation id="6573497332121198392">Не удалось удалить ярлык.</translation> <translation id="657402800789773160">&Обновить страницу</translation> <translation id="6577284282025554716">Скачивание файла <ph name="FILE_NAME" /> отменено</translation> @@ -5138,6 +5148,7 @@ <translation id="6624535038674360844">Файл <ph name="FILE_NAME" /> содержит конфиденциальный или опасный контент. Попросите владельца его исправить.</translation> <translation id="6624687053722465643">Пирожное</translation> <translation id="6628328486509726751">Время загрузки: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Введите не менее четырех цифр.</translation> <translation id="6630752851777525409">Расширение "<ph name="EXTENSION_NAME" />" запрашивает постоянный доступ к сертификату для прохождения аутентификации от вашего имени.</translation> <translation id="6635362468090274700">Никто не сможет обмениваться с вами данными, пока вы не откроете доступ к своему устройству.<ph name="BR" /><ph name="BR" />Чтобы предоставить временный доступ, откройте панель состояния и включите параметр "Широкий доступ".</translation> <translation id="6635944431854494329">Владелец может управлять этой функцией в меню "Настройки > Дополнительные > Автоматически отправлять статистику использования и данные диагностики в Google".</translation> @@ -5176,6 +5187,7 @@ <translation id="6664774537677393800">Не удалось открыть профиль. Попробуйте выйти из аккаунта и войти снова.</translation> <translation id="6670142487971298264">Срок блокировки приложения "<ph name="APP_NAME" />" истек.</translation> <translation id="6671320560732140690">{COUNT,plural, =1{адрес}one{# адрес}few{# адреса}many{# адресов}other{# адреса}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" />: настройка управления</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Чтобы начать синхронизацию, введите кодовую фразу.</translation> <translation id="6675665718701918026">Подключено дополнительное устройство</translation> @@ -5184,6 +5196,7 @@ <translation id="6680442031740878064">Доступно: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Скорость речи</translation> <translation id="6681668084120808868">Сфотографировать</translation> +<translation id="6683087162435654533">Восстановить все вкладки</translation> <translation id="6683948477137300040">Показать всплывающее окно с кодом EID и QR-кодом</translation> <translation id="6684827949542560880">Скачивается последнее обновление</translation> <translation id="668599234725812620">Открыть Google Play</translation> @@ -5753,6 +5766,7 @@ <translation id="7308643132139167865">Языки сайтов</translation> <translation id="7309257895202129721">Показать &элементы управления</translation> <translation id="7310598146671372464">Не удалось выполнить вход. Сервер не поддерживает выбранные типы шифрования Kerberos. Обратитесь к администратору.</translation> +<translation id="7315168816273861089">Включить оверлей элементов управления окном</translation> <translation id="7320213904474460808">Выбрать сеть по умолчанию</translation> <translation id="7321545336522791733">Сервер недоступен</translation> <translation id="7324297612904500502">Форум бета-версии</translation> @@ -5929,7 +5943,9 @@ <translation id="7506541170099744506">Ваше устройство <ph name="DEVICE_TYPE" /> зарегистрировано для использования в организации.</translation> <translation id="7507207699631365376">Посмотреть <ph name="BEGIN_LINK" />политику конфиденциальности<ph name="END_LINK" /> этого поставщика услуг</translation> <translation id="7507930499305566459">Сертификат ответчика о состоянии</translation> +<translation id="7509097596023256288">Настройка управления</translation> <translation id="7509246181739783082">Подтвердите личность</translation> +<translation id="7511415964832680006">Если функции Privacy Sandbox включены, сайты могут использовать представленные здесь технологии, не нарушающие конфиденциальность, в том числе альтернативы межсайтовому отслеживанию. Со временем будет доступно больше пробных функций.</translation> <translation id="7513029293694390567">Автоматически входить на сайты с помощью сохраненного имени пользователя и пароля. Когда функция отключена, эти данные нужно вводить при каждом входе.</translation> <translation id="7514239104543605883">Копировать на мое устройство</translation> <translation id="7514365320538308">Скачать</translation> @@ -6290,6 +6306,7 @@ <translation id="7876027585589532670">Не удалось изменить ярлык.</translation> <translation id="7877451762676714207">Обнаружена неизвестная ошибка сервера. Повторите попытку или свяжитесь с его администратором.</translation> <translation id="7879631849810108578">Добавлено сочетание клавиш: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Если эта функция включена и активирована, Chrome определяет группу (когорту), в которую вы входите, с помощью истории браузера за семь дней. Рекламодатели могут выбрать объявления для группы. История браузера хранится на устройстве и доступна только вам. Эта пробная функция работает только в <ph name="BEGIN_LINK" />некоторых регионах<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Локальные данные будут удалены после перезапуска</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Просмотреть аккаунт</translation> @@ -6449,6 +6466,7 @@ <translation id="804786196054284061">Лицензионное соглашение с конечным пользователем</translation> <translation id="8048977114738515028">Чтобы быстро переключаться на этот профиль, создайте ярлык на рабочем столе</translation> <translation id="8049029041626250638">Подключите мышь или клавиатуру. Если вы используете устройства Bluetooth, убедитесь, что они готовы к подключению.</translation> +<translation id="8049184478152619004">Введите PUK-код</translation> <translation id="8049705080247101012">Google заблокировал установку потенциально опасной программы (<ph name="EXTENSION_NAME" />).</translation> <translation id="8049948037269924837">Обратное направление прокрутки с помощью сенсорной панели</translation> <translation id="8050038245906040378">Подписывание коммерческого кода Microsoft</translation> @@ -6485,6 +6503,7 @@ <translation id="8082106343289440791">Подключиться к устройству "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Если вы отключите отладку с ADB, настройки этого устройства <ph name="DEVICE_TYPE" /> будут сброшены до заводских. Все аккаунты пользователей и локальные данные будут удалены.</translation> <translation id="8084114998886531721">Сохраненный пароль</translation> +<translation id="8084510406207562688">Восстановить все вкладки</translation> <translation id="8086015605808120405">Настройка принтера "<ph name="PRINTER_NAME" />"...</translation> <translation id="8086442853986205778">Настроить принтер "<ph name="PRINTER_NAME" />"</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Этот файл зашифрован. Попросите владельца его расшифровать.}one{Некоторые файлы зашифрованы. Попросите владельца их расшифровать.}few{Некоторые файлы зашифрованы. Попросите владельца их расшифровать.}many{Некоторые файлы зашифрованы. Попросите владельца их расшифровать.}other{Некоторые файлы зашифрованы. Попросите владельца их расшифровать.}}</translation> @@ -6526,6 +6545,7 @@ <translation id="8119438628456698432">Создание файлов журнала…</translation> <translation id="811994229154425014">Ставить точки двойным нажатием на пробел</translation> <translation id="8120505434908124087">Установить профиль eSIM</translation> +<translation id="812260729110117038">Рекламодатели и издатели могут оценивать эффективность рекламы, не отслеживая ваши действия на сайтах.</translation> <translation id="8123590694679414600">Данные зашифрованы с помощью кодовой фразы <ph name="TIME" />. Шифрование не применяется к способам оплаты и адресам из Google Pay.</translation> <translation id="81238879832906896">Цветок (желтый с белым)</translation> <translation id="8124313775439841391">Управляемый ONC</translation> @@ -6562,6 +6582,7 @@ <translation id="816055135686411707">Ошибка при определении доверия сертификата</translation> <translation id="8160775796528709999">Включить автоматические субтитры для аудио и видео можно в настройках</translation> <translation id="816095449251911490"><ph name="SPEED" /> – <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">С помощью <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> команда Chrome разрабатывает новые технологии для защиты пользователей от межсайтового отслеживания, сохраняя открытый интернет.</translation> <translation id="8161293209665121583">Режим чтения веб-страниц</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Открыть вкладку в новом окне}one{Открыть вкладки в новом окне}few{Открыть вкладки в новом окне}many{Открыть вкладки в новом окне}other{Открыть вкладки в новом окне}}</translation> <translation id="8165997195302308593">Переадресация портов в Crostini</translation> @@ -6763,7 +6784,6 @@ <translation id="8393700583063109961">Отправить сообщение</translation> <translation id="8397825320644530257">Прервать подключение к телефону</translation> <translation id="8398877366907290961">Продолжить все равно</translation> -<translation id="8400146488506985033">Управлять пользователями</translation> <translation id="8401432541486058167">Укажите PIN-код, связанный с вашей смарт-картой.</translation> <translation id="8404893580027489425">Сканер отпечатков пальцев расположен на правой боковой части устройства <ph name="DEVICE_TYPE" />. Слегка коснитесь его любым пальцем.</translation> <translation id="8405046151008197676">Изучите основную информацию о последнем обновлении.</translation> @@ -6819,7 +6839,6 @@ <translation id="8465444703385715657">Для работы плагина <ph name="PLUGIN_NAME" /> необходимо разрешение</translation> <translation id="8466417995783206254">На этой вкладке воспроизводится видео в режиме "Картинка в картинке".</translation> <translation id="8467326454809944210">Выбрать другой язык</translation> -<translation id="8470214316007448308">Другие пользователи</translation> <translation id="8470513973197838199">Сохраненные пароли для <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Обычно сайты подключаются к USB-устройствам, чтобы использовать некоторые функции, например печатать документы или сохранять данные на внешних накопителях.</translation> <translation id="8471959340398751476">Скидки отключены. Включить их можно в меню настройки.</translation> @@ -7006,6 +7025,7 @@ <translation id="8676374126336081632">Очистить</translation> <translation id="8676770494376880701">Подключено маломощное зарядное устройство</translation> <translation id="8677212948402625567">Свернуть все...</translation> +<translation id="867767487203716855">Следующее обновление</translation> <translation id="8677859815076891398">Альбомов нет. Создайте альбом в <ph name="LINK_BEGIN" />Google Фото<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">вкладки не уменьшаются</translation> <translation id="8678933587484842200">Как запустить это приложение?</translation> @@ -7094,7 +7114,6 @@ <translation id="87646919272181953">Альбом в Google Фото</translation> <translation id="8767621466733104912">Обновить Chrome для всех пользователей</translation> <translation id="8770406935328356739">Корневой каталог расширения</translation> -<translation id="8770507190024617908">Управлять пользователями</translation> <translation id="8771300903067484968">Фон стартовой страницы изменен на вариант по умолчанию.</translation> <translation id="8773302562181397928">Сохранить принтер "<ph name="PRINTER_NAME" />"</translation> <translation id="8774379074441005279">Подтвердите восстановление</translation> @@ -7358,6 +7377,7 @@ <translation id="9031549947500880805">Сохранение резервных копий на Google Диске. Позволяет в любой момент восстанавливать данные (в том числе из приложений) или переносить их с одного устройства на другое.</translation> <translation id="9033765790910064284">Продолжить</translation> <translation id="9033857511263905942">&Вставить</translation> +<translation id="9035689366572880647">Введите текущий PIN-код</translation> <translation id="9037640663275993951">Не разрешено выполнять ВМ на этом устройстве.</translation> <translation id="9037818663270399707">Весь ваш сетевой трафик передается через незащищенное подключение.</translation> <translation id="9037965129289936994">Показать оригинал</translation> @@ -7433,6 +7453,7 @@ <translation id="9112748030372401671">Изменение обоев</translation> <translation id="9112786533191410418">Файл "<ph name="FILE_NAME" />" может представлять опасность. Отправить его в Google для проверки?</translation> <translation id="9112987648460918699">Найти...</translation> +<translation id="9113240369465613386">Только нечетные страницы</translation> <translation id="9114663181201435112">Удобный вход</translation> <translation id="9115675100829699941">&Закладки</translation> <translation id="9116465289595958864">Последнее изменение</translation> @@ -7587,6 +7608,7 @@ <translation id="991413375315957741">Датчики движения и освещенности</translation> <translation id="992032470292211616">Расширения, приложения и темы могут причинить вред вашему мобильному устройству. Продолжить?</translation> <translation id="992256792861109788">Розовый</translation> +<translation id="992401651319295351">Осталось попыток: <ph name="RETRIES" />. Вы не сможете использовать эту сеть, пока не зададите новый PIN-код.</translation> <translation id="992592832486024913">Отключить ChromeVox (голосовое сопровождение)</translation> <translation id="992778845837390402">Выполняется резервное копирование Linux.</translation> <translation id="993540765962421562">Выполняется установка</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index b6ea796..6f736c6 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -2865,7 +2865,6 @@ <translation id="4035758313003622889">&කාර්ය කළමනාකරු</translation> <translation id="4036778507053569103">සේවාදායකයෙන් බාගත් ප්රතිපත්තිය අවලංගුයි.</translation> <translation id="4037084878352560732">අශ්වයා</translation> -<translation id="4037889604535939429">පුද්ගලයා සංස්කරණය කරන්න</translation> <translation id="4040753847560036377">වැරදි PUK එකකි.</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{පිටවීමේ පිටුව}one{පිටවීමේ පිටු}other{පිටවීමේ පිටු}}</translation> <translation id="4044612648082411741">ඔබේ සහතික මුරපදය ඇතුළු කරන්න</translation> @@ -4334,7 +4333,6 @@ <translation id="5709557627224531708">Chrome ඔබේ පෙරනිමි බ්රවුසරය ලෙස සකසන්න</translation> <translation id="5711983031544731014">අගුලු හැරීමට නොහැකිය. ඔබගේ මුරපදය ඇතුළු කරන්න.</translation> <translation id="5712153969432126546">අඩවි සමහර විට ලේඛන, කොන්ත්රාත්තු සහ පෝරම වැනි PDF ප්රකාශයට පත් කළ හැකිය</translation> -<translation id="5712323955984474772">ඊළඟ යාවත්කාලීනය</translation> <translation id="5715711091495208045">ප්ලගින තැරැව්කරු: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">පෙරනිමි සෙවීම් යාන්ත්රණ</translation> <translation id="5719637365829998022">QR කේතය ස්කෑන් කර ඇත.</translation> @@ -5104,7 +5102,6 @@ <translation id="6563469144985748109">ඔබේ කළමනාකරු තවම එය අනුමත කර නැත</translation> <translation id="6568283005472142698">ටැබ සෙවීම</translation> <translation id="6569911211938664415">මුරපද ඔබගේ Google ගිණුමේ (<ph name="ACCOUNT" />) සුරකිනු ලබන අතර, එම නිසා ඔබට ඒවා ඕනෑම උපාංගයක භාවිත කළ හැකිය</translation> -<translation id="6569934958368283244">වෙනත් පුද්ගලයින්</translation> <translation id="6573497332121198392">කෙටි මග ඉවත් කළ නොහැකිය</translation> <translation id="657402800789773160">මෙම පිටුව නැවත පුරවන්න (&R)</translation> <translation id="6577284282025554716">බාගැනීම අවලංගු කරන ලදී: <ph name="FILE_NAME" /></translation> @@ -6788,7 +6785,6 @@ <translation id="8393700583063109961">පණිවිඩය යවන්න</translation> <translation id="8397825320644530257">සම්බන්ධිත දුරකථනය විසන්ධි කරන්න</translation> <translation id="8398877366907290961">කෙසේ හෝ කරගෙන යන්න</translation> -<translation id="8400146488506985033">පුද්ගලයින් කළමනාකරණය කරන්න</translation> <translation id="8401432541486058167">ඔබේ ස්මාර්ට් කාඩ්පත හා සම්බන්ධ රහස් අංකය ලබා දෙන්න.</translation> <translation id="8404893580027489425">ඇඟිලි සලකුණු සංවේදකය ඔබගේ <ph name="DEVICE_TYPE" /> හි දකුණු අත පැත්තේ ඇත. ඕනෑම ඇඟිල්ලකින් එය සුළුවෙන් ස්පර්ශ කරන්න.</translation> <translation id="8405046151008197676">නවතම යාවත්කාලීනයෙන් උද්දීපන ලබා ගන්න</translation> @@ -6844,7 +6840,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> හට ධාවනය වීමට ඔබේ අවසරය අවශ්යයි</translation> <translation id="8466417995783206254">මෙම පටිත්ත පින්තූරය-තුළ-පින්තූරය තුළ වීඩියෝව ධාවනය කරයි.</translation> <translation id="8467326454809944210">වෙනත් භාෂාවක් තෝරන්න</translation> -<translation id="8470214316007448308">වෙනත් පුද්ගලයින්</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> සඳහා සුරැකි මුරපද</translation> <translation id="8471525937465764768">අඩවි සාමාන්යයෙන් ලේඛනයක් මුද්රණය කිරීම හෝ ගබඩා උපාංගයකට සුරැකීම වැනි විශේෂාංග සඳහා USB උපාංග සමඟ සම්බන්ධ වේ</translation> <translation id="8471959340398751476">වට්ටම් ක්රියාවිරහිතයි. අභිරුචිකරණ මෙනුවෙන් ඔබට ඒවා ක්රියාත්මක කළ හැකිය</translation> @@ -7031,6 +7026,7 @@ <translation id="8676374126336081632">ආදානය හිස් කරන්න</translation> <translation id="8676770494376880701">අඩු-බල ආරෝපකය සමබන්ධ කර ඇත</translation> <translation id="8677212948402625567">සියල්ල හකුළන්න...</translation> +<translation id="867767487203716855">ඊළඟ යාවත්කාලීනය</translation> <translation id="8677859815076891398">ඇල්බම නොමැත. <ph name="LINK_BEGIN" />Google ඡායාරූප<ph name="LINK_END" /> තුළ ඇල්බමයක් තනන්න.</translation> <translation id="8678582529642151449">නොහැකිළෙන ටැබ</translation> <translation id="8678933587484842200">ඔබ මෙම යෙදුම දියත් කිරීමට කැමති කෙසේ ද?</translation> @@ -7119,7 +7115,6 @@ <translation id="87646919272181953">Google ඡායාරූප ඇල්බමය</translation> <translation id="8767621466733104912">සියලු පරිශීලකයන් සඳහා Chrome ස්වයංක්රීයව යාවත්කාලීන කරන්න</translation> <translation id="8770406935328356739">දිගු මූල නාමාවලිය</translation> -<translation id="8770507190024617908">පුද්ගලයින් කළමනාකරණය කරන්න</translation> <translation id="8771300903067484968">ආරම්භක පිටු පසුබිම පෙරනිමි පසුබිම ලෙස යළි සකසා ඇත.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> සුරකින්න</translation> <translation id="8774379074441005279">ප්රතිසාධනය තහවුරු කරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index b0cd73f7..1f62bef 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2863,7 +2863,6 @@ <translation id="4035758313003622889">&Správca úloh</translation> <translation id="4036778507053569103">Pravidlo stiahnuté zo servera je neplatné.</translation> <translation id="4037084878352560732">Kôň</translation> -<translation id="4037889604535939429">Úprava osoby</translation> <translation id="4040753847560036377">Nesprávny kód PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Opustiť stránku}few{Opustiť stránky}many{Opustiť stránky}other{Opustiť stránky}}</translation> <translation id="4044612648082411741">Zadajte heslo certifikátu</translation> @@ -4331,7 +4330,6 @@ <translation id="5709557627224531708">Nastavte Chrome ako predvolený prehliadač</translation> <translation id="5711983031544731014">Nie je možné odomknúť. Zadajte heslo.</translation> <translation id="5712153969432126546">Weby niekedy zverejňujú súbory PDF, napríklad dokumenty, zmluvy a formuláre</translation> -<translation id="5712323955984474772">Ďalšia aktualizácia</translation> <translation id="5715711091495208045">Doplnok Broker: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Predvolené vyhľadávače</translation> <translation id="5719637365829998022">QR kód bol naskenovaný</translation> @@ -5103,7 +5101,6 @@ <translation id="6563469144985748109">Váš správca to zatiaľ neschválil</translation> <translation id="6568283005472142698">Vyhľadávanie kariet</translation> <translation id="6569911211938664415">Heslá sa ukladajú do účtu Google (<ph name="ACCOUNT" />), takže ich môžete používať v ľubovoľnom zariadení</translation> -<translation id="6569934958368283244">Iné osoby</translation> <translation id="6573497332121198392">Odkaz sa nedá odstrániť</translation> <translation id="657402800789773160">&Obnoviť túto stránku</translation> <translation id="6577284282025554716">Sťahovanie bolo zrušené: <ph name="FILE_NAME" /></translation> @@ -6788,7 +6785,6 @@ <translation id="8393700583063109961">Odoslať správu</translation> <translation id="8397825320644530257">Odpojiť pripojený telefón</translation> <translation id="8398877366907290961">Pokračovať!</translation> -<translation id="8400146488506985033">Spravovať ľudí</translation> <translation id="8401432541486058167">Zadajte PIN spojený s vašou inteligentnou kartou.</translation> <translation id="8404893580027489425">Senzor odtlačkov prstov je na pravej strane zariadenia <ph name="DEVICE_TYPE" />. Zľahka sa ho dotknite ľubovoľným prstom.</translation> <translation id="8405046151008197676">Získajte zhrnutie najdôležitejších súčastí poslednej aktualizácie</translation> @@ -6844,7 +6840,6 @@ <translation id="8465444703385715657">Doplnok <ph name="PLUGIN_NAME" /> potrebuje na spustenie vaše povolenie</translation> <translation id="8466417995783206254">Táto karta prehráva video v režime obraz v obraze.</translation> <translation id="8467326454809944210">Vybrať iný jazyk</translation> -<translation id="8470214316007448308">Iné osoby</translation> <translation id="8470513973197838199">Uložené heslá pre <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Weby sa zvyčajne pripájajú k zariadeniam USB, aby mohli poskytovať funkcie, ako tlač dokumentu alebo uloženie do zariadenia</translation> <translation id="8471959340398751476">Zľavy sú vypnuté. Môžete ich zapnúť v ponuke prispôsobenia.</translation> @@ -7031,6 +7026,7 @@ <translation id="8676374126336081632">Vymazať vstup</translation> <translation id="8676770494376880701">Pripojila sa nabíjačka s nízkym výkonom</translation> <translation id="8677212948402625567">Zbaliť všetky...</translation> +<translation id="867767487203716855">Ďalšia aktualizácia</translation> <translation id="8677859815076891398">Žiadne albumy Vytvorte album vo <ph name="LINK_BEGIN" />Fotkách Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Karty sa nezmenšia</translation> <translation id="8678933587484842200">Ako sa má táto aplikácia spúšťať?</translation> @@ -7119,7 +7115,6 @@ <translation id="87646919272181953">Album Fotiek Google</translation> <translation id="8767621466733104912">Automaticky aktualizovať Chrome pre všetkých používateľov</translation> <translation id="8770406935328356739">Koreňový adresár rozšírenia</translation> -<translation id="8770507190024617908">Spravovať ľudí</translation> <translation id="8771300903067484968">Pozadie úvodnej stránky bolo resetované na predvolené.</translation> <translation id="8773302562181397928">Uložiť <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potvrdenie obnovy</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index d2bc986f..b9c14ec 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -2879,7 +2879,6 @@ <translation id="4035758313003622889">&Upravitelj opravil</translation> <translation id="4036778507053569103">Pravilnik, prenesen iz strežnika, ni veljaven.</translation> <translation id="4037084878352560732">Konj</translation> -<translation id="4037889604535939429">Urejanje osebe</translation> <translation id="4040753847560036377">Napačna koda PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Zapri stran}one{Zapri strani}two{Zapri strani}few{Zapri strani}other{Zapri strani}}</translation> <translation id="4044612648082411741">Vnesite geslo za potrdilo</translation> @@ -4350,7 +4349,6 @@ <translation id="5709557627224531708">Nastavite Chrome kot privzeti brskalnik</translation> <translation id="5711983031544731014">Odklepanje ni mogoče. Vnesite geslo.</translation> <translation id="5712153969432126546">Spletna mesta občasno objavijo datoteke PDF, na primer dokumente, pogodbe in obrazce.</translation> -<translation id="5712323955984474772">Naslednja posodobitev</translation> <translation id="5715711091495208045">Posrednik za vtičnik: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Privzeti iskalniki</translation> <translation id="5719637365829998022">Koda QR je optično prebrana.</translation> @@ -5122,7 +5120,6 @@ <translation id="6563469144985748109">Skrbnik še ni odobril</translation> <translation id="6568283005472142698">Iskanje po zavihkih</translation> <translation id="6569911211938664415">Gesla so shranjena v računu Google (<ph name="ACCOUNT" />), da jih lahko uporabite v kateri koli napravi.</translation> -<translation id="6569934958368283244">Drugi</translation> <translation id="6573497332121198392">Bližnjice ni mogoče odstraniti.</translation> <translation id="657402800789773160">Znov&a naloži to stran</translation> <translation id="6577284282025554716">Prenos preklican: <ph name="FILE_NAME" /></translation> @@ -6809,7 +6806,6 @@ <translation id="8393700583063109961">Pošlji sporočilo</translation> <translation id="8397825320644530257">Prekinitev povezave s telefonom</translation> <translation id="8398877366907290961">Vseeno nadaljuj</translation> -<translation id="8400146488506985033">Upravljanje ljudi</translation> <translation id="8401432541486058167">Navedite kodo PIN, povezano s pametno kartico.</translation> <translation id="8404893580027489425">Tipalo prstnih odtisov je na desni strani naprave <ph name="DEVICE_TYPE" />. Rahlo se ga dotaknite s poljubnim prstom.</translation> <translation id="8405046151008197676">Oglejte si najzanimivejše dele najnovejše posodobitve</translation> @@ -6865,7 +6861,6 @@ <translation id="8465444703385715657">Vtičnik <ph name="PLUGIN_NAME" /> potrebuje vaše dovoljenje za izvajanje</translation> <translation id="8466417995783206254">Na tem zavihku se predvaja videoposnetek v načinu slike v sliki.</translation> <translation id="8467326454809944210">Izberi drug jezik</translation> -<translation id="8470214316007448308">Drugi</translation> <translation id="8470513973197838199">Shranjena gesla za <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Spletna mesta običajno vzpostavijo povezavo z napravami USB zaradi funkcij, kot sta tiskanje dokumenta ali shranjevanje podatkov v napravo za shranjevanje.</translation> <translation id="8471959340398751476">Popusti so izklopljeni. Vklopite jih lahko v meniju za prilagajanje.</translation> @@ -7052,6 +7047,7 @@ <translation id="8676374126336081632">Izbriši vnos</translation> <translation id="8676770494376880701">Priključen je nizkoenergijski polnilnik</translation> <translation id="8677212948402625567">Strni vse ...</translation> +<translation id="867767487203716855">Naslednja posodobitev</translation> <translation id="8677859815076891398">Ni albumov. Ustvarite album v <ph name="LINK_BEGIN" />Googlu Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Zavihki se ne skrčijo.</translation> <translation id="8678933587484842200">Kako želite, da se zažene ta aplikacija?</translation> @@ -7140,7 +7136,6 @@ <translation id="87646919272181953">Album v Googlu Foto</translation> <translation id="8767621466733104912">Samodejno posodobi Chrome za vse uporabnike</translation> <translation id="8770406935328356739">Korenski imenik razširitve</translation> -<translation id="8770507190024617908">Upravljanje ljudi</translation> <translation id="8771300903067484968">Ozadje začetne strani je ponastavljeno na privzeto ozadje.</translation> <translation id="8773302562181397928">Shranjevanje tiskalnika <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potrdite obnovitev</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 199ec93..4b6f256 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -2852,7 +2852,6 @@ <translation id="4035758313003622889">&Menaxheri i detyrave</translation> <translation id="4036778507053569103">Politika e shkarkuar nga serveri është e pavlefshme.</translation> <translation id="4037084878352560732">Kalë</translation> -<translation id="4037889604535939429">Redakto personin</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Dil nga faqja}other{Dil nga faqet}}</translation> <translation id="4044612648082411741">Fut fjalëkalimin e certifikatës</translation> <translation id="4044708573046946214">Fjalëkalimi i kyçjes së ekranit</translation> @@ -4317,7 +4316,6 @@ <translation id="5709557627224531708">Caktoje Chrome si shfletuesin tënd të parazgjedhur</translation> <translation id="5711983031544731014">Nuk mund të shkyçet. Fut fjalëkalimin</translation> <translation id="5712153969432126546">Sajtet ndonjëherë publikojnë PDF, si dokumente, kontrata dhe formularë</translation> -<translation id="5712323955984474772">Përditësimi tjetër</translation> <translation id="5715711091495208045">Ndërmjetësi i përbërësit shtesë: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motorët e parazgjedhur të kërkimit</translation> <translation id="5719637365829998022">Kodi QR u skanua.</translation> @@ -5085,7 +5083,6 @@ <translation id="6563469144985748109">Menaxheri yt nuk e ka miratuar ende</translation> <translation id="6568283005472142698">Kërkimi në skeda</translation> <translation id="6569911211938664415">Fjalëkalimet ruhen në "Llogarinë tënde të Google" (<ph name="ACCOUNT" />) që të mund t'i përdorësh në çdo pajisje</translation> -<translation id="6569934958368283244">Njerëz të tjerë</translation> <translation id="6573497332121198392">Shkurtorja nuk mund të hiqet</translation> <translation id="657402800789773160">&Ringarkoje këtë faqe</translation> <translation id="6577284282025554716">Shkarkimi u anulua: <ph name="FILE_NAME" /></translation> @@ -6758,7 +6755,6 @@ <translation id="8393700583063109961">Dërgo mesazh</translation> <translation id="8397825320644530257">Shkëput telefonin e lidhur</translation> <translation id="8398877366907290961">Vazhdo gjithsesi</translation> -<translation id="8400146488506985033">Menaxho kontaktet</translation> <translation id="8401432541486058167">Jep kodin PIN të lidhur me kartën tënde smart.</translation> <translation id="8404893580027489425">Sensori i gjurmës së gishtit është në anën e djathtë të pajisjes sate <ph name="DEVICE_TYPE" />. Preke lehtë me një gisht.</translation> <translation id="8405046151008197676">Merr pikat kryesore nga përditësimi i fundit</translation> @@ -6814,7 +6810,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ka nevojë për leje që të ekzekutohet</translation> <translation id="8466417995783206254">Kjo skedë po luan një video në modalitetin "figurë brenda figurës".</translation> <translation id="8467326454809944210">Zgjidh një gjuhë tjetër</translation> -<translation id="8470214316007448308">Njerëz të tjerë</translation> <translation id="8470513973197838199">Fjalëkalimet e ruajtura për <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Sajtet lidhen zakonisht me pajisjet me USB për veçoritë si printimi i një dokumenti ose ruajtja te një pajisje e hapësirës ruajtëse</translation> <translation id="8471959340398751476">Uljet e çmimeve janë joaktive. Mund t'i aktivizosh te menyja e personalizimit</translation> @@ -7001,6 +6996,7 @@ <translation id="8676374126336081632">Pastro hyrjen</translation> <translation id="8676770494376880701">Është lidhur karikues me fuqi të ulët</translation> <translation id="8677212948402625567">Palosi të gjitha...</translation> +<translation id="867767487203716855">Përditësimi tjetër</translation> <translation id="8677859815076891398">Nuk ka albume. Krijo një album te <ph name="LINK_BEGIN" />Fotografitë e Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Skedat nuk tkurren</translation> <translation id="8678933587484842200">Si dëshiron që të hapet ky aplikacion?</translation> @@ -7089,7 +7085,6 @@ <translation id="87646919272181953">Albumi i "Fotografive të Google"</translation> <translation id="8767621466733104912">Përditësoje automatikisht Chrome për të gjithë përdoruesit</translation> <translation id="8770406935328356739">Direktoria rrënjë e shtesës</translation> -<translation id="8770507190024617908">Menaxho kontaktet</translation> <translation id="8771300903067484968">Sfondi i faqes së nisjes është rivendosur në sfondin e parazgjedhur.</translation> <translation id="8773302562181397928">Ruaje <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Konfirmo restaurimin</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index e2ff517..7a160de 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2860,7 +2860,6 @@ <translation id="4035758313003622889">&Menadžer zadataka</translation> <translation id="4036778507053569103">Smernice preuzete sa servera su nevažeće.</translation> <translation id="4037084878352560732">Konj</translation> -<translation id="4037889604535939429">Izmena osobe</translation> <translation id="4040753847560036377">Netačan PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Zatvori stranicu}one{Zatvori stranice}few{Zatvori stranice}other{Zatvori stranice}}</translation> <translation id="4044612648082411741">Unesite lozinku za sertifikat</translation> @@ -4329,7 +4328,6 @@ <translation id="5709557627224531708">Podesite Chrome kao podrazumevani pregledač</translation> <translation id="5711983031544731014">Otključavanje nije moguće. Unesite lozinku.</translation> <translation id="5712153969432126546">Sajtovi ponekad objavljuju PDF-ove, poput dokumenata, ugovora i obrazaca</translation> -<translation id="5712323955984474772">Sledeće ažuriranje</translation> <translation id="5715711091495208045">Posrednik dodatne komponente: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Podrazumevani pretraživači</translation> <translation id="5719637365829998022">QR kôd je skeniran.</translation> @@ -5098,7 +5096,6 @@ <translation id="6563469144985748109">Menadžer ga još uvek nije odobrio</translation> <translation id="6568283005472142698">Pretraga kartica</translation> <translation id="6569911211938664415">Lozinke se čuvaju na Google nalogu (<ph name="ACCOUNT" />) da biste mogli da ih koristite na bilo kom uređaju</translation> -<translation id="6569934958368283244">Drugi ljudi</translation> <translation id="6573497332121198392">Uklanjanje prečice nije uspelo</translation> <translation id="657402800789773160">&Reload This Page (Ponovo učitaj ovu stranicu)</translation> <translation id="6577284282025554716">Preuzimanje je otkazano: <ph name="FILE_NAME" /></translation> @@ -6784,7 +6781,6 @@ <translation id="8393700583063109961">Pošaljite poruku</translation> <translation id="8397825320644530257">Prekinite vezu sa povezanim telefonom</translation> <translation id="8398877366907290961">Ipak nastavi</translation> -<translation id="8400146488506985033">Upravljaj ljudima</translation> <translation id="8401432541486058167">Navedite PIN koji je povezan sa pametnom karticom.</translation> <translation id="8404893580027489425">Senzor za otisak prsta se nalazi na desnoj strani uređaja <ph name="DEVICE_TYPE" />. Lagano ga dodirnite bilo kojim prstom.</translation> <translation id="8405046151008197676">Pogledajte rezime najnovijeg ažuriranja</translation> @@ -6840,7 +6836,6 @@ <translation id="8465444703385715657">Potrebna je vaša dozvola da bi se dodatna komponenta <ph name="PLUGIN_NAME" /> pokrenula</translation> <translation id="8466417995783206254">Ova kartica reprodukuje video u režimu slike u slici.</translation> <translation id="8467326454809944210">Odaberite drugi jezik</translation> -<translation id="8470214316007448308">Drugi ljudi</translation> <translation id="8470513973197838199">Sačuvane lozinke za <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Sajtovi se obično povezuju sa USB uređajima za potrebe funkcija poput štampanja dokumenata ili čuvanja sadržaja na memorijskim uređajima</translation> <translation id="8471959340398751476">Popusti su isključeni. Možete da ih uključite u meniju za prilagođavanje</translation> @@ -7027,6 +7022,7 @@ <translation id="8676374126336081632">Obriši unos</translation> <translation id="8676770494376880701">Povezan je punjač male snage</translation> <translation id="8677212948402625567">Skupi sve...</translation> +<translation id="867767487203716855">Sledeće ažuriranje</translation> <translation id="8677859815076891398">Nema albuma. Napravite album u <ph name="LINK_BEGIN" />Google slikama<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Kartice se ne skupljaju</translation> <translation id="8678933587484842200">Kako želite da se ova aplikacija pokreće?</translation> @@ -7115,7 +7111,6 @@ <translation id="87646919272181953">Album Google slika</translation> <translation id="8767621466733104912">Automatski ažuriraj Chrome za sve korisnike</translation> <translation id="8770406935328356739">Osnovni direktorijum dodatka</translation> -<translation id="8770507190024617908">Upravljaj ljudima</translation> <translation id="8771300903067484968">Pozadina početne stranice je resetovana na podrazumevanu pozadinu.</translation> <translation id="8773302562181397928">Sačuvajte <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Potvrdite vraćanje</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index a5567a4..e4193ba 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2860,7 +2860,6 @@ <translation id="4035758313003622889">&Менаџер задатака</translation> <translation id="4036778507053569103">Смернице преузете са сервера су неважеће.</translation> <translation id="4037084878352560732">Коњ</translation> -<translation id="4037889604535939429">Измена особе</translation> <translation id="4040753847560036377">Нетачан PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Затвори страницу}one{Затвори странице}few{Затвори странице}other{Затвори странице}}</translation> <translation id="4044612648082411741">Унесите лозинку за сертификат</translation> @@ -4329,7 +4328,6 @@ <translation id="5709557627224531708">Подесите Chrome као подразумевани прегледач</translation> <translation id="5711983031544731014">Откључавање није могуће. Унесите лозинку.</translation> <translation id="5712153969432126546">Сајтови понекад објављују PDF-ове, попут докумената, уговора и образаца</translation> -<translation id="5712323955984474772">Следеће ажурирање</translation> <translation id="5715711091495208045">Посредник додатне компоненте: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Подразумевани претраживачи</translation> <translation id="5719637365829998022">QR кôд је скениран.</translation> @@ -5098,7 +5096,6 @@ <translation id="6563469144985748109">Менаџер га још увек није одобрио</translation> <translation id="6568283005472142698">Претрага картица</translation> <translation id="6569911211938664415">Лозинке се чувају на Google налогу (<ph name="ACCOUNT" />) да бисте могли да их користите на било ком уређају</translation> -<translation id="6569934958368283244">Други људи</translation> <translation id="6573497332121198392">Уклањање пречице није успело</translation> <translation id="657402800789773160">&Reload This Page (Поново учитај ову страницу)</translation> <translation id="6577284282025554716">Преузимање је отказано: <ph name="FILE_NAME" /></translation> @@ -6784,7 +6781,6 @@ <translation id="8393700583063109961">Пошаљите поруку</translation> <translation id="8397825320644530257">Прекините везу са повезаним телефоном</translation> <translation id="8398877366907290961">Ипак настави</translation> -<translation id="8400146488506985033">Управљај људима</translation> <translation id="8401432541486058167">Наведите PIN који је повезан са паметном картицом.</translation> <translation id="8404893580027489425">Сензор за отисак прста се налази на десној страни уређаја <ph name="DEVICE_TYPE" />. Лагано га додирните било којим прстом.</translation> <translation id="8405046151008197676">Погледајте резиме најновијег ажурирања</translation> @@ -6840,7 +6836,6 @@ <translation id="8465444703385715657">Потребна је ваша дозвола да би се додатна компонента <ph name="PLUGIN_NAME" /> покренула</translation> <translation id="8466417995783206254">Ова картица репродукује видео у режиму слике у слици.</translation> <translation id="8467326454809944210">Одаберите други језик</translation> -<translation id="8470214316007448308">Други људи</translation> <translation id="8470513973197838199">Сачуване лозинке за <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Сајтови се обично повезују са USB уређајима за потребе функција попут штампања докумената или чувања садржаја на меморијским уређајима</translation> <translation id="8471959340398751476">Попусти су искључени. Можете да их укључите у менију за прилагођавање</translation> @@ -7027,6 +7022,7 @@ <translation id="8676374126336081632">Обриши унос</translation> <translation id="8676770494376880701">Повезан је пуњач мале снаге</translation> <translation id="8677212948402625567">Скупи све...</translation> +<translation id="867767487203716855">Следеће ажурирање</translation> <translation id="8677859815076891398">Нема албума. Направите албум у <ph name="LINK_BEGIN" />Google сликама<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Картице се не скупљају</translation> <translation id="8678933587484842200">Како желите да се ова апликација покреће?</translation> @@ -7115,7 +7111,6 @@ <translation id="87646919272181953">Албум Google слика</translation> <translation id="8767621466733104912">Аутоматски ажурирај Chrome за све кориснике</translation> <translation id="8770406935328356739">Основни директоријум додатка</translation> -<translation id="8770507190024617908">Управљај људима</translation> <translation id="8771300903067484968">Позадина почетне странице је ресетована на подразумевану позадину.</translation> <translation id="8773302562181397928">Сачувајте <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Потврдите враћање</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 23ee8f39..cb624dbd8 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&Aktivitetshanteraren</translation> <translation id="4036778507053569103">Policyn som laddades ned från servern är ogiltig.</translation> <translation id="4037084878352560732">Häst</translation> -<translation id="4037889604535939429">Redigera person</translation> <translation id="4040753847560036377">Fel PUK-kod</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Lämna sidan}other{Lämna sidorna}}</translation> <translation id="4044612648082411741">Ange certifikatlösenordet</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Ange Chrome som standardwebbläsare</translation> <translation id="5711983031544731014">Det går inte att låsa upp. Ange ditt lösenord.</translation> <translation id="5712153969432126546">Ibland publicerar webbplatser PDF-filer, som dokument, avtal och formulär</translation> -<translation id="5712323955984474772">Nästa uppdatering</translation> <translation id="5715711091495208045">Agent för pluginprogram: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standardsökmotorer</translation> <translation id="5719637365829998022">QR-koden har skannats.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Den ansvarige har inte godkänt den ännu</translation> <translation id="6568283005472142698">Sök bland flikar</translation> <translation id="6569911211938664415">Lösenorden sparas i Google-kontot (<ph name="ACCOUNT" />) så att du kan använda dem på vilken enhet som helst</translation> -<translation id="6569934958368283244">Andra personer</translation> <translation id="6573497332121198392">Det gick inte att ta bort genvägen</translation> <translation id="657402800789773160">&Hämta sidan igen</translation> <translation id="6577284282025554716">Nedladdningen avbröts: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Skicka meddelande</translation> <translation id="8397825320644530257">Koppla från ansluten telefon</translation> <translation id="8398877366907290961">Fortsätt ändå</translation> -<translation id="8400146488506985033">Hantera personer</translation> <translation id="8401432541486058167">Ange den pinkod som är kopplad till ditt smartkort.</translation> <translation id="8404893580027489425">Fingeravtryckssensorn sitter på den högra sidan av <ph name="DEVICE_TYPE" />. Tryck lätt på den med valfritt finger.</translation> <translation id="8405046151008197676">Läs det viktigaste om den senaste uppdateringen</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657">Du måste godkänna att <ph name="PLUGIN_NAME" /> körs</translation> <translation id="8466417995783206254">På den här fliken spelas en video upp i bild-i-bild-läge.</translation> <translation id="8467326454809944210">Välj ett annat språk</translation> -<translation id="8470214316007448308">Andra personer</translation> <translation id="8470513973197838199">Sparade lösenord för <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Åtkomst till USB-enheter brukar kunna behövas för funktioner som att skriva ut dokument eller spara filer på en lagringsenhet</translation> <translation id="8471959340398751476">Rabatter har inaktiverats. Du kan inaktivera dem i menyn Anpassa</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Radera inmatning</translation> <translation id="8676770494376880701">Laddare med låg effekt ansluten</translation> <translation id="8677212948402625567">Dölj alla...</translation> +<translation id="867767487203716855">Nästa uppdatering</translation> <translation id="8677859815076891398">Du har inga album. Skapa ett album i <ph name="LINK_BEGIN" />Google Foto<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Flikar förminskas inte</translation> <translation id="8678933587484842200">Hur vill du att det här programmet ska startas?</translation> @@ -7135,7 +7131,6 @@ <translation id="87646919272181953">Album i Google Foto</translation> <translation id="8767621466733104912">Uppdatera Chrome automatiskt för alla användare</translation> <translation id="8770406935328356739">Tilläggets rotkatalog</translation> -<translation id="8770507190024617908">Hantera personer</translation> <translation id="8771300903067484968">Startsidans bakgrund har återställts till standardbakgrunden.</translation> <translation id="8773302562181397928">Spara <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Bekräfta återställning</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 117bf65..52ae82b 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -2872,7 +2872,6 @@ <translation id="4035758313003622889">&Kidhibiti cha shughuli</translation> <translation id="4036778507053569103">Sera iliyopakuliwa kutoka kwenye seva ni batili.</translation> <translation id="4037084878352560732">Farasi</translation> -<translation id="4037889604535939429">Badilisha wasifu wa mtumiaji</translation> <translation id="4040753847560036377">PUK si sahihi</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Funga Ukurasa}other{Funga Kurasa}}</translation> <translation id="4044612648082411741">Weka nenosiri la cheti chako</translation> @@ -4339,7 +4338,6 @@ <translation id="5709557627224531708">Weka Chrome iwe kivinjari chako chaguomsingi</translation> <translation id="5711983031544731014">Haiwezi kufungua. Weka nenosiri lako.</translation> <translation id="5712153969432126546">Wakati mwingine, tovuti huchapisha faili za PDF, kama vile hati, mikataba na fomu</translation> -<translation id="5712323955984474772">Sasisho Lijalo</translation> <translation id="5715711091495208045">Dalali wa Programu jalizi: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Mitambo chaguomsingi ya kutafuta</translation> <translation id="5719637365829998022">Msimbo wa QR umechanganuliwa.</translation> @@ -5111,7 +5109,6 @@ <translation id="6563469144985748109">Msimamizi wako bado hajaiidhinisha</translation> <translation id="6568283005472142698">Utafutaji kwenye Vichupo</translation> <translation id="6569911211938664415">Manenosiri huhifadhiwa kwenye Akaunti yako ya Google (<ph name="ACCOUNT" />) ili uweze kuyatumia kwenye kifaa chochote</translation> -<translation id="6569934958368283244">Watu wengine</translation> <translation id="6573497332121198392">Imeshindwa kuondoa njia ya mkato</translation> <translation id="657402800789773160">&Pakia Ukurasa Huu Upya</translation> <translation id="6577284282025554716">Imeghairi kupakua: <ph name="FILE_NAME" /></translation> @@ -6800,7 +6797,6 @@ <translation id="8393700583063109961">Tuma ujumbe</translation> <translation id="8397825320644530257">Tenganisha simu iliyounganishwa</translation> <translation id="8398877366907290961">Endelea licha ya hayo</translation> -<translation id="8400146488506985033">Simamia watu</translation> <translation id="8401432541486058167">Weka PIN inayohusiana na kadi yako mahiri.</translation> <translation id="8404893580027489425">Kitambua alama ya kidole kiko kwenye upande wa kulia wa <ph name="DEVICE_TYPE" /> yako. Kiguse taratibu ukitumia kidole chochote.</translation> <translation id="8405046151008197676">Pata muhtasari kutoka kwenye sasisho la hivi punde</translation> @@ -6856,7 +6852,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> inahitaji ruhusa yako ili kutumia</translation> <translation id="8466417995783206254">Kichupo hiki kinacheza video katika hali ya picha ndani ya picha.</translation> <translation id="8467326454809944210">Chagua lugha nyingine</translation> -<translation id="8470214316007448308">Watu Wengine</translation> <translation id="8470513973197838199">Manenosiri yaliyohifadhiwa ya <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Tovuti huunganisha kwenye vifaa vya USB kwa ajili ya vipengele kama vile kuchapisha hati au kuweka faili kwenye kifaa cha kuhifadhi</translation> <translation id="8471959340398751476">Kipengele cha punguzo kimezimwa. Unaweza kukiwasha kwenye menyu ya kuweka mapendeleo</translation> @@ -7043,6 +7038,7 @@ <translation id="8676374126336081632">Futa uingizaji wa maandishi</translation> <translation id="8676770494376880701">Chaja ya nguvu ya chini imeunganishwa</translation> <translation id="8677212948402625567">Kunja zote...</translation> +<translation id="867767487203716855">Sasisho lijalo</translation> <translation id="8677859815076891398">Hakuna albamu. Anzisha albamu mpya katika <ph name="LINK_BEGIN" />Picha kwenye Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Ukubwa wa vichupo haupunguzwi</translation> <translation id="8678933587484842200">Je, ungependa kuanzisha programu hii kwa njia gani?</translation> @@ -7131,7 +7127,6 @@ <translation id="87646919272181953">Albamu ya Picha kwenye Google</translation> <translation id="8767621466733104912">Sasisha Chrome kwa watumiaji wote kiotomatiki</translation> <translation id="8770406935328356739">Saraka msingi ya kiendelezi</translation> -<translation id="8770507190024617908">Simamia Watu</translation> <translation id="8771300903067484968">Mandhari ya ukurasa wa mwanzo yamewekwa upya kuwa mandhari chaguomsingi.</translation> <translation id="8773302562181397928">Hifadhi <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Thibitisha Hatua ya Kurejesha</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 6752b5bc..4f1dbcc0 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -710,6 +710,7 @@ <translation id="173628468822554835">புரிந்தது. இயல்பாக, நீங்கள் பார்க்கும் புதிய தளங்கள் அறிவிப்புகளை உங்களுக்கு அனுப்பாது.</translation> <translation id="1736419249208073774">அறிக</translation> <translation id="1737968601308870607">பிழையைப் பதிவுசெய்</translation> +<translation id="1739684185846730053">தனியுரிமை சாண்ட்பாக்ஸ் சோதனைகள் இன்னும் உருவாக்கத்தில் இருப்பதுடன் குறிப்பிட்ட பிராந்தியங்களில் மட்டுமே கிடைக்கின்றன. மூன்றாம் தரப்புக் குக்கீகள் போன்ற தற்போதைய இணையத் தொழில்நுட்பங்களைத் தொடர்ந்து பயன்படுத்தினாலும் தளங்கள் இப்போது தனியுரிமை சாண்ட்பாக்ஸைப் பயன்படுத்தக்கூடும்.</translation> <translation id="174123615272205933">பிரத்தியேக மார்ஜின்கள்</translation> <translation id="1741314857973421784">தொடர்க</translation> <translation id="1743570585616704562">அடையாளங்காண முடியவில்லை</translation> @@ -1133,8 +1134,10 @@ <translation id="217576141146192373">பிரிண்ட்டரைச் சேர்க்க முடியவில்லை. உங்கள் பிரிண்ட்டரின் உள்ளமைவைச் சரிபார்த்த பிறகு மீண்டும் முயலவும்.</translation> <translation id="2177950615300672361">மறைநிலைத் தாவல்: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA இணக்கம்</translation> +<translation id="2179416702468739594">சுயவிவரங்கள் உள்ளனவா எனப் பார்க்கிறது. இதனால் உங்கள் மொபைல் நெட்வொர்க் சில நிமிடங்களுக்குத் துண்டிக்கப்படலாம்.</translation> <translation id="2182058453334755893">உங்கள் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது</translation> <translation id="2184515124301515068">தளங்கள் எப்போது ஒலியை இயக்கலாம் என்பதை Chrome தேர்வு செய்ய அனுமதிக்கவும் (பரிந்துரைக்கப்படுவது)</translation> +<translation id="2186711480981247270">மற்றொரு சாதனத்தில் இருந்து பகிரப்பட்ட பக்கம்</translation> <translation id="2187675480456493911">உங்கள் கணக்கில் உள்ள பிற சாதனங்களுடன் ஒத்திசைக்கப்பட்டது. பிற பயனர்கள் மாற்றியமைக்கும் அமைப்புகள் ஒத்திசைக்கப்படாது. <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation> <translation id="2187895286714876935">சேவையக சான்றிதழ் இறக்குமதி பிழை</translation> <translation id="2187906491731510095">நீட்டிப்புகள் புதுப்பிக்கப்பட்டன</translation> @@ -1399,6 +1402,7 @@ <translation id="2469375675106140201">எழுத்துப்பிழைச் சரிபார்ப்பைப் பிரத்தியேகமாக்கு</translation> <translation id="247051149076336810">கோப்புப் பகிர்வு URL</translation> <translation id="2470702053775288986">ஆதரிக்கப்படாத நீட்டிப்புகள் முடக்கப்பட்டன</translation> +<translation id="2470939964922472929">தவறான பின் (PIN) பலமுறை உள்ளிடப்பட்டுள்ளது. புதிய பின்னை (PIN) அமைக்க, உங்கள் மொபைல் நெட்வொர்க் நிறுவனம் வழங்கிய தடுப்பை நீக்குவதற்கான 8 இலக்கத் தனிப்பட்ட குறியீட்டை (Personal Unblocking Key - PUK) உள்ளிடவும்.</translation> <translation id="2471469610750100598">கருப்பு (இயல்பு)</translation> <translation id="2471506181342525583">இருப்பிட அணுகல் அனுமதிக்கப்பட்டது</translation> <translation id="2473195200299095979">இந்தப் பக்கத்தை மொழிபெயர்</translation> @@ -1695,6 +1699,7 @@ <translation id="2785873697295365461">கோப்பு விளக்கிகள்</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">குழு எண்</translation> <translation id="2789486458103222910">சரி</translation> <translation id="2791529110887957050">Linuxஸை அகற்று</translation> <translation id="2791952154587244007">பிழை ஏற்பட்டது. இந்தச் சாதனத்தில் கியோஸ்க் ஆப்ஸால் தானாகத் துவங்க முடியாது.</translation> @@ -1995,6 +2000,7 @@ <translation id="310671807099593501">தளமானது புளூடூத்தைப் பயன்படுத்துகிறது</translation> <translation id="3108931485517391283">பெற முடியவில்லை</translation> <translation id="3109724472072898302">சுருக்கப்பட்டது</translation> +<translation id="3113592018909187986">ஒரு முயற்சி மீதமுள்ளது. புதிய பின்னை (PIN) அமைக்காத வரை இந்த நெட்வொர்க்கைப் பயன்படுத்த முடியாது.</translation> <translation id="311394601889664316">எனது சாதனத்தில் உள்ள கோப்புகளிலோ கோப்புறைகளிலோ மாற்றம் செய்ய தளங்களை அனுமதிக்காதே</translation> <translation id="3115147772012638511">தேக்ககத்திற்காக காத்திருக்கிறது...</translation> <translation id="3115580024857770654">அனைத்தையும் சுருக்கு</translation> @@ -2281,6 +2287,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" />க்கான மேலும் செயல்கள்</translation> <translation id="3441653493275994384">பார்</translation> <translation id="3441663102605358937">இந்தக் கணக்கைச் சரிபார்க்க, <ph name="ACCOUNT" /> என்ற கணக்கில் மீண்டும் உள்நுழையவும்</translation> +<translation id="3444641828375597683">இந்தப் பக்கத்தில் விவரித்துள்ளபடி விளம்பரதாரர்களும் வெளியீட்டாளர்களும் FLoC (Federated Learning of Cohorts) தொழில்நுட்பத்தைப் பயன்படுத்தலாம்.</translation> <translation id="3445047461171030979">Google Assistant விரைவான பதில்கள்</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> நி.</translation> <translation id="3445925074670675829">USB-C சாதனம்</translation> @@ -2863,7 +2870,7 @@ <translation id="4035758313003622889">&பணி நிர்வாகி</translation> <translation id="4036778507053569103">சேவையகத்திலிருந்து பதிவிறக்கிய கொள்கை தவறானது.</translation> <translation id="4037084878352560732">குதிரை</translation> -<translation id="4037889604535939429">பயனரை மாற்று</translation> +<translation id="4040753847560036377">தவறான PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{பக்கத்திலிருந்து வெளியேறு}other{பக்கங்களிலிருந்து வெளியேறு}}</translation> <translation id="4044612648082411741">சான்றிதழ் கடவுச்சொல்லை உள்ளிடவும்</translation> <translation id="4044708573046946214">திரைப் பூட்டின் கடவுச்சொல்</translation> @@ -3071,6 +3078,7 @@ <translation id="4297813521149011456">காட்சி சுழற்சி</translation> <translation id="4299022904780065004">புதிய &மறைநிலைச் சாளரம்</translation> <translation id="4301671483919369635">கோப்புகளைத் திருத்த இந்தப் பக்கத்திற்கு அனுமதி உள்ளது</translation> +<translation id="4302605047395093221">இந்த மொபைல் நெட்வொர்க்குடன் இணைக்க இந்தச் சாதனத்தைப் பயன்படுத்தும் எவரும் பின்னை (PIN) உள்ளிட வேண்டும்</translation> <translation id="4303079906735388947">உங்கள் பாதுகாப்பு விசைக்கு புதிய பின்னை அமைக்கவும்</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" />க்கு நகலெடு</translation> <translation id="4305817255990598646">மாறு</translation> @@ -3256,6 +3264,7 @@ <translation id="4510479820467554003">பெற்றோர் கணக்குகளின் பட்டியல்</translation> <translation id="4510614391273086606">Linux கோப்புகளும் ஆப்ஸும் அவற்றின் காப்புப் பிரதி நிலைக்கே மீட்டெடுக்கப்படுகின்றன.</translation> <translation id="451102079304155829">கார்ட்டுகள்</translation> +<translation id="4513275008300099962">சாளரக் கட்டுப்பாடுகளின் மேல் அடுக்கை முடக்கும்</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> வழங்குவது</translation> <translation id="4514610446763173167">இயக்க அல்லது இடைநிறுத்த, வீடியோவை நிலைமாற்றவும்</translation> @@ -4596,10 +4605,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB சாதனம் இணைக்கப்பட்டது</translation> <translation id="6028117231645531007">கைரேகையைச் சேர்</translation> <translation id="6031600495088157824">கருவிப்பட்டியில் உள்ள உள்ளீட்டு விருப்பங்கள்</translation> +<translation id="6032091552407840792">இந்தச் சோதனை <ph name="BEGIN_LINK" />சில பிராந்தியங்களில்<ph name="END_LINK" /> மட்டுமே செயலில் இருக்கும்.</translation> <translation id="6032715498678347852">இந்தத் தளத்திற்கான அணுகலை நீட்டிப்பிற்கு வழங்க அதைக் கிளிக் செய்யவும்.</translation> <translation id="6032912588568283682">கோப்பு முறைமை</translation> <translation id="603539183851330738">தானாகத் திருத்தியதைச் செயல்தவிர்க்கும் பட்டன். <ph name="TYPED_WORD" /> என மாற்றியமைக்கும். இயக்க Enter விசையையும் நிராகரிக்க Escape விசையையும் அழுத்துங்கள்.</translation> <translation id="6038929619733116134">குறுக்கிடும் அல்லது தவறாக வழிநடத்தும் விளம்பரங்களை தளம் காட்டினால், அவற்றைத் தடுக்கும்</translation> +<translation id="603895874132768835">புதிய பின்னை (PIN) அமைக்காத வரை இந்த நெட்வொர்க்கைப் பயன்படுத்த முடியாது</translation> <translation id="6039651071822577588">நெட்வொர்க் பண்பு அகராதி தவறான வடிவமைப்பில் உள்ளது</translation> <translation id="6040143037577758943">மூடு</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />உங்கள் சாதனத்தின் இருப்பிடத்தைக் கணிப்பதற்காக வைஃபை, மொபைல் நெட்வொர்க்குகள், சென்சார்கள் போன்றவற்றை Googleளின் இருப்பிடச் சேவை பயன்படுத்துகிறது.<ph name="END_PARAGRAPH1" /> @@ -4845,6 +4856,7 @@ <translation id="6292699686837272722">நடுத்தர அகலத்திற்குத் தாவல்களைச் சுருக்கும்</translation> <translation id="6295158916970320988">எல்லா தளங்களும்</translation> <translation id="6295855836753816081">சேமிக்கிறது...</translation> +<translation id="6296410173147755564">தவறான PUK</translation> <translation id="6298962879096096191">Android ஆப்ஸை நிறுவ, Google Playவைப் பயன்படுத்தவும்</translation> <translation id="6300177430812514606">தரவை அனுப்புவது/பெறுவதை நிறைவுசெய்ய அனுமதி இல்லாத தளங்கள்</translation> <translation id="630065524203833229">வெளி&யேறு</translation> @@ -4891,6 +4903,7 @@ <translation id="6340526405444716530">பிரத்தியேகமாக்குதல்</translation> <translation id="6341850831632289108">உங்கள் நிஜ இருப்பிடத்தைக் கண்டறியலாம்</translation> <translation id="6342069812937806050">இப்போது</translation> +<translation id="6343003829431264373">இரட்டை எண் பக்கங்கள் மட்டும்</translation> <translation id="6344170822609224263">நெட்வொர்க் இணைப்புகளின் பட்டியலை அணுகு</translation> <translation id="6344576354370880196">சேமித்த பிரிண்டர்கள்</translation> <translation id="6345418402353744910">உங்கள் நெட்வொர்க்கை நிர்வாகி உள்ளமைப்பதற்கு <ph name="PROXY" /> ப்ராக்ஸிக்கான பயனர்பெயரையும் கடவுச்சொல்லையும் நீங்கள் வழங்க வேண்டும்</translation> @@ -5089,7 +5102,6 @@ <translation id="6563469144985748109">இன்னும் உங்கள் நிர்வாகி அனுமதிக்கவில்லை</translation> <translation id="6568283005472142698">தாவல் தேடல்</translation> <translation id="6569911211938664415">எந்தச் சாதனத்திலும் பயன்படுத்தும் வகையில் கடவுச்சொற்கள் உங்கள் Google கணக்கில் (<ph name="ACCOUNT" />) சேமிக்கப்படும்</translation> -<translation id="6569934958368283244">பிறர்</translation> <translation id="6573497332121198392">ஷார்ட்கட்டை அகற்ற முடியவில்லை</translation> <translation id="657402800789773160">&இந்த பக்கத்தை மீண்டும் ஏற்றுக</translation> <translation id="6577284282025554716">பதிவிறக்கம் ரத்துசெய்யப்பட்டது: <ph name="FILE_NAME" /></translation> @@ -5138,6 +5150,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> பாதுகாக்கவேண்டிய/ஆபத்தான உள்ளடக்கத்தைக் கொண்டுள்ளது. சரிசெய்யுமாறு அதன் உரிமையாளரிடம் கேட்கவும்.</translation> <translation id="6624687053722465643">ஸ்வீட்னஸ்</translation> <translation id="6628328486509726751">பதிவேற்றப்பட்ட நேரம் <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">குறைந்தது 4 எண்களை உள்ளிடவும்</translation> <translation id="6630752851777525409">உங்கள் சார்பாகத் தன்னை அங்கீகரித்துக் கொள்ள ஒரு சான்றிதழுக்கான நிரந்தர அணுகலை <ph name="EXTENSION_NAME" /> கோருகிறது.</translation> <translation id="6635362468090274700">மற்றவர்கள் உங்களுடன் பகிர உங்கள் சாதனம் அவர்களுக்குத் தெரியும் வகையில் அமைக்க வேண்டும்.<ph name="BR" /><ph name="BR" />தற்காலிகமாகக் காட்டப்படுவதற்கு நிலைப் பகுதியைத் திறந்து ‘அருகில் பகிர்தல்’ அம்சத்தை ஆன் செய்யவும்.</translation> <translation id="6635944431854494329">"அமைப்புகள் > மேம்பட்டவை > கண்டறிதல் தரவையும் உபயோகத் தரவையும் தானாக Googleளுக்கு அனுப்பு" என்பதற்குச் சென்று இந்த அம்சத்தை உரிமையாளர் கட்டுப்படுத்தலாம்.</translation> @@ -5176,6 +5189,7 @@ <translation id="6664774537677393800">சுயவிவரத்தைத் திறக்கும் போது, ஏதோ தவறாகிவிட்டது. வெளியேறி, மீண்டும் உள்நுழையவும்.</translation> <translation id="6670142487971298264">இப்போது <ph name="APP_NAME" /> ஆப்ஸைப் பயன்படுத்தலாம்</translation> <translation id="6671320560732140690">{COUNT,plural, =1{ஒரு முகவரியை}other{# முகவரிகளை}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> மூலம் நிர்வாகம் அமைக்கப்படுகிறது</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">ஒத்திசைவைத் தொடங்க, கடவுச்சொற்றொடரை உள்ளிடவும்</translation> <translation id="6675665718701918026">சுட்டும் சாதனம் இணைக்கப்பட்டது</translation> @@ -5184,6 +5198,7 @@ <translation id="6680442031740878064">இருக்கும் இடம்: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">மதிப்பிடு</translation> <translation id="6681668084120808868">புகைப்படம் எடு</translation> +<translation id="6683087162435654533">தாவல்கள் அனைத்தையும் மீட்டெடு</translation> <translation id="6683948477137300040">சாதனத்தின் EIDயும் QR குறியீடும் உள்ள பாப்-அப்பைக் காட்டும்</translation> <translation id="6684827949542560880">சமீபத்திய புதுப்பிப்பு பதிவிறக்கப்படுகிறது</translation> <translation id="668599234725812620">Google Playஐத் திற</translation> @@ -5753,6 +5768,7 @@ <translation id="7308643132139167865">இணையதள மொழிகள்</translation> <translation id="7309257895202129721">&கட்டுப்பாடுகளைக் காண்பி</translation> <translation id="7310598146671372464">உள்நுழைய முடியவில்லை. குறிப்பிடப்பட்டுள்ள Kerberos என்க்ரிப்ஷன் வகைகளைச் சேவையகம் ஆதரிக்கவில்லை. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation> +<translation id="7315168816273861089">சாளரக் கட்டுப்பாடுகளின் மேல் அடுக்கை இயக்கும்</translation> <translation id="7320213904474460808">இயல்புநிலை நெட்வொர்க்காக அமை</translation> <translation id="7321545336522791733">சேவையகத்தைத் தொடர்புகொள்ள முடியவில்லை</translation> <translation id="7324297612904500502">பீட்டா மன்றம்</translation> @@ -5929,7 +5945,9 @@ <translation id="7506541170099744506">உங்கள் <ph name="DEVICE_TYPE" /> சாதனம், நிறுவன மேலாண்மைக்குப் பதிவுசெய்யப்பட்டது.</translation> <translation id="7507207699631365376">இந்த வழங்குநரின் <ph name="BEGIN_LINK" />தனியுரிமைக் கொள்கையைக்<ph name="END_LINK" /> காட்டு</translation> <translation id="7507930499305566459">நிலை பதிலளிப்பாளர் சான்றிதழ்</translation> +<translation id="7509097596023256288">நிர்வாகத்தை அமைக்கிறது</translation> <translation id="7509246181739783082">உங்கள் அடையாளத்தைச் சரிபார்த்தல்</translation> +<translation id="7511415964832680006">இதை இயக்கினால் தளங்கள் அவற்றின் உள்ளடக்கத்தையும் சேவைகளையும் வழங்குவதற்காக இங்கே காட்டப்பட்டுள்ள தனியுரிமைப் பாதுகாப்புத் தொழில்நுட்பங்களைப் பயன்படுத்தக்கூடும். தளங்களுக்கிடையே மாறும்போது கண்காணிப்பதற்கான மாற்று முறைகளும் இவற்றில் அடங்கும். கூடுதல் செயல்பாடுகள் காலப்போக்கில் சேர்க்கப்படக்கூடும்.</translation> <translation id="7513029293694390567">சேமித்த அனுமதிச் சான்றுகளைப் பயன்படுத்தி இணையதளங்களில் தானாகவே உள்நுழையும். இதை முடக்கினால், இணையதளத்தில் உள்நுழையும் ஒவ்வொரு முறையும் உறுதிப்படுத்த வேண்டும்.</translation> <translation id="7514239104543605883">உங்கள் சாதனத்திற்கு நகலெடுங்கள்</translation> <translation id="7514365320538308">பதிவிறக்கு</translation> @@ -6290,6 +6308,8 @@ <translation id="7876027585589532670">ஷார்ட்கட்டைத் திருத்த முடியவில்லை</translation> <translation id="7877451762676714207">அறியாத சேவையகப் பிழை. மீண்டும் முயலவும் அல்லது சேவையக நிர்வாகியை தொடர்பு கொள்ளவும்.</translation> <translation id="7879631849810108578">ஷார்ட்கட் அமைக்கப்பட்டது: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் நீங்கள் இருக்கும் குழு அல்லது “குழுவினரை” அறிந்துகொள்ள 7 நாட்களுக்கு மேற்பட்ட உங்கள் முந்தைய உலாவல் விவரங்களை Chrome பயன்படுத்தும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். முந்தைய உலாவல் விவரங்கள் உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். இந்தச் சோதனை + <ph name="BEGIN_LINK" />சில பிராந்தியங்களில்<ph name="END_LINK" /> மட்டுமே செயலில் இருக்கும்.</translation> <translation id="7880823633812189969">ரீஸ்டார்ட் செய்யும்போது அகத் தரவு நீக்கப்படும்</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">கணக்கைப் பார்</translation> @@ -6449,6 +6469,7 @@ <translation id="804786196054284061">இறுதிப் பயனர் உரிம ஒப்பந்தம்</translation> <translation id="8048977114738515028">இந்தச் சுயவிவரத்தை நேரடியாக அணுக உங்கள் சாதனத்தில் டெஸ்க்டாப் ஷார்ட்கட் ஒன்றை உருவாக்கவும்</translation> <translation id="8049029041626250638">கீபோர்டு அல்லது மவுஸை இணைக்கவும். புளூடூத் சாதனங்களைப் பயன்படுத்தினால் அவை இணைப்பதற்குத் தயாராக இருப்பதை உறுதிசெய்துகொள்ளவும்.</translation> +<translation id="8049184478152619004">தடுப்பை நீக்குவதற்கான தனிப்பட்ட குறியீட்டை (Personal Unblocking Key - PUK) உள்ளிடவும்</translation> <translation id="8049705080247101012">"<ph name="EXTENSION_NAME" />"ஐத் தீங்கானது என Google கொடியிட்டுள்ளது, மேலும் நிறுவல் தடுக்கப்பட்டுள்ளது</translation> <translation id="8049948037269924837">டச்பேட் பின்னோக்கிய ஸ்க்ரோலிங்</translation> <translation id="8050038245906040378">Microsoft Commercial Code Signing</translation> @@ -6485,6 +6506,7 @@ <translation id="8082106343289440791">"<ph name="DEVICE_NAME" />" உடன் இணைக்கவா?</translation> <translation id="8082390128630131497">ADB பிழைதிருத்தத்தை முடக்குவது இந்த <ph name="DEVICE_TYPE" /> ஐ ஆரம்பநிலை அமைப்புகளுக்கு மீட்டமைக்கும். அனைத்து பயனர் கணக்குகளும் அகத் தரவும் அழிக்கப்படும்.</translation> <translation id="8084114998886531721">சேமித்த கடவுச்சொல்</translation> +<translation id="8084510406207562688">தாவல்கள் அனைத்தையும் மீட்டெடு</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" />ஐ உள்ளமைக்கிறது ...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> ஐ அமை</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{இந்தக் கோப்பு என்க்ரிப்ஷன் செய்யப்பட்டுள்ளது. டீக்ரிப்ட் செய்யுமாறு அதன் உரிமையாளரிடம் கேட்கவும்.}other{இந்தக் கோப்புகளில் சில என்க்ரிப்ஷன் செய்யப்பட்டுள்ளன. டீக்ரிப்ட் செய்யுமாறு அவற்றின் உரிமையாளரிடம் கேட்கவும்.}}</translation> @@ -6526,6 +6548,7 @@ <translation id="8119438628456698432">லாக் ஃபைல்களை உருவாக்குகிறது...</translation> <translation id="811994229154425014">ஸ்பேஸை இருமுறை தட்டினால் முற்றுப்புள்ளியை உள்ளிடு</translation> <translation id="8120505434908124087">eSIM சுயவிவரத்தை நிறுவுதல்</translation> +<translation id="812260729110117038">தளங்களில் உலாவும்போது உங்களைக் கண்காணிக்காத வகையில் விளம்பரங்களின் செயல்திறனை விளம்பரதாரர்களும் வெளியீட்டாளர்களும் அறிந்துகொள்ளலாம்.</translation> <translation id="8123590694679414600"><ph name="TIME" /> அன்று உங்கள் ஒத்திசைவுக் கடவுச்சொற்றொடர் மூலம் தரவு என்க்ரிப்ட் செய்யப்பட்டது. இதில் Google Payயிலுள்ள கட்டண முறைகளும் முகவரிகளும் சேர்க்கப்படவில்லை.</translation> <translation id="81238879832906896">மஞ்சள் வெள்ளை மலர்</translation> @@ -6563,6 +6586,7 @@ <translation id="816055135686411707">சான்றிதழ் நம்பிக்கையை அமைப்பதில் பிழை</translation> <translation id="8160775796528709999">அமைப்புகளில் ’உடனடி வசனம்’ அம்சத்தை இயக்குவதன் மூலம் உங்கள் ஆடியோவிற்கும் வீடியோவிற்கும் வசனங்களைப் பெறலாம்</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">பொது இணையத்தைப் பாதுகாக்கும் அதே வேளையில் தளங்களுக்கு இடையே மாறும்போது கண்காணிக்கப்படுவதில் இருந்து உங்களைப் பாதுகாக்க, <ph name="BEGIN_LINK" />தனியுரிமை சாண்ட்பாக்ஸ்<ph name="END_LINK" /> மூலம் புதிய தொழில்நுட்பங்களை Chrome உருவாக்குகிறது.</translation> <translation id="8161293209665121583">இணையப் பக்கங்களுக்கான படித்தல் பயன்முறை</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{தாவலைப் புதிய சாளரத்திற்கு நகர்த்து}other{தாவல்களைப் புதிய சாளரத்திற்கு நகர்த்து}}</translation> <translation id="8165997195302308593">Crostini போர்ட் அனுப்புதல்</translation> @@ -6764,7 +6788,6 @@ <translation id="8393700583063109961">செய்தி அனுப்பு</translation> <translation id="8397825320644530257">இணைக்கப்பட்டுள்ள மொபைலின் இணைப்பைத் துண்டி</translation> <translation id="8398877366907290961">இருப்பினும் தொடர்க</translation> -<translation id="8400146488506985033">நபர்களை நிர்வகி</translation> <translation id="8401432541486058167">உங்கள் ஸ்மார்ட் கார்டுடன் தொடர்புடைய பின்னை இங்கே உள்ளிடவும்.</translation> <translation id="8404893580027489425"><ph name="DEVICE_TYPE" /> இன் வலதுபக்கத்தில் கைரேகை சென்சார் உள்ளது. ஏதேனும் ஒரு விரலால் அதை மெதுவாகத் தொடவும்.</translation> <translation id="8405046151008197676">சமீபத்திய புதுப்பிப்பில் இருந்து முக்கியத் தகவல்களைப் பெறுங்கள்</translation> @@ -6820,7 +6843,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> இயங்க, உங்கள் அனுமதி தேவை</translation> <translation id="8466417995783206254">இந்தத் தாவல், பிக்ச்சர்-இன்-பிக்ச்சர் பயன்முறையில் வீடியோவை இயக்குகிறது.</translation> <translation id="8467326454809944210">மற்றொரு மொழியைத் தேர்வுசெய்க</translation> -<translation id="8470214316007448308">பிறர்</translation> <translation id="8470513973197838199"><ph name="ORIGIN" />க்கான சேமித்த கடவுச்சொற்கள்</translation> <translation id="8471525937465764768">வழக்கமாக ஆவணத்தைப் பிரிண்ட் செய்தல், அதைச் சேமிப்பகச் சாதனத்தில் சேமித்தல் போன்ற அம்சங்களுக்காக USB சாதனங்களுடன் தளங்கள் இணையும்</translation> <translation id="8471959340398751476">தள்ளுபடிகளைக் காட்டுவதற்கான அனுமதி முடக்கப்பட்டுள்ளது. ’பிரத்தியேகமாக்கு’ மெனுவில் அதை இயக்கலாம்</translation> @@ -7094,7 +7116,6 @@ <translation id="87646919272181953">Google Photos ஆல்பம்</translation> <translation id="8767621466733104912">எல்லாப் பயனர்களுக்கும் தானாகவே Chromeஐப் புதுப்பி</translation> <translation id="8770406935328356739">நீட்டிப்பு மூலக் கோப்பகம்</translation> -<translation id="8770507190024617908">நபர்களை நிர்வகி</translation> <translation id="8771300903067484968">தொடக்கப் பக்கத்தின் பின்னணித் தோற்றம் இயல்புநிலைக்கு மீட்டமைக்கப்பட்டது.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> ஐச் சேமி</translation> <translation id="8774379074441005279">மீட்டமைப்பை உறுதிப்படுத்துதல்</translation> @@ -7355,6 +7376,7 @@ <translation id="9031549947500880805">Google Driveவிற்குக் காப்புப் பிரதி எடுக்கவும். எப்போது வேண்டுமானாலும் உங்கள் தரவை எளிதாக மீட்டெடுக்கலாம் அல்லது சாதனத்தை மாற்றலாம். ஆப்ஸ் தரவும் உங்கள் காப்புப் பிரதியில் அடங்கும்.</translation> <translation id="9033765790910064284">பரவாயில்லை, தொடரவும்</translation> <translation id="9033857511263905942">&ஒட்டு</translation> +<translation id="9035689366572880647">தற்போதைய பின்னை (PIN) உள்ளிடவும்</translation> <translation id="9037640663275993951">சாதனம் அனுமதிக்கப்படவில்லை</translation> <translation id="9037818663270399707">சில நெட்வொர்க் டிராஃபிக்கிற்கு மட்டுமே உங்கள் இணைப்பு தனிப்பட்டது</translation> <translation id="9037965129289936994">அசல் மொழியில் காட்டு</translation> @@ -7430,6 +7452,7 @@ <translation id="9112748030372401671">உங்கள் வால்பேப்பரை மாற்றலாம்</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> ஆபத்தானதாக இருக்கக்கூடும். ஸ்கேன் செய்ய இதை Googleளுக்கு அனுப்பவா?</translation> <translation id="9112987648460918699">கண்டுபிடி...</translation> +<translation id="9113240369465613386">ஒற்றை எண் பக்கங்கள் மட்டும்</translation> <translation id="9114663181201435112">எளிதாக உள்நுழையலாம்</translation> <translation id="9115675100829699941">&புக்மார்க்குகள்</translation> <translation id="9116465289595958864">கடைசியாக மாற்றியது</translation> @@ -7584,6 +7607,7 @@ <translation id="991413375315957741">மோஷன் அல்லது ஒளி சென்சார்கள்</translation> <translation id="992032470292211616">நீட்டிப்புகள், ஆப்ஸ் மற்றும் தீம்கள் ஆகியவை உங்கள் சாதனத்திற்கு தீங்கு விளைவிக்கலாம். நிச்சயமாக தொடர விரும்புகிறீர்களா?</translation> <translation id="992256792861109788">பிங்க்</translation> +<translation id="992401651319295351"><ph name="RETRIES" /> முயற்சிகள் மீதமுள்ளன. புதிய பின்னை (PIN) அமைக்காத வரை இந்த நெட்வொர்க்கைப் பயன்படுத்த முடியாது.</translation> <translation id="992592832486024913">ChromeVox (பேச்சுவடிவ கருத்து) ஐ முடக்கு</translation> <translation id="992778845837390402">Linux காப்புப் பிரதி செயலில் உள்ளது</translation> <translation id="993540765962421562">நிறுவுகிறது</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 917aa24..c013607cc 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1138,6 +1138,7 @@ <translation id="2179416702468739594">అందుబాటులో ఉన్న ప్రొఫైల్ల కోసం వెతుకుతోంది. ఇది మీ మొబైల్ నెట్వర్క్ కొన్ని నిముషాలు డిస్కనెక్ట్ కావడానికి కారణం కావచ్చు.</translation> <translation id="2182058453334755893">మీ క్లిప్బోర్డ్కు కాపీ చేయబడింది</translation> <translation id="2184515124301515068">సైట్లు ధ్వనిని ఎప్పుడు ప్లే చేయాలనేది Chrome ఎంచుకునేలా సెట్ చేయండి (సిఫార్సు చేయబడింది)</translation> +<translation id="2186711480981247270">మరో పరికరం నుండి పేజీ షేర్ చేయబడింది</translation> <translation id="2187675480456493911">మీ ఖాతాలోని ఇతర పరికరాలతో సింక్ చేయబడింది. ఇతర యూజర్ల చేత మార్చబడిన సెట్టింగ్లు సింక్ చేయబడవు. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="2187895286714876935">సర్వర్ ప్రమాణపత్రం దిగుమతి లోపం</translation> <translation id="2187906491731510095">పొడిగింపులు నవీకరించబడ్డాయి</translation> @@ -2874,7 +2875,6 @@ <translation id="4035758313003622889">&కార్య నిర్వాహకుడు</translation> <translation id="4036778507053569103">సర్వర్ నుండి డౌన్లోడ్ చేయబడిన విధానం చెల్లదు.</translation> <translation id="4037084878352560732">గుర్రం</translation> -<translation id="4037889604535939429">వ్యక్తిని సవరించండి</translation> <translation id="4040753847560036377">తప్పు PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{పేజీ నుండి నిష్క్రమించు}other{పేజీల నుండి నిష్క్రమించు}}</translation> <translation id="4044612648082411741">మీ ప్రమాణపత్రం పాస్వర్డ్ను నమోదు చేయండి</translation> @@ -4343,7 +4343,6 @@ <translation id="5709557627224531708">Chromeని మీ డిఫాల్ట్ బ్రౌజర్గా సెట్ చేయండి</translation> <translation id="5711983031544731014">అన్లాక్ చేయడం సాధ్యపడలేదు. మీ పాస్వర్డ్ను నమోదు చేయండి.</translation> <translation id="5712153969432126546">సైట్లు కొన్నిసార్లు డాక్యుమెంట్లు, కాంట్రాక్ట్లు, ఫారమ్లు వంటి PDFలను పబ్లిష్ చేస్తాయి</translation> -<translation id="5712323955984474772">తర్వాతి అప్డేట్</translation> <translation id="5715711091495208045">ప్లగ్ఇన్ బ్రోకర్: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ఆటోమేటిక్ సెర్చ్ ఇంజిన్లు</translation> <translation id="5719637365829998022">QR code స్కాన్ చేయబడింది.</translation> @@ -5115,7 +5114,6 @@ <translation id="6563469144985748109">మీ నిర్వాహకుడు దీన్ని ఇంకా ఆమోదించలేదు</translation> <translation id="6568283005472142698">ట్యాబ్ సెర్చ్</translation> <translation id="6569911211938664415">పాస్వర్డ్లు మీ Google ఖాతా (<ph name="ACCOUNT" />)లో సేవ్ చేయబడతాయి కాబట్టి మీరు వాటిని ఏ పరికరంలోనైనా ఉపయోగించవచ్చు</translation> -<translation id="6569934958368283244">ఇతర వ్యక్తులు</translation> <translation id="6573497332121198392">షార్ట్కట్ను తీసివేయడం సాధ్యపడలేదు</translation> <translation id="657402800789773160">ఈ పేజీని &రీలోడ్ చేయి</translation> <translation id="6577284282025554716">డౌన్లోడ్ రద్దు చేయబడింది: <ph name="FILE_NAME" /></translation> @@ -6798,7 +6796,6 @@ <translation id="8393700583063109961">సందేశాన్ని పంపండి</translation> <translation id="8397825320644530257">కనెక్ట్ చేసిన ఫోన్ను డిస్కనెక్ట్ చేయండి</translation> <translation id="8398877366907290961">ఏవైనా కొనసాగు</translation> -<translation id="8400146488506985033">వ్యక్తులను నిర్వహించు</translation> <translation id="8401432541486058167">మీ స్మార్ట్ కార్డ్కు అనుబంధించబడిన పిన్ను అందించండి.</translation> <translation id="8404893580027489425">వేలిముద్ర సెన్సార్ మీ <ph name="DEVICE_TYPE" />కు కుడి వైపున ఉంది. ఏదైనా వేలితో దాన్ని తేలికగా టచ్ చేయండి.</translation> <translation id="8405046151008197676">తాజా అప్డేట్ నుండి హైలైట్లను పొందండి</translation> @@ -6854,7 +6851,6 @@ <translation id="8465444703385715657">అమలు చేయడానికి <ph name="PLUGIN_NAME" />కి మీ అనుమతి అవసరం</translation> <translation id="8466417995783206254">ఈ ట్యాబ్ వీడియోను చిత్రంలో చిత్రం మోడ్లో ప్లే చేస్తోంది.</translation> <translation id="8467326454809944210">మరొక భాషను ఎంచుకోండి</translation> -<translation id="8470214316007448308">ఇతర వ్యక్తులు</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> కోసం సేవ్ చేసిన పాస్వర్డ్లు</translation> <translation id="8471525937465764768">డాక్యుమెంట్ను ప్రింట్ చేయడం లేదా స్టోరేజ్ పరికరానికి సేవ్ చేయడం వంటి ఫీచర్ల కోసం సాధారణంగా సైట్లు USB పరికరాలకు కనెక్ట్ అవుతాయి</translation> <translation id="8471959340398751476">డిస్కౌంట్లు ఆఫ్ చేయబడ్డాయి. అనుకూలంగా మార్చే మెనూలో మీరు వాటిని ఆన్ చేయవచ్చు</translation> @@ -7041,6 +7037,7 @@ <translation id="8676374126336081632">ఇన్పుట్ను తీసివేయండి</translation> <translation id="8676770494376880701">తక్కువ-పవర్ గల ఛార్జర్ కనెక్ట్ చేయబడింది</translation> <translation id="8677212948402625567">అన్నీ కుదించు...</translation> +<translation id="867767487203716855">తర్వాతి అప్డేట్</translation> <translation id="8677859815076891398">ఆల్బమ్లు ఏవీ లేవు. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />లో ఆల్బమ్ను క్రియేట్ చేయండి.</translation> <translation id="8678582529642151449">ట్యాబ్లు కుదించబడవు</translation> <translation id="8678933587484842200">మీరు ఈ అప్లికేషన్ను ఎలా ప్రారంభించాలనుకుంటున్నారు?</translation> @@ -7129,7 +7126,6 @@ <translation id="87646919272181953">Google ఫోటోల ఆల్బమ్</translation> <translation id="8767621466733104912">అందరు వినియోగదారుల కోసం Chromeను ఆటోమేటిక్గా అప్డేట్ చేయి</translation> <translation id="8770406935328356739">ఎక్స్టెన్షన్ మూలం డైరెక్టరీ</translation> -<translation id="8770507190024617908">వ్యక్తులను నిర్వహించు</translation> <translation id="8771300903067484968">ప్రారంభ పేజీ నేపథ్యం అన్నది డిఫాల్ట్ నేపథ్యానికి రీసెట్ చేయబడింది.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> సేవ్ చేయండి</translation> <translation id="8774379074441005279">పునరుద్ధరణను నిర్ధారించండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 34a5d74a..e87f550 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -2568,6 +2568,7 @@ <translation id="3742666961763734085">ไม่พบชื่อหน่วยดังกล่าวขององค์กร โปรดลองอีกครั้ง</translation> <translation id="3744111561329211289">ซิงค์ในแบ็กกราวด์</translation> <translation id="3747077776423672805">หากต้องการนำแอปออก ให้ไปที่การตั้งค่า > Google Play Store > จัดการค่ากำหนด Android > ตัวจัดการแอปหรือแอปพลิเคชัน แล้วแตะแอปที่คุณต้องการถอนการติดตั้ง (อาจต้องเลื่อนไปทางขวาหรือทางซ้ายเพื่อค้นหาแอป) และแตะถอนการติดตั้ง หรือปิดใช้</translation> +<translation id="3747220812138541072">แสดงคำแนะนำการเขียนแทรกในบรรทัดซึ่งปรากฏขึ้นเมื่อพิมพ์</translation> <translation id="3748706263662799310">รายงานข้อบกพร่อง</translation> <translation id="3752582316358263300">ตกลง...</translation> <translation id="3753033997400164841">บันทึกครั้งเดียว แล้วใช้ได้ทุกที่</translation> @@ -2861,7 +2862,6 @@ <translation id="4035758313003622889">&ตัวจัดการงาน</translation> <translation id="4036778507053569103">นโยบายที่ดาวน์โหลดจากเซิร์ฟเวอร์ไม่ถูกต้อง</translation> <translation id="4037084878352560732">ม้า</translation> -<translation id="4037889604535939429">แก้ไขบุคคล</translation> <translation id="4040753847560036377">PUK ไม่ถูกต้อง</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{หน้าที่ออกไป}other{หน้าที่ออกไป}}</translation> <translation id="4044612648082411741">ป้อนรหัสผ่านใบรับรอง</translation> @@ -3257,6 +3257,7 @@ <translation id="4510614391273086606">ระบบกำลังคืนค่าไฟล์และแอป Linux เป็นสถานะข้อมูลสำรอง</translation> <translation id="451102079304155829">รถเข็น</translation> <translation id="4513275008300099962">ปิดใช้การวางซ้อนการควบคุมหน้าต่าง</translation> +<translation id="4513872120116766993">การเขียนแบบช่วยคาดเดา</translation> <translation id="4513946894732546136">ข้อเสนอแนะ</translation> <translation id="451407183922382411">ขับเคลื่อนโดย <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">สลับปุ่มควบคุมวิดีโอเพื่อเล่นหรือหยุดชั่วคราว</translation> @@ -4329,7 +4330,6 @@ <translation id="5709557627224531708">ตั้ง Chrome เป็นเบราว์เซอร์เริ่มต้น</translation> <translation id="5711983031544731014">ไม่สามารถปลดล็อก โปรดใส่รหัสผ่าน</translation> <translation id="5712153969432126546">บางครั้งเว็บไซต์จะเผยแพร่ PDF เช่น เอกสาร สัญญา แบบฟอร์ม</translation> -<translation id="5712323955984474772">การอัปเดตถัดไป</translation> <translation id="5715711091495208045">โบรกเกอร์ปลั๊กอิน: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">เครื่องมือค้นหาเริ่มต้น</translation> <translation id="5719637365829998022">สแกนคิวอาร์โค้ดแล้ว</translation> @@ -4420,6 +4420,7 @@ <translation id="5826395379250998812">เชื่อมต่อ <ph name="DEVICE_TYPE" /> กับโทรศัพท์ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="5826993284769733527">เปิดเผยบางส่วน</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">การคาดคะเนคำถัดไป</translation> <translation id="5828545842856466741">เพิ่มโปรไฟล์...</translation> <translation id="5828633471261496623">กำลังพิมพ์...</translation> <translation id="5830720307094128296">บันทึกหน้าเ&ป็น...</translation> @@ -5101,7 +5102,6 @@ <translation id="6563469144985748109">ผู้จัดการยังไม่ได้อนุมัติเว็บไซต์นี้</translation> <translation id="6568283005472142698">การค้นหาแท็บ</translation> <translation id="6569911211938664415">เราจะบันทึกรหัสผ่านไว้ในบัญชี Google (<ph name="ACCOUNT" />) เพื่อให้คุณใช้ในอุปกรณ์เครื่องใดก็ได้</translation> -<translation id="6569934958368283244">บุคคลอื่น</translation> <translation id="6573497332121198392">นำทางลัดออกไม่ได้</translation> <translation id="657402800789773160">&โหลดหน้านี้ใหม่</translation> <translation id="6577284282025554716">ยกเลิกการดาวน์โหลดแล้ว: <ph name="FILE_NAME" /></translation> @@ -6291,6 +6291,7 @@ <translation id="78526636422538552">ปิดใช้การเพิ่มบัญชี Google อื่นอยู่</translation> <translation id="7853747251428735">เครื่องมือเ&พิ่มเติม</translation> <translation id="7855678561139483478">ย้ายแท็บไปที่หน้าต่างใหม่</translation> +<translation id="7857093393627376423">คำแนะนำข้อความ</translation> <translation id="7857117644404132472">เพิ่มข้อยกเว้น</translation> <translation id="7857949311770343000">นี่คือหน้าแท็บใหม่ที่คุณคาดไว้ใช่ไหม</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6787,7 +6788,6 @@ <translation id="8393700583063109961">ส่งข้อความ</translation> <translation id="8397825320644530257">ยกเลิกการเชื่อมต่อโทรศัพท์ที่เชื่อมต่ออยู่</translation> <translation id="8398877366907290961">ดำเนินการต่อ</translation> -<translation id="8400146488506985033">จัดการบุคคล</translation> <translation id="8401432541486058167">ใส่ PIN ที่เชื่อมโยงกับสมาร์ทการ์ดของคุณ</translation> <translation id="8404893580027489425">เซ็นเซอร์ลายนิ้วมืออยู่ทางด้านขวามือของ <ph name="DEVICE_TYPE" /> ให้แตะเบาๆ ด้วยนิ้วใดก็ได้</translation> <translation id="8405046151008197676">ดูไฮไลต์จากอัปเดตล่าสุด</translation> @@ -6843,7 +6843,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> ต้องได้รับอนุญาตจากคุณก่อนจึงจะทำงานได้</translation> <translation id="8466417995783206254">แท็บนี้กำลังเล่นวิดีโอในโหมดการแสดงภาพซ้อนภาพ</translation> <translation id="8467326454809944210">เลือกภาษาอื่น</translation> -<translation id="8470214316007448308">บุคคลอื่น</translation> <translation id="8470513973197838199">รหัสผ่านที่บันทึกไว้สำหรับ <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">โดยปกติแล้วเว็บไซต์จะเชื่อมต่อกับอุปกรณ์ USB เพื่อดำเนินการตามฟีเจอร์ต่างๆ เช่น พิมพ์เอกสาร หรือบันทึกลงในอุปกรณ์จัดเก็บข้อมูล</translation> <translation id="8471959340398751476">ส่วนลดปิดอยู่ คุณเปิดส่วนลดได้ในเมนูการปรับแต่ง</translation> @@ -7030,6 +7029,7 @@ <translation id="8676374126336081632">ล้างข้อมูลที่ป้อน</translation> <translation id="8676770494376880701">เชื่อมต่อกับที่ชาร์จพลังงานต่ำ</translation> <translation id="8677212948402625567">ยุบทั้งหมด...</translation> +<translation id="867767487203716855">การอัปเดตถัดไป</translation> <translation id="8677859815076891398">ไม่มีอัลบั้ม สร้างอัลบั้มใน <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /></translation> <translation id="8678582529642151449">แท็บจะไม่ย่อ</translation> <translation id="8678933587484842200">คุณต้องการเปิดแอปพลิเคชันนี้ด้วยวิธีใด</translation> @@ -7118,7 +7118,6 @@ <translation id="87646919272181953">อัลบั้มใน Google Photos</translation> <translation id="8767621466733104912">อัปเดต Chrome สำหรับผู้ใช้ทุกคนโดยอัตโนมัติ</translation> <translation id="8770406935328356739">ไดเรกทอรีหลักของส่วนขยาย</translation> -<translation id="8770507190024617908">จัดการบุคคล</translation> <translation id="8771300903067484968">มีการรีเซ็ตพื้นหลังของหน้าเริ่มต้นเป็นพื้นหลังเริ่มต้น</translation> <translation id="8773302562181397928">บันทึก <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">ยืนยันการคืนค่า</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index a68e006..b415a185 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -700,6 +700,7 @@ <translation id="173628468822554835">Anladım. Varsayılan olarak ziyaret ettiğiniz yeni siteler bildirim göndermeyecek.</translation> <translation id="1736419249208073774">Keşfet</translation> <translation id="1737968601308870607">Hata bildir</translation> +<translation id="1739684185846730053">Privacy Sandbox denemeleri, hâlâ aktif geliştirme aşamasında olup belirli bölgelerde kullanılmaktadır. Şimdilik, siteler üçüncü taraf çerezler gibi geçerli web teknolojilerini kullanmaya devam ederken Privacy Sandbox'ı deneyebilir.</translation> <translation id="174123615272205933">Özel</translation> <translation id="1741314857973421784">Devam</translation> <translation id="1743570585616704562">Tanınmadı</translation> @@ -1123,6 +1124,7 @@ <translation id="217576141146192373">Yazıcı eklenemiyor. Lütfen yazıcınızın yapılandırmasını kontrol edip tekrar deneyin.</translation> <translation id="2177950615300672361">Gizli Sekmesi: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA Uzlaşması</translation> +<translation id="2179416702468739594">Mevcut profiller aranıyor. Bu işlem, mobil ağınızın birkaç dakikalığına kopmasına neden olabilir.</translation> <translation id="2182058453334755893">Panonuza Kopyalandı</translation> <translation id="2184515124301515068">Sitelerin ne zaman ses çalacağını Chrome'un seçmesine izin verin (önerilir)</translation> <translation id="2186711480981247270">Başka bir cihazdan paylaşılan sayfa</translation> @@ -1388,6 +1390,7 @@ <translation id="2469375675106140201">Yazım denetimini özelleştir</translation> <translation id="247051149076336810">Dosya paylaşım URL'si</translation> <translation id="2470702053775288986">Desteklenmeyen uzantılar devre dışı bırakıldı</translation> +<translation id="2470939964922472929">Çok sayıda yanlış PIN girildi. Yeni bir PIN oluşturmak için operatörünüz tarafından sağlanan 8 basamaklı Kişisel Engelleme Kaldırma Anahtarını (PUK) girin.</translation> <translation id="2471469610750100598">Siyah (varsayılan)</translation> <translation id="2471506181342525583">Konum erişimine izin verildi</translation> <translation id="2473195200299095979">Bu sayfayı çevir</translation> @@ -1683,6 +1686,7 @@ <translation id="2785873697295365461">Dosya açıklayıcıları</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Grup numarası</translation> <translation id="2789486458103222910">Tamam</translation> <translation id="2791529110887957050">Linux'u kaldır</translation> <translation id="2791952154587244007">Bir hata oldu. Kiosk uygulaması bu cihazda otomatik olarak başlamayacak.</translation> @@ -1984,6 +1988,7 @@ <translation id="310671807099593501">Site, Bluetooth bağlantısını kullanıyor</translation> <translation id="3108931485517391283">Alınamıyor.</translation> <translation id="3109724472072898302">Daraltılmış</translation> +<translation id="3113592018909187986">1 deneme hakkınız kaldı. Yeni bir PIN oluşturana kadar bu ağı kullanamazsınız.</translation> <translation id="311394601889664316">Sitelerin cihazımdaki dosya veya klasörleri düzenlemesine izin verme</translation> <translation id="3115147772012638511">Önbellek bekleniyor...</translation> <translation id="3115580024857770654">Tümünü daralt</translation> @@ -2272,6 +2277,7 @@ <translation id="3440663250074896476"><ph name="BOOKMARK_NAME" /> ile ilgili diğer işlemler</translation> <translation id="3441653493275994384">Ekran</translation> <translation id="3441663102605358937">Bu hesabı doğrulamak için tekrar <ph name="ACCOUNT" /> hesabında oturum açın</translation> +<translation id="3444641828375597683">Reklamverenler ve yayıncılar FLoC'u kullanabilir. FLoC ile ilgili açıklamayı sayfanın devamında görebilirsiniz.</translation> <translation id="3445047461171030979">Google Asistan hızlı yanıtlar</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> dk.</translation> <translation id="3445925074670675829">USB-C cihaz</translation> @@ -2854,7 +2860,7 @@ <translation id="4035758313003622889">&Görev yöneticisi</translation> <translation id="4036778507053569103">Sunucudan indirilen politika geçersiz.</translation> <translation id="4037084878352560732">At</translation> -<translation id="4037889604535939429">Kişiyi düzenleyin</translation> +<translation id="4040753847560036377">Yanlış PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Sayfadan Çık}other{Sayfalardan Çık}}</translation> <translation id="4044612648082411741">Sertifika şifrenizi girin</translation> <translation id="4044708573046946214">Ekran kilidi şifresi</translation> @@ -3063,6 +3069,7 @@ <translation id="4297813521149011456">Ekran döndürme</translation> <translation id="4299022904780065004">Yeni &Gizli pencere</translation> <translation id="4301671483919369635">Bu sayfanın dosyaları düzenlemesine izin verilir</translation> +<translation id="4302605047395093221">Bu cihazı kullanan herkesin bu mobil ağa bağlanmak için PIN'i girmesi gerekir.</translation> <translation id="4303079906735388947">Güvenlik anahtarınız için yeni bir PIN oluşturun</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" /> cihazına kopyala</translation> <translation id="4305817255990598646">Anahtar</translation> @@ -3247,6 +3254,7 @@ <translation id="4510479820467554003">Ebeveyn hesap listesi</translation> <translation id="4510614391273086606">Linux dosyaları ve uygulamaları yedeklenmiş durumlarına geri yükleniyor.</translation> <translation id="451102079304155829">alışveriş sepetleri</translation> +<translation id="4513275008300099962">Pencere denetimi yer paylaşımını devre dışı bırak</translation> <translation id="4513946894732546136">Geri Bildirim</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> tarafından destekleniyor</translation> <translation id="4514610446763173167">Oynatmak veya duraklatmak için videoyu aç/kapat</translation> @@ -4320,7 +4328,6 @@ <translation id="5709557627224531708">Chrome'u varsayılan tarayıcınız olarak ayarlama</translation> <translation id="5711983031544731014">Kilit açılamıyor. Şifrenizi girin.</translation> <translation id="5712153969432126546">Siteler, bazen doküman, sözleşme ve form gibi PDF'ler yayınlar</translation> -<translation id="5712323955984474772">Sonraki Güncelleme</translation> <translation id="5715711091495208045">Eklenti Aracısı: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Varsayılan arama motorları</translation> <translation id="5719637365829998022">QR kodu tarandı.</translation> @@ -4592,10 +4599,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - USB cihazı bağlandı</translation> <translation id="6028117231645531007">Parmak izi ekle</translation> <translation id="6031600495088157824">Araç çubuğunda giriş seçenekleri</translation> +<translation id="6032091552407840792">Bu deneme yalnızca <ph name="BEGIN_LINK" />bazı bölgelerde<ph name="END_LINK" /> etkindir.</translation> <translation id="6032715498678347852">Bir uzantının bu siteye erişmesine izin vermek için uzantıyı tıklayın.</translation> <translation id="6032912588568283682">Dosya sistemi</translation> <translation id="603539183851330738">Otomatik düzeltmeyi geri alma düğmesi. Yazımı <ph name="TYPED_WORD" /> biçimine geri döndürün. Etkinleştirmek için enter, kapatmak için escape tuşuna basın.</translation> <translation id="6038929619733116134">Sitede araya giren veya yanıltıcı reklamlar engellensin</translation> +<translation id="603895874132768835">Yeni bir PIN oluşturana kadar bu ağı kullanamazsınız</translation> <translation id="6039651071822577588">Ağ mülkü sözlüğü bozuk</translation> <translation id="6040143037577758943">Kapat</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google’ın konum hizmetleri, cihazınızın konumunu tahmin etmesine yardımcı olması için kablosuz, mobil ağlar ve sensörler gibi kaynakları kullanır.<ph name="END_PARAGRAPH1" /> @@ -4843,6 +4852,7 @@ <translation id="6292699686837272722">Sekmeler orta genişliğe daralır</translation> <translation id="6295158916970320988">Tüm siteler</translation> <translation id="6295855836753816081">Kaydediliyor...</translation> +<translation id="6296410173147755564">Geçersiz PUK</translation> <translation id="6298962879096096191">Android uygulamalarını yüklemek için Google Play'i kullanın</translation> <translation id="6300177430812514606">Veri gönderip alma işlemini bitirmesine izin verilmeyen siteler</translation> <translation id="630065524203833229">Çı&kış</translation> @@ -4889,6 +4899,7 @@ <translation id="6340526405444716530">Kişiselleştirme</translation> <translation id="6341850831632289108">Fiziksel konumunuzu belirleme</translation> <translation id="6342069812937806050">Az önce</translation> +<translation id="6343003829431264373">Yalnızca çift numaralı sayfalar</translation> <translation id="6344170822609224263">Ağ bağlantıları listesine erişme</translation> <translation id="6344576354370880196">Kayıtlı yazıcılar</translation> <translation id="6345418402353744910">Yöneticinin ağınızı yapılandırabilmesi için <ph name="PROXY" /> proxy'sine ait kullanıcı adınız ve şifreniz gerekiyor</translation> @@ -5087,7 +5098,6 @@ <translation id="6563469144985748109">Yöneticiniz henüz onaylamadı</translation> <translation id="6568283005472142698">Sekme Araması</translation> <translation id="6569911211938664415">Şifreler Google Hesabınıza (<ph name="ACCOUNT" />) kaydedildiğinden bunları herhangi bir cihazda kullanabilirsiniz</translation> -<translation id="6569934958368283244">Diğer kişiler</translation> <translation id="6573497332121198392">Kısayol kaldırılamıyor</translation> <translation id="657402800789773160">Bu &Sayfayı Tekrar Yükle</translation> <translation id="6577284282025554716">İndirme işlemi iptal edildi: <ph name="FILE_NAME" /></translation> @@ -5136,6 +5146,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> adlı dosya, hassas veya tehlikeli içeriğe sahip. Dosyanın sahibinden düzeltmesini isteyin.</translation> <translation id="6624687053722465643">Tatlı</translation> <translation id="6628328486509726751">Yüklenme zamanı: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">En az 4 rakam girin</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> sizin adınıza kendi kimlik doğrulamasını yapmak için bir sertifikaya kalıcı erişim izni istiyor.</translation> <translation id="6635362468090274700">Kendinizi görünür hale getirmedikçe hiç kimse sizinle içerik paylaşamaz.<ph name="BR" /><ph name="BR" />Kendinizi geçici olarak görünür hale getirmek için durum alanını açıp Yakındakiler görünürlüğünü etkinleştirin.</translation> <translation id="6635944431854494329">Sahip, Ayarlar > Gelişmiş > Teşhis ve kullanım verilerini Google'a otomatik olarak gönder adımlarını izleyerek bu özelliği kontrol edebilir.</translation> @@ -5174,6 +5185,7 @@ <translation id="6664774537677393800">Profiliniz açılırken bir sorun oluştu. Lütfen oturumu kapatıp sonra tekrar oturum açın.</translation> <translation id="6670142487971298264"><ph name="APP_NAME" /> artık kullanılabilir</translation> <translation id="6671320560732140690">{COUNT,plural, =1{bir adres}other{# adres}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> denetimi kuruluyor</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Senkronizasyonu başlatmak için parolanızı girin</translation> <translation id="6675665718701918026">İşaretleme cihazı bağlı</translation> @@ -5182,6 +5194,7 @@ <translation id="6680442031740878064">Kullanılabilir alan: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Hız</translation> <translation id="6681668084120808868">Fotoğraf çek</translation> +<translation id="6683087162435654533">Tüm Sekmeleri Geri Yükle</translation> <translation id="6683948477137300040">Cihaz EID numarası ve QR kodu pop-up'ını göster</translation> <translation id="6684827949542560880">En son güncelleme indiriliyor</translation> <translation id="668599234725812620">Google Play'i aç</translation> @@ -5751,6 +5764,7 @@ <translation id="7308643132139167865">Web sitesi dilleri</translation> <translation id="7309257895202129721">Denetimleri &göster</translation> <translation id="7310598146671372464">Giriş yapılamadı. Sunucu belirtilen Kerberos şifreleme türlerini desteklemiyor. Lütfen yöneticinizle iletişim kurun.</translation> +<translation id="7315168816273861089">Pencere denetimi yer paylaşımını etkinleştir</translation> <translation id="7320213904474460808">Varsayılan olarak ağa bağlan</translation> <translation id="7321545336522791733">Sunucuya ulaşılamıyor</translation> <translation id="7324297612904500502">Beta Forumu</translation> @@ -5927,7 +5941,9 @@ <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> cihazınız kurumsal yönetim için başarıyla kaydettirildi.</translation> <translation id="7507207699631365376">Bu sağlayıcının <ph name="BEGIN_LINK" />gizlilik politikasına<ph name="END_LINK" /> bakın</translation> <translation id="7507930499305566459">Durum Yanıtlayıcı Sertifikası</translation> +<translation id="7509097596023256288">Yönetim kuruluyor</translation> <translation id="7509246181739783082">Kimliğinizi doğrulayın</translation> +<translation id="7511415964832680006">Etkinleştirildiğinde, siteler içeriklerini ve hizmetlerini sunmak için burada gösterilen gizliliği koruma tekniklerini kullanabilir. Bu teknikler, siteler arası izlemeye alternatif çözümler sağlar. Zaman içinde başka denemeler de eklenebilir.</translation> <translation id="7513029293694390567">Depolanmış kimlik bilgileriyle web sitelerinde otomatik olarak oturum açın. Bu özellik devre dışı bırakılırsa, bir web sitesinde oturum açmadan önce her defasında işlemi onaylamanız istenir.</translation> <translation id="7514239104543605883">Cihazıma kopyala</translation> <translation id="7514365320538308">İndir</translation> @@ -6287,6 +6303,7 @@ <translation id="7876027585589532670">Kısayol düzenlenemiyor</translation> <translation id="7877451762676714207">Bilinmeyen sunucu hatası. Lütfen tekrar deneyin veya sunucu yöneticinize başvurun.</translation> <translation id="7879631849810108578">Kısayol ayarlandı: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Chrome, açıkken ve etkin durumdayken dahil olduğunuz bir grubu veya "kohortu" belirlemek için 7 günden eski tarama geçmişinizi kullanır. Reklamverenler, grup için reklam seçebilirler. Tarama geçmişiniz cihazınızda gizli tutulur. Bu deneme yalnızca <ph name="BEGIN_LINK" />bazı bölgelerde<ph name="END_LINK" /> etkindir.</translation> <translation id="7880823633812189969">Yeniden başlattığınızda yerel veriler silinir</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Hesabı Görüntüle</translation> @@ -6446,6 +6463,7 @@ <translation id="804786196054284061">Son Kullanıcı Lisans Sözleşmesi</translation> <translation id="8048977114738515028">Bu profile doğrudan erişmek için cihazınızda masaüstü kısayolu oluşturun</translation> <translation id="8049029041626250638">Bir klavye veya fare bağlayın. Bluetooth cihazları kullanıyorsanız cihazlarınızın eşlemeye hazır olduğundan emin olun.</translation> +<translation id="8049184478152619004">Kişisel Engelleme Kaldırma Anahtarını (PUK) girin</translation> <translation id="8049705080247101012">Google <ph name="EXTENSION_NAME" /> uzantısını kötü amaçlı olarak işaretledi ve yükleme işlemi engellendi</translation> <translation id="8049948037269924837">Dokunmatik alan ters kaydırma</translation> <translation id="8050038245906040378">Microsoft Ticari Kod İmzalama</translation> @@ -6482,6 +6500,7 @@ <translation id="8082106343289440791">"<ph name="DEVICE_NAME" />" ile eşlensin mi?</translation> <translation id="8082390128630131497">ADB hata ayıklama işlevini devre dışı bırakmak bu <ph name="DEVICE_TYPE" /> cihazını fabrika ayarlarına sıfırlar. Tüm kullanıcı hesapları ve yerel veriler silinir.</translation> <translation id="8084114998886531721">Kayıtlı şifre</translation> +<translation id="8084510406207562688">Tüm sekmeleri geri yükle</translation> <translation id="8086015605808120405"><ph name="PRINTER_NAME" /> yapılandırılıyor...</translation> <translation id="8086442853986205778"><ph name="PRINTER_NAME" /> yazıcısını kur</translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Bu dosya şifrelenmiş. Dosyanın sahibinden şifreyi çözmesini isteyin.}other{Bu dosyaların bazıları şifrelenmiş. Dosyaların sahibinden şifreleri çözmesini isteyin.}}</translation> @@ -6523,6 +6542,7 @@ <translation id="8119438628456698432">Günlük dosyaları oluşturuluyor...</translation> <translation id="811994229154425014">Nokta yazmak için çift boşluk</translation> <translation id="8120505434908124087">eSIM profili yükle</translation> +<translation id="812260729110117038">Reklamverenler ve yayıncılar, sizi sitelerde izlemeden reklamların etkisini inceleyebilirler.</translation> <translation id="8123590694679414600">Veriler <ph name="TIME" /> tarihinde senkronizasyon parolanızla şifrelendi. Google Pay'deki adresler ve ödeme yöntemleri bu kapsamda değildir.</translation> <translation id="81238879832906896">Sarı ve beyaz çiçek</translation> @@ -6560,6 +6580,7 @@ <translation id="816055135686411707">Sertifika Güveni Ayarlanırken Hata Oluştu</translation> <translation id="8160775796528709999">Ayarlarda Canlı Altyazı özelliğini etkinleştirerek ses ve videolarınıza altyazı ekleyin</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Chrome, <ph name="BEGIN_LINK" />Özel Korumalı Alan<ph name="END_LINK" /> girişimi kapsamında, açık web'i korurken sizi siteler arası izlemeden koruyacak yeni teknolojiler geliştiriyor.</translation> <translation id="8161293209665121583">Web sayfaları için okuyucu modu</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Sekmeyi Yeni Pencereye Taşı}other{Sekmeleri Yeni Pencereye Taşı}}</translation> <translation id="8165997195302308593">Crostini bağlantı noktasını yönlendir</translation> @@ -6761,7 +6782,6 @@ <translation id="8393700583063109961">İleti gönder</translation> <translation id="8397825320644530257">Bağlı telefonun bağlantısını kes</translation> <translation id="8398877366907290961">Yine de devam et</translation> -<translation id="8400146488506985033">Kişileri yönet</translation> <translation id="8401432541486058167">Akıllı kartınızla ilişkilendirilen PIN'i girin.</translation> <translation id="8404893580027489425">Parmak izi sensörü, <ph name="DEVICE_TYPE" /> cihazınızın sağ tarafındadır. Herhangi bir parmağınızla bu tuşa hafifçe dokunun.</translation> <translation id="8405046151008197676">En yeni güncellemeden öne çıkanları alın</translation> @@ -6817,7 +6837,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> eklentisinin çalışması için izniniz gerekiyor</translation> <translation id="8466417995783206254">Bu sekmede bir video pencere içinde pencere modunda oynatılıyor.</translation> <translation id="8467326454809944210">Başka bir dil seç</translation> -<translation id="8470214316007448308">Diğer Kişiler</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> için kaydedilmiş şifreler</translation> <translation id="8471525937465764768">Doküman yazdırma veya depolama cihazına kaydetme gibi özelliklerin kullanılması için siteler genellikle USB cihazlara bağlanır</translation> <translation id="8471959340398751476">İndirim bulma işlevi kapalı. Özelleştirme menüsünden açabilirsiniz</translation> @@ -7004,6 +7023,7 @@ <translation id="8676374126336081632">Girişi temizle</translation> <translation id="8676770494376880701">Düşük güçlü şarj cihazı bağlandı</translation> <translation id="8677212948402625567">Tümünü daralt...</translation> +<translation id="867767487203716855">Sonraki güncelleme</translation> <translation id="8677859815076891398">Albüm yok. <ph name="LINK_BEGIN" />Google Fotoğraflar<ph name="LINK_END" />'da albüm oluşturun.</translation> <translation id="8678582529642151449">Sekmeler daralmaz</translation> <translation id="8678933587484842200">Bu uygulamanın nasıl başlatılmasını istersiniz?</translation> @@ -7092,7 +7112,6 @@ <translation id="87646919272181953">Google Fotoğraflar albümü</translation> <translation id="8767621466733104912">Tüm kullanıcılar için Chrome'u otomatik olarak güncelle</translation> <translation id="8770406935328356739">Uzantı kök dizini</translation> -<translation id="8770507190024617908">Kişileri Yönet</translation> <translation id="8771300903067484968">Başlangıç sayfası arka planı, varsayılan arka plana sıfırlandı.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> cihazını kaydet</translation> <translation id="8774379074441005279">Geri Yüklemeyi Onaylayın</translation> @@ -7353,6 +7372,7 @@ <translation id="9031549947500880805">Google Drive'a yedekle. Verilerinizi istediğiniz zaman kolayca geri yükleyin veya cihazlar arasında geçiş yapın. Yedeklemeniz, uygulama verilerini içerir.</translation> <translation id="9033765790910064284">Yine de devam et</translation> <translation id="9033857511263905942">&Yapıştır</translation> +<translation id="9035689366572880647">Geçerli PIN'i gir</translation> <translation id="9037640663275993951">Cihaza izin verilmiyor</translation> <translation id="9037818663270399707">Bağlantınız tüm ağ trafiği için gizli değil</translation> <translation id="9037965129289936994">Orijinali Göster</translation> @@ -7428,6 +7448,7 @@ <translation id="9112748030372401671">Duvar kağıdınızı değiştirme</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> tehlikeli olabilir. Taranmak üzere Google'a gönderilsin mi?</translation> <translation id="9112987648460918699">Bul...</translation> +<translation id="9113240369465613386">Yalnızca tek numaralı sayfalar</translation> <translation id="9114663181201435112">Kolayca oturum açın</translation> <translation id="9115675100829699941">&Yer İşaretleri</translation> <translation id="9116465289595958864">Son değiştirilme</translation> @@ -7582,6 +7603,7 @@ <translation id="991413375315957741">hareket veya ışık sensörleri</translation> <translation id="992032470292211616">Uzantılar, uygulamalar ve temalar cihazınıza zarar verebilir. Devam etmek istediğinizden emin misiniz?</translation> <translation id="992256792861109788">Pembe</translation> +<translation id="992401651319295351"><ph name="RETRIES" /> deneme hakkınız kaldı. Yeni bir PIN oluşturana kadar bu ağı kullanamazsınız.</translation> <translation id="992592832486024913">ChromeVox'u (sesli geri bildirim) devre dışı bırak</translation> <translation id="992778845837390402">Linux için yedekleme şu anda devam ediyor</translation> <translation id="993540765962421562">Yükleme işlemi devam ediyor</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index f01dcc1..cf90b3a 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -714,6 +714,7 @@ <translation id="173628468822554835">Зрозуміло. Нові веб-сайти, які ви відвідуєте, за умовчанням не надсилатимуть сповіщення.</translation> <translation id="1736419249208073774">Огляд</translation> <translation id="1737968601308870607">Помилка файлу</translation> +<translation id="1739684185846730053">Пробні технології Privacy Sandbox ще перебувають на стадії розробки й доступні лише у вибраних регіонах. Наразі сайти можуть користуватися Privacy Sandbox, продовжуючи застосовувати наявні веб-технології (зокрема сторонні файли cookie).</translation> <translation id="174123615272205933">Власні</translation> <translation id="1741314857973421784">Продовжити</translation> <translation id="1743570585616704562">Не розпізнано</translation> @@ -1138,6 +1139,7 @@ <translation id="217576141146192373">Не вдається додати принтер. Перевірте його налаштування й повторіть спробу.</translation> <translation id="2177950615300672361">Анонімна вкладка: <ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">Дискредитація ЦС</translation> +<translation id="2179416702468739594">Пошук доступних профілів. Можливо, пристрій на кілька хвилин від’єднається від мобільної мережі.</translation> <translation id="2182058453334755893">Скопійовано в буфер обміну</translation> <translation id="2184515124301515068">Дозволити Chrome вибирати, коли відтворювати звук на сайтах (рекомендується)</translation> <translation id="2186711480981247270">Сторінка, надіслана з іншого пристрою</translation> @@ -1406,6 +1408,7 @@ <translation id="2469375675106140201">Налаштувати перевірку орфографії</translation> <translation id="247051149076336810">URL-адреса файлообмінника</translation> <translation id="2470702053775288986">Непідтримувані розширення вимкнено</translation> +<translation id="2470939964922472929">Ви ввели неправильний PIN-код забагато разів. Щоб налаштувати новий PIN-код, введіть восьмизначний PUK-код, який надав оператор.</translation> <translation id="2471469610750100598">Чорний (за умовчанням)</translation> <translation id="2471506181342525583">Доступ до геоданих надано</translation> <translation id="2473195200299095979">Перекласти цю сторінку</translation> @@ -1702,6 +1705,7 @@ <translation id="2785873697295365461">Опис файлу</translation> <translation id="2787354132612937472">–</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">Номер групи</translation> <translation id="2789486458103222910">OK</translation> <translation id="2791529110887957050">Видалити Linux</translation> <translation id="2791952154587244007">Сталася помилка. Додатки для терміналів не запускатимуться автоматично на цьому пристрої.</translation> @@ -2003,6 +2007,7 @@ <translation id="310671807099593501">Сайт використовує Bluetooth</translation> <translation id="3108931485517391283">Не вдалось отримати файл</translation> <translation id="3109724472072898302">Згорнуто</translation> +<translation id="3113592018909187986">Залишилась 1 спроба. Ви не зможете користуватися цією мережею, доки не налаштуєте новий PIN-код.</translation> <translation id="311394601889664316">Заборонити сайтам змінювати файли чи папки на пристрої</translation> <translation id="3115147772012638511">...</translation> <translation id="3115580024857770654">Згорнути всі</translation> @@ -2291,6 +2296,7 @@ <translation id="3440663250074896476">Інші дії для закладки <ph name="BOOKMARK_NAME" /></translation> <translation id="3441653493275994384">Екран</translation> <translation id="3441663102605358937">Щоб підтвердити обліковий запис <ph name="ACCOUNT" />, увійдіть у нього ще раз</translation> +<translation id="3444641828375597683">Рекламодавці й видавці можуть використовувати технологію FLoC, яку описано далі на цій сторінці.</translation> <translation id="3445047461171030979">Швидкі відповіді Google Асистента</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> хв</translation> <translation id="3445925074670675829">Пристрій із портом USB типу C</translation> @@ -2873,7 +2879,7 @@ <translation id="4035758313003622889">&Диспетчер завдань</translation> <translation id="4036778507053569103">Завантажене із сервера правило недійсне.</translation> <translation id="4037084878352560732">Кінь</translation> -<translation id="4037889604535939429">Змінити користувача</translation> +<translation id="4040753847560036377">Неправильний PUK-код</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Закрити сторінку}one{Закрити сторінки}few{Закрити сторінки}many{Закрити сторінки}other{Закрити сторінки}}</translation> <translation id="4044612648082411741">Введіть пароль сертифіката</translation> <translation id="4044708573046946214">Пароль розблокування екрана</translation> @@ -3082,6 +3088,7 @@ <translation id="4297813521149011456">Обертання дисплея</translation> <translation id="4299022904780065004">Нове &вікно в режимі анонімного перегляду</translation> <translation id="4301671483919369635">Ця сторінка може змінювати файли</translation> +<translation id="4302605047395093221">Щоб під’єднатися до цієї мобільної мережі, усі користувачі пристрою мають вводити PIN-код</translation> <translation id="4303079906735388947">Налаштуйте новий PIN-код для ключа безпеки</translation> <translation id="4305402730127028764">Копіювати на пристрій <ph name="DEVICE_NAME" /></translation> <translation id="4305817255990598646">Перейти</translation> @@ -3267,6 +3274,7 @@ <translation id="4510479820467554003">Список батьківських облікових записів</translation> <translation id="4510614391273086606">Файли та додатки Linux відновлено з резервної копії.</translation> <translation id="451102079304155829">картки</translation> +<translation id="4513275008300099962">Вимкнути оверлей елементів керування вікном</translation> <translation id="4513946894732546136">Відгуки</translation> <translation id="451407183922382411">Технологія <ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">Відтворити або призупинити відео</translation> @@ -4339,7 +4347,6 @@ <translation id="5709557627224531708">Зробіть Chrome веб-переглядачем за умовчанням</translation> <translation id="5711983031544731014">Не вдалося розблокувати. Введіть пароль.</translation> <translation id="5712153969432126546">Сайти іноді публікують файли PDF, як-от документи, договори та форми</translation> -<translation id="5712323955984474772">Наступне оновлення</translation> <translation id="5715711091495208045">Посередник для плагінів: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Пошукові системи за умовчанням</translation> <translation id="5719637365829998022">QR-код зіскановано.</translation> @@ -4611,10 +4618,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> – пристрій USB підключено</translation> <translation id="6028117231645531007">Додати відбиток пальця</translation> <translation id="6031600495088157824">Параметри введення на панелі інструментів</translation> +<translation id="6032091552407840792">Ця пробна версія доступна лише в <ph name="BEGIN_LINK" />певних регіонах<ph name="END_LINK" />.</translation> <translation id="6032715498678347852">Натисніть розширення, щоб надати йому доступ до цього сайту.</translation> <translation id="6032912588568283682">Файлова система</translation> <translation id="603539183851330738">Кнопка відміни автовиправлення. Ви можете відновити слово "<ph name="TYPED_WORD" />". Щоб підтвердити, натисніть Enter; щоб відхилити, натисніть Escape.</translation> <translation id="6038929619733116134">Блокувати, якщо сайт показує нав’язливі чи оманливі оголошення</translation> +<translation id="603895874132768835">Ви не зможете користуватися цією мережею, доки не налаштуєте новий PIN-код</translation> <translation id="6039651071822577588">Словник власності в мережі має невірну структуру</translation> <translation id="6040143037577758943">Закрити</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Служба локації Google використовує такі джерела, як Wi-Fi, мобільні мережі та датчики, щоб визначати місцезнаходження вашого пристрою.<ph name="END_PARAGRAPH1" /> @@ -4862,6 +4871,7 @@ <translation id="6292699686837272722">Вкладки зменшуються до середньої ширини</translation> <translation id="6295158916970320988">Усі сайти</translation> <translation id="6295855836753816081">Зберігання…</translation> +<translation id="6296410173147755564">Недійсний PUK-код</translation> <translation id="6298962879096096191">Установлювати додатки Android із Google Play</translation> <translation id="6300177430812514606">Заборонено завершувати надсилання чи отримання даних</translation> <translation id="630065524203833229">В&ийти</translation> @@ -4908,6 +4918,7 @@ <translation id="6340526405444716530">Персоналізація</translation> <translation id="6341850831632289108">Визначати ваше фізичне місцезнаходження</translation> <translation id="6342069812937806050">Щойно</translation> +<translation id="6343003829431264373">Лише парні сторінки</translation> <translation id="6344170822609224263">Отримувати доступ до списку мережевих з’єднань</translation> <translation id="6344576354370880196">Збережені принтери</translation> <translation id="6345418402353744910">Укажіть своє ім'я користувача та пароль для проксі <ph name="PROXY" />, щоб адміністратор міг налаштувати вашу мережу</translation> @@ -5107,7 +5118,6 @@ <translation id="6563469144985748109">Адміністратор ще не схвалив його</translation> <translation id="6568283005472142698">Пошук вкладок</translation> <translation id="6569911211938664415">Паролі зберігаються в обліковому записі Google (<ph name="ACCOUNT" />), щоб ви могли користуватися ними на будь-якому пристрої</translation> -<translation id="6569934958368283244">Інші люди</translation> <translation id="6573497332121198392">Не вдалося видалити ярлик</translation> <translation id="657402800789773160">&Перезавантажити цю сторінку</translation> <translation id="6577284282025554716">Завантаження файлу "<ph name="FILE_NAME" />" скасовано</translation> @@ -5156,6 +5166,7 @@ <translation id="6624535038674360844">Файл "<ph name="FILE_NAME" />" містить конфіденційний або небезпечний контент. Попросіть його власника вирішити цю проблему.</translation> <translation id="6624687053722465643">Смакота</translation> <translation id="6628328486509726751">Завантажено: <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">Введіть принаймні 4 цифри</translation> <translation id="6630752851777525409">Розширенню <ph name="EXTENSION_NAME" /> потрібен постійний доступ до сертифіката, щоб проходити автентифікацію від вашого імені.</translation> <translation id="6635362468090274700">Інші користувачі зможуть надсилати вам дані, лише якщо ви зробите свій пристрій видимим.<ph name="BR" /><ph name="BR" />Щоб зробити пристрій видимим тимчасово, відкрийте панель стану і ввімкніть опцію "Видимість поблизу".</translation> <translation id="6635944431854494329">Власник може керувати цією функцією в меню "Налаштування > Розширені > Автоматично надсилати в Google дані про діагностику та використання".</translation> @@ -5194,6 +5205,7 @@ <translation id="6664774537677393800">Не вдалося відкрити профіль. Вийдіть і знову ввійдіть.</translation> <translation id="6670142487971298264">Додаток <ph name="APP_NAME" /> уже доступний</translation> <translation id="6671320560732140690">{COUNT,plural, =1{адресу}one{# адресу}few{# адреси}many{# адрес}other{# адреси}}</translation> +<translation id="6671497123040790595"><ph name="MANAGER" /> налаштовує керування</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">Щоб почати синхронізацію, введіть парольну фразу</translation> <translation id="6675665718701918026">Маніпулятор підключено</translation> @@ -5202,6 +5214,7 @@ <translation id="6680442031740878064">Доступно: <ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">Оцінити</translation> <translation id="6681668084120808868">Зробити фото</translation> +<translation id="6683087162435654533">Відновити всі вкладки</translation> <translation id="6683948477137300040">Показати спливаюче вікно з номером EID пристрою та QR-кодом</translation> <translation id="6684827949542560880">Завантажуються останні оновлення</translation> <translation id="668599234725812620">Відкрити Google Play</translation> @@ -5771,6 +5784,7 @@ <translation id="7308643132139167865">Мови веб-сайтів</translation> <translation id="7309257895202129721">Показати &елементи керування</translation> <translation id="7310598146671372464">Не вдалося ввійти. Сервер не підтримує вказані типи шифрування Kerberos. Зв’яжіться з адміністратором.</translation> +<translation id="7315168816273861089">Увімкнути оверлей елементів керування вікном</translation> <translation id="7320213904474460808">Мережа за умовчанням</translation> <translation id="7321545336522791733">Сервер недоступний</translation> <translation id="7324297612904500502">Форум бета-версії</translation> @@ -5947,7 +5961,9 @@ <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> зареєстровано для корпоративного керування.</translation> <translation id="7507207699631365376">Переглянути <ph name="BEGIN_LINK" />політику конфіденційності<ph name="END_LINK" /> цього постачальника</translation> <translation id="7507930499305566459">Сертифікат відповідача статусу</translation> +<translation id="7509097596023256288">Налаштовується керування</translation> <translation id="7509246181739783082">Підтвердьте свою особу</translation> +<translation id="7511415964832680006">Коли ці функції ввімкнено, сайти можуть використовувати зазначені технології, що забезпечують конфіденційність, щоб пропонувати контент і сервіси. Це альтернативні способи вирішення проблеми збору даних про дії користувачів на різних сайтах. З часом з’являтимуться інші пробні функції.</translation> <translation id="7513029293694390567">Автоматично входити в облікові записи на веб-сайтах за допомогою збережених облікових даних. Якщо цю функцію вимкнено, потрібно підтверджувати облікові дані під час кожного входу на веб-сайтах.</translation> <translation id="7514239104543605883">Скопіювати на пристрій</translation> <translation id="7514365320538308">Завантажити</translation> @@ -6308,6 +6324,8 @@ <translation id="7876027585589532670">Не вдалося змінити ярлик</translation> <translation id="7877451762676714207">Невідома помилка сервера. Повторіть спробу чи зв’яжіться з адміністратором сервера.</translation> <translation id="7879631849810108578">Комбінацію клавіш установлено: <ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">Якщо цю технологію ввімкнено й активовано, Chrome використовує історію веб-перегляду за останні 7 днів, щоб визначити, до якої групи чи "когорти" ви належите. Рекламодавці можуть вибирати оголошення для тієї чи іншої групи. Історія веб-перегляду конфіденційно зберігається на вашому пристрої. Ця пробна версія доступна лише в + <ph name="BEGIN_LINK" />певних регіонах<ph name="END_LINK" />.</translation> <translation id="7880823633812189969">Локальні дані буде видалено під час перезапуску</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">Переглянути обліковий запис</translation> @@ -6467,6 +6485,7 @@ <translation id="804786196054284061">Ліцензійна угода кінцевого користувача</translation> <translation id="8048977114738515028">Створити ярлик на робочому столі, щоб відразу переходити до цього профілю</translation> <translation id="8049029041626250638">Підключіть клавіатуру або мишу. Якщо ви користуєтеся пристроями з Bluetooth, переконайтеся, що вони готові до підключення.</translation> +<translation id="8049184478152619004">Введіть PUK-код</translation> <translation id="8049705080247101012">Система Google позначила розширення <ph name="EXTENSION_NAME" /> як шкідливе та заборонила встановлення</translation> <translation id="8049948037269924837">Зворотне прокручування на сенсорній панелі</translation> <translation id="8050038245906040378">Підписування комерційного коду Microsoft</translation> @@ -6503,6 +6522,7 @@ <translation id="8082106343289440791">Підключитися до пристрою "<ph name="DEVICE_NAME" />"?</translation> <translation id="8082390128630131497">Якщо вимкнути налагодження ADB, усі заводські налаштування пристрою <ph name="DEVICE_TYPE" /> буде скинуто. Усі облікові записи користувачів і локальні дані буде видалено.</translation> <translation id="8084114998886531721">Збережений пароль</translation> +<translation id="8084510406207562688">Відновити всі вкладки</translation> <translation id="8086015605808120405">Налаштування принтера <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">Налаштувати принтер <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{Цей файл зашифровано. Попросіть власника файлу розшифрувати його.}one{Деякі з цих файлів зашифровано. Попросіть власника файлів розшифрувати їх.}few{Деякі з цих файлів зашифровано. Попросіть власника файлів розшифрувати їх.}many{Деякі з цих файлів зашифровано. Попросіть власника файлів розшифрувати їх.}other{Деякі з цих файлів зашифровано. Попросіть власника файлів розшифрувати їх.}}</translation> @@ -6544,6 +6564,7 @@ <translation id="8119438628456698432">Створюються файли журналу…</translation> <translation id="811994229154425014">Замінювати подвійний пробіл крапкою</translation> <translation id="8120505434908124087">Установити профіль eSIM-карти</translation> +<translation id="812260729110117038">Рекламодавці й видавці можуть досліджувати ефективність оголошень, не відстежуючи ваші дії на різних сайтах.</translation> <translation id="8123590694679414600">Дані зашифровано за допомогою парольної фрази для синхронізації <ph name="TIME" />. Це не стосується способів оплати й адрес із Google Pay.</translation> <translation id="81238879832906896">Жовто-біла квітка</translation> @@ -6581,6 +6602,7 @@ <translation id="816055135686411707">Помилка під час налаштування довіри сертифікату</translation> <translation id="8160775796528709999">Щоб переглядати живі субтитри до аудіо чи відео, увімкніть їх у налаштуваннях</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">За допомогою <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> команда Chrome розробляє нові технології, які захистять вас від механізмів відстеження на різних сайтах, зберігаючи відкриту мережу.</translation> <translation id="8161293209665121583">Режим читання для веб-сторінок</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Перемістити вкладку в нове вікно}one{Перемістити вкладки в нове вікно}few{Перемістити вкладки в нове вікно}many{Перемістити вкладки в нове вікно}other{Перемістити вкладки в нове вікно}}</translation> <translation id="8165997195302308593">Переадресація порту в Crostini</translation> @@ -6782,7 +6804,6 @@ <translation id="8393700583063109961">Надіслати повідомлення</translation> <translation id="8397825320644530257">Від'єднати підключений телефон</translation> <translation id="8398877366907290961">Продовжити</translation> -<translation id="8400146488506985033">Керувати користувачами</translation> <translation id="8401432541486058167">Укажіть PIN-код, зв'язаний із вашою розумною карткою.</translation> <translation id="8404893580027489425">Сканер відбитків пальців розташовано на правому боці пристрою <ph name="DEVICE_TYPE" />. Злегка торкніться його будь-яким пальцем.</translation> <translation id="8405046151008197676">Отримайте інформацію про останнє оновлення</translation> @@ -6838,7 +6859,6 @@ <translation id="8465444703385715657">Щоб запустити плагін <ph name="PLUGIN_NAME" />, потрібен ваш дозвіл</translation> <translation id="8466417995783206254">На цій вкладці відтворюється відео в режимі "картинка в картинці".</translation> <translation id="8467326454809944210">Вибрати іншу мову</translation> -<translation id="8470214316007448308">Інші люди</translation> <translation id="8470513973197838199">Збережені паролі для <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Сайти зазвичай підключаються до пристроїв USB для роботи таких функцій, як друк документів або зберігання файлів на пристрої пам'яті</translation> <translation id="8471959340398751476">Знижки вимкнено. Ви можете ввімкнути їх у меню налаштувань.</translation> @@ -7025,6 +7045,7 @@ <translation id="8676374126336081632">Видалити введений текст</translation> <translation id="8676770494376880701">Зарядний пристрій низької потужності підключено</translation> <translation id="8677212948402625567">Згорнути все...</translation> +<translation id="867767487203716855">Наступне оновлення</translation> <translation id="8677859815076891398">Немає альбомів. Створіть їх у <ph name="LINK_BEGIN" />Google Фото<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Вкладки не зменшуються</translation> <translation id="8678933587484842200">Як запускати цей додаток?</translation> @@ -7113,7 +7134,6 @@ <translation id="87646919272181953">Альбом Google Фото</translation> <translation id="8767621466733104912">Автоматично оновлювати Chrome для всіх користувачів</translation> <translation id="8770406935328356739">Кореневий каталог розширення</translation> -<translation id="8770507190024617908">Керувати користувачами</translation> <translation id="8771300903067484968">Фон початкової сторінки було скинуто. Тепер це фон за умовчанням.</translation> <translation id="8773302562181397928">Зберегти принтер <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Підтвердити відновлення</translation> @@ -7377,6 +7397,7 @@ <translation id="9031549947500880805">Створювати резервні копії на Google Диску. Легко відновлюйте дані чи переносьте їх на інші пристрої. Резервні копії містять дані додатків.</translation> <translation id="9033765790910064284">Усе одно продовжити</translation> <translation id="9033857511263905942">&Вставити</translation> +<translation id="9035689366572880647">Введіть поточний PIN-код</translation> <translation id="9037640663275993951">Пристрій заборонений</translation> <translation id="9037818663270399707">З'єднання неконфіденційне в усьому мережевому трафіку</translation> <translation id="9037965129289936994">Показати оригінал</translation> @@ -7452,6 +7473,7 @@ <translation id="9112748030372401671">Змінювати фоновий малюнок</translation> <translation id="9112786533191410418">Файл <ph name="FILE_NAME" /> може бути небезпечним. Надіслати його компанії Google на перевірку?</translation> <translation id="9112987648460918699">Знайти...</translation> +<translation id="9113240369465613386">Лише непарні сторінки</translation> <translation id="9114663181201435112">Простий вхід</translation> <translation id="9115675100829699941">&Закладки</translation> <translation id="9116465289595958864">Востаннє змінені</translation> @@ -7606,6 +7628,7 @@ <translation id="991413375315957741">датчики руху та світла</translation> <translation id="992032470292211616">Розширення, служби й теми можуть зашкодити вашому пристрою. Справді продовжити?</translation> <translation id="992256792861109788">Рожевий</translation> +<translation id="992401651319295351">Залишилося спроб: <ph name="RETRIES" />. Ви не зможете користуватися цією мережею, доки не налаштуєте новий PIN-код.</translation> <translation id="992592832486024913">Вимкнути ChromeVox (голосові підказки)</translation> <translation id="992778845837390402">Триває резервне копіювання Linux</translation> <translation id="993540765962421562">Триває встановлення</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 43c02faf..7dc7db4 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -2860,7 +2860,6 @@ <translation id="4035758313003622889">&ٹاسک مینیجر</translation> <translation id="4036778507053569103">سرور سے ڈاؤن لوڈ کردہ پالیسی غلط ہے۔</translation> <translation id="4037084878352560732">گھوڑا</translation> -<translation id="4037889604535939429">شخص کی ترمیم کریں</translation> <translation id="4040753847560036377">غلط PUK</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{صفحہ سے باہر نکلیں}other{صفحات سے باہر نکلیں}}</translation> <translation id="4044612648082411741">اپنا سرٹیفکیٹ پاس ورڈ درج کریں</translation> @@ -4328,7 +4327,6 @@ <translation id="5709557627224531708">Chrome کو اپنے ڈیفالٹ براؤزر کے بطور سیٹ کریں</translation> <translation id="5711983031544731014">غیر مقفل کرنے سے قاصر۔ اپنا پاس ورڈ درج کریں۔</translation> <translation id="5712153969432126546">سائٹس کبھی کبھار دستاویزات، معاہدوں اور فارمز جیسی PDFs شائع کرتی ہیں</translation> -<translation id="5712323955984474772">اگلا اپ ڈیٹ</translation> <translation id="5715711091495208045">پلگ ان بروکر: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">ڈیفالٹ سرچ انجنز</translation> <translation id="5719637365829998022">QR کوڈ کو اسکین کیا گیا ہے۔</translation> @@ -5100,7 +5098,6 @@ <translation id="6563469144985748109">آپ کے مینیجر نے ابھی تک اسے منظور نہیں کیا ہے</translation> <translation id="6568283005472142698">ٹیب تلاش</translation> <translation id="6569911211938664415">پاس ورڈز آپ کے Google اکاؤنٹ (<ph name="ACCOUNT" />) میں محفوظ ہو جاتے ہیں لہذا آپ انہیں کسی بھی آلہ پر استعمال کر سکتے ہیں۔</translation> -<translation id="6569934958368283244">دیگر لوگ</translation> <translation id="6573497332121198392">شارٹ کٹ نہیں ہٹایا جا سکتا</translation> <translation id="657402800789773160">یہ صفحہ &دوبارہ لوڈ کریں</translation> <translation id="6577284282025554716">ڈاؤن لوڈ منسوخ ہو گیا: <ph name="FILE_NAME" /></translation> @@ -6786,7 +6783,6 @@ <translation id="8393700583063109961">پیغام بھیجیں</translation> <translation id="8397825320644530257">منسلک کردہ فون کو غیر منسلک کریں</translation> <translation id="8398877366907290961">بہر صورت آگے بڑھیں</translation> -<translation id="8400146488506985033">لوگوں کا نظم کریں</translation> <translation id="8401432541486058167">وہ PIN فراہم کریں جو آپ کے اسمارٹ کارڈ کے ساتھ وابستہ ہے۔</translation> <translation id="8404893580027489425">فنگر پرنٹ سینسر آپ کے <ph name="DEVICE_TYPE" /> کے دائیں ہاتھ کی طرف موجود ہے۔ اسے کسی بھی انگلی سے ہلکے سے ٹچ کریں۔</translation> <translation id="8405046151008197676">تازہ ترین اپ ڈیٹ سے ہائی لائٹس حاصل کریں</translation> @@ -6842,7 +6838,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> کو چلنے کیلئے آپ کی اجازت درکار ہے</translation> <translation id="8466417995783206254">یہ ٹیب تصویر میں تصویر وضع میں ویڈیو چلا رہا ہے۔</translation> <translation id="8467326454809944210">کسی دوسری زبان کا انتخاب کریں</translation> -<translation id="8470214316007448308">دیگر لوگ</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> کے لیے محفوظ کردہ پاسورڈز</translation> <translation id="8471525937465764768">سائٹس عام طور دستاویز پرنٹ کرنے یا اسٹوریج آلہ پر محفوظ کرنے جیسی خصوصیات کے لیے USB آلات سے منسلک ہوتی ہیں</translation> <translation id="8471959340398751476">رعایتوں کی سہولیات آف ہیں۔ آپ انہیں حسب ضرورت مینو میں آن کر سکتے ہیں</translation> @@ -7029,6 +7024,7 @@ <translation id="8676374126336081632">ان پٹ صاف کریں</translation> <translation id="8676770494376880701">کم پاور چارجر منسلک ہوگیا</translation> <translation id="8677212948402625567">سبھی کو سکیڑیں…</translation> +<translation id="867767487203716855">اگلا اپ ڈیٹ</translation> <translation id="8677859815076891398">کوئی البم نہیں ہے۔ <ph name="LINK_BEGIN" />Google تصاویر<ph name="LINK_END" /> میں ایک البم تخلیق کریں۔</translation> <translation id="8678582529642151449">ٹیبز چھوٹے نہیں کئے جاتے</translation> <translation id="8678933587484842200">آپ اس ایپلیکیشن کو کس طرح لانچ کرنا چاہیں گے؟</translation> @@ -7117,7 +7113,6 @@ <translation id="87646919272181953">Google تصاویر کا البم</translation> <translation id="8767621466733104912">سبھی صارفین کیلئے Chrome کو خودکار طور پر اپ ڈیٹ کریں</translation> <translation id="8770406935328356739">ایکسٹینشن روٹ ڈائرکٹری</translation> -<translation id="8770507190024617908">لوگوں کا نظم کریں</translation> <translation id="8771300903067484968">ابتدائی صفحہ کے پس منظر کو ڈیفالٹ پس منظر پر دوبارہ ترتیب دے دیا گیا ہے۔</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> محفوظ کریں</translation> <translation id="8774379074441005279">بحالی کی تصدیق کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 449939a1..60b4bda 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -2571,6 +2571,7 @@ <translation id="3742666961763734085">Bu nomdagi tashkilot qismi topilmadi. Qayta urining.</translation> <translation id="3744111561329211289">Orqa fonda sinxronlash</translation> <translation id="3747077776423672805">Ilovalarni oʻchirib tashlash uchun Sozlamalar > Google Play Market > Android sozlamalari boshqaruvi > Ilovalar yoki Ilovalar menejeri menyusiga kiring. Kerakli ilovani tanlab (ilovani topish uchun ekranni oʻng yoki chapga suring), “Oʻchirib tashlash” yoki “Faolsizlantirish” tugmasini bosing.</translation> +<translation id="3747220812138541072">Takliflar yozish vaqtida qator ichida chiqsin</translation> <translation id="3748706263662799310">Xatolik haqida xabar berish</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3753033997400164841">Bir marta saqlash. Doim ishlatish</translation> @@ -2864,7 +2865,6 @@ <translation id="4035758313003622889">&Vazifalar menejeri</translation> <translation id="4036778507053569103">Serverdan yaroqsiz siyosat yuklab olindi.</translation> <translation id="4037084878352560732">Toychoq</translation> -<translation id="4037889604535939429">Profilni almashtirish</translation> <translation id="4040753847560036377">PUK kod xato</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Sahifani yopish}other{Sahifalarni yopish}}</translation> <translation id="4044612648082411741">Sertifikat parolini kiriting</translation> @@ -3261,6 +3261,7 @@ <translation id="4510614391273086606">Linux fayllari va ilovalari zaxiralangan nusxadan tiklanmoqda.</translation> <translation id="451102079304155829">savatchalar</translation> <translation id="4513275008300099962">Oyna ustidan boshqaruv tugmalari chiqishini faolsizlantirish</translation> +<translation id="4513872120116766993">Matn kiritishda takliflar</translation> <translation id="4513946894732546136">Fikr-mulohaza</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> asosida ishlaydi</translation> <translation id="4514610446763173167">Videoni ijro yoki pauza qilish</translation> @@ -4333,7 +4334,6 @@ <translation id="5709557627224531708">Chromeni standart brauzer etib tayinlang</translation> <translation id="5711983031544731014">Qulfdan chiqarib bo‘lmadi. Parolni kiriting.</translation> <translation id="5712153969432126546">Baʼzan saytlar hujjatlar, shartnomalar va shakllarni PDF formatda chop etadi.</translation> -<translation id="5712323955984474772">Keyingi yangilanish</translation> <translation id="5715711091495208045">Vositachi: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Standart qidiruv tizimlari</translation> <translation id="5719637365829998022">QR kod skanerlandi.</translation> @@ -4424,6 +4424,7 @@ <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> qurilmasiga telefoningizni ulang. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="5826993284769733527">Yarim shaffof</translation> <translation id="5827266244928330802">Safari</translation> +<translation id="5827733057563115968">Keyingi soʻzni taklif qilish</translation> <translation id="5828545842856466741">Profil kiritish...</translation> <translation id="5828633471261496623">Chop etilmoqda...</translation> <translation id="5830720307094128296">Sahifani &saqlab olish...</translation> @@ -5105,7 +5106,6 @@ <translation id="6563469144985748109">Administrator tomonidan hali tasdiqlanmagan</translation> <translation id="6568283005472142698">Varaqlar ichidan qidirish</translation> <translation id="6569911211938664415">Google hisobingizga (<ph name="ACCOUNT" />) saqlangan parollardan har qanday qurilmada foydalanishingiz mumkin</translation> -<translation id="6569934958368283244">Boshqalar</translation> <translation id="6573497332121198392">Yorliq olib tashlanmadi</translation> <translation id="657402800789773160">&Sahifani yangilash</translation> <translation id="6577284282025554716">Yuklanma bekor qilindi: <ph name="FILE_NAME" /></translation> @@ -6294,6 +6294,7 @@ <translation id="78526636422538552">Boshqa Google hisoblarini qoʻshish xususiyati oʻchiq.</translation> <translation id="7853747251428735">Qo‘shimcha &vositalar</translation> <translation id="7855678561139483478">Varaqni yangi oynaga olish</translation> +<translation id="7857093393627376423">Matn takliflari</translation> <translation id="7857117644404132472">Istisno qo‘shish</translation> <translation id="7857949311770343000">Bu boshqa tezkor havolalar sahifasimi?</translation> <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> @@ -6790,7 +6791,6 @@ <translation id="8393700583063109961">Xabar yuborish</translation> <translation id="8397825320644530257">Ulangan telefonni uzish</translation> <translation id="8398877366907290961">Davom etish</translation> -<translation id="8400146488506985033">Foydalanuvchilarni boshqarish</translation> <translation id="8401432541486058167">Smart kartangiz PIN kodini kiriting.</translation> <translation id="8404893580027489425">Barmoq izi sensori <ph name="DEVICE_TYPE" /> qurilmasining oʻng orqasida joylashgan. Istalgan barmoq bilan unga asta tegining.</translation> <translation id="8405046151008197676">Oxirgi yangilanishdagi asosiy oʻzgarishlar</translation> @@ -6846,7 +6846,6 @@ <translation id="8465444703385715657">“<ph name="PLUGIN_NAME" />” plaginni ishga tushirish uchun ruxsat kerak</translation> <translation id="8466417995783206254">Bu varaqdagi video tasvir ustida tasvir rejimida ijro etilmoqda.</translation> <translation id="8467326454809944210">Boshqa tilni tanlang</translation> -<translation id="8470214316007448308">Boshqalar</translation> <translation id="8470513973197838199"><ph name="ORIGIN" /> uchun saqlangan parollar</translation> <translation id="8471525937465764768">Saytlar odatda hujjatni chop etish yoki tashqi xotiraga saqlash maqsadida USB qurilmalarga ulanadi</translation> <translation id="8471959340398751476">Chegirmalar yoqilmagan. Ularni menyuni moslash orqali yoqish mumkin</translation> @@ -7033,6 +7032,7 @@ <translation id="8676374126336081632">Tozalash</translation> <translation id="8676770494376880701">Kam quvvatli zaryadlash vositasi</translation> <translation id="8677212948402625567">Barchasini yig‘ish...</translation> +<translation id="867767487203716855">Keyingi yangilanish</translation> <translation id="8677859815076891398">Albomlar mavjud emas. <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" /> orqali albom yarating.</translation> <translation id="8678582529642151449">Varaqlar kichraymaydi</translation> <translation id="8678933587484842200">Bu ilova qanday ishga tushirilsin?</translation> @@ -7121,7 +7121,6 @@ <translation id="87646919272181953">Google Photos albomi</translation> <translation id="8767621466733104912">Barcha Chrome foydalanuvchilari uchun avtomatik yangilash</translation> <translation id="8770406935328356739">Kengaytma tub katalogi</translation> -<translation id="8770507190024617908">Foydalanuvchilarni boshqarish</translation> <translation id="8771300903067484968">Bosh sahifadagi fon rasmi standart fon rasm etib tayinlandi.</translation> <translation id="8773302562181397928"><ph name="PRINTER_NAME" /> printerini saqlash</translation> <translation id="8774379074441005279">Tiklashni tasdiqlang</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 87f2be6..0deef74 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -2876,7 +2876,6 @@ <translation id="4035758313003622889">&Trình quản lý tác vụ</translation> <translation id="4036778507053569103">Chính sách được tải xuống từ máy chủ là không hợp lệ.</translation> <translation id="4037084878352560732">Ngựa</translation> -<translation id="4037889604535939429">Chỉnh sửa người</translation> <translation id="4040753847560036377">Mã PUK không chính xác</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Thoát khỏi trang}other{Thoát khỏi trang}}</translation> <translation id="4044612648082411741">Nhập mật khẩu chứng chỉ của bạn</translation> @@ -4345,7 +4344,6 @@ <translation id="5709557627224531708">Đặt Chrome làm trình duyệt mặc định</translation> <translation id="5711983031544731014">Không mở khóa được. Hãy nhập mật khẩu của bạn.</translation> <translation id="5712153969432126546">Đôi khi, trang web sẽ xuất bản các tệp PDF, như tài liệu, hợp đồng và biểu mẫu</translation> -<translation id="5712323955984474772">Thời gian cập nhật tiếp theo</translation> <translation id="5715711091495208045">Trình môi giới plugin: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Công cụ tìm kiếm mặc định</translation> <translation id="5719637365829998022">Đã quét xong mã QR.</translation> @@ -5117,7 +5115,6 @@ <translation id="6563469144985748109">Người quản lý của bạn chưa phê duyệt trang web</translation> <translation id="6568283005472142698">Tìm thẻ</translation> <translation id="6569911211938664415">Các mật khẩu được lưu trong Tài khoản Google (<ph name="ACCOUNT" />) của bạn để bạn có thể sử dụng trên bất cứ thiết bị nào</translation> -<translation id="6569934958368283244">Người khác</translation> <translation id="6573497332121198392">Không thể xóa lối tắt</translation> <translation id="657402800789773160">&Tải lại trang này</translation> <translation id="6577284282025554716">Đã hủy tải xuống: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Gửi tin nhắn</translation> <translation id="8397825320644530257">Ngắt kết nối điện thoại đã kết nối</translation> <translation id="8398877366907290961">Tiếp tục truy cập</translation> -<translation id="8400146488506985033">Quản lý mọi người</translation> <translation id="8401432541486058167">Hãy cung cấp mã PIN liên kết với thẻ thông minh của bạn.</translation> <translation id="8404893580027489425">Cảm biến vân tay nằm ở bên phải <ph name="DEVICE_TYPE" />. Hãy chạm nhẹ ngón tay bất kỳ vào đó.</translation> <translation id="8405046151008197676">Xem những điểm nổi bật của bản cập nhật mới nhất</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> cần có sự cho phép của bạn để chạy</translation> <translation id="8466417995783206254">Thẻ này đang phát video ở chế độ hình trong hình.</translation> <translation id="8467326454809944210">Chọn ngôn ngữ khác</translation> -<translation id="8470214316007448308">Người khác</translation> <translation id="8470513973197838199">Đã lưu mật khẩu cho <ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Các trang web thường kết nối với thiết bị USB để áp dụng những tính năng như in tài liệu hoặc lưu vào thiết bị lưu trữ</translation> <translation id="8471959340398751476">Tính năng nhận chiết khấu đang tắt. Bạn có thể bật tính năng này trong trình đơn tùy chỉnh</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Xóa văn bản nhập</translation> <translation id="8676770494376880701">Đã kết nối bộ sạc công suất thấp</translation> <translation id="8677212948402625567">Thu gọn tất cả...</translation> +<translation id="867767487203716855">Thời gian cập nhật tiếp theo</translation> <translation id="8677859815076891398">Không có album nào. Hãy tạo một album trong <ph name="LINK_BEGIN" />Google Photos<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Thẻ sẽ không thu gọn</translation> <translation id="8678933587484842200">Bạn muốn ứng dụng này khởi động như thế nào?</translation> @@ -7135,7 +7131,6 @@ <translation id="87646919272181953">Album trên Google Photos</translation> <translation id="8767621466733104912">Tự động cập nhật Chrome cho tất cả người dùng</translation> <translation id="8770406935328356739">Thư mục gốc của tiện ích</translation> -<translation id="8770507190024617908">Quản lý mọi người</translation> <translation id="8771300903067484968">Nền của trang bắt đầu đã được đặt lại thành nền mặc định.</translation> <translation id="8773302562181397928">Lưu <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Xác nhận khôi phục</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index fb0defbd..35d038e2 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -697,6 +697,7 @@ <translation id="173628468822554835">知道了。默认情况下,您访问的新网站不会向您发送通知。</translation> <translation id="1736419249208073774">探索</translation> <translation id="1737968601308870607">提交错误</translation> +<translation id="1739684185846730053">Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部分区域使用。现阶段,网站可在继续使用第三方 Cookie 等当前网络技术的同时试用 Privacy Sandbox。</translation> <translation id="174123615272205933">自定义</translation> <translation id="1741314857973421784">继续</translation> <translation id="1743570585616704562">无法识别</translation> @@ -1120,6 +1121,7 @@ <translation id="217576141146192373">无法添加打印机。请检查您打印机的配置,然后重试。</translation> <translation id="2177950615300672361">无痕模式标签页:<ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA 泄漏</translation> +<translation id="2179416702468739594">正在查找可用的配置文件。这可能会导致您的移动网络连接断开几分钟。</translation> <translation id="2182058453334755893">已复制到您的剪贴板</translation> <translation id="2184515124301515068">让 Chrome 选择何时允许网站播放声音(推荐)</translation> <translation id="2186711480981247270">收到了另一设备分享的页面</translation> @@ -1385,6 +1387,7 @@ <translation id="2469375675106140201">自定义拼写检查</translation> <translation id="247051149076336810">文件共享网址</translation> <translation id="2470702053775288986">已停用不支持的扩展程序</translation> +<translation id="2470939964922472929">您输错 PIN 码的次数过多。若要设置一个新 PIN 码,请输入您的运营商提供的 8 位数个人解锁密钥 (PUK)。</translation> <translation id="2471469610750100598">黑色(默认)</translation> <translation id="2471506181342525583">已允许使用位置信息</translation> <translation id="2473195200299095979">翻译此页</translation> @@ -1680,6 +1683,7 @@ <translation id="2785873697295365461">文件描述符数量</translation> <translation id="2787354132612937472">-</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">群组编号</translation> <translation id="2789486458103222910">确定</translation> <translation id="2791529110887957050">移除 Linux</translation> <translation id="2791952154587244007">出现错误。自助服务终端应用在此设备上不能自动启动。</translation> @@ -1981,6 +1985,7 @@ <translation id="310671807099593501">该网站正在使用蓝牙</translation> <translation id="3108931485517391283">无法接收</translation> <translation id="3109724472072898302">已收起</translation> +<translation id="3113592018909187986">您还有 1 次尝试机会。在设置新 PIN 码之前,您将无法使用此网络。</translation> <translation id="311394601889664316">不允许网站修改您设备上的文件或文件夹</translation> <translation id="3115147772012638511">正在等待存入缓存...</translation> <translation id="3115580024857770654">全部收起</translation> @@ -2269,6 +2274,7 @@ <translation id="3440663250074896476">显示可对“<ph name="BOOKMARK_NAME" />”执行的更多操作</translation> <translation id="3441653493275994384">屏幕</translation> <translation id="3441663102605358937">请重新登录 <ph name="ACCOUNT" /> 以验证此帐号</translation> +<translation id="3444641828375597683">广告主和发布商可使用 FLoC,具体说明见本页中的下文。</translation> <translation id="3445047461171030979">Google 助理快速解答</translation> <translation id="3445288400492335833"><ph name="MINUTES" />分钟</translation> <translation id="3445925074670675829">USB-C 设备</translation> @@ -2850,7 +2856,7 @@ <translation id="4035758313003622889">任务管理器(&T)</translation> <translation id="4036778507053569103">从服务器下载的政策无效。</translation> <translation id="4037084878352560732">马</translation> -<translation id="4037889604535939429">修改联系人</translation> +<translation id="4040753847560036377">PUK 不正确</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{退出网页}other{退出网页}}</translation> <translation id="4044612648082411741">输入您的证书密码</translation> <translation id="4044708573046946214">屏幕锁定密码</translation> @@ -3059,6 +3065,7 @@ <translation id="4297813521149011456">显示屏旋转</translation> <translation id="4299022904780065004">打开新的无痕式窗口(&I)</translation> <translation id="4301671483919369635">此页面可修改文件</translation> +<translation id="4302605047395093221">任何使用该设备的用户都将需要输入 PIN 码,才能连接到此移动网络</translation> <translation id="4303079906735388947">为您的安全密钥设置一个新 PIN 码</translation> <translation id="4305402730127028764">复制到“<ph name="DEVICE_NAME" />”</translation> <translation id="4305817255990598646">切换</translation> @@ -3243,6 +3250,7 @@ <translation id="4510479820467554003">家长帐号列表</translation> <translation id="4510614391273086606">正在将 Linux 文件和应用恢复为备份状态。</translation> <translation id="451102079304155829">购物车</translation> +<translation id="4513275008300099962">禁止窗口控件叠加</translation> <translation id="4513946894732546136">反馈</translation> <translation id="451407183922382411">由 <ph name="COMPANY_NAME" /> 提供技术支持</translation> <translation id="4514610446763173167">在播放视频和暂停视频之间切换</translation> @@ -4315,7 +4323,6 @@ <translation id="5709557627224531708">将 Chrome 设为您的默认浏览器</translation> <translation id="5711983031544731014">无法解锁,请输入密码。</translation> <translation id="5712153969432126546">网站有时会发布 PDF 文件,例如文档、合同和表单</translation> -<translation id="5712323955984474772">下一次更新</translation> <translation id="5715711091495208045">插件代理程序:<ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">默认搜索引擎</translation> <translation id="5719637365829998022">二维码已扫描完毕。</translation> @@ -4587,10 +4594,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - 已连接 USB 设备</translation> <translation id="6028117231645531007">添加指纹</translation> <translation id="6031600495088157824">在工具栏中显示输入选项</translation> +<translation id="6032091552407840792">这项试用版功能仅在<ph name="BEGIN_LINK" />部分区域<ph name="END_LINK" />有效。</translation> <translation id="6032715498678347852">若要授权某个扩展程序访问此网站,请点击该扩展程序。</translation> <translation id="6032912588568283682">文件系统</translation> <translation id="603539183851330738">用于撤消自动更正的按钮。还原为“<ph name="TYPED_WORD" />”。若要启用此按钮,请按 Enter 键;若要关闭,请按 Esc 键。</translation> <translation id="6038929619733116134">屏蔽会展示侵扰性或误导性广告的网站</translation> +<translation id="603895874132768835">在设置新 PIN 码之前,您将无法使用此网络</translation> <translation id="6039651071822577588">网络属性字典格式不正确</translation> <translation id="6040143037577758943">关闭</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google 的位置信息服务会使用 WLAN、移动网络和传感器等来源协助估测您设备所在的位置。<ph name="END_PARAGRAPH1" /> @@ -4838,6 +4847,7 @@ <translation id="6292699686837272722">将标签页收缩至中等宽度</translation> <translation id="6295158916970320988">所有网站</translation> <translation id="6295855836753816081">正在保存…</translation> +<translation id="6296410173147755564">PUK 无效</translation> <translation id="6298962879096096191">使用 Google Play 安装 Android 应用</translation> <translation id="6300177430812514606">不允许完成数据收发操作</translation> <translation id="630065524203833229">退出(&X)</translation> @@ -4884,6 +4894,7 @@ <translation id="6340526405444716530">个性化</translation> <translation id="6341850831632289108">检测您所在的地理位置</translation> <translation id="6342069812937806050">刚刚</translation> +<translation id="6343003829431264373">仅限页码为偶数的页面</translation> <translation id="6344170822609224263">网络连接的访问权限列表</translation> <translation id="6344576354370880196">已保存的打印机</translation> <translation id="6345418402353744910">代理 <ph name="PROXY" /> 要求您提供用户名和密码,以方便管理员配置您的网络</translation> @@ -5083,7 +5094,6 @@ <translation id="6563469144985748109">您的管理员尚未批准此网站</translation> <translation id="6568283005472142698">标签页搜索</translation> <translation id="6569911211938664415">系统会将密码保存在您的 Google 帐号 (<ph name="ACCOUNT" />) 中,以便您在任意设备上使用</translation> -<translation id="6569934958368283244">其他人</translation> <translation id="6573497332121198392">无法移除快捷方式</translation> <translation id="657402800789773160">重新加载此页(&R)</translation> <translation id="6577284282025554716">已取消下载“<ph name="FILE_NAME" />”</translation> @@ -5132,6 +5142,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> 包含敏感或危险内容。请让此文件的所有者解决这一问题。</translation> <translation id="6624687053722465643">杯型蛋糕</translation> <translation id="6628328486509726751">上传时间:<ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">请输入至少 4 位数字</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" />希望获得某个证书的永久访问权限,以便代表您进行自我身份验证。</translation> <translation id="6635362468090274700">任何人都无法与您分享内容,除非您将自己设为可见。<ph name="BR" /><ph name="BR" />若要将自己设为暂时可见,请打开状态区,然后开启“附近分享”的高可见度模式。</translation> <translation id="6635944431854494329">所有者可以通过“设置”>“高级”>“自动向 Google 发送诊断数据和使用情况数据”来控制这项功能。</translation> @@ -5170,6 +5181,7 @@ <translation id="6664774537677393800">打开您的个人资料时出了点问题。请先退出,然后重新登录。</translation> <translation id="6670142487971298264">现在可以使用“<ph name="APP_NAME" />”了</translation> <translation id="6671320560732140690">{COUNT,plural, =1{1 个地址}other{# 个地址}}</translation> +<translation id="6671497123040790595">正在设置由 <ph name="MANAGER" /> 管理</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">若要开始同步,请输入您的密码</translation> <translation id="6675665718701918026">已连接指针设备</translation> @@ -5178,6 +5190,7 @@ <translation id="6680442031740878064">可用空间:<ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">语速</translation> <translation id="6681668084120808868">拍照</translation> +<translation id="6683087162435654533">恢复所有标签页(&E)</translation> <translation id="6683948477137300040">显示包含设备 EID 和二维码的弹出式窗口</translation> <translation id="6684827949542560880">正在下载最新更新</translation> <translation id="668599234725812620">打开 Google Play</translation> @@ -5747,6 +5760,7 @@ <translation id="7308643132139167865">网站语言</translation> <translation id="7309257895202129721">显示控件(&C)</translation> <translation id="7310598146671372464">未能成功登录。服务器不支持指定的 Kerberos 加密类型。请与您的管理员联系。</translation> +<translation id="7315168816273861089">允许窗口控件叠加</translation> <translation id="7320213904474460808">设置默认网络</translation> <translation id="7321545336522791733">无法连接到服务器</translation> <translation id="7324297612904500502">Chrome(测试版)论坛</translation> @@ -5923,7 +5937,9 @@ <translation id="7506541170099744506">您的 <ph name="DEVICE_TYPE" /> 已成功注册企业管理服务。</translation> <translation id="7507207699631365376">请参阅此提供商的<ph name="BEGIN_LINK" />隐私权政策<ph name="END_LINK" /></translation> <translation id="7507930499305566459">状态响应程序证书</translation> +<translation id="7509097596023256288">正在设置受管理</translation> <translation id="7509246181739783082">验证您的身份</translation> +<translation id="7511415964832680006">如果此控件已开启,网站可能会使用此处所示的隐私保护技术来提供其内容和服务。这些技术包括跨网站跟踪机制的替代方案。随着时间的推移,我们可能会添加更多试用版功能。</translation> <translation id="7513029293694390567">使用存储的凭据自动登录网站。停用该功能后,系统会在您每次登录网站时要求您进行确认。</translation> <translation id="7514239104543605883">复制到您的设备</translation> <translation id="7514365320538308">下载</translation> @@ -6284,6 +6300,7 @@ <translation id="7876027585589532670">无法修改快捷方式</translation> <translation id="7877451762676714207">未知服务器错误。请重试或与服务器管理员联系。</translation> <translation id="7879631849810108578">已成功设置快捷键:<ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">如果此控件已开启且处于有效状态,Chrome 会使用您的 7 天浏览记录来确定您所在的群组或“同类群组”。广告主可为群组选择广告。您的浏览记录会私密地保留在您的设备上。这项试用版功能仅在<ph name="BEGIN_LINK" />部分区域<ph name="END_LINK" />有效。</translation> <translation id="7880823633812189969">系统会在您重启设备时删除本地数据</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">查看帐号</translation> @@ -6443,6 +6460,7 @@ <translation id="804786196054284061">最终用户许可协议</translation> <translation id="8048977114738515028">在设备上创建桌面快捷方式,以便直接访问此个人资料</translation> <translation id="8049029041626250638">您可以连接一个键盘或鼠标。如果您使用的是蓝牙设备,请确保您的设备已准备好进行配对。</translation> +<translation id="8049184478152619004">输入个人解锁密钥 (PUK)</translation> <translation id="8049705080247101012">Google 已将“<ph name="EXTENSION_NAME" />”标记为恶意扩展程序并已阻止系统安装它</translation> <translation id="8049948037269924837">触控板反向滚动</translation> <translation id="8050038245906040378">Microsoft 商业代码签名</translation> @@ -6479,6 +6497,7 @@ <translation id="8082106343289440791">与“<ph name="DEVICE_NAME" />”配对?</translation> <translation id="8082390128630131497">停用 ADB 调试会将此<ph name="DEVICE_TYPE" />恢复出厂设置。所有用户帐号和本地数据都会被清空。</translation> <translation id="8084114998886531721">保存的密码</translation> +<translation id="8084510406207562688">恢复所有标签页(&E)</translation> <translation id="8086015605808120405">正在配置<ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">设置<ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{这个文件已加密。请让它的所有者进行解密。}other{这些文件中的部分文件已加密。请让它们的所有者进行解密。}}</translation> @@ -6520,6 +6539,7 @@ <translation id="8119438628456698432">正在生成日志文件…</translation> <translation id="811994229154425014">按两下空格键时输入句点</translation> <translation id="8120505434908124087">安装 eSIM 卡配置文件</translation> +<translation id="812260729110117038">广告主和发布商可通过一种不会对您进行跨网站跟踪的方式研究广告的效果。</translation> <translation id="8123590694679414600">数据已于 <ph name="TIME" />使用您的同步密码加密。这并不包括 Google Pay 中的付款方式和地址。</translation> <translation id="81238879832906896">黄色和白色花朵</translation> <translation id="8124313775439841391">受管理的 ONC</translation> @@ -6556,6 +6576,7 @@ <translation id="816055135686411707">设置证书信任时出错</translation> <translation id="8160775796528709999">只需在设置中启用“实时字幕”功能,即可为您的音频和视频生成字幕</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />,<ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Chrome 正在通过 <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> 开发新技术,以便既能保护开放网络又能使您免受跨网站跟踪。</translation> <translation id="8161293209665121583">使用阅读器模式显示网页</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{将标签页移至新窗口}other{将标签页移至新窗口}}</translation> <translation id="8165997195302308593">Crostini 端口转发</translation> @@ -6757,7 +6778,6 @@ <translation id="8393700583063109961">发送消息</translation> <translation id="8397825320644530257">断开已连接的手机</translation> <translation id="8398877366907290961">仍然继续</translation> -<translation id="8400146488506985033">管理用户</translation> <translation id="8401432541486058167">请提供与您的智能卡关联的 PIN 码。</translation> <translation id="8404893580027489425">指纹传感器位于您 <ph name="DEVICE_TYPE" />的右侧。请用任一根手指轻触它。</translation> <translation id="8405046151008197676">了解最近更新的主要内容</translation> @@ -6813,7 +6833,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> 需要获得您的许可才能运行</translation> <translation id="8466417995783206254">此标签页正在“画中画”模式中播放视频。</translation> <translation id="8467326454809944210">选择另一种语言</translation> -<translation id="8470214316007448308">其他人</translation> <translation id="8470513973197838199">已保存用于登录 <ph name="ORIGIN" /> 的密码</translation> <translation id="8471525937465764768">网站通常会连接到 USB 设备以实现某些功能(例如打印文档或保存到存储设备)</translation> <translation id="8471959340398751476">折扣信息查找功能已关闭。您可在“自定义”菜单中开启此功能</translation> @@ -7000,6 +7019,7 @@ <translation id="8676374126336081632">清除输入的内容</translation> <translation id="8676770494376880701">已连接低功率充电器</translation> <translation id="8677212948402625567">全部收起...</translation> +<translation id="867767487203716855">下一次更新</translation> <translation id="8677859815076891398">无任何影集。请在 <ph name="LINK_BEGIN" />Google 相册<ph name="LINK_END" />中创建一个影集。</translation> <translation id="8678582529642151449">不收缩标签页</translation> <translation id="8678933587484842200">您希望通过何种方式启动此应用?</translation> @@ -7088,7 +7108,6 @@ <translation id="87646919272181953">Google 相册中的影集</translation> <translation id="8767621466733104912">自动为所有用户更新 Chrome</translation> <translation id="8770406935328356739">扩展程序根目录</translation> -<translation id="8770507190024617908">管理用户</translation> <translation id="8771300903067484968">已将初始页背景重置为默认背景。</translation> <translation id="8773302562181397928">保存<ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">确认恢复</translation> @@ -7349,6 +7368,7 @@ <translation id="9031549947500880805">备份到 Google 云端硬盘。您随时可以轻松地恢复数据或更换设备。您的备份内容包含应用数据。</translation> <translation id="9033765790910064284">仍然继续</translation> <translation id="9033857511263905942">粘贴(&P)</translation> +<translation id="9035689366572880647">输入当前 PIN 码</translation> <translation id="9037640663275993951">不允许此设备运行虚拟机</translation> <translation id="9037818663270399707">您的连接在部分网络流量中不是私密连接</translation> <translation id="9037965129289936994">显示原始网页</translation> @@ -7424,6 +7444,7 @@ <translation id="9112748030372401671">更换您的壁纸</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> 可能含有危险内容。发送给 Google 进行扫描?</translation> <translation id="9112987648460918699">查找...</translation> +<translation id="9113240369465613386">仅限页码为齐数的页面</translation> <translation id="9114663181201435112">轻松登录</translation> <translation id="9115675100829699941">书签(&B)</translation> <translation id="9116465289595958864">上次修改时间</translation> @@ -7578,6 +7599,7 @@ <translation id="991413375315957741">移动传感器或光传感器</translation> <translation id="992032470292211616">这些扩展程序、应用和主题背景可能会危害您的设备。确定要继续下载吗?</translation> <translation id="992256792861109788">粉色</translation> +<translation id="992401651319295351">您还有 <ph name="RETRIES" /> 次尝试机会。在设置新 PIN 码之前,您将无法使用此网络。</translation> <translation id="992592832486024913">停用 ChromeVox(语音反馈)</translation> <translation id="992778845837390402">正在进行 Linux 备份</translation> <translation id="993540765962421562">正在安装</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 26514cc..0d2bebc 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -710,6 +710,7 @@ <translation id="173628468822554835">知道了。根據預設,您首次瀏覽的網站將不會傳送通知。</translation> <translation id="1736419249208073774">探索</translation> <translation id="1737968601308870607">報告錯誤</translation> +<translation id="1739684185846730053">「私隱沙箱」的試用功能仍在開發階段,目前開放地區有限。現在網站可以嘗試使用「私隱沙箱」,亦能繼續使用第三方 Cookie 等現有的網絡技術。</translation> <translation id="174123615272205933">自訂</translation> <translation id="1741314857973421784">繼續</translation> <translation id="1743570585616704562">無法識別</translation> @@ -1134,6 +1135,7 @@ <translation id="217576141146192373">無法新增打印機。請檢查打印機設定,然後再試一次。</translation> <translation id="2177950615300672361">無痕式分頁:<ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA 洩露</translation> +<translation id="2179416702468739594">正在尋找可用的設定檔。這可能導致流動網絡中斷連線幾分鐘。</translation> <translation id="2182058453334755893">已複製至剪貼簿</translation> <translation id="2184515124301515068">允許 Chrome 選擇何時讓網站播放音效 (建議)</translation> <translation id="2186711480981247270">由其他裝置分享的頁面</translation> @@ -1402,6 +1404,7 @@ <translation id="2469375675106140201">自訂拼字檢查</translation> <translation id="247051149076336810">檔案共用網址</translation> <translation id="2470702053775288986">已停用不支援的擴充功能</translation> +<translation id="2470939964922472929">您輸入錯誤 PIN 的次數過多。如要設定新 PIN,請輸入流動網絡供應商提供的 8 位數個人解鎖金鑰(PUK)。</translation> <translation id="2471469610750100598">黑色 (預設)</translation> <translation id="2471506181342525583">目前允許存取位置</translation> <translation id="2473195200299095979">翻譯這個網頁</translation> @@ -1698,6 +1701,7 @@ <translation id="2785873697295365461">檔案描述符</translation> <translation id="2787354132612937472">—</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">群組號碼</translation> <translation id="2789486458103222910">確定</translation> <translation id="2791529110887957050">移除 Linux</translation> <translation id="2791952154587244007">發生錯誤,系統無法在這部裝置上自動啟動 Kiosk 應用程式。</translation> @@ -1999,6 +2003,7 @@ <translation id="310671807099593501">網站正在使用藍牙</translation> <translation id="3108931485517391283">無法接收</translation> <translation id="3109724472072898302">已收合</translation> +<translation id="3113592018909187986">您還可嘗試 1 次。除非您設定新 PIN,否則將無法使用此網絡。</translation> <translation id="311394601889664316">不允許網站編輯裝置上的檔案或資料夾</translation> <translation id="3115147772012638511">等候快取…</translation> <translation id="3115580024857770654">收合全部</translation> @@ -2287,6 +2292,7 @@ <translation id="3440663250074896476">顯示可以對 <ph name="BOOKMARK_NAME" /> 執行嘅更多操作</translation> <translation id="3441653493275994384">螢幕</translation> <translation id="3441663102605358937">請再次登入 <ph name="ACCOUNT" /> 以驗證此帳戶</translation> +<translation id="3444641828375597683">廣告客戶和發佈者可使用 FLoC (將稍後於此頁面說明)。</translation> <translation id="3445047461171030979">「Google 助理」快速解答</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> 分鐘</translation> <translation id="3445925074670675829">USB-C 裝置</translation> @@ -2869,7 +2875,7 @@ <translation id="4035758313003622889">工作管理員(&T)</translation> <translation id="4036778507053569103">從伺服器下載的政策無效。</translation> <translation id="4037084878352560732">馬</translation> -<translation id="4037889604535939429">編輯使用者</translation> +<translation id="4040753847560036377">PUK 不正確</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{離開網頁}other{離開網頁}}</translation> <translation id="4044612648082411741">輸入您的憑證密碼</translation> <translation id="4044708573046946214">螢幕鎖定密碼</translation> @@ -3078,6 +3084,7 @@ <translation id="4297813521149011456">螢幕旋轉</translation> <translation id="4299022904780065004">新增無痕式視窗(&I)</translation> <translation id="4301671483919369635">此網頁可編輯檔案</translation> +<translation id="4302605047395093221">任何使用此裝置的人都需要輸入 PIN 才能連線至此流動網絡</translation> <translation id="4303079906735388947">為安全密鑰設定新的 PIN</translation> <translation id="4305402730127028764">複製到「<ph name="DEVICE_NAME" />」</translation> <translation id="4305817255990598646">切換</translation> @@ -3263,6 +3270,7 @@ <translation id="4510479820467554003">家長帳戶清單</translation> <translation id="4510614391273086606">正在將 Linux 檔案和應用程式還原至備份狀態。</translation> <translation id="451102079304155829">購物車</translation> +<translation id="4513275008300099962">停用視窗控制重疊</translation> <translation id="4513946894732546136">意見反映</translation> <translation id="451407183922382411">由 <ph name="COMPANY_NAME" /> 提供</translation> <translation id="4514610446763173167">喺播放同暫停影片之間切換</translation> @@ -4335,7 +4343,6 @@ <translation id="5709557627224531708">將 Chrome 設為預設瀏覽器</translation> <translation id="5711983031544731014">無法解鎖,請輸入您的密碼。</translation> <translation id="5712153969432126546">網站有時會發佈文件、合約和表格等 PDF</translation> -<translation id="5712323955984474772">下一個更新項目</translation> <translation id="5715711091495208045">外掛程式代理組件:<ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">預設搜尋引擎</translation> <translation id="5719637365829998022">掃瞄咗 QR 碼。</translation> @@ -4607,10 +4614,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - 已連接 USB 裝置</translation> <translation id="6028117231645531007">新增指紋</translation> <translation id="6031600495088157824">工具列中的輸入選項</translation> +<translation id="6032091552407840792">此試用功能只會在<ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />啟用。</translation> <translation id="6032715498678347852">如要向擴充程式授予此網站的存取權,請按一下擴充程式。</translation> <translation id="6032912588568283682">檔案系統</translation> <translation id="603539183851330738">復原自動更正內容掣。還原咗做「<ph name="TYPED_WORD" />」。㩒 Enter 掣就可以啟用,㩒 Esc 掣就可以閂。</translation> <translation id="6038929619733116134">封鎖顯示滋擾性廣告網站上的廣告</translation> +<translation id="603895874132768835">除非您設定新 PIN,否則將無法使用此網絡</translation> <translation id="6039651071822577588">網絡屬性字典格式錯誤</translation> <translation id="6040143037577758943">關閉</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google 的定位服務會使用 Wi-Fi、流動網絡和感應器等來源,以便估計您的裝置的所在位置。<ph name="END_PARAGRAPH1" /> @@ -4858,6 +4867,7 @@ <translation id="6292699686837272722">將分頁縮成中寬度</translation> <translation id="6295158916970320988">所有網站</translation> <translation id="6295855836753816081">正在儲存...</translation> +<translation id="6296410173147755564">PUK 無效</translation> <translation id="6298962879096096191">使用 Google Play 安裝 Android 應用程式</translation> <translation id="6300177430812514606">不允許完成傳送或接收資料</translation> <translation id="630065524203833229">結束(&X)</translation> @@ -4904,6 +4914,7 @@ <translation id="6340526405444716530">個人化</translation> <translation id="6341850831632289108">偵測您的實際位置</translation> <translation id="6342069812937806050">剛剛完成</translation> +<translation id="6343003829431264373">只列印雙數頁面</translation> <translation id="6344170822609224263">存取網絡連線清單</translation> <translation id="6344576354370880196">已儲存的打印機</translation> <translation id="6345418402353744910">Proxy <ph name="PROXY" /> 要求您提供使用者名稱和密碼,以便管理員設定您的網絡</translation> @@ -5103,7 +5114,6 @@ <translation id="6563469144985748109">您的管理員尚未批准瀏覽此網站</translation> <translation id="6568283005472142698">分頁搜尋</translation> <translation id="6569911211938664415">密碼會儲存在您的 Google 帳戶 (<ph name="ACCOUNT" />) 中,讓您在任何裝置上使用。</translation> -<translation id="6569934958368283244">其他人</translation> <translation id="6573497332121198392">無法移除捷徑</translation> <translation id="657402800789773160">重新載入這個網頁(&R)</translation> <translation id="6577284282025554716"><ph name="FILE_NAME" /> 已經取消下載</translation> @@ -5152,6 +5162,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> 含有敏感或危險的內容。請要求擁有者修正。</translation> <translation id="6624687053722465643">小蛋糕</translation> <translation id="6628328486509726751">上載時間:<ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">輸入最少 4 個數字</translation> <translation id="6630752851777525409">「<ph name="EXTENSION_NAME" />」要求憑證的永久存取權,以便代替您自我驗證。</translation> <translation id="6635362468090274700">您需要將自己的狀態設定為顯示,其他人才能與您分享內容。<ph name="BR" /><ph name="BR" />如要將狀態設定為暫時顯示,請開啟狀態區,再啟用「咫尺共享」分享設定。</translation> <translation id="6635944431854494329">擁有者可前往「設定」>「進階」>「自動將診斷和使用情況資料傳送給 Google」,以控制此功能。</translation> @@ -5190,6 +5201,7 @@ <translation id="6664774537677393800">開啟您的設定檔時發生錯誤,請先登出,然後再次登入。</translation> <translation id="6670142487971298264">「<ph name="APP_NAME" />」現已推出</translation> <translation id="6671320560732140690">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation> +<translation id="6671497123040790595">正在設定由 <ph name="MANAGER" /> 進行管理</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">如要開始同步處理,請輸入密碼短語</translation> <translation id="6675665718701918026">已連接指標裝置</translation> @@ -5198,6 +5210,7 @@ <translation id="6680442031740878064">可用空間:<ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">語速</translation> <translation id="6681668084120808868">拍攝相片</translation> +<translation id="6683087162435654533">還原所有分頁</translation> <translation id="6683948477137300040">顯示裝置 EID 同 QR 碼彈出式視窗</translation> <translation id="6684827949542560880">正在下載最新的更新</translation> <translation id="668599234725812620">開啟 Google Play</translation> @@ -5767,6 +5780,7 @@ <translation id="7308643132139167865">網站語言</translation> <translation id="7309257895202129721">顯示控制介面(&C)</translation> <translation id="7310598146671372464">無法登入。伺服器不支援特定的 Kerberos 加密類型。請聯絡您的管理員。</translation> +<translation id="7315168816273861089">啟用視窗控制重疊</translation> <translation id="7320213904474460808">預設網絡</translation> <translation id="7321545336522791733">無法連接伺服器</translation> <translation id="7324297612904500502">Chrome 測試版論壇</translation> @@ -5943,7 +5957,9 @@ <translation id="7506541170099744506">您的 <ph name="DEVICE_TYPE" /> 已成功註冊企業管理服務。</translation> <translation id="7507207699631365376">查看此供應商的<ph name="BEGIN_LINK" />私隱權政策<ph name="END_LINK" /></translation> <translation id="7507930499305566459">狀態回應程式憑證</translation> +<translation id="7509097596023256288">正在設定管理</translation> <translation id="7509246181739783082">驗證您的身分</translation> +<translation id="7511415964832680006">開啟後,網站可能會使用此處顯示的私隱保護技術提供內容和服務。這些技術包括替代跨網站追蹤的選項。本服務可能會陸續新增更多試用功能。</translation> <translation id="7513029293694390567">使用已儲存的憑證自動登入網站。如停用此功能,系統會在您每次登入網站前,要求您確認登入憑證。</translation> <translation id="7514239104543605883">複製至您的裝置</translation> <translation id="7514365320538308">下載</translation> @@ -6304,6 +6320,8 @@ <translation id="7876027585589532670">無法編輯捷徑</translation> <translation id="7877451762676714207">不明的伺服器錯誤。請再試一次,或與伺服器管理員聯絡。</translation> <translation id="7879631849810108578">快速鍵組合:<ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">如果此功能已啟用且處於有效狀態,Chrome 就能使用您過去 7 天的瀏覽記錄來判斷您所在的群組 (或稱「群組」)。廣告客戶可以選擇要向該群組顯示的廣告。您的瀏覽記錄會保留在裝置上,絕不會外洩。此試用功能只會在 + <ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />啟用。</translation> <translation id="7880823633812189969">系統會在您重新啟動時刪除本機資料</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">查看帳戶</translation> @@ -6463,6 +6481,7 @@ <translation id="804786196054284061">使用者授權協議</translation> <translation id="8048977114738515028">在裝置上建立桌面捷徑,方便直接存取此設定檔</translation> <translation id="8049029041626250638">請連接鍵盤或滑鼠。如果使用藍牙裝置,請確認裝置可供配對。</translation> +<translation id="8049184478152619004">輸入個人解鎖金鑰 (PUK)</translation> <translation id="8049705080247101012">Google 已將「<ph name="EXTENSION_NAME" />」標示為惡意程式並已阻止其安裝</translation> <translation id="8049948037269924837">觸控板反向捲動</translation> <translation id="8050038245906040378">Microsoft 商用程式碼簽署</translation> @@ -6499,6 +6518,7 @@ <translation id="8082106343289440791">要與「<ph name="DEVICE_NAME" />」配對嗎?</translation> <translation id="8082390128630131497">停用 ADB 偵錯會將此 <ph name="DEVICE_TYPE" /> 回復原廠設定。所有使用者帳戶和本機資料都將被清除。</translation> <translation id="8084114998886531721">已儲存的密碼</translation> +<translation id="8084510406207562688">還原所有分頁</translation> <translation id="8086015605808120405">正在設定 <ph name="PRINTER_NAME" />…</translation> <translation id="8086442853986205778">設定 <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{此檔案已加密。請要求擁有者解密。}other{這些檔案部分已加密。請要求擁有者解密。}}</translation> @@ -6540,6 +6560,7 @@ <translation id="8119438628456698432">正在產生記錄檔案…</translation> <translation id="811994229154425014">按空白鍵兩下插入句號</translation> <translation id="8120505434908124087">安裝 eSIM 卡設定檔</translation> +<translation id="812260729110117038">廣告客戶和發佈者無需追蹤您的網站瀏覽記錄,就能瞭解廣告成效。</translation> <translation id="8123590694679414600">系統已於 <ph name="TIME" />使用您的同步密碼短語加密資料。Google Pay 的付款方法和地址不會包括在內。</translation> <translation id="81238879832906896">黃色和白色的花</translation> <translation id="8124313775439841391">管理 ONC</translation> @@ -6576,6 +6597,7 @@ <translation id="816055135686411707">憑證信任設定錯誤</translation> <translation id="8160775796528709999">去設定度開著即時字幕,就可以為音訊同影片產生字幕</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />,<ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Chrome 透過「<ph name="BEGIN_LINK" />私隱沙箱<ph name="END_LINK" />」開發新的技術,防止有心人士透過跨網站追蹤機制取得您的資料,同時保護開放網絡。</translation> <translation id="8161293209665121583">使用閱讀器模式查看網頁</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{將分頁移至新視窗}other{將分頁移至新視窗}}</translation> <translation id="8165997195302308593">Crostini 連接埠轉送</translation> @@ -6777,7 +6799,6 @@ <translation id="8393700583063109961">傳送訊息</translation> <translation id="8397825320644530257">解除連接已連接的手機</translation> <translation id="8398877366907290961">仍要繼續</translation> -<translation id="8400146488506985033">管理使用者</translation> <translation id="8401432541486058167">請輸入與智能資訊卡相關聯的 PIN。</translation> <translation id="8404893580027489425">指紋感應器喺 <ph name="DEVICE_TYPE" /> 嘅右手邊。請用任何一隻手指掂一下指紋感應器。</translation> <translation id="8405046151008197676">瞭解最新的更新內容摘要</translation> @@ -6833,7 +6854,6 @@ <translation id="8465444703385715657">需要您的授權才能執行 <ph name="PLUGIN_NAME" /></translation> <translation id="8466417995783206254">此分頁正在以畫中畫模式播放影片。</translation> <translation id="8467326454809944210">選擇其他語言</translation> -<translation id="8470214316007448308">其他人</translation> <translation id="8470513973197838199">已儲存 <ph name="ORIGIN" /> 的密碼</translation> <translation id="8471525937465764768">網站通常會連接 USB 裝置,以提供列印文件或儲存至儲存裝置等功能</translation> <translation id="8471959340398751476">折扣搜尋功能已關閉。您可在自訂選單中開啟此功能</translation> @@ -7019,6 +7039,7 @@ <translation id="8676374126336081632">清除輸入</translation> <translation id="8676770494376880701">已連接低功率充電器</translation> <translation id="8677212948402625567">全部收合…</translation> +<translation id="867767487203716855">下一個更新項目</translation> <translation id="8677859815076891398">沒有相簿。請在「<ph name="LINK_BEGIN" />Google 相片<ph name="LINK_END" />」中建立相簿。</translation> <translation id="8678582529642151449">分頁不可縮小</translation> <translation id="8678933587484842200">您想如何啟動此應用程式?</translation> @@ -7107,7 +7128,6 @@ <translation id="87646919272181953">「Google 相片」中的相簿</translation> <translation id="8767621466733104912">自動為所有使用者更新 Chrome</translation> <translation id="8770406935328356739">擴充程式根目錄</translation> -<translation id="8770507190024617908">管理使用者</translation> <translation id="8771300903067484968">起始網頁背景重設咗做預設背景。</translation> <translation id="8773302562181397928">儲存 <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">確認還原</translation> @@ -7368,6 +7388,7 @@ <translation id="9031549947500880805">備份至「Google 雲端硬碟」。您可隨時輕鬆還原資料或轉用其他裝置。備份包含應用程式資料。</translation> <translation id="9033765790910064284">仍要繼續</translation> <translation id="9033857511263905942">貼上(&P)</translation> +<translation id="9035689366572880647">輸入目前的 PIN</translation> <translation id="9037640663275993951">不允許使用裝置</translation> <translation id="9037818663270399707">您的連線有部分網絡流量不屬於私人連線</translation> <translation id="9037965129289936994">顯示原文</translation> @@ -7443,6 +7464,7 @@ <translation id="9112748030372401671">變更您的桌布</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> 可能不安全。要傳送到 Google 進行掃瞄嗎?</translation> <translation id="9112987648460918699">尋找…</translation> +<translation id="9113240369465613386">只列印單數頁面</translation> <translation id="9114663181201435112">輕鬆登入</translation> <translation id="9115675100829699941">書籤(&B)</translation> <translation id="9116465289595958864">上次修改時間</translation> @@ -7597,6 +7619,7 @@ <translation id="991413375315957741">動態或光線感應器</translation> <translation id="992032470292211616">擴充功能、應用程式和主題可能會損害您的裝置,您確定要繼續嗎?</translation> <translation id="992256792861109788">粉紅色</translation> +<translation id="992401651319295351">您還可嘗試 <ph name="RETRIES" /> 次。除非您設定新 PIN,否則將無法使用此網絡。</translation> <translation id="992592832486024913">停用 ChromeVox (互動朗讀)</translation> <translation id="992778845837390402">正在執行 Linux 備份</translation> <translation id="993540765962421562">正在安装</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 1b5ccbbb2..a0a797f 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -700,6 +700,7 @@ <translation id="173628468822554835">我知道了。在預設情況下,你首次造訪的網站將不會傳送通知。</translation> <translation id="1736419249208073774">探索</translation> <translation id="1737968601308870607">回報錯誤</translation> +<translation id="1739684185846730053">Privacy Sandbox 的試用功能仍在開發階段,目前開放地區有限。現在網站可以嘗試使用 Privacy Sandbox,也能繼續使用第三方 Cookie 等現有的網路技術。</translation> <translation id="174123615272205933">自訂</translation> <translation id="1741314857973421784">繼續</translation> <translation id="1743570585616704562">無法識別</translation> @@ -1123,6 +1124,7 @@ <translation id="217576141146192373">無法新增印表機。請檢查你的印表機設定,然後再試一次。</translation> <translation id="2177950615300672361">無痕式分頁:<ph name="TAB_NAME" /></translation> <translation id="2178614541317717477">CA 洩露</translation> +<translation id="2179416702468739594">正在尋找可用的設定檔。這可能會導致你的行動網路中斷幾分鐘。</translation> <translation id="2182058453334755893">已複製到剪貼簿</translation> <translation id="2184515124301515068">讓 Chrome 自行判斷何時允許網站播放音訊 (建議使用)</translation> <translation id="2186711480981247270">透過其他裝置分享的網頁</translation> @@ -1388,6 +1390,7 @@ <translation id="2469375675106140201">自訂拼字檢查</translation> <translation id="247051149076336810">檔案共用網址</translation> <translation id="2470702053775288986">已停用不支援的擴充功能</translation> +<translation id="2470939964922472929">輸入錯誤 PIN 碼的次數太多。如要設定新的 PIN 碼,請輸入電信業者提供的 8 位數個人解鎖金鑰 (PUK)。</translation> <translation id="2471469610750100598">黑色 (預設)</translation> <translation id="2471506181342525583">已允許存取位置資訊</translation> <translation id="2473195200299095979">翻譯這個網頁</translation> @@ -1684,6 +1687,7 @@ <translation id="2785873697295365461">檔案描述元</translation> <translation id="2787354132612937472">-</translation> <translation id="2788135150614412178">+</translation> +<translation id="2788468313014644040">群組編號</translation> <translation id="2789486458103222910">確定</translation> <translation id="2791529110887957050">移除 Linux</translation> <translation id="2791952154587244007">發生錯誤,系統無法在這個裝置上自動啟動 Kiosk 應用程式。</translation> @@ -1985,6 +1989,7 @@ <translation id="310671807099593501">網站正在使用藍牙</translation> <translation id="3108931485517391283">無法接收</translation> <translation id="3109724472072898302">已收合</translation> +<translation id="3113592018909187986">你只剩 1 次重試機會。你必須設定新的 PIN 碼才能使用這個網路。</translation> <translation id="311394601889664316">禁止網站編輯裝置上的檔案或資料夾</translation> <translation id="3115147772012638511">等候快取...</translation> <translation id="3115580024857770654">全部收合</translation> @@ -2273,6 +2278,7 @@ <translation id="3440663250074896476">更多可對「<ph name="BOOKMARK_NAME" />」執行的動作</translation> <translation id="3441653493275994384">螢幕</translation> <translation id="3441663102605358937">再次登入 <ph name="ACCOUNT" /> 以驗證這個帳戶</translation> +<translation id="3444641828375597683">廣告客戶和發布商可以使用 FLoC 技術 (本頁隨後會加以說明)。</translation> <translation id="3445047461171030979">Google 助理快速解答</translation> <translation id="3445288400492335833"><ph name="MINUTES" /> 分鐘</translation> <translation id="3445925074670675829">USB-C 裝置</translation> @@ -2854,7 +2860,7 @@ <translation id="4035758313003622889">工作管理員(&T)</translation> <translation id="4036778507053569103">從伺服器下載的政策無效。</translation> <translation id="4037084878352560732">馬</translation> -<translation id="4037889604535939429">編輯使用者</translation> +<translation id="4040753847560036377">PUK 不正確</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{離開網頁}other{離開網頁}}</translation> <translation id="4044612648082411741">輸入您的憑證密碼</translation> <translation id="4044708573046946214">螢幕鎖定密碼</translation> @@ -3063,6 +3069,7 @@ <translation id="4297813521149011456">螢幕旋轉</translation> <translation id="4299022904780065004">新增無痕式視窗(&I)</translation> <translation id="4301671483919369635">這個頁面具有檔案編輯權限</translation> +<translation id="4302605047395093221">使用這部裝置的所有使用者都必須輸入 PIN 碼才能連上行動網路</translation> <translation id="4303079906735388947">為安全金鑰設定新的 PIN 碼</translation> <translation id="4305402730127028764">複製到「<ph name="DEVICE_NAME" />」</translation> <translation id="4305817255990598646">切換</translation> @@ -3247,6 +3254,7 @@ <translation id="4510479820467554003">家長帳戶清單</translation> <translation id="4510614391273086606">系統正在將 Linux 檔案和應用程式還原到當初所備份的狀態。</translation> <translation id="451102079304155829">購物車</translation> +<translation id="4513275008300099962">停用視窗控制項重疊顯示</translation> <translation id="4513946894732546136">意見回饋</translation> <translation id="451407183922382411">技術提供:<ph name="COMPANY_NAME" /></translation> <translation id="4514610446763173167">在播放和暫停影片之間切換</translation> @@ -4319,7 +4327,6 @@ <translation id="5709557627224531708">將 Chrome 設為預設網路瀏覽器</translation> <translation id="5711983031544731014">無法解鎖,請輸入你的密碼。</translation> <translation id="5712153969432126546">網站有時會發布文件、合約和表單等 PDF 檔案</translation> -<translation id="5712323955984474772">下一個更新項目</translation> <translation id="5715711091495208045">外掛程式代理元件:<ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">預設搜尋引擎</translation> <translation id="5719637365829998022">已掃描 QR 圖碼。</translation> @@ -4591,10 +4598,12 @@ <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> - 已連接 USB 裝置</translation> <translation id="6028117231645531007">新增指紋</translation> <translation id="6031600495088157824">工具列中的輸入選項</translation> +<translation id="6032091552407840792">這項功能目前僅開放<ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />試用。</translation> <translation id="6032715498678347852">如要授予擴充功能這個網站的存取權,請按一下該擴充功能。</translation> <translation id="6032912588568283682">檔案系統</translation> <translation id="603539183851330738">復原自動更正內容的按鈕,還原為「<ph name="TYPED_WORD" />」。按下 Enter 鍵即可還原,按 Esc 鍵則為取消。</translation> <translation id="6038929619733116134">封鎖干擾性或誤導性的網站廣告</translation> +<translation id="603895874132768835">你必須設定新的 PIN 碼才能使用這個網路</translation> <translation id="6039651071822577588">網路屬性字典格式錯誤</translation> <translation id="6040143037577758943">關閉</translation> <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google 的定位服務會使用 Wi‑Fi、行動網路和感應器等來源,推測出你的裝置的所在位置。<ph name="END_PARAGRAPH1" /> @@ -4842,6 +4851,7 @@ <translation id="6292699686837272722">將分頁縮成中寬度</translation> <translation id="6295158916970320988">所有網站</translation> <translation id="6295855836753816081">儲存中...</translation> +<translation id="6296410173147755564">PUK 無效</translation> <translation id="6298962879096096191">使用 Google Play 安裝 Android 應用程式</translation> <translation id="6300177430812514606">不得完成資料的傳送或接收</translation> <translation id="630065524203833229">結束(&X)</translation> @@ -4888,6 +4898,7 @@ <translation id="6340526405444716530">個人化</translation> <translation id="6341850831632289108">偵測你的實際位置</translation> <translation id="6342069812937806050">剛剛</translation> +<translation id="6343003829431264373">僅限偶數頁</translation> <translation id="6344170822609224263">存取網路連線清單</translation> <translation id="6344576354370880196">已儲存的印表機</translation> <translation id="6345418402353744910">Proxy <ph name="PROXY" /> 要求你提供使用者名稱和密碼,以便管理員為你設定網路</translation> @@ -5087,7 +5098,6 @@ <translation id="6563469144985748109">你的管理員尚未核准這個網站</translation> <translation id="6568283005472142698">分頁搜尋</translation> <translation id="6569911211938664415">系統會將密碼儲存在你的 Google 帳戶 (<ph name="ACCOUNT" />) 中,方便你在任何裝置上使用密碼</translation> -<translation id="6569934958368283244">其他人</translation> <translation id="6573497332121198392">無法移除捷徑</translation> <translation id="657402800789773160">重新載入這個網頁(&R)</translation> <translation id="6577284282025554716">已取消下載:<ph name="FILE_NAME" /></translation> @@ -5136,6 +5146,7 @@ <translation id="6624535038674360844"><ph name="FILE_NAME" /> 含有敏感內容或危險內容。請要求檔案擁有者修正。</translation> <translation id="6624687053722465643">小蛋糕</translation> <translation id="6628328486509726751">上傳時間:<ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation> +<translation id="6629518321609546825">請輸入至少 4 位數</translation> <translation id="6630752851777525409">「<ph name="EXTENSION_NAME" />」要求永久存取可代您驗證其自身的憑證。</translation> <translation id="6635362468090274700">你必須讓其他裝置可以偵測到這部裝置,其他人才能與你分享內容。<ph name="BR" /><ph name="BR" />如要暫時讓其他裝置可以偵測到這部裝置,請開啟狀態區,再啟用鄰近分享瀏覽權限。</translation> <translation id="6635944431854494329">裝置擁有者可依序前往「設定」> [進階] > [自動將診斷資料和使用情況資料傳送給 Google] 來控管這項功能。</translation> @@ -5174,6 +5185,7 @@ <translation id="6664774537677393800">開啟你的設定檔時發生錯誤。請先登出,然後再次登入。</translation> <translation id="6670142487971298264">現在可以使用「<ph name="APP_NAME" />」了</translation> <translation id="6671320560732140690">{COUNT,plural, =1{1 個地址}other{# 個地址}}</translation> +<translation id="6671497123040790595">正在配置由 <ph name="MANAGER" /> 管理的設定</translation> <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation> <translation id="6674571176963658787">如要開始同步處理,請輸入通關密語</translation> <translation id="6675665718701918026">已連上指標裝置</translation> @@ -5182,6 +5194,7 @@ <translation id="6680442031740878064">可用空間:<ph name="AVAILABLE_SPACE" /></translation> <translation id="6680650203439190394">語速</translation> <translation id="6681668084120808868">拍照</translation> +<translation id="6683087162435654533">還原所有分頁</translation> <translation id="6683948477137300040">顯示裝置 EID 和 QR 圖碼彈出式視窗</translation> <translation id="6684827949542560880">正在下載最新的更新</translation> <translation id="668599234725812620">開啟 Google Play</translation> @@ -5751,6 +5764,7 @@ <translation id="7308643132139167865">網站語言</translation> <translation id="7309257895202129721">顯示控制介面(&C)</translation> <translation id="7310598146671372464">無法登入,伺服器不支援指定的 Kerberos 加密類型。請與你的管理員聯絡。</translation> +<translation id="7315168816273861089">啟用視窗控制項重疊顯示</translation> <translation id="7320213904474460808">預設網路</translation> <translation id="7321545336522791733">無法連上伺服器</translation> <translation id="7324297612904500502">測試版論壇</translation> @@ -5927,7 +5941,9 @@ <translation id="7506541170099744506">你的 <ph name="DEVICE_TYPE" /> 已成功註冊企業管理服務。</translation> <translation id="7507207699631365376">查看這個供應商的<ph name="BEGIN_LINK" />隱私權政策<ph name="END_LINK" /></translation> <translation id="7507930499305566459">狀態回應程式憑證</translation> +<translation id="7509097596023256288">正在設定管理服務</translation> <translation id="7509246181739783082">驗證身分</translation> +<translation id="7511415964832680006">在啟用狀態下,網站可能會使用這裡顯示的隱私保護技術提供內容和服務,包括對於跨網站追蹤的替代性措施。本服務可能會陸續新增更多試用功能。</translation> <translation id="7513029293694390567">使用已儲存的憑證自動登入網站。如果停用這項功能,每當你登入網站時,都必須向系統確認你的登入憑證。</translation> <translation id="7514239104543605883">複製到你的裝置</translation> <translation id="7514365320538308">下載</translation> @@ -6288,6 +6304,8 @@ <translation id="7876027585589532670">無法編輯捷徑</translation> <translation id="7877451762676714207">不明的伺服器錯誤。請再試一次,或與伺服器管理員聯絡。</translation> <translation id="7879631849810108578">已設定快速鍵:<ph name="IDS_SHORT_SET_COMMAND" /></translation> +<translation id="7880685873361171388">如果這項功能已啟用且處於有效狀態,Chrome 就能使用你過去 7 天的瀏覽記錄來判斷你所在的群組 (或稱「同類群組」)。廣告客戶可以選擇要向該群組顯示的廣告。你的瀏覽記錄會保留在裝置上,且只供你本人存取。這項功能目前僅開放 + <ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />試用。</translation> <translation id="7880823633812189969">系統會在你重新啟動時刪除本機資料</translation> <translation id="7881066108824108340">DNS</translation> <translation id="7881483672146086348">查看帳戶</translation> @@ -6447,6 +6465,7 @@ <translation id="804786196054284061">使用者授權協議</translation> <translation id="8048977114738515028">在裝置上建立桌面捷徑,直接存取這個設定檔</translation> <translation id="8049029041626250638">請連接鍵盤或滑鼠。如果使用藍牙裝置,請確認該裝置處於可進行配對的狀態。</translation> +<translation id="8049184478152619004">輸入個人解鎖金鑰 (PUK)</translation> <translation id="8049705080247101012">Google 已將「<ph name="EXTENSION_NAME" />」標示為惡意擴充功能並禁止安裝</translation> <translation id="8049948037269924837">觸控板反向捲動</translation> <translation id="8050038245906040378">Microsoft 商用程式碼簽署</translation> @@ -6483,6 +6502,7 @@ <translation id="8082106343289440791">要與「<ph name="DEVICE_NAME" />」配對嗎?</translation> <translation id="8082390128630131497">停用 ADB 偵錯會將這部 <ph name="DEVICE_TYPE" /> 恢復原廠設定。所有使用者帳戶和本機資料都將遭到清除。</translation> <translation id="8084114998886531721">已儲存的密碼</translation> +<translation id="8084510406207562688">還原所有分頁</translation> <translation id="8086015605808120405">正在設定 <ph name="PRINTER_NAME" />...</translation> <translation id="8086442853986205778">設定 <ph name="PRINTER_NAME" /></translation> <translation id="80866457114322936">{NUM_FILES,plural, =1{這個檔案已加密。請要求檔案擁有者解密。}other{部分檔案已加密。請要求檔案擁有者解密。}}</translation> @@ -6524,6 +6544,7 @@ <translation id="8119438628456698432">正在產生記錄檔...</translation> <translation id="811994229154425014">按兩下空格鍵可輸入句號</translation> <translation id="8120505434908124087">安裝 eSIM 卡設定檔</translation> +<translation id="812260729110117038">廣告客戶和發布商不必追蹤你的網站瀏覽記錄,就能瞭解自身的廣告成效。</translation> <translation id="8123590694679414600">系統已採用你在 <ph name="TIME" />設定的同步通關密語針對資料進行加密處理。加密的資料不包括 Google Pay 的付款方式和地址。</translation> <translation id="81238879832906896">黃色和白色花朵</translation> <translation id="8124313775439841391">管理化 ONC</translation> @@ -6560,6 +6581,7 @@ <translation id="816055135686411707">憑證信任設定錯誤</translation> <translation id="8160775796528709999">只要在設定中啟用即時字幕功能,即可取得音訊和視訊的字幕</translation> <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />,<ph name="TIME_REMAINING" /></translation> +<translation id="81610453212785426">Chrome 透過 <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> 開發新的技術,防止有心人士透過跨網站追蹤機制取得你的資料,同時保護開放網路。</translation> <translation id="8161293209665121583">使用閱讀器模式查看網頁</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{將分頁移到新視窗}other{將分頁移到新視窗}}</translation> <translation id="8165997195302308593">Crostini 連接埠轉送</translation> @@ -6761,7 +6783,6 @@ <translation id="8393700583063109961">傳送訊息</translation> <translation id="8397825320644530257">中斷與已連結手機的連線</translation> <translation id="8398877366907290961">仍要繼續</translation> -<translation id="8400146488506985033">管理使用者</translation> <translation id="8401432541486058167">請輸入與智慧型卡片相關聯的 PIN 碼。</translation> <translation id="8404893580027489425">指紋感應器位於「<ph name="DEVICE_TYPE" />」的右側。請單指輕觸這個按鍵。</translation> <translation id="8405046151008197676">瞭解最新的更新內容摘要</translation> @@ -6817,7 +6838,6 @@ <translation id="8465444703385715657">需要你的授權才能執行「<ph name="PLUGIN_NAME" />」</translation> <translation id="8466417995783206254">這個分頁正在使用子母畫面模式播放影片。</translation> <translation id="8467326454809944210">選擇其他語言</translation> -<translation id="8470214316007448308">其他人</translation> <translation id="8470513973197838199">已儲存 <ph name="ORIGIN" /> 的密碼</translation> <translation id="8471525937465764768">網站通常會連線至 USB 裝置,以提供列印文件或儲存至裝置等功能</translation> <translation id="8471959340398751476">折扣搜尋功能已關閉。你可以在自訂選單中開啟這項功能</translation> @@ -7004,6 +7024,7 @@ <translation id="8676374126336081632">清除輸入</translation> <translation id="8676770494376880701">已連接低功率充電器</translation> <translation id="8677212948402625567">全部收合...</translation> +<translation id="867767487203716855">下一個更新項目</translation> <translation id="8677859815076891398">沒有任何相簿。請在 <ph name="LINK_BEGIN" />Google 相簿<ph name="LINK_END" />中建立相簿。</translation> <translation id="8678582529642151449">不縮小分頁</translation> <translation id="8678933587484842200">你希望如何啟動這個應用程式?</translation> @@ -7092,7 +7113,6 @@ <translation id="87646919272181953">Google 相簿中的相簿</translation> <translation id="8767621466733104912">自動為所有使用者更新 Chrome</translation> <translation id="8770406935328356739">擴充功能根目錄</translation> -<translation id="8770507190024617908">管理使用者</translation> <translation id="8771300903067484968">起始網頁背景已重設為預設背景。</translation> <translation id="8773302562181397928">儲存 <ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">確認還原</translation> @@ -7353,6 +7373,7 @@ <translation id="9031549947500880805">使用 Google 雲端硬碟備份你的資料。你隨時可以輕鬆還原資料或切換裝置。備份項目包含應用程式資料。</translation> <translation id="9033765790910064284">仍要繼續</translation> <translation id="9033857511263905942">貼上(&P)</translation> +<translation id="9035689366572880647">輸入目前的 PIN 碼</translation> <translation id="9037640663275993951">不允許使用裝置</translation> <translation id="9037818663270399707">你的連線有部分網路流量不屬於私人連線</translation> <translation id="9037965129289936994">顯示原文</translation> @@ -7428,6 +7449,7 @@ <translation id="9112748030372401671">變更你的桌布</translation> <translation id="9112786533191410418"><ph name="FILE_NAME" /> 可能含有危險內容,要送交 Google 進行掃描嗎?</translation> <translation id="9112987648460918699">尋找...</translation> +<translation id="9113240369465613386">僅限奇數頁</translation> <translation id="9114663181201435112">輕鬆登入</translation> <translation id="9115675100829699941">書籤(&B)</translation> <translation id="9116465289595958864">上次修改時間</translation> @@ -7582,6 +7604,7 @@ <translation id="991413375315957741">動作或光源感應器</translation> <translation id="992032470292211616">擴充功能、應用程式和主題可能會損害你的裝置,你確定要繼續嗎?</translation> <translation id="992256792861109788">粉紅色</translation> +<translation id="992401651319295351">你還有 <ph name="RETRIES" /> 次重試機會。你必須設定新的 PIN 碼才能使用這個網路。</translation> <translation id="992592832486024913">停用 ChromeVox (互動朗讀)</translation> <translation id="992778845837390402">目前正在執行 Linux 備份作業</translation> <translation id="993540765962421562">正在進行安裝程序</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 12a36a7..4c0bd03 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -2874,7 +2874,6 @@ <translation id="4035758313003622889">Isiphathi somsebenzi</translation> <translation id="4036778507053569103">Inqubomgomo elandwe kusuka kuseva ayivumelekile.</translation> <translation id="4037084878352560732">Ihhashi</translation> -<translation id="4037889604535939429">Hlela umuntu</translation> <translation id="4040753847560036377">I-PUK engalungile</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Phuma ekhasini}one{Phuma emakhasini}other{Phuma emakhasini}}</translation> <translation id="4044612648082411741">Faka iphasiwedi yesitifiketi sakho</translation> @@ -4346,7 +4345,6 @@ <translation id="5709557627224531708">Setha i-Chrome njengesiphequluli sakho esizenzakalelayo</translation> <translation id="5711983031544731014">Ayikwazi ukuvula. Faka phasiwedi yakho.</translation> <translation id="5712153969432126546">Amasayithi ngezinye izikhathi ashicilela ama-PDF, njengamadokhumenti, izinkontileka, namafomu</translation> -<translation id="5712323955984474772">Isibuyekezo Esilandelayo</translation> <translation id="5715711091495208045">Ibhulokha ye-plugin: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Izinjini zosesho ezizenzakalelayo</translation> <translation id="5719637365829998022">Ikhodi ye-QR iphequluliwe.</translation> @@ -5118,7 +5116,6 @@ <translation id="6563469144985748109">Umphathi wakho akayivumanga okwamanje</translation> <translation id="6568283005472142698">Ithebhu yokusesha</translation> <translation id="6569911211938664415">Amaphasiwedi alondolozwe ku-akhawunti yakho ye-Google (<ph name="ACCOUNT" />) ngakho-ke ungawasebenzisa kunoma iyiphi idivayisi</translation> -<translation id="6569934958368283244">Abanye abantu</translation> <translation id="6573497332121198392">Ayikwazi ukususa isinqamuleli</translation> <translation id="657402800789773160">Phinda ulayishe leli khasi</translation> <translation id="6577284282025554716">Ukulanda kukhanseliwe: <ph name="FILE_NAME" /></translation> @@ -6804,7 +6801,6 @@ <translation id="8393700583063109961">Thumela umlayezo</translation> <translation id="8397825320644530257">Nqamula ifoni exhunyiwe</translation> <translation id="8398877366907290961">Qhubeka noma kunjalo</translation> -<translation id="8400146488506985033">Phatha abantu</translation> <translation id="8401432541486058167">Nikeza iphinikhodi ehambisana ne-smart card sakho.</translation> <translation id="8404893580027489425">Inzwa yezigxivizo zeminwe isohlangothini olungakudla se-<ph name="DEVICE_TYPE" /> yakho. Ithinte kancane nganoma imuphi umunwe.</translation> <translation id="8405046151008197676">Thola izithombe ezinhle kakhulu kusukela kusibuyekezo sakamuva kakhulu</translation> @@ -6860,7 +6856,6 @@ <translation id="8465444703385715657"><ph name="PLUGIN_NAME" /> idinga imvume yakho ukuqalisa</translation> <translation id="8466417995783206254">Le thebhu idlala ividiyo kumodi yesithombe-esithombeni.</translation> <translation id="8467326454809944210">Khetha olunye ulimi</translation> -<translation id="8470214316007448308">Abanye abantu</translation> <translation id="8470513973197838199">Amaphasiwedi alondoloziwe e-<ph name="ORIGIN" /></translation> <translation id="8471525937465764768">Amasayithi avamise ukuxhuma amadivayisi e-USB kuzici ezifana nokuphrinta idokhumenti noma ukulondoloza kudivayisi yesitoreji</translation> <translation id="8471959340398751476">Izaphulelo zivaliwe. Ungazivula kumenyu engokwezifiso</translation> @@ -7047,6 +7042,7 @@ <translation id="8676374126336081632">Sula okokufaka</translation> <translation id="8676770494376880701">Ishaja yamandla amancane ixhunyiwe</translation> <translation id="8677212948402625567">Goqa konke...</translation> +<translation id="867767487203716855">Isibuyekezo esilandelayo</translation> <translation id="8677859815076891398">Awekho ama-albhamu. Dala i-albhamu <ph name="LINK_BEGIN" />Ezithombeni ze-Google<ph name="LINK_END" />.</translation> <translation id="8678582529642151449">Amathebhu awanciphi</translation> <translation id="8678933587484842200">Ungathanda ukuthi lolu hlelo lokusebenza luqalise kanjani?</translation> @@ -7135,7 +7131,6 @@ <translation id="87646919272181953">I-albhamu Yezithombe ze-Google</translation> <translation id="8767621466733104912">Buyekeza ngokuzenzakalela i-Chrome kubo bonke abasebenzisi</translation> <translation id="8770406935328356739">Isandiso sempande yohla lwemibhalo</translation> -<translation id="8770507190024617908">Phatha abantu</translation> <translation id="8771300903067484968">Ingemuva lekhasi lokuqala lisethwe kabusha kungemuva elizenzakalelayo.</translation> <translation id="8773302562181397928">Londoloza okungu-<ph name="PRINTER_NAME" /></translation> <translation id="8774379074441005279">Qinisekisa ukubuyisela</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index 2283c44..caa42ed 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -171,6 +171,7 @@ <translation id="5394833366792865639">مشاركة علامة تبويب Chrome</translation> <translation id="5430073640787465221">ملف الإعدادات المفضّلة تالف أو غير صالح. يتعذر على Google Chrome استرداد إعداداتك.</translation> <translation id="5434383153637353914">تتيح لك هذه الصفحة إدارة حساباتك على Google التي تم تسجيل الدخول إليها. وستكون هذه الحسابات متوفّرة في متصفِّح Chrome وتطبيقات "متجر Play"، بالإضافة إلى خدمات مثل Gmail وDrive وYouTube. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> +<translation id="5486618155264784386">تثبيت نظام التشغيل Chrome</translation> <translation id="556024056938947818">يحاول Google Chrome إظهار كلمات المرور.</translation> <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation> <translation id="5657226924540934362">في حال عدم عرض إعداد على هذه الصفحة، انتقل إلى <ph name="LINK_BEGIN" /> @@ -253,6 +254,7 @@ <translation id="7890208801193284374">إذا كنت تشارك الكمبيوتر مع أصدقائك وعائلتك، فبإمكانهم التصفح على حدة وإعداد Chrome على النحو الذي يريدونه.</translation> <translation id="7896673875602241923">سجّل شخص ما الدخول من قبل إلى Chrome على جهاز الكمبيوتر هذا باسم <ph name="ACCOUNT_EMAIL_LAST" />. يُرجى إنشاء حساب مستخدم جديد في Chrome للإبقاء على معلوماتك بشكلٍ منفصل.</translation> <translation id="7930071585467473040">يحاول Google Chrome نسخ كلمات المرور.</translation> +<translation id="7951988079884443914">ينصح Chrome بعدم تنزيل هذا الملف أو فتحه.</translation> <translation id="7962410387636238736">لن يستلم جهاز الكمبيوتر هذا تحديثات Google Chrome لأن Windows XP وWindows Vista أصبحا غير مدعومين.</translation> <translation id="79947657522496226">أصبح نظام التشغيل Chrome متاحًا من خلال <ph name="BEGIN_LINK_CROS_OSS" />برنامج إضافي مفتوح المصدر<ph name="END_LINK_CROS_OSS" />، كما هو الحال في <ph name="BEGIN_LINK_LINUX_OSS" />بيئة تطوير أدوات Linux<ph name="END_LINK_LINUX_OSS" />.</translation> <translation id="8008534537613507642">إعادة تثبيت Chrome</translation>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index ad93bc4..78823d9 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -5450,10 +5450,6 @@ flag_descriptions::kMeteredShowToggleDescription, kOsCrOS, FEATURE_VALUE_TYPE(features::kMeteredShowToggle)}, - {"printer-status", flag_descriptions::kPrinterStatusName, - flag_descriptions::kPrinterStatusDescription, kOsCrOS, - FEATURE_VALUE_TYPE(chromeos::features::kPrinterStatus)}, - {"printer-status-dialog", flag_descriptions::kPrinterStatusDialogName, flag_descriptions::kPrinterStatusDialogDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kPrinterStatusDialog)}, @@ -6566,15 +6562,6 @@ FEATURE_VALUE_TYPE(features::kAImageReader)}, #endif // OS_ANDROID -#if defined(OS_ANDROID) - {"enable-autofill-credit-card-cvc-prompt-google-logo", - flag_descriptions::kEnableAutofillCreditCardCvcPromptGoogleLogoName, - flag_descriptions::kEnableAutofillCreditCardCvcPromptGoogleLogoDescription, - kOsAndroid, - FEATURE_VALUE_TYPE( - autofill::features::kAutofillDownstreamCvcPromptUseGooglePayLogo)}, -#endif - #if BUILDFLAG(IS_CHROMEOS_ASH) {"enable-auto-select", flag_descriptions::kEnableAutoSelectName, flag_descriptions::kEnableAutoSelectDescription, kOsCrOS,
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc index 16d55f3..ed25985 100644 --- a/chrome/browser/android/webapk/webapk_installer.cc +++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -260,7 +260,11 @@ webapk::Image* splash_icon_image = web_app_manifest->add_icons(); SetImageData(splash_icon_image, splash_icon); splash_icon_image->add_usages(webapk::Image::SPLASH_ICON); - splash_icon_image->add_purposes(webapk::Image::ANY); + if (shortcut_info.is_splash_image_maskable) { + splash_icon_image->add_purposes(webapk::Image::MASKABLE); + } else { + splash_icon_image->add_purposes(webapk::Image::ANY); + } } } @@ -284,9 +288,13 @@ if (shortcut_info.splash_image_url != shortcut_info.best_primary_icon_url) { image->set_image_data(it->second.unsafe_data); + if (shortcut_info.is_splash_image_maskable) { + image->add_purposes(webapk::Image::MASKABLE); + } else { + image->add_purposes(webapk::Image::ANY); + } } image->add_usages(webapk::Image::SPLASH_ICON); - image->add_purposes(webapk::Image::ANY); } } @@ -694,8 +702,8 @@ return; } - // Using empty |splash_icon| here because in this code path (WebApk install), - // we are using the splash icon data from |hashes|. + // Using empty |splash_icon| here because in this code path (WebApk + // install), we are using the splash icon data from |hashes|. BuildProto(*install_shortcut_info_, install_primary_icon_, is_primary_icon_maskable_, SkBitmap() /* splash_icon */, "" /* package_name */, "" /* version */, std::move(*hashes),
diff --git a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc index 5431c45..fb281f2 100644 --- a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc +++ b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
@@ -65,7 +65,8 @@ scope_(scope), web_manifest_url_(web_manifest_url), info_(GURL()), - is_primary_icon_maskable_(false) { + is_primary_icon_maskable_(false), + is_splash_icon_maskable_(false) { java_ref_.Reset(env, obj); } @@ -158,6 +159,7 @@ if (data.splash_icon && !data.splash_icon->drawsNothing()) { info_.splash_image_url = data.splash_icon_url; splash_icon_ = *data.splash_icon; + is_splash_icon_maskable_ = data.has_maskable_splash_icon; } std::set<GURL> urls{info_.best_primary_icon_url}; @@ -211,6 +213,7 @@ ScopedJavaLocalRef<jstring> java_splash_icon_murmur2_hash = base::android::ConvertUTF8ToJavaString( env, (*hashes)[info_.splash_image_url.spec()].hash); + jboolean java_is_splash_icon_maskable = is_splash_icon_maskable_; ScopedJavaLocalRef<jobject> java_splash_icon; if (!splash_icon_.drawsNothing()) java_splash_icon = gfx::ConvertToJavaBitmap(splash_icon_); @@ -282,7 +285,8 @@ env, java_ref_, java_url, java_scope, java_name, java_short_name, java_primary_icon_url, java_primary_icon_murmur2_hash, java_primary_icon, java_is_primary_icon_maskable, java_splash_icon_url, - java_splash_icon_murmur2_hash, java_splash_icon, java_icon_urls, + java_splash_icon_murmur2_hash, java_splash_icon, + java_is_splash_icon_maskable, java_icon_urls, static_cast<int>(info_.display), static_cast<int>(info_.orientation), ui::OptionalSkColorToJavaColor(info_.theme_color), ui::OptionalSkColorToJavaColor(info_.background_color), java_share_action,
diff --git a/chrome/browser/android/webapk/webapk_update_data_fetcher.h b/chrome/browser/android/webapk/webapk_update_data_fetcher.h index 0846a8f..f084d83 100644 --- a/chrome/browser/android/webapk/webapk_update_data_fetcher.h +++ b/chrome/browser/android/webapk/webapk_update_data_fetcher.h
@@ -88,6 +88,7 @@ bool is_primary_icon_maskable_; SkBitmap splash_icon_; + bool is_splash_icon_maskable_; base::WeakPtrFactory<WebApkUpdateDataFetcher> weak_ptr_factory_{this};
diff --git a/chrome/browser/android/webapk/webapk_update_manager.cc b/chrome/browser/android/webapk/webapk_update_manager.cc index 92db156..3eb57ca 100644 --- a/chrome/browser/android/webapk/webapk_update_manager.cc +++ b/chrome/browser/android/webapk/webapk_update_manager.cc
@@ -61,6 +61,7 @@ jboolean java_is_primary_icon_maskable, const JavaParamRef<jstring>& java_splash_icon_url, const JavaParamRef<jobject>& java_splash_icon_bitmap, + jboolean java_is_splash_icon_maskable, const JavaParamRef<jobjectArray>& java_icon_urls, const JavaParamRef<jobjectArray>& java_icon_hashes, jint java_display_mode, @@ -101,6 +102,7 @@ GURL(ConvertJavaStringToUTF8(env, java_primary_icon_url)); info.splash_image_url = GURL(ConvertJavaStringToUTF8(env, java_splash_icon_url)); + info.is_splash_image_maskable = java_is_splash_icon_maskable; info.manifest_url = GURL(ConvertJavaStringToUTF8(env, java_web_manifest_url)); GURL share_target_action =
diff --git a/chrome/browser/app_controller_mac.h b/chrome/browser/app_controller_mac.h index cf49287..89b73ab 100644 --- a/chrome/browser/app_controller_mac.h +++ b/chrome/browser/app_controller_mac.h
@@ -186,8 +186,8 @@ // Called when the user has changed browser windows, meaning the backing profile // may have changed. This can cause a rebuild of the user-data menus. This is a -// no-op if the new profile is the same as the current one. This will always be -// the original profile and never incognito. +// no-op if the new profile is the same as the current one. This can be either +// the original or the incognito profile. - (void)windowChangedToProfile:(Profile*)profile; // Certain NSMenuItems [Close Tab and Close Window] have different
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm index 9b168ee..eaa8fdc 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm
@@ -748,7 +748,7 @@ _tabMenuBridge.reset(); } - [self windowChangedToProfile:browser->profile()->GetOriginalProfile()]; + [self windowChangedToProfile:browser->profile()]; } - (void)windowDidResignMain:(NSNotification*)notify {
diff --git a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc index 36542351..924e4d7 100644 --- a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc +++ b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc
@@ -136,9 +136,9 @@ } base::AutoReset<base::FilePath> reset(&test_data_dir_, temp_dir.GetPath()); - bool result = RunExtensionTest({.name = extension_name.c_str(), - .custom_arg = custom_arg, - .launch_as_platform_app = true}); + bool result = RunExtensionTest( + extension_name.c_str(), + {.custom_arg = custom_arg, .launch_as_platform_app = true}); content::RunAllPendingInMessageLoop(); // avoid race on exit in registry. return result; }
diff --git a/chrome/browser/apps/platform_apps/api/music_manager_private/music_manager_private_browsertest.cc b/chrome/browser/apps/platform_apps/api/music_manager_private/music_manager_private_browsertest.cc index 6cf2b55..5618d03 100644 --- a/chrome/browser/apps/platform_apps/api/music_manager_private/music_manager_private_browsertest.cc +++ b/chrome/browser/apps/platform_apps/api/music_manager_private/music_manager_private_browsertest.cc
@@ -15,8 +15,8 @@ IN_PROC_BROWSER_TEST_F(MusicManagerPrivateTest, DeviceIdValueReturned) { ASSERT_TRUE(RunExtensionTest( - {.name = "platform_apps/music_manager_private/device_id_value_returned", - .launch_as_platform_app = true})) + "platform_apps/music_manager_private/device_id_value_returned", + {.launch_as_platform_app = true})) << message_; }
diff --git a/chrome/browser/apps/platform_apps/service_worker_browsertest.cc b/chrome/browser/apps/platform_apps/service_worker_browsertest.cc index 1c93b4c5..d1b301f 100644 --- a/chrome/browser/apps/platform_apps/service_worker_browsertest.cc +++ b/chrome/browser/apps/platform_apps/service_worker_browsertest.cc
@@ -8,7 +8,7 @@ using ServiceWorkerAppTest = extensions::PlatformAppBrowserTest; IN_PROC_BROWSER_TEST_F(ServiceWorkerAppTest, RegisterAndPostMessage) { - ASSERT_TRUE(RunExtensionTest( - {.name = "platform_apps/service_worker", .launch_as_platform_app = true})) + ASSERT_TRUE(RunExtensionTest("platform_apps/service_worker", + {.launch_as_platform_app = true})) << message_; }
diff --git a/chrome/browser/ash/app_mode/kiosk_app_manager_browsertest.cc b/chrome/browser/ash/app_mode/kiosk_app_manager_browsertest.cc index 9f7373dc..49b95a1b 100644 --- a/chrome/browser/ash/app_mode/kiosk_app_manager_browsertest.cc +++ b/chrome/browser/ash/app_mode/kiosk_app_manager_browsertest.cc
@@ -17,8 +17,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/path_service.h" #include "base/run_loop.h" -#include "base/strings/stringprintf.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/threading/thread_restrictions.h" #include "base/time/time.h" #include "base/values.h" @@ -124,12 +123,6 @@ return app; } -void SetPlatformVersion(const std::string& platform_version) { - const std::string lsb_release = base::StringPrintf( - "CHROMEOS_RELEASE_VERSION=%s", platform_version.c_str()); - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, base::Time::Now()); -} - class AppDataLoadWaiter : public KioskAppManagerObserver { public: AppDataLoadWaiter(KioskAppManager* manager, int expected_data_change) @@ -999,7 +992,8 @@ } IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, IsPlatformCompliant) { - SetPlatformVersion("1234.1.2"); + base::test::ScopedChromeOSVersionInfo version( + "CHROMEOS_RELEASE_VERSION=1234.1.2", base::Time::Now()); EXPECT_TRUE(manager()->IsPlatformCompliant("")); EXPECT_TRUE(manager()->IsPlatformCompliant("1234")); @@ -1016,7 +1010,8 @@ } IN_PROC_BROWSER_TEST_F(KioskAppManagerTest, IsPlatformCompliantWithApp) { - SetPlatformVersion("1234.1.2"); + base::test::ScopedChromeOSVersionInfo version( + "CHROMEOS_RELEASE_VERSION=1234.1.2", base::Time::Now()); const char kAppId[] = "app_id"; SetExistingApp(kAppId, "App Name", "red16x16.png", "");
diff --git a/chrome/browser/ash/attestation/attestation_policy_browsertest.cc b/chrome/browser/ash/attestation/attestation_policy_browsertest.cc index 31e4d4d6..3583cf2 100644 --- a/chrome/browser/ash/attestation/attestation_policy_browsertest.cc +++ b/chrome/browser/ash/attestation/attestation_policy_browsertest.cc
@@ -10,7 +10,6 @@ #include "base/time/time.h" #include "chrome/browser/ash/attestation/platform_verification_flow.h" #include "chrome/browser/ash/settings/device_settings_service.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
diff --git a/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher_unittest.cc b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher_unittest.cc new file mode 100644 index 0000000..1fda0be --- /dev/null +++ b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher_unittest.cc
@@ -0,0 +1,164 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h" + +#include "chrome/browser/ash/borealis/borealis_disk_manager.h" +#include "chrome/browser/ash/borealis/borealis_disk_manager_impl.h" +#include "chrome/browser/ash/borealis/testing/callback_factory.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace borealis { +namespace { + +class DiskManagerMock : public BorealisDiskManager { + public: + DiskManagerMock() = default; + ~DiskManagerMock() override = default; + MOCK_METHOD( + void, + GetDiskInfo, + (base::OnceCallback<void(Expected<GetDiskInfoResponse, std::string>)>), + ()); + MOCK_METHOD(void, + RequestSpace, + (uint64_t, + base::OnceCallback<void(Expected<uint64_t, std::string>)>), + ()); + MOCK_METHOD(void, + ReleaseSpace, + (uint64_t, + base::OnceCallback<void(Expected<uint64_t, std::string>)>), + ()); +}; + +using DiskInfoCallbackFactory = NiceCallbackFactory<void( + Expected<BorealisDiskManagerImpl::GetDiskInfoResponse, std::string>)>; + +using RequestDeltaCallbackFactory = + NiceCallbackFactory<void(Expected<uint64_t, std::string>)>; + +TEST(BorealisDiskManagerDispatcherTest, GetDiskInfoFailsIfNamesDontMatch) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + DiskInfoCallbackFactory callback_factory; + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<BorealisDiskManagerImpl::GetDiskInfoResponse, std::string> + response_or_error) { EXPECT_FALSE(response_or_error); })); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.GetDiskInfo("NOTBOREALIS", "penguin", callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, GetDiskInfoFailsIfDelegateNotSet) { + BorealisDiskManagerDispatcher dispatcher; + DiskInfoCallbackFactory callback_factory; + + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<BorealisDiskManagerImpl::GetDiskInfoResponse, std::string> + response_or_error) { EXPECT_FALSE(response_or_error); })); + + dispatcher.GetDiskInfo("borealis", "penguin", callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, GetDiskInfoSucceedsAndCallsDelegate) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + DiskInfoCallbackFactory callback_factory; + EXPECT_CALL(disk_mock, GetDiskInfo(testing::_)); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.GetDiskInfo("borealis", "penguin", callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, RequestSpaceFailsIfNamesDontMatch) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + RequestDeltaCallbackFactory callback_factory; + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<uint64_t, std::string> response_or_error) { + EXPECT_FALSE(response_or_error); + })); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.RequestSpace("borealis", "NOTPENGUIN", 1, + callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, RequestSpaceFailsIfDelegateNotSet) { + BorealisDiskManagerDispatcher dispatcher; + RequestDeltaCallbackFactory callback_factory; + + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<uint64_t, std::string> response_or_error) { + EXPECT_FALSE(response_or_error); + })); + + dispatcher.RequestSpace("borealis", "penguin", 1, + callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, RequestSpaceSucceedsAndCallsDelegate) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + RequestDeltaCallbackFactory callback_factory; + EXPECT_CALL(disk_mock, RequestSpace(1, testing::_)); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.RequestSpace("borealis", "penguin", 1, + callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, ReleaseSpaceFailsIfNamesDontMatch) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + RequestDeltaCallbackFactory callback_factory; + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<uint64_t, std::string> response_or_error) { + EXPECT_FALSE(response_or_error); + })); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.ReleaseSpace("NOTBOREALIS", "NOTPENGUIN", 1, + callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, ReleaseSpaceFailsIfDelegateNotSet) { + BorealisDiskManagerDispatcher dispatcher; + RequestDeltaCallbackFactory callback_factory; + + EXPECT_CALL(callback_factory, Call(testing::_)) + .WillOnce(testing::Invoke( + [](Expected<uint64_t, std::string> response_or_error) { + EXPECT_FALSE(response_or_error); + })); + + dispatcher.ReleaseSpace("borealis", "penguin", 1, + callback_factory.BindOnce()); +} + +TEST(BorealisDiskManagerDispatcherTest, ReleaseSpaceSucceedsAndCallsDelegate) { + BorealisDiskManagerDispatcher dispatcher; + DiskManagerMock disk_mock; + + RequestDeltaCallbackFactory callback_factory; + EXPECT_CALL(disk_mock, ReleaseSpace(1, testing::_)); + + dispatcher.SetDiskManagerDelegate(&disk_mock); + dispatcher.ReleaseSpace("borealis", "penguin", 1, + callback_factory.BindOnce()); +} + +} // namespace +} // namespace borealis
diff --git a/chrome/browser/ash/login/app_mode/kiosk_browsertest.cc b/chrome/browser/ash/login/app_mode/kiosk_browsertest.cc index 114da1f..e01015a8 100644 --- a/chrome/browser/ash/login/app_mode/kiosk_browsertest.cc +++ b/chrome/browser/ash/login/app_mode/kiosk_browsertest.cc
@@ -29,7 +29,7 @@ #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/speech_monitor.h" #include "chrome/browser/ash/app_mode/app_session.h" @@ -295,12 +295,6 @@ return app->GetType(); } -void SetPlatformVersion(const std::string& platform_version) { - const std::string lsb_release = base::StringPrintf( - "CHROMEOS_RELEASE_VERSION=%s", platform_version.c_str()); - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, base::Time::Now()); -} - class KioskFakeDiskMountManager : public file_manager::FakeDiskMountManager { public: KioskFakeDiskMountManager() {} @@ -2245,7 +2239,8 @@ } IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_IncompliantPlatformDelayInstall) { - SetPlatformVersion("1233.0.0"); + base::test::ScopedChromeOSVersionInfo version( + "CHROMEOS_RELEASE_VERSION=1234.0.0", base::Time::Now()); set_test_app_id(kTestOfflineEnabledKioskApp); set_test_app_version("2.0.0"); @@ -2266,7 +2261,8 @@ } IN_PROC_BROWSER_TEST_F(KioskUpdateTest, IncompliantPlatformDelayInstall) { - SetPlatformVersion("1234.0.0"); + base::test::ScopedChromeOSVersionInfo version( + "CHROMEOS_RELEASE_VERSION=1234.0.0", base::Time::Now()); set_test_app_id(kTestOfflineEnabledKioskApp); set_test_app_version("2.0.0"); @@ -2290,7 +2286,8 @@ // Tests that app is installed for the first time even on an incompliant // platform. IN_PROC_BROWSER_TEST_F(KioskUpdateTest, IncompliantPlatformFirstInstall) { - SetPlatformVersion("1233.0.0"); + base::test::ScopedChromeOSVersionInfo version( + "CHROMEOS_RELEASE_VERSION=1234.0.0", base::Time::Now()); set_test_app_id(kTestOfflineEnabledKioskApp); set_test_app_version("2.0.0");
diff --git a/chrome/browser/ash/login/arc_terms_of_service_browsertest.cc b/chrome/browser/ash/login/arc_terms_of_service_browsertest.cc index 4991e3a..e83fb06f 100644 --- a/chrome/browser/ash/login/arc_terms_of_service_browsertest.cc +++ b/chrome/browser/ash/login/arc_terms_of_service_browsertest.cc
@@ -48,6 +48,7 @@ #include "components/arc/arc_prefs.h" #include "components/arc/arc_util.h" #include "components/consent_auditor/fake_consent_auditor.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/prefs/pref_service.h" #include "components/web_resource/web_resource_pref_names.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/ash/login/configuration_based_oobe_browsertest.cc b/chrome/browser/ash/login/configuration_based_oobe_browsertest.cc index e7a542e..5a21056 100644 --- a/chrome/browser/ash/login/configuration_based_oobe_browsertest.cc +++ b/chrome/browser/ash/login/configuration_based_oobe_browsertest.cc
@@ -3,7 +3,7 @@ // found in the LICENSE file. #include "ash/constants/ash_switches.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "build/build_config.h" #include "chrome/browser/ash/login/demo_mode/demo_setup_controller.h" #include "chrome/browser/ash/login/demo_mode/demo_setup_test_utils.h" @@ -145,19 +145,17 @@ // EnterpriseEnrollmentConfigurationTest with no input devices. class OobeConfigurationTestNoHID : public OobeConfigurationTest { public: - OobeConfigurationTestNoHID() { - // HID detection screen only appears for Chromebases, Chromebits, and - // Chromeboxes. - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBOX", - base::Time::Now()); - } - + OobeConfigurationTestNoHID() = default; ~OobeConfigurationTestNoHID() override = default; protected: test::HIDControllerMixin hid_controller_{&mixin_host_}; private: + // HID detection screen only appears for Chromebases, Chromebits, and + // Chromeboxes. + base::test::ScopedChromeOSVersionInfo version_{"DEVICETYPE=CHROMEBOX", + base::Time::Now()}; DISALLOW_COPY_AND_ASSIGN(OobeConfigurationTestNoHID); };
diff --git a/chrome/browser/ash/login/existing_user_controller_browsertest.cc b/chrome/browser/ash/login/existing_user_controller_browsertest.cc index 1a03de3..0e04588 100644 --- a/chrome/browser/ash/login/existing_user_controller_browsertest.cc +++ b/chrome/browser/ash/login/existing_user_controller_browsertest.cc
@@ -79,7 +79,7 @@ #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/chrome_device_policy.pb.h"
diff --git a/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc b/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc index 87d80a9..b105b86 100644 --- a/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc +++ b/chrome/browser/ash/login/login_ui_keyboard_browsertest.cc
@@ -27,6 +27,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/input_method/input_method_persistence.h" #include "chrome/browser/chromeos/language_preferences.h" +#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/ui/ash/login_screen_shown_observer.h" #include "chrome/browser/ui/webui/chromeos/login/user_creation_screen_handler.h"
diff --git a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc index ecc61cd..a3faa0b 100644 --- a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc +++ b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
@@ -7,7 +7,7 @@ #include "base/callback_helpers.h" #include "base/macros.h" #include "base/run_loop.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "chrome/browser/ash/login/login_wizard.h" #include "chrome/browser/ash/login/screens/base_screen.h" #include "chrome/browser/ash/login/screens/hid_detection_screen.h" @@ -45,12 +45,8 @@ // chromebox, chromebase, chromebit class HIDDetectionScreenChromeboxTest : public OobeBaseTest { public: - HIDDetectionScreenChromeboxTest() { - // HID detection screen only appears for Chromebases, Chromebits, and - // Chromeboxes. - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBOX", - base::Time::Now()); - } + HIDDetectionScreenChromeboxTest() = default; + ~HIDDetectionScreenChromeboxTest() override = default; void SetUpOnMainThread() override { ASSERT_TRUE(WizardController::default_controller()); @@ -90,6 +86,11 @@ private: HIDDetectionScreen* hid_detection_screen_; + // HID detection screen only appears for Chromebases, Chromebits, and + // Chromeboxes. + base::test::ScopedChromeOSVersionInfo version_{"DEVICETYPE=CHROMEBOX", + base::Time::Now()}; + DISALLOW_COPY_AND_ASSIGN(HIDDetectionScreenChromeboxTest); }; @@ -265,12 +266,10 @@ }; class HIDDetectionScreenChromebookTest : public OobeBaseTest { - public: - HIDDetectionScreenChromebookTest() { - // Set device type to one that should not invoke HIDDetectionScreen logic. - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBOOK", - base::Time::Now()); - } + private: + // Set device type to one that should not invoke HIDDetectionScreen logic. + base::test::ScopedChromeOSVersionInfo version_{"DEVICETYPE=CHROMEBOOK", + base::Time::Now()}; }; IN_PROC_BROWSER_TEST_F(HIDDetectionScreenChromebookTest, @@ -285,18 +284,20 @@ class HIDDetectionScreenChromebaseTest : public OobeBaseTest { public: HIDDetectionScreenChromebaseTest() { - // Set device type to a Chromebase with a touch screen. - // This should show the HIDDetectionScreen with the continue button - // always enabled, since the user can complete all of OOBE steps - // with only a touchscreen. - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBASE", - base::Time::Now()); hid_controller_.set_wait_until_idle_after_device_update(false); hid_controller_.AddTouchscreen(); } protected: test::HIDControllerMixin hid_controller_{&mixin_host_}; + + private: + // Set device type to a Chromebase with a touch screen. + // This should show the HIDDetectionScreen with the continue button + // always enabled, since the user can complete all of OOBE steps + // with only a touchscreen. + base::test::ScopedChromeOSVersionInfo version_{"DEVICETYPE=CHROMEBASE", + base::Time::Now()}; }; IN_PROC_BROWSER_TEST_F(HIDDetectionScreenChromebaseTest, TouchscreenDetected) {
diff --git a/chrome/browser/ash/login/screens/terms_of_service_screen_browsertest.cc b/chrome/browser/ash/login/screens/terms_of_service_screen_browsertest.cc index 52382ae0..4ab040a 100644 --- a/chrome/browser/ash/login/screens/terms_of_service_screen_browsertest.cc +++ b/chrome/browser/ash/login/screens/terms_of_service_screen_browsertest.cc
@@ -28,6 +28,7 @@ #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" #include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h" #include "chromeos/dbus/session_manager/fake_session_manager_client.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "content/public/test/browser_test.h" #include "net/test/embedded_test_server/http_request.h"
diff --git a/chrome/browser/ash/login/test/device_state_mixin.cc b/chrome/browser/ash/login/test/device_state_mixin.cc index e1383f53..1eb2026 100644 --- a/chrome/browser/ash/login/test/device_state_mixin.cc +++ b/chrome/browser/ash/login/test/device_state_mixin.cc
@@ -21,7 +21,7 @@ #include "chromeos/dbus/session_manager/fake_session_manager_client.h" #include "chromeos/dbus/session_manager/session_manager_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/install_attributes.pb.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/ash/login/test/device_state_mixin.h b/chrome/browser/ash/login/test/device_state_mixin.h index 8e4c529..0aa5ca8 100644 --- a/chrome/browser/ash/login/test/device_state_mixin.h +++ b/chrome/browser/ash/login/test/device_state_mixin.h
@@ -14,7 +14,9 @@ #include "chrome/browser/ash/login/demo_mode/demo_session.h" #include "chrome/browser/ash/login/test/local_state_mixin.h" #include "chrome/browser/ash/login/test/scoped_policy_update.h" +#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" namespace chromeos {
diff --git a/chrome/browser/ash/login/test/local_policy_test_server_mixin.cc b/chrome/browser/ash/login/test/local_policy_test_server_mixin.cc index 6e10d44..84b2a5c6 100644 --- a/chrome/browser/ash/login/test/local_policy_test_server_mixin.cc +++ b/chrome/browser/ash/login/test/local_policy_test_server_mixin.cc
@@ -15,7 +15,7 @@ #include "chromeos/attestation/fake_attestation_flow.h" #include "chromeos/system/fake_statistics_provider.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_switches.h" namespace chromeos {
diff --git a/chrome/browser/ash/login/test/scoped_policy_update.h b/chrome/browser/ash/login/test/scoped_policy_update.h index cf98ce4..11c4a77 100644 --- a/chrome/browser/ash/login/test/scoped_policy_update.h +++ b/chrome/browser/ash/login/test/scoped_policy_update.h
@@ -8,7 +8,7 @@ #include "base/callback.h" #include "base/macros.h" #include "chrome/browser/chromeos/policy/device_policy_builder.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" namespace chromeos {
diff --git a/chrome/browser/ash/login/test/user_policy_mixin.h b/chrome/browser/ash/login/test/user_policy_mixin.h index e26e8ae8..b412b5e 100644 --- a/chrome/browser/ash/login/test/user_policy_mixin.h +++ b/chrome/browser/ash/login/test/user_policy_mixin.h
@@ -13,7 +13,7 @@ #include "chrome/browser/ash/login/test/scoped_policy_update.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "components/account_id/account_id.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" namespace chromeos {
diff --git a/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc b/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc index ecc80a2..a451e2c 100644 --- a/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc +++ b/chrome/browser/ash/login/users/avatar/user_image_manager_browsertest.cc
@@ -56,7 +56,7 @@ #include "components/ownership/mock_owner_key_util.h" #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/cloud_policy.pb.h" #include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc b/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc index d558464b..e9e1212b 100644 --- a/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc +++ b/chrome/browser/ash/login/users/wallpaper_policy_browsertest.cc
@@ -50,7 +50,7 @@ #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" #include "components/policy/core/common/cloud/cloud_policy_validator.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/cloud_policy.pb.h" #include "components/user_manager/user.h" #include "components/user_manager/user_manager.h"
diff --git a/chrome/browser/ash/notifications/update_required_notification_unittest.cc b/chrome/browser/ash/notifications/update_required_notification_unittest.cc index ea174c2..36707ff7 100644 --- a/chrome/browser/ash/notifications/update_required_notification_unittest.cc +++ b/chrome/browser/ash/notifications/update_required_notification_unittest.cc
@@ -8,8 +8,8 @@ #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" -#include "base/system/sys_info.h" #include "base/test/bind.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/test/task_environment.h" #include "base/time/default_clock.h" #include "base/values.h" @@ -366,8 +366,8 @@ } TEST_F(UpdateRequiredNotificationTest, ChromeboxNotifications) { - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBOX", - base::Time::Now()); + base::test::ScopedChromeOSVersionInfo version("DEVICETYPE=CHROMEBOX", + base::Time::Now()); // Set device state to end of life reached. update_engine()->set_eol_date(base::DefaultClock::GetInstance()->Now() - base::TimeDelta::FromDays(kLongWarningInDays));
diff --git a/chrome/browser/ash/settings/device_settings_provider_unittest.cc b/chrome/browser/ash/settings/device_settings_provider_unittest.cc index 748adab5..c23ab44 100644 --- a/chrome/browser/ash/settings/device_settings_provider_unittest.cc +++ b/chrome/browser/ash/settings/device_settings_provider_unittest.cc
@@ -22,13 +22,13 @@ #include "base/values.h" #include "chrome/browser/ash/settings/device_settings_test_helper.h" #include "chrome/browser/chromeos/policy/device_local_account.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/common/chrome_paths.h" #include "chrome/test/base/scoped_testing_local_state.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chromeos/settings/cros_settings_names.h" #include "chromeos/tpm/stub_install_attributes.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/policy/proto/device_management_backend.pb.h" #include "components/user_manager/fake_user_manager.h"
diff --git a/chrome/browser/ash/settings/session_manager_operation_unittest.cc b/chrome/browser/ash/settings/session_manager_operation_unittest.cc index 30560a3..941c7ed3 100644 --- a/chrome/browser/ash/settings/session_manager_operation_unittest.cc +++ b/chrome/browser/ash/settings/session_manager_operation_unittest.cc
@@ -20,11 +20,12 @@ #include "chrome/browser/ash/ownership/owner_settings_service_ash.h" #include "chrome/browser/ash/ownership/owner_settings_service_ash_factory.h" #include "chrome/browser/ash/settings/device_settings_test_helper.h" +#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/test/base/testing_profile.h" #include "components/ownership/mock_owner_key_util.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/cloud_policy_validator.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/policy/proto/device_management_backend.pb.h" #include "components/user_manager/fake_user_manager.h"
diff --git a/chrome/browser/ash/system/automatic_reboot_manager.h b/chrome/browser/ash/system/automatic_reboot_manager.h index 29bd290..bc39142 100644 --- a/chrome/browser/ash/system/automatic_reboot_manager.h +++ b/chrome/browser/ash/system/automatic_reboot_manager.h
@@ -62,12 +62,8 @@ // request is carried out the moment none of the inhibiting criteria apply // anymore (e.g. the user becomes idle on the login screen, the user logs exits // a session, the user suspends the device). If reboots remain inhibited for the -// entire grace period, a reboot is unconditionally performed at its end. -// -// Note: Currently, automatic reboots are only enabled while the login screen is -// being shown or a kiosk app session is in progress. This will change in the -// future and the policy will always apply, regardless of whether a session of -// any particular type is in progress or not. http://crbug.com/244972 +// entire grace period, a reboot is performed at its end, unless a non-kiosk +// session is active. // // Reboots may be scheduled and canceled at any time. This causes the time at // which a reboot should be requested and the grace period that follows it to @@ -138,7 +134,7 @@ // If |ignore_session|, a session in progress does not inhibit reboots. void MaybeReboot(bool ignore_session); - // Reboots immediately. + // Reboots immediately unless a non-kiosk session is active. void Reboot(); // Event that is signaled when Init() runs.
diff --git a/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc b/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc index d9eeb8c2..e4233c6 100644 --- a/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc +++ b/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc
@@ -137,7 +137,8 @@ base::BindOnce(&AutofillSaveCardInfoBarDelegateMobileTest:: UploadSaveCardPromptCallback, base::Unretained(this)), - /*local_save_card_callback=*/{}, profile()->GetPrefs())); + /*local_save_card_callback=*/{}, profile()->GetPrefs(), + AccountInfo())); return delegate; } // Local save infobar delegate: @@ -151,7 +152,7 @@ base::BindOnce(&AutofillSaveCardInfoBarDelegateMobileTest:: LocalSaveCardPromptCallback, base::Unretained(this)), - profile()->GetPrefs())); + profile()->GetPrefs(), AccountInfo())); return delegate; }
diff --git a/chrome/browser/banners/app_banner_manager_browsertest.cc b/chrome/browser/banners/app_banner_manager_browsertest.cc index bd42e91..16dedae 100644 --- a/chrome/browser/banners/app_banner_manager_browsertest.cc +++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
@@ -713,9 +713,10 @@ blink::Manifest manifest; std::vector<SkBitmap> screenshots; - installable_manager_->FailNext(base::WrapUnique(new InstallableData( - {MANIFEST_URL_CHANGED}, GURL::EmptyGURL(), manifest, GURL::EmptyGURL(), - nullptr, false, GURL::EmptyGURL(), nullptr, screenshots, false, false))); + installable_manager_->FailNext(base::WrapUnique( + new InstallableData({MANIFEST_URL_CHANGED}, GURL::EmptyGURL(), manifest, + GURL::EmptyGURL(), nullptr, false, GURL::EmptyGURL(), + nullptr, false, screenshots, false, false))); // The page should record one failure of MANIFEST_URL_CHANGED, but it should // still successfully get to the PENDING_PROMPT state of the pipeline, as it
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 81a6a09..e459d58 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -32,6 +32,8 @@ "//chrome/app/theme:chrome_unscaled_resources", "//chrome/app/theme:theme_resources", "//chrome/browser/chromeos/power/ml:user_activity_ukm_logger_helpers", + "//chrome/browser/ui/webui/chromeos/crostini_installer:mojo_bindings", + "//chrome/browser/ui/webui/chromeos/emoji:mojo_bindings", "//chromeos/components/security_token_pin", "//chromeos/dbus:anomaly_detector_proto", "//chromeos/dbus:cicerone_proto", @@ -3373,6 +3375,8 @@ "../ash/certificate_provider/test_certificate_provider_extension.h", "../ash/child_accounts/child_account_test_utils.cc", "../ash/child_accounts/child_account_test_utils.h", + "../ash/child_accounts/time_limits/app_time_limits_policy_builder.cc", + "../ash/child_accounts/time_limits/app_time_limits_policy_builder.h", "../ash/crostini/ansible/ansible_management_test_helper.cc", "../ash/crostini/ansible/ansible_management_test_helper.h", "../ash/crostini/crostini_test_helper.cc", @@ -3643,6 +3647,7 @@ "../ash/borealis/borealis_app_uninstaller_unittest.cc", "../ash/borealis/borealis_context_manager_unittest.cc", "../ash/borealis/borealis_context_unittest.cc", + "../ash/borealis/borealis_disk_manager_dispatcher_unittest.cc", "../ash/borealis/borealis_disk_manager_unittest.cc", "../ash/borealis/borealis_features_unittest.cc", "../ash/borealis/borealis_game_mode_controller_unittest.cc", @@ -3686,8 +3691,6 @@ "../ash/child_accounts/time_limits/app_time_controller_unittest.cc", "../ash/child_accounts/time_limits/app_time_limits_allowlist_policy_test_utils.cc", "../ash/child_accounts/time_limits/app_time_limits_allowlist_policy_test_utils.h", - "../ash/child_accounts/time_limits/app_time_limits_policy_builder.cc", - "../ash/child_accounts/time_limits/app_time_limits_policy_builder.h", "../ash/child_accounts/time_limits/app_time_test_utils.cc", "../ash/child_accounts/time_limits/app_time_test_utils.h", "../ash/child_accounts/time_limits/app_types_unittest.cc",
diff --git a/chrome/browser/chromeos/chromebox_for_meetings/device_info/device_info_service_unittest.cc b/chrome/browser/chromeos/chromebox_for_meetings/device_info/device_info_service_unittest.cc index 1cc04e30..a47d8c6f 100644 --- a/chrome/browser/chromeos/chromebox_for_meetings/device_info/device_info_service_unittest.cc +++ b/chrome/browser/chromeos/chromebox_for_meetings/device_info/device_info_service_unittest.cc
@@ -13,9 +13,9 @@ #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" -#include "base/system/sys_info.h" #include "base/test/bind.h" #include "base/test/mock_callback.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/test/task_environment.h" #include "chrome/browser/ash/settings/device_settings_service.h" #include "chrome/browser/chromeos/policy/device_policy_builder.h" @@ -197,7 +197,7 @@ TEST_F(CfmDeviceInfoServiceTest, TestSysInfo) { base::RunLoop run_loop; - base::SysInfo::SetChromeOSVersionInfoForTest( + base::test::ScopedChromeOSVersionInfo version( base::StringPrintf("CHROMEOS_RELEASE_VERSION=%s\n", kReleaseVersion), base::Time::Now());
diff --git a/chrome/browser/chromeos/extensions/echo_private_apitest.cc b/chrome/browser/chromeos/extensions/echo_private_apitest.cc index 768091f..5946f022 100644 --- a/chrome/browser/chromeos/extensions/echo_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/echo_private_apitest.cc
@@ -128,7 +128,7 @@ }; IN_PROC_BROWSER_TEST_F(ExtensionEchoPrivateApiTest, EchoTest) { - EXPECT_TRUE(RunExtensionTest({.name = "echo/component_extension"}, + EXPECT_TRUE(RunExtensionTest("echo/component_extension", {}, {.load_as_component = true})) << message_; }
diff --git a/chrome/browser/chromeos/extensions/info_private_apitest.cc b/chrome/browser/chromeos/extensions/info_private_apitest.cc index 2bd29de..fe7b884a 100644 --- a/chrome/browser/chromeos/extensions/info_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/info_private_apitest.cc
@@ -5,7 +5,7 @@ #include "ash/public/cpp/ash_pref_names.h" #include "ash/public/cpp/ash_switches.h" #include "ash/public/cpp/stylus_utils.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/values.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" @@ -24,6 +24,8 @@ #include "ui/events/devices/touchscreen_device.h" #include "ui/events/test/event_generator.h" +using base::test::ScopedChromeOSVersionInfo; + namespace { const char kTestAppId[] = "ljoammodoonkhnehlncldjelhidljdpi"; @@ -42,12 +44,6 @@ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kAppId, kTestAppId); } - - void SetDeviceType(const std::string& device_type) { - const std::string lsb_release = std::string("DEVICETYPE=") + device_type; - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, - base::Time::Now()); - } }; IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, TestGetAndSet) { @@ -132,7 +128,7 @@ } IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, Chromebase) { - SetDeviceType("CHROMEBASE"); + ScopedChromeOSVersionInfo version("DEVICETYPE=CHROMEBASE", base::Time::Now()); ASSERT_TRUE(RunExtensionTest( "chromeos_info_private/extended", {.custom_arg = "chromebase", .launch_as_platform_app = true})) @@ -140,7 +136,7 @@ } IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, Chromebit) { - SetDeviceType("CHROMEBIT"); + ScopedChromeOSVersionInfo version("DEVICETYPE=CHROMEBIT", base::Time::Now()); ASSERT_TRUE(RunExtensionTest( "chromeos_info_private/extended", {.custom_arg = "chromebit", .launch_as_platform_app = true})) @@ -148,7 +144,7 @@ } IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, Chromebook) { - SetDeviceType("CHROMEBOOK"); + ScopedChromeOSVersionInfo version("DEVICETYPE=CHROMEBOOK", base::Time::Now()); ASSERT_TRUE(RunExtensionTest( "chromeos_info_private/extended", {.custom_arg = "chromebook", .launch_as_platform_app = true})) @@ -156,7 +152,7 @@ } IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, Chromebox) { - SetDeviceType("CHROMEBOX"); + ScopedChromeOSVersionInfo version("DEVICETYPE=CHROMEBOX", base::Time::Now()); ASSERT_TRUE(RunExtensionTest( "chromeos_info_private/extended", {.custom_arg = "chromebox", .launch_as_platform_app = true})) @@ -164,7 +160,7 @@ } IN_PROC_BROWSER_TEST_F(ChromeOSInfoPrivateTest, UnknownDeviceType) { - SetDeviceType("UNKNOWN"); + ScopedChromeOSVersionInfo version("DEVICETYPE=UNKNOWN", base::Time::Now()); ASSERT_TRUE(RunExtensionTest( "chromeos_info_private/extended", {.custom_arg = "unknown device type", .launch_as_platform_app = true}))
diff --git a/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc b/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc index 91cedf69..6905f796 100644 --- a/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc +++ b/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc
@@ -27,6 +27,7 @@ #include "chromeos/dbus/session_manager/fake_session_manager_client.h" #include "chromeos/dbus/userdataauth/fake_userdataauth_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_service.h" #include "components/policy/policy_constants.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/chromeos/extensions/login_screen/login_state/login_state_apitest.cc b/chrome/browser/chromeos/extensions/login_screen/login_state/login_state_apitest.cc index a3578d7..50156694 100644 --- a/chrome/browser/chromeos/extensions/login_screen/login_state/login_state_apitest.cc +++ b/chrome/browser/chromeos/extensions/login_screen/login_state/login_state_apitest.cc
@@ -15,9 +15,8 @@ // Test that |loginState.getProfileType()| returns |USER_PROFILE| for // extensions not running in the signin profile. IN_PROC_BROWSER_TEST_F(LoginStateApitest, GetProfileType_UserProfile) { - EXPECT_TRUE(RunExtensionTest( - {.name = "login_screen_apis/login_state/get_profile_type", - .custom_arg = "USER_PROFILE"})); + EXPECT_TRUE(RunExtensionTest("login_screen_apis/login_state/get_profile_type", + {.custom_arg = "USER_PROFILE"})); } } // namespace extensions
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_apitest.cc b/chrome/browser/chromeos/extensions/wallpaper_private_apitest.cc index 5cf3dbe..d1fecaf 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_private_apitest.cc
@@ -21,7 +21,7 @@ chromeos::SystemSaltGetter::Get()->SetRawSaltForTesting( chromeos::SystemSaltGetter::RawSalt({1, 2, 3, 4, 5, 6, 7, 8})); ASSERT_TRUE(StartEmbeddedTestServer()); - ASSERT_TRUE(RunExtensionTest({.name = "wallpaper_manager"}, - {.load_as_component = true})) + ASSERT_TRUE( + RunExtensionTest("wallpaper_manager", {}, {.load_as_component = true})) << message_; }
diff --git a/chrome/browser/chromeos/platform_keys/key_permissions/key_permissions_pref_util.cc b/chrome/browser/chromeos/platform_keys/key_permissions/key_permissions_pref_util.cc index 8ba84ad2..4ad13e4 100644 --- a/chrome/browser/chromeos/platform_keys/key_permissions/key_permissions_pref_util.cc +++ b/chrome/browser/chromeos/platform_keys/key_permissions/key_permissions_pref_util.cc
@@ -30,9 +30,8 @@ const char kPrefKeyUsage[] = "keyUsage"; const char kPrefKeyUsageCorporate[] = "corporate"; -const base::DictionaryValue* GetPrefsEntry( - const std::string& public_key_spki_der_b64, - const PrefService* const profile_prefs) { +const base::Value* GetPrefsEntry(const std::string& public_key_spki_der_b64, + const PrefService* const profile_prefs) { if (!profile_prefs) return nullptr; @@ -41,14 +40,7 @@ if (!platform_keys) return nullptr; - const base::Value* key_entry_value = - platform_keys->FindKey(public_key_spki_der_b64); - if (!key_entry_value) - return nullptr; - - const base::DictionaryValue* key_entry = nullptr; - key_entry_value->GetAsDictionary(&key_entry); - return key_entry; + return platform_keys->FindKey(public_key_spki_der_b64); } } // namespace @@ -62,7 +54,7 @@ std::string public_key_spki_der_b64; base::Base64Encode(public_key_spki_der, &public_key_spki_der_b64); - const base::DictionaryValue* prefs_entry = + const base::Value* prefs_entry = GetPrefsEntry(public_key_spki_der_b64, profile_prefs); if (prefs_entry) { const base::Value* key_usage = prefs_entry->FindKey(kPrefKeyUsage);
diff --git a/chrome/browser/chromeos/platform_keys/platform_keys_service_browsertest.cc b/chrome/browser/chromeos/platform_keys/platform_keys_service_browsertest.cc index 1c4e49f..91d3c2a 100644 --- a/chrome/browser/chromeos/platform_keys/platform_keys_service_browsertest.cc +++ b/chrome/browser/chromeos/platform_keys/platform_keys_service_browsertest.cc
@@ -40,7 +40,6 @@ #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "chrome/test/base/testing_profile.h" #include "chromeos/login/auth/user_context.h" -#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/policy_switches.h" #include "components/signin/public/identity_manager/identity_test_utils.h" #include "content/public/browser/browser_task_traits.h"
diff --git a/chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator_unittest.cc b/chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator_unittest.cc index cc04d40..2846fbc 100644 --- a/chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator_unittest.cc +++ b/chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator_unittest.cc
@@ -24,6 +24,7 @@ #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" #include "components/policy/core/common/cloud/mock_cloud_policy_client.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "content/public/test/browser_task_environment.h" #include "services/network/test/test_network_connection_tracker.h"
diff --git a/chrome/browser/chromeos/policy/affiliation_mixin.cc b/chrome/browser/chromeos/policy/affiliation_mixin.cc index 3a06b9b..c5661ba 100644 --- a/chrome/browser/chromeos/policy/affiliation_mixin.cc +++ b/chrome/browser/chromeos/policy/affiliation_mixin.cc
@@ -8,7 +8,6 @@ #include <string> #include "chrome/browser/chromeos/policy/affiliation_test_helper.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chromeos/dbus/authpolicy/authpolicy_client.h" #include "chromeos/dbus/authpolicy/fake_authpolicy_client.h" @@ -16,7 +15,7 @@ #include "chromeos/dbus/session_manager/session_manager_client.h" #include "components/account_id/account_id.h" #include "components/policy/core/common/cloud/device_management_service.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" namespace policy {
diff --git a/chrome/browser/chromeos/policy/affiliation_mixin.h b/chrome/browser/chromeos/policy/affiliation_mixin.h index b30131d..f6b2ea3 100644 --- a/chrome/browser/chromeos/policy/affiliation_mixin.h +++ b/chrome/browser/chromeos/policy/affiliation_mixin.h
@@ -9,11 +9,10 @@ #include <utility> #include "chrome/browser/chromeos/policy/affiliation_test_helper.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "components/account_id/account_id.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" namespace policy {
diff --git a/chrome/browser/chromeos/policy/affiliation_test_helper.cc b/chrome/browser/chromeos/policy/affiliation_test_helper.cc index 016d432..1968a7d 100644 --- a/chrome/browser/chromeos/policy/affiliation_test_helper.cc +++ b/chrome/browser/chromeos/policy/affiliation_test_helper.cc
@@ -35,7 +35,7 @@ #include "components/account_id/account_id.h" #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/user_manager/known_user.h"
diff --git a/chrome/browser/chromeos/policy/affiliation_test_helper.h b/chrome/browser/chromeos/policy/affiliation_test_helper.h index 1f2ba80..f9ddc116 100644 --- a/chrome/browser/chromeos/policy/affiliation_test_helper.h +++ b/chrome/browser/chromeos/policy/affiliation_test_helper.h
@@ -9,7 +9,7 @@ #include <string> #include "base/macros.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" class AccountId;
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos_browsertest.cc b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos_browsertest.cc index 348a152..7b4de4de 100644 --- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos_browsertest.cc +++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos_browsertest.cc
@@ -10,7 +10,7 @@ #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/device_management_backend.pb.h" #include "content/public/test/browser_test.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/chrome/browser/chromeos/policy/cloud_external_data_policy_observer_unittest.cc b/chrome/browser/chromeos/policy/cloud_external_data_policy_observer_unittest.cc index 40cd4e7..e85f372 100644 --- a/chrome/browser/chromeos/policy/cloud_external_data_policy_observer_unittest.cc +++ b/chrome/browser/chromeos/policy/cloud_external_data_policy_observer_unittest.cc
@@ -35,7 +35,7 @@ #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" #include "components/policy/core/common/cloud/mock_cloud_external_data_manager.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/policy_map.h"
diff --git a/chrome/browser/chromeos/policy/component_active_directory_policy_browsertest.cc b/chrome/browser/chromeos/policy/component_active_directory_policy_browsertest.cc index 2b19606..2bfe12cd 100644 --- a/chrome/browser/chromeos/policy/component_active_directory_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/component_active_directory_policy_browsertest.cc
@@ -18,7 +18,7 @@ #include "chromeos/dbus/session_manager/fake_session_manager_client.h" #include "chromeos/tpm/stub_install_attributes.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_service.h" #include "components/user_manager/user_names.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/chromeos/policy/component_active_directory_policy_retriever_unittest.cc b/chrome/browser/chromeos/policy/component_active_directory_policy_retriever_unittest.cc index cc0e9a8b..a5b9c0a3 100644 --- a/chrome/browser/chromeos/policy/component_active_directory_policy_retriever_unittest.cc +++ b/chrome/browser/chromeos/policy/component_active_directory_policy_retriever_unittest.cc
@@ -7,7 +7,7 @@ #include "base/bind.h" #include "base/test/task_environment.h" #include "chromeos/dbus/session_manager/session_manager_client.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_test_utils.h" #include "components/policy/proto/device_management_backend.pb.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/chromeos/policy/component_active_directory_policy_service_unittest.cc b/chrome/browser/chromeos/policy/component_active_directory_policy_service_unittest.cc index 842b7efe..40bb274c 100644 --- a/chrome/browser/chromeos/policy/component_active_directory_policy_service_unittest.cc +++ b/chrome/browser/chromeos/policy/component_active_directory_policy_service_unittest.cc
@@ -8,7 +8,7 @@ #include "base/test/task_environment.h" #include "chromeos/dbus/session_manager/session_manager_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_test_utils.h"
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_browsertest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_browsertest.cc index e0639578..64ce32e 100644 --- a/chrome/browser/chromeos/policy/device_cloud_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_cloud_policy_browsertest.cc
@@ -22,7 +22,6 @@ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/extensions/chrome_test_extension_loader.h" #include "chrome/browser/extensions/extension_service.h" @@ -38,7 +37,7 @@ #include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/cloud/device_management_service.h" #include "components/policy/core/common/cloud/mock_cloud_policy_client.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_service.h" #include "components/policy/core/common/policy_switches.h" #include "components/policy/policy_constants.h"
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc index d9ac2d0..33fa7d4 100644 --- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
@@ -50,6 +50,7 @@ #include "components/policy/core/common/cloud/mock_cloud_external_data_manager.h" #include "components/policy/core/common/cloud/mock_device_management_service.h" #include "components/policy/core/common/cloud/mock_signing_service.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/schema_registry.h"
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos_unittest.cc index c341995..c529aaa 100644 --- a/chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos_unittest.cc
@@ -23,6 +23,7 @@ #include "chromeos/tpm/install_attributes.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/policy/proto/device_management_backend.pb.h"
diff --git a/chrome/browser/chromeos/policy/device_display_cros_browser_test.cc b/chrome/browser/chromeos/policy/device_display_cros_browser_test.cc index 2a1409f..ebd75d6 100644 --- a/chrome/browser/chromeos/policy/device_display_cros_browser_test.cc +++ b/chrome/browser/chromeos/policy/device_display_cros_browser_test.cc
@@ -7,7 +7,6 @@ #include "ash/display/display_configuration_controller.h" #include "ash/shell.h" #include "chrome/browser/ash/login/ui/login_display_host.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "chromeos/dbus/session_manager/session_manager_client.h"
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc index 42bd788..4d39863 100644 --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -78,7 +78,6 @@ #include "chrome/browser/chromeos/policy/device_local_account.h" #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_service.h" @@ -120,7 +119,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h"
diff --git a/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc b/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc index 9c6b43a..f13c35d6 100644 --- a/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc
@@ -35,7 +35,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/cloud_policy_service.h" #include "components/policy/core/common/cloud/mock_device_management_service.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/policy_bundle.h"
diff --git a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc index b0959790..f5554a2 100644 --- a/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_login_screen_policy_browsertest.cc
@@ -24,7 +24,6 @@ #include "chrome/browser/ash/login/test/test_predicate_waiter.h" #include "chrome/browser/ash/login/ui/login_display_host.h" #include "chrome/browser/ash/profiles/profile_helper.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/policy/device_policy_builder.h b/chrome/browser/chromeos/policy/device_policy_builder.h index c1d1629..cadb398 100644 --- a/chrome/browser/chromeos/policy/device_policy_builder.h +++ b/chrome/browser/chromeos/policy/device_policy_builder.h
@@ -5,13 +5,13 @@ #ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_POLICY_BUILDER_H_ #define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_POLICY_BUILDER_H_ -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/chrome_device_policy.pb.h" namespace policy { -typedef TypedPolicyBuilder<enterprise_management::ChromeDeviceSettingsProto> - DevicePolicyBuilder; +using DevicePolicyBuilder = + TypedPolicyBuilder<enterprise_management::ChromeDeviceSettingsProto>; } // namespace policy
diff --git a/chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager_browsertest.cc b/chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager_browsertest.cc index d447e1f8..14c9829 100644 --- a/chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager_browsertest.cc
@@ -22,7 +22,6 @@ #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base.h" #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_util.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cloud_external_data_manager.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/ui/browser.h"
diff --git a/chrome/browser/chromeos/policy/device_policy_cros_browser_test.h b/chrome/browser/chromeos/policy/device_policy_cros_browser_test.h index 1c16a64..3f40e8d 100644 --- a/chrome/browser/chromeos/policy/device_policy_cros_browser_test.h +++ b/chrome/browser/chromeos/policy/device_policy_cros_browser_test.h
@@ -13,6 +13,7 @@ #include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "chromeos/dbus/dbus_thread_manager.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/prefs/pref_change_registrar.h" namespace chromeos {
diff --git a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc index 7fe940f..f0088cd 100644 --- a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc +++ b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc
@@ -18,6 +18,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/ash/login/test/device_state_mixin.h" #include "chrome/browser/chromeos/policy/device_display_cros_browser_test.h" +#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chromeos/dbus/session_manager/fake_session_manager_client.h" #include "chromeos/dbus/session_manager/session_manager_client.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler_browsertest.cc b/chrome/browser/chromeos/policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler_browsertest.cc index 749c6f2..65141f11 100644 --- a/chrome/browser/chromeos/policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler_browsertest.cc +++ b/chrome/browser/chromeos/policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler_browsertest.cc
@@ -17,7 +17,6 @@ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_util.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/common/chrome_features.h" #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc b/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc index 69f9c9e1..1be602d 100644 --- a/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/login_screen_accessibility_policy_browsertest.cc
@@ -20,7 +20,6 @@ #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc b/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc index 626a9fd..914f4308 100644 --- a/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/login_screen_default_policy_browsertest.cc
@@ -19,7 +19,6 @@ #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/magnification_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/chromeos/policy/minimum_version_policy_handler_browsertest.cc b/chrome/browser/chromeos/policy/minimum_version_policy_handler_browsertest.cc index 4a08fa3..4ff19ad 100644 --- a/chrome/browser/chromeos/policy/minimum_version_policy_handler_browsertest.cc +++ b/chrome/browser/chromeos/policy/minimum_version_policy_handler_browsertest.cc
@@ -11,7 +11,7 @@ #include "base/json/json_writer.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" -#include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/test/scoped_feature_list.h" #include "base/time/default_clock.h" #include "base/time/time.h" @@ -32,6 +32,7 @@ #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" +#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/chromeos/policy/minimum_version_policy_handler.h" #include "chrome/browser/chromeos/policy/minimum_version_policy_handler_delegate_impl.h" @@ -62,6 +63,7 @@ #include "content/public/test/browser_test.h" #include "content/public/test/test_utils.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/cros_system_api/dbus/service_constants.h" namespace em = enterprise_management; @@ -99,12 +101,6 @@ ->GetMinimumVersionPolicyHandler(); } -void SetPlatformVersion(const std::string& platform_version) { - const std::string lsb_release = base::StringPrintf( - "CHROMEOS_RELEASE_VERSION=%s", platform_version.c_str()); - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, base::Time::Now()); -} - } // namespace class MinimumVersionPolicyTestBase : public chromeos::LoginManagerTest { @@ -120,7 +116,9 @@ fake_update_engine_client_ = fake_update_engine_client.get(); chromeos::DBusThreadManager::GetSetterForTesting()->SetUpdateEngineClient( std::move(fake_update_engine_client)); - SetPlatformVersion(kCurrentVersion); + const std::string lsb_release = + base::StringPrintf("CHROMEOS_RELEASE_VERSION=%s", kCurrentVersion); + version_info_.emplace(lsb_release, base::Time::Now()); } // Set new value for policy and wait till setting is changed. @@ -140,6 +138,7 @@ chromeos::DeviceStateMixin device_state_{ &mixin_host_, chromeos::DeviceStateMixin::State::OOBE_COMPLETED_CLOUD_ENROLLED}; + absl::optional<base::test::ScopedChromeOSVersionInfo> version_info_; }; MinimumVersionPolicyTestBase::MinimumVersionPolicyTestBase() {
diff --git a/chrome/browser/chromeos/policy/network_policy_application_browsertest.cc b/chrome/browser/chromeos/policy/network_policy_application_browsertest.cc index f1f20623..866ad0a 100644 --- a/chrome/browser/chromeos/policy/network_policy_application_browsertest.cc +++ b/chrome/browser/chromeos/policy/network_policy_application_browsertest.cc
@@ -21,7 +21,6 @@ #include "chromeos/network/network_policy_observer.h" #include "components/account_id/account_id.h" #include "components/policy/core/browser/browser_policy_connector.h" -#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/policy_constants.h"
diff --git a/chrome/browser/chromeos/policy/power_policy_browsertest.cc b/chrome/browser/chromeos/policy/power_policy_browsertest.cc index 9c84007..ce69e09 100644 --- a/chrome/browser/chromeos/policy/power_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/power_policy_browsertest.cc
@@ -23,7 +23,6 @@ #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" #include "chrome/browser/lifetime/application_lifetime.h" @@ -43,7 +42,7 @@ #include "components/account_id/account_id.h" #include "components/policy/core/common/cloud/cloud_policy_core.h" #include "components/policy/core/common/cloud/cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/mock_policy_service.h" #include "components/policy/core/common/policy_service.h"
diff --git a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc index 85d47bd6..f83d04e9 100644 --- a/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/child_status_collector_browsertest.cc
@@ -15,9 +15,7 @@ #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" -#include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "base/system/sys_info.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_path_override.h" #include "base/threading/thread_task_runner_handle.h" @@ -382,12 +380,6 @@ .WillRepeatedly(Return(true)); } - void MockPlatformVersion(const std::string& platform_version) { - const std::string lsb_release = base::StringPrintf( - "CHROMEOS_RELEASE_VERSION=%s", platform_version.c_str()); - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, Time::Now()); - } - // Convenience method. int64_t ActivePeriodMilliseconds() { return kIdlePollIntervalSeconds * 1000; }
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc index 92c83ba..8fff7e0 100644 --- a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
@@ -27,6 +27,7 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/system/sys_info.h" +#include "base/test/scoped_chromeos_version_info.h" #include "base/test/scoped_feature_list.h" #include "base/test/scoped_path_override.h" #include "base/test/simple_test_clock.h" @@ -110,6 +111,7 @@ using base::Time; using base::TimeDelta; +using base::test::ScopedChromeOSVersionInfo; using chromeos::disks::DiskMountManager; using ::testing::Return; using ::testing::ReturnRef; @@ -1026,11 +1028,12 @@ SetDeviceLocalAccounts(&owner_settings_service_, accounts); } - void MockPlatformVersion(const std::string& platform_version) { + std::unique_ptr<ScopedChromeOSVersionInfo> MockPlatformVersion( + const std::string& platform_version) { const std::string lsb_release = base::StringPrintf( "CHROMEOS_RELEASE_VERSION=%s", platform_version.c_str()); - base::SysInfo::SetChromeOSVersionInfoForTest(lsb_release, - base::Time::Now()); + return std::make_unique<ScopedChromeOSVersionInfo>(lsb_release, + base::Time::Now()); } void MockAutoLaunchKioskAppWithRequiredPlatformVersion( @@ -2557,7 +2560,7 @@ } TEST_F(DeviceStatusCollectorTest, NoOsUpdateStatusByDefault) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2566,7 +2569,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportOsUpdateStatusUpToDate) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportOsUpdateStatus, true); @@ -2589,7 +2592,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportOsUpdateStatusUpToDate_NonKiosk) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportOsUpdateStatus, true); GetStatus(); @@ -2602,7 +2605,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportOsUpdateStatus) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportOsUpdateStatus, true); MockAutoLaunchKioskAppWithRequiredPlatformVersion( @@ -2648,7 +2651,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportOsUpdateStatus_NonKiosk) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportOsUpdateStatus, true); @@ -2701,7 +2704,7 @@ } TEST_F(DeviceStatusCollectorTest, NoLastCheckedTimestampByDefault) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2710,7 +2713,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportLastCheckedTimestamp) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2739,7 +2742,7 @@ } TEST_F(DeviceStatusCollectorTest, NoLastRebootTimestampByDefault) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2748,7 +2751,7 @@ } TEST_F(DeviceStatusCollectorTest, ReportLastRebootTimestamp) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2767,7 +2770,7 @@ } TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppByDefault) { - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); status_collector_->set_kiosk_account( @@ -2783,7 +2786,7 @@ TEST_F(DeviceStatusCollectorTest, NoRunningKioskAppWhenNotInKioskSession) { scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportRunningKioskApp, true); - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, kDefaultPlatformVersion); @@ -2794,7 +2797,7 @@ TEST_F(DeviceStatusCollectorTest, ReportRunningKioskApp) { scoped_testing_cros_settings_.device_settings()->SetBoolean( chromeos::kReportRunningKioskApp, true); - MockPlatformVersion(kDefaultPlatformVersion); + auto scoped_version = MockPlatformVersion(kDefaultPlatformVersion); MockAutoLaunchKioskAppWithRequiredPlatformVersion( fake_kiosk_device_local_account_, "1235");
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos_unittest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos_unittest.cc index 728ce84..d434195 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos_unittest.cc
@@ -27,7 +27,7 @@ #include "chromeos/network/onc/onc_test_utils.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_types.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/cloud_policy.pb.h"
diff --git a/chrome/browser/chromeos/policy/variations_service_policy_browsertest.cc b/chrome/browser/chromeos/policy/variations_service_policy_browsertest.cc index 26a1a6b..f4615d1 100644 --- a/chrome/browser/chromeos/policy/variations_service_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/variations_service_policy_browsertest.cc
@@ -8,7 +8,6 @@ #include "base/strings/string_util.h" #include "base/test/metrics/histogram_tester.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/policy/device_policy_builder.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/test/base/testing_browser_process.h" #include "components/policy/proto/chrome_device_policy.pb.h"
diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java index 7f502fb..0e5fe8d 100644 --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/settings/DownloadSettingsTest.java
@@ -18,7 +18,6 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Criteria; import org.chromium.base.test.util.CriteriaHelper; -import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.Matchers; import org.chromium.chrome.browser.download.DownloadDialogBridge; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -99,25 +98,25 @@ @Test @MediumTest @EnableFeatures(ChromeFeatureList.DOWNLOAD_LATER) - @FlakyTest(message = "https://crbug.com/1213183") public void testGeneralSettings() throws Exception { mSettingsActivityTestRule.startSettingsActivity(); assertPreference(DownloadSettings.PREF_LOCATION_CHANGE); assertPreference(DownloadSettings.PREF_LOCATION_PROMPT_ENABLED); assertPreference(DownloadSettings.PREF_DOWNLOAD_LATER_PROMPT_ENABLED); assertPreference(DownloadSettings.PREF_PREFETCHING_ENABLED); + mSettingsActivityTestRule.getActivity().finish(); } @Test @MediumTest @DisableFeatures(ChromeFeatureList.DOWNLOAD_LATER) - @FlakyTest(message = "https://crbug.com/1213183") public void testWithoutDownloadLater() throws Exception { mSettingsActivityTestRule.startSettingsActivity(); assertPreference(DownloadSettings.PREF_LOCATION_CHANGE); assertPreference(DownloadSettings.PREF_LOCATION_PROMPT_ENABLED); assertPreference(DownloadSettings.PREF_DOWNLOAD_LATER_PROMPT_ENABLED, Matchers.nullValue()); assertPreference(DownloadSettings.PREF_PREFETCHING_ENABLED); + mSettingsActivityTestRule.getActivity().finish(); } @Test @@ -127,6 +126,7 @@ waitForPolicyReady(); mSettingsActivityTestRule.startSettingsActivity(); verifyLocationPromptPolicy(true); + mSettingsActivityTestRule.getActivity().finish(); } @Test @@ -136,5 +136,6 @@ waitForPolicyReady(); mSettingsActivityTestRule.startSettingsActivity(); verifyLocationPromptPolicy(false); + mSettingsActivityTestRule.getActivity().finish(); } }
diff --git a/chrome/browser/enterprise/browser_management/browser_management_service.h b/chrome/browser/enterprise/browser_management/browser_management_service.h index 579080d..9dc2e92 100644 --- a/chrome/browser/enterprise/browser_management/browser_management_service.h +++ b/chrome/browser/enterprise/browser_management/browser_management_service.h
@@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_ENTERPRISE_BROWSER_MANAGEMENT_BROWSER_MANAGEMENT_SERVICE_H_ #define CHROME_BROWSER_ENTERPRISE_BROWSER_MANAGEMENT_BROWSER_MANAGEMENT_SERVICE_H_ -#include "base/containers/flat_set.h" #include "components/policy/core/common/management/management_service.h" #include "components/policy/policy_export.h"
diff --git a/chrome/browser/enterprise/browser_management/browser_management_status_provider.h b/chrome/browser/enterprise/browser_management/browser_management_status_provider.h index 6e74ecb..b3458ff 100644 --- a/chrome/browser/enterprise/browser_management/browser_management_status_provider.h +++ b/chrome/browser/enterprise/browser_management/browser_management_status_provider.h
@@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_ENTERPRISE_BROWSER_MANAGEMENT_BROWSER_MANAGEMENT_STATUS_PROVIDER_H_ #define CHROME_BROWSER_ENTERPRISE_BROWSER_MANAGEMENT_BROWSER_MANAGEMENT_STATUS_PROVIDER_H_ -#include "base/containers/flat_set.h" #include "components/policy/core/common/management/management_service.h" using EnterpriseManagementAuthority = policy::EnterpriseManagementAuthority;
diff --git a/chrome/browser/enterprise/connectors/file_system/box_uploader.cc b/chrome/browser/enterprise/connectors/file_system/box_uploader.cc index 8bfa7a04..965a6ac 100644 --- a/chrome/browser/enterprise/connectors/file_system/box_uploader.cc +++ b/chrome/browser/enterprise/connectors/file_system/box_uploader.cc
@@ -5,6 +5,10 @@ #include "chrome/browser/enterprise/connectors/file_system/box_uploader.h" #include "base/files/file_util.h" +#include "base/i18n/time_formatting.h" +#include "base/i18n/unicodestring.h" +#include "base/metrics/histogram_functions.h" +#include "base/strings/stringprintf.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "chrome/browser/enterprise/connectors/connectors_prefs.h" @@ -12,6 +16,8 @@ #include "chrome/browser/enterprise/connectors/file_system/box_upload_file_chunks_handler.h" #include "components/prefs/pref_service.h" #include "net/http/http_status_code.h" +#include "third_party/icu/source/common/unicode/utypes.h" +#include "third_party/icu/source/i18n/unicode/calendar.h" namespace { @@ -48,7 +54,9 @@ BoxUploader::BoxUploader(download::DownloadItem* download_item) : local_file_path_(download_item->GetFullPath()), - target_file_name_(download_item->GetTargetFilePath().BaseName()) {} + target_file_name_(download_item->GetTargetFilePath().BaseName()), + download_start_time_(download_item->GetStartTime()), + uniquifier_(0) {} BoxUploader::~BoxUploader() = default; @@ -159,18 +167,42 @@ TryCurrentApiCall(); } +void BoxUploader::LogUniquifierCountToUma() { + base::UmaHistogramSparse("Enterprise.FileSystem.Uniquifier", uniquifier_); +} + void BoxUploader::OnPreflightCheckResponse(bool success, int response_code) { if (success) { // Create an upload session with the same folder_id and name and continue CHECK_EQ(response_code, net::HTTP_OK); + LogUniquifierCountToUma(); SetCurrentApiCall(MakeFileUploadApiCall()); TryCurrentApiCall(); return; } switch (response_code) { case net::HTTP_CONFLICT: - // TODO(https://crbug.com/1198617) Deal with filename conflict. - OnApiCallFlowFailure(); + if (uniquifier_ < + EnterpriseFilesystemUploadAttemptCount::kMaxRenamedWithSuffix) { + ++uniquifier_; + } else if (uniquifier_ == EnterpriseFilesystemUploadAttemptCount:: + kMaxRenamedWithSuffix) { + uniquifier_ = + EnterpriseFilesystemUploadAttemptCount::kTimestampBasedName; + } else { + uniquifier_ = EnterpriseFilesystemUploadAttemptCount::kAbandonedUpload; + } + + if (uniquifier_ < + EnterpriseFilesystemUploadAttemptCount::kAbandonedUpload) { + SetCurrentApiCall(MakePreflightCheckApiCall()); + TryCurrentApiCall(); + } else { + // TODO(https://crbug.com/1168815): Surface this error to user. + DLOG(WARNING) << "Box upload failed for file " << GetTargetFileName(); + LogUniquifierCountToUma(); + OnApiCallFlowFailure(); + } break; case net::HTTP_UNAUTHORIZED: // Authentication failure, we need to reauth and redo the preflight check. @@ -225,7 +257,47 @@ } const base::FilePath BoxUploader::GetTargetFileName() const { - return target_file_name_; + if (uniquifier_ == EnterpriseFilesystemUploadAttemptCount::kNotRenamed) { + return target_file_name_; + } else if (uniquifier_ <= + EnterpriseFilesystemUploadAttemptCount::kMaxRenamedWithSuffix) { + return target_file_name_.InsertBeforeExtensionASCII( + base::StringPrintf(" (%d)", uniquifier_)); + } else if (uniquifier_ == + EnterpriseFilesystemUploadAttemptCount::kTimestampBasedName) { + // Generate an ISO8601 compliant local timestamp suffix that avoids + // reserved characters that are forbidden on some OSes like Windows. + base::Time::Exploded exploded; + download_start_time_.LocalExplode(&exploded); + + // Instead of using the raw_offset, use the offset in effect now. + // For instance, US Pacific Time, the offset shown will be -7 in summer + // while it'll be -8 in winter. Time zone information appended to the format + // generated by CreateUniqueFilename in + // components/download/internal/common/download_path_reservation_tracker.cc + int raw_offset, dst_offset; + UDate now = icu::Calendar::getNow(); + std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault()); + UErrorCode status = U_ZERO_ERROR; + zone.get()->getOffset(now, false, raw_offset, dst_offset, status); + DCHECK(U_SUCCESS(status)); + int offset = raw_offset + dst_offset; + // |offset| is in msec. + int minute_offset = offset / 60000; + int hour_offset = minute_offset / 60; + int min_remainder = std::abs(minute_offset) % 60; + // Some timezones have a non-integral hour offset. So, we need to use hh:mm + // form. + std::string suffix = base::StringPrintf( + " - %04d-%02d-%02dT%02d%02d%02d.%03d UTC%+dh%02d", exploded.year, + exploded.month, exploded.day_of_month, exploded.hour, exploded.minute, + exploded.second, exploded.millisecond, hour_offset, min_remainder); + return target_file_name_.InsertBeforeExtensionASCII(suffix); + } else { + DCHECK_EQ(uniquifier_, + EnterpriseFilesystemUploadAttemptCount::kAbandonedUpload); + return target_file_name_.InsertBeforeExtensionASCII(".abandoned"); + } } const std::string BoxUploader::GetFolderId() {
diff --git a/chrome/browser/enterprise/connectors/file_system/box_uploader.h b/chrome/browser/enterprise/connectors/file_system/box_uploader.h index a625cc8..933c805 100644 --- a/chrome/browser/enterprise/connectors/file_system/box_uploader.h +++ b/chrome/browser/enterprise/connectors/file_system/box_uploader.h
@@ -77,6 +77,23 @@ void SetCurrentApiCall(std::unique_ptr<OAuth2ApiCallFlow> api_call); private: + // The largest number of retries attempted in OnPreflightCheckResponse. + enum EnterpriseFilesystemUploadAttemptCount { + kNotRenamed = 0, + kRenamedWithSuffix1 = 1, + kRenamedWithSuffix2 = 2, + kRenamedWithSuffix3 = 3, + kRenamedWithSuffix4 = 4, + kRenamedWithSuffix5 = 5, + kRenamedWithSuffix6 = 6, + kRenamedWithSuffix7 = 7, + kRenamedWithSuffix8 = 8, + kRenamedWithSuffix9 = 9, + kMaxRenamedWithSuffix = kRenamedWithSuffix9, + kTimestampBasedName = 1000, + kAbandonedUpload = 2000, + }; + // Box API call pre-upload steps: std::unique_ptr<OAuth2ApiCallFlow> MakeFindUpstreamFolderApiCall(); std::unique_ptr<OAuth2ApiCallFlow> MakeCreateUpstreamFolderApiCall(); @@ -90,6 +107,7 @@ int response_code, const std::string& folder_id); void OnPreflightCheckResponse(bool success, int response_code); + void LogUniquifierCountToUma(); // The followings are not necessarily specific to Box: // Post a task to ThreadPool to delete the local file, after the entire file @@ -103,6 +121,9 @@ // File details. const base::FilePath local_file_path_; // Path of the local temporary file. const base::FilePath target_file_name_; // File name to be used finally. + const base::Time download_start_time_; // Start time of the download. + unsigned int + uniquifier_; // Number to be appended to the filename to make it unique. // Callback when API call gives Authenetication Error. base::RepeatingCallback<void(void)> authentication_retry_callback_; // Callback when the entire flow is completed to notify the download thread.
diff --git a/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.cc b/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.cc index fc19f010..af25d9f 100644 --- a/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.cc +++ b/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.cc
@@ -27,11 +27,15 @@ //////////////////////////////////////////////////////////////////////////////// DownloadItemForTest::DownloadItemForTest( - base::FilePath::StringPieceType file_name) { + base::FilePath::StringPieceType file_name, + base::Time::Exploded start_time_exploded) { CHECK(temp_dir_.CreateUniqueTempDir()); file_path_ = temp_dir_.GetPath().Append(file_name); CHECK_EQ(file_path_.FinalExtension(), FILE_PATH_LITERAL(".crdownload")); SetTargetFilePath(file_path_.RemoveFinalExtension()); + base::Time start_time; + DCHECK(base::Time::FromLocalExploded(start_time_exploded, &start_time)); + SetStartTime(start_time); } const base::FilePath& DownloadItemForTest::GetFullPath() const {
diff --git a/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.h b/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.h index d61bff64..d801112 100644 --- a/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.h +++ b/chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.h
@@ -10,6 +10,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/run_loop.h" #include "base/test/task_environment.h" +#include "base/time/time.h" #include "chrome/browser/enterprise/connectors/file_system/box_api_call_flow.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile_manager.h" @@ -26,9 +27,12 @@ class BoxUploader; +// 1994-04-27 00:00:00.001 GMT+2 (South Africa Standard Time) +const base::Time::Exploded kTestDateTime = {1994, 4, 2, 27, 0, 0, 0, 1}; class DownloadItemForTest : public content::FakeDownloadItem { public: - explicit DownloadItemForTest(base::FilePath::StringPieceType file_name); + explicit DownloadItemForTest(base::FilePath::StringPieceType file_name, + base::Time::Exploded start_time = kTestDateTime); const base::FilePath& GetFullPath() const override; protected:
diff --git a/chrome/browser/enterprise/connectors/file_system/box_uploader_unittest.cc b/chrome/browser/enterprise/connectors/file_system/box_uploader_unittest.cc index 6bccfdc..a56d1c7 100644 --- a/chrome/browser/enterprise/connectors/file_system/box_uploader_unittest.cc +++ b/chrome/browser/enterprise/connectors/file_system/box_uploader_unittest.cc
@@ -5,8 +5,11 @@ // A complete set of unit tests for BoxUploader. #include "chrome/browser/enterprise/connectors/file_system/box_uploader.h" - +#include "base/i18n/rtl.h" #include "base/json/json_writer.h" +#include "base/test/icu_test_util.h" +#include "base/test/metrics/histogram_tester.h" +#include "base/time/time.h" #include "chrome/browser/enterprise/connectors/file_system/box_api_call_test_helper.h" #include "chrome/browser/enterprise/connectors/file_system/box_uploader_test_helper.h" @@ -65,6 +68,8 @@ base::OnceCallback<void(void)> preupload_cb) : BoxUploader(download_item), preupload_cb_(std::move(preupload_cb)) {} + using BoxUploader::GetTargetFileName; + protected: // These 2 methods are overridden to intercept the upload API call to test the // pre-upload steps specifically. @@ -225,19 +230,81 @@ EXPECT_FALSE(download_thread_cb_called_); // InterceptedPreUpload() above. } -TEST_F(BoxUploader_PreflightCheckTest, Conflict) { - // Preflight check implies a conflict (dummy body since not reading from it): +TEST_F(BoxUploader_PreflightCheckTest, ConflictAndSuccessAfterkMaxUniqueTries) { + // Preflight check implies a conflict until retries time out. + base::HistogramTester histogram_tester; + + for (int i = 0; i < 10; i++) { + AddSequentialFetchResult(kFileSystemBoxPreflightCheckUrl, + net::HTTP_CONFLICT); + } + AddSequentialFetchResult(kFileSystemBoxPreflightCheckUrl, net::HTTP_OK); + base::test::ScopedRestoreICUDefaultLocale restore_locale; + base::i18n::SetICUDefaultLocale("en_ZA"); + base::test::ScopedRestoreDefaultTimezone sast_time("Africa/Johannesburg"); + + uploader_->TryTask(url_factory_, "test_token"); + RunWithQuitClosure(); + ASSERT_EQ(authentication_retry_, 0); + EXPECT_EQ(uploader_->GetFolderIdForTesting(), kFileSystemBoxFolderIdInPref); + ASSERT_TRUE(upload_initiated_); + EXPECT_EQ(uploader_->GetTargetFileName().MaybeAsASCII(), + "box_uploader_test - 1994-04-27T000000.001 UTC+2h00.txt"); + // kTimestampBasedName = 1000 + histogram_tester.ExpectUniqueSample("Enterprise.FileSystem.Uniquifier", 1000, + 1); + EXPECT_FALSE(download_thread_cb_called_); // InterceptedPreUpload() above. +} + +TEST_F(BoxUploader_PreflightCheckTest, ConflictEvenWithTimestamp) { + // Preflight check implies a conflict including even for the timestamp based + // filename. The upload should finally fail. + base::HistogramTester histogram_tester; + AddFetchResult(kFileSystemBoxPreflightCheckUrl, net::HTTP_CONFLICT); + base::test::ScopedRestoreICUDefaultLocale restore_locale; + base::i18n::SetICUDefaultLocale("en_ZA"); + base::test::ScopedRestoreDefaultTimezone sast_time("Africa/Johannesburg"); + + uploader_->TryTask(url_factory_, "test_token"); + RunWithQuitClosure(); + ASSERT_EQ(authentication_retry_, 0); + EXPECT_EQ(uploader_->GetFolderIdForTesting(), kFileSystemBoxFolderIdInPref); + ASSERT_FALSE(upload_initiated_); + + // The last tried filename is timestamp based even though it also fails. + EXPECT_EQ(uploader_->GetTargetFileName().MaybeAsASCII(), + "box_uploader_test.abandoned.txt"); + // kAbandonedUpload = 2000 + histogram_tester.ExpectUniqueSample("Enterprise.FileSystem.Uniquifier", 2000, + 1); + EXPECT_TRUE(download_thread_cb_called_) + << "Conflict, including with timestamp, should terminate flow."; +} + +TEST_F(BoxUploader_PreflightCheckTest, ConflictThenSuccess) { + // Preflight check results for successive filenames: + base::HistogramTester histogram_tester; + + // box_uploader_test.txt + AddSequentialFetchResult(kFileSystemBoxPreflightCheckUrl, net::HTTP_CONFLICT); + + // box_uploader_test (1).txt + AddSequentialFetchResult(kFileSystemBoxPreflightCheckUrl, net::HTTP_CONFLICT); + + // box_uploader_test (2).txt + AddSequentialFetchResult(kFileSystemBoxPreflightCheckUrl, net::HTTP_OK); uploader_->TryTask(url_factory_, "test_token"); RunWithQuitClosure(); ASSERT_EQ(authentication_retry_, 0); EXPECT_EQ(uploader_->GetFolderIdForTesting(), kFileSystemBoxFolderIdInPref); - ASSERT_FALSE(upload_initiated_); - EXPECT_TRUE(download_thread_cb_called_) << "Conflict should terminate flow."; - // Currently the upload is abandoned. - // TODO(https://crbug.com/1198617): Update once the conflict is handled. + ASSERT_TRUE(upload_initiated_); + EXPECT_EQ(uploader_->GetTargetFileName().MaybeAsASCII(), + "box_uploader_test (2).txt"); + histogram_tester.ExpectUniqueSample("Enterprise.FileSystem.Uniquifier", 2, 1); + EXPECT_FALSE(download_thread_cb_called_); // InterceptedPreUpload() above. } TEST_F(BoxUploader_PreflightCheckTest, CachedFolder404_ButFound) {
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_apitest.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_apitest.cc index 1af1db0c..96f04b0 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_private_apitest.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_private_apitest.cc
@@ -40,9 +40,8 @@ autofill::WaitForPersonalDataManagerToBeLoaded(profile()); const std::string page_url = "main.html?" + subtest; - return RunExtensionTest( - {.name = "autofill_private", .page_url = page_url.c_str()}, - {.load_as_component = true}); + return RunExtensionTest("autofill_private", {.page_url = page_url.c_str()}, + {.load_as_component = true}); } };
diff --git a/chrome/browser/extensions/api/bookmarks/bookmark_apitest.cc b/chrome/browser/extensions/api/bookmarks/bookmark_apitest.cc index 4dd771e..b58a9295 100644 --- a/chrome/browser/extensions/api/bookmarks/bookmark_apitest.cc +++ b/chrome/browser/extensions/api/bookmarks/bookmark_apitest.cc
@@ -60,7 +60,7 @@ ASSERT_EQ(2u, managed->managed_node()->children().size()); ASSERT_TRUE(RunExtensionTest( - {.name = "bookmarks"}, + "bookmarks", {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker})) << message_; }
diff --git a/chrome/browser/extensions/api/command_line_private/command_line_private_apitest.cc b/chrome/browser/extensions/api/command_line_private/command_line_private_apitest.cc index 4b6686ce..4b0537a 100644 --- a/chrome/browser/extensions/api/command_line_private/command_line_private_apitest.cc +++ b/chrome/browser/extensions/api/command_line_private/command_line_private_apitest.cc
@@ -20,7 +20,7 @@ }; IN_PROC_BROWSER_TEST_F(CommandLinePrivateApiTest, Basics) { - EXPECT_TRUE(RunExtensionTest({.name = "command_line/basics"}, - {.load_as_component = true})) + EXPECT_TRUE( + RunExtensionTest("command_line/basics", {}, {.load_as_component = true})) << message_; }
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_apitest.cc b/chrome/browser/extensions/api/content_settings/content_settings_apitest.cc index 794011b..fd56adf 100644 --- a/chrome/browser/extensions/api/content_settings/content_settings_apitest.cc +++ b/chrome/browser/extensions/api/content_settings/content_settings_apitest.cc
@@ -224,7 +224,7 @@ std::unique_ptr<ScopedProfileKeepAlive> profile_keep_alive_; }; -class ExtensionContentSettingsApiLazyTest +class ExtensionContentSettingsApiTestWithContextType : public ExtensionContentSettingsApiTest, public testing::WithParamInterface<ContextType> { protected: @@ -235,17 +235,18 @@ } }; -INSTANTIATE_TEST_SUITE_P(EventPage, - ExtensionContentSettingsApiLazyTest, - ::testing::Values(ContextType::kEventPage)); +INSTANTIATE_TEST_SUITE_P(PersistentBackground, + ExtensionContentSettingsApiTestWithContextType, + ::testing::Values(ContextType::kPersistentBackground)); INSTANTIATE_TEST_SUITE_P(ServiceWorker, - ExtensionContentSettingsApiLazyTest, + ExtensionContentSettingsApiTestWithContextType, ::testing::Values(ContextType::kServiceWorker)); -IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiLazyTest, Standard) { +IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiTestWithContextType, + Standard) { CheckContentSettingsDefault(); - const char kExtensionPath[] = "content_settings/standard"; + static constexpr char kExtensionPath[] = "content_settings/standard"; EXPECT_TRUE(RunExtensionTest(kExtensionPath, {.page_url = "test.html"})) << message_; @@ -267,7 +268,7 @@ CheckContentSettingsDefault(); } -IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiLazyTest, +IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiTestWithContextType, UnsupportedDefaultSettings) { const char kExtensionPath[] = "content_settings/unsupporteddefaultsettings"; EXPECT_TRUE(RunExtensionTest(kExtensionPath)) << message_; @@ -275,7 +276,7 @@ // Tests if an extension clearing content settings for one content type leaves // the others unchanged. -IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiLazyTest, +IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiTestWithContextType, ClearProperlyGranular) { const char kExtensionPath[] = "content_settings/clearproperlygranular"; EXPECT_TRUE(RunLazyTest(kExtensionPath)) << message_; @@ -323,7 +324,7 @@ << message_; } -IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiLazyTest, +IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiTestWithContextType, EmbeddedSettingsMetric) { base::HistogramTester histogram_tester; const char kExtensionPath[] = "content_settings/embeddedsettingsmetric"; @@ -352,7 +353,8 @@ "ContentSettings.ExtensionNonEmbeddedSettingSet", 2); } -IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiLazyTest, ConsoleErrorTest) { +IN_PROC_BROWSER_TEST_P(ExtensionContentSettingsApiTestWithContextType, + ConsoleErrorTest) { constexpr char kExtensionPath[] = "content_settings/disablepluginsapi"; const extensions::Extension* extension = LoadExtension(test_data_dir_.AppendASCII(kExtensionPath));
diff --git a/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc b/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc index 32802feb..99d6875 100644 --- a/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc +++ b/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc
@@ -51,7 +51,7 @@ protected: bool RunTest(const char* path) { return RunExtensionTest( - {.name = path}, + path, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); } };
diff --git a/chrome/browser/extensions/api/cookies/cookies_apitest.cc b/chrome/browser/extensions/api/cookies/cookies_apitest.cc index 8c39977..fde72b7e 100644 --- a/chrome/browser/extensions/api/cookies/cookies_apitest.cc +++ b/chrome/browser/extensions/api/cookies/cookies_apitest.cc
@@ -25,7 +25,7 @@ bool allow_in_incognito = false, const char* custom_arg = nullptr) { return RunExtensionTest( - {.name = extension_name, .custom_arg = custom_arg}, + extension_name, {.custom_arg = custom_arg}, {.allow_in_incognito = allow_in_incognito, .load_as_service_worker = GetParam() == ContextType::kServiceWorker}); }
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc index 1e1e87d..b924de49 100644 --- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc +++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc
@@ -51,7 +51,7 @@ bool RunTest(const std::string& extension_path) { return RunExtensionTest( - {.name = extension_path.c_str()}, + extension_path.c_str(), {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); }
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc index 63e0c03..743f636 100644 --- a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc
@@ -33,9 +33,9 @@ mojom::ManifestLocation::kInternal)); LoadExtension(base_dir.AppendASCII("simple_extension")); - ASSERT_TRUE(RunExtensionTest( - {.name = "developer/test", .launch_as_platform_app = true}, - {.load_as_component = true})); + ASSERT_TRUE(RunExtensionTest("developer/test", + {.launch_as_platform_app = true}, + {.load_as_component = true})); } // Tests opening the developer tools for an app window.
diff --git a/chrome/browser/extensions/api/enterprise_device_attributes/enterprise_device_attributes_apitest.cc b/chrome/browser/extensions/api/enterprise_device_attributes/enterprise_device_attributes_apitest.cc index 3047fc9..7b051c16 100644 --- a/chrome/browser/extensions/api/enterprise_device_attributes/enterprise_device_attributes_apitest.cc +++ b/chrome/browser/extensions/api/enterprise_device_attributes/enterprise_device_attributes_apitest.cc
@@ -129,8 +129,8 @@ IN_PROC_BROWSER_TEST_F( ExtensionApiTest, EnterpriseDeviceAttributesIsRestrictedToPolicyExtension) { - ASSERT_TRUE(RunExtensionTest({.name = "enterprise_device_attributes", - .page_url = "api_not_available.html"}, + ASSERT_TRUE(RunExtensionTest("enterprise_device_attributes", + {.page_url = "api_not_available.html"}, {.ignore_manifest_warnings = true})); base::FilePath extension_path =
diff --git a/chrome/browser/extensions/api/enterprise_networking_attributes/enterprise_networking_attributes_apitest.cc b/chrome/browser/extensions/api/enterprise_networking_attributes/enterprise_networking_attributes_apitest.cc index 971ec579..57f663f 100644 --- a/chrome/browser/extensions/api/enterprise_networking_attributes/enterprise_networking_attributes_apitest.cc +++ b/chrome/browser/extensions/api/enterprise_networking_attributes/enterprise_networking_attributes_apitest.cc
@@ -193,8 +193,8 @@ IN_PROC_BROWSER_TEST_F( ExtensionApiTest, EnterpriseNetworkingAttributesIsRestrictedToPolicyExtension) { - ASSERT_TRUE(RunExtensionTest({.name = "enterprise_networking_attributes", - .page_url = "api_not_available.html"}, + ASSERT_TRUE(RunExtensionTest("enterprise_networking_attributes", + {.page_url = "api_not_available.html"}, {.ignore_manifest_warnings = true})); base::FilePath extension_path =
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc index e4de2e4b..f0d3658 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc +++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc
@@ -322,8 +322,8 @@ // chrome.enterprise.platformKeys namespace. IN_PROC_BROWSER_TEST_F(ExtensionApiTest, EnterprisePlatformKeysIsRestrictedToPolicyExtension) { - ASSERT_TRUE(RunExtensionTest({.name = "enterprise_platform_keys", - .page_url = "api_not_available.html"}, + ASSERT_TRUE(RunExtensionTest("enterprise_platform_keys", + {.page_url = "api_not_available.html"}, {.ignore_manifest_warnings = true})); base::FilePath extension_path =
diff --git a/chrome/browser/extensions/api/extension_action/page_action_apitest.cc b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc index 2c2c2b3..798bc593 100644 --- a/chrome/browser/extensions/api/extension_action/page_action_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc
@@ -47,7 +47,7 @@ bool RunTest(const char* name) { return RunExtensionTest( - {.name = name}, + name, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); } };
diff --git a/chrome/browser/extensions/api/font_settings/font_settings_apitest.cc b/chrome/browser/extensions/api/font_settings/font_settings_apitest.cc index 769758f..60ea216 100644 --- a/chrome/browser/extensions/api/font_settings/font_settings_apitest.cc +++ b/chrome/browser/extensions/api/font_settings/font_settings_apitest.cc
@@ -33,10 +33,10 @@ prefs->SetString(prefs::kWebKitSansSerifFontFamily, "Arial"); prefs->SetInteger(prefs::kWebKitDefaultFontSize, 16); - EXPECT_TRUE(RunExtensionTest({.name = "font_settings/incognito", - .page_url = "launch.html", - .open_in_incognito = true}, - {.allow_in_incognito = true})); + EXPECT_TRUE( + RunExtensionTest("font_settings/incognito", + {.page_url = "launch.html", .open_in_incognito = true}, + {.allow_in_incognito = true})); } } // namespace extensions
diff --git a/chrome/browser/extensions/api/gcm/gcm_apitest.cc b/chrome/browser/extensions/api/gcm/gcm_apitest.cc index fe5a970..3f8c816 100644 --- a/chrome/browser/extensions/api/gcm/gcm_apitest.cc +++ b/chrome/browser/extensions/api/gcm/gcm_apitest.cc
@@ -267,7 +267,7 @@ incognito_catcher.RestrictToBrowserContext( profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true)); - ASSERT_TRUE(RunExtensionTest({.name = "gcm/functions/incognito"}, + ASSERT_TRUE(RunExtensionTest("gcm/functions/incognito", {}, {.allow_in_incognito = true})); EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
diff --git a/chrome/browser/extensions/api/image_writer_private/image_writer_private_apitest.cc b/chrome/browser/extensions/api/image_writer_private/image_writer_private_apitest.cc index 1e6a4e0..52302d6 100644 --- a/chrome/browser/extensions/api/image_writer_private/image_writer_private_apitest.cc +++ b/chrome/browser/extensions/api/image_writer_private/image_writer_private_apitest.cc
@@ -105,8 +105,8 @@ base::BindOnce(set_up_utility_client_callbacks)); #endif - ASSERT_TRUE(RunExtensionTest({.name = "image_writer_private/write_from_file", - .launch_as_platform_app = true})) + ASSERT_TRUE(RunExtensionTest("image_writer_private/write_from_file", + {.launch_as_platform_app = true})) << message_; } } // namespace extensions
diff --git a/chrome/browser/extensions/api/instance_id/instance_id_apitest.cc b/chrome/browser/extensions/api/instance_id/instance_id_apitest.cc index c19bbd4..6edf1f9 100644 --- a/chrome/browser/extensions/api/instance_id/instance_id_apitest.cc +++ b/chrome/browser/extensions/api/instance_id/instance_id_apitest.cc
@@ -67,7 +67,7 @@ incognito_catcher.RestrictToBrowserContext( profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true)); - ASSERT_TRUE(RunExtensionTest({.name = "instance_id/incognito"}, + ASSERT_TRUE(RunExtensionTest("instance_id/incognito", {}, {.allow_in_incognito = true})); EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
diff --git a/chrome/browser/extensions/api/metrics_private/metrics_apitest.cc b/chrome/browser/extensions/api/metrics_private/metrics_apitest.cc index 31a8aea..b1cf1bd4 100644 --- a/chrome/browser/extensions/api/metrics_private/metrics_apitest.cc +++ b/chrome/browser/extensions/api/metrics_private/metrics_apitest.cc
@@ -139,7 +139,7 @@ public: bool RunComponentTest(const char* extension_name) { return RunExtensionTest( - {.name = extension_name}, + extension_name, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker, .load_as_component = true}); }
diff --git a/chrome/browser/extensions/api/networking_private/OWNERS b/chrome/browser/extensions/api/networking_private/OWNERS index b321c2f..6f32eff 100644 --- a/chrome/browser/extensions/api/networking_private/OWNERS +++ b/chrome/browser/extensions/api/networking_private/OWNERS
@@ -1,2 +1 @@ -stevenjb@chromium.org -tbarzic@chromium.org +file://extensions/browser/api/networking_private/OWNERS
diff --git a/chrome/browser/extensions/api/networking_private/networking_private_apitest.cc b/chrome/browser/extensions/api/networking_private/networking_private_apitest.cc index 045ef0c1..83a807f5 100644 --- a/chrome/browser/extensions/api/networking_private/networking_private_apitest.cc +++ b/chrome/browser/extensions/api/networking_private/networking_private_apitest.cc
@@ -308,9 +308,9 @@ protected: bool RunNetworkingSubtest(const std::string& subtest) { const std::string page_url = "main.html?" + subtest; - return RunExtensionTest( - {.name = "networking_private", .page_url = page_url.c_str()}, - {.load_as_component = true}); + return RunExtensionTest("networking_private", + {.page_url = page_url.c_str()}, + {.load_as_component = true}); } private:
diff --git a/chrome/browser/extensions/api/notifications/notifications_apitest.cc b/chrome/browser/extensions/api/notifications/notifications_apitest.cc index 1e6be305..fa21c874 100644 --- a/chrome/browser/extensions/api/notifications/notifications_apitest.cc +++ b/chrome/browser/extensions/api/notifications/notifications_apitest.cc
@@ -227,7 +227,7 @@ protected: bool RunTest(const char* name) { return RunExtensionTest( - {.name = name}, + name, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); } };
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc index 77c4707..1305648 100644 --- a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc +++ b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
@@ -257,8 +257,7 @@ catcher_incognito.RestrictToBrowserContext( profile->GetPrimaryOTRProfile(/*create_if_needed=*/true)); - ASSERT_TRUE( - RunExtensionTest({.name = "omnibox"}, {.allow_in_incognito = true})) + ASSERT_TRUE(RunExtensionTest("omnibox", {}, {.allow_in_incognito = true})) << message_; // Open an incognito window and wait for the incognito extension process to
diff --git a/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc b/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc index 748c946d..39d8c91 100644 --- a/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc +++ b/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc
@@ -92,7 +92,7 @@ bool RunTest(const char* extension_name, const char* custom_arg = nullptr, bool allow_file_access = false) { - return RunExtensionTest({.name = extension_name, .custom_arg = custom_arg}, + return RunExtensionTest(extension_name, {.custom_arg = custom_arg}, {.allow_file_access = allow_file_access}); } void WaitForFileCleanup(PageCaptureSaveAsMHTMLDelegate* delegate) {
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_apitest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_apitest.cc index c06403f..7faacc3 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_apitest.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_apitest.cc
@@ -59,9 +59,8 @@ protected: bool RunPasswordsSubtest(const std::string& subtest) { const std::string page_url = "main.html?" + subtest; - return RunExtensionTest( - {.name = "passwords_private", .page_url = page_url.c_str()}, - {.load_as_component = true}); + return RunExtensionTest("passwords_private", {.page_url = page_url.c_str()}, + {.load_as_component = true}); } bool importPasswordsWasTriggered() {
diff --git a/chrome/browser/extensions/api/platform_keys/platform_keys_test_base.cc b/chrome/browser/extensions/api/platform_keys/platform_keys_test_base.cc index 1fa3b6e..8ecba7e 100644 --- a/chrome/browser/extensions/api/platform_keys/platform_keys_test_base.cc +++ b/chrome/browser/extensions/api/platform_keys/platform_keys_test_base.cc
@@ -16,7 +16,7 @@ #include "chrome/test/base/ui_test_utils.h" #include "chromeos/dbus/session_manager/fake_session_manager_client.h" #include "components/policy/core/browser/browser_policy_connector.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/policy_constants.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h"
diff --git a/chrome/browser/extensions/api/resources_private/resources_private_apitest.cc b/chrome/browser/extensions/api/resources_private/resources_private_apitest.cc index b53b9be..7c4b45d 100644 --- a/chrome/browser/extensions/api/resources_private/resources_private_apitest.cc +++ b/chrome/browser/extensions/api/resources_private/resources_private_apitest.cc
@@ -9,7 +9,7 @@ using ResourcesPrivateApiTest = extensions::ExtensionApiTest; IN_PROC_BROWSER_TEST_F(ResourcesPrivateApiTest, GetStrings) { - ASSERT_TRUE(RunExtensionTest({.name = "resources_private/get_strings"}, + ASSERT_TRUE(RunExtensionTest("resources_private/get_strings", {}, {.load_as_component = true})) << message_; }
diff --git a/chrome/browser/extensions/api/scripting/scripting_apitest.cc b/chrome/browser/extensions/api/scripting/scripting_apitest.cc index 1cd9cfde..be84b7f 100644 --- a/chrome/browser/extensions/api/scripting/scripting_apitest.cc +++ b/chrome/browser/extensions/api/scripting/scripting_apitest.cc
@@ -66,7 +66,7 @@ OpenURLInNewTab( embedded_test_server()->GetURL("chromium.org", "/title2.html")); - ASSERT_TRUE(RunExtensionTest({.name = "scripting/main_frame"}, + ASSERT_TRUE(RunExtensionTest("scripting/main_frame", {}, {.ignore_manifest_warnings = true})) << message_; }
diff --git a/chrome/browser/extensions/api/sessions/sessions_apitest.cc b/chrome/browser/extensions/api/sessions/sessions_apitest.cc index cc319e22..e20726d 100644 --- a/chrome/browser/extensions/api/sessions/sessions_apitest.cc +++ b/chrome/browser/extensions/api/sessions/sessions_apitest.cc
@@ -359,8 +359,7 @@ // http://crbug.com/251199 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_SessionsApis) { - ASSERT_TRUE( - RunExtensionTest({.name = "sessions", .page_url = "sessions.html"})) + ASSERT_TRUE(RunExtensionTest("sessions", {.page_url = "sessions.html"})) << message_; }
diff --git a/chrome/browser/extensions/api/settings_private/settings_private_apitest.cc b/chrome/browser/extensions/api/settings_private/settings_private_apitest.cc index f6d2838..513afa4 100644 --- a/chrome/browser/extensions/api/settings_private/settings_private_apitest.cc +++ b/chrome/browser/extensions/api/settings_private/settings_private_apitest.cc
@@ -61,9 +61,8 @@ protected: bool RunSettingsSubtest(const std::string& subtest) { const std::string page_url = "main.html?" + subtest; - return RunExtensionTest( - {.name = "settings_private", .page_url = page_url.c_str()}, - {.load_as_component = true}); + return RunExtensionTest("settings_private", {.page_url = page_url.c_str()}, + {.load_as_component = true}); } void SetPrefPolicy(const std::string& key, policy::PolicyLevel level) {
diff --git a/chrome/browser/extensions/api/tab_groups/tab_groups_api_apitest.cc b/chrome/browser/extensions/api/tab_groups/tab_groups_api_apitest.cc index 31919b0..6807dfb 100644 --- a/chrome/browser/extensions/api/tab_groups/tab_groups_api_apitest.cc +++ b/chrome/browser/extensions/api/tab_groups/tab_groups_api_apitest.cc
@@ -27,8 +27,8 @@ return; #endif - ASSERT_TRUE(RunExtensionTest({.name = "tab_groups"}, - {.ignore_manifest_warnings = true})) + ASSERT_TRUE( + RunExtensionTest("tab_groups", {}, {.ignore_manifest_warnings = true})) << message_; }
diff --git a/chrome/browser/extensions/api/terminal/terminal_private_apitest.cc b/chrome/browser/extensions/api/terminal/terminal_private_apitest.cc index cab30e8..af66bd0 100644 --- a/chrome/browser/extensions/api/terminal/terminal_private_apitest.cc +++ b/chrome/browser/extensions/api/terminal/terminal_private_apitest.cc
@@ -119,8 +119,8 @@ const std::string page_url = "test.html?foreign_id=" + cat_process.process_id(); - EXPECT_TRUE(RunExtensionTest( - {.name = "terminal/component_extension", .page_url = page_url.c_str()})) + EXPECT_TRUE(RunExtensionTest("terminal/component_extension", + {.page_url = page_url.c_str()})) << message_; // Double check that test.html cannot write to the cat process here;
diff --git a/chrome/browser/extensions/api/test/apitest_apitest.cc b/chrome/browser/extensions/api/test/apitest_apitest.cc index 9f9a9a0..da4443a3 100644 --- a/chrome/browser/extensions/api/test/apitest_apitest.cc +++ b/chrome/browser/extensions/api/test/apitest_apitest.cc
@@ -86,7 +86,7 @@ // TODO(devlin): This test name should be more descriptive. IN_PROC_BROWSER_TEST_P(TestAPITestWithContextType, ApiTest) { ASSERT_TRUE(RunExtensionTest( - {.name = "apitest"}, + "apitest", {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker})) << message_; }
diff --git a/chrome/browser/extensions/api/vpn_provider/vpn_provider_apitest.cc b/chrome/browser/extensions/api/vpn_provider/vpn_provider_apitest.cc index bdb7ce2..6e75bbd 100644 --- a/chrome/browser/extensions/api/vpn_provider/vpn_provider_apitest.cc +++ b/chrome/browser/extensions/api/vpn_provider/vpn_provider_apitest.cc
@@ -145,8 +145,7 @@ bool RunTest(const std::string& test_name) { GURL url = extension_->GetResourceURL("basic.html?#" + test_name); - return RunExtensionTest( - {.name = "vpn_provider", .page_url = url.spec().c_str()}); + return RunExtensionTest("vpn_provider", {.page_url = url.spec().c_str()}); } std::string GetKey(const std::string& config_name) {
diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc index 2d926c1..dba3431 100644 --- a/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc +++ b/chrome/browser/extensions/api/web_navigation/web_navigation_apitest.cc
@@ -244,7 +244,7 @@ bool RunTest(const char* name, bool allow_in_incognito = false) WARN_UNUSED_RESULT { return RunExtensionTest( - {.name = name}, + name, {}, {.allow_in_incognito = allow_in_incognito, .load_as_service_worker = GetParam() == ContextType::kServiceWorker}); }
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc index d0d619a4..a979865 100644 --- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -646,8 +646,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, WebRequestChangeCSPHeaders) { ASSERT_TRUE(StartEmbeddedTestServer()); - ASSERT_TRUE(RunExtensionTest( - {.name = "webrequest", .page_url = "test_change_csp_headers.html"})) + ASSERT_TRUE(RunExtensionTest("webrequest", + {.page_url = "test_change_csp_headers.html"})) << message_; }
diff --git a/chrome/browser/extensions/extension_fileapi_apitest.cc b/chrome/browser/extensions/extension_fileapi_apitest.cc index 50233cb..e95ce174 100644 --- a/chrome/browser/extensions/extension_fileapi_apitest.cc +++ b/chrome/browser/extensions/extension_fileapi_apitest.cc
@@ -12,8 +12,8 @@ } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, XHROnPersistentFileSystem) { - ASSERT_TRUE(RunExtensionTest( - {.name = "xhr_persistent_fs", .launch_as_platform_app = true})) + ASSERT_TRUE( + RunExtensionTest("xhr_persistent_fs", {.launch_as_platform_app = true})) << message_; }
diff --git a/chrome/browser/extensions/extension_incognito_apitest.cc b/chrome/browser/extensions/extension_incognito_apitest.cc index 449929f8..bce399569 100644 --- a/chrome/browser/extensions/extension_incognito_apitest.cc +++ b/chrome/browser/extensions/extension_incognito_apitest.cc
@@ -91,7 +91,7 @@ // accidentally create an incognito profile. IN_PROC_BROWSER_TEST_F(IncognitoApiTest, DontCreateIncognitoProfile) { ASSERT_FALSE(browser()->profile()->HasPrimaryOTRProfile()); - ASSERT_TRUE(RunExtensionTest({.name = "incognito/dont_create_profile"}, + ASSERT_TRUE(RunExtensionTest("incognito/dont_create_profile", {}, {.allow_in_incognito = true})) << message_; ASSERT_FALSE(browser()->profile()->HasPrimaryOTRProfile());
diff --git a/chrome/browser/extensions/options_page_apitest.cc b/chrome/browser/extensions/options_page_apitest.cc index dcad2d75..77835b7 100644 --- a/chrome/browser/extensions/options_page_apitest.cc +++ b/chrome/browser/extensions/options_page_apitest.cc
@@ -52,7 +52,8 @@ static constexpr char kScriptClickOptionButton[] = R"( (function() { var button = document.querySelector('extensions-manager'). - $$('extensions-detail-view').$$('#extensions-options'); + shadowRoot.querySelector('extensions-detail-view'). + shadowRoot.querySelector('#extensions-options'); button.click(); })();)";
diff --git a/chrome/browser/extensions/protocol_handler_apitest.cc b/chrome/browser/extensions/protocol_handler_apitest.cc index 4b8f224..eb655a39a 100644 --- a/chrome/browser/extensions/protocol_handler_apitest.cc +++ b/chrome/browser/extensions/protocol_handler_apitest.cc
@@ -143,8 +143,8 @@ // Run the extension subtest and wait for the initialization. ASSERT_TRUE(RunExtensionTest( - {.name = "protocol_handler", - .page_url = "test_browser_process_security_level.html"})) + "protocol_handler", + {.page_url = "test_browser_process_security_level.html"})) << message_; content::WebContentsDelegate* web_contents_delegate =
diff --git a/chrome/browser/extensions/sandboxed_pages_apitest.cc b/chrome/browser/extensions/sandboxed_pages_apitest.cc index ab690f3..70e8ac7 100644 --- a/chrome/browser/extensions/sandboxed_pages_apitest.cc +++ b/chrome/browser/extensions/sandboxed_pages_apitest.cc
@@ -8,8 +8,7 @@ namespace extensions { IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SandboxedPages) { - EXPECT_TRUE( - RunExtensionTest({.name = "sandboxed_pages", .page_url = "main.html"})) + EXPECT_TRUE(RunExtensionTest("sandboxed_pages", {.page_url = "main.html"})) << message_; } @@ -19,9 +18,8 @@ // This app attempts to load remote web content inside a sandboxed page. // Loading web content will fail because of CSP. In addition to that we will // show manifest warnings, hence ignore_manifest_warnings is set to true. - ASSERT_TRUE( - RunExtensionTest({.name = "sandboxed_pages_csp", .page_url = "main.html"}, - {.ignore_manifest_warnings = true})) + ASSERT_TRUE(RunExtensionTest("sandboxed_pages_csp", {.page_url = "main.html"}, + {.ignore_manifest_warnings = true})) << message_; }
diff --git a/chrome/browser/extensions/stubs_apitest.cc b/chrome/browser/extensions/stubs_apitest.cc index 66b332ca..ef74271 100644 --- a/chrome/browser/extensions/stubs_apitest.cc +++ b/chrome/browser/extensions/stubs_apitest.cc
@@ -39,9 +39,8 @@ // can be used in an app. For example, this test will fail if a developer adds // an API feature without providing a schema. http://crbug.com/369318 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, StubsApp) { - ASSERT_TRUE( - RunExtensionTest({.name = "stubs_app", .launch_as_platform_app = true}, - {.ignore_manifest_warnings = true})) + ASSERT_TRUE(RunExtensionTest("stubs_app", {.launch_as_platform_app = true}, + {.ignore_manifest_warnings = true})) << message_; }
diff --git a/chrome/browser/extensions/system_cpu_apitest.cc b/chrome/browser/extensions/system_cpu_apitest.cc index 79225a40..9bca4a0a 100644 --- a/chrome/browser/extensions/system_cpu_apitest.cc +++ b/chrome/browser/extensions/system_cpu_apitest.cc
@@ -55,7 +55,7 @@ protected: bool RunTest(const char* name) { return RunExtensionTest( - {.name = name}, + name, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); } };
diff --git a/chrome/browser/extensions/system_memory_apitest.cc b/chrome/browser/extensions/system_memory_apitest.cc index 0387e0dd..690509c0 100644 --- a/chrome/browser/extensions/system_memory_apitest.cc +++ b/chrome/browser/extensions/system_memory_apitest.cc
@@ -40,7 +40,7 @@ protected: bool RunTest(const char* name) { return RunExtensionTest( - {.name = name}, + name, {}, {.load_as_service_worker = GetParam() == ContextType::kServiceWorker}); } };
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 873e8ce..1ded814 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -1346,11 +1346,6 @@ "expiry_milestone": 94 }, { - "name": "enable-autofill-credit-card-cvc-prompt-google-logo", - "owners": [ "treib", "jsaul@google.com", "payments-autofill-team@google.com" ], - "expiry_milestone": 95 - }, - { "name": "enable-autofill-credit-card-upload", "owners": [ "jsaul@google.com" ], // This flag is heavily used by the testing team that can't easily use the @@ -4248,11 +4243,6 @@ "expiry_milestone": 96 }, { - "name": "printer-status", - "owners": [ "gavinwill", "cros-peripherals@google.com" ], - "expiry_milestone": 91 - }, - { "name": "printer-status-dialog", "owners": [ "gavinwill", "cros-peripherals@google.com" ], "expiry_milestone": 91
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 84706bfc..e62938d 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -632,11 +632,6 @@ "When enabled, a footer indicating user's e-mail address will appear at " "the bottom of SaveCardInfoBar."; -const char kEnableAutofillCreditCardCvcPromptGoogleLogoName[] = - "Enable Google Pay branding on CVC prompt on Android"; -const char kEnableAutofillCreditCardCvcPromptGoogleLogoDescription[] = - "If enabled, show the Google Pay logo on CVC prompt on Android."; - const char kEnableAutofillCreditCardUploadFeedbackName[] = "Enable feedback for credit card upload flow"; const char kEnableAutofillCreditCardUploadFeedbackDescription[] = @@ -2099,10 +2094,6 @@ "page that has been hidden for 5 minutes. For additional details, see " "https://www.chromestatus.com/feature/4718288976216064."; -const char kPrinterStatusName[] = "Show printer Status"; -const char kPrinterStatusDescription[] = - "Enables printer status icons and labels for saved and nearby printers"; - const char kPrinterStatusDialogName[] = "Show printer status on destination dialog"; const char kPrinterStatusDialogDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 2e7a683..5c0e04a5 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -372,9 +372,6 @@ extern const char kEnableAutofillCreditCardAuthenticationName[]; extern const char kEnableAutofillCreditCardAuthenticationDescription[]; -extern const char kEnableAutofillCreditCardCvcPromptGoogleLogoName[]; -extern const char kEnableAutofillCreditCardCvcPromptGoogleLogoDescription[]; - extern const char kEnableAutofillCreditCardUploadFeedbackName[]; extern const char kEnableAutofillCreditCardUploadFeedbackDescription[]; @@ -1210,9 +1207,6 @@ extern const char kIntensiveWakeUpThrottlingName[]; extern const char kIntensiveWakeUpThrottlingDescription[]; -extern const char kPrinterStatusName[]; -extern const char kPrinterStatusDescription[]; - extern const char kPrinterStatusDialogName[]; extern const char kPrinterStatusDialogDescription[];
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index b18918e..9241fe3 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -72,7 +72,6 @@ // in other locations in the code base (e.g. chrome/, components/, etc). const base::Feature* const kFeaturesExposedToJava[] = { &autofill::features::kAutofillCreditCardAuthentication, - &autofill::features::kAutofillDownstreamCvcPromptUseGooglePayLogo, &autofill::features::kAutofillEnablePasswordInfoBarAccountIndicationFooter, &autofill::features::kAutofillEnableSaveCardInfoBarAccountIndicationFooter, &autofill::features::kAutofillKeyboardAccessory, @@ -678,7 +677,7 @@ base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kToolbarIphAndroid{"ToolbarIphAndroid", - base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kToolbarIphAndroidCohort1{ "ToolbarIphAndroidCohort1", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kToolbarIphAndroidCohort2{
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 d82b81ce..5014927b 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
@@ -214,8 +214,6 @@ "AutofillAllowNonHttpActivation"; public static final String AUTOFILL_CREDIT_CARD_AUTHENTICATION = "AutofillCreditCardAuthentication"; - public static final String AUTOFILL_DOWNSTREAM_CVC_PROMPT_USE_GOOGLE_LOGO = - "AutofillDownstreamCvcPromptUseGooglePayLogo"; public static final String AUTOFILL_ENABLE_GOOGLE_ISSUED_CARD = "AutofillEnableGoogleIssuedCard"; public static final String AUTOFILL_ENABLE_PASSWORD_INFO_BAR_ACCOUNT_INDICATION_FOOTER =
diff --git a/chrome/browser/installable/installable_manager_browsertest.cc b/chrome/browser/installable/installable_manager_browsertest.cc index 9b2f0e0..72e0c3d 100644 --- a/chrome/browser/installable/installable_manager_browsertest.cc +++ b/chrome/browser/installable/installable_manager_browsertest.cc
@@ -79,7 +79,7 @@ return params; } -InstallableParams GetPrimaryIconPreferMaskableAndSplashIconParams() { +InstallableParams GetPreferMaskablePrimaryAndSplashIconParams() { InstallableParams params = GetManifestParams(); params.valid_primary_icon = true; params.prefer_maskable_icon = true; @@ -146,6 +146,7 @@ splash_icon_url_ = data.splash_icon_url; if (data.splash_icon) splash_icon_ = std::make_unique<SkBitmap>(*data.splash_icon); + has_maskable_splash_icon_ = data.has_maskable_splash_icon; valid_manifest_ = data.valid_manifest; has_worker_ = data.has_worker; base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_); @@ -158,6 +159,7 @@ const SkBitmap* primary_icon() const { return primary_icon_.get(); } bool has_maskable_primary_icon() const { return has_maskable_primary_icon_; } const GURL& splash_icon_url() const { return splash_icon_url_; } + bool has_maskable_splash_icon() const { return has_maskable_splash_icon_; } const SkBitmap* splash_icon() const { return splash_icon_.get(); } bool valid_manifest() const { return valid_manifest_; } bool has_worker() const { return has_worker_; } @@ -172,6 +174,7 @@ bool has_maskable_primary_icon_; GURL splash_icon_url_; std::unique_ptr<SkBitmap> splash_icon_; + bool has_maskable_splash_icon_; bool valid_manifest_; bool has_worker_; }; @@ -480,6 +483,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_MANIFEST}, tester->errors()); } @@ -505,6 +509,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{MANIFEST_EMPTY}, tester->errors()); } @@ -529,6 +534,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -555,6 +561,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -781,23 +788,23 @@ EXPECT_FALSE(tester->primary_icon_url().is_empty()); EXPECT_NE(nullptr, tester->primary_icon()); + EXPECT_FALSE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); EXPECT_FALSE(tester->splash_icon_url().is_empty()); EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } - // Navigate to a page with a good maskable icon for primary icon and a bad any - // icon for splash icon. This should fail with NO_ICON_AVAILABLE, but still - // have the manifest and primary icon. + // Navigate to a page with a good maskable icon and a bad any + // icon. The maskable icon is fetched for both primary and splash icon. { base::RunLoop run_loop; std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); NavigateAndRunInstallableManager( - browser(), tester.get(), - GetPrimaryIconPreferMaskableAndSplashIconParams(), + browser(), tester.get(), GetPreferMaskablePrimaryAndSplashIconParams(), GetURLOfPageWithServiceWorkerAndManifest( "/banners/manifest_bad_non_maskable_icon.json")); run_loop.Run(); @@ -805,12 +812,14 @@ EXPECT_FALSE(tester->manifest_url().is_empty()); EXPECT_FALSE(tester->primary_icon_url().is_empty()); EXPECT_NE(nullptr, tester->primary_icon()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_TRUE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_TRUE(tester->has_maskable_splash_icon()); + EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ICON_AVAILABLE}, - tester->errors()); + EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } } @@ -924,10 +933,10 @@ std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); - NavigateAndRunInstallableManager(browser(), tester.get(), - GetPrimaryIconPreferMaskableParams(), - GetURLOfPageWithServiceWorkerAndManifest( - "/banners/manifest_maskable.json")); + NavigateAndRunInstallableManager( + browser(), tester.get(), GetPreferMaskablePrimaryAndSplashIconParams(), + GetURLOfPageWithServiceWorkerAndManifest( + "/banners/manifest_maskable.json")); run_loop.Run(); @@ -938,10 +947,13 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_TRUE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_TRUE(tester->has_maskable_splash_icon()); + EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -952,7 +964,7 @@ new CallbackTester(run_loop.QuitClosure())); NavigateAndRunInstallableManager(browser(), tester.get(), - GetPrimaryIconParams(), + GetPrimaryIconAndSplashIconParams(), GetURLOfPageWithServiceWorkerAndManifest( "/banners/manifest_maskable.json")); @@ -965,10 +977,12 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); + EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -979,9 +993,9 @@ std::unique_ptr<CallbackTester> tester( new CallbackTester(run_loop.QuitClosure())); - NavigateAndRunInstallableManager(browser(), tester.get(), - GetPrimaryIconPreferMaskableParams(), - "/banners/manifest_test_page.html"); + NavigateAndRunInstallableManager( + browser(), tester.get(), GetPreferMaskablePrimaryAndSplashIconParams(), + "/banners/manifest_test_page.html"); run_loop.Run(); @@ -992,10 +1006,12 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); + EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } @@ -1007,7 +1023,7 @@ new CallbackTester(run_loop.QuitClosure())); NavigateAndRunInstallableManager( - browser(), tester.get(), GetPrimaryIconPreferMaskableParams(), + browser(), tester.get(), GetPreferMaskablePrimaryAndSplashIconParams(), GetURLOfPageWithServiceWorkerAndManifest( "/banners/manifest_bad_maskable.json")); @@ -1020,10 +1036,12 @@ EXPECT_NE(nullptr, tester->primary_icon()); EXPECT_FALSE(tester->has_maskable_primary_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); + EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } } @@ -1739,6 +1757,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{NO_ACCEPTABLE_ICON}, tester->errors()); } @@ -1859,8 +1878,7 @@ new CallbackTester(run_loop.QuitClosure())); NavigateAndRunInstallableManager( - browser(), tester.get(), - GetPrimaryIconPreferMaskableAndSplashIconParams(), + browser(), tester.get(), GetPreferMaskablePrimaryAndSplashIconParams(), GetURLOfPageWithServiceWorkerAndManifest( "/banners/manifest_one_maskable.json")); @@ -1874,8 +1892,9 @@ EXPECT_TRUE(tester->has_maskable_primary_icon()); EXPECT_FALSE(tester->valid_manifest()); EXPECT_FALSE(tester->has_worker()); - EXPECT_TRUE(tester->splash_icon_url().is_empty()); - EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->splash_icon_url().is_empty()); + EXPECT_NE(nullptr, tester->splash_icon()); + EXPECT_TRUE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); } } @@ -1926,6 +1945,7 @@ EXPECT_FALSE(tester->has_worker()); EXPECT_TRUE(tester->splash_icon_url().is_empty()); EXPECT_EQ(nullptr, tester->splash_icon()); + EXPECT_FALSE(tester->has_maskable_splash_icon()); EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors()); }
diff --git a/chrome/browser/lite_video/lite_video_keyed_service.h b/chrome/browser/lite_video/lite_video_keyed_service.h index 7aa260f..83ed043c 100644 --- a/chrome/browser/lite_video/lite_video_keyed_service.h +++ b/chrome/browser/lite_video/lite_video_keyed_service.h
@@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_LITE_VIDEO_LITE_VIDEO_KEYED_SERVICE_H_ #define CHROME_BROWSER_LITE_VIDEO_LITE_VIDEO_KEYED_SERVICE_H_ -#include "base/containers/flat_set.h" #include "base/time/time.h" #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" #include "chrome/browser/lite_video/lite_video_decider.h"
diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h index 1a3e3dd..7999f96 100644 --- a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h +++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h
@@ -9,7 +9,6 @@ #include <set> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/sequence_checker.h" #include "base/sequenced_task_runner.h" #include "chrome/browser/media/router/discovery/dial/device_description_service.h"
diff --git a/chrome/browser/metrics/tab_stats/tab_stats_tracker.h b/chrome/browser/metrics/tab_stats/tab_stats_tracker.h index 58be6dc9..34698b5 100644 --- a/chrome/browser/metrics/tab_stats/tab_stats_tracker.h +++ b/chrome/browser/metrics/tab_stats/tab_stats_tracker.h
@@ -10,7 +10,6 @@ #include <string> #include <vector> -#include "base/containers/flat_set.h" #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/observer_list.h"
diff --git a/chrome/browser/metrics/usertype_by_devicetype_metrics_provider_browsertest.cc b/chrome/browser/metrics/usertype_by_devicetype_metrics_provider_browsertest.cc index de49317e..2242bb3 100644 --- a/chrome/browser/metrics/usertype_by_devicetype_metrics_provider_browsertest.cc +++ b/chrome/browser/metrics/usertype_by_devicetype_metrics_provider_browsertest.cc
@@ -25,7 +25,7 @@ #include "components/metrics/metrics_service.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/proto/device_management_backend.pb.h" #include "content/public/test/browser_test.h" #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java index 10b389612..e31e0f06 100644 --- a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java +++ b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
@@ -161,7 +161,12 @@ int PRICE_DROP_VISIT_SITE = 24; int PRICE_DROP_TURN_OFF_ALERT = 25; - int NUM_ENTRIES = 26; + // Confirm button on sharing notification. + int SHARING_CONFIRM = 26; + // Cancel button on sharing notification. + int SHARING_CANCEL = 27; + + int NUM_ENTRIES = 28; } private static class LazyHolder {
diff --git a/chrome/browser/notifications/notification_permission_context_apitest.cc b/chrome/browser/notifications/notification_permission_context_apitest.cc index 9de42337..9a4fcd9 100644 --- a/chrome/browser/notifications/notification_permission_context_apitest.cc +++ b/chrome/browser/notifications/notification_permission_context_apitest.cc
@@ -61,8 +61,8 @@ // report permission status when permission has been granted. ExtensionPermissionUpdater updater(profile(), /* enabled= */ true); - ASSERT_TRUE(RunExtensionTest( - {.name = "notifications/permissions_test", .custom_arg = "granted"})) + ASSERT_TRUE(RunExtensionTest("notifications/permissions_test", + {.custom_arg = "granted"})) << message_; } @@ -71,8 +71,8 @@ // report permission status when permission has been denied. ExtensionPermissionUpdater updater(profile(), /* enabled= */ false); - ASSERT_TRUE(RunExtensionTest( - {.name = "notifications/permissions_test", .custom_arg = "denied"})) + ASSERT_TRUE(RunExtensionTest("notifications/permissions_test", + {.custom_arg = "denied"})) << message_; }
diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.h b/chrome/browser/optimization_guide/optimization_guide_keyed_service.h index 4c466d0..0c42266 100644 --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.h +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.h
@@ -8,7 +8,6 @@ #include <memory> #include <vector> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "components/keyed_service/core/keyed_service.h" #include "components/optimization_guide/content/browser/optimization_guide_decider.h"
diff --git a/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc index 08da8ea..41e8c9a8 100644 --- a/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc +++ b/chrome/browser/page_load_metrics/observers/back_forward_cache_page_load_metrics_observer_browsertest.cc
@@ -603,10 +603,6 @@ "MaxCumulativeShiftScoreAfterBackForwardCacheRestore." "SlidingWindow.Duration1000ms", page_load_metrics::LayoutShiftUkmValue(next_score)); - ExpectMetricValueForUrl(url_a, - "MaxCumulativeShiftScoreAfterBackForwardCacheRestore." - "SessionWindowByInputs.Gap1000ms.Max5000ms", - page_load_metrics::LayoutShiftUkmValue(next_score)); // Go back to A again. web_contents()->GetController().GoBack(); EXPECT_TRUE(WaitForLoadStop(web_contents())); @@ -645,8 +641,4 @@ "PageLoad.LayoutInstability.MaxCumulativeShiftScore." "AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms", 2); - histogram_tester().ExpectTotalCount( - "PageLoad.LayoutInstability.MaxCumulativeShiftScore." - "AfterBackForwardCacheRestore.SessionWindowByInputs.Gap1000ms.Max5000ms", - 2); }
diff --git a/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer.cc index 2cda667..0b44b89 100644 --- a/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer.cc
@@ -200,9 +200,6 @@ it->second.render_data.layout_shift_score_before_input_or_scroll += render_data.layout_shift_delta_before_input_or_scroll; - // Should add input timestamps before layout shifts. - it->second.layout_shift_normalization.AddInputTimeStamps( - render_data.input_timestamps); it->second.layout_shift_normalization.AddNewLayoutShifts( render_data.new_layout_shifts, base::TimeTicks::Now(), it->second.render_data.layout_shift_score); @@ -481,11 +478,7 @@ normalized_cls_data.sliding_windows_duration300ms_max_cls)) .SetSubFrame_LayoutInstability_MaxCumulativeShiftScore_SlidingWindow_Duration1000ms( page_load_metrics::LayoutShiftUkmValue( - normalized_cls_data.sliding_windows_duration1000ms_max_cls)) - .SetSubFrame_LayoutInstability_MaxCumulativeShiftScore_SessionWindowByInputs_Gap1000ms_Max5000ms( - page_load_metrics::LayoutShiftUkmValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); + normalized_cls_data.sliding_windows_duration1000ms_max_cls)); } // For UMA, report (shift_score * 10) an an int in the range [0,100]. @@ -501,12 +494,6 @@ "Subframe.SessionWindow.Gap1000ms.Max5000ms", page_load_metrics::LayoutShiftUmaValue( normalized_cls_data.session_windows_gap1000ms_max5000ms_max_cls)); - base::UmaHistogramCounts100( - "PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore." - "Subframe.SessionWindowByInputs.Gap1000ms.Max5000ms", - page_load_metrics::LayoutShiftUmaValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); } } else { UMA_HISTOGRAM_COUNTS_100( @@ -520,12 +507,6 @@ "Subframe.FullNavigation.SessionWindow.Gap1000ms.Max5000ms", page_load_metrics::LayoutShiftUmaValue( normalized_cls_data.session_windows_gap1000ms_max5000ms_max_cls)); - base::UmaHistogramCounts100( - "PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore." - "Subframe.FullNavigation.SessionWindowByInputs.Gap1000ms.Max5000ms", - page_load_metrics::LayoutShiftUmaValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); } }
diff --git a/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer_unittest.cc index 0c55916..70502266 100644 --- a/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/core/amp_page_load_metrics_observer_unittest.cc
@@ -507,20 +507,10 @@ "SubFrame.LayoutInstability.MaxCumulativeShiftScore.SlidingWindow." "Duration300ms", 25); - tester()->test_ukm_recorder().ExpectEntryMetric( - entry.get(), - "SubFrame.LayoutInstability.MaxCumulativeShiftScore." - "SessionWindowByInputs." - "Gap1000ms.Max5000ms", - 25); tester()->histogram_tester().ExpectUniqueSample( "PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore." "Subframe.SessionWindow.Gap1000ms.Max5000ms", 4, 1); - tester()->histogram_tester().ExpectUniqueSample( - "PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore." - "Subframe.SessionWindowByInputs.Gap1000ms.Max5000ms", - 3, 1); } TEST_F(AMPPageLoadMetricsObserverTest, SubFrameMetricsFullNavigation) {
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc index 23c384a..67d4095 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc
@@ -1002,22 +1002,12 @@ .SetLayoutInstability_AverageCumulativeShiftScore_SessionWindow_Gap5000ms( page_load_metrics::LayoutShiftUkmValue( normalized_cls_data - .session_windows_gap5000ms_maxMax_average_cls)) - .SetLayoutInstability_MaxCumulativeShiftScore_SessionWindowByInputs_Gap1000ms_Max5000ms( - page_load_metrics::LayoutShiftUkmValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); + .session_windows_gap5000ms_maxMax_average_cls)); base::UmaHistogramCounts100( "PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow." "Gap1000ms.Max5000ms", page_load_metrics::LayoutShiftUmaValue( normalized_cls_data.session_windows_gap1000ms_max5000ms_max_cls)); - base::UmaHistogramCounts100( - "PageLoad.LayoutInstability.MaxCumulativeShiftScore." - "SessionWindowByInputs.Gap1000ms.Max5000ms", - page_load_metrics::LayoutShiftUmaValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); } builder.Record(ukm::UkmRecorder::Get());
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc index ddd2ab9..d8903e5c 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer_unittest.cc
@@ -1558,16 +1558,10 @@ PageLoad:: kLayoutInstability_AverageCumulativeShiftScore_SessionWindow_Gap5000msName, 250); - ukm_recorder.ExpectEntryMetric( - ukm_entry, - PageLoad:: - kLayoutInstability_MaxCumulativeShiftScore_SessionWindowByInputs_Gap1000ms_Max5000msName, - 150); ukm_recorder.ExpectEntryMetric(kv.second.get(), PageLoad::kNavigation_PageEndReason3Name, page_load_metrics::END_CLOSE); } - EXPECT_THAT(tester()->histogram_tester().GetAllSamples( "PageLoad.LayoutInstability.CumulativeShiftScore"), testing::ElementsAre(base::Bucket(25, 1))); @@ -1575,10 +1569,6 @@ "PageLoad.LayoutInstability.MaxCumulativeShiftScore." "SessionWindow.Gap1000ms.Max5000ms"), testing::ElementsAre(base::Bucket(25, 1))); - EXPECT_THAT(tester()->histogram_tester().GetAllSamples( - "PageLoad.LayoutInstability.MaxCumulativeShiftScore." - "SessionWindowByInputs.Gap1000ms.Max5000ms"), - testing::ElementsAre(base::Bucket(15, 1))); } TEST_F(UkmPageLoadMetricsObserverTest, SiteInstanceRenderProcessAssignment) {
diff --git a/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditControllerTest.java b/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditControllerTest.java index 61e28c1f..d72b069 100644 --- a/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditControllerTest.java +++ b/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditControllerTest.java
@@ -216,6 +216,13 @@ } @Test + public void testUsernameTextChangedIgnoredIfNotInitialized() { + assertEquals(null, mModel.get(USERNAME)); + mMediator.onUsernameTextChanged(NEW_TEST_USERNAME); + assertEquals(null, mModel.get(USERNAME)); + } + + @Test public void testUsernameTextChangedUpdatesModel() { mMediator.setCredential(TEST_USERNAME, TEST_PASSWORD, false); mMediator.setExistingUsernames(new String[] {TEST_USERNAME}); @@ -224,6 +231,13 @@ } @Test + public void testPasswordTextChangedIgnoredIfNotInitialized() { + assertEquals(null, mModel.get(PASSWORD)); + mMediator.onPasswordTextChanged(NEW_TEST_PASSWORD); + assertEquals(null, mModel.get(PASSWORD)); + } + + @Test public void testPasswordTextChangedUpdatesModel() { mMediator.setCredential(TEST_USERNAME, TEST_PASSWORD, false); mMediator.onPasswordTextChanged(NEW_TEST_PASSWORD);
diff --git a/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java b/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java index 19084a3..2cd4bb87 100644 --- a/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java +++ b/chrome/browser/password_entry_edit/android/internal/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditMediator.java
@@ -206,6 +206,8 @@ @Override public void onUsernameTextChanged(String username) { + // Ignore events before the UI is fully initialized. + if (mModel.get(USERNAME) == null) return; mModel.set(USERNAME, username); boolean hasError = !mOriginalUsername.equals(username) && mExistingUsernames.contains(username); @@ -218,6 +220,8 @@ @Override public void onPasswordTextChanged(String password) { + // Ignore events before the UI is fully initialized. + if (mModel.get(PASSWORD) == null) return; mModel.set(PASSWORD, password); mModel.set(EMPTY_PASSWORD_ERROR, password.isEmpty()); if (password.isEmpty()) {
diff --git a/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper.h b/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper.h index 2c48f6d..b65085f 100644 --- a/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper.h +++ b/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper.h
@@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_DECORATORS_HELPERS_PAGE_LIVE_STATE_DECORATOR_HELPER_H_ #define CHROME_BROWSER_PERFORMANCE_MANAGER_DECORATORS_HELPERS_PAGE_LIVE_STATE_DECORATOR_HELPER_H_ -#include "base/containers/flat_set.h" #include "base/sequence_checker.h" #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" #include "components/performance_manager/public/performance_manager_main_thread_observer.h"
diff --git a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc index 74f0229..3bc6090 100644 --- a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc +++ b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc
@@ -26,7 +26,7 @@ #include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_client.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_service.h" #include "components/policy/core/common/policy_switches.h" #include "components/policy/core/common/policy_test_utils.h"
diff --git a/chrome/browser/policy/test/developer_tools_policy_browsertest.cc b/chrome/browser/policy/test/developer_tools_policy_browsertest.cc index 8f2269d..6fe949b 100644 --- a/chrome/browser/policy/test/developer_tools_policy_browsertest.cc +++ b/chrome/browser/policy/test/developer_tools_policy_browsertest.cc
@@ -128,7 +128,7 @@ const char define_helpers_js[] = R"(function getToolbar() { const manager = document.querySelector('extensions-manager'); - return manager.$$('extensions-toolbar'); + return manager.shadowRoot.querySelector('extensions-toolbar'); } function getToggle() {
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher.h b/chrome/browser/resource_coordinator/tab_activity_watcher.h index 6be15e8..13b01d4 100644 --- a/chrome/browser/resource_coordinator/tab_activity_watcher.h +++ b/chrome/browser/resource_coordinator/tab_activity_watcher.h
@@ -7,7 +7,6 @@ #include <memory> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h" #include "chrome/browser/ui/browser_list_observer.h"
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index 92f6882c..1c668d3 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -110,7 +110,6 @@ "discards:closure_compile", "download_internals:closure_compile", "download_shelf:closure_compile", - "downloads:closure_compile", "feedback_webui/js:closure_compile", "gaia_auth_host:closure_compile", "inline_login:closure_compile",
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_be.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_be.xtb index b298f34..b9f1010 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_be.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_be.xtb
@@ -470,7 +470,7 @@ <translation id="4204126831294769023">Лазурковы</translation> <translation id="4204864733111726379">Кветкавы белы</translation> <translation id="42164919740161077">Кадэцкі сіні</translation> -<translation id="4217571870635786043">Дыктаванне</translation> +<translation id="4217571870635786043">Галасавы ўвод</translation> <translation id="4218529045364428769">{COUNT,plural, =1{злучок}one{# злучок}few{# злучкі}many{# злучкоў}other{# злучка}}</translation> <translation id="4221012616705981690">Няма папярэдняга спіса</translation> <translation id="4225355998815256469">Кіраванне формамі</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gl.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gl.xtb index a757f6d..a773a4e 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gl.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gl.xtb
@@ -51,7 +51,7 @@ <translation id="1246424317317450637">Negra</translation> <translation id="1251750620252348585">Seguinte título de nivel 6</translation> <translation id="1268366246392928616">Non hai ningunha expresión matemática anterior</translation> -<translation id="1273314450961659276">Configuración da síntese de voz</translation> +<translation id="1273314450961659276">Configuración da conversión de texto a voz</translation> <translation id="1275718070701477396">Seleccionado</translation> <translation id="1284576163386164372">Cando queiras consultar os titoriais, toca a pantalla con catro dedos para abrir os menús. Despois, activa o titorial en cuestión na sección ChromeVox.</translation> <translation id="1291286136605998134">Botón de activación/desactivación</translation> @@ -214,7 +214,7 @@ <translation id="2471138580042810658">Título 6</translation> <translation id="248982282205370495">{COUNT,plural, =1{asterisco}other{# asteriscos}}</translation> <translation id="2490721194269245365">Marrón rosado</translation> -<translation id="249330843868392562">Abre a configuración da síntese de voz</translation> +<translation id="249330843868392562">Abre a configuración da conversión de texto a voz</translation> <translation id="2497706219848005458">Amarelo verdoso</translation> <translation id="2523609930580546572">Titorial de ChromeVox</translation> <translation id="2525706221823668172">Atallos de teclado de Chromebook</translation> @@ -698,7 +698,7 @@ <translation id="5876817486144482042">Baixar volume da voz</translation> <translation id="5878206664863390311">Para avanzar ou retroceder polos temas, preme Buscar + Frecha dereita ou Buscar + Frecha esquerda</translation> <translation id="5878908838135392163">Azul po</translation> -<translation id="588108970619830498">Restablecéronse os valores predeterminados da configuración da síntese de voz</translation> +<translation id="588108970619830498">Restablecéronse os valores predeterminados da configuración da conversión de texto a voz</translation> <translation id="5891934789323004067">Táboa</translation> <translation id="5899860758576822363">Baixar o volume de reprodución cando ChromeVox estea falando</translation> <translation id="5901630391730855834">Amarelo</translation> @@ -870,7 +870,7 @@ <translation id="7244947685630430863">Non hai ningún gráfico anterior</translation> <translation id="7248671827512403053">Aplicación</translation> <translation id="725969808843520477">Seguinte botón de opción</translation> -<translation id="7261612856573623172">Voz da síntese de voz do sistema</translation> +<translation id="7261612856573623172">Voz da conversión de texto a voz do sistema</translation> <translation id="7269119382257320590">Sen puntuación</translation> <translation id="7271278495464744706">Activar descricións detalladas</translation> <translation id="7273174640290488576">En branco</translation> @@ -927,7 +927,7 @@ <translation id="7668307052366682650">{COUNT,plural, =1{hora}other{horas}}</translation> <translation id="7674576868851035240">Seguinte ligazón</translation> <translation id="7674768236845044097">marca</translation> -<translation id="7676847077928500578">Restablece a configuración da síntese de voz</translation> +<translation id="7676847077928500578">Restablece a configuración da conversión de texto a voz</translation> <translation id="7684431668231950609">Edita texto, entrada de URL</translation> <translation id="7685589220304187312">tlbar</translation> <translation id="7693840228159394336">Botón de opción anterior</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ne.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ne.xtb index 574a454..94d5627 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ne.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ne.xtb
@@ -608,7 +608,7 @@ <translation id="5302089807023311274">ग्रन्थसूचीको सन्दर्भ</translation> <translation id="530391007967514163">तल दिइएको टेक्स्टमा नेभिगेट गर्न एउटा शीर्षकबाट अर्को शीर्षकमा जाने प्रयास गर्नुहोस्।</translation> <translation id="5304943142864553931"><ph name="TITLE" />, ट्याब</translation> -<translation id="5308380583665731573">जडान गर्नुहोस्</translation> +<translation id="5308380583665731573">कनेक्ट गर्नुहोस्</translation> <translation id="5310788376443009632">हटाइयो:</translation> <translation id="5320727453979144100">स्टिकी मोड सक्षम बनाइयो</translation> <translation id="5321085947096604457">{COUNT,plural, =1{अल्पविराम}other{# अल्पविरामहरू}}</translation>
diff --git a/chrome/browser/resources/downloads/BUILD.gn b/chrome/browser/resources/downloads/BUILD.gn index 76b4db9..3fc159d2 100644 --- a/chrome/browser/resources/downloads/BUILD.gn +++ b/chrome/browser/resources/downloads/BUILD.gn
@@ -3,10 +3,10 @@ # found in the LICENSE file. import("//chrome/common/features.gni") -import("//third_party/closure_compiler/compile_js.gni") import("//tools/grit/grit_rule.gni") import("//tools/grit/preprocess_if_expr.gni") import("//tools/polymer/html_to_js.gni") +import("//tools/typescript/ts_library.gni") import("//ui/webui/resources/tools/generate_grd.gni") import("../tools/optimize_webui.gni") @@ -20,7 +20,7 @@ optimize_webui("build") { host = "downloads" - input = rebase_path("$target_gen_dir/$preprocess_folder", root_build_dir) + input = rebase_path("$target_gen_dir/tsc", root_build_dir) js_out_files = [ "downloads.rollup.js" ] js_module_in_files = [ "downloads.js" ] out_manifest = "$target_gen_dir/$build_manifest" @@ -30,9 +30,7 @@ ] deps = [ - ":preprocess", - ":preprocess_mojo", - ":preprocess_web_components", + ":build_ts", "../../../../ui/webui/resources:preprocess", ] } @@ -50,16 +48,8 @@ manifest_files = [ "$target_gen_dir/$build_manifest" ] resource_path_rewrites = [ "downloads.rollup.js|downloads.js" ] } else { - deps = [ - ":preprocess", - ":preprocess_mojo", - ":preprocess_web_components", - ] - manifest_files = [ - "$target_gen_dir/$preprocess_manifest", - "$target_gen_dir/$preprocess_web_components_manifest", - "$target_gen_dir/$preprocess_mojo_manifest", - ] + deps = [ ":build_ts" ] + manifest_files = [ "$target_gen_dir/tsconfig.manifest" ] } grd_prefix = "downloads" out_grd = "$target_gen_dir/${grd_prefix}_resources.grd" @@ -70,12 +60,12 @@ out_folder = "$target_gen_dir/$preprocess_folder" out_manifest = "$target_gen_dir/$preprocess_manifest" in_files = [ - "browser_proxy.js", - "constants.js", - "data.js", - "downloads.js", - "icon_loader.js", - "search_service.js", + "browser_proxy.ts", + "constants.ts", + "data.ts", + "downloads.ts", + "icon_loader.ts", + "search_service.ts", ] } @@ -85,10 +75,10 @@ out_folder = "$target_gen_dir/$preprocess_folder" out_manifest = "$target_gen_dir/$preprocess_web_components_manifest" in_files = [ - "icons.js", - "item.js", - "manager.js", - "toolbar.js", + "icons.ts", + "item.ts", + "manager.ts", + "toolbar.ts", ] } @@ -117,104 +107,40 @@ output_dir = "$root_gen_dir/chrome" } -js_type_check("closure_compile") { - is_polymer3 = true - closure_flags = - default_closure_args + mojom_js_args + [ - "js_module_root=" + rebase_path(".", root_build_dir), - "js_module_root=" + rebase_path( - "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/downloads", - root_build_dir), - ] - deps = [ - ":browser_proxy", - ":constants", - ":data", - ":item", - ":manager", - ":search_service", - ":toolbar", - ] -} - -js_library("browser_proxy") { - deps = [ "//chrome/browser/ui/webui/downloads:mojo_bindings_webui_js" ] -} - -js_library("constants") { -} - -js_library("data") { - deps = [ "//chrome/browser/ui/webui/downloads:mojo_bindings_webui_js" ] -} - -js_library("icon_loader") { - deps = [ - "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:icon.m", - "//ui/webui/resources/js:promise_resolver.m", - ] -} - -js_library("item") { - deps = [ - ":browser_proxy", - ":constants", - ":data", - ":icon_loader", - "//ui/webui/resources/cr_elements/cr_toast:cr_toast_manager.m", - "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:load_time_data.m", - "//ui/webui/resources/js:util.m", - "//ui/webui/resources/js/cr/ui:focus_row_behavior.m", - "//ui/webui/resources/js/cr/ui:focus_without_ink.m", - ] -} - -js_library("manager") { - deps = [ - ":browser_proxy", - ":data", - ":item", - ":search_service", - ":toolbar", - "//third_party/polymer/v3_0/components-chromium/iron-list", - "//ui/webui/resources/cr_elements:find_shortcut_behavior", - "//ui/webui/resources/cr_elements/cr_toast:cr_toast_manager.m", - "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:event_tracker.m", - "//ui/webui/resources/js:load_time_data.m", - "//ui/webui/resources/js:promise_resolver.m", - "//ui/webui/resources/js:util.m", - ] - externs_list = [ "$externs_path/chrome_send.js" ] -} - -js_library("search_service") { - deps = [ - ":browser_proxy", - "//ui/webui/resources/js:load_time_data.m", - ] -} - -js_library("toolbar") { - deps = [ - ":browser_proxy", - ":search_service", - "//ui/webui/resources/cr_elements/cr_action_menu:cr_action_menu.m", - "//ui/webui/resources/cr_elements/cr_toast:cr_toast_manager.m", - "//ui/webui/resources/cr_elements/cr_toolbar:cr_toolbar", - "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:load_time_data.m", - "//ui/webui/resources/js:util.m", - ] -} - html_to_js("web_components") { js_files = [ - "icons.js", - "item.js", - "manager.js", - "toolbar.js", + "icons.ts", + "item.ts", + "manager.ts", + "toolbar.ts", + ] +} + +ts_library("build_ts") { + root_dir = "$target_gen_dir/$preprocess_folder" + out_dir = "$target_gen_dir/tsc" + tsconfig_base = "tsconfig_base.json" + in_files = [ + "browser_proxy.ts", + "constants.ts", + "data.ts", + "downloads.mojom-webui.js", + "downloads.ts", + "icon_loader.ts", + "icons.ts", + "item.ts", + "manager.ts", + "search_service.ts", + "toolbar.ts", + ] + deps = [ + "//third_party/polymer/v3_0:library", + "//ui/webui/resources:library", + ] + definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ] + extra_deps = [ + ":preprocess", + ":preprocess_mojo", + ":preprocess_web_components", ] }
diff --git a/chrome/browser/resources/downloads/browser_proxy.js b/chrome/browser/resources/downloads/browser_proxy.ts similarity index 73% rename from chrome/browser/resources/downloads/browser_proxy.js rename to chrome/browser/resources/downloads/browser_proxy.ts index 575cf09..f780d23e 100644 --- a/chrome/browser/resources/downloads/browser_proxy.js +++ b/chrome/browser/resources/downloads/browser_proxy.ts
@@ -5,11 +5,12 @@ import {PageCallbackRouter, PageHandlerFactory, PageHandlerRemote} from './downloads.mojom-webui.js'; export class BrowserProxy { + callbackRouter: PageCallbackRouter; + handler: PageHandlerRemote; + constructor() { - /** @type {!PageCallbackRouter} */ this.callbackRouter = new PageCallbackRouter(); - /** @type {!PageHandlerRemote} */ this.handler = new PageHandlerRemote(); const factory = PageHandlerFactory.getRemote(); @@ -18,16 +19,13 @@ this.handler.$.bindNewPipeAndPassReceiver()); } - /** @return {!BrowserProxy} */ - static getInstance() { + static getInstance(): BrowserProxy { return instance || (instance = new BrowserProxy()); } - /** @param {!BrowserProxy} obj */ - static setInstance(obj) { + static setInstance(obj: BrowserProxy) { instance = obj; } } -/** @type {?BrowserProxy} */ -let instance = null; +let instance: BrowserProxy|null = null;
diff --git a/chrome/browser/resources/downloads/constants.js b/chrome/browser/resources/downloads/constants.js deleted file mode 100644 index ff73445..0000000 --- a/chrome/browser/resources/downloads/constants.js +++ /dev/null
@@ -1,40 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * Explains why a download is in DANGEROUS state. - * @enum {string} - */ -export const DangerType = { - NOT_DANGEROUS: 'NOT_DANGEROUS', - DANGEROUS_FILE: 'DANGEROUS_FILE', - DANGEROUS_URL: 'DANGEROUS_URL', - DANGEROUS_CONTENT: 'DANGEROUS_CONTENT', - UNCOMMON_CONTENT: 'UNCOMMON_CONTENT', - DANGEROUS_HOST: 'DANGEROUS_HOST', - POTENTIALLY_UNWANTED: 'POTENTIALLY_UNWANTED', - DEEP_SCANNED_SAFE: 'DEEP_SCANNED_SAFE', - DEEP_SCANNED_OPENED_DANGEROUS: 'DEEP_SCANNED_OPENED_DANGEROUS', - SENSITIVE_CONTENT_WARNING: 'SENSITIVE_CONTENT_WARNING', - SENSITIVE_CONTENT_BLOCK: 'SENSITIVE_CONTENT_BLOCK', - BLOCKED_TOO_LARGE: 'BLOCKED_TOO_LARGE', - BLOCKED_PASSWORD_PROTECTED: 'BLOCKED_PASSWORD_PROTECTED', - DANGEROUS_ACCOUNT_COMPROMISE: 'DANGEROUS_ACCOUNT_COMPROMISE' -}; - -/** - * The states a download can be in. These correspond to states defined in - * DownloadsDOMHandler::CreateDownloadItemValue - * @enum {string} - */ -export const States = { - IN_PROGRESS: 'IN_PROGRESS', - CANCELLED: 'CANCELLED', - COMPLETE: 'COMPLETE', - PAUSED: 'PAUSED', - DANGEROUS: 'DANGEROUS', - INTERRUPTED: 'INTERRUPTED', - MIXED_CONTENT: 'MIXED_CONTENT', - ASYNC_SCANNING: 'ASYNC_SCANNING', -};
diff --git a/chrome/browser/resources/downloads/constants.ts b/chrome/browser/resources/downloads/constants.ts new file mode 100644 index 0000000..40329bd --- /dev/null +++ b/chrome/browser/resources/downloads/constants.ts
@@ -0,0 +1,38 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * Explains why a download is in DANGEROUS state. + */ +export enum DangerType { + NOT_DANGEROUS = 'NOT_DANGEROUS', + DANGEROUS_FILE = 'DANGEROUS_FILE', + DANGEROUS_URL = 'DANGEROUS_URL', + DANGEROUS_CONTENT = 'DANGEROUS_CONTENT', + UNCOMMON_CONTENT = 'UNCOMMON_CONTENT', + DANGEROUS_HOST = 'DANGEROUS_HOST', + POTENTIALLY_UNWANTED = 'POTENTIALLY_UNWANTED', + DEEP_SCANNED_SAFE = 'DEEP_SCANNED_SAFE', + DEEP_SCANNED_OPENED_DANGEROUS = 'DEEP_SCANNED_OPENED_DANGEROUS', + SENSITIVE_CONTENT_WARNING = 'SENSITIVE_CONTENT_WARNING', + SENSITIVE_CONTENT_BLOCK = 'SENSITIVE_CONTENT_BLOCK', + BLOCKED_TOO_LARGE = 'BLOCKED_TOO_LARGE', + BLOCKED_PASSWORD_PROTECTED = 'BLOCKED_PASSWORD_PROTECTED', + DANGEROUS_ACCOUNT_COMPROMISE = 'DANGEROUS_ACCOUNT_COMPROMISE', +} + +/** + * The states a download can be in. These correspond to states defined in + * DownloadsDOMHandler = =CreateDownloadItemValue + */ +export enum States { + IN_PROGRESS = 'IN_PROGRESS', + CANCELLED = 'CANCELLED', + COMPLETE = 'COMPLETE', + PAUSED = 'PAUSED', + DANGEROUS = 'DANGEROUS', + INTERRUPTED = 'INTERRUPTED', + MIXED_CONTENT = 'MIXED_CONTENT', + ASYNC_SCANNING = 'ASYNC_SCANNING', +}
diff --git a/chrome/browser/resources/downloads/data.js b/chrome/browser/resources/downloads/data.ts similarity index 68% rename from chrome/browser/resources/downloads/data.js rename to chrome/browser/resources/downloads/data.ts index 388b835d..14157c9 100644 --- a/chrome/browser/resources/downloads/data.js +++ b/chrome/browser/resources/downloads/data.ts
@@ -7,7 +7,8 @@ * JS for chrome://downloads. */ -import {Data as MojomData} from './downloads.mojom-webui.js'; +import {Data} from './downloads.mojom-webui.js'; -/** @typedef {MojomData | {hideDate: boolean}} */ -export let Data; +export class MojomData extends Data { + hideDate: boolean; +}
diff --git a/chrome/browser/resources/downloads/downloads.js b/chrome/browser/resources/downloads/downloads.ts similarity index 100% rename from chrome/browser/resources/downloads/downloads.js rename to chrome/browser/resources/downloads/downloads.ts
diff --git a/chrome/browser/resources/downloads/icon_loader.js b/chrome/browser/resources/downloads/icon_loader.js deleted file mode 100644 index ef6ca81..0000000 --- a/chrome/browser/resources/downloads/icon_loader.js +++ /dev/null
@@ -1,64 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import {assert} from 'chrome://resources/js/assert.m.js'; -import {getFileIconUrl} from 'chrome://resources/js/icon.m.js'; -import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; - -export class IconLoader { - constructor() { - /** @private {!Map<string, !PromiseResolver<boolean>>} */ - this.iconResolvers_ = new Map(); - - /** @private {!Set<!HTMLImageElement>} */ - this.listeningImages_ = new Set(); - } - - /** - * @param {!HTMLImageElement} imageEl - * @param {string} filePath - * @return {!Promise<boolean>} Whether or not the icon loaded successfully. - */ - loadIcon(imageEl, filePath) { - const url = getFileIconUrl(filePath); - - if (!this.iconResolvers_.has(url)) { - this.iconResolvers_.set(url, new PromiseResolver()); - } - - if (!this.listeningImages_.has(imageEl)) { - imageEl.addEventListener('load', this.finishedLoading_.bind(this)); - imageEl.addEventListener('error', this.finishedLoading_.bind(this)); - this.listeningImages_.add(imageEl); - } - - imageEl.src = url; - - return assert(this.iconResolvers_.get(url)).promise; - } - - /** - * @param {!Event} e - * @private - */ - finishedLoading_(e) { - const resolver = assert(this.iconResolvers_.get(e.currentTarget.src)); - if (!resolver.isFulfilled) { - resolver.resolve(e.type === 'load'); - } - } - - /** @return {!IconLoader} */ - static getInstance() { - return instance || (instance = new IconLoader()); - } - - /** @param {!IconLoader} obj */ - static setInstance(obj) { - instance = obj; - } -} - -/** @type {?IconLoader} */ -let instance = null;
diff --git a/chrome/browser/resources/downloads/icon_loader.ts b/chrome/browser/resources/downloads/icon_loader.ts new file mode 100644 index 0000000..7167102b --- /dev/null +++ b/chrome/browser/resources/downloads/icon_loader.ts
@@ -0,0 +1,56 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {getFileIconUrl} from 'chrome://resources/js/icon.m.js'; +import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; + +export class IconLoader { + private iconResolvers_: Map<string, PromiseResolver<boolean>>; + private listeningImages_: Set<HTMLImageElement>; + + constructor() { + this.iconResolvers_ = new Map(); + + this.listeningImages_ = new Set(); + } + + /** + * @return Whether or not the icon loaded successfully. + */ + loadIcon(imageEl: HTMLImageElement, filePath: string): Promise<boolean> { + const url = getFileIconUrl(filePath); + + if (!this.iconResolvers_.has(url)) { + this.iconResolvers_.set(url, new PromiseResolver()); + } + + if (!this.listeningImages_.has(imageEl)) { + imageEl.addEventListener('load', this.finishedLoading_.bind(this)); + imageEl.addEventListener('error', this.finishedLoading_.bind(this)); + this.listeningImages_.add(imageEl); + } + + imageEl.src = url; + + return this.iconResolvers_.get(url)!.promise; + } + + private finishedLoading_(e: Event) { + const resolver = + this.iconResolvers_.get((e.currentTarget as HTMLImageElement).src)!; + if (!resolver.isFulfilled) { + resolver.resolve(e.type === 'load'); + } + } + + static getInstance(): IconLoader { + return instance || (instance = new IconLoader()); + } + + static setInstance(obj: IconLoader) { + instance = obj; + } +} + +let instance: IconLoader|null = null;
diff --git a/chrome/browser/resources/downloads/icons.js b/chrome/browser/resources/downloads/icons.ts similarity index 100% rename from chrome/browser/resources/downloads/icons.js rename to chrome/browser/resources/downloads/icons.ts
diff --git a/chrome/browser/resources/downloads/item.js b/chrome/browser/resources/downloads/item.ts similarity index 72% rename from chrome/browser/resources/downloads/item.js rename to chrome/browser/resources/downloads/item.ts index b55c922..858dbdb0 100644 --- a/chrome/browser/resources/downloads/item.js +++ b/chrome/browser/resources/downloads/item.ts
@@ -26,34 +26,32 @@ import {BrowserProxy} from './browser_proxy.js'; import {DangerType, States} from './constants.js'; -import {Data} from './data.js'; +import {MojomData} from './data.js'; import {PageHandlerInterface} from './downloads.mojom-webui.js'; import {IconLoader} from './icon_loader.js'; -/** - * @constructor - * @extends {PolymerElement} - * @implements {FocusRowBehaviorInterface} - */ -const DownloadsItemElementBase = - mixinBehaviors([FocusRowBehavior], PolymerElement); +export interface DownloadsItemElement { + $: { + 'controlled-by': HTMLElement, + 'file-icon': HTMLImageElement, + 'url': HTMLAnchorElement, + 'remove': HTMLElement, + }; +} -/** @polymer */ +const DownloadsItemElementBase = + mixinBehaviors([FocusRowBehavior], PolymerElement) as + {new (): PolymerElement & FocusRowBehavior}; + export class DownloadsItemElement extends DownloadsItemElementBase { static get is() { return 'downloads-item'; } - static get template() { - return html`{__html_template__}`; - } - static get properties() { return { - /** @type {!Data} */ data: Object, - /** @private */ completelyOnDisk_: { computed: 'computeCompletelyOnDisk_(' + 'data.state, data.fileExternallyRemoved)', @@ -61,20 +59,17 @@ value: true, }, - /** @private */ controlledBy_: { computed: 'computeControlledBy_(data.byExtId, data.byExtName)', type: String, value: '', }, - /** @private */ controlRemoveFromListAriaLabel_: { type: String, computed: 'computeControlRemoveFromListAriaLabel_(data.fileName)', }, - /** @private */ isActive_: { computed: 'computeIsActive_(' + 'data.state, data.fileExternallyRemoved)', @@ -82,49 +77,42 @@ value: true, }, - /** @private */ isDangerous_: { computed: 'computeIsDangerous_(data.state)', type: Boolean, value: false, }, - /** @private */ isMalware_: { computed: 'computeIsMalware_(isDangerous_, data.dangerType)', type: Boolean, value: false, }, - /** @private */ isInProgress_: { computed: 'computeIsInProgress_(data.state)', type: Boolean, value: false, }, - /** @private */ pauseOrResumeText_: { computed: 'computePauseOrResumeText_(isInProgress_, data.resume)', type: String, observer: 'updatePauseOrResumeClass_', }, - /** @private */ showCancel_: { computed: 'computeShowCancel_(data.state)', type: Boolean, value: false, }, - /** @private */ showProgress_: { computed: 'computeShowProgress_(showCancel_, data.percent)', type: Boolean, value: false, }, - /** @private */ showOpenNow_: { computed: 'computeShowOpenNow_(data.state)', type: Boolean, @@ -145,20 +133,24 @@ ]; } + data: MojomData; + private mojoHandler_: PageHandlerInterface|null = null; + private controlledBy_: string; + private isActive_: boolean; + private isDangerous_: boolean; + private isInProgress_: boolean; + private pauseOrResumeText_: string; + private showCancel_: boolean; + private showProgress_: boolean; + private useFileIcon_: boolean; + private restoreFocusAfterCancel_: boolean = false; + overrideCustomEquivalent: boolean; + constructor() { super(); - /** - * Used by FocusRowBehavior. - * @type {boolean} - */ + /** Used by FocusRowBehavior. */ this.overrideCustomEquivalent = true; - - /** @private {?PageHandlerInterface} */ - this.mojoHandler_ = null; - - /** @private {boolean} */ - this.restoreFocusAfterCancel_ = false; } /** @override */ @@ -174,32 +166,28 @@ } /** Overrides FocusRowBehavior. */ - getCustomEquivalent(sampleElement) { + getCustomEquivalent(sampleElement: HTMLElement): HTMLElement|null { if (sampleElement.getAttribute('focus-type') === 'cancel') { - return this.shadowRoot.querySelector('[focus-type="retry"]'); + return this.shadowRoot!.querySelector('[focus-type="retry"]'); } if (sampleElement.getAttribute('focus-type') === 'retry') { - return this.shadowRoot.querySelector('[focus-type="pauseOrResume"]'); + return this.shadowRoot!.querySelector('[focus-type="pauseOrResume"]'); } return null; } - /** @return {!HTMLElement} */ - getFileIcon() { - return /** @type {!HTMLElement} */ (this.$['file-icon']); + getFileIcon(): HTMLImageElement { + return this.$['file-icon']; } /** - * @param {string} url - * @return {string} A reasonably long URL. - * @private + * @return A reasonably long URL. */ - chopUrl_(url) { + private chopUrl_(url: string): string { return url.slice(0, 300); } - /** @private */ - computeClass_() { + private computeClass_(): string { const classes = []; if (this.isActive_) { @@ -217,20 +205,12 @@ return classes.join(' '); } - /** - * @return {boolean} - * @private - */ - computeCompletelyOnDisk_() { + private computeCompletelyOnDisk_(): boolean { return this.data.state === States.COMPLETE && !this.data.fileExternallyRemoved; } - /** - * @return {string} - * @private - */ - computeControlledBy_() { + private computeControlledBy_(): string { if (!this.data.byExtId || !this.data.byExtName) { return ''; } @@ -240,20 +220,12 @@ return loadTimeData.getStringF('controlledByUrl', url, HTMLEscape(name)); } - /** - * @return {string} - * @private - */ - computeControlRemoveFromListAriaLabel_() { + private computeControlRemoveFromListAriaLabel_(): string { return loadTimeData.getStringF( 'controlRemoveFromListAriaLabel', this.data.fileName); } - /** - * @return {string} - * @private - */ - computeDate_() { + private computeDate_(): string { assert(typeof this.data.hideDate === 'boolean'); if (this.data.hideDate) { return ''; @@ -261,16 +233,11 @@ return assert(this.data.sinceString || this.data.dateString); } - /** @private @return {boolean} */ - computeDescriptionVisible_() { + private computeDescriptionVisible_(): boolean { return this.computeDescription_() !== ''; } - /** - * @return {string} - * @private - */ - computeDescription_() { + private computeDescription_(): string { const data = this.data; switch (data.state) { @@ -332,13 +299,9 @@ return ''; } - /** - * @return {string} - * @private - */ - computeIcon_() { + private computeIcon_(): string { if (this.data) { - const dangerType = this.data.dangerType; + const dangerType = this.data.dangerType as DangerType; if ((loadTimeData.getBoolean('requestsApVerdicts') && dangerType === DangerType.UNCOMMON_CONTENT) || dangerType === DangerType.SENSITIVE_CONTENT_WARNING) { @@ -367,13 +330,9 @@ return ''; } - /** - * @return {string} - * @private - */ - computeIconColor_() { + private computeIconColor_(): string { if (this.data) { - const dangerType = this.data.dangerType; + const dangerType = this.data.dangerType as DangerType; if ((loadTimeData.getBoolean('requestsApVerdicts') && dangerType === DangerType.UNCOMMON_CONTENT) || dangerType === DangerType.SENSITIVE_CONTENT_WARNING) { @@ -402,57 +361,37 @@ return ''; } - /** - * @return {boolean} - * @private - */ - computeIsActive_() { + private computeIsActive_(): boolean { return this.data.state !== States.CANCELLED && this.data.state !== States.INTERRUPTED && !this.data.fileExternallyRemoved; } - /** - * @return {boolean} - * @private - */ - computeIsDangerous_() { + private computeIsDangerous_(): boolean { return this.data.state === States.DANGEROUS || this.data.state === States.MIXED_CONTENT; } - /** - * @return {boolean} - * @private - */ - computeIsInProgress_() { + private computeIsInProgress_(): boolean { return this.data.state === States.IN_PROGRESS; } - /** - * @return {boolean} - * @private - */ - computeIsMalware_() { + private computeIsMalware_(): boolean { return this.isDangerous_ && (this.data.dangerType === DangerType.DANGEROUS_CONTENT || this.data.dangerType === DangerType.DANGEROUS_HOST || this.data.dangerType === DangerType.DANGEROUS_URL || - this.data.dangerType === DangerType.POTENTIALLY_UNWANTED || + this.data.dangerType === DangerType.POTENTIALLY_UNWANTED || this.data.dangerType === DangerType.DANGEROUS_ACCOUNT_COMPROMISE); } - /** @private */ - toggleButtonClass_() { - this.shadowRoot.querySelector('#pauseOrResume') - .classList.toggle( - 'action-button', - this.pauseOrResumeText_ === - loadTimeData.getString('controlResume')); + private toggleButtonClass_() { + this.shadowRoot!.querySelector('#pauseOrResume')!.classList.toggle( + 'action-button', + this.pauseOrResumeText_ === loadTimeData.getString('controlResume')); } - /** @private */ - updatePauseOrResumeClass_() { + private updatePauseOrResumeClass_() { if (!this.pauseOrResumeText_) { return; } @@ -462,11 +401,7 @@ beforeNextRender(this, () => this.toggleButtonClass_()); } - /** - * @return {string} - * @private - */ - computePauseOrResumeText_() { + private computePauseOrResumeText_(): string { if (this.data === undefined) { return ''; } @@ -480,49 +415,29 @@ return ''; } - /** - * @return {string} - * @private - */ - computeRemoveStyle_() { + private computeRemoveStyle_(): string { const canDelete = loadTimeData.getBoolean('allowDeletingHistory'); const hideRemove = this.isDangerous_ || this.showCancel_ || !canDelete; return hideRemove ? 'visibility: hidden' : ''; } - /** - * @return {boolean} - * @private - */ - computeShowCancel_() { + private computeShowCancel_(): boolean { return this.data.state === States.IN_PROGRESS || this.data.state === States.PAUSED || this.data.state === States.ASYNC_SCANNING; } - /** - * @return {boolean} - * @private - */ - computeShowProgress_() { + private computeShowProgress_(): boolean { return this.showCancel_ && this.data.percent >= -1 && this.data.state !== States.ASYNC_SCANNING; } - /** - * @return {boolean} - * @private - */ - computeShowOpenNow_() { + private computeShowOpenNow_(): boolean { const allowOpenNow = loadTimeData.getBoolean('allowOpenNow'); return this.data.state === States.ASYNC_SCANNING && allowOpenNow; } - /** - * @return {string} - * @private - */ - computeTag_() { + private computeTag_(): string { switch (this.data.state) { case States.CANCELLED: return loadTimeData.getString('statusCancelled'); @@ -539,26 +454,20 @@ return ''; } - /** - * @return {boolean} - * @private - */ - isIndeterminate_() { + private isIndeterminate_(): boolean { return this.data.percent === -1; } - /** @private */ - observeControlledBy_() { + private observeControlledBy_() { this.$['controlled-by'].innerHTML = this.controlledBy_; if (this.controlledBy_) { - const link = this.shadowRoot.querySelector('#controlled-by a'); - link.setAttribute('focus-row-control', ''); - link.setAttribute('focus-type', 'controlledBy'); + const link = this.shadowRoot!.querySelector('#controlled-by a'); + link!.setAttribute('focus-row-control', ''); + link!.setAttribute('focus-type', 'controlledBy'); } } - /** @private */ - observeIsDangerous_() { + private observeIsDangerous_() { if (!this.data) { return; } @@ -572,7 +481,8 @@ if (this.isDangerous_) { this.$.url.removeAttribute('href'); this.useFileIcon_ = false; - } else if (OVERRIDDEN_ICON_TYPES.includes(this.data.dangerType)) { + } else if (OVERRIDDEN_ICON_TYPES.includes( + this.data.dangerType as DangerType)) { this.useFileIcon_ = false; } else if (this.data.state === States.ASYNC_SCANNING) { this.useFileIcon_ = false; @@ -580,8 +490,7 @@ this.$.url.href = assert(this.data.url); const path = this.data.filePath; IconLoader.getInstance() - .loadIcon( - /** @type {!HTMLImageElement} */ (this.$['file-icon']), path) + .loadIcon(this.$['file-icon'], path) .then(success => { if (path === this.data.filePath && this.data.state !== States.ASYNC_SCANNING) { @@ -591,98 +500,74 @@ } } - /** @private */ - onCancelTap_() { + private onCancelTap_() { this.restoreFocusAfterCancel_ = true; - this.mojoHandler_.cancel(this.data.id); + this.mojoHandler_!.cancel(this.data.id); } - /** @private */ - onDiscardDangerousTap_() { - this.mojoHandler_.discardDangerous(this.data.id); + private onDiscardDangerousTap_() { + this.mojoHandler_!.discardDangerous(this.data.id); } - /** @private */ - onOpenNowTap_() { - this.mojoHandler_.openDuringScanningRequiringGesture(this.data.id); + private onOpenNowTap_() { + this.mojoHandler_!.openDuringScanningRequiringGesture(this.data.id); } - /** - * @private - * @param {Event} e - */ - onDragStart_(e) { + private onDragStart_(e: Event) { e.preventDefault(); - this.mojoHandler_.drag(this.data.id); + this.mojoHandler_!.drag(this.data.id); } - /** - * @param {Event} e - * @private - */ - onFileLinkTap_(e) { + private onFileLinkTap_(e: Event) { e.preventDefault(); - this.mojoHandler_.openFileRequiringGesture(this.data.id); + this.mojoHandler_!.openFileRequiringGesture(this.data.id); } - /** @private */ - onUrlTap_() { + private onUrlTap_() { chrome.send( 'metricsHandler:recordAction', ['Downloads_OpenUrlOfDownloadedItem']); } - /** @private */ - onPauseOrResumeTap_() { + private onPauseOrResumeTap_() { if (this.isInProgress_) { - this.mojoHandler_.pause(this.data.id); + this.mojoHandler_!.pause(this.data.id); } else { - this.mojoHandler_.resume(this.data.id); + this.mojoHandler_!.resume(this.data.id); } } - /** - * @private - * @param {Event} e - */ - onRemoveTap_(e) { - this.mojoHandler_.remove(this.data.id); + private onRemoveTap_(e: Event) { + this.mojoHandler_!.remove(this.data.id); const pieces = loadTimeData.getSubstitutedStringPieces( - loadTimeData.getString('toastRemovedFromList'), this.data.fileName); + loadTimeData.getString('toastRemovedFromList'), + this.data.fileName) as unknown as + Array<{collapsible: boolean, value: string, arg?: string}>; + pieces.forEach(p => { // Make the file name collapsible. p.collapsible = !!p.arg; }); const canUndo = !this.data.isDangerous && !this.data.isMixedContent; - getToastManager().showForStringPieces( - /** - * @type {!Array<{collapsible: boolean, - * value: string, - * arg: (string|null)}>} - */ - (pieces), /* hideSlotted= */ !canUndo); + getToastManager().showForStringPieces(pieces, /* hideSlotted= */ !canUndo); // Stop propagating a click to the document to remove toast. e.stopPropagation(); e.preventDefault(); } - /** @private */ - onRetryTap_() { - this.mojoHandler_.retryDownload(this.data.id); + private onRetryTap_() { + this.mojoHandler_!.retryDownload(this.data.id); } - /** @private */ - onSaveDangerousTap_() { - this.mojoHandler_.saveDangerousRequiringGesture(this.data.id); + private onSaveDangerousTap_() { + this.mojoHandler_!.saveDangerousRequiringGesture(this.data.id); } - /** @private */ - onShowTap_() { - this.mojoHandler_.show(this.data.id); + private onShowTap_() { + this.mojoHandler_!.show(this.data.id); } - /** @private */ - restoreFocusAfterCancelIfNeeded_() { + private restoreFocusAfterCancelIfNeeded_() { if (!this.restoreFocusAfterCancel_) { return; } @@ -690,10 +575,14 @@ setTimeout(() => { const element = this.getFocusRow().getFirstFocusable('retry'); if (element) { - element.focus(); + (element as HTMLElement).focus(); } }); } + + static get template() { + return html`{__html_template__}`; + } } customElements.define(DownloadsItemElement.is, DownloadsItemElement);
diff --git a/chrome/browser/resources/downloads/manager.js b/chrome/browser/resources/downloads/manager.ts similarity index 78% rename from chrome/browser/resources/downloads/manager.js rename to chrome/browser/resources/downloads/manager.ts index f775e41..a58dec2 100644 --- a/chrome/browser/resources/downloads/manager.js +++ b/chrome/browser/resources/downloads/manager.ts
@@ -19,54 +19,57 @@ import {EventTracker} from 'chrome://resources/js/event_tracker.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; +import {IronListElement} from 'chrome://resources/polymer/v3_0/iron-list/iron-list.js'; import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {BrowserProxy} from './browser_proxy.js'; import {States} from './constants.js'; -import {Data} from './data.js'; +import {MojomData} from './data.js'; import {PageCallbackRouter, PageHandlerInterface} from './downloads.mojom-webui.js'; import {SearchService} from './search_service.js'; +import {DownloadsToolbarElement} from './toolbar.js'; -/** - * @constructor - * @extends {PolymerElement} - * @implements {FindShortcutBehaviorInterface} - */ +declare global { + interface Window { + // https://github.com/microsoft/TypeScript/issues/40807 + requestIdleCallback(callback: () => void): void; + } +} + +export interface DownloadsManagerElement { + $: { + 'toolbar': DownloadsToolbarElement, + 'downloadsList': IronListElement, + }; +} + const DownloadsManagerElementBase = - mixinBehaviors([FindShortcutBehavior], PolymerElement); + mixinBehaviors([FindShortcutBehavior], PolymerElement) as + {new (): PolymerElement & FindShortcutBehavior}; -/** @polymer */ export class DownloadsManagerElement extends DownloadsManagerElementBase { static get is() { return 'downloads-manager'; } - static get template() { - return html`{__html_template__}`; - } - static get properties() { return { - /** @private */ hasDownloads_: { observer: 'hasDownloadsChanged_', type: Boolean, }, - /** @private */ hasShadow_: { type: Boolean, value: false, reflectToAttribute: true, }, - /** @private */ inSearchMode_: { type: Boolean, value: false, }, - /** @private {!Array<!Data>} */ items_: { type: Array, value() { @@ -74,16 +77,13 @@ }, }, - /** @private */ spinnerActive_: { type: Boolean, notify: true, }, - /** @private {Element} */ lastFocused_: Object, - /** @private */ listBlurred_: Boolean, }; } @@ -92,29 +92,28 @@ return ['itemsChanged_(items_.*)']; } + private items_: Array<MojomData>; + private hasDownloads_: boolean; + private hasShadow_: boolean; + private inSearchMode_: boolean; + private spinnerActive_: boolean; + + private mojoHandler_: PageHandlerInterface; + private mojoEventTarget_: PageCallbackRouter; + private searchService_: SearchService = SearchService.getInstance(); + private loaded_: PromiseResolver<void> = new PromiseResolver(); + private listenerIds_: Array<number>; + private eventTracker_: EventTracker = new EventTracker(); + constructor() { super(); const browserProxy = BrowserProxy.getInstance(); - /** @private {!PageCallbackRouter} */ this.mojoEventTarget_ = browserProxy.callbackRouter; - /** @private {!PageHandlerInterface} */ this.mojoHandler_ = browserProxy.handler; - /** @private {!SearchService} */ - this.searchService_ = SearchService.getInstance(); - - /** @private {!PromiseResolver} */ - this.loaded_ = new PromiseResolver; - - /** @private {?Array<number>} */ - this.listenerIds_ = null; - - /** @private {!EventTracker} */ - this.eventTracker_ = new EventTracker(); - // Regular expression that captures the leading slash, the content and the // trailing slash in three different groups. const CANONICAL_PATH_REGEX = /(^\/)([\/-\w]+)(\/$)/; @@ -129,7 +128,7 @@ super.connectedCallback(); // TODO(dbeam): this should use a class instead. - this.setAttribute('loading', true); + this.toggleAttribute('loading', true); document.documentElement.classList.remove('loading'); this.listenerIds_ = [ @@ -140,15 +139,17 @@ this.mojoEventTarget_.updateItem.addListener(this.updateItem_.bind(this)), ]; - this.eventTracker_.add(document, 'keydown', e => this.onKeyDown_(e)); + this.eventTracker_.add( + document, 'keydown', e => this.onKeyDown_(e as KeyboardEvent)); this.eventTracker_.add(document, 'click', () => this.onClick_()); this.loaded_.promise.then(() => { - requestIdleCallback(function() { + window.requestIdleCallback(function() { chrome.send( 'metricsHandler:recordTime', ['Download.ResultsRenderedTime', window.performance.now()]); - document.fonts.load('bold 12px Roboto'); + // https://github.com/microsoft/TypeScript/issues/13569 + (document as any).fonts.load('bold 12px Roboto'); }); }); @@ -156,8 +157,8 @@ // Intercepts clicks on toast. const toastManager = getToastManager(); - toastManager.shadowRoot.querySelector('#toast').onclick = e => - this.onToastClicked_(e); + toastManager.shadowRoot!.querySelector<HTMLElement>('#toast')!.onclick = + e => this.onToastClicked_(e); } /** @override */ @@ -170,27 +171,20 @@ this.eventTracker_.removeAll(); } - /** @private */ - clearAll_() { + private clearAll_() { this.set('items_', []); } - /** @private */ - hasDownloadsChanged_() { + private hasDownloadsChanged_() { if (this.hasDownloads_) { this.$.downloadsList.fire('iron-resize'); } } - /** - * @param {number} index - * @param {!Array<Data>} items - * @private - */ - insertItems_(index, items) { + private insertItems_(index: number, items: Array<MojomData>) { // Insert |items| at the given |index| via Array#splice(). if (items.length > 0) { - this.items_.splice.apply(this.items_, [index, 0].concat(items)); + this.items_.splice(index, 0, ...items); this.updateHideDates_(index, index + items.length); this.notifySplices('items_', [{ index: index, @@ -209,8 +203,7 @@ this.spinnerActive_ = false; } - /** @private */ - itemsChanged_() { + private itemsChanged_() { this.hasDownloads_ = this.items_.length > 0; this.$.toolbar.hasClearableDownloads = loadTimeData.getBoolean('allowDeletingHistory') && @@ -239,19 +232,14 @@ } /** - * @return {string} The text to show when no download items are showing. - * @private + * @return The text to show when no download items are showing. */ - noDownloadsText_() { + private noDownloadsText_(): string { return loadTimeData.getString( this.inSearchMode_ ? 'noSearchResults' : 'noDownloads'); } - /** - * @param {!KeyboardEvent} e - * @private - */ - onKeyDown_(e) { + private onKeyDown_(e: KeyboardEvent) { let clearAllKey = 'c'; // <if expr="is_macosx"> // On Mac, pressing alt+c produces 'ç' as |event.key|. @@ -276,16 +264,14 @@ } } - /** @private */ - onClick_() { + private onClick_() { const toastManager = getToastManager(); if (toastManager.isToastOpen) { toastManager.hide(); } } - /** @private */ - onClearAllCommand_() { + private onClearAllCommand_() { if (!this.$.toolbar.canClearAll()) { return; } @@ -293,12 +279,12 @@ this.mojoHandler_.clearAll(); const canUndo = this.items_.some(data => !data.isDangerous && !data.isMixedContent); - getToastManager().show(loadTimeData.getString('toastClearedAll'), + getToastManager().show( + loadTimeData.getString('toastClearedAll'), /* hideSlotted= */ !canUndo); } - /** @private */ - onUndoCommand_() { + private onUndoCommand_() { if (!this.$.toolbar.canUndo()) { return; } @@ -307,15 +293,13 @@ this.mojoHandler_.undo(); } - /** @private */ - onToastClicked_(e) { + private onToastClicked_(e: Event) { e.stopPropagation(); e.preventDefault(); } - /** @private */ - onScroll_() { - const container = this.$.downloadsList.scrollTarget; + private onScroll_() { + const container = this.$.downloadsList.scrollTarget!; const distanceToBottom = container.scrollHeight - container.scrollTop - container.offsetHeight; if (distanceToBottom <= 100) { @@ -325,16 +309,11 @@ this.hasShadow_ = container.scrollTop > 0; } - /** @private */ - onSearchChanged_() { + private onSearchChanged_() { this.inSearchMode_ = this.searchService_.isSearching(); } - /** - * @param {number} index - * @private - */ - removeItem_(index) { + private removeItem_(index: number) { const removed = this.items_.splice(index, 1); this.updateHideDates_(index, index); this.notifySplices('items_', [{ @@ -347,8 +326,7 @@ this.onScroll_(); } - /** @private */ - onUndoClick_() { + private onUndoClick_() { getToastManager().hide(); this.mojoHandler_.undo(); } @@ -357,11 +335,8 @@ * Updates whether dates should show for |this.items_[start - end]|. Note: * this method does not trigger template bindings. Use notifySplices() or * after calling this method to ensure items are redrawn. - * @param {number} start - * @param {number} end - * @private */ - updateHideDates_(start, end) { + private updateHideDates_(start: number, end: number) { for (let i = start; i <= end; ++i) { const current = this.items_[i]; if (!current) { @@ -372,24 +347,19 @@ } } - /** - * @param {number} index - * @param {!Data} data - * @private - */ - updateItem_(index, data) { + private updateItem_(index: number, data: MojomData) { this.items_[index] = data; this.updateHideDates_(index, index); this.notifyPath(`items_.${index}`); setTimeout(() => { - const list = /** @type {!IronListElement} */ (this.$.downloadsList); + const list = this.$.downloadsList; list.updateSizeForIndex(index); }, 0); } // Override FindShortcutBehavior methods. - handleFindShortcut(modalContextOpen) { + handleFindShortcut(modalContextOpen: boolean): boolean { if (modalContextOpen) { return false; } @@ -401,6 +371,10 @@ searchInputHasFocus() { return this.$.toolbar.isSearchFocused(); } + + static get template() { + return html`{__html_template__}`; + } } customElements.define(DownloadsManagerElement.is, DownloadsManagerElement);
diff --git a/chrome/browser/resources/downloads/search_service.js b/chrome/browser/resources/downloads/search_service.ts similarity index 65% rename from chrome/browser/resources/downloads/search_service.js rename to chrome/browser/resources/downloads/search_service.ts index a7cf077..735c89c 100644 --- a/chrome/browser/resources/downloads/search_service.js +++ b/chrome/browser/resources/downloads/search_service.ts
@@ -8,19 +8,15 @@ import {PageHandlerInterface} from './downloads.mojom-webui.js'; export class SearchService { - constructor() { - /** @private {!Array<string>} */ - this.searchTerms_ = []; - - /** @private {PageHandlerInterface} */ - this.mojoHandler_ = BrowserProxy.getInstance().handler; - } + private searchTerms_: Array<string> = []; + private mojoHandler_: PageHandlerInterface = + BrowserProxy.getInstance().handler; /** - * @param {string} searchText Input typed by the user into a search box. - * @return {Array<string>} A list of terms extracted from |searchText|. + * @param searchText Input typed by the user into a search box. + * @return A list of terms extracted from |searchText|. */ - static splitTerms(searchText) { + static splitTerms(searchText: string): Array<string> { // Split quoted terms (e.g., 'The "lazy" dog' => ['The', 'lazy', 'dog']). return searchText.split(/"([^"]*)"/).map(s => s.trim()).filter(s => !!s); } @@ -39,18 +35,18 @@ } /** - * @return {boolean} Whether the user is currently searching for downloads + * @return Whether the user is currently searching for downloads * (i.e. has a non-empty search term). */ - isSearching() { + isSearching(): boolean { return this.searchTerms_.length > 0; } /** - * @param {string} searchText What to search for. - * @return {boolean} Whether |searchText| resulted in new search terms. + * @param searchText What to search for. + * @return Whether |searchText| resulted in new search terms. */ - search(searchText) { + search(searchText: string): boolean { const searchTerms = SearchService.splitTerms(searchText); let sameTerms = searchTerms.length === this.searchTerms_.length; @@ -69,16 +65,13 @@ return true; } - /** @return {!SearchService} */ - static getInstance() { + static getInstance(): SearchService { return instance || (instance = new SearchService()); } - /** @param {!SearchService} obj */ - static setInstance(obj) { + static setInstance(obj: SearchService) { instance = obj; } } -/** @type {?SearchService} */ -let instance = null; +let instance: SearchService|null = null;
diff --git a/chrome/browser/resources/downloads/toolbar.js b/chrome/browser/resources/downloads/toolbar.ts similarity index 62% rename from chrome/browser/resources/downloads/toolbar.js rename to chrome/browser/resources/downloads/toolbar.ts index 4294c0d..b20d9fe 100644 --- a/chrome/browser/resources/downloads/toolbar.js +++ b/chrome/browser/resources/downloads/toolbar.ts
@@ -4,6 +4,7 @@ import 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.m.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; +import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.js'; import 'chrome://resources/cr_elements/hidden_style_css.m.js'; import 'chrome://resources/cr_elements/icons.m.js'; import 'chrome://resources/cr_elements/shared_vars_css.m.js'; @@ -11,6 +12,8 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; import './strings.m.js'; +import {CrActionMenuElement} from 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.m.js'; +import {CrIconButtonElement} from 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.m.js'; import {CrToolbarElement} from 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.js'; import {assert} from 'chrome://resources/js/assert.m.js'; @@ -18,33 +21,31 @@ import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {BrowserProxy} from './browser_proxy.js'; -import {Data} from './data.js'; +import {MojomData} from './data.js'; import {PageHandlerInterface} from './downloads.mojom-webui.js'; import {SearchService} from './search_service.js'; -/** @polymer */ +export interface DownloadsToolbarElement { + $: { + 'moreActionsMenu': CrActionMenuElement, + 'moreActions': CrIconButtonElement, + 'toolbar': CrToolbarElement, + }; +} + export class DownloadsToolbarElement extends PolymerElement { static get is() { return 'downloads-toolbar'; } - static get template() { - return html`{__html_template__}`; - } - static get properties() { return { hasClearableDownloads: { type: Boolean, - value: false, observer: 'updateClearAll_', }, - /** @type {!Array<!Data>} */ - items: { - type: Array, - value: Array, - }, + items: Array, spinnerActive: { type: Boolean, @@ -53,12 +54,10 @@ }; } - constructor() { - super(); - - /** @private {?PageHandlerInterface} */ - this.mojoHandler_ = null; - } + private mojoHandler_: PageHandlerInterface|null = null; + hasClearableDownloads: boolean = false; + spinnerActive: boolean; + items: Array<MojomData> = []; /** @override */ ready() { @@ -66,59 +65,48 @@ this.mojoHandler_ = BrowserProxy.getInstance().handler; } - /** @return {boolean} Whether removal can be undone. */ - canUndo() { + /** @return Whether removal can be undone. */ + canUndo(): boolean { return !this.isSearchFocused(); } - /** @return {boolean} Whether "Clear all" should be allowed. */ - canClearAll() { + /** @return Whether "Clear all" should be allowed. */ + canClearAll(): boolean { return this.getSearchText().length === 0 && this.hasClearableDownloads; } - /** @return {string} The full text being searched. */ - getSearchText() { - return /** @type {!CrToolbarElement} */ (this.$.toolbar) - .getSearchField() - .getValue(); + /** @return The full text being searched. */ + getSearchText(): string { + return this.$.toolbar.getSearchField().getValue(); } focusOnSearchInput() { - return /** @type {!CrToolbarElement} */ (this.$.toolbar) - .getSearchField() - .showAndFocus(); + this.$.toolbar.getSearchField().showAndFocus(); } - isSearchFocused() { - return /** @type {!CrToolbarElement} */ (this.$.toolbar) - .getSearchField() - .isSearchFocused(); + isSearchFocused(): boolean { + return this.$.toolbar.getSearchField().isSearchFocused(); } - /** @private */ - onClearAllTap_(e) { + private onClearAllTap_(e: Event) { assert(this.canClearAll()); - this.mojoHandler_.clearAll(); + this.mojoHandler_!.clearAll(); this.$.moreActionsMenu.close(); const canUndo = this.items.some(data => !data.isDangerous && !data.isMixedContent); - getToastManager().show(loadTimeData.getString('toastClearedAll'), + getToastManager().show( + loadTimeData.getString('toastClearedAll'), /* hideSlotted= */ !canUndo); // Stop propagating a click to the document to remove toast. e.stopPropagation(); e.preventDefault(); } - /** @private */ - onMoreActionsTap_() { + private onMoreActionsTap_() { this.$.moreActionsMenu.showAt(this.$.moreActions); } - /** - * @param {!CustomEvent<string>} event - * @private - */ - onSearchChanged_(event) { + private onSearchChanged_(event: CustomEvent<string>) { const searchService = SearchService.getInstance(); if (searchService.search(event.detail)) { this.spinnerActive = searchService.isSearching(); @@ -126,15 +114,18 @@ this.updateClearAll_(); } - /** @private */ - onOpenDownloadsFolderTap_() { - this.mojoHandler_.openDownloadsFolderRequiringGesture(); + private onOpenDownloadsFolderTap_() { + this.mojoHandler_!.openDownloadsFolderRequiringGesture(); this.$.moreActionsMenu.close(); } - /** @private */ - updateClearAll_() { - this.shadowRoot.querySelector('.clear-all').hidden = !this.canClearAll(); + private updateClearAll_() { + this.shadowRoot!.querySelector<HTMLButtonElement>('.clear-all')!.hidden = + !this.canClearAll(); + } + + static get template() { + return html`{__html_template__}`; } }
diff --git a/chrome/browser/resources/downloads/tsconfig_base.json b/chrome/browser/resources/downloads/tsconfig_base.json new file mode 100644 index 0000000..3e71f763 --- /dev/null +++ b/chrome/browser/resources/downloads/tsconfig_base.json
@@ -0,0 +1,9 @@ +{ + "extends": "../../../../tools/typescript/tsconfig_base.json", + "compilerOptions": { + "allowJs": true, + "noUncheckedIndexedAccess": false, + "noUnusedLocals": false, + "strictPropertyInitialization": false + } +}
diff --git a/chrome/browser/resources/extensions/BUILD.gn b/chrome/browser/resources/extensions/BUILD.gn index d5574d4..d4cbf4e 100644 --- a/chrome/browser/resources/extensions/BUILD.gn +++ b/chrome/browser/resources/extensions/BUILD.gn
@@ -458,7 +458,6 @@ "activity_log:activity_log_history", "activity_log:activity_log_stream", "//ui/webui/resources/js:assert.m", - "//ui/webui/resources/js:cr.m", ] externs_list = chrome_extension_public_externs + [ "$externs_path/activity_log_private.js",
diff --git a/chrome/browser/resources/extensions/checkup.js b/chrome/browser/resources/extensions/checkup.js index 56886e4..b0266c7 100644 --- a/chrome/browser/resources/extensions/checkup.js +++ b/chrome/browser/resources/extensions/checkup.js
@@ -6,11 +6,17 @@ import 'chrome://resources/cr_elements/shared_style_css.m.js'; import './shared_style.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -Polymer({ - is: 'extensions-checkup', +/** @polymer */ +class ExtensionsCheckupElement extends PolymerElement { + static get is() { + return 'extensions-checkup'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } +} -}); +customElements.define(ExtensionsCheckupElement.is, ExtensionsCheckupElement);
diff --git a/chrome/browser/resources/extensions/code_section.js b/chrome/browser/resources/extensions/code_section.js index 65c80bd..fcd18b2 100644 --- a/chrome/browser/resources/extensions/code_section.js +++ b/chrome/browser/resources/extensions/code_section.js
@@ -7,9 +7,9 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; import './strings.m.js'; -import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; +import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @@ -25,63 +25,76 @@ return Math.min(max, totalCount); } -Polymer({ - is: 'extensions-code-section', +/** + * @constructor + * @extends {PolymerElement} + * @implements {I18nBehaviorInterface} + */ +const ExtensionsCodeSectionElementBase = + mixinBehaviors([I18nBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsCodeSectionElement extends ExtensionsCodeSectionElementBase { + static get is() { + return 'extensions-code-section'; + } - behaviors: [I18nBehavior], + static get template() { + return html`{__html_template__}`; + } - properties: { - /** - * The code this object is displaying. - * @type {?chrome.developerPrivate.RequestFileSourceResponse} - */ - code: { - type: Object, - value: null, - }, + static get properties() { + return { + /** + * The code this object is displaying. + * @type {?chrome.developerPrivate.RequestFileSourceResponse} + */ + code: { + type: Object, + value: null, + }, - isActive: Boolean, + isActive: Boolean, - /** @private Highlighted code. */ - highlighted_: String, + /** @private Highlighted code. */ + highlighted_: String, - /** @private Code before the highlighted section. */ - before_: String, + /** @private Code before the highlighted section. */ + before_: String, - /** @private Code after the highlighted section. */ - after_: String, + /** @private Code after the highlighted section. */ + after_: String, - /** @private */ - showNoCode_: { - type: Boolean, - computed: 'computeShowNoCode_(isActive, highlighted_)', - }, + /** @private */ + showNoCode_: { + type: Boolean, + computed: 'computeShowNoCode_(isActive, highlighted_)', + }, - /** @private Description for the highlighted section. */ - highlightDescription_: String, + /** @private Description for the highlighted section. */ + highlightDescription_: String, - /** @private */ - lineNumbers_: String, + /** @private */ + lineNumbers_: String, - /** @private */ - truncatedBefore_: Number, + /** @private */ + truncatedBefore_: Number, - /** @private */ - truncatedAfter_: Number, + /** @private */ + truncatedAfter_: Number, - /** - * The string to display if no |code| is set (e.g. because we couldn't - * load the relevant source file). - * @type {string} - */ - couldNotDisplayCode: String, - }, + /** + * The string to display if no |code| is set (e.g. because we couldn't + * load the relevant source file). + * @type {string} + */ + couldNotDisplayCode: String, + }; + } - observers: [ - 'onCodeChanged_(code.*)', - ], + static get observers() { + return ['onCodeChanged_(code.*)']; + } /** * @private @@ -132,7 +145,7 @@ this.truncatedBefore_ + 1, this.truncatedBefore_ + visibleCode.split('\n').length); this.scrollToHighlight_(visibleLineCountBefore); - }, + } /** * @param {number} lineCount @@ -145,7 +158,7 @@ return lineCount === 1 ? stringSingular : loadTimeData.substituteString(stringPluralTemplate, lineCount); - }, + } /** * @param {number} start @@ -159,7 +172,7 @@ } this.lineNumbers_ = lineNumbers; - }, + } /** * @param {number} linesBeforeHighlight @@ -175,7 +188,7 @@ const targetTop = highlightTop - this.clientHeight * 0.5; this.$['scroll-container'].scrollTo({top: targetTop}); - }, + } /** * @param {number} lineStart @@ -191,7 +204,7 @@ } else { return this.i18n('accessibilityErrorLine', lineStart.toString()); } - }, + } /** * @private @@ -199,5 +212,8 @@ */ computeShowNoCode_() { return this.isActive && !this.highlighted_; - }, -}); + } +} + +customElements.define( + ExtensionsCodeSectionElement.is, ExtensionsCodeSectionElement);
diff --git a/chrome/browser/resources/extensions/detail_view.js b/chrome/browser/resources/extensions/detail_view.js index 44d28e0..6a1497e 100644 --- a/chrome/browser/resources/extensions/detail_view.js +++ b/chrome/browser/resources/extensions/detail_view.js
@@ -27,64 +27,75 @@ import {CrContainerShadowBehavior} from 'chrome://resources/cr_elements/cr_container_shadow_behavior.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {afterNextRender, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {afterNextRender, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; import {ItemBehavior} from './item_behavior.js'; import {computeInspectableViewLabel, EnableControl, getEnableControl, getItemSource, getItemSourceString, isEnabled, userCanChangeEnablement} from './item_util.js'; import {navigation, Page} from './navigation_helper.js'; -Polymer({ - is: 'extensions-detail-view', +/** + * @constructor + * @extends {PolymerElement} + */ +const ExtensionsDetailViewElementBase = + mixinBehaviors([CrContainerShadowBehavior, ItemBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsDetailViewElement extends ExtensionsDetailViewElementBase { + static get is() { + return 'extensions-detail-view'; + } - behaviors: [ - CrContainerShadowBehavior, - ItemBehavior, - ], + static get template() { + return html`{__html_template__}`; + } - properties: { - /** - * The underlying ExtensionInfo for the details being displayed. - * @type {!chrome.developerPrivate.ExtensionInfo} - */ - data: Object, + static get properties() { + return { + /** + * The underlying ExtensionInfo for the details being displayed. + * @type {!chrome.developerPrivate.ExtensionInfo} + */ + data: Object, - /** @private */ - size_: String, + /** @private */ + size_: String, - /** @type {!ItemDelegate} */ - delegate: Object, + /** @type {!ItemDelegate} */ + delegate: Object, - /** Whether the user has enabled the UI's developer mode. */ - inDevMode: Boolean, + /** Whether the user has enabled the UI's developer mode. */ + inDevMode: Boolean, - /** Whether "allow in incognito" option should be shown. */ - incognitoAvailable: Boolean, + /** Whether "allow in incognito" option should be shown. */ + incognitoAvailable: Boolean, - /** Whether "View Activity Log" link should be shown. */ - showActivityLog: Boolean, + /** Whether "View Activity Log" link should be shown. */ + showActivityLog: Boolean, - /** Whether the user navigated to this page from the activity log page. */ - fromActivityLog: Boolean, - }, + /** Whether the user navigated to this page from the activity log page. */ + fromActivityLog: Boolean, + }; + } - observers: [ - 'onItemIdChanged_(data.id, delegate)', - ], + static get observers() { + return ['onItemIdChanged_(data.id, delegate)']; + } - listeners: { - 'view-enter-start': 'onViewEnterStart_', - }, + /** @override */ + ready() { + super.ready(); + this.addEventListener('view-enter-start', this.onViewEnterStart_); + } /** * Focuses the extensions options button. This should be used after the * dialog closes. */ focusOptionsButton() { - this.$$('#extensions-options').focus(); - }, + this.shadowRoot.querySelector('#extensions-options').focus(); + } /** * Focuses the back button when page is loaded. @@ -96,7 +107,7 @@ this.$.closeButton; afterNextRender(this, () => focusWithoutInk(elementToFocus)); - }, + } /** @private */ onItemIdChanged_() { @@ -106,12 +117,12 @@ this.delegate.getExtensionSize(this.data.id).then(size => { this.size_ = size; }); - }, + } /** @private */ onActivityLogTap_() { navigation.navigateTo({page: Page.ACTIVITY_LOG, extensionId: this.data.id}); - }, + } /** * @param {string} description @@ -121,12 +132,12 @@ */ getDescription_(description, fallback) { return description || fallback; - }, + } /** @private */ onCloseButtonTap_() { navigation.navigateTo({page: Page.LIST}); - }, + } /** * @return {boolean} @@ -134,7 +145,7 @@ */ isEnabled_() { return isEnabled(this.data.state); - }, + } /** * @return {boolean} @@ -142,7 +153,7 @@ */ isEnableToggleEnabled_() { return userCanChangeEnablement(this.data); - }, + } /** * @return {boolean} @@ -150,7 +161,7 @@ */ hasDependentExtensions_() { return this.data.dependentExtensions.length > 0; - }, + } /** * @return {boolean} @@ -161,7 +172,7 @@ this.data.disableReasons.suspiciousInstall || this.data.disableReasons.updateRequired || !!this.data.blacklistText || this.data.runtimeWarnings.length > 0; - }, + } /** * @return {string} @@ -169,7 +180,7 @@ */ computeEnabledStyle_() { return this.isEnabled_() ? 'enabled-text' : ''; - }, + } /** * @param {!chrome.developerPrivate.ExtensionState} state @@ -181,7 +192,7 @@ computeEnabledText_(state, onText, offText) { // TODO(devlin): Get the full spectrum of these strings from bettes. return isEnabled(state) ? onText : offText; - }, + } /** * @param {!chrome.developerPrivate.ExtensionView} view @@ -190,7 +201,7 @@ */ computeInspectLabel_(view) { return computeInspectableViewLabel(view); - }, + } /** * @return {boolean} @@ -198,7 +209,7 @@ */ shouldShowOptionsLink_() { return !!this.data.optionsPage; - }, + } /** * @return {boolean} @@ -207,7 +218,7 @@ shouldShowOptionsSection_() { return this.data.incognitoAccess.isEnabled || this.data.fileAccess.isEnabled || this.data.errorCollection.isEnabled; - }, + } /** * @return {boolean} @@ -215,13 +226,13 @@ */ shouldShowIncognitoOption_() { return this.data.incognitoAccess.isEnabled && this.incognitoAvailable; - }, + } /** @private */ onEnableToggleChange_() { this.delegate.setItemEnabled(this.data.id, this.$.enableToggle.checked); this.$.enableToggle.checked = this.isEnabled_(); - }, + } /** * @param {!{model: !{item: !chrome.developerPrivate.ExtensionView}}} e @@ -229,62 +240,65 @@ */ onInspectTap_(e) { this.delegate.inspectItemView(this.data.id, e.model.item); - }, + } /** @private */ onExtensionOptionsTap_() { this.delegate.showItemOptionsPage(this.data); - }, + } /** @private */ onReloadTap_() { this.delegate.reloadItem(this.data.id).catch(loadError => { - this.fire('load-error', loadError); + this.dispatchEvent(new CustomEvent( + 'load-error', {bubbles: true, composed: true, detail: loadError})); }); - }, + } /** @private */ onRemoveTap_() { this.delegate.deleteItem(this.data.id); - }, + } /** @private */ onRepairTap_() { this.delegate.repairItem(this.data.id); - }, + } /** @private */ onLoadPathTap_() { this.delegate.showInFolder(this.data.id); - }, + } /** @private */ onAllowIncognitoChange_() { this.delegate.setItemAllowedIncognito( - this.data.id, this.$$('#allow-incognito').checked); - }, + this.data.id, + this.shadowRoot.querySelector('#allow-incognito').checked); + } /** @private */ onAllowOnFileUrlsChange_() { this.delegate.setItemAllowedOnFileUrls( - this.data.id, this.$$('#allow-on-file-urls').checked); - }, + this.data.id, + this.shadowRoot.querySelector('#allow-on-file-urls').checked); + } /** @private */ onCollectErrorsChange_() { this.delegate.setItemCollectsErrors( - this.data.id, this.$$('#collect-errors').checked); - }, + this.data.id, this.shadowRoot.querySelector('#collect-errors').checked); + } /** @private */ onExtensionWebSiteTap_() { this.delegate.openUrl(this.data.manifestHomePageUrl); - }, + } /** @private */ onViewInStoreTap_() { this.delegate.openUrl(this.data.webStoreUrl); - }, + } /** * @param {!chrome.developerPrivate.DependentExtension} item @@ -293,7 +307,7 @@ */ computeDependentEntry_(item) { return loadTimeData.getStringF('itemDependentEntry', item.name, item.id); - }, + } /** * @return {string} @@ -302,7 +316,7 @@ computeSourceString_() { return this.data.locationText || getItemSourceString(getItemSource(this.data)); - }, + } /** * @return {boolean} @@ -311,7 +325,7 @@ hasPermissions_() { return this.data.permissions.simplePermissions.length > 0 || this.hasRuntimeHostPermissions_(); - }, + } /** * @return {boolean} @@ -319,7 +333,7 @@ */ hasRuntimeHostPermissions_() { return !!this.data.permissions.runtimeHostPermissions; - }, + } /** * @return {boolean} @@ -328,7 +342,7 @@ showSiteAccessContent_() { return this.showFreeformRuntimeHostPermissions_() || this.showHostPermissionsToggleList_(); - }, + } /** * @return {boolean} @@ -337,7 +351,7 @@ showFreeformRuntimeHostPermissions_() { return this.hasRuntimeHostPermissions_() && this.data.permissions.runtimeHostPermissions.hasAllHosts; - }, + } /** * @return {boolean} @@ -346,7 +360,7 @@ showHostPermissionsToggleList_() { return this.hasRuntimeHostPermissions_() && !this.data.permissions.runtimeHostPermissions.hasAllHosts; - }, + } /** * Returns true if the reload button should be shown. @@ -355,7 +369,7 @@ */ showReloadButton_() { return getEnableControl(this.data) === EnableControl.RELOAD; - }, + } /** * Returns true if the repair button should be shown. @@ -364,7 +378,7 @@ */ showRepairButton_() { return getEnableControl(this.data) === EnableControl.REPAIR; - }, + } /** * Returns true if the enable toggle should be shown. @@ -377,7 +391,7 @@ // detail view, because the repair button appears just beneath it. return enableControl === EnableControl.ENABLE_TOGGLE || enableControl === EnableControl.REPAIR; - }, + } /** * @return {boolean} Whether the allowlist warning should be shown. @@ -389,5 +403,8 @@ // included in the Safe Browsing allowlist. return this.data.showSafeBrowsingAllowlistWarning && !this.data.blacklistText; - }, -}); + } +} + +customElements.define( + ExtensionsDetailViewElement.is, ExtensionsDetailViewElement);
diff --git a/chrome/browser/resources/extensions/drop_overlay.js b/chrome/browser/resources/extensions/drop_overlay.js index 7a55f33..c11ea22 100644 --- a/chrome/browser/resources/extensions/drop_overlay.js +++ b/chrome/browser/resources/extensions/drop_overlay.js
@@ -8,25 +8,33 @@ import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import {DragWrapper} from 'chrome://resources/js/cr/ui/drag_wrapper.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {DragAndDropHandler} from './drag_and_drop_handler.js'; -Polymer({ - is: 'extensions-drop-overlay', +/** @polymer */ +class ExtensionsDropOverlayElement extends PolymerElement { + static get is() { + return 'extensions-drop-overlay'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @private {boolean} */ - dragEnabled: { - type: Boolean, - observer: 'dragEnabledChanged_', - } - }, + static get properties() { + return { + /** @private {boolean} */ + dragEnabled: { + type: Boolean, + observer: 'dragEnabledChanged_', + } + }; + } - /** @override */ - created() { + constructor() { + super(); + this.hidden = true; const dragTarget = document.documentElement; this.dragWrapperHandler_ = new DragAndDropHandler(true, dragTarget); @@ -40,10 +48,11 @@ this.hidden = true; }); dragTarget.addEventListener('drag-and-drop-load-error', (e) => { - this.fire('load-error', e.detail); + this.dispatchEvent(new CustomEvent( + 'load-error', {bubbles: true, composed: true, detail: e.detail})); }); this.dragWrapper_ = new DragWrapper(dragTarget, this.dragWrapperHandler_); - }, + } /** * @param {boolean} dragEnabled @@ -51,5 +60,8 @@ */ dragEnabledChanged_(dragEnabled) { this.dragWrapperHandler_.dragEnabled = dragEnabled; - }, -}); + } +} + +customElements.define( + ExtensionsDropOverlayElement.is, ExtensionsDropOverlayElement);
diff --git a/chrome/browser/resources/extensions/error_page.js b/chrome/browser/resources/extensions/error_page.js index e922344..29cb601 100644 --- a/chrome/browser/resources/extensions/error_page.js +++ b/chrome/browser/resources/extensions/error_page.js
@@ -19,7 +19,7 @@ import {FocusOutlineManager} from 'chrome://resources/js/cr/ui/focus_outline_manager.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {afterNextRender, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {afterNextRender, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {navigation, Page} from './navigation_helper.js'; @@ -82,68 +82,78 @@ return warn; } -Polymer({ - is: 'extensions-error-page', +/** + * @constructor + * @extends {PolymerElement} + */ +const ExtensionsErrorPageElementBase = + mixinBehaviors([CrContainerShadowBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsErrorPageElement extends ExtensionsErrorPageElementBase { + static get is() { + return 'extensions-error-page'; + } - behaviors: [CrContainerShadowBehavior], + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {!chrome.developerPrivate.ExtensionInfo|undefined} */ - data: Object, + static get properties() { + return { + /** @type {!chrome.developerPrivate.ExtensionInfo|undefined} */ + data: Object, - /** @type {!ErrorPageDelegate|undefined} */ - delegate: Object, + /** @type {!ErrorPageDelegate|undefined} */ + delegate: Object, - // Whether or not dev mode is enabled. - inDevMode: { - type: Boolean, - value: false, - observer: 'onInDevModeChanged_', - }, - - /** @private {!Array<!(ManifestError|RuntimeError)>} */ - entries_: Array, - - /** @private {?chrome.developerPrivate.RequestFileSourceResponse} */ - code_: Object, - - /** - * Index into |entries_|. - * @private - */ - selectedEntry_: { - type: Number, - observer: 'onSelectedErrorChanged_', - }, - - /** @private {?chrome.developerPrivate.StackFrame}*/ - selectedStackFrame_: { - type: Object, - value() { - return null; + // Whether or not dev mode is enabled. + inDevMode: { + type: Boolean, + value: false, + observer: 'onInDevModeChanged_', }, - }, - }, - observers: [ - 'observeDataChanges_(data.*)', - ], + /** @private {!Array<!(ManifestError|RuntimeError)>} */ + entries_: Array, - listeners: { - 'view-enter-start': 'onViewEnterStart_', - }, + /** @private {?chrome.developerPrivate.RequestFileSourceResponse} */ + code_: Object, + + /** + * Index into |entries_|. + * @private + */ + selectedEntry_: { + type: Number, + observer: 'onSelectedErrorChanged_', + }, + + /** @private {?chrome.developerPrivate.StackFrame}*/ + selectedStackFrame_: { + type: Object, + value() { + return null; + }, + }, + }; + } + + static get observers() { + return ['observeDataChanges_(data.*)']; + } /** @override */ ready() { + super.ready(); + this.addEventListener('view-enter-start', this.onViewEnterStart_); FocusOutlineManager.forDocument(document); - }, + } /** @return {!ManifestError|!RuntimeError} */ getSelectedError() { return this.entries_[this.selectedEntry_]; - }, + } /** * Focuses the back button when page is loaded. @@ -152,7 +162,7 @@ onViewEnterStart_() { afterNextRender(this, () => focusWithoutInk(this.$.closeButton)); chrome.metricsPrivate.recordUserAction('Options_ViewExtensionErrors'); - }, + } /** * @param {!ManifestError|!RuntimeError} error @@ -162,7 +172,7 @@ */ getContextUrl_(error, unknown) { return error.contextUrl ? getRelativeUrl(error.contextUrl, error) : unknown; - }, + } /** * Watches for changes to |data| in order to fetch the corresponding @@ -176,18 +186,18 @@ if (this.entries_.length) { this.selectedEntry_ = 0; } - }, + } /** @private */ onCloseButtonTap_() { navigation.navigateTo({page: Page.LIST}); - }, + } /** @private */ onClearAllTap_() { const ids = this.entries_.map(entry => entry.id); this.delegate.deleteErrors(this.data.id, ids); - }, + } /** * @param {!ManifestError|!RuntimeError} error @@ -197,7 +207,7 @@ computeErrorIcon_(error) { // Do not i18n these strings, they're CSS classes. return getErrorSeverityText_(error, 'info', 'warning', 'error'); - }, + } /** * @param {!ManifestError|!RuntimeError} error @@ -209,7 +219,7 @@ error, loadTimeData.getString('logLevel'), loadTimeData.getString('warnLevel'), loadTimeData.getString('errorLevel')); - }, + } /** * @param {!Event} e @@ -219,17 +229,17 @@ this.delegate.deleteErrors( this.data.id, [(/** @type {!{model:Object}} */ (e)).model.item.id]); e.stopPropagation(); - }, + } /** private */ onInDevModeChanged_() { if (!this.inDevMode) { // Wait until next render cycle in case error page is loading. - this.async(() => { + setTimeout(() => { this.onCloseButtonTap_(); - }); + }, 0); } - }, + } /** * Fetches the source for the selected error and populates the code section. @@ -265,7 +275,7 @@ break; } this.delegate.requestFileSource(args).then(code => this.code_ = code); - }, + } /** * @return {boolean} @@ -273,7 +283,7 @@ */ computeIsRuntimeError_(item) { return item.type === chrome.developerPrivate.ErrorType.RUNTIME; - }, + } /** * The description is a human-readable summation of the frame, in the @@ -295,7 +305,7 @@ } return description; - }, + } /** * @param {chrome.developerPrivate.StackFrame} frame @@ -304,7 +314,7 @@ */ getStackFrameClass_(frame) { return frame === this.selectedStackFrame_ ? 'selected' : ''; - }, + } /** * @param {!chrome.developerPrivate.StackFrame} frame @@ -313,7 +323,7 @@ */ getStackFrameTabIndex_(frame) { return frame === this.selectedStackFrame_ ? 0 : -1; - }, + } /** * This function is used to determine whether or not we want to show a @@ -325,7 +335,7 @@ shouldDisplayFrame_(url) { // All our internal scripts are in the 'extensions::' namespace. return !/^extensions::/.test(url); - }, + } /** * @param {!chrome.developerPrivate.StackFrame} frame @@ -343,7 +353,7 @@ lineNumber: frame.lineNumber, }) .then(code => this.code_ = code); - }, + } /** * @param {!Event} e @@ -352,7 +362,7 @@ onStackFrameTap_(e) { const frame = /** @type {!{model:Object}} */ (e).model.item; this.updateSelected_(frame); - }, + } /** * @param {!Event} e @@ -384,7 +394,7 @@ return; } } - }, + } /** * Computes the class name for the error item depending on whether its @@ -395,13 +405,13 @@ */ computeErrorClass_(index) { return index === this.selectedEntry_ ? 'selected' : ''; - }, + } /** @private */ iconName_(index) { return index === this.selectedEntry_ ? 'icon-expand-less' : 'icon-expand-more'; - }, + } /** * Determine if the iron-collapse should be opened (expanded). @@ -411,7 +421,7 @@ */ isOpened_(index) { return index === this.selectedEntry_; - }, + } /** @@ -421,7 +431,7 @@ */ isAriaExpanded_(index) { return this.isOpened_(index).toString(); - }, + } /** * @param {!{type: string, code: string, model: !{index: number}}} e @@ -437,5 +447,8 @@ e.preventDefault(); this.selectedEntry_ = this.selectedEntry_ === e.model.index ? -1 : e.model.index; - }, -}); + } +} + +customElements.define( + ExtensionsErrorPageElement.is, ExtensionsErrorPageElement);
diff --git a/chrome/browser/resources/extensions/host_permissions_toggle_list.js b/chrome/browser/resources/extensions/host_permissions_toggle_list.js index dbd43fe0..a88c5c3 100644 --- a/chrome/browser/resources/extensions/host_permissions_toggle_list.js +++ b/chrome/browser/resources/extensions/host_permissions_toggle_list.js
@@ -10,29 +10,36 @@ import './shared_style.js'; import './strings.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; import {UserAction} from './item_util.js'; -Polymer({ - is: 'extensions-host-permissions-toggle-list', +/** @polymer */ +class ExtensionsHostPermissionsToggleListElement extends PolymerElement { + static get is() { + return 'extensions-host-permissions-toggle-list'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** - * The underlying permissions data. - * @type {chrome.developerPrivate.RuntimeHostPermissions} - */ - permissions: Object, + static get properties() { + return { + /** + * The underlying permissions data. + * @type {chrome.developerPrivate.RuntimeHostPermissions} + */ + permissions: Object, - /** @private */ - itemId: String, + /** @private */ + itemId: String, - /** @type {!ItemDelegate} */ - delegate: Object, - }, + /** @type {!ItemDelegate} */ + delegate: Object, + }; + } /** * @return {boolean} Whether the item is allowed to execute on all of its @@ -42,7 +49,7 @@ allowedOnAllHosts_() { return this.permissions.hostAccess === chrome.developerPrivate.HostAccess.ON_ALL_SITES; - }, + } /** * Returns a lexicographically-sorted list of the hosts associated with this @@ -60,7 +67,7 @@ } return 0; }); - }, + } /** * @param {!CustomEvent<boolean>} e @@ -85,7 +92,7 @@ this.itemId, chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES); this.delegate.recordUserAction(UserAction.ALL_TOGGLED_OFF); } - }, + } /** * @param {!CustomEvent<boolean>} e @@ -102,10 +109,14 @@ this.delegate.removeRuntimeHostPermission(this.itemId, host); this.delegate.recordUserAction(UserAction.SPECIFIC_TOGGLED_OFF); } - }, + } /** @private */ onLearnMoreClick_() { this.delegate.recordUserAction(UserAction.LEARN_MORE); } -}); +} + +customElements.define( + ExtensionsHostPermissionsToggleListElement.is, + ExtensionsHostPermissionsToggleListElement);
diff --git a/chrome/browser/resources/extensions/install_warnings_dialog.js b/chrome/browser/resources/extensions/install_warnings_dialog.js index e599dcf..4d6ccdcb 100644 --- a/chrome/browser/resources/extensions/install_warnings_dialog.js +++ b/chrome/browser/resources/extensions/install_warnings_dialog.js
@@ -8,25 +8,37 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; import './code_section.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -Polymer({ - is: 'extensions-install-warnings-dialog', +/** @polymer */ +class ExtensionsInstallWarningsDialogElement extends PolymerElement { + static get is() { + return 'extensions-install-warnings-dialog'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {!Array<string>} */ - installWarnings: Array, - }, + static get properties() { + return { + /** @type {!Array<string>} */ + installWarnings: Array, + }; + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); this.$.dialog.showModal(); - }, + } /** @private */ onOkTap_() { this.$.dialog.close(); - }, -}); + } +} + +customElements.define( + ExtensionsInstallWarningsDialogElement.is, + ExtensionsInstallWarningsDialogElement);
diff --git a/chrome/browser/resources/extensions/item.js b/chrome/browser/resources/extensions/item.js index e65bb5f9..03eb82b 100644 --- a/chrome/browser/resources/extensions/item.js +++ b/chrome/browser/resources/extensions/item.js
@@ -22,8 +22,8 @@ import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.m.js'; import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; -import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; -import {flush, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js'; +import {flush, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemBehavior} from './item_behavior.js'; import {computeInspectableViewLabel, EnableControl, getEnableControl, getItemSource, getItemSourceString, isEnabled, SourceType, userCanChangeEnablement} from './item_util.js'; @@ -116,66 +116,94 @@ recordUserAction(metricName) {} } -Polymer({ - is: 'extensions-item', +/** + * @constructor + * @extends {PolymerElement} + * @implements {I18nBehaviorInterface} + */ +const ExtensionsItemElementBase = + mixinBehaviors([I18nBehavior, ItemBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsItemElement extends ExtensionsItemElementBase { + static get is() { + return 'extensions-item'; + } - behaviors: [I18nBehavior, ItemBehavior], + static get template() { + return html`{__html_template__}`; + } - properties: { - // The item's delegate, or null. - delegate: { - type: Object, - }, + static get properties() { + return { + // The item's delegate, or null. + delegate: { + type: Object, + }, - // Whether or not dev mode is enabled. - inDevMode: { - type: Boolean, - value: false, - }, + // Whether or not dev mode is enabled. + inDevMode: { + type: Boolean, + value: false, + }, - // The underlying ExtensionInfo itself. Public for use in declarative - // bindings. - /** @type {chrome.developerPrivate.ExtensionInfo} */ - data: { - type: Object, - }, + // The underlying ExtensionInfo itself. Public for use in declarative + // bindings. + /** @type {chrome.developerPrivate.ExtensionInfo} */ + data: { + type: Object, + }, - // Whether or not the expanded view of the item is shown. - /** @private */ - showingDetails_: { - type: Boolean, - value: false, - }, - }, + // Whether or not the expanded view of the item is shown. + /** @private */ + showingDetails_: { + type: Boolean, + value: false, + }, + }; + } - /** Prevents reloading the same item while it's already being reloaded. */ - isReloading_: false, + static get observers() { + return ['observeIdVisibility_(inDevMode, showingDetails_, data.id)']; + } - observers: [ - 'observeIdVisibility_(inDevMode, showingDetails_, data.id)', - ], + constructor() { + super(); + + /** Prevents reloading the same item while it's already being reloaded. */ + this.isReloading_ = false; + } + + /** + * @param {string} eventName + * @param {*=} detail + * @private + */ + fire_(eventName, detail) { + this.dispatchEvent( + new CustomEvent(eventName, {bubbles: true, composed: true, detail})); + } /** @return {!HTMLElement} The "Details" button. */ getDetailsButton() { return /** @type {!HTMLElement} */ (this.$.detailsButton); - }, + } /** @return {?HTMLElement} The "Errors" button, if it exists. */ getErrorsButton() { - return /** @type {?HTMLElement} */ (this.$$('#errors-button')); - }, + return /** @type {?HTMLElement} */ ( + this.shadowRoot.querySelector('#errors-button')); + } /** @private */ observeIdVisibility_(inDevMode, showingDetails, id) { flush(); - const idElement = this.$$('#extension-id'); + const idElement = this.shadowRoot.querySelector('#extension-id'); if (idElement) { assert(this.data); idElement.innerHTML = this.i18n('itemId', this.data.id); } - }, + } /** * @return {boolean} @@ -193,33 +221,33 @@ // Instead |manifestErrors| and |runtimeErrors| are used. return this.data.manifestErrors.length > 0 || this.data.runtimeErrors.length > 0; - }, + } /** @private */ onRemoveTap_() { this.delegate.deleteItem(this.data.id); - }, + } /** @private */ onEnableToggleChange_() { this.delegate.setItemEnabled(this.data.id, this.$.enableToggle.checked); this.$.enableToggle.checked = this.isEnabled_(); - }, + } /** @private */ onErrorsTap_() { if (this.data.installWarnings && this.data.installWarnings.length > 0) { - this.fire('show-install-warnings', this.data.installWarnings); + this.fire_('show-install-warnings', this.data.installWarnings); return; } navigation.navigateTo({page: Page.ERRORS, extensionId: this.data.id}); - }, + } /** @private */ onDetailsTap_() { navigation.navigateTo({page: Page.DETAILS, extensionId: this.data.id}); - }, + } /** * @param {!{model: !{item: !chrome.developerPrivate.ExtensionView}}} e @@ -227,12 +255,12 @@ */ onInspectTap_(e) { this.delegate.inspectItemView(this.data.id, this.data.views[0]); - }, + } /** @private */ onExtraInspectTap_() { navigation.navigateTo({page: Page.DETAILS, extensionId: this.data.id}); - }, + } /** @private */ onReloadTap_() { @@ -256,16 +284,16 @@ this.isReloading_ = false; }, loadError => { - this.fire('load-error', loadError); + this.fire_('load-error', loadError); toastManager.hide(); this.isReloading_ = false; }); - }, + } /** @private */ onRepairTap_() { this.delegate.repairItem(this.data.id); - }, + } /** * @return {boolean} @@ -273,7 +301,7 @@ */ isEnabled_() { return isEnabled(this.data.state); - }, + } /** * @return {boolean} @@ -281,7 +309,7 @@ */ isEnableToggleEnabled_() { return userCanChangeEnablement(this.data); - }, + } /** * Returns true if the reload button should be shown. @@ -290,7 +318,7 @@ */ showReloadButton_() { return getEnableControl(this.data) === EnableControl.RELOAD; - }, + } /** * Returns true if the repair button should be shown. @@ -299,7 +327,7 @@ */ showRepairButton_() { return getEnableControl(this.data) === EnableControl.REPAIR; - }, + } /** @@ -309,7 +337,7 @@ */ showEnableToggle_() { return getEnableControl(this.data) === EnableControl.ENABLE_TOGGLE; - }, + } /** * return {string} @@ -321,7 +349,7 @@ classes += ' dev-mode'; } return classes; - }, + } /** * @return {string} @@ -342,7 +370,7 @@ return ''; } assertNotReached(); - }, + } /** * @return {string} @@ -356,7 +384,7 @@ const sourceType = getItemSource(this.data); return sourceType === SourceType.WEBSTORE ? '' : getItemSourceString(sourceType); - }, + } /** * @return {boolean} @@ -364,7 +392,7 @@ */ computeInspectViewsHidden_() { return !this.data.views || this.data.views.length === 0; - }, + } /** * @return {string} @@ -379,7 +407,7 @@ return this.data.views.length > 0 ? computeInspectableViewLabel(this.data.views[0]) : ''; - }, + } /** * @return {string} @@ -388,7 +416,7 @@ computeFirstInspectLabel_() { const label = this.computeFirstInspectTitle_(); return label && this.data.views.length > 1 ? label + ',' : label; - }, + } /** * @return {boolean} @@ -396,7 +424,7 @@ */ computeExtraViewsHidden_() { return this.data.views.length <= 1; - }, + } /** * @return {boolean} @@ -417,7 +445,7 @@ (this.data.state === chrome.developerPrivate.ExtensionState.ENABLED || this.data.disableReasons.reloading); return !showIcon; - }, + } /** * @return {string} @@ -426,7 +454,7 @@ computeExtraInspectLabel_() { return this.i18n( 'itemInspectViewsExtra', (this.data.views.length - 1).toString()); - }, + } /** * @return {boolean} @@ -436,7 +464,7 @@ return this.data.disableReasons.corruptInstall || this.data.disableReasons.suspiciousInstall || this.data.runtimeWarnings.length > 0 || !!this.data.blacklistText; - }, + } /** * @return {boolean} @@ -445,7 +473,7 @@ showDescription_() { return !this.hasSevereWarnings_() && !this.data.showSafeBrowsingAllowlistWarning; - }, + } /** * @return {boolean} @@ -458,5 +486,7 @@ // warning will still be shown in the item detail view. return this.data.showSafeBrowsingAllowlistWarning && !this.hasSevereWarnings_(); - }, -}); + } +} + +customElements.define(ExtensionsItemElement.is, ExtensionsItemElement);
diff --git a/chrome/browser/resources/extensions/item_list.js b/chrome/browser/resources/extensions/item_list.js index 3573343..7e990d4 100644 --- a/chrome/browser/resources/extensions/item_list.js +++ b/chrome/browser/resources/extensions/item_list.js
@@ -7,88 +7,101 @@ import './checkup.js'; import {CrContainerShadowBehavior} from 'chrome://resources/cr_elements/cr_container_shadow_behavior.m.js'; -import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; +import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; -Polymer({ - is: 'extensions-item-list', +/** + * @constructor + * @extends {PolymerElement} + * @implements {I18nBehaviorInterface} + */ +const ExtensionsItemListElementBase = + mixinBehaviors([CrContainerShadowBehavior, I18nBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsItemListElement extends ExtensionsItemListElementBase { + static get is() { + return 'extensions-item-list'; + } - behaviors: [CrContainerShadowBehavior, I18nBehavior], + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ - apps: Array, + static get properties() { + return { + /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ + apps: Array, - /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ - extensions: Array, + /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ + extensions: Array, - /** @type {ItemDelegate} */ - delegate: Object, + /** @type {ItemDelegate} */ + delegate: Object, - inDevMode: { - type: Boolean, - value: false, - }, + inDevMode: { + type: Boolean, + value: false, + }, - filter: { - type: String, - }, + filter: { + type: String, + }, - /** @private */ - computedFilter_: { - type: String, - computed: 'computeFilter_(filter)', - observer: 'announceSearchResults_', - }, + /** @private */ + computedFilter_: { + type: String, + computed: 'computeFilter_(filter)', + observer: 'announceSearchResults_', + }, - /** @private */ - maxColumns_: { - type: Number, - value: () => loadTimeData.getBoolean('showCheckup') ? 2 : 3, - }, + /** @private */ + maxColumns_: { + type: Number, + value: () => loadTimeData.getBoolean('showCheckup') ? 2 : 3, + }, - /** @private */ - showCheckup_: { - type: Boolean, - value: () => loadTimeData.getBoolean('showCheckup'), - }, + /** @private */ + showCheckup_: { + type: Boolean, + value: () => loadTimeData.getBoolean('showCheckup'), + }, - /** @private */ - shownAppsCount_: { - type: Number, - value: 0, - }, + /** @private */ + shownAppsCount_: { + type: Number, + value: 0, + }, - /** @private */ - shownExtensionsCount_: { - type: Number, - value: 0, - }, - }, + /** @private */ + shownExtensionsCount_: { + type: Number, + value: 0, + }, + }; + } /** * @param {string} id * @return {?Element} */ getDetailsButton(id) { - const item = this.$$(`#${id}`); + const item = this.shadowRoot.querySelector(`#${id}`); return item && item.getDetailsButton(); - }, + } /** * @param {string} id * @return {?Element} */ getErrorsButton(id) { - const item = this.$$(`#${id}`); + const item = this.shadowRoot.querySelector(`#${id}`); return item && item.getErrorsButton(); - }, + } /** * Computes the filter function to be used for determining which items @@ -105,7 +118,7 @@ return i => [i.name, i.id].some( s => s.toLowerCase().includes(formattedFilter)); - }, + } /** @private */ shouldShowEmptyItemsMessage_() { @@ -114,36 +127,42 @@ } return this.apps.length === 0 && this.extensions.length === 0; - }, + } /** @private */ shouldShowEmptySearchMessage_() { return !this.shouldShowEmptyItemsMessage_() && this.shownAppsCount_ === 0 && this.shownExtensionsCount_ === 0; - }, + } /** @private */ onNoExtensionsTap_(e) { if (e.target.tagName === 'A') { chrome.metricsPrivate.recordUserAction('Options_GetMoreExtensions'); } - }, + } /** @private */ announceSearchResults_() { if (this.computedFilter_) { IronA11yAnnouncer.requestAvailability(); - this.async(() => { // Async to allow list to update. + setTimeout(() => { // Async to allow list to update. const total = this.shownAppsCount_ + this.shownExtensionsCount_; - this.fire('iron-announce', { - text: this.shouldShowEmptySearchMessage_() ? - this.i18n('noSearchResults') : - (total === 1 ? - this.i18n('searchResultsSingular', this.filter) : - this.i18n( - 'searchResultsPlural', total.toString(), this.filter)), - }); - }); + this.dispatchEvent(new CustomEvent('iron-announce', { + bubbles: true, + composed: true, + detail: { + text: this.shouldShowEmptySearchMessage_() ? + this.i18n('noSearchResults') : + (total === 1 ? + this.i18n('searchResultsSingular', this.filter) : + this.i18n( + 'searchResultsPlural', total.toString(), this.filter)), + } + })); + }, 0); } - }, -}); + } +} + +customElements.define(ExtensionsItemListElement.is, ExtensionsItemListElement);
diff --git a/chrome/browser/resources/extensions/keyboard_shortcuts.js b/chrome/browser/resources/extensions/keyboard_shortcuts.js index aa2165db..d3a2bd93 100644 --- a/chrome/browser/resources/extensions/keyboard_shortcuts.js +++ b/chrome/browser/resources/extensions/keyboard_shortcuts.js
@@ -9,43 +9,58 @@ import './shortcut_input.js'; import {CrContainerShadowBehavior} from 'chrome://resources/cr_elements/cr_container_shadow_behavior.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {KeyboardShortcutDelegate} from './keyboard_shortcut_delegate.js'; +/** + * @constructor + * @extends {PolymerElement} + */ +const ExtensionsKeyboardShortcutsElementBase = + mixinBehaviors([CrContainerShadowBehavior], PolymerElement); + // The UI to display and manage keyboard shortcuts set for extension commands. -Polymer({ - is: 'extensions-keyboard-shortcuts', +/** @polymer */ +class ExtensionsKeyboardShortcutsElement extends + ExtensionsKeyboardShortcutsElementBase { + static get is() { + return 'extensions-keyboard-shortcuts'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - behaviors: [CrContainerShadowBehavior], + static get properties() { + return { + /** @type {!KeyboardShortcutDelegate} */ + delegate: Object, - properties: { - /** @type {!KeyboardShortcutDelegate} */ - delegate: Object, + /** @type {Array<!chrome.developerPrivate.ExtensionInfo>} */ + items: Array, - /** @type {Array<!chrome.developerPrivate.ExtensionInfo>} */ - items: Array, + /** + * Proxying the enum to be used easily by the html template. + * @private + */ + CommandScope_: { + type: Object, + value: chrome.developerPrivate.CommandScope, + }, + }; + } - /** - * Proxying the enum to be used easily by the html template. - * @private - */ - CommandScope_: { - type: Object, - value: chrome.developerPrivate.CommandScope, - }, - }, - - listeners: { - 'view-enter-start': 'onViewEnter_', - }, + /** @override */ + ready() { + super.ready(); + this.addEventListener('view-enter-start', this.onViewEnter_); + } /** @private */ onViewEnter_() { chrome.metricsPrivate.recordUserAction('Options_ExtensionCommands'); - }, + } /** * @return {!Array<!chrome.developerPrivate.ExtensionInfo>} @@ -55,7 +70,7 @@ return this.items.filter(function(item) { return item.commands.length > 0; }); - }, + } /** * A polymer bug doesn't allow for databinding of a string property as a @@ -67,7 +82,7 @@ */ hasKeybinding_(keybinding) { return !!keybinding; - }, + } /** * Determines whether to disable the dropdown menu for the command's scope. @@ -77,7 +92,7 @@ */ computeScopeDisabled_(command) { return command.isExtensionAction || !command.isActive; - }, + } /** * This function exists to force trigger an update when CommandScope_ @@ -87,12 +102,13 @@ */ triggerScopeChange_(scope) { return scope; - }, + } /** @private */ onCloseButtonClick_() { - this.fire('close'); - }, + this.dispatchEvent( + new CustomEvent('close', {bubbles: true, composed: true})); + } /** * @param {!{target: HTMLSelectElement, model: Object}} event @@ -103,5 +119,8 @@ event.model.get('item.id'), event.model.get('command.name'), /** @type {chrome.developerPrivate.CommandScope} */ (event.target.value)); - }, -}); + } +} + +customElements.define( + ExtensionsKeyboardShortcutsElement.is, ExtensionsKeyboardShortcutsElement);
diff --git a/chrome/browser/resources/extensions/kiosk_browser_proxy.js b/chrome/browser/resources/extensions/kiosk_browser_proxy.js index 2a00b9e..79f1dcb 100644 --- a/chrome/browser/resources/extensions/kiosk_browser_proxy.js +++ b/chrome/browser/resources/extensions/kiosk_browser_proxy.js
@@ -7,7 +7,7 @@ * the browser. */ -import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js'; +import {sendWithPromise} from 'chrome://resources/js/cr.m.js'; /** * @typedef {{ @@ -97,6 +97,17 @@ setDisableBailoutShortcut(disableBailout) { chrome.send('setDisableBailoutShortcut', [disableBailout]); } + + /** @return {!KioskBrowserProxy} */ + static getInstance() { + return instance || (instance = new KioskBrowserProxyImpl()); + } + + /** @param {!KioskBrowserProxy} obj */ + static setInstance(obj) { + instance = obj; + } } -addSingletonGetter(KioskBrowserProxyImpl); +/** @type {?KioskBrowserProxy} */ +let instance = null;
diff --git a/chrome/browser/resources/extensions/kiosk_dialog.js b/chrome/browser/resources/extensions/kiosk_dialog.js index f675c420..c16366a 100644 --- a/chrome/browser/resources/extensions/kiosk_dialog.js +++ b/chrome/browser/resources/extensions/kiosk_dialog.js
@@ -11,52 +11,67 @@ import 'chrome://resources/cr_elements/shared_style_css.m.js'; import {assert} from 'chrome://resources/js/assert.m.js'; -import {WebUIListenerBehavior} from 'chrome://resources/js/web_ui_listener_behavior.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {WebUIListenerBehavior, WebUIListenerBehaviorInterface} from 'chrome://resources/js/web_ui_listener_behavior.m.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {KioskApp, KioskAppSettings, KioskBrowserProxy, KioskBrowserProxyImpl} from './kiosk_browser_proxy.js'; -Polymer({ - is: 'extensions-kiosk-dialog', +/** + * @constructor + * @extends {PolymerElement} + * @implements {WebUIListenerBehaviorInterface} + */ +const ExtensionsKioskDialogElementBase = + mixinBehaviors([WebUIListenerBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsKioskDialogElement extends ExtensionsKioskDialogElementBase { + static get is() { + return 'extensions-kiosk-dialog'; + } - behaviors: [WebUIListenerBehavior], + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @private {?string} */ - addAppInput_: { - type: String, - value: null, - }, + static get properties() { + return { + /** @private {?string} */ + addAppInput_: { + type: String, + value: null, + }, - /** @private {!Array<!KioskApp>} */ - apps_: Array, + /** @private {!Array<!KioskApp>} */ + apps_: Array, - /** @private */ - bailoutDisabled_: Boolean, + /** @private */ + bailoutDisabled_: Boolean, - /** @private */ - canEditAutoLaunch_: Boolean, + /** @private */ + canEditAutoLaunch_: Boolean, - /** @private */ - canEditBailout_: Boolean, + /** @private */ + canEditBailout_: Boolean, - /** @private {?string} */ - errorAppId_: String, - }, - - /** @private {?KioskBrowserProxy} */ - kioskBrowserProxy_: null, + /** @private {?string} */ + errorAppId_: String, + }; + } /** @override */ - ready() { + constructor() { + super(); + + /** @private {!KioskBrowserProxy} */ this.kioskBrowserProxy_ = KioskBrowserProxyImpl.getInstance(); - }, + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); + this.kioskBrowserProxy_.initializeKioskAppSettings() .then(params => { this.canEditAutoLaunch_ = params.autoLaunchEnabled; @@ -70,7 +85,7 @@ this.addWebUIListener('kiosk-app-error', this.showError_.bind(this)); this.$.dialog.showModal(); - }, + } /** * @param {!KioskAppSettings} settings @@ -80,7 +95,7 @@ this.apps_ = settings.apps; this.bailoutDisabled_ = settings.disableBailout; this.canEditBailout_ = settings.hasAutoLaunchApp; - }, + } /** * @param {!KioskApp} app @@ -90,7 +105,7 @@ const index = this.apps_.findIndex(a => a.id === app.id); assert(index < this.apps_.length); this.set('apps_.' + index, app); - }, + } /** * @param {string} appId @@ -98,7 +113,7 @@ */ showError_(appId) { this.errorAppId_ = appId; - }, + } /** * @param {string} errorMessage @@ -107,19 +122,19 @@ */ getErrorMessage_(errorMessage) { return this.errorAppId_ + ' ' + errorMessage; - }, + } /** @private */ onAddAppTap_() { assert(this.addAppInput_); this.kioskBrowserProxy_.addKioskApp(this.addAppInput_); this.addAppInput_ = null; - }, + } /** @private */ clearInputInvalid_() { this.errorAppId_ = null; - }, + } /** * @param {{model: {item: !KioskApp}}} event @@ -133,7 +148,7 @@ } else { this.kioskBrowserProxy_.enableKioskAutoLaunch(app.id); } - }, + } /** * @param {!Event} event @@ -147,24 +162,24 @@ this.kioskBrowserProxy_.setDisableBailoutShortcut(false); this.$['confirm-dialog'].close(); } - }, + } /** @private */ onBailoutDialogCancelTap_() { this.$.bailout.checked = false; this.$['confirm-dialog'].cancel(); - }, + } /** @private */ onBailoutDialogConfirmTap_() { this.kioskBrowserProxy_.setDisableBailoutShortcut(true); this.$['confirm-dialog'].close(); - }, + } /** @private */ onDoneTap_() { this.$.dialog.close(); - }, + } /** * @param {{model: {item: !KioskApp}}} event @@ -172,7 +187,7 @@ */ onDeleteAppTap_(event) { this.kioskBrowserProxy_.removeKioskApp(event.model.item.id); - }, + } /** * @param {boolean} autoLaunched @@ -183,7 +198,7 @@ */ getAutoLaunchButtonLabel_(autoLaunched, disableStr, enableStr) { return autoLaunched ? disableStr : enableStr; - }, + } /** * @param {!Event} e @@ -191,5 +206,8 @@ */ stopPropagation_(e) { e.stopPropagation(); - }, -}); + } +} + +customElements.define( + ExtensionsKioskDialogElement.is, ExtensionsKioskDialogElement);
diff --git a/chrome/browser/resources/extensions/load_error.js b/chrome/browser/resources/extensions/load_error.js index ece39918..47f59872 100644 --- a/chrome/browser/resources/extensions/load_error.js +++ b/chrome/browser/resources/extensions/load_error.js
@@ -10,7 +10,7 @@ import './strings.m.js'; import {assert} from 'chrome://resources/js/assert.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @interface */ export class LoadErrorDelegate { @@ -22,33 +22,42 @@ retryLoadUnpacked(retryId) {} } -Polymer({ - is: 'extensions-load-error', +/** @polymer */ +class ExtensionsLoadErrorElement extends PolymerElement { + static get is() { + return 'extensions-load-error'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {LoadErrorDelegate} */ - delegate: Object, + static get properties() { + return { + /** @type {LoadErrorDelegate} */ + delegate: Object, - /** @type {chrome.developerPrivate.LoadError} */ - loadError: Object, + /** @type {chrome.developerPrivate.LoadError} */ + loadError: Object, - /** @private */ - retrying_: Boolean, - }, + /** @private */ + retrying_: Boolean, + }; + } - observers: [ - 'observeLoadErrorChanges_(loadError)', - ], + static get observers() { + return [ + 'observeLoadErrorChanges_(loadError)', + ]; + } show() { /** @type {!CrDialogElement} */ (this.$.dialog).showModal(); - }, + } close() { /** @type {!CrDialogElement} */ (this.$.dialog).close(); - }, + } /** @private */ onRetryTap_() { @@ -63,7 +72,7 @@ /** @type {chrome.developerPrivate.LoadError} */ (loadError); this.retrying_ = false; }); - }, + } /** @private */ observeLoadErrorChanges_() { @@ -82,5 +91,8 @@ }; this.$.code.code = codeSectionProperties; - }, -}); + } +} + +customElements.define( + ExtensionsLoadErrorElement.is, ExtensionsLoadErrorElement);
diff --git a/chrome/browser/resources/extensions/manager.js b/chrome/browser/resources/extensions/manager.js index fa2a492..3ef910e4 100644 --- a/chrome/browser/resources/extensions/manager.js +++ b/chrome/browser/resources/extensions/manager.js
@@ -26,7 +26,7 @@ import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ActivityLogExtensionPlaceholder} from './activity_log/activity_log.js'; // <if expr="chromeos"> @@ -62,156 +62,171 @@ compare(a.id, b.id); }; -Polymer({ - is: 'extensions-manager', +/** @polymer */ +class ExtensionsManagerElement extends PolymerElement { + static get is() { + return 'extensions-manager'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - canLoadUnpacked: { - type: Boolean, - value: false, - }, - - /** @type {!Service} */ - delegate: { - type: Object, - value() { - return Service.getInstance(); + static get properties() { + return { + canLoadUnpacked: { + type: Boolean, + value: false, }, - }, - inDevMode: { - type: Boolean, - value: () => loadTimeData.getBoolean('inDevMode'), - }, + /** @type {!Service} */ + delegate: { + type: Object, + value() { + return Service.getInstance(); + }, + }, - showActivityLog: { - type: Boolean, - value: () => loadTimeData.getBoolean('showActivityLog'), - }, + inDevMode: { + type: Boolean, + value: () => loadTimeData.getBoolean('inDevMode'), + }, - devModeControlledByPolicy: { - type: Boolean, - value: false, - }, + showActivityLog: { + type: Boolean, + value: () => loadTimeData.getBoolean('showActivityLog'), + }, - /** @private */ - isSupervised_: { - type: Boolean, - value: false, - }, + devModeControlledByPolicy: { + type: Boolean, + value: false, + }, - incognitoAvailable_: { - type: Boolean, - value: false, - }, + /** @private */ + isSupervised_: { + type: Boolean, + value: false, + }, - filter: { - type: String, - value: '', - }, + incognitoAvailable_: { + type: Boolean, + value: false, + }, + + filter: { + type: String, + value: '', + }, + + /** + * The item currently displayed in the error subpage. We use a separate + * item for different pages (rather than a single subpageItem_ property) + * so that hidden subpages don't update when an item updates. That is, we + * don't want the details view subpage to update when the item shown in + * the errors page updates, and vice versa. + * @private {!chrome.developerPrivate.ExtensionInfo|undefined} + */ + errorPageItem_: Object, + + /** + * The item currently displayed in the details view subpage. See also + * errorPageItem_. + * @private {!chrome.developerPrivate.ExtensionInfo|undefined} + */ + detailViewItem_: Object, + + /** + * The item that provides some information about the current extension + * for the activity log view subpage. See also errorPageItem_. + * @private {!chrome.developerPrivate.ExtensionInfo|undefined| + * !ActivityLogExtensionPlaceholder} + */ + activityLogItem_: Object, + + /** @private {!Array<!chrome.developerPrivate.ExtensionInfo>} */ + extensions_: Array, + + /** @private {!Array<!chrome.developerPrivate.ExtensionInfo>} */ + apps_: Array, + + /** + * Prevents page content from showing before data is first loaded. + * @private + */ + didInitPage_: { + type: Boolean, + value: false, + }, + + /** @private */ + showDrawer_: Boolean, + + /** @private */ + showLoadErrorDialog_: Boolean, + + /** @private */ + showInstallWarningsDialog_: Boolean, + + /** @private {?Array<string>} */ + installWarnings_: Array, + + /** @private */ + showOptionsDialog_: Boolean, + + /** + * Whether the last page the user navigated from was the activity log + * page. + * @private + */ + fromActivityLog_: Boolean, + + // <if expr="chromeos"> + /** @private */ + kioskEnabled_: { + type: Boolean, + value: false, + }, + + /** @private */ + showKioskDialog_: { + type: Boolean, + value: false, + }, + // </if> + }; + } + + constructor() { + super(); /** - * The item currently displayed in the error subpage. We use a separate - * item for different pages (rather than a single subpageItem_ property) - * so that hidden subpages don't update when an item updates. That is, we - * don't want the details view subpage to update when the item shown in - * the errors page updates, and vice versa. - * @private {!chrome.developerPrivate.ExtensionInfo|undefined} + * The current page being shown. Default to null, and initPage_ will figure + * out the initial page based on url. + * @private {?PageState} */ - errorPageItem_: Object, + this.currentPage_ = null; /** - * The item currently displayed in the details view subpage. See also - * errorPageItem_. - * @private {!chrome.developerPrivate.ExtensionInfo|undefined} + * The ID of the listener on |navigation|. Stored so that the + * listener can be removed when this element is detached (happens in tests). + * @private {?number} */ - detailViewItem_: Object, - - /** - * The item that provides some information about the current extension - * for the activity log view subpage. See also errorPageItem_. - * @private {!chrome.developerPrivate.ExtensionInfo|undefined| - * !ActivityLogExtensionPlaceholder} - */ - activityLogItem_: Object, - - /** @private {!Array<!chrome.developerPrivate.ExtensionInfo>} */ - extensions_: Array, - - /** @private {!Array<!chrome.developerPrivate.ExtensionInfo>} */ - apps_: Array, - - /** - * Prevents page content from showing before data is first loaded. - * @private - */ - didInitPage_: { - type: Boolean, - value: false, - }, - - /** @private */ - showDrawer_: Boolean, - - /** @private */ - showLoadErrorDialog_: Boolean, - - /** @private */ - showInstallWarningsDialog_: Boolean, - - /** @private {?Array<string>} */ - installWarnings_: Array, - - /** @private */ - showOptionsDialog_: Boolean, - - /** - * Whether the last page the user navigated from was the activity log - * page. - * @private - */ - fromActivityLog_: Boolean, - - // <if expr="chromeos"> - /** @private */ - kioskEnabled_: { - type: Boolean, - value: false, - }, - - /** @private */ - showKioskDialog_: { - type: Boolean, - value: false, - }, - // </if> - }, - - listeners: { - 'load-error': 'onLoadError_', - 'view-enter-start': 'onViewEnterStart_', - 'view-exit-start': 'onViewExitStart_', - 'view-exit-finish': 'onViewExitFinish_', - }, - - /** - * The current page being shown. Default to null, and initPage_ will figure - * out the initial page based on url. - * @private {?PageState} - */ - currentPage_: null, - - /** - * The ID of the listener on |navigation|. Stored so that the - * listener can be removed when this element is detached (happens in tests). - * @private {?number} - */ - navigationListener_: null, + this.navigationListener_ = null; + } /** @override */ ready() { + super.ready(); + + this.addEventListener( + 'load-error', + e => this.onLoadError_( + /** @type {!CustomEvent<!chrome.developerPrivate.LoadError>} */ ( + e))); + this.addEventListener('view-enter-start', this.onViewEnterStart_); + this.addEventListener('view-exit-start', this.onViewExitStart_); + this.addEventListener('view-exit-finish', this.onViewExitFinish_); + const service = Service.getInstance(); const onProfileStateChanged = profileInfo => { @@ -239,24 +254,27 @@ this.kioskEnabled_ = params.kioskEnabled; }); // </if> - }, + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); + document.documentElement.classList.remove('loading'); document.fonts.load('bold 12px Roboto'); this.navigationListener_ = navigation.addListener(newPage => { this.changePage_(newPage); }); - }, + } /** @override */ - detached() { + disconnectedCallback() { + super.disconnectedCallback(); assert(navigation.removeListener( /** @type {number} */ (this.navigationListener_))); this.navigationListener_ = null; - }, + } /** * Initializes the page to reflect what's specified in the url so that if @@ -266,7 +284,7 @@ initPage_() { this.didInitPage_ = true; this.changePage_(navigation.getCurrentPage()); - }, + } /** * @param {!chrome.developerPrivate.EventData} eventData @@ -302,7 +320,7 @@ } const listId = this.getListId_(eventData.extensionInfo); - const currentIndex = this[listId].findIndex( + const currentIndex = this.get(listId).findIndex( item => item.id === eventData.extensionInfo.id); if (currentIndex >= 0) { @@ -317,7 +335,7 @@ default: assertNotReached(); } - }, + } /** * @param {!CustomEvent<string>} event @@ -328,15 +346,15 @@ navigation.navigateTo({page: Page.LIST}); } this.filter = event.detail; - }, + } /** @private */ onMenuButtonTap_() { this.showDrawer_ = true; - this.async(() => { - this.$$('#drawer').openDrawer(); - }); - }, + setTimeout(() => { + this.shadowRoot.querySelector('#drawer').openDrawer(); + }, 0); + } /** * @param {!chrome.developerPrivate.ExtensionInfo} item @@ -358,7 +376,7 @@ break; } assertNotReached(); - }, + } /** * @param {string} listId The list to look for the item in. @@ -367,10 +385,10 @@ * @private */ getIndexInList_(listId, itemId) { - return this[listId].findIndex(function(item) { + return this.get(listId).findIndex(function(item) { return item.id === itemId; }); - }, + } /** * @return {?chrome.developerPrivate.ExtensionInfo} @@ -379,7 +397,7 @@ getData_(id) { return this.extensions_[this.getIndexInList_('extensions_', id)] || this.apps_[this.getIndexInList_('apps_', id)]; - }, + } /** * Categorizes |extensionsAndApps| to apps and extensions and initializes @@ -398,7 +416,7 @@ this.apps_ = apps; this.extensions_ = extensions; - }, + } /** * Creates and adds a new extensions-item element to the list, inserting it @@ -410,14 +428,14 @@ addItem_(listId, item) { // We should never try and add an existing item. assert(this.getIndexInList_(listId, item.id) === -1); - let insertBeforeChild = this[listId].findIndex(function(listEl) { + let insertBeforeChild = this.get(listId).findIndex(function(listEl) { return compareExtensions(listEl, item) > 0; }); if (insertBeforeChild === -1) { - insertBeforeChild = this[listId].length; + insertBeforeChild = this.get(listId).length; } this.splice(listId, insertBeforeChild, 0, item); - }, + } /** * @param {!chrome.developerPrivate.ExtensionInfo} item The data for the @@ -446,7 +464,7 @@ this.currentPage_.page === Page.ACTIVITY_LOG) { this.activityLogItem_ = item; } - }, + } /** * @param {string} itemId The id of item to remove. @@ -472,7 +490,7 @@ // Leave the details page (the 'list' page is a fine choice). navigation.replaceWith({page: Page.LIST}); } - }, + } /** * @param {!CustomEvent<!chrome.developerPrivate.LoadError>} e @@ -480,12 +498,12 @@ */ onLoadError_(e) { this.showLoadErrorDialog_ = true; - this.async(() => { - const dialog = this.$$('#load-error'); + setTimeout(() => { + const dialog = this.shadowRoot.querySelector('#load-error'); dialog.loadError = e.detail; dialog.show(); - }); - }, + }, 0); + } /** * Changes the active page selection. @@ -495,7 +513,7 @@ changePage_(newPage) { this.onCloseDrawer_(); - const optionsDialog = this.$$('#options-dialog'); + const optionsDialog = this.shadowRoot.querySelector('#options-dialog'); if (optionsDialog && optionsDialog.open) { this.showOptionsDialog_ = false; } @@ -549,16 +567,16 @@ assert(newPage.subpage === Dialog.OPTIONS); assert(newPage.extensionId); this.showOptionsDialog_ = true; - this.async(() => { - this.$$('#options-dialog').show(data); - }); + setTimeout(() => { + this.shadowRoot.querySelector('#options-dialog').show(data); + }, 0); } document.title = toPage === Page.DETAILS ? `${loadTimeData.getString('title')} - ${this.detailViewItem_.name}` : loadTimeData.getString('title'); this.currentPage_ = newPage; - }, + } /** * This method detaches the drawer dialog completely. Should only be @@ -567,34 +585,35 @@ */ onDrawerClose_() { this.showDrawer_ = false; - }, + } /** * This method animates the closing of the drawer. * @private */ onCloseDrawer_() { - const drawer = this.$$('#drawer'); + const drawer = this.shadowRoot.querySelector('#drawer'); if (drawer && drawer.open) { drawer.close(); } - }, + } /** @private */ onLoadErrorDialogClose_() { this.showLoadErrorDialog_ = false; - }, + } /** @private */ onOptionsDialogClose_() { this.showOptionsDialog_ = false; - this.$$('extensions-detail-view').focusOptionsButton(); - }, + this.shadowRoot.querySelector('extensions-detail-view') + .focusOptionsButton(); + } /** @private */ onViewEnterStart_() { this.fromActivityLog_ = false; - }, + } /** * @param {!Event} e @@ -603,7 +622,7 @@ onViewExitStart_(e) { const viewType = e.composedPath()[0].tagName; this.fromActivityLog_ = viewType === 'EXTENSIONS-ACTIVITY-LOG'; - }, + } /** * @param {!Event} e @@ -618,7 +637,7 @@ } const extensionId = e.composedPath()[0].data.id; - const list = this.$$('extensions-item-list'); + const list = this.shadowRoot.querySelector('extensions-item-list'); const button = viewType === 'EXTENSIONS-DETAIL-VIEW' ? list.getDetailsButton(extensionId) : list.getErrorsButton(extensionId); @@ -628,7 +647,7 @@ if (button) { button.focus(); } - }, + } /** * @param {!CustomEvent<!Array<string>>} e @@ -640,22 +659,24 @@ // in the DOM yet. this.installWarnings_ = e.detail; this.showInstallWarningsDialog_ = true; - }, + } /** @private */ onInstallWarningsDialogClose_() { this.installWarnings_ = null; this.showInstallWarningsDialog_ = false; - }, + } // <if expr="chromeos"> /** @private */ onKioskTap_() { this.showKioskDialog_ = true; - }, + } onKioskDialogClose_() { this.showKioskDialog_ = false; - }, + } // </if> -}); +} + +customElements.define(ExtensionsManagerElement.is, ExtensionsManagerElement);
diff --git a/chrome/browser/resources/extensions/options_dialog.js b/chrome/browser/resources/extensions/options_dialog.js index e84f280..a0d1aa2 100644 --- a/chrome/browser/resources/extensions/options_dialog.js +++ b/chrome/browser/resources/extensions/options_dialog.js
@@ -4,7 +4,7 @@ import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {Debouncer, html, PolymerElement, timeOut} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {navigation, Page} from './navigation_helper.js'; @@ -34,28 +34,42 @@ // The maximum height in pixels for the options dialog. export const OptionsDialogMaxHeight = 640; -Polymer({ - is: 'extensions-options-dialog', +/** @polymer */ +class ExtensionsOptionsDialogElement extends PolymerElement { + static get is() { + return 'extensions-options-dialog'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @private {Object} */ - extensionOptions_: Object, + static get properties() { + return { + /** @private {Object} */ + extensionOptions_: Object, - /** @private {chrome.developerPrivate.ExtensionInfo} */ - data_: Object, - }, + /** @private {chrome.developerPrivate.ExtensionInfo} */ + data_: Object, + }; + } - /** @private {?Function} */ - boundUpdateDialogSize_: null, + constructor() { + super(); - /** @private {?{height: number, width: number}} */ - preferredSize_: null, + /** @private {?Function} */ + this.boundUpdateDialogSize_ = null; + + /** @private {?{height: number, width: number}} */ + this.preferredSize_ = null; + + /** @private {Debouncer} */ + this.debouncer_; + } get open() { return this.$.dialog.open; - }, + } /** * Resizes the dialog to the width/height stored in |preferredSize_|, taking @@ -74,7 +88,7 @@ this.$.dialog.style.setProperty('--dialog-height', `${effectiveHeight}px`); this.$.dialog.style.setProperty('--dialog-width', `${effectiveWidth}px`); this.$.dialog.style.setProperty('--dialog-opacity', '1'); - }, + } /** @param {chrome.developerPrivate.ExtensionInfo} data */ show(data) { @@ -93,7 +107,8 @@ this.$.dialog.showModal(); } this.preferredSize_ = e; - this.debounce('updateDialogSize_', boundUpdateDialogSize, 50); + this.debouncer_ = Debouncer.debounce( + this.debouncer_, timeOut.after(50), boundUpdateDialogSize); }; // Add a 'resize' such that the dialog is resized when window size @@ -101,7 +116,7 @@ window.addEventListener('resize', this.boundUpdateDialogSize_); this.$.body.appendChild(/** @type {Node} */ (this.extensionOptions_)); }); - }, + } /** @private */ onClose_() { @@ -124,5 +139,8 @@ navigation.navigateTo( {page: Page.DETAILS, extensionId: currentPage.extensionId}); } - }, -}); + } +} + +customElements.define( + ExtensionsOptionsDialogElement.is, ExtensionsOptionsDialogElement);
diff --git a/chrome/browser/resources/extensions/pack_dialog.js b/chrome/browser/resources/extensions/pack_dialog.js index 1c371fce..34030506 100644 --- a/chrome/browser/resources/extensions/pack_dialog.js +++ b/chrome/browser/resources/extensions/pack_dialog.js
@@ -10,7 +10,7 @@ import './pack_dialog_alert.js'; import './strings.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @interface */ export class PackDialogDelegate { @@ -39,32 +39,40 @@ packExtension(rootPath, keyPath, flag, callback) {} } -Polymer({ - is: 'extensions-pack-dialog', +/** @polymer */ +class ExtensionsPackDialogElement extends PolymerElement { + static get is() { + return 'extensions-pack-dialog'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {PackDialogDelegate} */ - delegate: Object, + static get properties() { + return { + /** @type {PackDialogDelegate} */ + delegate: Object, - /** @private */ - packDirectory_: { - type: String, - value: '', // Initialized to trigger binding when attached. - }, + /** @private */ + packDirectory_: { + type: String, + value: '', // Initialized to trigger binding when attached. + }, - /** @private */ - keyFile_: String, + /** @private */ + keyFile_: String, - /** @private {?chrome.developerPrivate.PackDirectoryResponse} */ - lastResponse_: Object, - }, + /** @private {?chrome.developerPrivate.PackDirectoryResponse} */ + lastResponse_: Object, + }; + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); this.$.dialog.showModal(); - }, + } /** @private */ onRootBrowse_() { @@ -73,7 +81,7 @@ this.set('packDirectory_', path); } }); - }, + } /** @private */ onKeyBrowse_() { @@ -82,18 +90,18 @@ this.set('keyFile_', path); } }); - }, + } /** @private */ onCancelTap_() { this.$.dialog.cancel(); - }, + } /** @private */ onConfirmTap_() { this.delegate.packExtension( this.packDirectory_, this.keyFile_, 0, this.onPackResponse_.bind(this)); - }, + } /** * @param {chrome.developerPrivate.PackDirectoryResponse} response the @@ -102,7 +110,7 @@ */ onPackResponse_(response) { this.lastResponse_ = response; - }, + } /** * In the case that the alert dialog was a success message, the entire @@ -122,12 +130,16 @@ } // This is only possible for a warning dialog. - if (this.$$('extensions-pack-dialog-alert').returnValue === 'success') { + if (this.shadowRoot.querySelector('extensions-pack-dialog-alert') + .returnValue === 'success') { this.delegate.packExtension( this.lastResponse_.item_path, this.lastResponse_.pem_path, this.lastResponse_.override_flags, this.onPackResponse_.bind(this)); } this.lastResponse_ = null; - }, -}); + } +} + +customElements.define( + ExtensionsPackDialogElement.is, ExtensionsPackDialogElement);
diff --git a/chrome/browser/resources/extensions/pack_dialog_alert.js b/chrome/browser/resources/extensions/pack_dialog_alert.js index 16e14987..bb73b52 100644 --- a/chrome/browser/resources/extensions/pack_dialog_alert.js +++ b/chrome/browser/resources/extensions/pack_dialog_alert.js
@@ -7,45 +7,54 @@ import 'chrome://resources/cr_elements/shared_style_css.m.js'; import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -Polymer({ - is: 'extensions-pack-dialog-alert', +/** @polymer */ +class ExtensionsPackDialogAlertElement extends PolymerElement { + static get is() { + return 'extensions-pack-dialog-alert'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @private {chrome.developerPrivate.PackDirectoryResponse} */ - model: Object, + static get properties() { + return { + /** @private {chrome.developerPrivate.PackDirectoryResponse} */ + model: Object, - /** @private */ - title_: String, + /** @private */ + title_: String, - /** @private */ - message_: String, + /** @private */ + message_: String, - /** @private {?string} */ - cancelLabel_: String, + /** @private {?string} */ + cancelLabel_: String, - /** - * This needs to be initialized to trigger data-binding. - * @private {?string} - */ - confirmLabel_: { - type: String, - value: '', - } - }, + /** + * This needs to be initialized to trigger data-binding. + * @private {?string} + */ + confirmLabel_: { + type: String, + value: '', + } + }; + } /** @return {string} */ get returnValue() { return /** @type {!CrDialogElement} */ (this.$.dialog) .getNative() .returnValue; - }, + } /** @override */ ready() { + super.ready(); + // Initialize button label values for initial html binding. this.cancelLabel_ = null; this.confirmLabel_ = null; @@ -68,12 +77,13 @@ assertNotReached(); return; } - }, + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); this.$.dialog.showModal(); - }, + } /** * @return {string} @@ -81,12 +91,12 @@ */ getCancelButtonClass_() { return this.confirmLabel_ ? 'cancel-button' : 'action-button'; - }, + } /** @private */ onCancelTap_() { this.$.dialog.cancel(); - }, + } /** @private */ onConfirmTap_() { @@ -94,4 +104,7 @@ assert(this.model.status === chrome.developerPrivate.PackStatus.WARNING); this.$.dialog.close(); } -}); +} + +customElements.define( + ExtensionsPackDialogAlertElement.is, ExtensionsPackDialogAlertElement);
diff --git a/chrome/browser/resources/extensions/runtime_host_permissions.js b/chrome/browser/resources/extensions/runtime_host_permissions.js index 3ebaf22c..e440c40 100644 --- a/chrome/browser/resources/extensions/runtime_host_permissions.js +++ b/chrome/browser/resources/extensions/runtime_host_permissions.js
@@ -19,108 +19,115 @@ import {assert} from 'chrome://resources/js/assert.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; -Polymer({ - is: 'extensions-runtime-host-permissions', +/** @polymer */ +class ExtensionsRuntimeHostPermissionsElement extends PolymerElement { + static get is() { + return 'extensions-runtime-host-permissions'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** - * The underlying permissions data. - * @type {chrome.developerPrivate.RuntimeHostPermissions} - */ - permissions: Object, + static get properties() { + return { + /** + * The underlying permissions data. + * @type {chrome.developerPrivate.RuntimeHostPermissions} + */ + permissions: Object, - /** @private */ - itemId: String, + /** @private */ + itemId: String, - /** @type {!ItemDelegate} */ - delegate: Object, + /** @type {!ItemDelegate} */ + delegate: Object, - /** - * Whether the dialog to add a new host permission is shown. - * @private - */ - showHostDialog_: Boolean, + /** + * Whether the dialog to add a new host permission is shown. + * @private + */ + showHostDialog_: Boolean, - /** - * The current site of the entry that the host dialog is editing, if the - * dialog is open for editing. - * @type {?string} - * @private - */ - hostDialogModel_: { - type: String, - value: null, - }, + /** + * The current site of the entry that the host dialog is editing, if the + * dialog is open for editing. + * @type {?string} + * @private + */ + hostDialogModel_: { + type: String, + value: null, + }, - /** - * The element to return focus to once the host dialog closes. - * @type {?HTMLElement} - * @private - */ - hostDialogAnchorElement_: { - type: Object, - value: null, - }, + /** + * The element to return focus to once the host dialog closes. + * @type {?HTMLElement} + * @private + */ + hostDialogAnchorElement_: { + type: Object, + value: null, + }, - /** - * If the action menu is open, the site of the entry it is open for. - * Otherwise null. - * @type {?string} - * @private - */ - actionMenuModel_: { - type: String, - value: null, - }, + /** + * If the action menu is open, the site of the entry it is open for. + * Otherwise null. + * @type {?string} + * @private + */ + actionMenuModel_: { + type: String, + value: null, + }, - /** - * The element that triggered the action menu, so that the page will - * return focus once the action menu (or dialog) closes. - * @type {?HTMLElement} - * @private - */ - actionMenuAnchorElement_: { - type: Object, - value: null, - }, + /** + * The element that triggered the action menu, so that the page will + * return focus once the action menu (or dialog) closes. + * @type {?HTMLElement} + * @private + */ + actionMenuAnchorElement_: { + type: Object, + value: null, + }, - /** - * The old host access setting; used when we don't immediately commit the - * change to host access so that we can reset it if the user cancels. - * @type {?string} - * @private - */ - oldHostAccess_: { - type: String, - value: null, - }, + /** + * The old host access setting; used when we don't immediately commit the + * change to host access so that we can reset it if the user cancels. + * @type {?string} + * @private + */ + oldHostAccess_: { + type: String, + value: null, + }, - /** - * Indicator to track if an onHostAccessChange_ event is coming from the - * setting being automatically reverted to the previous value, after a - * change to a new value was canceled. - * @private - */ - revertingHostAccess_: { - type: Boolean, - value: false, - }, + /** + * Indicator to track if an onHostAccessChange_ event is coming from the + * setting being automatically reverted to the previous value, after a + * change to a new value was canceled. + * @private + */ + revertingHostAccess_: { + type: Boolean, + value: false, + }, - /** - * Proxying the enum to be used easily by the html template. - * @private - */ - HostAccess_: { - type: Object, - value: chrome.developerPrivate.HostAccess, - }, - }, + /** + * Proxying the enum to be used easily by the html template. + * @private + */ + HostAccess_: { + type: Object, + value: chrome.developerPrivate.HostAccess, + }, + }; + } /** * @param {!Event} event @@ -165,7 +172,7 @@ } else { this.delegate.setItemHostAccess(this.itemId, access); } - }, + } /** * @return {boolean} @@ -174,7 +181,7 @@ showSpecificSites_() { return this.permissions.hostAccess === chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES; - }, + } /** * Returns the granted host permissions as a sorted set of strings. @@ -192,7 +199,7 @@ return this.permissions.hosts.filter(control => control.granted) .map(control => control.host) .sort(); - }, + } /** * @param {Event} e @@ -203,7 +210,7 @@ 'Extensions.Settings.Hosts.AddHostActivated'); const target = /** @type {!HTMLElement} */ (e.target); this.doShowHostDialog_(target, null); - }, + } /** * @param {!HTMLElement} anchorElement The element to return focus to once @@ -216,7 +223,7 @@ this.hostDialogAnchorElement_ = anchorElement; this.hostDialogModel_ = currentSite; this.showHostDialog_ = true; - }, + } /** @private */ onHostDialogClose_() { @@ -225,7 +232,7 @@ focusWithoutInk(assert(this.hostDialogAnchorElement_, 'Host Anchor')); this.hostDialogAnchorElement_ = null; this.oldHostAccess_ = null; - }, + } /** @private */ onHostDialogCancel_() { @@ -240,7 +247,7 @@ this.revertingHostAccess_ = false; this.oldHostAccess_ = null; } - }, + } /** * @return {boolean} @@ -248,7 +255,7 @@ */ dialogShouldUpdateHostAccess_() { return !!this.oldHostAccess_; - }, + } /** * @param {!{ @@ -265,7 +272,7 @@ const actionMenu = /** @type {CrActionMenuElement} */ (this.$.hostActionMenu); actionMenu.showAt(e.target); - }, + } /** @private */ onActionMenuEditClick_() { @@ -282,7 +289,7 @@ this.actionMenuAnchorElement_ = null; this.closeActionMenu_(); this.doShowHostDialog_(anchorElement, site); - }, + } /** @private */ onActionMenuRemoveClick_() { @@ -291,24 +298,28 @@ this.delegate.removeRuntimeHostPermission( this.itemId, assert(this.actionMenuModel_, 'Action Menu Model')); this.closeActionMenu_(); - }, + } /** @private */ closeActionMenu_() { const menu = this.$.hostActionMenu; assert(menu.open); menu.close(); - }, + } /** @private */ onActionMenuClose_() { this.actionMenuModel_ = null; this.actionMenuAnchorElement_ = null; - }, + } /** @private */ onLearnMoreClick_() { chrome.metricsPrivate.recordUserAction( 'Extensions.Settings.Hosts.LearnMoreActivated'); } -}); +} + +customElements.define( + ExtensionsRuntimeHostPermissionsElement.is, + ExtensionsRuntimeHostPermissionsElement);
diff --git a/chrome/browser/resources/extensions/runtime_hosts_dialog.js b/chrome/browser/resources/extensions/runtime_hosts_dialog.js index 0bfaa4c..23fcf10 100644 --- a/chrome/browser/resources/extensions/runtime_hosts_dialog.js +++ b/chrome/browser/resources/extensions/runtime_hosts_dialog.js
@@ -10,7 +10,7 @@ import {assert} from 'chrome://resources/js/assert.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; @@ -47,66 +47,75 @@ return scheme + host + port + path; } -Polymer({ - is: 'extensions-runtime-hosts-dialog', +/** @polymer */ +class ExtensionsRuntimeHostsDialogElement extends PolymerElement { + static get is() { + return 'extensions-runtime-hosts-dialog'; + } - _template: html`{__html_template__}`, + static get template() { + return html`{__html_template__}`; + } - properties: { - /** @type {!ItemDelegate} */ - delegate: Object, + static get properties() { + return { + /** @type {!ItemDelegate} */ + delegate: Object, - /** @type {string} */ - itemId: String, + /** @type {string} */ + itemId: String, - /** - * The site that this entry is currently managing. Only non-empty if this - * is for editing an existing entry. - * @type {?string} - */ - currentSite: { - type: String, - value: null, - }, + /** + * The site that this entry is currently managing. Only non-empty if this + * is for editing an existing entry. + * @type {?string} + */ + currentSite: { + type: String, + value: null, + }, - /** - * Whether the dialog should update the host access to be "on specific - * sites" before adding a new host permission. - */ - updateHostAccess: { - type: Boolean, - value: false, - }, + /** + * Whether the dialog should update the host access to be "on specific + * sites" before adding a new host permission. + */ + updateHostAccess: { + type: Boolean, + value: false, + }, - /** - * The site to add an exception for. - * @private - */ - site_: String, + /** + * The site to add an exception for. + * @private + */ + site_: String, - /** - * Whether the currently-entered input is valid. - * @private - */ - inputInvalid_: { - type: Boolean, - value: false, - }, - }, + /** + * Whether the currently-entered input is valid. + * @private + */ + inputInvalid_: { + type: Boolean, + value: false, + }, + }; + } /** @override */ - attached() { + connectedCallback() { + super.connectedCallback(); + if (this.currentSite !== null && this.currentSite !== undefined) { this.site_ = this.currentSite; this.validate_(); } this.$.dialog.showModal(); - }, + } /** @return {boolean} */ isOpen() { return this.$.dialog.open; - }, + } /** * Validates that the pattern entered is valid. @@ -122,7 +131,7 @@ const valid = patternRegExp.test(this.site_); this.inputInvalid_ = !valid; - }, + } /** * @return {string} @@ -132,7 +141,7 @@ const stringId = this.currentSite === null ? 'runtimeHostsDialogTitle' : 'hostPermissionsEdit'; return loadTimeData.getString(stringId); - }, + } /** * @return {boolean} @@ -141,7 +150,7 @@ computeSubmitButtonDisabled_() { return this.inputInvalid_ || this.site_ === undefined || this.site_.trim().length === 0; - }, + } /** * @return {string} @@ -150,12 +159,12 @@ computeSubmitButtonLabel_() { const stringId = this.currentSite === null ? 'add' : 'save'; return loadTimeData.getString(stringId); - }, + } /** @private */ onCancelTap_() { this.$.dialog.cancel(); - }, + } /** * The tap handler for the submit button (adds the pattern and closes @@ -170,7 +179,7 @@ } else { this.handleAdd_(); } - }, + } /** * Handles adding a new site entry. @@ -185,7 +194,7 @@ } this.addPermission_(); - }, + } /** * Handles editing an existing site entry. @@ -210,7 +219,7 @@ .then(() => { this.addPermission_(); }); - }, + } /** * Adds the runtime host permission through the delegate. If successful, @@ -227,5 +236,9 @@ () => { this.inputInvalid_ = true; }); - }, -}); + } +} + +customElements.define( + ExtensionsRuntimeHostsDialogElement.is, + ExtensionsRuntimeHostsDialogElement);
diff --git a/chrome/browser/resources/extensions/service.js b/chrome/browser/resources/extensions/service.js index d6ba86cf..03bb069 100644 --- a/chrome/browser/resources/extensions/service.js +++ b/chrome/browser/resources/extensions/service.js
@@ -3,7 +3,6 @@ // found in the LICENSE file. import {assert} from 'chrome://resources/js/assert.m.js'; -import {addSingletonGetter} from 'chrome://resources/js/cr.m.js'; import {ActivityLogDelegate} from './activity_log/activity_log_history.js'; import {ActivityLogEventDelegate} from './activity_log/activity_log_stream.js'; @@ -494,6 +493,17 @@ notifyDragInstallInProgress() { chrome.developerPrivate.notifyDragInstallInProgress(); } + + /** @return {!Service} */ + static getInstance() { + return instance || (instance = new Service()); + } + + /** @param {!Service} obj */ + static setInstance(obj) { + instance = obj; + } } -addSingletonGetter(Service); +/** @type {?Service} */ +let instance = null;
diff --git a/chrome/browser/resources/extensions/shortcut_input.js b/chrome/browser/resources/extensions/shortcut_input.js index ceb1813..f099b7c6 100644 --- a/chrome/browser/resources/extensions/shortcut_input.js +++ b/chrome/browser/resources/extensions/shortcut_input.js
@@ -9,9 +9,9 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; import {assert} from 'chrome://resources/js/assert.m.js'; -import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; +import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js'; import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {KeyboardShortcutDelegate} from './keyboard_shortcut_delegate.js'; import {hasValidModifiers, isValidKeyCode, Key, keystrokeToString} from './shortcut_util.js'; @@ -25,68 +25,85 @@ }; // The UI to display and manage keyboard shortcuts set for extension commands. -Polymer({ - is: 'extensions-shortcut-input', - _template: html`{__html_template__}`, +/** + * @constructor + * @extends {PolymerElement} + * @implements {I18nBehaviorInterface} + */ +const ExtensionsShortcutInputElementBase = + mixinBehaviors([I18nBehavior], PolymerElement); - behaviors: [I18nBehavior], +/** @polymer */ +class ExtensionsShortcutInputElement extends + ExtensionsShortcutInputElementBase { + static get is() { + return 'extensions-shortcut-input'; + } - properties: { - /** @type {!KeyboardShortcutDelegate} */ - delegate: Object, + static get template() { + return html`{__html_template__}`; + } - item: { - type: String, - value: '', - }, + static get properties() { + return { + /** @type {!KeyboardShortcutDelegate} */ + delegate: Object, - commandName: { - type: String, - value: '', - }, + item: { + type: String, + value: '', + }, - shortcut: { - type: String, - value: '', - }, + commandName: { + type: String, + value: '', + }, - /** @private */ - capturing_: { - type: Boolean, - value: false, - }, + shortcut: { + type: String, + value: '', + }, - /** @private {!ShortcutError} */ - error_: { - type: Number, - value: ShortcutError.NO_ERROR, - }, + /** @private */ + capturing_: { + type: Boolean, + value: false, + }, + + /** @private {!ShortcutError} */ + error_: { + type: Number, + value: ShortcutError.NO_ERROR, + }, - /** @private */ - readonly_: { - type: Boolean, - value: true, - reflectToAttribute: true, - }, + /** @private */ + readonly_: { + type: Boolean, + value: true, + reflectToAttribute: true, + }, - /** @private */ - pendingShortcut_: { - type: String, - value: '', - }, - }, + /** @private */ + pendingShortcut_: { + type: String, + value: '', + }, + }; + } /** @override */ ready() { + super.ready(); + const node = this.$.input; node.addEventListener('mouseup', this.startCapture_.bind(this)); node.addEventListener('blur', this.endCapture_.bind(this)); node.addEventListener('focus', this.startCapture_.bind(this)); node.addEventListener('keydown', this.onKeyDown_.bind(this)); node.addEventListener('keyup', this.onKeyUp_.bind(this)); - }, + } /** @private */ startCapture_() { @@ -95,7 +112,7 @@ } this.capturing_ = true; this.delegate.setShortcutHandlingSuspended(true); - }, + } /** @private */ endCapture_() { @@ -108,7 +125,7 @@ this.error_ = ShortcutError.NO_ERROR; this.delegate.setShortcutHandlingSuspended(false); this.readonly_ = true; - }, + } /** @private */ clearShortcut_() { @@ -118,7 +135,7 @@ // for the extension. this.commitPending_(); this.endCapture_(); - }, + } /** * @param {!Event} e @@ -154,7 +171,7 @@ } this.handleKey_(/** @type {!KeyboardEvent} */ (e)); - }, + } /** * @param {!Event} e @@ -178,7 +195,7 @@ } this.handleKey_(/** @type {!KeyboardEvent} */ (e)); - }, + } /** * @param {!ShortcutError} error @@ -201,7 +218,7 @@ assert(this.error_ === ShortcutError.NO_ERROR); return ''; } - }, + } /** * @param {!KeyboardEvent} e @@ -235,20 +252,24 @@ this.error_ = ShortcutError.NO_ERROR; IronA11yAnnouncer.requestAvailability(); - this.fire('iron-announce', { - text: this.i18n('shortcutSet', this.computeText_()), - }); + this.dispatchEvent(new CustomEvent('iron-announce', { + bubbles: true, + composed: true, + detail: { + text: this.i18n('shortcutSet', this.computeText_()), + } + })); this.commitPending_(); this.endCapture_(); - }, + } /** @private */ commitPending_() { this.shortcut = this.pendingShortcut_; this.delegate.updateExtensionCommandKeybinding( this.item, this.commandName, this.shortcut); - }, + } /** * @return {string} The placeholder text. @@ -260,8 +281,7 @@ this.i18n('shortcutNotSet'); } return this.i18n('shortcutTypeAShortcut'); - }, - + } /** * @return {string} The text to be displayed in the shortcut field. @@ -271,7 +291,7 @@ const shortcutString = this.capturing_ ? this.pendingShortcut_ : this.shortcut; return shortcutString.split('+').join(' + '); - }, + } /** * @return {boolean} @@ -279,7 +299,7 @@ */ getIsInvalid_() { return this.error_ !== ShortcutError.NO_ERROR; - }, + } /** @private */ onEditClick_() { @@ -290,5 +310,8 @@ this.clearShortcut_(); this.readonly_ = false; this.$.input.focus(); - }, -}); + } +} + +customElements.define( + ExtensionsShortcutInputElement.is, ExtensionsShortcutInputElement);
diff --git a/chrome/browser/resources/extensions/sidebar.js b/chrome/browser/resources/extensions/sidebar.js index 63e8e5b..6a1b15e 100644 --- a/chrome/browser/resources/extensions/sidebar.js +++ b/chrome/browser/resources/extensions/sidebar.js
@@ -7,24 +7,33 @@ import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; import {assert} from 'chrome://resources/js/assert.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {navigation, Page} from './navigation_helper.js'; -Polymer({ - is: 'extensions-sidebar', +/** @polymer */ +class ExtensionsSidebarElement extends PolymerElement { + static get is() { + return 'extensions-sidebar'; + } - _template: html`{__html_template__}`, - - hostAttributes: { - role: 'navigation', - }, + static get template() { + return html`{__html_template__}`; + } /** @override */ - attached() { + ready() { + super.ready(); + this.setAttribute('role', 'navigation'); + } + + /** @override */ + connectedCallback() { + super.connectedCallback(); + this.$.sectionMenu.select( navigation.getCurrentPage().page === Page.SHORTCUTS ? 1 : 0); - }, + } /** * @param {!Event} e @@ -33,11 +42,14 @@ onLinkTap_(e) { e.preventDefault(); navigation.navigateTo({page: e.target.dataset.path}); - this.fire('close-drawer'); - }, + this.dispatchEvent( + new CustomEvent('close-drawer', {bubbles: true, composed: true})); + } /** @private */ onMoreExtensionsTap_() { chrome.metricsPrivate.recordUserAction('Options_GetMoreExtensions'); - }, -}); + } +} + +customElements.define(ExtensionsSidebarElement.is, ExtensionsSidebarElement);
diff --git a/chrome/browser/resources/extensions/toggle_row.js b/chrome/browser/resources/extensions/toggle_row.js index 8973cbe..f8f5476 100644 --- a/chrome/browser/resources/extensions/toggle_row.js +++ b/chrome/browser/resources/extensions/toggle_row.js
@@ -5,7 +5,7 @@ import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.m.js'; import 'chrome://resources/cr_elements/shared_style_css.m.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @@ -13,16 +13,34 @@ * modify a cr-toggle, by leveraging the native <label> functionality. It uses * a hidden native <input type="checkbox"> to achieve this. */ -Polymer({ - is: 'extensions-toggle-row', - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsToggleRowElement extends PolymerElement { + static get is() { + return 'extensions-toggle-row'; + } - properties: { - checked: Boolean, + static get template() { + return html`{__html_template__}`; + } - disabled: Boolean, - }, + static get properties() { + return { + checked: Boolean, + + disabled: Boolean, + }; + } + + /** + * @param {string} eventName + * @param {*=} detail + * @private + */ + fire_(eventName, detail) { + this.dispatchEvent( + new CustomEvent(eventName, {bubbles: true, composed: true, detail})); + } /** * Exposing the clickable part of extensions-toggle-row for testing @@ -31,7 +49,7 @@ */ getLabel() { return /** @type {!HTMLElement} */ (this.$.label); - }, + } /** * @param {!Event} e @@ -43,7 +61,7 @@ // browser emits an extraneous event when the label is clicked. Stop // propagation so that it does not interfere with |onLabelTap_| listener. e.stopPropagation(); - }, + } /** * Fires when the native checkbox changes value. This happens when the user @@ -58,8 +76,8 @@ this.$.crToggle.checked = this.$.native.checked; this.checked = this.$.native.checked; - this.fire('change', this.checked); - }, + this.fire_('change', this.checked); + } /** * @param {!CustomEvent<boolean>} e @@ -71,6 +89,9 @@ // Sync value of native checkbox and cr-toggle. this.$.native.checked = e.detail; - this.fire('change', this.checked); - }, -}); + this.fire_('change', this.checked); + } +} + +customElements.define( + ExtensionsToggleRowElement.is, ExtensionsToggleRowElement);
diff --git a/chrome/browser/resources/extensions/toolbar.js b/chrome/browser/resources/extensions/toolbar.js index e94afd0..182a092 100644 --- a/chrome/browser/resources/extensions/toolbar.js +++ b/chrome/browser/resources/extensions/toolbar.js
@@ -12,10 +12,10 @@ import './pack_dialog.js'; import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.m.js'; -import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; +import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js'; import {listenOnce} from 'chrome://resources/js/util.m.js'; import {IronA11yAnnouncer} from 'chrome://resources/polymer/v3_0/iron-a11y-announcer/iron-a11y-announcer.js'; -import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @interface */ export class ToolbarDelegate { @@ -39,53 +39,78 @@ updateAllExtensions(extensions) {} } -Polymer({ - is: 'extensions-toolbar', +/** + * @constructor + * @extends {PolymerElement} + * @implements {I18nBehaviorInterface} + */ +const ExtensionsToolbarElementBase = + mixinBehaviors([I18nBehavior], PolymerElement); - _template: html`{__html_template__}`, +/** @polymer */ +class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { + static get is() { + return 'extensions-toolbar'; + } - properties: { - /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ - extensions: Array, + static get template() { + return html`{__html_template__}`; + } - /** @type {ToolbarDelegate} */ - delegate: Object, + static get properties() { + return { + /** @type {!Array<!chrome.developerPrivate.ExtensionInfo>} */ + extensions: Array, - inDevMode: { - type: Boolean, - value: false, - observer: 'onInDevModeChanged_', - reflectToAttribute: true, - }, + /** @type {ToolbarDelegate} */ + delegate: Object, - devModeControlledByPolicy: Boolean, + inDevMode: { + type: Boolean, + value: false, + observer: 'onInDevModeChanged_', + reflectToAttribute: true, + }, - isSupervised: Boolean, + devModeControlledByPolicy: Boolean, - // <if expr="chromeos"> - kioskEnabled: Boolean, - // </if> + isSupervised: Boolean, - canLoadUnpacked: Boolean, + // <if expr="chromeos"> + kioskEnabled: Boolean, + // </if> - /** @private */ - expanded_: Boolean, + canLoadUnpacked: Boolean, - /** @private */ - showPackDialog_: Boolean, + /** @private */ + expanded_: Boolean, - /** - * Prevents initiating update while update is in progress. - * @private - */ - isUpdating_: {type: Boolean, value: false} - }, + /** @private */ + showPackDialog_: Boolean, - behaviors: [I18nBehavior], + /** + * Prevents initiating update while update is in progress. + * @private + */ + isUpdating_: {type: Boolean, value: false} + }; + } - hostAttributes: { - role: 'banner', - }, + /** @override */ + ready() { + super.ready(); + this.setAttribute('role', 'banner'); + } + + /** + * @param {string} eventName + * @param {*=} detail + * @private + */ + fire_(eventName, detail) { + this.dispatchEvent( + new CustomEvent(eventName, {bubbles: true, composed: true, detail})); + } /** * @return {boolean} @@ -93,7 +118,7 @@ */ shouldDisableDevMode_() { return this.devModeControlledByPolicy || this.isSupervised; - }, + } /** * @return {string} @@ -103,7 +128,7 @@ return this.i18n( this.isSupervised ? 'controlledSettingChildRestriction' : 'controlledSettingPolicy'); - }, + } /** * @return {string} @@ -111,7 +136,7 @@ */ getIcon_() { return this.isSupervised ? 'cr20:kite' : 'cr20:domain'; - }, + } /** * @param {!CustomEvent<boolean>} e @@ -121,7 +146,7 @@ this.delegate.setProfileInDevMode(e.detail); chrome.metricsPrivate.recordUserAction( 'Options_ToggleDeveloperMode_' + (e.detail ? 'Enabled' : 'Disabled')); - }, + } /** * @param {boolean} current @@ -150,7 +175,7 @@ }); } this.expanded_ = !this.expanded_; - }, + } /** @private */ onLoadUnpackedTap_() { @@ -163,28 +188,28 @@ } }) .catch(loadError => { - this.fire('load-error', loadError); + this.fire_('load-error', loadError); }); chrome.metricsPrivate.recordUserAction('Options_LoadUnpackedExtension'); - }, + } /** @private */ onPackTap_() { chrome.metricsPrivate.recordUserAction('Options_PackExtension'); this.showPackDialog_ = true; - }, + } /** @private */ onPackDialogClose_() { this.showPackDialog_ = false; this.$.packExtensions.focus(); - }, + } // <if expr="chromeos"> /** @private */ onKioskTap_() { - this.fire('kiosk-tap'); - }, + this.fire_('kiosk-tap'); + } // </if> /** @private */ @@ -209,9 +234,11 @@ this.isUpdating_ = false; }, loadError => { - this.fire('load-error', loadError); + this.fire_('load-error', loadError); toastManager.hide(); this.isUpdating_ = false; }); - }, -}); + } +} + +customElements.define(ExtensionsToolbarElement.is, ExtensionsToolbarElement);
diff --git a/chrome/browser/resources/print_preview/ui/destination_select_cros.html b/chrome/browser/resources/print_preview/ui/destination_select_cros.html index 686058b..8572019 100644 --- a/chrome/browser/resources/print_preview/ui/destination_select_cros.html +++ b/chrome/browser/resources/print_preview/ui/destination_select_cros.html
@@ -1,4 +1,4 @@ -<style include="print-preview-shared throbber md-select destination-select cr-hidden-style"> +<style include="print-preview-shared throbber destination-select cr-hidden-style"> :host([is-current-destination-cros-local_]) #statusText { color: var(--google-red-600); font-size: calc(10 / 13 * 1em); @@ -14,45 +14,17 @@ <div class="throbber-container" hidden$="[[loaded]]"> <div class="throbber"></div> </div> - <template is="dom-if" if="[[!printerStatusFlagEnabled_]]"> - <select id="dropdown" class="md-select" - aria-label="$i18n{destinationLabel}" hidden$="[[!loaded]]" - style="background-image:[[backgroundImages_]];" - disabled$="[[disabled]]" - value="{{selectedValue::change}}"> - <template is="dom-repeat" items="[[recentDestinationList]]"> - <option value="[[item.key]]">[[item.displayName]]</option> - </template> - <option value="[[pdfDestinationKey_]]" hidden$="[[pdfPrinterDisabled]]"> - $i18n{printToPDF} - </option> - <option value="[[driveDestinationKey]]" - hidden$="[[!driveDestinationKey]]"> - $i18n{printToGoogleDrive} - </option> - <option value="noDestinations" - hidden$="[[!noDestinations]]" selected$="[[noDestinations]]"> - $i18n{noDestinationsMessage} - </option> - <option value="seeMore" - aria-label="$i18n{seeMoreDestinationsLabel}"> - $i18n{seeMore} - </option> - </select> - </template> - <template is="dom-if" if="[[printerStatusFlagEnabled_]]"> - <print-preview-destination-dropdown-cros id="dropdown" - value="[[destination]]" hidden$="[[!loaded]]" - item-list="[[recentDestinationList]]" - pdf-destination-key="[[pdfDestinationKey_]]" - drive-destination-key="[[driveDestinationKey]]" - no-destinations="[[noDestinations]]" - pdf-printer-disabled="[[pdfPrinterDisabled]]" - destination-icon="[[destinationIcon_]]" disabled="[[disabled]]" - on-dropdown-value-selected="onDropdownValueSelected_" - destination-status-text="[[statusText_]]"> - </print-preview-destination-dropdown-cros> - </template> + <print-preview-destination-dropdown-cros id="dropdown" + value="[[destination]]" hidden$="[[!loaded]]" + item-list="[[recentDestinationList]]" + pdf-destination-key="[[pdfDestinationKey_]]" + drive-destination-key="[[driveDestinationKey]]" + no-destinations="[[noDestinations]]" + pdf-printer-disabled="[[pdfPrinterDisabled]]" + destination-icon="[[destinationIcon_]]" disabled="[[disabled]]" + on-dropdown-value-selected="onDropdownValueSelected_" + destination-status-text="[[statusText_]]"> + </print-preview-destination-dropdown-cros> </div> </print-preview-settings-section> <print-preview-settings-section class="destination-additional-info"
diff --git a/chrome/browser/resources/print_preview/ui/destination_select_cros.js b/chrome/browser/resources/print_preview/ui/destination_select_cros.js index bcfeeae..b8112c2a 100644 --- a/chrome/browser/resources/print_preview/ui/destination_select_cros.js +++ b/chrome/browser/resources/print_preview/ui/destination_select_cros.js
@@ -4,7 +4,6 @@ import 'chrome://resources/cr_elements/hidden_style_css.m.js'; import 'chrome://resources/cr_elements/shared_vars_css.m.js'; -import 'chrome://resources/cr_elements/md_select_css.m.js'; import 'chrome://resources/js/util.m.js'; import 'chrome://resources/polymer/v3_0/iron-iconset-svg/iron-iconset-svg.js'; import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; @@ -18,12 +17,10 @@ import {assert} from 'chrome://resources/js/assert.m.js'; import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {Base, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {CloudOrigins, Destination, DestinationOrigin, PDF_DESTINATION_KEY, RecentDestination, SAVE_TO_DRIVE_CROS_DESTINATION_KEY} from '../data/destination.js'; import {ERROR_STRING_KEY_MAP, getPrinterStatusIcon, PrinterStatusReason} from '../data/printer_status_cros.js'; -import {getSelectDropdownBackground} from '../print_preview_utils.js'; import {SelectBehavior} from './select_behavior.js'; @@ -73,13 +70,6 @@ }, /** @private {string} */ - backgroundImages_: { - type: String, - computed: - 'computeBackgroundImages_(destinationIcon_, dark, noDestinations)', - }, - - /** @private {string} */ destinationIcon_: { type: String, computed: @@ -87,15 +77,6 @@ }, /** @private */ - printerStatusFlagEnabled_: { - type: Boolean, - value() { - return loadTimeData.getBoolean('showPrinterStatus'); - }, - readOnly: true, - }, - - /** @private */ isCurrentDestinationCrosLocal_: { type: Boolean, computed: 'computeIsCurrentDestinationCrosLocal_(destination)', @@ -103,17 +84,8 @@ }, }, - /** @private {!IronMetaElement} */ - meta_: /** @type {!IronMetaElement} */ ( - Base.create('iron-meta', {type: 'iconset'})), - focus() { - if (this.printerStatusFlagEnabled_) { - this.$$('#dropdown').$$('#destination-dropdown').focus(); - return; - } - - this.$$('.md-select').focus(); + this.$$('#dropdown').$$('#destination-dropdown').focus(); }, /** Sets the select to the current value of |destination|. */ @@ -136,8 +108,7 @@ // If the destination matches the selected value, pull the icon from the // destination. if (this.destination && this.destination.key === this.selectedValue) { - if (this.printerStatusFlagEnabled_ && - this.isCurrentDestinationCrosLocal_) { + if (this.isCurrentDestinationCrosLocal_) { return getPrinterStatusIcon( this.destination.printerStatusReason, this.destination.isEnterprisePrinter); @@ -174,26 +145,6 @@ return 'print-preview:print'; }, - /** - * @return {string} An inline svg corresponding to the icon for the current - * destination and the image for the dropdown arrow. - * @private - */ - computeBackgroundImages_() { - if (!this.destinationIcon_) { - return ''; - } - - let iconSetAndIcon = null; - if (this.noDestinations) { - iconSetAndIcon = ['cr', 'error']; - } - iconSetAndIcon = iconSetAndIcon || this.destinationIcon_.split(':'); - const iconset = /** @type {!IronIconsetSvgElement} */ ( - this.meta_.byKey(iconSetAndIcon[0])); - return getSelectDropdownBackground(iconset, iconSetAndIcon[1], this); - }, - onProcessSelectChange(value) { this.fire('selected-option-change', value); }, @@ -203,8 +154,6 @@ * @private */ onDropdownValueSelected_(e) { - assert(this.printerStatusFlagEnabled_); - const selectedItem = e.detail; if (!selectedItem || selectedItem.value === this.destination.key) { return; @@ -218,10 +167,6 @@ * @private */ onRecentDestinationListChanged_() { - if (!this.printerStatusFlagEnabled_) { - return; - } - for (const destination of this.recentDestinationList) { if (!destination || destination.origin !== DestinationOrigin.CROS) { continue; @@ -239,8 +184,6 @@ * @private */ onPrinterStatusReceived_(destinationKey) { - assert(this.printerStatusFlagEnabled_); - const indexFound = this.recentDestinationList.findIndex(destination => { return destination.key === destinationKey; }); @@ -281,10 +224,8 @@ } } - // Only when the flag is enabled do we need to fetch a local printer status - // error string. - if (this.destination.origin !== DestinationOrigin.CROS || - !this.printerStatusFlagEnabled_) { + // Non-local printers do not show an error status. + if (this.destination.origin !== DestinationOrigin.CROS) { return ''; } @@ -328,9 +269,7 @@ * @return {!Array<!Element>} */ getVisibleItemsForTest: function() { - return this.printerStatusFlagEnabled_ ? - this.$$('#dropdown') - .shadowRoot.querySelectorAll('.list-item:not([hidden])') : - this.shadowRoot.querySelectorAll('option:not([hidden])'); + return this.$$('#dropdown') + .shadowRoot.querySelectorAll('.list-item:not([hidden])'); }, });
diff --git a/chrome/browser/resources/print_preview/ui/destination_settings.js b/chrome/browser/resources/print_preview/ui/destination_settings.js index 05f1f39..1159167e 100644 --- a/chrome/browser/resources/print_preview/ui/destination_settings.js +++ b/chrome/browser/resources/print_preview/ui/destination_settings.js
@@ -164,17 +164,6 @@ /** @private {!Array<string>} */ users_: Array, - - // <if expr="chromeos or lacros"> - /** @private */ - printerStatusFlagEnabled_: { - type: Boolean, - value() { - return loadTimeData.getBoolean('showPrinterStatus'); - }, - readOnly: true, - }, - // </if> }, /** @private {string} */
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html index 44ad9e5..7ce6b313 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html
@@ -32,6 +32,7 @@ <template> <style include="cr-shared-style os-settings-icons settings-shared iron-flex"> #networkListDiv { + margin-top: var(--cr-section-vertical-margin); min-height: var(--settings-row-min-height); }
diff --git a/chrome/browser/sessions/session_data_service.cc b/chrome/browser/sessions/session_data_service.cc index 0313995..7439d85c 100644 --- a/chrome/browser/sessions/session_data_service.cc +++ b/chrome/browser/sessions/session_data_service.cc
@@ -175,8 +175,11 @@ void SessionDataService::OnCleanupAtSessionEndFinished( base::TimeTicks time_started) { SetStatusPref(Status::kDeletionFinished); - base::UmaHistogramMediumTimes("Session.SessionData.CleanupTime", - base::TimeTicks::Now() - time_started); + auto* policy = profile_->GetSpecialStoragePolicy(); + if (policy && policy->HasSessionOnlyOrigins()) { + base::UmaHistogramMediumTimes("Session.SessionData.CleanupTime", + base::TimeTicks::Now() - time_started); + } } void SessionDataService::SetForceKeepSessionState() {
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java index 1a77d534..dab3821 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java
@@ -171,12 +171,21 @@ onSelectorReady(INVALID_SELECTOR); return; } + if (ChromeFeatureList.isEnabled(ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION)) { + LinkToTextMetricsHelper.recordLinkToTextDiagnoseStatus( + LinkToTextMetricsHelper.LinkToTextDiagnoseStatus.REQUEST_SELECTOR); + } mProducer = mTab.getWebContents().getMainFrame().getInterfaceToRendererFrame( TextFragmentReceiver.MANAGER); mProducer.requestSelector(new TextFragmentReceiver.RequestSelectorResponse() { @Override public void call(String selector) { + if (ChromeFeatureList.isEnabled( + ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION)) { + LinkToTextMetricsHelper.recordLinkToTextDiagnoseStatus( + LinkToTextMetricsHelper.LinkToTextDiagnoseStatus.SELECTOR_RECEIVED); + } onSelectorReady(selector); } });
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsHelper.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsHelper.java index fabf03d..bee2ddc 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsHelper.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsHelper.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser.share.link_to_text; +import androidx.annotation.IntDef; + import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.browser.share.link_to_text.LinkToTextCoordinator.LinkGeneration; @@ -12,6 +14,16 @@ * Helper for metrics related to the Link to Text feature. */ public final class LinkToTextMetricsHelper { + @IntDef({LinkToTextDiagnoseStatus.SHOW_SHARINGHUB_FOR_HIGHLIGHT, + LinkToTextDiagnoseStatus.REQUEST_SELECTOR, LinkToTextDiagnoseStatus.SELECTOR_RECEIVED, + LinkToTextDiagnoseStatus.MAX}) + public @interface LinkToTextDiagnoseStatus { + int SHOW_SHARINGHUB_FOR_HIGHLIGHT = 0; + int REQUEST_SELECTOR = 1; + int SELECTOR_RECEIVED = 2; + int MAX = 3; + } + /** * Private constructor since all the methods in this class are static. */ @@ -41,4 +53,15 @@ RecordHistogram.recordEnumeratedHistogram("SharedHighlights.AndroidShareSheet.SharedState", linkGenerationStatus, LinkGeneration.MAX); } + + /** + * Records the metrics about the status of link to text flow. + * + * @param LinkToTextDiagnoseStatus The status of link to text flow. + */ + public static void recordLinkToTextDiagnoseStatus( + @LinkToTextDiagnoseStatus int linkToTextDiagnoseStatus) { + RecordHistogram.recordEnumeratedHistogram("SharedHighlights.LinkToTextDiagnoseStatus", + linkToTextDiagnoseStatus, LinkToTextDiagnoseStatus.MAX); + } } \ No newline at end of file
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java index eb8a04a5..6a2ae7ac 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinator.java
@@ -210,6 +210,11 @@ ShareParams params, ChromeShareExtras chromeShareExtras, long shareStartTime) { if (ChromeFeatureList.isEnabled(ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION) && chromeShareExtras.isUserHighlightedText()) { + if (!chromeShareExtras.isReshareHighlightedText()) { + LinkToTextMetricsHelper.recordLinkToTextDiagnoseStatus( + LinkToTextMetricsHelper.LinkToTextDiagnoseStatus + .SHOW_SHARINGHUB_FOR_HIGHLIGHT); + } String tabUrl = mTabProvider.get().isInitialized() ? mTabProvider.get().getUrl().getSpec() : ""; mLinkToTextCoordinator =
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java index 00e0499..9fe9485 100644 --- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java +++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java
@@ -35,9 +35,9 @@ private SigninPromoUtil() {} /** - * Launches the {@link SigninActivity} if it needs to be displayed. - * @param context The {@link Context} to launch the {@link SigninActivity}. - * @param syncConsentActivityLauncher launcher used to launch the {@link SigninActivity}. + * Launches the {@link SyncConsentActivity} if it needs to be displayed. + * @param context The {@link Context} to launch the {@link SyncConsentActivity}. + * @param syncConsentActivityLauncher launcher used to launch the {@link SyncConsentActivity}. * @param currentMajorVersion The current major version of Chrome. * @return Whether the signin promo is shown. */ @@ -56,13 +56,6 @@ return false; } - final AccountManagerFacade accountManagerFacade = - AccountManagerFacadeProvider.getInstance(); - if (!accountManagerFacade.isCachePopulated()) { - // Suppress the promo if the account list isn't available yet. - return false; - } - final Profile profile = Profile.getLastUsedRegularProfile(); if (IdentityServicesProvider.get().getIdentityManager(profile).getPrimaryAccountInfo( ConsentLevel.SYNC) @@ -77,21 +70,22 @@ return false; } - final List<Account> accounts = accountManagerFacade.tryGetGoogleAccounts(); - - if (accounts.isEmpty()) { + final AccountManagerFacade accountManagerFacade = + AccountManagerFacadeProvider.getInstance(); + Optional<List<Account>> accounts = accountManagerFacade.getGoogleAccounts(); + if (!accounts.isPresent() || accounts.get().isEmpty()) { // Don't show if the account list isn't available yet or there are no accounts in it. return false; } Optional<Boolean> canDefaultAccountOfferExtendedSyncPromos = - accountManagerFacade.canOfferExtendedSyncPromos(accounts.get(0)); + accountManagerFacade.canOfferExtendedSyncPromos(accounts.get().get(0)); if (ChromeFeatureList.isEnabled(ChromeFeatureList.MINOR_MODE_SUPPORT) && canDefaultAccountOfferExtendedSyncPromos.or(/* defaultValue= */ false)) { return false; } - final List<String> currentAccountNames = AccountUtils.toAccountNames(accounts); + final List<String> currentAccountNames = AccountUtils.toAccountNames(accounts.get()); final Set<String> previousAccountNames = prefManager.getSigninPromoLastAccountNames(); if (previousAccountNames != null && previousAccountNames.containsAll(currentAccountNames)) { // Don't show if no new accounts have been added after the last time promo was shown.
diff --git a/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java b/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java index 7bd7cf70..6bb83ab 100644 --- a/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java +++ b/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java
@@ -110,11 +110,10 @@ @Test public void whenAccountCacheNotPopulated() { mPrefManager.setSigninPromoLastShownVersion(38); - when(mFakeAccountManagerFacade.isCachePopulated()).thenReturn(false); + when(mFakeAccountManagerFacade.getGoogleAccounts()).thenReturn(Optional.absent()); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); Assert.assertEquals(38, mPrefManager.getSigninPromoLastShownVersion()); - verify(mFakeAccountManagerFacade, never()).tryGetGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); } @@ -123,7 +122,7 @@ Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); Assert.assertEquals(42, mPrefManager.getSigninPromoLastShownVersion()); - verify(mFakeAccountManagerFacade, never()).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade, never()).getGoogleAccounts(); } @Test @@ -135,7 +134,7 @@ mPrefManager.setSigninPromoLastShownVersion(38); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade, never()).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade, never()).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); } @@ -145,7 +144,7 @@ mPrefManager.setSigninPromoLastShownVersion(38); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade, never()).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade, never()).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); } @@ -154,7 +153,7 @@ mPrefManager.setSigninPromoLastShownVersion(41); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade, never()).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade, never()).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); } @@ -164,7 +163,7 @@ mPrefManager.setSigninPromoLastShownVersion(38); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); } @@ -174,7 +173,7 @@ // Old implementation hasn't been storing account list Assert.assertTrue(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade).getGoogleAccounts(); verify(mLauncherMock).launchActivityIfAllowed(mContext, SigninAccessPoint.SIGNIN_PROMO); Assert.assertEquals(CURRENT_MAJOR_VERSION, mPrefManager.getSigninPromoLastShownVersion()); Assert.assertArrayEquals(mPrefManager.getSigninPromoLastAccountNames().toArray(), @@ -189,7 +188,7 @@ Set.of(AccountManagerTestRule.TEST_ACCOUNT_EMAIL)); Assert.assertTrue(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade).getGoogleAccounts(); verify(mLauncherMock).launchActivityIfAllowed(mContext, SigninAccessPoint.SIGNIN_PROMO); Assert.assertEquals(CURRENT_MAJOR_VERSION, mPrefManager.getSigninPromoLastShownVersion()); Assert.assertEquals(2, mPrefManager.getSigninPromoLastAccountNames().size()); @@ -202,7 +201,7 @@ Set.of(AccountManagerTestRule.TEST_ACCOUNT_EMAIL)); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); Assert.assertEquals(40, mPrefManager.getSigninPromoLastShownVersion()); Assert.assertArrayEquals(mPrefManager.getSigninPromoLastAccountNames().toArray(), @@ -216,7 +215,7 @@ Set.of(AccountManagerTestRule.TEST_ACCOUNT_EMAIL, "test2@gmail.com")); Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded( mContext, mLauncherMock, CURRENT_MAJOR_VERSION)); - verify(mFakeAccountManagerFacade).tryGetGoogleAccounts(); + verify(mFakeAccountManagerFacade).getGoogleAccounts(); verify(mLauncherMock, never()).launchActivityIfAllowed(any(), anyInt()); Assert.assertEquals(40, mPrefManager.getSigninPromoLastShownVersion()); Assert.assertEquals(2, mPrefManager.getSigninPromoLastAccountNames().size());
diff --git a/chrome/browser/speech/extension_api/tts_extension_apitest.cc b/chrome/browser/speech/extension_api/tts_extension_apitest.cc index 5deedbd..e26c2cc5 100644 --- a/chrome/browser/speech/extension_api/tts_extension_apitest.cc +++ b/chrome/browser/speech/extension_api/tts_extension_apitest.cc
@@ -497,7 +497,7 @@ // TODO(katie): Expect the deprecated gender warning rather than ignoring // warnings. - ASSERT_TRUE(RunExtensionTest({.name = "tts_engine/register_engine"}, + ASSERT_TRUE(RunExtensionTest("tts_engine/register_engine", {}, {.ignore_manifest_warnings = true})) << message_; }
diff --git a/chrome/browser/sync/profile_sync_service_android.cc b/chrome/browser/sync/profile_sync_service_android.cc index 6ed0622..63cd06057 100644 --- a/chrome/browser/sync/profile_sync_service_android.cc +++ b/chrome/browser/sync/profile_sync_service_android.cc
@@ -271,6 +271,13 @@ ->IsTrustedVaultKeyRequiredForPreferredDataTypes(); } +jboolean ProfileSyncServiceAndroid::IsTrustedVaultRecoverabilityDegraded( + JNIEnv* env) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + return sync_service_->GetUserSettings() + ->IsTrustedVaultRecoverabilityDegraded(); +} + jboolean ProfileSyncServiceAndroid::IsUsingExplicitPassphrase(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsUsingExplicitPassphrase();
diff --git a/chrome/browser/sync/profile_sync_service_android.h b/chrome/browser/sync/profile_sync_service_android.h index aa85064..10d7c02 100644 --- a/chrome/browser/sync/profile_sync_service_android.h +++ b/chrome/browser/sync/profile_sync_service_android.h
@@ -69,6 +69,7 @@ jboolean IsPassphraseRequiredForPreferredDataTypes(JNIEnv* env); jboolean IsTrustedVaultKeyRequired(JNIEnv* env); jboolean IsTrustedVaultKeyRequiredForPreferredDataTypes(JNIEnv* env); + jboolean IsTrustedVaultRecoverabilityDegraded(JNIEnv* env); jboolean IsUsingExplicitPassphrase(JNIEnv* env); jint GetPassphraseType(JNIEnv* env); void SetEncryptionPassphrase(
diff --git a/chrome/browser/themes/theme_color_policy_handler_unittest.cc b/chrome/browser/themes/theme_color_policy_handler_unittest.cc index d02d596..d7d1dfda 100644 --- a/chrome/browser/themes/theme_color_policy_handler_unittest.cc +++ b/chrome/browser/themes/theme_color_policy_handler_unittest.cc
@@ -57,11 +57,6 @@ CheckInvalidPolicy(theme_color_value); } - void CheckInvalidTypePolicy(const base::Value& policy_value) { - EXPECT_FALSE(CheckPolicy(policy_value.Clone())); - EXPECT_NE(0U, errors_.size()); - } - ThemeColorPolicyHandler handler_; PolicyErrorMap errors_; PolicyMap policies_;
diff --git a/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc b/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc index 5ab6c6e..26ed4f6 100644 --- a/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc +++ b/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc
@@ -154,11 +154,8 @@ env, reinterpret_cast<intptr_t>(this), dialog_title, instructions, confirm, ResourceMapper::MapToJavaDrawableId(controller_->GetCvcImageRid()), - base::FeatureList::IsEnabled( - features::kAutofillDownstreamCvcPromptUseGooglePayLogo) - ? ResourceMapper::MapToJavaDrawableId( - controller_->GetGooglePayImageRid()) - : -1, + ResourceMapper::MapToJavaDrawableId( + controller_->GetGooglePayImageRid()), controller_->IsCardLocal(), controller_->ShouldRequestExpirationDate(), controller_->GetStoreLocallyStartState(),
diff --git a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc index 261c7d70..9ee3c73 100644 --- a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc +++ b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc
@@ -17,6 +17,7 @@ #include "components/infobars/content/content_infobar_manager.h" #include "ui/gfx/android/java_bitmap.h" #include "ui/gfx/image/image.h" +#include "ui/gfx/image/image_skia.h" #include "url/gurl.h" using base::android::ScopedJavaLocalRef; @@ -24,22 +25,17 @@ namespace autofill { std::unique_ptr<infobars::InfoBar> CreateSaveCardInfoBarMobile( - std::unique_ptr<AutofillSaveCardInfoBarDelegateMobile> delegate, - absl::optional<AccountInfo> account_info) { - return std::make_unique<AutofillSaveCardInfoBar>(std::move(delegate), - account_info); + std::unique_ptr<AutofillSaveCardInfoBarDelegateMobile> delegate) { + return std::make_unique<AutofillSaveCardInfoBar>(std::move(delegate)); } } // namespace autofill AutofillSaveCardInfoBar::AutofillSaveCardInfoBar( - std::unique_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> delegate, - absl::optional<AccountInfo> account_info) - : infobars::ConfirmInfoBar(std::move(delegate)) { - account_info_ = account_info; -} + std::unique_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> delegate) + : infobars::ConfirmInfoBar(std::move(delegate)) {} -AutofillSaveCardInfoBar::~AutofillSaveCardInfoBar() {} +AutofillSaveCardInfoBar::~AutofillSaveCardInfoBar() = default; void AutofillSaveCardInfoBar::OnLegalMessageLinkClicked(JNIEnv* env, jobject obj, @@ -68,9 +64,16 @@ base::android::ConvertUTF16ToJavaString( env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL)), delegate->IsGooglePayBrandingEnabled(), - account_info_.has_value() - ? ConvertToJavaAccountInfo(env, account_info_.value()) - : nullptr); + delegate->displayed_target_account_email().empty() + ? nullptr + : base::android::ConvertUTF16ToJavaString( + env, delegate->displayed_target_account_email()), + delegate->displayed_target_account_avatar().IsEmpty() + ? nullptr + : gfx::ConvertToJavaBitmap( + *delegate->displayed_target_account_avatar() + .AsImageSkia() + .bitmap())); Java_AutofillSaveCardInfoBar_setDescriptionText( env, java_delegate,
diff --git a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.h b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.h index 4d5ba7b8..1e6ef9d 100644 --- a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.h +++ b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.h
@@ -11,7 +11,6 @@ #include "base/macros.h" #include "components/infobars/android/confirm_infobar.h" -#include "components/signin/public/identity_manager/account_info.h" namespace autofill { class AutofillSaveCardInfoBarDelegateMobile; @@ -21,8 +20,8 @@ class AutofillSaveCardInfoBar : public infobars::ConfirmInfoBar { public: explicit AutofillSaveCardInfoBar( - std::unique_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> delegate, - absl::optional<AccountInfo> account_info); + std::unique_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> + delegate); ~AutofillSaveCardInfoBar() override; @@ -43,8 +42,6 @@ // are stored in /chrome and /components cannot depend on /chrome. int GetGooglePayBrandingIconId(); - absl::optional<AccountInfo> account_info_; - DISALLOW_COPY_AND_ASSIGN(AutofillSaveCardInfoBar); };
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index 587d855..75416271 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1893,6 +1893,12 @@ <message name="IDS_HINT_SYNC_AUTH_ERROR" desc="Hint message to resolve sync auth error."> Sign in again to start sync </message> + <message name="IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_EVERYTHING" desc="Hint message to resolve sync degraded recoverability, for users that have not chosen to encrypt all sync data"> + Make sure you can always access your sync data + </message> + <message name="IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_PASSWORDS" desc="Hint message to resolve sync degraded recoverability, for users that have chosen to encrypt all sync data."> + Make sure you can always access your saved passwords + </message> <message name="IDS_HINT_SYNC_RETRIEVE_KEYS_FOR_EVERYTHING" desc="Hint message to resolve sync encryption error, required to resume sync."> To start sync, verify it's you </message> @@ -4198,13 +4204,13 @@ <!-- Sms Fetcher --> <message name="IDS_SMS_FETCHER_NOTIFICATION_TITLE_UNKNOWN_DEVICE" translateable="false" desc="Title text shown when the browser has received an SMS on the user's behalf when the source device name is unknown."> - Tap to submit code on your remote device + Allow Chrome to submit code on your remote device? </message> <message name="IDS_SMS_FETCHER_NOTIFICATION_TITLE" translateable="false" desc="Title text shown when the browser has received an SMS on the user's behalf."> - Tap to submit code on your <ph name="OS">%1$s<ex>mac</ex></ph> + Allow Chrome to submit code on your <ph name="OS">%1$s<ex>mac</ex></ph>? </message> <message name="IDS_SMS_FETCHER_NOTIFICATION_TEXT" translateable="false" desc="Content text shown when the browser has received an SMS on the user's behalf."> - <ph name="ONE_TIME_CODE">%1$s<ex>123</ex></ph> is your code for <ph name="ORIGIN">%2$s<ex>example.com</ex></ph> + Tap OK to submit <ph name="ONE_TIME_CODE">%1$s<ex>123</ex></ph> on <ph name="ORIGIN">%2$s<ex>example.com</ex></ph> </message> <!-- Interventions -->
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_EVERYTHING.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_EVERYTHING.png.sha1 new file mode 100644 index 0000000..7d60ad8 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_EVERYTHING.png.sha1
@@ -0,0 +1 @@ +5466a01f92a571bd7fcd8c3cb2993eaff319ff96 \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_PASSWORDS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_PASSWORDS.png.sha1 new file mode 100644 index 0000000..b5d97994 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_HINT_SYNC_RECOVERABILITY_DEGRADED_FOR_PASSWORDS.png.sha1
@@ -0,0 +1 @@ +ce6d515cd386bee04d6f454783ab17047e9f17c4 \ No newline at end of file
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 3183e36..349080e 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sekondes oor</translation> <translation id="2779651927720337254">misluk</translation> <translation id="2781151931089541271">1 sekonde oor</translation> +<translation id="2788468313014644040">Groepgetal</translation> <translation id="2801022321632964776">Dateer op om jou taal in die jongste weergawe van Chrome kry</translation> <translation id="2805756323405976993">Programme</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opsies is naby die bokant van die skerm beskikbaar</translation> <translation id="4062305924942672200">Regsinligting</translation> -<translation id="4082818367361753283">Groep-ID</translation> <translation id="4084682180776658562">Boekmerk</translation> <translation id="4084712963632273211">Vanaf <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />afgelewer deur Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Vee programdata uit?</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 6e356ff..48a6eee 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> ሰከንዶች ይቀራሉ</translation> <translation id="2779651927720337254">አልተሳካም</translation> <translation id="2781151931089541271">1 ሰከንድ ይቀራል</translation> +<translation id="2788468313014644040">የቡድን ቁጥር</translation> <translation id="2801022321632964776">ቋንቋዎን በቅርብ ጊዜው የChrome ስሪት ለማግኘት ያዘምኑ</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">ቀይ ቡናማ</translation> <translation id="4060598801229743805">አማራጮች ከማያ ገጹ ግርጌ አጠገብ ይገኛሉ</translation> <translation id="4062305924942672200">የህግ መረጃ</translation> -<translation id="4082818367361753283">የቡድን መታወቂያ</translation> <translation id="4084682180776658562">ዕልባት</translation> <translation id="4084712963632273211">ከ<ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />በGoogle የተላከ<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">የመተግበሪያ ውሂብ ይሰረዝ?</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 2f86b5c..4a78ed49 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ar"> +<translation id="1016498331642356377">يتيح لك هذا الزر إجراء بحث صوتي بسرعة. ولتعديل هذا الاختصار، انقر مع الاستمرار.</translation> <translation id="1028699632127661925">جارٍ الإرسال إلى <ph name="DEVICE_NAME" />...</translation> <translation id="103269572468856066">محو البيانات هنا أيضًا؟</translation> <translation id="1036348656032585052">إيقاف</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">نص</translation> <translation id="2068748236079642969">مشاهدة الفيديو التالي</translation> <translation id="2074143993849053708">تم إغلاق واجهة المستخدم الخاصة بالموافقة على استخدام ميزة "البحث الصوتي" في "مساعد Google".</translation> +<translation id="2075835334924942448">ستظهر الأخبار هنا</translation> <translation id="2082238445998314030">النتيجة <ph name="RESULT_NUMBER" /> من <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">المزامنة والتخصيص على الأجهزة</translation> <translation id="2100273922101894616">تسجيل الدخول تلقائيًا</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">تم توفير <ph name="DATA" /></translation> <translation id="213279576345780926">تم إغلاق <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">الإضافة إلى الشاشة الرئيسية</translation> +<translation id="2141396931810938595">حسب معدّل استخدامك</translation> <translation id="214888715418183969">اختَر ما تريد مشاركته في Chrome. وسيتم استخدام المقاييس التي تشاركها للمساعدة في تحسين ميزات Chrome وأدائه وثباته.</translation> <translation id="2154484045852737596">تعديل البطاقة</translation> <translation id="2154710561487035718">نسخ عنوان URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{ملف صوتي واحد (#)}zero{# ملف صوتي}two{ملفان صوتيان (#)}few{# ملفات صوتية}many{# ملفًا صوتيًا}other{# ملف صوتي}}</translation> <translation id="2656405586795711023">تطبيقات الويب</translation> <translation id="2689830683995595741">يعني استخدامك لمتصفّح Chrome موافقتك على <ph name="BEGIN_LINK1" />بنود خدمة Google<ph name="END_LINK1" /> و<ph name="BEGIN_LINK2" />بنود الخدمة الإضافية لكل من متصفّح Google Chrome و"نظام التشغيل Chrome"<ph name="END_LINK2" />. وينطبق ذلك أيضًا على <ph name="BEGIN_LINK3" />إشعار الخصوصية لحسابات Google المُدارة من خلال Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">ميزة جديدة: يمكنك مشاركة رابط يؤدي إلى هذا النص.</translation> <translation id="2704606927547763573">تم النسخ</translation> <translation id="2707726405694321444">إعادة تحميل الصفحة</translation> <translation id="271033894570825754">جديدة</translation> @@ -274,8 +278,10 @@ <translation id="2777555524387840389">عدد الثواني المتبقية: <ph name="SECONDS" /></translation> <translation id="2779651927720337254">تعذَّر التنزيل</translation> <translation id="2781151931089541271">يتبقى ثانية واحدة</translation> +<translation id="2788468313014644040">رقم المجموعة</translation> <translation id="2801022321632964776">يمكنك إجراء التحديث للحصول على لغتك في أحدث إصدار من Chrome.</translation> <translation id="2805756323405976993">التطبيقات</translation> +<translation id="2806840421670364300">التعلُّم الموحّد للمجموعات النموذجية (FLoC)</translation> <translation id="281504910091592009">بإمكانك عرض كلمات المرور المحفوظة وإدارتها في <ph name="BEGIN_LINK" />حسابك على Google<ph name="END_LINK" />.</translation> <translation id="2818669890320396765">للحصول على الإشارات المرجعية على جميع أجهزتك، يُرجى تسجيل الدخول وتفعيل المزامنة.</translation> <translation id="2827278682606527653">Feed card menu half height</translation> @@ -304,6 +310,7 @@ <translation id="2956410042958133412">تتم إدارة هذا الحساب بواسطة <ph name="PARENT_NAME_1" /> و <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{صفحة واحدة (<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" />) غير مقروءة}zero{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحة غير مقروءة}two{صفحتان (<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" />) غير مقروءتَين}few{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحات غير مقروءة}many{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحة غير مقروءة}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحة غير مقروءة}}</translation> <translation id="2979025552038692506">علامة تبويب محددة للتصفح المتخفي</translation> +<translation id="2979448359891869301">يتعذّر توسيع نافذة لقطة الشاشة. حاوِل مرة أخرى عندما يتوفّر قدر كافٍ من الذاكرة.</translation> <translation id="2987620471460279764">النصوص التي تمت مشاركتها من جهاز آخر</translation> <translation id="2989523299700148168">تم الانتقال إليها مؤخرًا</translation> <translation id="2992473221983447149">أوصاف الصور</translation> @@ -345,6 +352,7 @@ <translation id="3265534588625245297">إدارة المواقع الإلكترونية التي تتابعها</translation> <translation id="3269093882174072735">تحميل الصورة</translation> <translation id="3269956123044984603">للحصول على علامات التبويب من أجهزتك الأخرى، فعِّل "المزامنة التلقائية للبيانات" في إعدادات حساب Android.</translation> +<translation id="3280562213547448728">بحث صوتي</translation> <translation id="3282568296779691940">تسجيل الدخول إلى Chrome</translation> <translation id="3284510035090979597">المساعدة الاستباقية</translation> <translation id="3285080554353377245">فيديوهات حول كيفية استخدام Chrome</translation> @@ -395,6 +403,7 @@ <translation id="3563767357928833671">تم عرض محتوى الحافظة.</translation> <translation id="3566923219790363270">لا يزال Chrome يستعد للواقع الافتراضي. يُرجى إعادة تشغيل Chrome لاحقًا.</translation> <translation id="3568688522516854065">للحصول على علامات التبويب من أجهزتك الأخرى، يُرجى تسجيل الدخول وتفعيل المزامنة.</translation> +<translation id="3577473026931028326">حدث خطأ. يُرجى إعادة المحاولة.</translation> <translation id="3587482841069643663">الكل</translation> <translation id="3587596251841506391">المساعدة في تحسين الأمان على الويب</translation> <translation id="3602290021589620013">معاينة</translation> @@ -479,6 +488,7 @@ <translation id="4195643157523330669">الفتح في علامة تبويب جديدة</translation> <translation id="4198423547019359126">ما من مواقع تنزيل متاحة</translation> <translation id="4209895695669353772">للحصول على محتوى مُخصَّص اقترحته Google، يُرجى تفعيل المزامنة.</translation> +<translation id="4225895483398857530">اختصارات شريط الأدوات</translation> <translation id="4242533952199664413">فتح الإعدادات</translation> <translation id="4248098802131000011">لحماية كلمة المرور من عمليات اختراق البيانات ومشاكل الأمان الأخرى</translation> <translation id="4250229828105606438">لقطة شاشة</translation> @@ -746,12 +756,14 @@ <translation id="5864419784173784555">في انتظار تنزيل آخر…</translation> <translation id="5865733239029070421">يُرسِل إحصاءات الاستخدام وتقارير الأعطال إلى Google تلقائيًا.</translation> <translation id="5869522115854928033">كلمات المرور المحفوظة</translation> +<translation id="587735546353481577">لمتابعة موقع إلكتروني، انتقِل إلى الموقع الإلكتروني وافتح قائمة Chrome وانقر على "متابعة".</translation> <translation id="5880748256563468367">الانتقال إلى الخلاصة</translation> <translation id="5884076754568147479">لمساعدتك على إنجاز المهام، ستتلقى Google عناوين URL للمواقع الإلكترونية ومحتواها عند استخدامك "مساعد Google" على تلك المواقع، بالإضافة إلى المعلومات التي يتم إرسالها من خلال "مساعد Google".</translation> <translation id="5919204609460789179">تحديث <ph name="PRODUCT_NAME" /> لبدء المزامنة</translation> <translation id="5937580074298050696">تم توفير <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">إعادة الضبط</translation> <translation id="5942872142862698679">استخدام محرك Google للبحث</translation> +<translation id="5945035219773565305">الاقتراح الحالي: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">الاطّلاع على صفحة العرض المباشر</translation> <translation id="5952764234151283551">يُرسِل عنوان URL لصفحة تحاول الوصول إليها إلى Google.</translation> <translation id="5956665950594638604">فتح مركز مساعدة Chrome في علامة تبويب جديدة</translation> @@ -765,6 +777,10 @@ <translation id="6000203700195075278">المتابعة مجدّدًا</translation> <translation id="6002623704405939939">لمحو <ph name="BEGIN_LINK1" />سجلّ البحث<ph name="END_LINK1" /> أو غيره من السجلّات، انتقِل إلى صفحة <ph name="BEGIN_LINK2" />نشاطي على Google<ph name="END_LINK2" />.</translation> <translation id="6005538289190791541">كلمة المرور المُقترحَة</translation> +<translation id="6032091552407840792">لا يتوفّر هذا الإصدار التجريبي سوى في <ph name="BEGIN_LINK" />بعض المناطق<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">من خلال <ph name="BEGIN_LINK" />مبادرة حماية الخصوصية<ph name="END_LINK" />، نعمل في Chrome على تطوير تقنيات جديدة لحمايتك من آليات التتبُّع في جميع المواقع الإلكترونية مع الحفاظ على محتوى شبكة الإنترنت المفتوحة المتاحة للجميع. + +لا تزال إصدارات "مبادرة حماية الخصوصية" التجريبية في مرحلة التطوير المستمر ولا تتوفّر إلا في مناطق محدَّدة. في الوقت الحالي، قد تحاول المواقع الإلكترونية تجربة "مبادرة حماية الخصوصية" أثناء استخدام تقنيات الويب الحالية مثل ملفات تعريف الارتباط التابعة لجهات خارجية.</translation> <translation id="6036057147555329831">وحدة الرعاية المركزية الإضافية</translation> <translation id="6039379616847168523">الانتقال السريع إلى علامة التبويب التالية</translation> <translation id="6040143037577758943">إغلاق</translation> @@ -830,6 +846,7 @@ <translation id="6407224748847589805">تعذّر الاتصال بجهاز الكمبيوتر. يمكنك تجربة خيار آخر لإثبات الهوية.</translation> <translation id="6410404864818553978">بيانات الاستخدام الأساسية</translation> <translation id="6410883413783534063">يمكنك فتح علامات تبويب لزيارة صفحات مختلفة في آنٍ واحد.</translation> +<translation id="6411219469806822692">لا يمكن السحب أعلى من ذلك. يمكنك بدء سحب نافذة لقطة الشاشة من موضع أعلى في الصفحة.</translation> <translation id="6412673304250309937">يعمل على التحقّق من عناوين URL التي تحتوي على قائمة بمواقع إلكترونية غير آمنة مُخزّنة في Chrome. وإذا حاول موقع إلكتروني سرقة كلمة المرور أو إذا نزّلت ملفًا ضارًا، قد يرسل متصفّح Chrome أيضًا عناوين URL تتضمّن أجزاء من محتوى الصفحة إلى "التصفّح الآمن".</translation> <translation id="641643625718530986">طباعة…</translation> <translation id="6427112570124116297">ترجمة الموقع الإلكتروني</translation> @@ -892,10 +909,12 @@ <translation id="671481426037969117">انقضى وقت موقّت <ph name="FQDN" />، وسيبدأ عمله مرّةً أخرى غدًا.</translation> <translation id="6738516213925468394">تم ترميز بياناتك باستخدام <ph name="BEGIN_LINK" />عبارة مرور المزامنة<ph name="END_LINK" /> في <ph name="TIME" />. يُرجى إدخالها لبدء المزامنة.</translation> <translation id="6738867403308150051">جارٍ التنزيل…</translation> +<translation id="6751521182688001123">يتيح لك هذا الزر فتح علامة تبويب جديدة بسرعة. ولتعديل هذا الاختصار، انقر مع الاستمرار.</translation> <translation id="6767294960381293877">قائمة الأجهزة التي يمكن مشاركة علامة تبويب معها، مفتوحة على طول النصف السفلي من الشاشة.</translation> <translation id="6783942555455976443">حفظ هذه الصفحة لوقتٍ لاحق والحصول على تذكير</translation> <translation id="6811034713472274749">الصفحة جاهزة للعرض</translation> <translation id="6813446258015311409">تسجيل الدخول إلى Chrome، تم فتح البطاقة السفلية.</translation> +<translation id="6817747507826986771">يتيح لك هذا الزر مشاركة هذه الصفحة بسرعة. ولتعديل هذا الاختصار، انقر مع الاستمرار.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">تم اختيار علامة التبويب <ph name="TAB_TITLE" />.</translation> <translation id="6846298663435243399">جارٍ التحميل…</translation> @@ -966,6 +985,7 @@ <translation id="7333031090786104871">لا تزال عملية إضافة الموقع الإلكتروني السابق جارية</translation> <translation id="7339898014177206373">نافذة جديدة</translation> <translation id="7340958967809483333">خيارات الاقتراحات</translation> +<translation id="7352339641508007922">اسحب النافذة للحصول على لقطة شاشة طويلة.</translation> <translation id="7352651011704765696">حدث خطأ ما</translation> <translation id="7352939065658542140">فيديو</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{مشاركة عنصر واحد محدد}zero{مشاركة # عنصر محدد}two{مشاركة عنصرين (#) محددين}few{مشاركة # عناصر محددة}many{مشاركة # عنصرًا محددًا}other{مشاركة # عنصر محدد}}</translation> @@ -1058,6 +1078,7 @@ <translation id="7876243839304621966">إزالة الكل</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{لديك صفحة واحدة (<ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" />) غير مقروءة}zero{لديك <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحة غير مقروءة}two{لديك صفحتان (<ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" />) غير مقروءتَين}few{لديك <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحات غير مقروءة}many{لديك <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحة غير مقروءة}other{لديك <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحة غير مقروءة}}</translation> <translation id="7882131421121961860">لم يتم العثور على أي سجلّ</translation> +<translation id="7884346424584885269">يحتاج Chrome إلى إذن للبحث عن الأجهزة المجاورة. <ph name="BEGIN_LINK" />تعديل الأذونات<ph name="END_LINK" /></translation> <translation id="7886917304091689118">قيد التشغيل في Chrome</translation> <translation id="789763218334337857">كيفية استخدام Chrome</translation> <translation id="7903184275147100332">يُرجى الانتظار قليلًا</translation> @@ -1151,6 +1172,11 @@ <translation id="8461694314515752532">ترميز البيانات المتزامنة باستخدام عبارة مرور المزامنة الخاصة بك</translation> <translation id="8466613982764129868">يُرجى التأكُّد من اتصال الجهاز <ph name="TARGET_DEVICE_NAME" /> بالإنترنت.</translation> <translation id="8473863474539038330">العناوين والمزيد</translation> +<translation id="8481921391193215807">عند تفعيل "مبادرة حماية الخصوصية"، قد تستخدم المواقع الإلكترونية التقنيات الموضحة هنا للحفاظ على خصوصية المستخدمين مع توفير المحتوى والخدمات لهم. وتشمل هذه التقنيات بدائل عن آليات التتبُّع في المواقع الإلكترونية. قد تتم إضافة إصدارات تجريبية بمرور الوقت. + +<ph name="BEGIN_LIST_ITEM1" />يمكن للمعلِنين والناشرين استخدام تقنية "التعلُّم الموحّد للمجموعات النموذجية" (FLoC).<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />يمكن للمعلِنين والناشرين تحديد مدى فعالية الإعلانات بدون الحاجة إلى تتبّع نشاطك في المواقع الإلكترونية.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">تم تفعيل ميزات الإصدار التجريبي.</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">فتح صفحة السجل</translation> @@ -1185,7 +1211,9 @@ <translation id="8662811608048051533">الخروج من معظم المواقع الإلكترونية.</translation> <translation id="8664979001105139458">اسم الملف موجود</translation> <translation id="8676789164135894283">عمليات التحقّق من تسجيل الدخول</translation> +<translation id="867767487203716855">التحديث التالي</translation> <translation id="8683039184091909753">صورة</translation> +<translation id="8683081248374354009">إعادة تحديد المجموعة</translation> <translation id="8687353297350450808">{N_BARS,plural, =1{مستوى قوة الإشارة: شريط واحد (#)}zero{مستوى قوة الإشارة: # شريط}two{مستوى قوة الإشارة: شريطان (#)}few{مستوى قوة الإشارة: # أشرطة}many{مستوى قوة الإشارة: # شريطًا}other{مستوى قوة الإشارة: # شريط}}</translation> <translation id="869891660844655955">تاريخ انتهاء الصلاحية</translation> <translation id="8699120352855309748">عدم اقتراح ترجمة لهذه اللغات</translation> @@ -1260,6 +1288,7 @@ <translation id="9204836675896933765">ملف واحد متبقٍ</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">لا يمكن إجراء المكالمات</translation> +<translation id="9212845824145208577">لا يمكن السحب أدنى من ذلك. يمكنك بدء سحب نافذة لقطة الشاشة من موضع أدنى في الصفحة.</translation> <translation id="9219103736887031265">الصور</translation> <translation id="926205370408745186">إزالة نشاط Chrome من الرفاهية الرقمية</translation> <translation id="927968626442779827">استخدِم "الوضع البسيط" على Google Chrome.</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 455d7e03..f277902 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="as"> +<translation id="1016498331642356377">আপোনাৰ কণ্ঠস্বৰৰ দ্বাৰা ক্ষিপ্ৰভাৱে সন্ধান কৰক। এই শ্বৰ্টকাটটো সম্পাদনা কৰিবলৈ, স্পৰ্শ কৰি ধৰি ৰাখক।</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" />লৈ পঠিয়াই থকা হৈছে...</translation> <translation id="103269572468856066">এই ছাইট আৰু এপৰ পৰাও ডেটা মচিবনে?</translation> <translation id="1036348656032585052">অফ কৰক</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">পাঠ</translation> <translation id="2068748236079642969">পৰৱৰ্তী ভিডিঅ'টো চাওক</translation> <translation id="2074143993849053708">Assistantৰ কণ্ঠধ্বনিৰদ্বাৰা সন্ধানৰ সন্মতিৰ ইউআই বন্ধ কৰা হৈছে</translation> +<translation id="2075835334924942448">আপুনি ইয়াত কাহিনী পাব</translation> <translation id="2082238445998314030">ফলাফল <ph name="TOTAL_RESULTS" />ৰ ভিতৰত <ph name="RESULT_NUMBER" /></translation> <translation id="2096012225669085171">সকলো ডিভাইচতে ছিংক আৰু ব্যক্তিগতকৰণ কৰক</translation> <translation id="2100273922101894616">স্বয়ংক্ৰিয়ভাৱে ছাইন ইন কৰক</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> ছেভ কৰা হৈছে</translation> <translation id="213279576345780926">বন্ধ <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">গৃহ স্ক্ৰীণত যোগ কৰক</translation> +<translation id="2141396931810938595">আপোনাৰ ব্যৱহাৰৰ ওপৰত আধাৰিত</translation> <translation id="214888715418183969">আপুনি Chromeৰ সৈতে কি সহজে শ্বেয়াৰ কৰিব পাৰে সেয়া বাছনি কৰক। Chromeৰ সুবিধা, পাৰদৰ্শিতা আৰু স্থিৰতা উন্নত কৰাত সহায় কৰিবলৈ আপুনি শ্বেয়াৰ কৰা মেট্ৰিক্স ব্যৱহাৰ কৰা হ’ব।</translation> <translation id="2154484045852737596">কাৰ্ড সম্পাদনা কৰক</translation> <translation id="2154710561487035718">URL প্ৰতিলিপি কৰক</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{#টা অডিঅ' ফাইল}one{#টা অডিঅ' ফাইল}other{#টা অডিঅ' ফাইল}}</translation> <translation id="2656405586795711023">ৱেব এপ্সমূহ</translation> <translation id="2689830683995595741">Chrome ব্যৱহাৰ কৰি আপুনি <ph name="BEGIN_LINK1" />Google সেৱাৰ চৰ্তাৱলী<ph name="END_LINK1" /> আৰু <ph name="BEGIN_LINK2" />Google Chrome আৰু Chrome OSৰ সেৱাৰ অতিৰিক্ত চৰ্তাৱলী<ph name="END_LINK2" />ত সন্মতি দিয়ে। <ph name="BEGIN_LINK3" />Family Linkৰ জৰিয়তে পৰিচালনা কৰা Google একাউণ্টৰ বাবে গোপনীয়তাৰ জাননী<ph name="END_LINK3" />ও প্ৰযোজ্য হয়।</translation> +<translation id="2702516483241149200">নতুন: এই পাঠটোলৈ স্ক্ৰ’ল কৰা এটা লিংক শ্বেয়াৰ কৰা</translation> <translation id="2704606927547763573">প্ৰতিলিপি কৰা হ'ল</translation> <translation id="2707726405694321444">পৃষ্ঠাটো ৰিফ্ৰেশ্ব কৰক</translation> <translation id="271033894570825754">নতুন</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> ছেকেণ্ড বাকী আছে</translation> <translation id="2779651927720337254">ডাউনল'ড কৰিব পৰা নগ'ল</translation> <translation id="2781151931089541271">১ ছেকেণ্ড বাকী আছে</translation> +<translation id="2788468313014644040">গোটৰ সদস্য</translation> <translation id="2801022321632964776">Chromeৰ সকলোতকৈ শেহতীয়া সংস্কৰণটোত নিজৰ ভাষাটো পাবলৈ আপগ্ৰেড কৰক</translation> <translation id="2805756323405976993">এপ্</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412"><ph name="PARENT_NAME_1" /> আৰু <ph name="PARENT_NAME_2" />এ এই একাউণ্টটো পৰিচালনা কৰে।</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> খন নপঢ়া পৃষ্ঠা}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> খন নপঢ়া পৃষ্ঠা}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> খন নপঢ়া পৃষ্ঠা}}</translation> <translation id="2979025552038692506">বাছনি কৰা ইনকগনিট’ টেব</translation> +<translation id="2979448359891869301">দীঘল স্ক্ৰীনশ্বট ল’ব নোৱাৰি। আপোনাৰ ফ’নটো ব্যস্ত নথকা সময়ত পুনৰ চেষ্টা কৰক।</translation> <translation id="2987620471460279764">অন্য ডিভাইচৰ পৰা শ্বেয়াৰ কৰা পাঠ</translation> <translation id="2989523299700148168">শেহতীয়াকৈ চোৱা</translation> <translation id="2992473221983447149">প্ৰতিচ্ছবিৰ বিৱৰণ</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">আপুনি ফ'ল' কৰা ছাইটসমূহ পৰিচালনা কৰক</translation> <translation id="3269093882174072735">ছবি ল’ড কৰক</translation> <translation id="3269956123044984603">আপোনাৰ অন্য ডিভাইচৰ টেব এইটোত পাবলৈ Android একাউণ্ট ছেটিঙত "ডেটা স্বয়ংক্রিয়ভাৱে ছিংক কৰক" অন কৰক।</translation> +<translation id="3280562213547448728">কণ্ঠধ্বনিৰ দ্বাৰা সন্ধান</translation> <translation id="3282568296779691940">Chromeত ছাইন-ইন কৰক</translation> <translation id="3284510035090979597">আগতীয়া সহায়</translation> <translation id="3285080554353377245">Chrome কেনেকৈ ব্যৱহাৰ কৰিব লাগে সেই সম্পৰ্কে ভিডিঅ'</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">ক্লিপব'ৰ্ডৰ সমল দেখুওৱা হৈছে</translation> <translation id="3566923219790363270">Chromeএ এতিয়াও VR সাজু কৰি আছে। Chrome পিছত ৰিষ্টার্ট কৰক।</translation> <translation id="3568688522516854065">আপোনাৰ অন্য ডিভাইচসমূহৰ পৰা নিজৰ টেবসমূহ পাবলৈ ছাইন ইন আৰু ছিংক কৰা সুবিধাটো অন কৰক</translation> +<translation id="3577473026931028326">কিবা ভুল হ’ল। পুনৰ চেষ্টা কৰক।</translation> <translation id="3587482841069643663">সকলো</translation> <translation id="3587596251841506391">ৱেবত সুৰক্ষা উন্নত কৰাত সহায় কৰক</translation> <translation id="3602290021589620013">পূৰ্বদৰ্শন</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">ছেপিয়া</translation> <translation id="4060598801229743805">স্ক্ৰীণৰ ওপৰৰ অংশত কাষত থকা বিকল্প</translation> <translation id="4062305924942672200">আইনী তথ্য</translation> -<translation id="4082818367361753283">গোটৰ আইডি</translation> <translation id="4084682180776658562">বুকমাৰ্ক কৰক</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" />ৰপৰা – <ph name="BEGIN_DEEMPHASIZED" />Googleএ যোগান ধৰা<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">এপ্ ডেটা মচিবনে?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">নতুন টেবত খোলক</translation> <translation id="4198423547019359126">ডাউনল’ড কৰিবলৈ কোনো অৱস্থান নাই</translation> <translation id="4209895695669353772">Googleএ চুপাৰিছ কৰা ব্যক্তিগতকৰণ কৰা সমল পাবলৈ ছিংক অন কৰক</translation> +<translation id="4225895483398857530">টুলবাৰৰ শ্বৰ্টকাট</translation> <translation id="4242533952199664413">ছেটিংসমূহ খোলক</translation> <translation id="4248098802131000011">আপোনাৰ পাছৱর্ডসমূহক ডেটা উলংঘন আৰু অন্য সুৰক্ষা সম্পর্কীয় সমস্যাসমূহৰ পৰা নিৰাপদে ৰাখক</translation> <translation id="4250229828105606438">স্ক্রীণশ্বট</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">অন্য এটা ডাউনল’ডৰ বাবে অপেক্ষা কৰি থকা হৈছে…</translation> <translation id="5865733239029070421">Googleলৈ স্বয়ংক্ৰিয়ভাৱে ব্যৱহাৰৰ পৰিসংখ্যা আৰু ক্ৰেশ্ব ৰিপ’ৰ্ট পঠিয়াই</translation> <translation id="5869522115854928033">ছেভ কৰা পাছৱৰ্ডসমূহ</translation> +<translation id="587735546353481577">এটা ছাইট ফ’ল’ কৰিবলৈ, ছাইটটোলৈ গৈ Chromeৰ মেনুখন খুলি ফ’ল’ কৰকত টিপক।</translation> <translation id="5880748256563468367">ফীডলৈ যাওক</translation> <translation id="5884076754568147479">আপোনাক কামবোৰ সম্পূর্ণ কৰাত সহায় কৰিবলৈ, আপুনি Assistant ব্যৱহাৰ কৰা ছাইটসমূহৰ URL আৰু সমলবোৰ তথা আপুনি Assistantৰ জৰিয়তে দাখিল কৰা তথ্য Googleএ লাভ কৰিব</translation> <translation id="5919204609460789179">ছিংক আৰম্ভ কৰিবলৈ <ph name="PRODUCT_NAME" /> আপডে'ট কৰক</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> ৰাহি কৰা হৈছে</translation> <translation id="5939518447894949180">ৰিছেট কৰক</translation> <translation id="5942872142862698679">সন্ধান কৰিবলৈ Google ব্যৱহাৰ কৰি থকা হৈছে</translation> +<translation id="5945035219773565305">বৰ্তমানৰ চুপাৰিছ: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">লাইভ পৃষ্ঠা চাই আছে</translation> <translation id="5952764234151283551">আপুনি খুলিবলৈ চেষ্টা কৰি থকা পৃষ্ঠাটোৰ URL Googleলৈ পঠিয়াওক</translation> <translation id="5956665950594638604">এটা নতুন টেবত Chrome সহায় কেন্দ্ৰ খোলক</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">পুনৰ ফ’ল’ কৰক</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />সন্ধান<ph name="END_LINK1" /> অথবা অন্য ধৰণৰ ইতিহাস মচিবলৈ <ph name="BEGIN_LINK2" />মই Googleত কৰা কাৰ্যকলাপ<ph name="END_LINK2" />লৈ যাওক</translation> <translation id="6005538289190791541">পৰামর্শ হিচাপে পোৱা পাছৱর্ড</translation> +<translation id="6032091552407840792">এই ট্ৰায়েলটো কেৱল <ph name="BEGIN_LINK" />কিছুমান অঞ্চল<ph name="END_LINK" />ত সক্ৰিয়।</translation> +<translation id="6033245666633565791">Chromeএ <ph name="BEGIN_LINK" />গোপনীয়তা বিষয়ক ছেণ্ডবক্স<ph name="END_LINK" />ৰ জৰিয়তে, আপোনাক মুক্ত ৱেবক সুৰক্ষিত কৰি ৰাখি ক্ৰছ-ছাইট ট্ৰেকিঙৰ পৰা আপোনাক সুৰক্ষা প্ৰদান কৰিবলৈ নতুন প্ৰযুক্তি বিকাশ কৰি আছে। + +গোপনীয়তা বিষয়ক ছেণ্ডবক্সৰ ট্ৰায়েলসমূহ এতিয়াও সক্ৰিয়ভাৱে বিকাশ কৰি থকা হৈছে আৰু এইবোৰ বাছনিকৃত কিছুমান অঞ্চলত উপলব্ধ। সদ্যহতে, ছাইটসমূহে তৃতীয় পক্ষৰ কুকিৰ দৰে বৰ্তমানৰ ৱেব প্ৰযুক্তিসমূহ ব্যৱহাৰ কৰি থাকিও গোপনীয়তা বিষয়ক ছেণ্ডবক্স ব্যৱহাৰ কৰি চাব পাৰে।</translation> <translation id="6036057147555329831">অতিৰিক্ত ICU</translation> <translation id="6039379616847168523">পৰৱৰ্তী টেবলৈ যাওক</translation> <translation id="6040143037577758943">বন্ধ কৰক</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">আপোনাৰ কম্পিউটাৰৰ সৈতে সংযোগ কৰিব নোৱাৰি। সত্যাপনৰ অন্য এটা বিকল্প ব্যৱহাৰ কৰি চাওক।</translation> <translation id="6410404864818553978">প্ৰাথমিক ব্যৱহাৰৰ ডেটা</translation> <translation id="6410883413783534063">একে সময়তে বেলেগ বেলেগ পৃষ্ঠালৈ যাবলৈ টেবসমূহ খোলক</translation> +<translation id="6411219469806822692">ইয়াতকৈ ওপৰলৈ যাব নোৱাৰি। পৃষ্ঠাখনৰ অধিক ওপৰৰ পৰা চেষ্টা কৰি চাওক।</translation> <translation id="6412673304250309937">Chromeত ষ্ট'ৰ কৰি ৰখা অসুৰক্ষিত ছাইটসমূহৰ এখন সূচীৰ সৈতে URLসমূহ পৰীক্ষা কৰে। যদি কোনোবা ছাইটে আপোনাৰ পাছৱর্ড চুৰি কৰিবলৈ চেষ্টা কৰে অথবা আপুনি কোনো ক্ষতিকাৰক ফাইল ডাউনল'ড কৰাৰ সময়ত Chromeএ পৃষ্ঠাৰ সমলৰ বিটসমূহকে ধৰি URLসমূহ সুৰক্ষিত ব্ৰাউজিঙলৈ পঠিয়াব পাৰে।</translation> <translation id="641643625718530986">প্ৰিণ্ট কৰক…</translation> <translation id="6427112570124116297">ৱেবটো অনুবাদ কৰক</translation> @@ -893,10 +908,12 @@ <translation id="671481426037969117">আপোনাৰ <ph name="FQDN" />ৰ টাইমাৰৰ সময় শেষ হ’ল। এইটো কাইলৈ পুনৰ আৰম্ভ হ’ব।</translation> <translation id="6738516213925468394">আপোনাৰ ডেটাখিনি আপুনি <ph name="BEGIN_LINK" />ছিংক কৰি থোৱা পাছফ্ৰে'জ<ph name="END_LINK" />ৰ সহায়ত <ph name="TIME" />ত এনক্রিপ্ট কৰা হৈছিল। ছিংক আৰম্ভ কৰিবলৈ এইটো দিয়ক।</translation> <translation id="6738867403308150051">ডাউনল’ড কৰি থকা হৈছে…</translation> +<translation id="6751521182688001123">ক্ষিপ্ৰভাৱে এটা নতুন টেব খোলক। এই শ্বৰ্টকাটটো সম্পাদনা কৰিবলৈ, স্পৰ্শ কৰি ধৰি ৰাখক।</translation> <translation id="6767294960381293877">টেব এটা শ্বেয়াৰ কৰিবলৈ আধাকৈ খোল খোৱা ডিভাইচসমূহৰ সূচী।</translation> <translation id="6783942555455976443">পৰৱৰ্তী সময়ৰ কাৰণে এই পৃষ্ঠাখন ছেভ কৰি ৰাখক আৰু এটা ৰিমাইণ্ডাৰ পাওক</translation> <translation id="6811034713472274749">পৃষ্ঠাটো চাবলৈ সাজু</translation> <translation id="6813446258015311409">Chromeত ছাইন ইন কৰা হ’ল, খোলা আছে।</translation> +<translation id="6817747507826986771">এই পৃষ্ঠাখন ক্ষিপ্ৰভাৱে শ্বেয়াৰ কৰক। এই শ্বৰ্টকাটটো সম্পাদনা কৰিবলৈ, স্পৰ্শ কৰি ধৰি ৰাখক।</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> টেবটো বাছনি কৰা হৈছে</translation> <translation id="6846298663435243399">ল’ড কৰি থকা হৈছে…</translation> @@ -967,6 +984,7 @@ <translation id="7333031090786104871">এতিয়াও পূৰ্বৱৰ্তী ছাইট যোগ কৰি থকা হৈছে</translation> <translation id="7339898014177206373">নতুন ৱিণ্ড'</translation> <translation id="7340958967809483333">Discoverৰ বিকল্পসমূহ</translation> +<translation id="7352339641508007922">এটা দীঘল স্ক্ৰীনশ্বট ল’বলৈ টানি আনি এৰক</translation> <translation id="7352651011704765696">কিবা সমস্যা হৈছে</translation> <translation id="7352939065658542140">ভিডিঅ’</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{বাছনি কৰা ১টা বস্তু শ্বেয়াৰ কৰক}one{বাছনি কৰা #টা বস্তু শ্বেয়াৰ কৰক}other{বাছনি কৰা #টা বস্তু শ্বেয়াৰ কৰক}}</translation> @@ -1059,6 +1077,7 @@ <translation id="7876243839304621966">সকলো আঁতৰাওক</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{আপোনাৰ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> খন নপঢ়া পৃষ্ঠা আছে}one{আপোনাৰ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> খন নপঢ়া পৃষ্ঠা আছে}other{আপোনাৰ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> খন নপঢ়া পৃষ্ঠা আছে}}</translation> <translation id="7882131421121961860">কোনো ইতিহাস বিচাৰি পোৱা নগ’ল</translation> +<translation id="7884346424584885269">নিকটৱৰ্তী ডিভাইচ স্কেন কৰিবলৈ Chromeক অনুমতি লাগে। <ph name="BEGIN_LINK" />অনুমতি আপডে’ট কৰক<ph name="END_LINK" />।</translation> <translation id="7886917304091689118">Chromeত চলি আছে</translation> <translation id="789763218334337857">Chrome কেনেকৈ ব্যৱহাৰ কৰিব লাগে</translation> <translation id="7903184275147100332">এইটোৰ বাবে কিছু সময় লাগিব পাৰে</translation> @@ -1151,6 +1170,11 @@ <translation id="8461694314515752532">আপোনাৰ নিজৰ ছিংক পাছফ্ৰেজৰ সৈতে ছিংক কৰা ডেটা এনক্ৰিপ্ট কৰক।</translation> <translation id="8466613982764129868">নিশ্চিত হৈ লওক যে <ph name="TARGET_DEVICE_NAME" /> ইণ্টাৰনেটৰ সৈতে সংযুক্ত হৈ আছে</translation> <translation id="8473863474539038330">ঠিকনা আৰু অধিক</translation> +<translation id="8481921391193215807">অন কৰি থোৱা থাকিলে, ছাইটসমূহে নিজৰ সমল আৰু সেৱা প্ৰদান কৰিবলৈ ইয়াত দেখুওৱা গোপনীয়তা সংৰক্ষণৰ কৌশলসমূহ ব্যৱহাৰ কৰিব পাৰে। এইবিলাকত ক্ৰছ-ছাইট ট্ৰেকিঙৰ বিকল্পসমূহ অন্তৰ্ভুক্ত। সময়ৰ লগে লগে অধিক ট্ৰায়েল যোগ দিয়া হ’ব পাৰে। + +<ph name="BEGIN_LIST_ITEM1" />বিজ্ঞাপনদাতা আৰু প্ৰকাশকে FLoC ব্যৱহাৰ কৰিব পাৰে।<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />বিজ্ঞাপনদাতা আৰু প্ৰকাশকে আপোনাক বিভিন্ন ছাইটত ট্ৰেক নকৰাকৈ বিজ্ঞাপনৰ ফলপ্ৰসূতা অধ্যয়ন কৰিব পাৰে।<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">ট্ৰায়েলৰ সুবিধা অন আছে</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">ইতিহাস পৃষ্ঠাটো খোলক</translation> @@ -1262,6 +1286,7 @@ <translation id="9204836675896933765">১টা ফাইল বাকী আছে</translation> <translation id="9206873250291191720">অ</translation> <translation id="9209888181064652401">কল কৰিব নোৱাৰি</translation> +<translation id="9212845824145208577">ইয়াতকৈ তললৈ যাব নোৱাৰি। পৃষ্ঠাখনৰ অধিক তলৰ পৰা চেষ্টা কৰি চাওক।</translation> <translation id="9219103736887031265">Images</translation> <translation id="926205370408745186">আপুনি Chromeত কৰা কাৰ্যকলাপ ডিজিটেল ৱেলবিইঙ-ৰ পৰা আঁতৰাওক</translation> <translation id="927968626442779827">Google Chromeত লাইট ম’ড ব্যৱহাৰ কৰক</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 b822503..dfcfc1f 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> saniyə qaldı</translation> <translation id="2779651927720337254">alınmadı</translation> <translation id="2781151931089541271">1 saniyə qaldı</translation> +<translation id="2788468313014644040">Qrup nömrəsi</translation> <translation id="2801022321632964776">Chrome'un ən son versiyasında öz dilinizdən istifadə etmək üçün güncəlləyin</translation> <translation id="2805756323405976993">Tətbiq</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Seçənəklər ekranın yuxarısına yaxın yerdə əlçatandır</translation> <translation id="4062305924942672200">Leqal informasiya</translation> -<translation id="4082818367361753283">Qrup ID-si</translation> <translation id="4084682180776658562">Əlfəcin</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> ünvanından – <ph name="BEGIN_DEEMPHASIZED" />Google tərəfindən çatdırıldı<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Tətbiq datası silinsin?</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 e78203e..4174ff7 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Засталося <ph name="SECONDS" /> с</translation> <translation id="2779651927720337254">не выканана</translation> <translation id="2781151931089541271">Засталася 1 секунда</translation> +<translation id="2788468313014644040">Нумар групы</translation> <translation id="2801022321632964776">Каб атрымаць інтэрфейс на сваёй мове ў апошняй версіі браўзера Chrome, абнавіце яго</translation> <translation id="2805756323405976993">Праграмы</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Сепія</translation> <translation id="4060598801229743805">Параметры даступныя ўверсе экрана</translation> <translation id="4062305924942672200">Юрыдычная інфармацыя</translation> -<translation id="4082818367361753283">Ідэнтыфікатар групы</translation> <translation id="4084682180776658562">Дадаць у закладкі</translation> <translation id="4084712963632273211">Выдавец – <ph name="PUBLISHER_ORIGIN" />, <ph name="BEGIN_DEEMPHASIZED" />пастаўшчык – Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Выдаліць даныя праграмы?</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 4e7a271..d8b60dc 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Остават <ph name="SECONDS" /> сек</translation> <translation id="2779651927720337254">неуспешно</translation> <translation id="2781151931089541271">Остава 1 сек</translation> +<translation id="2788468313014644040">Номер на групата</translation> <translation id="2801022321632964776">Актуализирайте, за да получите своя език в най-новата версия на Chrome</translation> <translation id="2805756323405976993">Приложения</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Сепия</translation> <translation id="4060598801229743805">Опциите са в горната част на екрана</translation> <translation id="4062305924942672200">Правна информация</translation> -<translation id="4082818367361753283">Идентификационен номер на групата</translation> <translation id="4084682180776658562">Отметка</translation> <translation id="4084712963632273211">От <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />показва се от Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Да се изтрият ли данните на приложенията?</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 25dd1403..6a3af7b 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
@@ -461,7 +461,6 @@ <translation id="4056223980640387499">সেপিয়া</translation> <translation id="4060598801229743805">স্ক্রীনের প্রায় উপরের দিকে বিকল্পগুলি উপলব্ধ</translation> <translation id="4062305924942672200">আইনী তথ্য</translation> -<translation id="4082818367361753283">গ্রুপ আইডি</translation> <translation id="4084682180776658562">বুকমার্ক</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> থেকে – <ph name="BEGIN_DEEMPHASIZED" />Google এর মাধ্যমে ডেলিভারি দেওয়া হয়েছে<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">অ্যাপ্লিকেশান ডেটা মুছবেন?</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 4953457..b0bbcf4 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Preostalo je <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neuspjelo</translation> <translation id="2781151931089541271">Preostala je 1 sek</translation> +<translation id="2788468313014644040">Član grupe</translation> <translation id="2801022321632964776">Ažurirajte da preuzmete svoj jezik u najnovijoj verziji Chromea</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepija</translation> <translation id="4060598801229743805">Opcije su dostupne pri vrhu zaslona</translation> <translation id="4062305924942672200">Pravne informacije</translation> -<translation id="4082818367361753283">ID grupe</translation> <translation id="4084682180776658562">Oznaka</translation> <translation id="4084712963632273211">Od izvora <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />dostavlja Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Izbrisati podatke aplikacija?</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 55aa955..47cabfa 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Queden <ph name="SECONDS" /> segons</translation> <translation id="2779651927720337254">ha fallat</translation> <translation id="2781151931089541271">Queda 1 segon</translation> +<translation id="2788468313014644040">Número de grup</translation> <translation id="2801022321632964776">Fes l'actualització per veure la darrera versió de Chrome en el teu idioma</translation> <translation id="2805756323405976993">Aplicacions</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sèpia</translation> <translation id="4060598801229743805">Hi ha opcions disponibles a prop de la part superior de la pantalla</translation> <translation id="4062305924942672200">Informació legal</translation> -<translation id="4082818367361753283">Identificador de grup</translation> <translation id="4084682180776658562">Adreça d'interès</translation> <translation id="4084712963632273211">Publicada originalment per <ph name="PUBLISHER_ORIGIN" />, <ph name="BEGIN_DEEMPHASIZED" />oferida per Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Vols suprimir les dades de l'aplicació?</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 830787c..137ffde 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Zbývá: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">nezdařilo se</translation> <translation id="2781151931089541271">Zbývá: 1 s</translation> +<translation id="2788468313014644040">Číslo skupiny</translation> <translation id="2801022321632964776">Chcete-li si obsah prohlížet ve svém jazyce, aktualizujte na nejnovější verzi Chromu</translation> <translation id="2805756323405976993">Aplikace</translation> <translation id="2806840421670364300">Federované učení kohort</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sépie</translation> <translation id="4060598801229743805">Možnosti jsou k dispozici u horního okraje obrazovky</translation> <translation id="4062305924942672200">Právní informace</translation> -<translation id="4082818367361753283">ID skupiny</translation> <translation id="4084682180776658562">Záložka</translation> <translation id="4084712963632273211">Zdroj: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />poskytováno společností Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Smazat data aplikace?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 5cfa163e..f206b0c5 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder tilbage</translation> <translation id="2779651927720337254">mislykkedes</translation> <translation id="2781151931089541271">1 sekund tilbage</translation> +<translation id="2788468313014644040">Gruppenummer</translation> <translation id="2801022321632964776">Opdater til den nyeste version af Chrome for at bruge dit eget sprog</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Du finder de tilgængelige valgmuligheder øverst på skærmen</translation> <translation id="4062305924942672200">Juridiske oplysninger</translation> -<translation id="4082818367361753283">Gruppe-id</translation> <translation id="4084682180776658562">Bogmærke</translation> <translation id="4084712963632273211">Fra <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />leveret af Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Vil du slette appdata?</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 186ce92..306758a8 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="de"> +<translation id="1016498331642356377">Schnelle Sprachsuche verwenden. Zum Ändern Schaltfläche gedrückt halten.</translation> <translation id="1028699632127661925">Wird an <ph name="DEVICE_NAME" /> gesendet…</translation> <translation id="103269572468856066">Auch Daten dieser Websites & Apps löschen?</translation> <translation id="1036348656032585052">Deaktivieren</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">Text</translation> <translation id="2068748236079642969">Nächstes Video ansehen</translation> <translation id="2074143993849053708">Benutzeroberfläche für die Einwilligung in die Sprachsuche von Assistant geschlossen</translation> +<translation id="2075835334924942448">Hier finden Sie Beiträge</translation> <translation id="2082238445998314030">Ergebnis <ph name="RESULT_NUMBER" /> von <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Geräteübergreifend synchronisieren und personalisieren</translation> <translation id="2100273922101894616">Automatisch anmelden</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> eingespart</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> geschlossen</translation> <translation id="2139186145475833000">Zum Startbildschirm zufügen</translation> +<translation id="2141396931810938595">Auf Grundlage Ihrer Nutzung</translation> <translation id="214888715418183969">Wählen Sie aus, welche Messwerte für Chrome freigegeben werden sollen. Die freigegebenen Messwerte werden verwendet, um die Funktionen, die Leistung und die Stabilität von Chrome zu verbessern.</translation> <translation id="2154484045852737596">Karte bearbeiten</translation> <translation id="2154710561487035718">URL kopieren</translation> @@ -227,6 +230,7 @@ <translation id="247737702124049222">Bildbeschreibungen sind aktiviert</translation> <translation id="2482878487686419369">Benachrichtigungen</translation> <translation id="2485422356828889247">Deinstallieren</translation> +<translation id="2489545061398461256">Wir deaktivieren es wieder, sobald es nicht mehr benötigt wird</translation> <translation id="2494974097748878569">Google Assistant für Chrome</translation> <translation id="2496180316473517155">Browserverlauf</translation> <translation id="2497852260688568942">Die Synchronisierung wurde von Ihrem Administrator deaktiviert</translation> @@ -257,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# Audiodatei}other{# Audiodateien}}</translation> <translation id="2656405586795711023">Web-Apps</translation> <translation id="2689830683995595741">Wenn Sie Chrome verwenden, stimmen Sie damit den <ph name="BEGIN_LINK1" />Nutzungsbedingungen von Google<ph name="END_LINK1" /> und den <ph name="BEGIN_LINK2" />zusätzlichen Nutzungsbedingungen für Google Chrome und Chrome OS<ph name="END_LINK2" /> zu. Außerdem gelten die <ph name="BEGIN_LINK3" />Datenschutzhinweise für mit Family Link verwaltete Google-Konten<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Neu: Link teilen, der direkt zu diesem Text führt</translation> <translation id="2704606927547763573">Kopiert</translation> <translation id="2707726405694321444">Seite aktualisieren</translation> <translation id="271033894570825754">Neu</translation> @@ -273,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> Sekunden übrig</translation> <translation id="2779651927720337254">fehlgeschlagen</translation> <translation id="2781151931089541271">1 Sekunde übrig</translation> +<translation id="2788468313014644040">Gruppennummer</translation> <translation id="2801022321632964776">Chrome jetzt aktualisieren und das Internet in Ihrer Sprache entdecken</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">FLoC</translation> @@ -304,6 +310,7 @@ <translation id="2956410042958133412">Dieses Konto wird von <ph name="PARENT_NAME_1" /> und <ph name="PARENT_NAME_2" /> verwaltet.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> ungelesene Seite}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> ungelesene Seiten}}</translation> <translation id="2979025552038692506">Ausgewählter Inkognitotab</translation> +<translation id="2979448359891869301">Screenshot kann nicht erweitert werden. Versuchen Sie es noch einmal, wenn die Speicherauslastung Ihres Smartphones geringer ist.</translation> <translation id="2987620471460279764">Text, der über ein anderes Gerät geteilt wurde</translation> <translation id="2989523299700148168">Kürzlich besucht</translation> <translation id="2992473221983447149">Bildbeschreibungen</translation> @@ -345,6 +352,7 @@ <translation id="3265534588625245297">Websites verwalten, denen Sie folgen</translation> <translation id="3269093882174072735">Bild laden</translation> <translation id="3269956123044984603">Aktivieren Sie "Daten automatisch synchronisieren" in den Android-Kontoeinstellungen, um Tabs von Ihren anderen Geräten abzurufen.</translation> +<translation id="3280562213547448728">Sprachsuche</translation> <translation id="3282568296779691940">In Chrome anmelden</translation> <translation id="3284510035090979597">Proaktive Hilfe</translation> <translation id="3285080554353377245">Videos über die Verwendung von Chrome</translation> @@ -395,6 +403,7 @@ <translation id="3563767357928833671">Inhalte der Zwischenablage werden angezeigt</translation> <translation id="3566923219790363270">VR ist noch nicht bereit. Starten Sie Chrome später neu.</translation> <translation id="3568688522516854065">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Ihre Tabs von Ihren anderen Geräten abzurufen</translation> +<translation id="3577473026931028326">Ein Fehler ist aufgetreten. Versuchen Sie es noch einmal.</translation> <translation id="3587482841069643663">Alle</translation> <translation id="3587596251841506391">Dabei helfen, das Web sicherer zu machen</translation> <translation id="3602290021589620013">Vorschau</translation> @@ -459,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Optionen sind oben auf dem Bildschirm verfügbar</translation> <translation id="4062305924942672200">Rechtliche Hinweise</translation> -<translation id="4082818367361753283">Gruppen-ID</translation> <translation id="4084682180776658562">Lesezeichen</translation> <translation id="4084712963632273211">Von <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />bereitgestellt durch Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">App-Daten löschen?</translation> @@ -480,6 +488,7 @@ <translation id="4195643157523330669">In neuem Tab öffnen</translation> <translation id="4198423547019359126">Keine verfügbaren Speicherorte für Downloads</translation> <translation id="4209895695669353772">Aktivieren Sie die Synchronisierung, um personalisierte, von Google vorgeschlagene Inhalte zu erhalten</translation> +<translation id="4225895483398857530">Tastenkürzel in Symbolleiste</translation> <translation id="4242533952199664413">Einstellungen öffnen</translation> <translation id="4248098802131000011">Schützen Sie Ihre Passwörter vor Datenpannen und anderen Sicherheitsproblemen</translation> <translation id="4250229828105606438">Screenshot</translation> @@ -535,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{vor # Minute}other{vor # Minuten}}</translation> <translation id="4587589328781138893">Websites</translation> <translation id="4594952190837476234">Diese Offlineseite ist vom <ph name="CREATION_TIME" /> und unterscheidet sich gegebenenfalls von der Onlineversion.</translation> +<translation id="4608360466722749036">Bluetooth wird aktiviert…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" /> öffnen</translation> <translation id="4619564267100705184">Identität bestätigen</translation> <translation id="4634124774493850572">Passwort verwenden</translation> @@ -746,12 +756,14 @@ <translation id="5864419784173784555">Warten auf weiteren Download…</translation> <translation id="5865733239029070421">Nutzungsstatistiken und Absturzberichte automatisch an Google senden</translation> <translation id="5869522115854928033">Gespeicherte Passwörter</translation> +<translation id="587735546353481577">Wenn Sie einer Website folgen möchten, rufen Sie die Website auf, öffnen Sie das Chrome-Menü und tippen Sie auf „Folgen“.</translation> <translation id="5880748256563468367">Zum Feed</translation> <translation id="5884076754568147479">Wenn Sie in Chrome mit Assistant Aufgaben erledigen, werden die URLs und Inhalte der Websites, auf denen Sie Assistant verwenden, sowie die Daten, die Sie über Assistant weitergeben, an Google gesendet</translation> <translation id="5919204609460789179">Zur Synchronisierung müssen Sie <ph name="PRODUCT_NAME" /> aktualisieren</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> gespeichert</translation> <translation id="5939518447894949180">Zurücksetzen</translation> <translation id="5942872142862698679">Suche erfolgt mit Google</translation> +<translation id="5945035219773565305">Aktuelle Empfehlung: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Live-Seite wird angezeigt</translation> <translation id="5952764234151283551">Die URL einer Seite, die Sie aufrufen möchten, wird an Google gesendet</translation> <translation id="5956665950594638604">Chrome-Hilfe in einem neuen Tab öffnen</translation> @@ -765,6 +777,10 @@ <translation id="6000203700195075278">Wieder folgen</translation> <translation id="6002623704405939939">Unter <ph name="BEGIN_LINK2" />Meine Google-Aktivitäten<ph name="END_LINK2" /> können Sie Verläufe wie den <ph name="BEGIN_LINK1" />Suchverlauf<ph name="END_LINK1" /> löschen</translation> <translation id="6005538289190791541">Vorgeschlagenes Passwort</translation> +<translation id="6032091552407840792">Diese Testversion ist probeweise nur in <ph name="BEGIN_LINK" />ausgewählten Regionen verfügbar<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Im Rahmen der Initiative <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> werden neue Technologien entwickelt, die zum Schutz vor websiteübergreifenden Tracking-Mechanismen und zum Erhalt des offenen Webs beitragen. + +Privacy Sandbox befindet sich noch in der Entwicklung und Testversionen sind nur in ausgewählten Regionen verfügbar. Manche Websites, die Privacy Sandbox probeweise nutzen, verwenden momentan möglicherweise weiterhin aktuelle Web-Technologien wie Drittanbieter-Cookies.</translation> <translation id="6036057147555329831">Extra ICU</translation> <translation id="6039379616847168523">Zum nächsten Tab wechseln</translation> <translation id="6040143037577758943">Schließen</translation> @@ -830,6 +846,7 @@ <translation id="6407224748847589805">Verbindung zum Computer nicht möglich. Versuchen Sie es mit einer anderen Bestätigungsoption.</translation> <translation id="6410404864818553978">Grundlegende Nutzungsdaten</translation> <translation id="6410883413783534063">Öffnen Sie Tabs, um mehrere Seiten gleichzeitig zu besuchen</translation> +<translation id="6411219469806822692">Screenshot kann nicht nach oben erweitert werden. Beginnen Sie weiter oben auf der Seite.</translation> <translation id="6412673304250309937">Prüft URLs anhand einer Liste unsicherer Websites, die in Chrome gespeichert wird. Wenn eine Website versucht, Ihr Passwort zu stehlen, oder wenn Sie eine schädliche Datei herunterladen, kann Chrome auch URLs, einschließlich Teile von Seiteninhalten, an Safe Browsing senden.</translation> <translation id="641643625718530986">Drucken...</translation> <translation id="6427112570124116297">Das Web übersetzen</translation> @@ -892,10 +909,12 @@ <translation id="671481426037969117">Ihr <ph name="FQDN" />-Timer ist abgelaufen. Morgen startet er neu.</translation> <translation id="6738516213925468394">Ihre Daten wurden am <ph name="TIME" /> mit Ihrer <ph name="BEGIN_LINK" />Synchronisierungspassphrase<ph name="END_LINK" /> verschlüsselt. Geben Sie diese ein, um die Synchronisierung zu starten.</translation> <translation id="6738867403308150051">Wird heruntergeladen...</translation> +<translation id="6751521182688001123">Öffnet schnell einen neuen Tab. Zum Ändern Schaltfläche gedrückt halten.</translation> <translation id="6767294960381293877">Die Liste von Geräten, mit denen ein Tab geteilt werden kann, ist halb geöffnet.</translation> <translation id="6783942555455976443">Diese Seite für später speichern und eine Erinnerung erhalten</translation> <translation id="6811034713472274749">Seitenansicht bereit</translation> <translation id="6813446258015311409">In Chrome anmelden, geöffnet.</translation> +<translation id="6817747507826986771">Diese Seite schnell teilen. Zum Ändern Schaltfläche gedrückt halten.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">Tab „<ph name="TAB_TITLE" />“ ausgewählt</translation> <translation id="6846298663435243399">Wird geladen…</translation> @@ -966,6 +985,7 @@ <translation id="7333031090786104871">Vorherige Website wird noch hinzugefügt</translation> <translation id="7339898014177206373">Neues Fenster</translation> <translation id="7340958967809483333">Optionen für Discover</translation> +<translation id="7352339641508007922">Ziehen, um einen langen Screenshot zu erstellen</translation> <translation id="7352651011704765696">Ein Problem ist aufgetreten.</translation> <translation id="7352939065658542140">VIDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{1 ausgewähltes Element teilen}other{# ausgewählte Elemente teilen}}</translation> @@ -1058,6 +1078,7 @@ <translation id="7876243839304621966">Alle entfernen</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Sie haben <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> ungelesene Seite}other{Sie haben <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> ungelesene Seiten}}</translation> <translation id="7882131421121961860">Kein Verlauf gefunden</translation> +<translation id="7884346424584885269">Chrome benötigt die Berechtigung zum Suchen nach Geräten in der Nähe. <ph name="BEGIN_LINK" />Berechtigungen aktualisieren<ph name="END_LINK" /></translation> <translation id="7886917304091689118">Wird in Chrome ausgeführt</translation> <translation id="789763218334337857">Chrome verwenden</translation> <translation id="7903184275147100332">Dies kann einen Moment dauern</translation> @@ -1151,6 +1172,11 @@ <translation id="8461694314515752532">Synchronisierte Daten mit eigener Synchronisierungspassphrase verschlüsseln</translation> <translation id="8466613982764129868">Prüfen Sie, ob <ph name="TARGET_DEVICE_NAME" /> mit dem Internet verbunden ist</translation> <translation id="8473863474539038330">Adressen</translation> +<translation id="8481921391193215807">Wenn diese Option aktiviert ist, können Websites die hier aufgeführten Technologien, die zu einem besseren Datenschutz beitragen, zur Bereitstellung ihrer Inhalte und Dienste verwenden. Hierzu zählen unter anderem Alternativen zum websiteübergreifenden Tracking. Mit der Zeit können weitere Testfunktionen hinzukommen. + +<ph name="BEGIN_LIST_ITEM1" />Werbetreibende und Publisher können FLoC verwenden.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Werbetreibende und Publisher können die Wirksamkeit von Anzeigen prüfen, ohne Sie dabei websiteübergreifend zu tracken.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Testfunktionen sind aktiviert</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Verlaufsseite öffnen</translation> @@ -1262,6 +1288,7 @@ <translation id="9204836675896933765">Noch 1 Datei</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Anrufe nicht möglich</translation> +<translation id="9212845824145208577">Screenshot kann nicht nach unten erweitert werden. Beginnen Sie weiter unten auf der Seite.</translation> <translation id="9219103736887031265">Bilder</translation> <translation id="926205370408745186">Chrome-Aktivitäten aus Digital Wellbeing entfernen</translation> <translation id="927968626442779827">Verwenden Sie den Lite-Modus in Google Chrome</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 0c2d148..b4e6e01 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Απομένουν <ph name="SECONDS" /> δευτερόλεπτα</translation> <translation id="2779651927720337254">απέτυχε</translation> <translation id="2781151931089541271">Απομένει 1 δευτερόλεπτο</translation> +<translation id="2788468313014644040">Αριθμός ομάδας</translation> <translation id="2801022321632964776">Ενημερώστε για να χρησιμοποιείτε τη γλώσσα σας στην πιο πρόσφατη έκδοση του Chrome</translation> <translation id="2805756323405976993">Εφαρμογές </translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Σέπια</translation> <translation id="4060598801229743805">Διαθέσιμες επιλογές κοντά στην κορυφή της οθόνης</translation> <translation id="4062305924942672200">Νομικές πληροφορίες</translation> -<translation id="4082818367361753283">Αναγνωριστικό ομάδας</translation> <translation id="4084682180776658562">Σελιδοδείκτης</translation> <translation id="4084712963632273211">Από <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />παρέχεται από την Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Διαγραφή δεδομένων εφαρμογών;</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 12d4265..0684e0c 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> secs left</translation> <translation id="2779651927720337254">failed</translation> <translation id="2781151931089541271">1 sec left</translation> +<translation id="2788468313014644040">Group number</translation> <translation id="2801022321632964776">Update to get your language in the latest version of Chrome</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Options available near the top of the screen</translation> <translation id="4062305924942672200">Legal information</translation> -<translation id="4082818367361753283">Group ID</translation> <translation id="4084682180776658562">Bookmark</translation> <translation id="4084712963632273211">From <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />delivered by Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Delete app data?</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 0e06c38..77118ee 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="es-419"> +<translation id="1016498331642356377">Haz una búsqueda rápida con la voz. Para editar este atajo, mantenlo presionado.</translation> <translation id="1028699632127661925">Enviando a <ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">¿Borrar estos datos?</translation> <translation id="1036348656032585052">Desactivar</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">texto</translation> <translation id="2068748236079642969">Mirar el próximo video</translation> <translation id="2074143993849053708">La IU de consentimiento de la búsqueda por voz de Asistente está cerrada</translation> +<translation id="2075835334924942448">Aquí encontrarás noticias</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Sincroniza y personaliza contenido en diferentes dispositivos</translation> <translation id="2100273922101894616">Acceso automático</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">Datos ahorrados: <ph name="DATA" /></translation> <translation id="213279576345780926">Pestaña <ph name="TAB_TITLE" /> cerrada</translation> <translation id="2139186145475833000">Agregar a la pantalla principal</translation> +<translation id="2141396931810938595">Según tu uso</translation> <translation id="214888715418183969">Elige lo que quieres compartir con Chrome. Las métricas que compartas se usarán para ayudar a mejorar las funciones, el rendimiento y la estabilidad de Chrome.</translation> <translation id="2154484045852737596">Editar tarjeta</translation> <translation id="2154710561487035718">Copiar URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# archivo de audio}other{# archivos de audio}}</translation> <translation id="2656405586795711023">Aplicaciones web</translation> <translation id="2689830683995595741">Si usas Chrome, aceptas las <ph name="BEGIN_LINK1" />Condiciones del Servicio de Google<ph name="END_LINK1" /> y las <ph name="BEGIN_LINK2" />Condiciones del Servicio Adicionales de Google Chrome y el Sistema operativo Chrome<ph name="END_LINK2" />. También se aplica el <ph name="BEGIN_LINK3" />Aviso de Privacidad para las Cuentas de Google administradas con Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Nuevo: Comparte un vínculo que se desplace hasta este texto.</translation> <translation id="2704606927547763573">Copiado</translation> <translation id="2707726405694321444">Actualizar página</translation> <translation id="271033894570825754">Nuevo</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> <translation id="2779651927720337254">error</translation> <translation id="2781151931089541271">1 segundo restante</translation> +<translation id="2788468313014644040">Número de grupo</translation> <translation id="2801022321632964776">Para obtener tu idioma, actualiza a la versión más reciente de Chrome</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412"><ph name="PARENT_NAME_1" /> y <ph name="PARENT_NAME_2" /> administran esta cuenta.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> página no leída}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> páginas no leídas}}</translation> <translation id="2979025552038692506">Pestaña de incógnito seleccionada</translation> +<translation id="2979448359891869301">No se puede extender la captura de pantalla. Vuelve a intentarlo cuando el teléfono tenga más memoria disponible.</translation> <translation id="2987620471460279764">Texto compartido desde otro dispositivo</translation> <translation id="2989523299700148168">Visitados recientemente</translation> <translation id="2992473221983447149">Descripciones de imágenes</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Administra los sitios que sigues</translation> <translation id="3269093882174072735">Cargar imagen</translation> <translation id="3269956123044984603">Para obtener las pestañas de tus otros dispositivos, activa la opción "Sincronización automática de datos" en la configuración de la cuenta de Android.</translation> +<translation id="3280562213547448728">Búsqueda por voz</translation> <translation id="3282568296779691940">Acceder a Chrome</translation> <translation id="3284510035090979597">Ayuda proactiva</translation> <translation id="3285080554353377245">Videos sobre cómo usar Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Se muestra el contenido del Portapapeles</translation> <translation id="3566923219790363270">Chrome todavía se está preparando para la RV. Reinicia Chrome más tarde.</translation> <translation id="3568688522516854065">Para obtener las pestañas de tus otros dispositivos, accede a tu cuenta y activa la sincronización</translation> +<translation id="3577473026931028326">Se produjo un error. Vuelve a intentarlo.</translation> <translation id="3587482841069643663">Todos</translation> <translation id="3587596251841506391">Ayuda a mejorar la seguridad en la Web</translation> <translation id="3602290021589620013">Vista previa</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opciones disponibles cerca de la parte superior de la pantalla</translation> <translation id="4062305924942672200">Información legal</translation> -<translation id="4082818367361753283">ID del grupo</translation> <translation id="4084682180776658562">Marcador</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />publicado por Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">¿Borrar datos de app?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Abrir en una pestaña nueva</translation> <translation id="4198423547019359126">No hay ubicaciones de descarga disponibles</translation> <translation id="4209895695669353772">Para obtener contenido personalizado y sugerido por Google, activa la sincronización</translation> +<translation id="4225895483398857530">Acceso directo a la barra de herramientas</translation> <translation id="4242533952199664413">Abrir la configuración</translation> <translation id="4248098802131000011">Mantén protegidas tus contraseñas ante violaciones de la seguridad de los datos y otros problemas de seguridad.</translation> <translation id="4250229828105606438">Captura de pantalla</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Esperando que finalice otra descarga…</translation> <translation id="5865733239029070421">Envía automáticamente informes de fallos y estadísticas de uso a Google</translation> <translation id="5869522115854928033">Contraseñas almacenadas</translation> +<translation id="587735546353481577">Para seguir un sitio, visítalo, abre el menú de Chrome y presiona Seguir.</translation> <translation id="5880748256563468367">Ir al feed</translation> <translation id="5884076754568147479">Para ayudarte a completar tareas, Google recibirá las URL y los contenidos de los sitios en los que uses el Asistente, así como la información que envías a través de este servicio</translation> <translation id="5919204609460789179">Actualiza <ph name="PRODUCT_NAME" /> para iniciar la sincronización</translation> <translation id="5937580074298050696">Datos ahorrados: <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">Restablecer</translation> <translation id="5942872142862698679">Se usa Google para la búsqueda</translation> +<translation id="5945035219773565305">Recomendación actual: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Vista en vivo de la página</translation> <translation id="5952764234151283551">Envía a Google la URL de la página a la que intentas acceder</translation> <translation id="5956665950594638604">Abrir Centro de ayuda de Chrome en pestaña nueva</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Volver a seguir</translation> <translation id="6002623704405939939">Para borrar la <ph name="BEGIN_LINK1" />búsqueda<ph name="END_LINK1" /> o algún otro tipo de historial, visita <ph name="BEGIN_LINK2" />Mi actividad de Google<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Contraseña sugerida</translation> +<translation id="6032091552407840792">Esta prueba está activada solo en <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">A través de <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome está desarrollando nuevas tecnologías para protegerte ante el seguimiento entre sitios, a la vez que preservan la Web abierta. + +Las pruebas de Privacy Sandbox siguen en desarrollo y están disponibles en ciertas regiones. Por ahora, los sitios pueden usar Privacy Sandbox y seguir utilizando tecnologías web actuales, como las cookies de terceros.</translation> <translation id="6036057147555329831">ICU adicional</translation> <translation id="6039379616847168523">Ir a la pestaña siguiente</translation> <translation id="6040143037577758943">Cerrar</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">No se puede establecer la conexión con tu computadora. Prueba otra opción de verificación.</translation> <translation id="6410404864818553978">Datos de uso básico</translation> <translation id="6410883413783534063">Abre pestañas para visitar diferentes páginas al mismo tiempo</translation> +<translation id="6411219469806822692">No se puede ir más arriba. Intenta tomar la captura desde más arriba en la página.</translation> <translation id="6412673304250309937">Revisa las URL con una lista de sitios no seguros almacenados en Chrome. Si un sitio intenta robar tu contraseña, o cuando descargas un archivo dañino, es posible que Chrome también envíe las URL, con partes del contenido de la página, a la Navegación segura.</translation> <translation id="641643625718530986">Imprimir…</translation> <translation id="6427112570124116297">Traduce la Web</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Se agotó el temporizador de <ph name="FQDN" />. Volverá a empezar mañana.</translation> <translation id="6738516213925468394">Tus datos se encriptaron con la <ph name="BEGIN_LINK" />frase de contraseña de sincronización<ph name="END_LINK" /> el <ph name="TIME" />. Ingresa la frase para iniciar la sincronización.</translation> <translation id="6738867403308150051">Descargando…</translation> +<translation id="6751521182688001123">Abre rápidamente una nueva pestaña. Para editar este atajo, mantenlo presionado.</translation> <translation id="6767294960381293877">La lista de dispositivos con los que se puede compartir una pestaña está abierta a media altura.</translation> <translation id="6783942555455976443">Guarda esta página para verla más tarde y establece un recordatorio.</translation> <translation id="6811034713472274749">Ya puedes ver la página</translation> <translation id="6813446258015311409">Acceder a Chrome, abierto.</translation> +<translation id="6817747507826986771">Comparte esta página de forma rápida. Para editar este atajo, mantenlo presionado.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />, pestaña, seleccionada</translation> <translation id="6846298663435243399">Cargando…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Aún se está agregando el sitio anterior</translation> <translation id="7339898014177206373">Nueva ventana</translation> <translation id="7340958967809483333">Opciones para Descubre</translation> +<translation id="7352339641508007922">Arrastrar para tomar una captura de pantalla larga</translation> <translation id="7352651011704765696">Se produjo un error</translation> <translation id="7352939065658542140">VIDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Comparte 1 elemento seleccionado}other{Comparte # elementos seleccionados}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Eliminar todo</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Tienes <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> página sin leer}other{Tienes <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> páginas sin leer}}</translation> <translation id="7882131421121961860">No se encontraron entradas en el historial</translation> +<translation id="7884346424584885269">Chrome necesita permiso para buscar dispositivos cercanos. <ph name="BEGIN_LINK" />Actualiza los permisos<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">Se está ejecutando en Chrome</translation> <translation id="789763218334337857">Cómo usar Chrome</translation> <translation id="7903184275147100332">Esto puede tardar un minuto.</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Encriptar los datos sincronizados con tu propia frase de contraseña de sincronización</translation> <translation id="8466613982764129868">Comprueba que <ph name="TARGET_DEVICE_NAME" /> tenga conexión a Internet</translation> <translation id="8473863474539038330">Direcciones y más</translation> +<translation id="8481921391193215807">Si habilitas esta opción, los sitios podrán utilizar las técnicas de protección de la privacidad que se muestran aquí para ofrecer su contenido y sus servicios. Estas técnicas incluyen alternativas al seguimiento entre sitios. Es posible que se agreguen más pruebas a lo largo del tiempo. + +<ph name="BEGIN_LIST_ITEM1" />Los anunciantes y los publicadores pueden usar el FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Los anunciantes y los publicadores pueden analizar la eficacia de los anuncios sin que estos hagan un seguimiento de los sitios que visitas.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Las funciones de prueba están activadas</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Abrir la página del historial</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">Queda 1 archivo</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">No se pueden realizar llamadas</translation> +<translation id="9212845824145208577">No puede ir más abajo. Intenta tomar la captura desde más abajo en la página.</translation> <translation id="9219103736887031265">Imágenes</translation> <translation id="926205370408745186">Quita tu actividad en Chrome de Bienestar digital</translation> <translation id="927968626442779827">Usa el modo lite en Google Chrome</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 d37540f..8b79cfd 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="es"> +<translation id="1016498331642356377">Busca rápidamente con la voz. Para editar este acceso directo, mantenlo pulsado.</translation> <translation id="1028699632127661925">Enviando a <ph name="DEVICE_NAME" />...</translation> <translation id="103269572468856066">¿Borrar también datos de estos sitios y aplicaciones?</translation> <translation id="1036348656032585052">Desactivar</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">texto</translation> <translation id="2068748236079642969">Ver el siguiente vídeo</translation> <translation id="2074143993849053708">Interfaz de consentimiento de la búsqueda por voz del Asistente cerrada</translation> +<translation id="2075835334924942448">Encontrarás tus historias aquí</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Sincroniza y personaliza todos tus dispositivos</translation> <translation id="2100273922101894616">Iniciar sesión automáticamente</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">Datos ahorrados: <ph name="DATA" /></translation> <translation id="213279576345780926">Se ha cerrado <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Añadir a pantalla de inicio</translation> +<translation id="2141396931810938595">Según tu uso</translation> <translation id="214888715418183969">Elige qué quieres compartir con Chrome. Las métricas que compartas nos ayudarán a mejorar las funciones, el rendimiento y la estabilidad de Chrome.</translation> <translation id="2154484045852737596">Editar tarjeta</translation> <translation id="2154710561487035718">Copiar URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# archivo de audio}other{# archivos de audio}}</translation> <translation id="2656405586795711023">Aplicaciones web</translation> <translation id="2689830683995595741">Al utilizar Chrome, aceptas los <ph name="BEGIN_LINK1" />Términos del Servicio de Google<ph name="END_LINK1" /> y los <ph name="BEGIN_LINK2" />Términos del Servicio Adicionales de Google Chrome y Chrome OS<ph name="END_LINK2" />. El uso de Chrome también está sujeto al <ph name="BEGIN_LINK3" />Aviso de Privacidad para Cuentas de Google Gestionadas con Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Nuevo: Comparte un enlace que vaya directamente a este texto</translation> <translation id="2704606927547763573">Copiado</translation> <translation id="2707726405694321444">Actualizar página</translation> <translation id="271033894570825754">Nuevo</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">Quedan <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">ha fallado</translation> <translation id="2781151931089541271">Queda 1 segundo</translation> +<translation id="2788468313014644040">Número de grupo</translation> <translation id="2801022321632964776">Actualiza para incluir tu idioma en la última versión de Chrome</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2806840421670364300">Aprendizaje federado de cohortes (FLoC)</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Esta cuenta está administrada por <ph name="PARENT_NAME_1" /> y <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> página no leída}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> páginas no leídas}}</translation> <translation id="2979025552038692506">Pestaña de incógnito seleccionada</translation> +<translation id="2979448359891869301">No se puede ampliar la captura de pantalla. Vuelve a intentarlo cuando tu teléfono no esté realizando otras tareas.</translation> <translation id="2987620471460279764">Texto compartido desde otro dispositivo</translation> <translation id="2989523299700148168">Visitados recientemente</translation> <translation id="2992473221983447149">Descripciones de imágenes</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Gestiona los sitios que sigues</translation> <translation id="3269093882174072735">Cargar imagen</translation> <translation id="3269956123044984603">Para ver las pestañas de tus otros dispositivos, activa la opción Sincronización automática en la configuración de la cuenta de Android.</translation> +<translation id="3280562213547448728">Búsqueda por voz</translation> <translation id="3282568296779691940">Iniciar sesión en Chrome</translation> <translation id="3284510035090979597">Ayuda proactiva</translation> <translation id="3285080554353377245">Vídeos sobre cómo usar Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Contenido del portapapeles mostrado</translation> <translation id="3566923219790363270">Chrome todavía se está preparando para la realidad virtual. Reinicia Chrome más tarde.</translation> <translation id="3568688522516854065">Inicia sesión y activa la sincronización para ver las pestañas de tus otros dispositivos</translation> +<translation id="3577473026931028326">Se ha producido un error. Inténtalo de nuevo.</translation> <translation id="3587482841069643663">Todo</translation> <translation id="3587596251841506391">Ayudar a mejorar la seguridad en la Web</translation> <translation id="3602290021589620013">Vista previa</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opciones disponibles junto a la parte superior de la pantalla</translation> <translation id="4062305924942672200">Información legal</translation> -<translation id="4082818367361753283">ID de grupo</translation> <translation id="4084682180776658562">Añadir a marcadores</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" /> (<ph name="BEGIN_DEEMPHASIZED" />ofrecida por Google<ph name="END_DEEMPHASIZED" />)</translation> <translation id="4095146165863963773">¿Eliminar datos de la aplicación?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Abrir en una pestaña nueva</translation> <translation id="4198423547019359126">No hay ubicaciones de descarga disponibles</translation> <translation id="4209895695669353772">Para obtener contenido personalizado sugerido por Google, activa la sincronización</translation> +<translation id="4225895483398857530">Acceso directo en la barra de herramientas</translation> <translation id="4242533952199664413">Abrir Configuración</translation> <translation id="4248098802131000011">Mantén tus contraseñas protegidas frente a quiebras de seguridad de datos y otros problemas de seguridad.</translation> <translation id="4250229828105606438">Captura de pantalla</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Esperando otra descarga…</translation> <translation id="5865733239029070421">Envía automáticamente estadísticas de uso e informes sobre fallos a Google</translation> <translation id="5869522115854928033">Contraseñas guardadas</translation> +<translation id="587735546353481577">Para seguir a un sitio, visítalo, abre el menú de Chrome y toca Seguir.</translation> <translation id="5880748256563468367">Ir al feed</translation> <translation id="5884076754568147479">Para ayudarte a completar tareas, Google recibirá las URL y los contenidos de los sitios en los que uses el Asistente, así como la información que envíes a través del Asistente.</translation> <translation id="5919204609460789179">Actualiza <ph name="PRODUCT_NAME" /> para iniciar la sincronización</translation> <translation id="5937580074298050696">Ahorro: <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">Restablecer</translation> <translation id="5942872142862698679">Google se ha establecido como motor de búsqueda predeterminado</translation> +<translation id="5945035219773565305">Recomendación actual: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Mostrando página publicada</translation> <translation id="5952764234151283551">Envía a Google la URL de una página a la que intentas acceder</translation> <translation id="5956665950594638604">Abre la Ayuda de Chrome en una pestaña nueva</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Volver a seguir</translation> <translation id="6002623704405939939">Para borrar la <ph name="BEGIN_LINK1" />búsqueda<ph name="END_LINK1" /> u otros tipos de historial, visita <ph name="BEGIN_LINK2" />Mi Actividad en Google<ph name="END_LINK2" />.</translation> <translation id="6005538289190791541">Contraseña sugerida</translation> +<translation id="6032091552407840792">Esta prueba solo está activa en <ph name="BEGIN_LINK" />algunas regiones<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Con <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome desarrolla nuevas tecnologías que te protegerán de mecanismos de seguimiento entre sitios y, a la vez, preservarán la Web abierta. + +Las pruebas de Privacy Sandbox aún se encuentran en desarrollo y solo están disponibles en algunas regiones. Por ahora, los sitios pueden probar Privacy Sandbox y seguir utilizando tecnologías web actuales, como las cookies de terceros.</translation> <translation id="6036057147555329831">ICU adicional</translation> <translation id="6039379616847168523">Te dirige a la siguiente pestaña</translation> <translation id="6040143037577758943">Cerrar</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">No se ha podido establecer conexión con tu ordenador. Prueba con otra opción de verificación.</translation> <translation id="6410404864818553978">Datos de uso básicos</translation> <translation id="6410883413783534063">Abre pestañas para visitar varias páginas al mismo tiempo</translation> +<translation id="6411219469806822692">No se puede ir más arriba. Intenta empezar desde más arriba de la página.</translation> <translation id="6412673304250309937">Comprueba las URL guardadas en Chrome con una lista de sitios que no son seguros. Si un sitio web intenta robarte la contraseña o te descargas un archivo dañino, puede que Chrome también envíe URL, así como fragmentos de contenido de la página, a Navegación segura.</translation> <translation id="641643625718530986">Imprimir…</translation> <translation id="6427112570124116297">Traduce la Web</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Se ha agotado el temporizador de <ph name="FQDN" />. Se reiniciará mañana.</translation> <translation id="6738516213925468394">Tus datos están cifrados con tu <ph name="BEGIN_LINK" />frase de contraseña de sincronización<ph name="END_LINK" /> desde el <ph name="TIME" />. Introdúcela para iniciar la sincronización.</translation> <translation id="6738867403308150051">Descargando…</translation> +<translation id="6751521182688001123">Abre una pestaña nueva rápidamente. Para editar este acceso directo, mantenlo pulsado.</translation> <translation id="6767294960381293877">La lista de dispositivos con los que puedes compartir una pestaña está abierta y ocupa la mitad inferior de la pantalla.</translation> <translation id="6783942555455976443">Guardar esta página para después y recibir un recordatorio</translation> <translation id="6811034713472274749">Ya se puede ver la página</translation> <translation id="6813446258015311409">Inicia sesión en Chrome, abierto.</translation> +<translation id="6817747507826986771">Comparte esta página rápidamente. Para editar este acceso directo, mantenlo pulsado.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">Pestaña <ph name="TAB_TITLE" /> seleccionada</translation> <translation id="6846298663435243399">Cargando…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Aún se está añadiendo el sitio web anterior</translation> <translation id="7339898014177206373">Nueva ventana</translation> <translation id="7340958967809483333">Opciones de Discover</translation> +<translation id="7352339641508007922">Arrastra para hacer una captura de pantalla completa</translation> <translation id="7352651011704765696">Se ha producido un problema</translation> <translation id="7352939065658542140">VÍDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Compartir 1 elemento seleccionado}other{Compartir # elementos seleccionados}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Eliminar todo</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Te queda <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> página sin leer.}other{Te quedan <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> páginas sin leer.}}</translation> <translation id="7882131421121961860">No se ha encontrado el elemento buscado en el historial</translation> +<translation id="7884346424584885269">Chrome necesita permiso para buscar dispositivos cercanos. <ph name="BEGIN_LINK" />Actualizar permisos<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">Se está ejecutando en Chrome</translation> <translation id="789763218334337857">Cómo usar Chrome</translation> <translation id="7903184275147100332">Podría tardar un minuto</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Cifrar datos sincronizados con tu propia frase de contraseña de sincronización</translation> <translation id="8466613982764129868">Comprueba que tu <ph name="TARGET_DEVICE_NAME" /> esté conectado a Internet</translation> <translation id="8473863474539038330">Direcciones y más</translation> +<translation id="8481921391193215807">Si está habilitado, los sitios podrán utilizar las técnicas de protección de la privacidad que se muestran aquí para ofrecer su contenido y sus servicios. Entre estas técnicas, se incluyen alternativas al seguimiento entre sitios. Es posible que se añadan más pruebas a lo largo del tiempo. + +<ph name="BEGIN_LIST_ITEM1" />Los anunciantes y editores pueden usar el aprendizaje federado de cohortes (FLoC).<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Los anunciantes y editores pueden analizar la efectividad de los anuncios sin hacer un seguimiento de los sitios que visitas.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Las funciones de prueba están activadas</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Abre la página Historial</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">1 archivo restante</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">No se pueden hacer llamadas</translation> +<translation id="9212845824145208577">No se puede ir más abajo. Intenta empezar desde más abajo de la página.</translation> <translation id="9219103736887031265">Imágenes</translation> <translation id="926205370408745186">Eliminar tu actividad de Chrome de Bienestar digital</translation> <translation id="927968626442779827">Usa el modo básico en Google Chrome</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 f9b85145..a98521b 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Jäänud on <ph name="SECONDS" /> sekundit</translation> <translation id="2779651927720337254">ebaõnnestus</translation> <translation id="2781151931089541271">Jäänud on 1 sekund</translation> +<translation id="2788468313014644040">Grupi number</translation> <translation id="2801022321632964776">Oma keele kasutamiseks värskendage Chrome uusimale versioonile</translation> <translation id="2805756323405976993">Rakendused</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Seepia</translation> <translation id="4060598801229743805">Ekraani ülaosas saadaolevad valikud</translation> <translation id="4062305924942672200">Juriidiline teave</translation> -<translation id="4082818367361753283">Grupi ID</translation> <translation id="4084682180776658562">Järjehoidja</translation> <translation id="4084712963632273211">Avaldajalt <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />sisu pakub Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Kas kustutada rakenduse andmed?</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 292fa370..7892972 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> segundo gelditzen dira</translation> <translation id="2779651927720337254">huts egin du</translation> <translation id="2781151931089541271">Segundo bat gelditzen da</translation> +<translation id="2788468313014644040">Taldearen zenbakia</translation> <translation id="2801022321632964776">Eguneratu azken bertsiora Chrome zure hizkuntzan erabili ahal izateko</translation> <translation id="2805756323405976993">Aplikazioak</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Pantailaren goialdean daude aukera erabilgarriak</translation> <translation id="4062305924942672200">Legezko informazioa</translation> -<translation id="4082818367361753283">Taldearen IDa</translation> <translation id="4084682180776658562">Laster-marka</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> da argitaratzailea <ph name="BEGIN_DEEMPHASIZED" />eta Google-k eskaintzen du<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Aplikazioko datuak ezabatu nahi dituzu?</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 5f5a5905..5d9c06e 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> ثانیه باقیمانده است</translation> <translation id="2779651927720337254">انجام نشد</translation> <translation id="2781151931089541271">۱ ثانیه باقیمانده است</translation> +<translation id="2788468313014644040">شماره گروه</translation> <translation id="2801022321632964776">با بهروزرسانی به جدیدترین نسخه Chrome، زبانتان را دریافت کنید</translation> <translation id="2805756323405976993">برنامهها</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">سپیا</translation> <translation id="4060598801229743805">گزینههایی در نزدیکی بالای صفحه دردسترس هستند</translation> <translation id="4062305924942672200">اطلاعات حقوقی</translation> -<translation id="4082818367361753283">شناسه گروه</translation> <translation id="4084682180776658562">نشانک</translation> <translation id="4084712963632273211">از<ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />توسط Google ارائه میشود<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">دادههای برنامه پاک شود؟</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 4985641..587be6af 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sekuntia jäljellä</translation> <translation id="2779651927720337254">epäonnistui</translation> <translation id="2781151931089541271">1 sekunti jäljellä</translation> +<translation id="2788468313014644040">Ryhmän numero</translation> <translation id="2801022321632964776">Päivitä Chrome uusimpaan versioon, niin se toimii omalla kielelläsi</translation> <translation id="2805756323405976993">Sovellukset</translation> <translation id="2806840421670364300">FLoC-kohdentaminen</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Seepia</translation> <translation id="4060598801229743805">Toimintoja on käytettävissä näytön yläosassa.</translation> <translation id="4062305924942672200">Oikeudelliset tiedot</translation> -<translation id="4082818367361753283">Ryhmän tunnus</translation> <translation id="4084682180776658562">Kirjanmerkki</translation> <translation id="4084712963632273211">Lähde: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Googlen toimittama<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Poistetaanko sovellustiedot?</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 6937d41..606b267 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> (na) segundo na lang ang natitira</translation> <translation id="2779651927720337254">nabigo</translation> <translation id="2781151931089541271">1 segundo na lang ang natitira</translation> +<translation id="2788468313014644040">Numero ng grupo</translation> <translation id="2801022321632964776">I-update para makuha ang iyong wika sa pinakabagong bersyon ng Chrome</translation> <translation id="2805756323405976993">Mga App</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Available ang mga opsyon malapit sa bandang itaas ng screen</translation> <translation id="4062305924942672200">Impormasyong legal</translation> -<translation id="4082818367361753283">Group ID</translation> <translation id="4084682180776658562">Bookmark</translation> <translation id="4084712963632273211">Mula sa <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />ihinatid ng Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">I-delete ang data ng app?</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 5bcc05c..467b72e 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Il reste <ph name="SECONDS" /> secondes</translation> <translation id="2779651927720337254">échec</translation> <translation id="2781151931089541271">Il reste 1 s</translation> +<translation id="2788468313014644040">Numéro de groupe</translation> <translation id="2801022321632964776">Mettez Chrome à jour pour en profiter dans votre propre langue</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sépia</translation> <translation id="4060598801229743805">Options disponibles vers le haut de l'écran</translation> <translation id="4062305924942672200">Mentions juridiques</translation> -<translation id="4082818367361753283">Identifiant du groupe</translation> <translation id="4084682180776658562">Favoris</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />fourni par Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Supprimer les données de l'application?</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 d93d9b1..d30b28df 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fr"> +<translation id="1016498331642356377">Recherchez rapidement par commande vocale. Pour modifier ce raccourci, appuyez dessus de manière prolongée.</translation> <translation id="1028699632127661925">Envoi sur <ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">Effacer ces données ?</translation> <translation id="1036348656032585052">Désactiver</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">texte</translation> <translation id="2068748236079642969">Regarder la vidéo suivante</translation> <translation id="2074143993849053708">Interface d'autorisation pour la recherche vocale de l'Assistant fermée</translation> +<translation id="2075835334924942448">Vous trouverez des articles ici</translation> <translation id="2082238445998314030">Résultat <ph name="RESULT_NUMBER" /> sur <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Synchroniser et personnaliser les données sur tous les appareils</translation> <translation id="2100273922101894616">Connexion automatique</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> économisés</translation> <translation id="213279576345780926">L'onglet "<ph name="TAB_TITLE" />" a été fermé.</translation> <translation id="2139186145475833000">Ajouter à l'écran d'accueil</translation> +<translation id="2141396931810938595">D'après votre utilisation</translation> <translation id="214888715418183969">Sélectionnez le type de données que vous acceptez de partager avec Chrome. Ces statistiques serviront à améliorer les fonctionnalités, les performances et la stabilité de Chrome.</translation> <translation id="2154484045852737596">Modifier la carte</translation> <translation id="2154710561487035718">Copier l'URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# fichier audio}one{# fichier audio}other{# fichiers audio}}</translation> <translation id="2656405586795711023">Applications Web</translation> <translation id="2689830683995595741">En utilisant Chrome, vous acceptez les <ph name="BEGIN_LINK1" />Conditions d'utilisation de Google<ph name="END_LINK1" /> et les <ph name="BEGIN_LINK2" />Conditions d'utilisation supplémentaires de Google Chrome et Chrome OS<ph name="END_LINK2" />. L'<ph name="BEGIN_LINK3" />Avis de confidentialité relatif aux comptes Google gérés avec Family Link<ph name="END_LINK3" /> s'applique également.</translation> +<translation id="2702516483241149200">Nouveau : partagez un lien vers ce texte</translation> <translation id="2704606927547763573">Copié</translation> <translation id="2707726405694321444">Actualiser la page</translation> <translation id="271033894570825754">Nouveau</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> secondes restantes</translation> <translation id="2779651927720337254">échec</translation> <translation id="2781151931089541271">1 seconde restante</translation> +<translation id="2788468313014644040">Numéro du groupe</translation> <translation id="2801022321632964776">Lancez la mise à jour pour obtenir votre langue dans la dernière version de Chrome</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2806840421670364300">FLoC (Federated Learning of Cohorts)</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Ce compte est géré par <ph name="PARENT_NAME_1" /> et <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> page non lue}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> page non lue}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> pages non lues}}</translation> <translation id="2979025552038692506">Onglet de navigation privée sélectionné</translation> +<translation id="2979448359891869301">Impossible d'étendre la capture d'écran. Réessayez lorsque votre téléphone ne sera plus occupé.</translation> <translation id="2987620471460279764">Texte partagé depuis un autre appareil</translation> <translation id="2989523299700148168">Consultations récentes</translation> <translation id="2992473221983447149">Descriptions d'images</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Gérer les sites que vous suivez</translation> <translation id="3269093882174072735">Charger l'image</translation> <translation id="3269956123044984603">Activez l'option "Synchro auto des données" dans les paramètres Android de votre compte Google pour accéder à vos onglets sur vos autres appareils.</translation> +<translation id="3280562213547448728">Recherche vocale</translation> <translation id="3282568296779691940">Connectez-vous à Chrome</translation> <translation id="3284510035090979597">Aide proactive</translation> <translation id="3285080554353377245">Vidéos sur l'utilisation de Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Contenu du presse-papiers affiché</translation> <translation id="3566923219790363270">Le mode de réalité virtuelle n'est pas encore prêt. Redémarrez Chrome plus tard.</translation> <translation id="3568688522516854065">Connectez-vous et activez la synchronisation pour accéder à vos onglets sur vos autres appareils</translation> +<translation id="3577473026931028326">Un problème est survenu. Réessayez.</translation> <translation id="3587482841069643663">Tous</translation> <translation id="3587596251841506391">Contribuer à sécuriser le Web</translation> <translation id="3602290021589620013">Aperçu</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sépia</translation> <translation id="4060598801229743805">Options disponibles à proximité du haut de l'écran</translation> <translation id="4062305924942672200">Informations légales</translation> -<translation id="4082818367361753283">ID du groupe</translation> <translation id="4084682180776658562">Favori</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" />, <ph name="BEGIN_DEEMPHASIZED" />proposé par Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Supprimer les données de l'application ?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Ouvrir dans un nouvel onglet</translation> <translation id="4198423547019359126">Aucun emplacement de téléchargements disponible</translation> <translation id="4209895695669353772">Activez la synchronisation pour obtenir des suggestions de contenu personnalisées de la part de Google</translation> +<translation id="4225895483398857530">Raccourci de la barre d'outils</translation> <translation id="4242533952199664413">Ouvrir les paramètres</translation> <translation id="4248098802131000011">Protégez vos mots de passe contre les violations de données et d'autres problèmes liés à la sécurité</translation> <translation id="4250229828105606438">Capture d'écran</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">En attente d'un autre téléchargement…</translation> <translation id="5865733239029070421">Envoie automatiquement des statistiques d'utilisation et des rapports d'erreur à Google</translation> <translation id="5869522115854928033">Mots de passe enregistrés</translation> +<translation id="587735546353481577">Pour suivre un site, accédez-y, ouvrez le menu Chrome et appuyez sur "Suivre".</translation> <translation id="5880748256563468367">Accéder au flux</translation> <translation id="5884076754568147479">Pour vous aider à effectuer des tâches, Google recevra les URL et le contenu des sites sur lesquels vous utilisez l'Assistant, ainsi que les informations que vous envoyez via celui-ci</translation> <translation id="5919204609460789179">Mettre à jour <ph name="PRODUCT_NAME" /> pour lancer la synchronisation</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> économisé(s)</translation> <translation id="5939518447894949180">Réinitialiser</translation> <translation id="5942872142862698679">Utilisation de Google pour les recherches</translation> +<translation id="5945035219773565305">Recommandation actuelle : <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Page en ligne</translation> <translation id="5952764234151283551">Envoie l'URL de la page que vous essayez d'ouvrir à Google</translation> <translation id="5956665950594638604">Ouvrir le centre d'aide dans un nouvel onglet</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Se réabonner</translation> <translation id="6002623704405939939">Pour effacer l'<ph name="BEGIN_LINK1" />historique des recherches<ph name="END_LINK1" /> ou d'autres historiques, consultez <ph name="BEGIN_LINK2" />Mon activité Google<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Mot de passe suggéré</translation> +<translation id="6032091552407840792">Cet essai n'est actif que dans <ph name="BEGIN_LINK" />certaines régions<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Avec <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome développe de nouvelles technologies pour vous protéger contre le suivi intersite tout en préservant le Web ouvert. + +Les essais Privacy Sandbox sont encore en développement et ne sont disponibles que dans certaines régions. Pour le moment, les sites peuvent essayer Privacy Sandbox sans désactiver les technologies Web actuelles comme les cookies tiers.</translation> <translation id="6036057147555329831">ICU supplémentaire</translation> <translation id="6039379616847168523">Accéder à l'onglet suivant</translation> <translation id="6040143037577758943">Fermer</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Impossible de se connecter à votre ordinateur. Essayez une autre option de validation.</translation> <translation id="6410404864818553978">Données d'utilisation de base</translation> <translation id="6410883413783534063">Utilisez les onglets pour consulter plusieurs pages en même temps</translation> +<translation id="6411219469806822692">Impossible d'aller plus haut. Essayez de commencer plus haut sur la page.</translation> <translation id="6412673304250309937">Il vérifie les URL d'après une liste de sites dangereux stockée dans Chrome. Si un site tente de voler votre mot de passe ou si vous téléchargez un fichier dangereux, Chrome peut également envoyer les URL concernées, y compris des extraits du contenu de pages, à la fonctionnalité de navigation sécurisée.</translation> <translation id="641643625718530986">Imprimer…</translation> <translation id="6427112570124116297">Traduire le Web</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Votre minuteur <ph name="FQDN" /> a expiré. Il redémarrera demain.</translation> <translation id="6738516213925468394">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />phrase secrète de synchronisation<ph name="END_LINK" /> le <ph name="TIME" />. Saisissez-la pour lancer la synchronisation.</translation> <translation id="6738867403308150051">Téléchargement en cours…</translation> +<translation id="6751521182688001123">Ouvre rapidement un nouvel onglet. Pour modifier ce raccourci, appuyez dessus de manière prolongée.</translation> <translation id="6767294960381293877">La liste des appareils avec lesquels vous pouvez partager un onglet est ouverte à mi-hauteur.</translation> <translation id="6783942555455976443">Enregistrer cette page pour plus tard et recevoir un rappel</translation> <translation id="6811034713472274749">La page est prête à être affichée</translation> <translation id="6813446258015311409">Se connecter à Chrome, ouvert.</translation> +<translation id="6817747507826986771">Partagez rapidement cette page. Pour modifier ce raccourci, appuyez dessus de manière prolongée.</translation> <translation id="6820686453637990663">Code CVC :</translation> <translation id="6824899148643461612">"<ph name="TAB_TITLE" />", onglet, sélectionné</translation> <translation id="6846298663435243399">Chargement…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">L'ajout du site précédent est toujours en cours</translation> <translation id="7339898014177206373">Nouvelle fenêtre</translation> <translation id="7340958967809483333">Options pour Discover</translation> +<translation id="7352339641508007922">Faites glisser pour prendre une capture d'écran pleine page</translation> <translation id="7352651011704765696">Un problème est survenu</translation> <translation id="7352939065658542140">VIDÉO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Partager 1 élément sélectionné}one{Partager # élément sélectionné}other{Partager # éléments sélectionnés}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Tout supprimer</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Vous avez <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> page non lue}one{Vous avez <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> page non lue}other{Vous avez <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> pages non lues}}</translation> <translation id="7882131421121961860">Aucun historique trouvé</translation> +<translation id="7884346424584885269">Chrome doit être autorisé à rechercher les appareils à proximité. <ph name="BEGIN_LINK" />Modifiez les autorisations.<ph name="END_LINK" /></translation> <translation id="7886917304091689118">En cours d'exécution dans Chrome</translation> <translation id="789763218334337857">Comment utiliser Google Chrome</translation> <translation id="7903184275147100332">Cela peut prendre une minute</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Chiffrer les données synchronisées avec votre propre phrase secrète de synchronisation</translation> <translation id="8466613982764129868">Assurez-vous que l'appareil <ph name="TARGET_DEVICE_NAME" /> est connecté à Internet</translation> <translation id="8473863474539038330">Adresses et autres</translation> +<translation id="8481921391193215807">Lorsque cette option est activée, les sites peuvent utiliser les techniques présentées ici, qui préservent la vie privée, pour fournir leurs contenus et leurs services. Ces techniques incluent des alternatives au suivi intersite. D'autres méthodes pourront être mises à l'essai par la suite. + +<ph name="BEGIN_LIST_ITEM1" />Les annonceurs et les éditeurs peuvent utiliser le FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Les annonceurs et les éditeurs peuvent évaluer l'efficacité des annonces sans utiliser le suivi intersite.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Les fonctionnalités à l'essai sont activées</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Ouvrir la page "Historique"</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">1 fichier restant</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Impossible de passer des appels</translation> +<translation id="9212845824145208577">Impossible d'aller plus bas. Essayez de commencer plus bas sur la page.</translation> <translation id="9219103736887031265">Images</translation> <translation id="926205370408745186">Supprimer votre activité Chrome de Bien-être numérique</translation> <translation id="927968626442779827">Utilisez le mode simplifié dans Google Chrome</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 032f645..48360d3 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Quedan <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">produciuse un erro</translation> <translation id="2781151931089541271">Queda 1 segundo</translation> +<translation id="2788468313014644040">Número do grupo</translation> <translation id="2801022321632964776">Descarga a última versión de Chrome para poder navegar no teu idioma</translation> <translation id="2805756323405976993">Aplicacións</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opcións dispoñibles preto da parte superior da pantalla</translation> <translation id="4062305924942672200">Información legal</translation> -<translation id="4082818367361753283">Código de identificación do grupo</translation> <translation id="4084682180776658562">Marcador</translation> <translation id="4084712963632273211">Contido publicado por <ph name="PUBLISHER_ORIGIN" /> e <ph name="BEGIN_DEEMPHASIZED" />ofrecido por Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Queres eliminar os datos da aplicación?</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 660076f..f9c8bc20 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
@@ -459,7 +459,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">સ્ક્રીનની ટોચ પર વિકલ્પો ઉપલબ્ધ છે</translation> <translation id="4062305924942672200">કાનુની માહિતી</translation> -<translation id="4082818367361753283">ગ્રૂપ ID</translation> <translation id="4084682180776658562">બુકમાર્ક</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> તરફથી - <ph name="BEGIN_DEEMPHASIZED" />Google દ્વારા વિતરિત <ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ઍપનો ડેટા ડિલીટ કરીએ?</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 298ebf8..eb4f308e 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> सेकंड शेष</translation> <translation id="2779651927720337254">डाउनलोड नहीं हो सका</translation> <translation id="2781151931089541271">1 सेकंड शेष</translation> +<translation id="2788468313014644040">ग्रुप नंबर</translation> <translation id="2801022321632964776">Chrome के नए वर्शन में अपनी भाषा पाने के लिए अपडेट करें</translation> <translation id="2805756323405976993">ऐप्स</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">स्क्रीन के शीर्ष भाग में मौजूद विकल्प</translation> <translation id="4062305924942672200">कानूनी जानकारी</translation> -<translation id="4082818367361753283">ग्रुप आईडी</translation> <translation id="4084682180776658562">बुकमार्क</translation> <translation id="4084712963632273211">प्रकाशक: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google की ओर से डिलीवर किया गया<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ऐप्लिकेशन डेटा मिटाएं?</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 7609c631..bc61714 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Preostalo sekundi: <ph name="SECONDS" /></translation> <translation id="2779651927720337254">nije uspjelo</translation> <translation id="2781151931089541271">Još 1 s</translation> +<translation id="2788468313014644040">Broj grupe</translation> <translation id="2801022321632964776">Ažurirajte Chrome na najnoviju verziju za prikaz na vašem jeziku</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2806840421670364300">FLoC</translation> @@ -466,7 +467,6 @@ <translation id="4056223980640387499">Sepija</translation> <translation id="4060598801229743805">Opcije su dostupne pri vrhu zaslona</translation> <translation id="4062305924942672200">Pravne informacije</translation> -<translation id="4082818367361753283">ID grupe</translation> <translation id="4084682180776658562">Oznaka</translation> <translation id="4084712963632273211">Objavio <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />omogućio Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Želite li izbrisati podatke aplikacije?</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 516acae..83b9786 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> másodperc van hátra</translation> <translation id="2779651927720337254">sikertelen</translation> <translation id="2781151931089541271">1 másodperc van hátra</translation> +<translation id="2788468313014644040">Csoportszám</translation> <translation id="2801022321632964776">Frissítsen, hogy a saját nyelvén használhassa a Chrome legújabb verzióját</translation> <translation id="2805756323405976993">Alkalmazások</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Szépia</translation> <translation id="4060598801229743805">A lehetőségek a képernyő tetején találhatók</translation> <translation id="4062305924942672200">Jogi információk</translation> -<translation id="4082818367361753283">Csoportazonosító</translation> <translation id="4084682180776658562">Könyvjelző</translation> <translation id="4084712963632273211">A következőtől: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />megjelenítette a Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Törli az alkalmazásadatokat?</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 c1e9877..5987031f 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Մնացել է <ph name="SECONDS" /> վրկ</translation> <translation id="2779651927720337254">չհաջողվեց ներբեռնել</translation> <translation id="2781151931089541271">Մնացել է 1 վրկ</translation> +<translation id="2788468313014644040">Խմբի համարը</translation> <translation id="2801022321632964776">Տեղադրեք Chrome-ի վերջին տարբերակը՝ կայքերը ձեր լեզվով դիտելու համար</translation> <translation id="2805756323405976993">Հավելվածներ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Սեպիա</translation> <translation id="4060598801229743805">Ընտրանքները հասանելի են էկրանի վերին հատվածում</translation> <translation id="4062305924942672200">Իրավական տեղեկություններ</translation> -<translation id="4082818367361753283">Խմբի ID</translation> <translation id="4084682180776658562">Էջանիշ</translation> <translation id="4084712963632273211">Բովանդակությունը՝ <ph name="PUBLISHER_ORIGIN" /> կայքից։ <ph name="BEGIN_DEEMPHASIZED" />Մատուցվում է Google-ի կողմից<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Ջնջե՞լ հավելվածների տվյալները:</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 1376854..1403def 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="id"> +<translation id="1016498331642356377">Telusuri dengan cepat menggunakan suara Anda. Sentuh lama untuk mengedit pintasan ini.</translation> <translation id="1028699632127661925">Mengirim ke <ph name="DEVICE_NAME" />...</translation> <translation id="103269572468856066">Hapus data dari situs dan aplikasi ini juga?</translation> <translation id="1036348656032585052">Matikan</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">teks</translation> <translation id="2068748236079642969">Tonton video berikutnya</translation> <translation id="2074143993849053708">UI izin penelusuran suara Asisten ditutup</translation> +<translation id="2075835334924942448">Anda akan menemukan artikel di sini</translation> <translation id="2082238445998314030">Hasil <ph name="RESULT_NUMBER" /> dari <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Sinkronkan dan personalisasi di berbagai perangkat</translation> <translation id="2100273922101894616">Login Otomatis</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> dihemat</translation> <translation id="213279576345780926">Menutup <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Tambahkan ke Layar Utama</translation> +<translation id="2141396931810938595">Berdasarkan penggunaan Anda</translation> <translation id="214888715418183969">Pilih metrik yang ingin dibagikan ke Chrome. Metrik yang Anda bagikan akan digunakan untuk membantu menyempurnakan fitur, performa, dan stabilitas Chrome.</translation> <translation id="2154484045852737596">Edit kartu</translation> <translation id="2154710561487035718">Salin URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# File audio}other{# File audio}}</translation> <translation id="2656405586795711023">Aplikasi web</translation> <translation id="2689830683995595741">Dengan menggunakan Chrome, Anda menyetujui <ph name="BEGIN_LINK1" />Persyaratan Layanan Google<ph name="END_LINK1" /> serta <ph name="BEGIN_LINK2" />Persyaratan Layanan Tambahan Google Chrome dan Chrome OS<ph name="END_LINK2" />. <ph name="BEGIN_LINK3" />Pemberitahuan Privasi untuk Akun Google yang Dikelola dengan Family Link<ph name="END_LINK3" /> juga berlaku.</translation> +<translation id="2702516483241149200">Baru: bagikan link yang men-scroll ke teks ini</translation> <translation id="2704606927547763573">Disalin</translation> <translation id="2707726405694321444">Segarkan halaman</translation> <translation id="271033894570825754">Baru</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> detik lagi</translation> <translation id="2779651927720337254">gagal</translation> <translation id="2781151931089541271">1 detik lagi</translation> +<translation id="2788468313014644040">Nomor grup</translation> <translation id="2801022321632964776">Update untuk mendapatkan bahasa Anda di versi terbaru Chrome</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Akun ini dikelola oleh <ph name="PARENT_NAME_1" /> dan <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> halaman belum dibaca}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> halaman belum dibaca}}</translation> <translation id="2979025552038692506">Tab Samaran yang Dipilih</translation> +<translation id="2979448359891869301">Tidak dapat memperpanjang screenshot. Coba lagi saat ponsel tidak sibuk.</translation> <translation id="2987620471460279764">Teks yang dibagikan dari perangkat lain</translation> <translation id="2989523299700148168">Baru saja dikunjungi</translation> <translation id="2992473221983447149">Deskripsi gambar</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Kelola situs yang Anda ikuti</translation> <translation id="3269093882174072735">Muat gambar</translation> <translation id="3269956123044984603">Untuk mengakses tab Anda dari perangkat lainnya, aktifkan "Sinkronisasi data otomatis" di setelan akun Android.</translation> +<translation id="3280562213547448728">Penelusuran suara</translation> <translation id="3282568296779691940">Login ke Chrome</translation> <translation id="3284510035090979597">Bantuan Proaktif</translation> <translation id="3285080554353377245">Video tentang cara menggunakan Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Konten papan klip ditampilkan</translation> <translation id="3566923219790363270">Chrome masih bersiap untuk menggunakan VR. Mulai ulang Chrome nanti.</translation> <translation id="3568688522516854065">Untuk membuka tab dari perangkat Anda yang lain, login dan aktifkan sinkronisasi</translation> +<translation id="3577473026931028326">Terjadi error. Coba lagi.</translation> <translation id="3587482841069643663">Semua</translation> <translation id="3587596251841506391">Bantu sempurnakan keamanan di web</translation> <translation id="3602290021589620013">Pratinjau</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opsi yang tersedia di dekat bagian atas layar</translation> <translation id="4062305924942672200">Informasi hukum</translation> -<translation id="4082818367361753283">ID Grup</translation> <translation id="4084682180776658562">Bookmark</translation> <translation id="4084712963632273211">Dari <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />dikirim oleh Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Hapus data aplikasi?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Buka di tab baru</translation> <translation id="4198423547019359126">Tidak tersedia lokasi download</translation> <translation id="4209895695669353772">Untuk mendapatkan konten hasil personalisasi yang disarankan oleh Google, aktifkan sinkronisasi</translation> +<translation id="4225895483398857530">Pintasan toolbar</translation> <translation id="4242533952199664413">Buka setelan</translation> <translation id="4248098802131000011">Amankan sandi Anda dari pelanggaran data dan masalah keamanan lainnya</translation> <translation id="4250229828105606438">Screenshot</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Menunggu proses download lain…</translation> <translation id="5865733239029070421">Secara otomatis mengirimkan statistik penggunaan dan laporan kerusakan ke Google</translation> <translation id="5869522115854928033">Sandi tersimpan</translation> +<translation id="587735546353481577">Untuk mengikuti situs, buka situs, buka menu Chrome, dan ketuk Ikuti.</translation> <translation id="5880748256563468367">Buka feed</translation> <translation id="5884076754568147479">Untuk membantu Anda menyelesaikan tugas, Google akan menerima URL dan konten situs tempat Anda menggunakan Asisten, serta informasi yang Anda kirimkan melalui Asisten</translation> <translation id="5919204609460789179">Perbarui <ph name="PRODUCT_NAME" /> untuk memulai sinkronisasi</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> dihemat</translation> <translation id="5939518447894949180">Reset</translation> <translation id="5942872142862698679">Menggunakan Google untuk penelusuran</translation> +<translation id="5945035219773565305">Rekomendasi saat ini : <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Melihat halaman live</translation> <translation id="5952764234151283551">Mengirimkan URL halaman yang ingin Anda buka ke Google</translation> <translation id="5956665950594638604">Membuka Pusat Bantuan Chrome di tab baru</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Ikuti kembali</translation> <translation id="6002623704405939939">Untuk menghapus <ph name="BEGIN_LINK1" />penelusuran<ph name="END_LINK1" /> atau bentuk histori lainnya, buka <ph name="BEGIN_LINK2" />Aktivitas Google Saya<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Sandi yang disarankan</translation> +<translation id="6032091552407840792">Uji coba ini hanya aktif di <ph name="BEGIN_LINK" />beberapa wilayah<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Dengan <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome mengembangkan teknologi baru untuk mengamankan Anda dari pelacakan lintas situs sekaligus mempertahankan web terbuka. + +Uji coba Privacy Sandbox masih dalam pengembangan aktif dan hanya tersedia di wilayah tertentu. Untuk saat ini, situs dapat mencoba Privacy Sandbox sambil tetap menggunakan teknologi web saat ini seperti cookie pihak ketiga.</translation> <translation id="6036057147555329831">ICU tambahan</translation> <translation id="6039379616847168523">Beralih ke tab berikutnya</translation> <translation id="6040143037577758943">Tutup</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Tidak dapat terhubung ke komputer. Coba opsi verifikasi lain.</translation> <translation id="6410404864818553978">Data penggunaan dasar</translation> <translation id="6410883413783534063">Buka tab untuk mengunjungi halaman yang berbeda secara bersamaan</translation> +<translation id="6411219469806822692">Tidak dapat lebih tinggi lagi. Coba mulai dari bagian yang lebih atas pada halaman.</translation> <translation id="6412673304250309937">Memeriksa kesesuaian URL dengan daftar situs tidak aman yang disimpan di Chrome. Jika situs berusaha mencuri sandi Anda, atau jika Anda mendownload file berbahaya, Chrome mungkin juga mengirim URL, termasuk bit konten halaman, ke Safe Browsing.</translation> <translation id="641643625718530986">Cetak...</translation> <translation id="6427112570124116297">Terjemahkan Web</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Timer <ph name="FQDN" /> Anda telah berakhir. Timer akan dimulai lagi besok.</translation> <translation id="6738516213925468394">Data Anda dienkripsi dengan <ph name="BEGIN_LINK" />frasa sandi sinkronisasi<ph name="END_LINK" /> pada tanggal <ph name="TIME" />. Masukkan frasa sandi untuk memulai sinkronisasi.</translation> <translation id="6738867403308150051">Mendownload…</translation> +<translation id="6751521182688001123">Buka tab baru dengan cepat. Sentuh lama untuk mengedit pintasan ini.</translation> <translation id="6767294960381293877">Daftar perangkat yang dapat digunakan untuk berbagi tab terbuka dalam setengah layar.</translation> <translation id="6783942555455976443">Simpan halaman ini untuk dilihat nanti dan dapatkan pengingat</translation> <translation id="6811034713472274749">Halaman siap ditampilkan</translation> <translation id="6813446258015311409">Login ke Chrome, dibuka.</translation> +<translation id="6817747507826986771">Bagikan halaman ini dengan cepat. Sentuh lama untuk mengedit pintasan ini.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">Tab <ph name="TAB_TITLE" /> dipilih</translation> <translation id="6846298663435243399">Memuat...</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Masih menambahkan situs sebelumnya</translation> <translation id="7339898014177206373">Jendela baru</translation> <translation id="7340958967809483333">Opsi untuk Discover</translation> +<translation id="7352339641508007922">Tarik untuk mengambil screenshot panjang</translation> <translation id="7352651011704765696">Ada yang tidak beres</translation> <translation id="7352939065658542140">VIDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Bagikan 1 item yang dipilih}other{Bagikan # item yang dipilih}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Hapus semua</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Anda memiliki <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> halaman yang belum dibaca}other{Anda memiliki <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> halaman yang belum dibaca}}</translation> <translation id="7882131421121961860">Tidak ada histori</translation> +<translation id="7884346424584885269">Chrome memerlukan izin untuk memindai perangkat di sekitar. <ph name="BEGIN_LINK" />Perbarui izin<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">Berjalan di Chrome</translation> <translation id="789763218334337857">Cara menggunakan Chrome</translation> <translation id="7903184275147100332">Mungkin perlu waktu beberapa saat</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Enkripsikan data yang disinkronkan dengan frasa sandi sinkronisasi Anda sendiri</translation> <translation id="8466613982764129868">Pastikan <ph name="TARGET_DEVICE_NAME" /> tersambung ke internet</translation> <translation id="8473863474539038330">Alamat dan lain-lain</translation> +<translation id="8481921391193215807">Jika aktif, situs dapat menggunakan teknik yang melindungi privasi seperti yang ditunjukkan di sini untuk menyediakan konten dan layanannya. Ini termasuk alternatif untuk pelacakan lintas situs. Uji coba lainnya dapat ditambahkan seiring waktu. + +<ph name="BEGIN_LIST_ITEM1" />Pengiklan dan penayang dapat menggunakan FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Pengiklan dan penayang dapat mempelajari keefektifan iklan dengan cara yang tidak melacak Anda di berbagai situs.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Fitur uji coba aktif</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Membuka halaman histori</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">1 file tersisa</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Tidak dapat menelepon</translation> +<translation id="9212845824145208577">Tidak dapat lebih rendah lagi. Coba mulai dari bagian yang lebih bawah pada halaman.</translation> <translation id="9219103736887031265">Gambar</translation> <translation id="926205370408745186">Hapus aktivitas Chrome Anda dari Kesehatan Digital</translation> <translation id="927968626442779827">Gunakan Mode Ringan di Google Chrome</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 de9c058..899166c 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sek. eftir</translation> <translation id="2779651927720337254">mistókst</translation> <translation id="2781151931089541271">Ein sek. eftir</translation> +<translation id="2788468313014644040">Númer hóps</translation> <translation id="2801022321632964776">Uppfærðu til að fá tungumálið þitt í nýjustu útgáfunni af Chrome</translation> <translation id="2805756323405976993">Forrit</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Brúnn blær</translation> <translation id="4060598801229743805">Valkosti er að finna ofarlega á skjánum</translation> <translation id="4062305924942672200">Lagalegar upplýsingar</translation> -<translation id="4082818367361753283">Hópauðkenni</translation> <translation id="4084682180776658562">Bókamerki</translation> <translation id="4084712963632273211">Frá <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />birt af Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Eyða forritsgögnum?</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 768e074cf..f53b613 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="it"> +<translation id="1016498331642356377">Cerca rapidamente con la tua voce. Tocca e tieni premuto per modificare questa scorciatoia.</translation> <translation id="1028699632127661925">Invio a <ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">Vuoi cancellare anche i dati di questi siti e app?</translation> <translation id="1036348656032585052">Disattiva</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">testo</translation> <translation id="2068748236079642969">Guarda il video successivo</translation> <translation id="2074143993849053708">Interfaccia utente per il consenso all'utilizzo dell'assistente per la ricerca vocale chiusa</translation> +<translation id="2075835334924942448">Vedrai le storie qui</translation> <translation id="2082238445998314030">Risultato <ph name="RESULT_NUMBER" /> di <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Sincronizza e personalizza su tutti i dispositivi</translation> <translation id="2100273922101894616">Accesso automatico</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">Dati risparmiati: <ph name="DATA" /></translation> <translation id="213279576345780926">La scheda <ph name="TAB_TITLE" /> è stata chiusa</translation> <translation id="2139186145475833000">Aggiungi a schermata Home</translation> +<translation id="2141396931810938595">In base al tuo utilizzo</translation> <translation id="214888715418183969">Scegli quali dati condividere con Chrome. Le metriche che condividi verranno utilizzate per contribuire a migliorare le funzionalità, le prestazioni e la stabilità di Chrome.</translation> <translation id="2154484045852737596">Modifica la carta</translation> <translation id="2154710561487035718">Copia URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# file audio}other{# file audio}}</translation> <translation id="2656405586795711023">App web</translation> <translation id="2689830683995595741">Utilizzando Chrome, accetti i <ph name="BEGIN_LINK1" />Termini di servizio di Google<ph name="END_LINK1" /> e i <ph name="BEGIN_LINK2" />Termini di servizio aggiuntivi di Google Chrome e Chrome OS<ph name="END_LINK2" />. Si applica inoltre l'<ph name="BEGIN_LINK3" />Informativa sulla privacy per gli Account Google gestiti tramite Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Novità: condividi un link che scorre direttamente a questo testo</translation> <translation id="2704606927547763573">Copiata</translation> <translation id="2707726405694321444">Aggiorna la pagina</translation> <translation id="271033894570825754">Nuovo</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sec rimanenti</translation> <translation id="2779651927720337254">non riuscito</translation> <translation id="2781151931089541271">1 sec rimanente</translation> +<translation id="2788468313014644040">Numero del gruppo</translation> <translation id="2801022321632964776">Aggiorna per avere a disposizione la tua lingua nell'ultima versione di Chrome</translation> <translation id="2805756323405976993">App</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Questo account è gestito da <ph name="PARENT_NAME_1" /> e <ph name="PARENT_NAME_2" /></translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> pagina da leggere}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> pagine da leggere}}</translation> <translation id="2979025552038692506">Scheda in incognito selezionata</translation> +<translation id="2979448359891869301">Non puoi estendere lo screenshot. Riprova quando ci sono meno processi in esecuzione sul telefono.</translation> <translation id="2987620471460279764">Testo condiviso da un altro dispositivo</translation> <translation id="2989523299700148168">Visitati di recente</translation> <translation id="2992473221983447149">Descrizioni delle immagini</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Gestisci i siti che segui</translation> <translation id="3269093882174072735">Carica immagine</translation> <translation id="3269956123044984603">Attiva la funzione "Sincronizzazione automatica dei dati" nelle impostazioni dell'account Android per trovare le tue schede sugli altri tuoi dispositivi.</translation> +<translation id="3280562213547448728">Ricerca vocale</translation> <translation id="3282568296779691940">Accedi a Chrome</translation> <translation id="3284510035090979597">Assistenza tempestiva</translation> <translation id="3285080554353377245">Video relativi all'utilizzo di Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Contenuti degli Appunti visualizzati</translation> <translation id="3566923219790363270">La modalità VR è ancora nella fase preparatoria in Chrome. Riavvia Chrome più tardi.</translation> <translation id="3568688522516854065">Accedi e attiva la sincronizzazione per trovare le tue schede degli altri dispositivi</translation> +<translation id="3577473026931028326">Si è verificato un errore. Riprova.</translation> <translation id="3587482841069643663">Tutti</translation> <translation id="3587596251841506391">Aumenta la sicurezza sul Web</translation> <translation id="3602290021589620013">Anteprima</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Seppia</translation> <translation id="4060598801229743805">Opzioni disponibili nella parte superiore dello schermo</translation> <translation id="4062305924942672200">Informazioni legali</translation> -<translation id="4082818367361753283">ID gruppo</translation> <translation id="4084682180776658562">Aggiungi ai Preferiti</translation> <translation id="4084712963632273211">Di <ph name="PUBLISHER_ORIGIN" /> - <ph name="BEGIN_DEEMPHASIZED" />pubblicata da Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Eliminare i dati delle app?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Apri in un'altra scheda</translation> <translation id="4198423547019359126">Nessun percorso di download disponibile</translation> <translation id="4209895695669353772">Per ricevere contenuti suggeriti appositamente per te da Google, attiva la sincronizzazione</translation> +<translation id="4225895483398857530">Scorciatoia per la barra degli strumenti</translation> <translation id="4242533952199664413">Apri le impostazioni</translation> <translation id="4248098802131000011">Proteggi le tue password da violazioni dei dati e altri problemi di sicurezza</translation> <translation id="4250229828105606438">Screenshot</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">In attesa di un altro download…</translation> <translation id="5865733239029070421">Invia automaticamente a Google statistiche sull'utilizzo e rapporti sugli arresti anomali</translation> <translation id="5869522115854928033">Password salvate</translation> +<translation id="587735546353481577">Per seguire un sito, aprilo, vai al menu Chrome e tocca Segui.</translation> <translation id="5880748256563468367">Vai al feed</translation> <translation id="5884076754568147479">Per aiutarti a completare le attività, Google riceverà gli URL e i contenuti dei siti su cui utilizzi l'assistente, oltre alle informazioni che invii attraverso l'assistente</translation> <translation id="5919204609460789179">Aggiorna <ph name="PRODUCT_NAME" /> per avviare la sincronizzazione</translation> <translation id="5937580074298050696">Dati risparmiati: <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">Reimposta</translation> <translation id="5942872142862698679">Google in uso per la ricerca</translation> +<translation id="5945035219773565305">Consiglio corrente: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Visualizzazione della pagina attiva</translation> <translation id="5952764234151283551">Invia a Google l'URL della pagina a cui stai tentando di accedere</translation> <translation id="5956665950594638604">Apri Centro assistenza di Chrome in nuova scheda</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Segui di nuovo</translation> <translation id="6002623704405939939">Per cancellare la cronologia delle <ph name="BEGIN_LINK1" />ricerche<ph name="END_LINK1" /> o altri tipi di cronologia, visita la pagina <ph name="BEGIN_LINK2" />Le mie attività Google<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Password consigliata</translation> +<translation id="6032091552407840792">Questa prova è attiva soltanto in <ph name="BEGIN_LINK" />alcune aree geografiche<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Con <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" />, Chrome sviluppa nuove tecnologie che ti tutelano dai meccanismi di tracciamento tra siti salvaguardando al contempo il Web aperto. + +Le prove di Privacy Sandbox sono ancora in fase di sviluppo attivo e sono disponibili soltanto in alcune aree geografiche. Per il momento i siti possono provare Privacy Sandbox continuando a usare le attuali tecnologie web quali i cookie di terze parti.</translation> <translation id="6036057147555329831">ICU extra</translation> <translation id="6039379616847168523">Vai alla scheda successiva</translation> <translation id="6040143037577758943">Chiudi</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Impossibile connettersi al computer. Prova con un'altra opzione di verifica.</translation> <translation id="6410404864818553978">Dati di base sull'utilizzo</translation> <translation id="6410883413783534063">Apri più schede per visitare pagine diverse contemporaneamente</translation> +<translation id="6411219469806822692">Non puoi scorrere più in alto di così. Prova a partire da un punto più in alto nella pagina.</translation> <translation id="6412673304250309937">Verifica gli URL con un elenco di siti non sicuri archiviati in Chrome. Se un sito cerca di rubare la tua password o se scarichi un file dannoso, Chrome potrebbe inviare anche gli URL, inclusi bit e contenuti di pagina, a Navigazione sicura.</translation> <translation id="641643625718530986">Stampa…</translation> <translation id="6427112570124116297">Traduci il Web</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Il timer di <ph name="FQDN" /> è scaduto. Verrà riavviato domani.</translation> <translation id="6738516213925468394">I tuoi dati sono stati criptati con la tua <ph name="BEGIN_LINK" />passphrase di sincronizzazione<ph name="END_LINK" /> in data <ph name="TIME" />. Inseriscila per avviare la sincronizzazione.</translation> <translation id="6738867403308150051">Download in corso…</translation> +<translation id="6751521182688001123">Apri rapidamente una nuova scheda. Tocca e tieni premuto per modificare questa scorciatoia.</translation> <translation id="6767294960381293877">Elenco di dispositivi con cui condividere una scheda aperto nella parte inferiore dello schermo.</translation> <translation id="6783942555455976443">Salva questa pagina per un secondo momento e ricevi un promemoria</translation> <translation id="6811034713472274749">La pagina è pronta per essere visualizzata</translation> <translation id="6813446258015311409">Accedi a Chrome, foglio aperto.</translation> +<translation id="6817747507826986771">Condividi rapidamente questa pagina. Tocca e tieni premuto per modificare questa scorciatoia.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />, scheda, selezionata</translation> <translation id="6846298663435243399">Caricamento in corso…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Aggiunta del sito precedente ancora in corso</translation> <translation id="7339898014177206373">Nuova finestra</translation> <translation id="7340958967809483333">Opzioni per Discover</translation> +<translation id="7352339641508007922">Trascina per acquisire uno screenshot lungo</translation> <translation id="7352651011704765696">Si è verificato un problema</translation> <translation id="7352939065658542140">VIDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Condividi 1 elemento selezionato}other{Condividi # elementi selezionati}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Rimuovi tutto</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Hai <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> pagina da leggere}other{Hai <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> pagine da leggere}}</translation> <translation id="7882131421121961860">Nessuna cronologia trovata</translation> +<translation id="7884346424584885269">Chrome ha bisogno dell'autorizzazione per cercare dispositivi nelle vicinanze. <ph name="BEGIN_LINK" />Aggiorna autorizzazioni<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">In esecuzione in Chrome</translation> <translation id="789763218334337857">Come usare Chrome</translation> <translation id="7903184275147100332">L'operazione potrebbe richiedere un minuto</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Cripta i dati sincronizzati con la tua passphrase di sincronizzazione</translation> <translation id="8466613982764129868">Assicurati che il dispositivo <ph name="TARGET_DEVICE_NAME" /> sia connesso a Internet</translation> <translation id="8473863474539038330">Indirizzi e altro</translation> +<translation id="8481921391193215807">Se attivi questa funzionalità, i siti potrebbero usare le tecniche che garantiscono la tutela della privacy mostrate qui per fornire i propri contenuti e servizi. Sono incluse alternative al tracciamento tra siti. Nel tempo potrebbero essere aggiunte altre prove. + +<ph name="BEGIN_LIST_ITEM1" />Gli inserzionisti e i publisher possono usare la tecnologia FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Gli inserzionisti e i publisher possono esaminare l'efficacia degli annunci senza tracciarti tra i siti.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Funzionalità di prova attive</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Apri la pagina Cronologia</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">1 file rimanente</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Impossibile effettuare chiamate</translation> +<translation id="9212845824145208577">Non puoi scorrere più in basso di così. Prova a partire da un punto più in basso nella pagina.</translation> <translation id="9219103736887031265">Immagini</translation> <translation id="926205370408745186">Rimuovi la tua attività di Chrome da Benessere digitale</translation> <translation id="927968626442779827">Usa la modalità Lite su Google Chrome</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 1a479a3..da68253 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">נותרו <ph name="SECONDS" /> שניות</translation> <translation id="2779651927720337254">נכשל</translation> <translation id="2781151931089541271">נותרה שנייה אחת</translation> +<translation id="2788468313014644040">מספר הקבוצה</translation> <translation id="2801022321632964776">עדכון לגרסה האחרונה של Chrome יאפשר לך לקרוא בשפה שלך</translation> <translation id="2805756323405976993">אפליקציות</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">חום-ספיה</translation> <translation id="4060598801229743805">האפשרויות זמינות בחלק העליון של המסך</translation> <translation id="4062305924942672200">מידע משפטי</translation> -<translation id="4082818367361753283">מזהה קבוצה</translation> <translation id="4084682180776658562">סימנייה</translation> <translation id="4084712963632273211">מאת <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />מוגש על-ידי Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">למחוק נתוני יישומים?</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 071ea1f7..3febd23 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ja"> +<translation id="1016498331642356377">音声ですばやく検索します。このショートカットを編集するには、長押ししてください。</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" /> に送信しています...</translation> <translation id="103269572468856066">これらのサイトやアプリのデータも削除しますか?</translation> <translation id="1036348656032585052">オフにする</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">テキスト</translation> <translation id="2068748236079642969">次の動画を見る</translation> <translation id="2074143993849053708">アシスタントの音声検索の同意ダイアログが閉じられました</translation> +<translation id="2075835334924942448">ここに記事が表示されます</translation> <translation id="2082238445998314030">結果 <ph name="TOTAL_RESULTS" /> 件中 <ph name="RESULT_NUMBER" /> 件目</translation> <translation id="2096012225669085171">デバイス間の同期とカスタマイズ</translation> <translation id="2100273922101894616">自動ログイン</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> 削減しました</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> を閉じました</translation> <translation id="2139186145475833000">ホーム画面に追加</translation> +<translation id="2141396931810938595">使用状況を基に決定</translation> <translation id="214888715418183969">Chrome と共有してもよいものを選択してください。ご提供いただいた指標は、Chrome の機能、パフォーマンス、安定性の向上に利用させていただきます。</translation> <translation id="2154484045852737596">カードを編集</translation> <translation id="2154710561487035718">URL をコピー</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# 件の音声ファイル}other{# 件の音声ファイル}}</translation> <translation id="2656405586795711023">ウェブアプリ</translation> <translation id="2689830683995595741">Chrome を使用すると、<ph name="BEGIN_LINK1" />Google 利用規約<ph name="END_LINK1" />と <ph name="BEGIN_LINK2" />Google Chrome および Chrome OS 追加利用規約<ph name="END_LINK2" />に同意したことになります。また、<ph name="BEGIN_LINK3" />ファミリー リンクで管理する Google アカウントのプライバシーに関するお知らせ<ph name="END_LINK3" />も適用されます。</translation> +<translation id="2702516483241149200">新規: このテキストにスクロールするリンクを共有</translation> <translation id="2704606927547763573">コピーしました</translation> <translation id="2707726405694321444">ページを更新</translation> <translation id="271033894570825754">新しいファイル</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">残り <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> <translation id="2781151931089541271">残り 1 秒</translation> +<translation id="2788468313014644040">グループ番号</translation> <translation id="2801022321632964776">Chrome を更新し、最新バージョンでお使いの言語を入手してください</translation> <translation id="2805756323405976993">アプリ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">このアカウントは <ph name="PARENT_NAME_1" /> と <ph name="PARENT_NAME_2" /> によって管理されています。</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> 件の未読ページ}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> 件の未読ページ}}</translation> <translation id="2979025552038692506">選択したシークレット タブ</translation> +<translation id="2979448359891869301">スクリーンショットを展開できません。スマートフォンがビジー状態でないときにもう一度お試しください。</translation> <translation id="2987620471460279764">他のデバイスからテキストが共有されました</translation> <translation id="2989523299700148168">最近のアクセス</translation> <translation id="2992473221983447149">画像の説明</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">フォローするサイトを管理</translation> <translation id="3269093882174072735">画像を読み込む</translation> <translation id="3269956123044984603">他のデバイスと同じタブを使用するには、Android のアカウント設定で [データの自動同期] を有効にします。</translation> +<translation id="3280562213547448728">音声検索</translation> <translation id="3282568296779691940">Chrome にログイン</translation> <translation id="3284510035090979597">アクティブ サポート</translation> <translation id="3285080554353377245">Chrome の使い方に関する動画</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">クリップボードの内容が表示されています</translation> <translation id="3566923219790363270">Chrome はまだ VR の準備中です。しばらく待ってから Chrome を再起動してください。</translation> <translation id="3568688522516854065">他のデバイスと同じタブを使用するには、ログインして同期を有効にします</translation> +<translation id="3577473026931028326">エラーが発生しました。もう一度お試しください。</translation> <translation id="3587482841069643663">すべて</translation> <translation id="3587596251841506391">ウェブ上のセキュリティ強化に協力する</translation> <translation id="3602290021589620013">プレビュー</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">セピア</translation> <translation id="4060598801229743805">画面の上部にあるオプション</translation> <translation id="4062305924942672200">法的情報</translation> -<translation id="4082818367361753283">グループ ID</translation> <translation id="4084682180776658562">ブックマーク</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> のコンテンツ - <ph name="BEGIN_DEEMPHASIZED" />Google により配信<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">アプリデータを削除しますか?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">新しいタブで開く</translation> <translation id="4198423547019359126">ダウンロードの保存先はありません</translation> <translation id="4209895695669353772">ユーザーに合わせた Google からのおすすめコンテンツを表示するには、同期を有効にします</translation> +<translation id="4225895483398857530">ツールバー ショートカット</translation> <translation id="4242533952199664413">設定を開く</translation> <translation id="4248098802131000011">データ侵害などのセキュリティの問題からパスワードを保護します</translation> <translation id="4250229828105606438">スクリーンショット</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">別のダウンロードの完了待ちです…</translation> <translation id="5865733239029070421">使用統計情報や障害レポートを Google に自動送信します</translation> <translation id="5869522115854928033">保存したパスワード</translation> +<translation id="587735546353481577">サイトをフォローするには、サイトにアクセスして、Chrome メニューを開き、[フォロー] をタップします。</translation> <translation id="5880748256563468367">フィードに移動</translation> <translation id="5884076754568147479">タスクを完了するため、アシスタントを使用したサイトの URL とコンテンツ、およびアシスタントで送信した情報が Google に送られます。</translation> <translation id="5919204609460789179">同期を開始するには <ph name="PRODUCT_NAME" /> を更新してください</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> 節約</translation> <translation id="5939518447894949180">リセット</translation> <translation id="5942872142862698679">検索に Google を使用します</translation> +<translation id="5945035219773565305">現在の推奨設定: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">実際のページを表示しています</translation> <translation id="5952764234151283551">アクセスしようとしているページの URL を Google に送信します</translation> <translation id="5956665950594638604">Chrome ヘルプセンターを新しいタブで開く</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">再フォロー</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />検索<ph name="END_LINK1" />や他の履歴を削除するには、<ph name="BEGIN_LINK2" />Google マイ アクティビティ<ph name="END_LINK2" />にアクセスしてください</translation> <translation id="6005538289190791541">推奨パスワード</translation> +<translation id="6032091552407840792">この試用版は、<ph name="BEGIN_LINK" />一部の地域<ph name="END_LINK" />でのみ使用できます。</translation> +<translation id="6033245666633565791">Chrome では、<ph name="BEGIN_LINK" />プライバシー サンドボックス<ph name="END_LINK" />という取り組みを通じて、クロスサイト トラッキングからユーザーを保護しつつ、オープンウェブの理念を支える新しい技術を開発しています。 + +プライバシー サンドボックスの試用版はまだ開発段階にあり、一部の地域でのみご利用可能です。このため、現時点では多くのサイトでサードパーティ Cookie など現行のウェブ技術を引き続き使用しつつ、プライバシー サンドボックスが試験的に導入されると考えられます。</translation> <translation id="6036057147555329831">その他の ICU</translation> <translation id="6039379616847168523">次のタブに移動する</translation> <translation id="6040143037577758943">閉じる</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">パソコンに接続できません。別の確認オプションをお試しください。</translation> <translation id="6410404864818553978">基本的な使用状況データ</translation> <translation id="6410883413783534063">タブを開くと、さまざまなページに同時にアクセスできます</translation> +<translation id="6411219469806822692">上に移動できません。ページの上のほうから始めてみてください。</translation> <translation id="6412673304250309937">Chrome に保存されている安全でないサイトのリストと URL を照合します。サイトがパスワードを不正に取得しようとしている場合や、ユーザーが安全でないファイルをダウンロードしようとした場合は、URL とページ コンテンツの一部をセーフ ブラウジングに送信することがあります。</translation> <translation id="641643625718530986">印刷...</translation> <translation id="6427112570124116297">ウェブの翻訳</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117"><ph name="FQDN" /> のタイマーが切れました。タイマーはまた明日開始されます。</translation> <translation id="6738516213925468394">データは <ph name="TIME" />に<ph name="BEGIN_LINK" />同期パスフレーズ<ph name="END_LINK" />で暗号化されました。同期を開始するには、同期パスフレーズを入力してください。</translation> <translation id="6738867403308150051">ダウンロードしています…</translation> +<translation id="6751521182688001123">新しいタブをすばやく開きます。このショートカットを編集するには、長押ししてください。</translation> <translation id="6767294960381293877">タブを共有するデバイスのリストが画面の下半分に表示されました。</translation> <translation id="6783942555455976443">このページを後で読めるように保存してリマインダーを受け取ります</translation> <translation id="6811034713472274749">ページを表示できます</translation> <translation id="6813446258015311409">Chrome にログイン、の画面が開きました。</translation> +<translation id="6817747507826986771">このページをすばやく共有します。このショートカットを編集するには、長押ししてください。</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />、タブ、選択中</translation> <translation id="6846298663435243399">読み込んでいます…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">前のサイトを追加中です</translation> <translation id="7339898014177206373">新しいウィンドウ</translation> <translation id="7340958967809483333">Discover のオプション</translation> +<translation id="7352339641508007922">ロング スクリーンショットを撮るにはドラッグしてください</translation> <translation id="7352651011704765696">問題が発生しました</translation> <translation id="7352939065658542140">動画</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{1 件の選択されたアイテムを共有します}other{# 件の選択されたアイテムを共有します}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">すべて削除</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{未読ページが <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> 件あります}other{未読ページが <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> 件あります}}</translation> <translation id="7882131421121961860">履歴が見つかりません</translation> +<translation id="7884346424584885269">付近のデバイスをスキャンするには Chrome に権限を許可する必要があります。<ph name="BEGIN_LINK" />権限を変更<ph name="END_LINK" />してください。</translation> <translation id="7886917304091689118">Chrome で実行中です</translation> <translation id="789763218334337857">Chrome の使い方</translation> <translation id="7903184275147100332">1 分ほどかかる場合があります</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">同期データを同期パスフレーズで暗号化する</translation> <translation id="8466613982764129868"><ph name="TARGET_DEVICE_NAME" /> がインターネットに接続していることを確認してください</translation> <translation id="8473863474539038330">住所やその他の情報</translation> +<translation id="8481921391193215807">オンにすると、サイトでコンテンツやサービスを提供する際に、ここで示されているプライバシー保護技術が使用される場合があります。これには、クロスサイト トラッキングの代わりとなる技術も含まれます。今後、試用版の技術がさらに追加される可能性があります。 + +<ph name="BEGIN_LIST_ITEM1" />広告主やパブリッシャーは FLoC を使用できます。<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />広告主やパブリッシャーは、サイトをまたいでユーザーをトラッキングすることなく、広告の成果を把握できます。<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">試用版機能はオンになっています</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">履歴ページを開く</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">残り 1 ファイル</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">通話ができません</translation> +<translation id="9212845824145208577">下に移動できません。ページの下のほうから始めてみてください。</translation> <translation id="9219103736887031265">画像</translation> <translation id="926205370408745186">Chrome のアクティビティを Digital Wellbeing から削除</translation> <translation id="927968626442779827">Google Chrome のライトモードをご活用ください</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 66a8dc79..d652a2f3 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">დარჩენილია <ph name="SECONDS" /> წმ</translation> <translation id="2779651927720337254">ვერ მოხერხდა</translation> <translation id="2781151931089541271">დარჩენილია 1 წმ</translation> +<translation id="2788468313014644040">ჯგუფის ნომერი</translation> <translation id="2801022321632964776">განაახლეთ და ისარგებლეთ თქვენი ენით Chrome-ის უახლეს ვერსიაში</translation> <translation id="2805756323405976993">პროგრამები</translation> <translation id="2806840421670364300">კოჰორტების თანამშრომლობითი შესწავლა</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">სეპია</translation> <translation id="4060598801229743805">ვარიანტები ხელმისაწვდომია ეკრანის ზედა ნაწილთან</translation> <translation id="4062305924942672200">იურიდიული ინფორმაცია</translation> -<translation id="4082818367361753283">ჯგუფის ID</translation> <translation id="4084682180776658562">სანიშნე</translation> <translation id="4084712963632273211">წყარო: <ph name="PUBLISHER_ORIGIN" /> — <ph name="BEGIN_DEEMPHASIZED" />უზრუნველყოფს Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">წაიშალოს აპების მონაცემები?</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 3662f64..6c58c691 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> сек қалды</translation> <translation id="2779651927720337254">қате шықты</translation> <translation id="2781151931089541271">1 сек қалды</translation> +<translation id="2788468313014644040">Топ нөмірі</translation> <translation id="2801022321632964776">Chrome браузерінің соңғы нұсқасын өз тіліңізде қолданғыңыз келсе, оны жаңартыңыз.</translation> <translation id="2805756323405976993">Қолданбалар</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Сепия</translation> <translation id="4060598801229743805">Опциялар экранның жоғарғы жағында тұрады</translation> <translation id="4062305924942672200">Құқықтық ақпарат</translation> -<translation id="4082818367361753283">Топ идентификаторы</translation> <translation id="4084682180776658562">Бетбелгі</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> жариялаған, <ph name="BEGIN_DEEMPHASIZED" />Google ұсынады<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Қолданба деректерін жою керек пе?</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 e8478df..db4d6bc 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">នៅសល់ <ph name="SECONDS" /> វិនាទីទៀត</translation> <translation id="2779651927720337254">បានបរាជ័យ</translation> <translation id="2781151931089541271">នៅសល់ 1 វិនាទីទៀត</translation> +<translation id="2788468313014644040">លេខក្រុម</translation> <translation id="2801022321632964776">ដំឡើងកំណែ ដើម្បីអាចប្រើភាសារបស់អ្នកបាននៅក្នុងកំណែចុងក្រោយបំផុតរបស់ Chrome</translation> <translation id="2805756323405976993">កម្មវិធី</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">ជម្រើសមានផ្តល់ជូននៅក្បែរផ្នែកខាងលើអេក្រង់</translation> <translation id="4062305924942672200">ព័ត៌មានផ្លូវច្បាប់</translation> -<translation id="4082818367361753283">លេខសម្គាល់ក្រុម</translation> <translation id="4084682180776658562">ចំណាំ</translation> <translation id="4084712963632273211">ពី <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />បានបញ្ជូនដោយ Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">លុបទិន្នន័យកម្មវិធីឬ?</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 9934bbb..3c0476f 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
@@ -461,7 +461,6 @@ <translation id="4056223980640387499">ಸೆಪಿಯಾ</translation> <translation id="4060598801229743805">ಪರದೆಯ ಮೇಲಿನ ಭಾಗದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳು</translation> <translation id="4062305924942672200">ಕಾನೂನು ಮಾಹಿತಿ</translation> -<translation id="4082818367361753283">ಗುಂಪು ID</translation> <translation id="4084682180776658562">ಬುಕ್ಮಾರ್ಕ್</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> ಅವರಿಂದ – <ph name="BEGIN_DEEMPHASIZED" />Google ನಿಂದ ವಿತರಿಸಲಾಗಿದೆ<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ ಅಳಿಸುವುದೇ?</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 6c566dc99..c03c1de 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" />초 남음</translation> <translation id="2779651927720337254">실패</translation> <translation id="2781151931089541271">1초 남음</translation> +<translation id="2788468313014644040">그룹 번호</translation> <translation id="2801022321632964776">최신 버전의 Chrome에서 내가 사용하는 언어를 사용하려면 업데이트하세요.</translation> <translation id="2805756323405976993">앱</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">세피아</translation> <translation id="4060598801229743805">화면 상단에서 옵션을 선택할 수 있습니다.</translation> <translation id="4062305924942672200">법적 정보</translation> -<translation id="4082818367361753283">그룹 ID</translation> <translation id="4084682180776658562">북마크</translation> <translation id="4084712963632273211">발신자: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google 제공<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">앱 데이터를 삭제하시겠습니까?</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 4cdeb58..beb37e9 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> сек. калды</translation> <translation id="2779651927720337254">ката</translation> <translation id="2781151931089541271">1 сек. калды</translation> +<translation id="2788468313014644040">Топтун номери</translation> <translation id="2801022321632964776">Chrome'дун акыркы версиясын жүктөп алып, аны эне тилиңизде колдонуңуз</translation> <translation id="2805756323405976993">Колдонмолор</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Параметрлер экрандын жогору жагында берилген</translation> <translation id="4062305924942672200">Юридикалык маалымат</translation> -<translation id="4082818367361753283">Топтун идентификатору</translation> <translation id="4084682180776658562">Кыстарма</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> веб сайтынан – <ph name="BEGIN_DEEMPHASIZED" />Google аркылуу жеткирилген<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Колдонмонун дайындары жок кылынсынбы?</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 fae4819..92f7a37 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">ຍັງເຫຼືອ <ph name="SECONDS" /> ວິ</translation> <translation id="2779651927720337254">ບໍ່ສໍາເລັດ</translation> <translation id="2781151931089541271">ຍັງເຫຼືອ 1 ວິ</translation> +<translation id="2788468313014644040">ໝາຍເລກກຸ່ມ</translation> <translation id="2801022321632964776">ອັບເດດເພື່ອມີພາສາຂອງທ່ານຢູ່ໃນ Chrome ເວີຊັນຫຼ້າສຸດ</translation> <translation id="2805756323405976993">ແອັບ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">ສີນໍ້າຕານດໍາ</translation> <translation id="4060598801229743805">ຕົວເລືອກຕ່າງໆມີໃຫ້ນຳໃຊ້ຢູ່ໃກ້ສ່ວນເທິງຂອງໜ້າຈໍ</translation> <translation id="4062305924942672200">ຂໍ້ມູນທາງດ້ານກົດຫມາຍ</translation> -<translation id="4082818367361753283">ID ກຸ່ມ</translation> <translation id="4084682180776658562">ບຸກມາກຄ໌</translation> <translation id="4084712963632273211">ຈາກ <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />ສົ່ງໃຫ້ໂດຍ Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ລຶບຂໍ້ມູນແອັບບໍ?</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 578a7a5c..49d31b6 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Liko <ph name="SECONDS" /> sek.</translation> <translation id="2779651927720337254">nepavyko</translation> <translation id="2781151931089541271">Liko 1 sek.</translation> +<translation id="2788468313014644040">Grupės numeris</translation> <translation id="2801022321632964776">Norėdami gauti naujausią versiją su įdiegta savo kalba, atnaujinkite „Chrome“</translation> <translation id="2805756323405976993">Taikomosios programos</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepija</translation> <translation id="4060598801229743805">Parinktys pasiekiamos netoli ekrano viršaus</translation> <translation id="4062305924942672200">Teisinė informacija</translation> -<translation id="4082818367361753283">Grupės ID</translation> <translation id="4084682180776658562">Žymė</translation> <translation id="4084712963632273211">Nuo <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />pateikė „Google“<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Ištrinti programos duomenis?</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 4624b4d..e4b072aa 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Atlikušas <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neizdevās</translation> <translation id="2781151931089541271">Atlikusi 1 s</translation> +<translation id="2788468313014644040">Grupas numurs</translation> <translation id="2801022321632964776">Veiciet atjaunināšanu, lai varētu lasīt savā valodā jaunākajā pārlūka Chrome versijā</translation> <translation id="2805756323405976993">Lietotnes</translation> <translation id="2806840421670364300">FPK</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sēpija</translation> <translation id="4060598801229743805">Opcijas, kas pieejamas ekrāna augšdaļā</translation> <translation id="4062305924942672200">Juridiskā informācija</translation> -<translation id="4082818367361753283">Grupas ID</translation> <translation id="4084682180776658562">Grāmatzīme</translation> <translation id="4084712963632273211">No izdevēja <ph name="PUBLISHER_ORIGIN" /> — <ph name="BEGIN_DEEMPHASIZED" />nodrošina Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Vai dzēst lietotnes datus?</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 a0bf0c8..16c5389 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Останаа <ph name="SECONDS" /> секунди</translation> <translation id="2779651927720337254">не успеа</translation> <translation id="2781151931089541271">Остана 1 секунда</translation> +<translation id="2788468313014644040">Број на групата</translation> <translation id="2801022321632964776">Ажурирајте за да го добиете вашиот јазик во најновата верзија на Chrome</translation> <translation id="2805756323405976993">Апликации</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Достапни се опции речиси на врвот на екранот</translation> <translation id="4062305924942672200">Правни информации</translation> -<translation id="4082818367361753283">ID на група</translation> <translation id="4084682180776658562">Обележувач</translation> <translation id="4084712963632273211">Од <ph name="PUBLISHER_ORIGIN" /> - <ph name="BEGIN_DEEMPHASIZED" />испорачано од Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Избриши ги податоците на апликацијата?</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 15443ba..11a15660 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
@@ -230,6 +230,7 @@ <translation id="247737702124049222">ചിത്രത്തിന്റെ വിവരണങ്ങൾ ഓണാണ്</translation> <translation id="2482878487686419369">അറിയിപ്പുകൾ</translation> <translation id="2485422356828889247">അണ്ഇന്സ്റ്റാള് ചെയ്യുക</translation> +<translation id="2489545061398461256">പ്രവർത്തനം കഴിഞ്ഞ ശേഷം ഞങ്ങൾ അത് വീണ്ടും ഓഫാക്കും</translation> <translation id="2494974097748878569">Chrome സ്വമേധയാ പൂരിപ്പിക്കലിലെ Google അസിസ്റ്റന്റ് സാന്നിധ്യം</translation> <translation id="2496180316473517155">ബ്രൌസിംഗ് ചരിത്രം</translation> <translation id="2497852260688568942">നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റർ സമന്വയിപ്പിക്കൽ പ്രവർത്തനരഹിതമാക്കി</translation> @@ -277,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> സെക്കൻഡ് ശേഷിക്കുന്നു</translation> <translation id="2779651927720337254">പരാജയപ്പെട്ടു</translation> <translation id="2781151931089541271">ഒരു സെക്കൻഡ് ശേഷിക്കുന്നു</translation> +<translation id="2788468313014644040">ഗ്രൂപ്പ് നമ്പർ</translation> <translation id="2801022321632964776">Chrome-ൻ്റെ ഏറ്റവും പുതിയ പതിപ്പിൽ നിങ്ങളുടെ ഭാഷ ലഭ്യമാക്കാൻ അപ്ഡേറ്റ് ചെയ്യൂ</translation> <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="2806840421670364300">FLoC</translation> @@ -466,7 +468,6 @@ <translation id="4056223980640387499">സിപിയ</translation> <translation id="4060598801229743805">സ്ക്രീനിന്റെ മുകളിൽ ഓപ്ഷനുകൾ ലഭ്യമാണ്</translation> <translation id="4062305924942672200">നിയമ വിവരങ്ങൾ</translation> -<translation id="4082818367361753283">ഗ്രൂപ്പ് ഐഡി</translation> <translation id="4084682180776658562">ബുക്മാര്ക്ക്</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" />-ൽ നിന്ന് – <ph name="BEGIN_DEEMPHASIZED" />Google നൽകുന്നത്<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ആപ്പ് ഡാറ്റ ഇല്ലാതാക്കണോ?</translation> @@ -543,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# മിനിറ്റ് മുമ്പ്}other{# മിനിറ്റ് മുമ്പ്}}</translation> <translation id="4587589328781138893">Sites</translation> <translation id="4594952190837476234">ഈ ഓഫ്ലൈൻ പേജ് <ph name="CREATION_TIME" /> -ന് സൃഷ്ടിച്ചതാണ്, അതിനാൽ ഓൺലൈൻ പതിപ്പിൽ നിന്ന് വ്യത്യസ്തമായിരിക്കാം.</translation> +<translation id="4608360466722749036">Bluetooth ഓണാക്കുന്നു…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" /> തുറക്കുക</translation> <translation id="4619564267100705184">ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക</translation> <translation id="4634124774493850572">പാസ്വേഡ് ഉപയോഗിക്കുക</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 0bd6e9d4..d6e3c87 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> секунд үлдсэн</translation> <translation id="2779651927720337254">татаж чадсангүй</translation> <translation id="2781151931089541271">1 секунд үлдсэн</translation> +<translation id="2788468313014644040">Бүлгийн тоо</translation> <translation id="2801022321632964776">Chrome-н хамгийн сүүлийн хувилбарт хэлээ авахын тулд шинэчилнэ үү</translation> <translation id="2805756323405976993">Програм</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Сепиа</translation> <translation id="4060598801229743805">Сонголт дэлгэцийн дээд хэсэгт байна</translation> <translation id="4062305924942672200">Хууль, эрх зүйн мэдээлэл</translation> -<translation id="4082818367361753283">Бүлгийн ID</translation> <translation id="4084682180776658562">Хадгалах</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" />-с – <ph name="BEGIN_DEEMPHASIZED" />Google-с хүргэсэн<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Апп-н өгөгдлийг устгах уу?</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 d2c514f2..4f1ec71e 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
@@ -230,6 +230,7 @@ <translation id="247737702124049222">इमेजची वर्णने सुरू आहेत</translation> <translation id="2482878487686419369">सूचना</translation> <translation id="2485422356828889247">अनइंस्टॉल करा</translation> +<translation id="2489545061398461256">आमचे काम पूर्ण झाल्यावर, आम्ही ते पुन्हा बंद करू</translation> <translation id="2494974097748878569">Chrome मधील Google असिस्टंट</translation> <translation id="2496180316473517155">ब्राउझिंग इतिहास</translation> <translation id="2497852260688568942">तुमच्या ॲडमिनिस्ट्रेटरने सिंक अक्षम केले आहे</translation> @@ -277,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> सेकंद शिल्लक</translation> <translation id="2779651927720337254">अयशस्वी झाले</translation> <translation id="2781151931089541271">1 सेकंद शिल्लक</translation> +<translation id="2788468313014644040">गटाचा नंबर</translation> <translation id="2801022321632964776">Chrome च्या नवीनतम आवृत्तीमध्ये तुमची भाषा मिळवण्यासाठी अपडेट करा</translation> <translation id="2805756323405976993">ॲप्लिकेशन</translation> <translation id="2806840421670364300">FLoC</translation> @@ -466,7 +468,6 @@ <translation id="4056223980640387499">सेपिया</translation> <translation id="4060598801229743805">स्क्रीनच्या शीर्षावर पर्याय उपलब्ध आहेत</translation> <translation id="4062305924942672200">कायदेशीर माहिती</translation> -<translation id="4082818367361753283">गटाचा आयडी</translation> <translation id="4084682180776658562">बुकमार्क</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> कडून – <ph name="BEGIN_DEEMPHASIZED" />Google ने वितरित केले<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ॲप डेटा हटवायचा?</translation> @@ -543,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# मिनिटापूर्वी}other{# मिनिटांपूर्वी}}</translation> <translation id="4587589328781138893">Sites</translation> <translation id="4594952190837476234">हे <ph name="CREATION_TIME" /> पासूनचे ऑफलाइन पेज आहे आणि ऑनलाइन आवृत्तीपेक्षा वेगळे असू शकते.</translation> +<translation id="4608360466722749036">ब्लूटूथ सुरू करत आहोत…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" /> उघडा</translation> <translation id="4619564267100705184">हे तुम्हीच असल्याची पडताळणी करा</translation> <translation id="4634124774493850572">पासवर्ड वापरा</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 3ec952a..ce6d3870 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> saat lagi</translation> <translation id="2779651927720337254">gagal</translation> <translation id="2781151931089541271">1 saat lagi</translation> +<translation id="2788468313014644040">Nombor kumpulan</translation> <translation id="2801022321632964776">Kemas kini untuk mendapatkan bahasa anda dalam versi terkini Chrome</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Pilihan tersedia berhampiran bahagian atas skrin</translation> <translation id="4062305924942672200">Maklumat undang-undang</translation> -<translation id="4082818367361753283">ID Kumpulan</translation> <translation id="4084682180776658562">Penanda halaman</translation> <translation id="4084712963632273211">Daripada <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />disampaikan oleh Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Padam data apl?</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 36ebaab..722502b7 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> စက္ကန့် ကျန်သည်</translation> <translation id="2779651927720337254">ဒေါင်းလုဒ် မပြီးဆုံးပါ</translation> <translation id="2781151931089541271">၁ စက္ကန့် ကျန်သည်</translation> +<translation id="2788468313014644040">အဖွဲ့နံပါတ်</translation> <translation id="2801022321632964776">Chrome နောက်ဆုံးဗားရှင်းတွင် သင့်ဘာသာစကားကို ရယူရန် အပ်ဒိတ်လုပ်ပါ</translation> <translation id="2805756323405976993">အက်ပ်များ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">မျက်နှာပြင်၏ ထိပ်ပိုင်းတွင် ရွေးချယ်စရာများ ရှိပါသည်</translation> <translation id="4062305924942672200">တရားဝင် သိသင့်စရာများ</translation> -<translation id="4082818367361753283">အဖွဲ့ ID</translation> <translation id="4084682180776658562">စာညှပ်</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> မှ – <ph name="BEGIN_DEEMPHASIZED" />Google က ဖြန့်ချိပေးခြင်းဖြစ်သည်<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">အက်ပ်ဒေတာကို ဖျက်မလား။</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 20489ea3..7482ea12 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
@@ -646,7 +646,7 @@ <translation id="5271967389191913893">यन्त्रले डाउनलोड गर्नको लागि सामग्रीलाई खोल्न सक्दैन।</translation> <translation id="5292796745632149097">निम्न यन्त्रमा पठाउनुहोस्</translation> <translation id="5304593522240415983">यो क्षेत्र खाली हुन सक्दैन</translation> -<translation id="5308380583665731573">जडान गर्नुहोस्</translation> +<translation id="5308380583665731573">कनेक्ट गर्नुहोस्</translation> <translation id="5317780077021120954">बचत गर्नुहोस्</translation> <translation id="5319359161174645648">Google ले Chrome प्रयोग गर्ने सुझाव दिन्छ</translation> <translation id="5324858694974489420">अभिभावक सेटिङहरू</translation> @@ -842,7 +842,7 @@ <translation id="6482749332252372425"><ph name="FILE_NAME" /> डाउनलोड भण्डारण ठाउँ कमीको कारण असफल भयो।</translation> <translation id="6489610539826642779">अध्ययन सूची <ph name="BEGIN_NEW" />नयाँ<ph name="END_NEW" /></translation> <translation id="6490496612063106490">हाइलाइट गरिएको पाठको लिंक</translation> -<translation id="6496823230996795692">पहिलोपटक <ph name="APP_NAME" /> प्रयोग गर्न कृपया इन्टरनेटमा जडान गर्नुहोस्।</translation> +<translation id="6496823230996795692">पहिलोपटक <ph name="APP_NAME" /> प्रयोग गर्न कृपया इन्टरनेटमा कनेक्ट गर्नुहोस्।</translation> <translation id="6508722015517270189">Chrome पुनः सुरु गर्नुहोस्</translation> <translation id="6527303717912515753">साझा गर्नुहोस्</translation> <translation id="6532866250404780454">तपाईंले Chrome मार्फत हेर्नुभएका साइटहरू देखिने छैनन्। साइटका सबै टाइमरहरू मेटाइने छन्।</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 bf87fbd..9b0b3c2 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> seconden resterend</translation> <translation id="2779651927720337254">mislukt</translation> <translation id="2781151931089541271">1 seconde resterend</translation> +<translation id="2788468313014644040">Groepsnummer</translation> <translation id="2801022321632964776">Voer een update uit om jouw taal te gebruiken in de nieuwste versie van Chrome</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opties beschikbaar boven aan het scherm</translation> <translation id="4062305924942672200">Juridische informatie</translation> -<translation id="4082818367361753283">Groeps-ID</translation> <translation id="4084682180776658562">Bookmark maken</translation> <translation id="4084712963632273211">Van <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />geleverd door Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">App-gegevens verwijderen?</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 282d45a..5c396a5 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder igjen</translation> <translation id="2779651927720337254">mislyktes</translation> <translation id="2781151931089541271">1 sekund igjen</translation> +<translation id="2788468313014644040">Gruppenummer</translation> <translation id="2801022321632964776">Oppdater for å få språket ditt i den nyeste versjonen av Chrome</translation> <translation id="2805756323405976993">Apper</translation> <translation id="2806840421670364300">FLoC (samlet læring i kohorter)</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Du finner alternativene oppe på skjermen</translation> <translation id="4062305924942672200">Juridisk informasjon</translation> -<translation id="4082818367361753283">Gruppe-ID</translation> <translation id="4084682180776658562">Legg til bokmerke</translation> <translation id="4084712963632273211">Fra <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />levert av Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Slette appdataene?</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 a543e29..b6602cf 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="or"> +<translation id="1016498331642356377">ଆପଣଙ୍କ ଭଏସ୍ ମାଧ୍ୟମରେ ଶୀଘ୍ର ସନ୍ଧାନ କରନ୍ତୁ। ଏହି ସର୍ଟକଟକୁ ଏଡିଟ୍ କରିବା ପାଇଁ, ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" />କୁ ପଠାଉଛି...</translation> <translation id="103269572468856066">ସାଇଟ ଓ ଆପ ଡାଟା କାଢ଼ିବେ?</translation> <translation id="1036348656032585052">ବନ୍ଦ କରନ୍ତୁ</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">ଟେକ୍ସଟ୍</translation> <translation id="2068748236079642969">ପରବର୍ତ୍ତୀ ଭିଡିଓ ଦେଖନ୍ତୁ</translation> <translation id="2074143993849053708">Assistantର ଭଏସ୍ ମାଧ୍ୟମରେ ସନ୍ଧାନ ପାଇଁ ସମ୍ମତିର ui ବନ୍ଦ ହୋଇଛି</translation> +<translation id="2075835334924942448">ଆପଣ ଏଠାରେ ଷ୍ଟୋରୀଗୁଡ଼ିକ ପାଇବେ</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />ର <ph name="RESULT_NUMBER" />ଟି ଫଳାଫଳ</translation> <translation id="2096012225669085171">ସମସ୍ତ ଡିଭାଇସ୍ରେ ସିଙ୍କ୍ ଏବଂ ବ୍ୟକ୍ତିଗତକୃତ କରନ୍ତୁ</translation> <translation id="2100273922101894616">ସ୍ୱତଃ ସାଇନ୍-ଇନ୍</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> ସେଭ୍ ହୋଇଛି</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" />ବନ୍ଦ ହୋଇଯାଇଛି</translation> <translation id="2139186145475833000">ହୋମ୍ ସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ</translation> +<translation id="2141396931810938595">ଆପଣଙ୍କ ବ୍ୟବହାର ଉପରେ ଆଧାର କରି</translation> <translation id="214888715418183969">ଆପଣ Chrome ସହିତ କଣ ସହଜରେ ସେୟାର୍ କରିପାରିବେ ତାହା ବାଛନ୍ତୁ। Chromeର ଫିଚର୍, କାର୍ଯ୍ୟଦକ୍ଷତା ଏବଂ ସ୍ଥିରତା ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ ଆପଣ ସେୟାର୍ କରିଥିବା ମେଟ୍ରିକ୍ସ ବ୍ୟବହାର କରାଯିବ।</translation> <translation id="2154484045852737596">କାର୍ଡକୁ ଏଡିଟ୍ କରନ୍ତୁ</translation> <translation id="2154710561487035718">URL କପି କରନ୍ତୁ</translation> @@ -227,6 +230,7 @@ <translation id="247737702124049222">ଛବିର ବର୍ଣ୍ଣନା ଚାଲୁ ଅଛି</translation> <translation id="2482878487686419369">ବିଜ୍ଞପ୍ତି</translation> <translation id="2485422356828889247">ଅନ୍ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ</translation> +<translation id="2489545061398461256">ଆମ କାର୍ଯ୍ୟ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଗଲା ପରେ ଆମେ ଏହାକୁ ପୁଣି ବନ୍ଦ କରିଦେବୁ</translation> <translation id="2494974097748878569">Chromeରେ Google Assistant</translation> <translation id="2496180316473517155">ବ୍ରାଉଜିଂ ଇତିବୃତ୍ତି</translation> <translation id="2497852260688568942">ଆପଣଙ୍କର ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ସିଙ୍କ ଅକ୍ଷମ କରାଯାଇଛି</translation> @@ -257,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{#ଟି ଅଡିଓ ଫାଇଲ୍}other{#ଟି ଅଡିଓ ଫାଇଲ୍}}</translation> <translation id="2656405586795711023">ୱେବ୍ ଆପଗୁଡ଼ିକ</translation> <translation id="2689830683995595741">Chrome ବ୍ୟବହାର କରିବା ଦ୍ୱାରା, ଆପଣ <ph name="BEGIN_LINK1" />Google ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK1" /> ଏବଂ <ph name="BEGIN_LINK2" />Google Chrome ଏବଂ Chrome OS ଅତିରିକ୍ତ ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK2" /> ସହିତ ସହମତ ହେଉଛନ୍ତି। <ph name="BEGIN_LINK3" />Family Link ମାଧ୍ୟମରେ ପରିଚାଳନା କରାଯାଇଥିବା Google ଆକାଉଣ୍ଟଗୁଡ଼ିକ ପାଇଁ ଗୋପନୀୟତା ନୋଟିସ୍<ph name="END_LINK3" /> ମଧ୍ୟ ଲାଗୁ ହୋଇଥାଏ।</translation> +<translation id="2702516483241149200">ନୂଆ: ଏହି ଟେକ୍ସଟକୁ ସ୍କ୍ରୋଲ୍ କରୁଥିବା ଏକ ଲିଙ୍କ୍ ସେୟାର୍ କରନ୍ତୁ</translation> <translation id="2704606927547763573">କପି କରାଯାଇଛି</translation> <translation id="2707726405694321444">ପୃଷ୍ଠା ରିଫ୍ରେସ୍ କରନ୍ତୁ</translation> <translation id="271033894570825754">ନୂଆ</translation> @@ -273,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> ସେକେଣ୍ଡ ଅବଶିଷ୍ଟ ଅଛି</translation> <translation id="2779651927720337254">ବିଫଳ ହେଲା</translation> <translation id="2781151931089541271">1 ସେକେଣ୍ଡ ବାକି ଅଛି</translation> +<translation id="2788468313014644040">ଗୋଷ୍ଠୀ ନମ୍ବର</translation> <translation id="2801022321632964776">Chromeର ନବୀନତମ ସଂସ୍କରଣରେ ଆପଣଙ୍କ ଭାଷା ପାଇବା ନିମନ୍ତେ ଅପ୍ଡେଟ୍ କରନ୍ତୁ</translation> <translation id="2805756323405976993">ଆପ୍ସ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -304,6 +310,7 @@ <translation id="2956410042958133412">ଏହି ଆକାଉଣ୍ଟ <ph name="PARENT_NAME_1" /> ଏବଂ <ph name="PARENT_NAME_2" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" />ଟି ପଢ଼ାଯାଇନଥିବା ପୃଷ୍ଠା}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" />ଟି ପଢ଼ାଯାଇନଥିବା ପୃଷ୍ଠା}}</translation> <translation id="2979025552038692506">ଚୟନିତ ଇନକଗ୍ନିଟୋ ଟାବ୍</translation> +<translation id="2979448359891869301">ସ୍କ୍ରିନସଟର ବିସ୍ତାର କରାଯାଇପାରିବ ନାହିଁ। ଆପଣଙ୍କ ଫୋନର କମ୍ ବ୍ୟବହାର ହେଉଥିବା ସମୟରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="2987620471460279764">ଅନ୍ୟ ଡିଭାଇସ୍ ଠାରୁ ଟେକ୍ସଟ୍ ସେୟାର୍ କରାଯାଇଛି</translation> <translation id="2989523299700148168">ନିକଟରେ ଯାଇଥିବା</translation> <translation id="2992473221983447149">ଛବିର ବର୍ଣ୍ଣନା</translation> @@ -345,6 +352,7 @@ <translation id="3265534588625245297">ଆପଣ ଅନୁସରଣ କରୁଥିବା ସାଇଟଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="3269093882174072735">ଛବିକୁ ଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="3269956123044984603">ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍ରୁ ନିଜର ଟାବ୍ଗୁଡ଼ିକୁ ପ୍ରାପ୍ତ କରିବାକୁ, Android ଆକାଉଣ୍ଟ ସେଟିଂସ୍ରେ “ଡାଟା ସ୍ବତଃ ସିଙ୍କ୍ କରନ୍ତୁ”କୁ ଚାଲୁ କରନ୍ତୁ।</translation> +<translation id="3280562213547448728">ଭଏସ୍ ସନ୍ଧାନ</translation> <translation id="3282568296779691940">Chromeରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="3284510035090979597">ସକ୍ରିୟ ସହାୟତା</translation> <translation id="3285080554353377245">କିପରି Chrome ବ୍ୟବହାର କରିବେ ସେ ବିଷୟରେ ଭିଡିଓଗୁଡ଼ିକ</translation> @@ -395,6 +403,7 @@ <translation id="3563767357928833671">କ୍ଲିପବୋର୍ଡର ବିଷୟବସ୍ତୁଗୁଡ଼ିକ ଦେଖାଯାଇଛି</translation> <translation id="3566923219790363270">Chrome ଏବେ ମଧ୍ୟ VR ପାଇଁ ପ୍ରସ୍ତୁତ ହେଉଛି। ପରେ Chrome ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।</translation> <translation id="3568688522516854065">ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍ଗୁଡ଼ିକରୁ ନିଜର ଟାବ୍ ପ୍ରାପ୍ତ କରିବା ପାଇଁ, ସାଇନ୍ ଇନ୍ କରି ସିଙ୍କ ଚାଲୁ କରନ୍ତୁ</translation> +<translation id="3577473026931028326">କିଛି ତ୍ରୁଟି ହୋଇଛି। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="3587482841069643663">ସମସ୍ତ</translation> <translation id="3587596251841506391">ୱେବରେ ସୁରକ୍ଷାକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ</translation> <translation id="3602290021589620013">ପ୍ରିଭ୍ୟୁ</translation> @@ -459,7 +468,6 @@ <translation id="4056223980640387499">ସେପିଆ</translation> <translation id="4060598801229743805">ସ୍କ୍ରିନ୍ର ଶୀର୍ଷଭାଗରେ ବିକଳ୍ପଗୁଡ଼ିକ ଉପଲବ୍ଧ ଅଛି</translation> <translation id="4062305924942672200">ଆଇନଗତ ସୂଚନା</translation> -<translation id="4082818367361753283">ଗୋଷ୍ଠୀ ID</translation> <translation id="4084682180776658562">ବୁକମାର୍କ</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" />ଙ୍କ ଠାରୁ – <ph name="BEGIN_DEEMPHASIZED" />Google ଦ୍ୱାରା ବିତରଣ କରାଯାଇଛି<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ଆପ୍ ଡାଟା ଡିଲିଟ୍ କରିବେ କି?</translation> @@ -480,6 +488,7 @@ <translation id="4195643157523330669">ନୂତନ ଟ୍ୟାବରେ ଖୋଲନ୍ତୁ</translation> <translation id="4198423547019359126">କୌଣସି ଡାଉନ୍ଲୋଡ୍ ହୋଇଥିବା ଲୋକେସନ୍ ଉପଲବ୍ଧ ନାହିଁ</translation> <translation id="4209895695669353772">Google ଦ୍ୱାରା ପ୍ରସ୍ତାବିତ ବ୍ୟକ୍ତିଗତକୃତ ବିଷୟବସ୍ତୁ ପ୍ରାପ୍ତ କରିବା ପାଇଁ, ସିଙ୍କ ଚାଲୁ କରନ୍ତୁ</translation> +<translation id="4225895483398857530">ଟୁଲବାର୍ ସର୍ଟକଟ୍</translation> <translation id="4242533952199664413">ସେଟିଂସ୍ ଖୋଲନ୍ତୁ</translation> <translation id="4248098802131000011">ଡାଟା ଉଲ୍ଲଙ୍ଘନ ଏବଂ ଅନ୍ୟ ସୁରକ୍ଷା ସମସ୍ୟାଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ପାସୱାର୍ଡଗୁଡ଼ିକୁ ସୁରକ୍ଷିତ ରଖନ୍ତୁ</translation> <translation id="4250229828105606438">ସ୍କ୍ରିନ୍ସଟ୍</translation> @@ -535,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# ମିନିଟ୍ ପୂର୍ବେ}other{#ମିନିଟ୍ ପୂର୍ବେ}}</translation> <translation id="4587589328781138893">Sites</translation> <translation id="4594952190837476234">ଏହି ପୃଷ୍ଠା <ph name="CREATION_TIME" />ର ଅଟେ ଏବଂ ଅନ୍ଲାଇନ୍ ସଂସ୍କରଣ ଠାରୁ ଅଲଗା ହୋଇପାରେ।</translation> +<translation id="4608360466722749036">ବ୍ଲୁଟୁଥ୍ ଚାଲୁ କରାଯାଉଛି…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" /> ଖୋଲନ୍ତୁ</translation> <translation id="4619564267100705184">ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ</translation> <translation id="4634124774493850572">ପାସ୍ୱର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ</translation> @@ -746,12 +756,14 @@ <translation id="5864419784173784555">ଆଉ ଏକ ଡାଉନ୍ଲୋଡ୍ ପାଇଁ ଅପେକ୍ଷାରତ…</translation> <translation id="5865733239029070421">ସ୍ୱଚାଳିତରୂପେ Googleକୁ ବ୍ୟବହାରର ପରିସଂଖ୍ୟାନ ଏବଂ କ୍ରାସ୍ ରିପୋର୍ଟ ପଠାଏ</translation> <translation id="5869522115854928033">ସଞ୍ଚିତ ପାସୱାର୍ଡସମୂହ</translation> +<translation id="587735546353481577">ଏକ ସାଇଟର ଅନୁସରଣ କରିବା ପାଇଁ ସାଇଟକୁ ଯାଆନ୍ତୁ, Chrome ମେନୁ ଖୋଲି 'ଅନୁସରଣ କରନ୍ତୁ'ରେ ଟାପ୍ କରନ୍ତୁ।</translation> <translation id="5880748256563468367">ଫିଡକୁ ଯାଆନ୍ତୁ</translation> <translation id="5884076754568147479">କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ସମ୍ପୂର୍ଣ୍ଣ କରିବାରେ ଆପଣଙ୍କୁ ସାହାଯ୍ୟ କରିବା ନିମନ୍ତେ, ଆପଣ Assistant ବ୍ୟବହାର କରିଥିବା ସାଇଟଗୁଡ଼ିକର URL ଏବଂ ବିଷୟବସ୍ତୁଗୁଡ଼ିକ ସହିତ Assistant ମାଧ୍ୟମରେ ଆପଣ ଦାଖଲ କରିଥିବା ସୂଚନା Google ପ୍ରାପ୍ତ କରିବ</translation> <translation id="5919204609460789179">ସିଙ୍କ ଆରମ୍ଭ କରିବା ପାଇଁ <ph name="PRODUCT_NAME" /> ଅପ୍ଡେଟ୍ କରନ୍ତୁ</translation> <translation id="5937580074298050696"><ph name="AMOUNT" />କୁ ସେଭ୍ କରାଗଲା</translation> <translation id="5939518447894949180">ପୁନଃସେଟ୍</translation> <translation id="5942872142862698679">ସନ୍ଧାନ ପାଇଁ Google ବ୍ୟବହାର କରାଯାଉଛି</translation> +<translation id="5945035219773565305">ବର୍ତ୍ତମାନର ସୁପାରିଶଗୁଡ଼ିକ: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">ଲାଇଭ୍ ପୃଷ୍ଠା ଦେଖୁଛନ୍ତି</translation> <translation id="5952764234151283551">Googleରେ ପହଞ୍ଚିବା ପାଇଁ ଆପଣ ଚେଷ୍ଟା କରୁଥିବା ଗୋଟିଏ ପୃଷ୍ଠାର URLକୁ ପଠାଇଥାଏ</translation> <translation id="5956665950594638604">ଏକ ନୂଆ ଟାବ୍ରେ Chrome ସାହାଯ୍ୟ କେନ୍ଦ୍ର ଖୋଲନ୍ତୁ</translation> @@ -765,6 +777,10 @@ <translation id="6000203700195075278">ପୁଣି ଅନୁସରଣ କରନ୍ତୁ</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />ସନ୍ଧାନ<ph name="END_LINK1" /> କିମ୍ବା ଅନ୍ୟ ଫର୍ମର ଇତିହାସଗୁଡ଼ିକୁ ଖାଲି କରିବା ପାଇଁ, <ph name="BEGIN_LINK2" />ମୋ Google କାର୍ଯ୍ୟକଳାପ<ph name="END_LINK2" />କୁ ଭିଜିଟ୍ କରନ୍ତୁ</translation> <translation id="6005538289190791541">ପ୍ରସ୍ତାବିତ ପାସ୍ୱାର୍ଡ</translation> +<translation id="6032091552407840792">ଏହି ଟ୍ରାଏଲ୍ କେବଳ <ph name="BEGIN_LINK" />କିଛି ଅଞ୍ଚଳ<ph name="END_LINK" />ରେ ସକ୍ରିୟ ଅଛି।</translation> +<translation id="6033245666633565791"><ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> ସହିତ Chrome ଓପନ ୱେବକୁ ସଂରକ୍ଷିତ କରିବା ସମୟରେ କ୍ରସ୍-ସାଇଟ୍ ଟ୍ରାକିଂରୁ ଆପଣଙ୍କୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ନୂଆ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକୁ ବିକଶିତ କରୁଛି। + +Privacy Sandbox ଟ୍ରାଏଲଗୁଡ଼ିକ ଏବେ ବି ବିକଶିତ ହେଉଛି ଏବଂ ଚୟନିତ ଅଞ୍ଚଳଗୁଡ଼ିକରେ ଉପଲବ୍ଧ ଅଛି। ବର୍ତ୍ତମାନ ପାଇଁ, ସାଇଟଗୁଡ଼ିକ ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକ ପରି ବର୍ତ୍ତମାନର ୱେବ୍ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବା ସମୟରେ Privacy Sandbox ବ୍ୟବହାର କରି ଦେଖିପାରେ।</translation> <translation id="6036057147555329831">ଅତିରିକ୍ତ ICU</translation> <translation id="6039379616847168523">ପରବର୍ତ୍ତୀ ଟାବ୍କୁ ଯାଆନ୍ତୁ</translation> <translation id="6040143037577758943">ବନ୍ଦ</translation> @@ -830,6 +846,7 @@ <translation id="6407224748847589805">ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟରରେ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ଅନ୍ୟ ଏକ ଯାଞ୍ଚକରଣ ବିକଳ୍ପ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ।</translation> <translation id="6410404864818553978">ବେସିକ୍ ବ୍ୟବହାର ଡାଟା</translation> <translation id="6410883413783534063">ଏକା ସମୟରେ ବିଭିନ୍ନ ପୃଷ୍ଠାକୁ ଭିଜିଟ୍ କରିବା ପାଇଁ ଟାବଗୁଡ଼ିକ ଖୋଲନ୍ତୁ</translation> +<translation id="6411219469806822692">ଏହାଠାରୁ ଉପରକୁ ଯାଇପାରିବ ନାହିଁ। ପୃଷ୍ଠାର ଆହୁରି ଉପରୁ ଆରମ୍ଭ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="6412673304250309937">Chromeରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଅସୁରକ୍ଷିତ ସାଇଟଗୁଡ଼ିକର ଏକ ତାଲିକା ସହିତ URLଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରେ। ଯଦି କୌଣସି ସାଇଟ୍ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଚୋରି କରିବାକୁ ଚେଷ୍ଟା କରେ କିମ୍ବା ଆପଣ ଏକ କ୍ଷତିକାରକ ଫାଇଲ୍ ଡାଉନଲୋଡ୍ କଲେ, ପୃଷ୍ଠାର କିଛି ବିଷୟବସ୍ତୁ ସହିତ URLଗୁଡ଼ିକୁ ମଧ୍ୟ Chrome ସେଫ୍ ବ୍ରାଉଜିଂକୁ ପଠାଇପାରେ।</translation> <translation id="641643625718530986">ପ୍ରିଣ୍ଟ କରନ୍ତୁ…</translation> <translation id="6427112570124116297">ୱେବ୍ ଅନୁବାଦ କରନ୍ତୁ</translation> @@ -892,10 +909,12 @@ <translation id="671481426037969117">ଆପଣଙ୍କର <ph name="FQDN" /> ଟାଇମର୍ର ସମୟ ସମାପ୍ତ ହୋଇଗଲା। ଏହା ଆସନ୍ତାକାଲି କାର୍ଯ୍ୟାରମ୍ଭ କରିବ।</translation> <translation id="6738516213925468394">ଆପଣଙ୍କର ଡାଟା <ph name="TIME" />ଟାରେ ଆପଣଙ୍କ <ph name="BEGIN_LINK" />ସିଙ୍କ୍ ପାସ୍ଫ୍ରେଜ୍<ph name="END_LINK" /> ମାଧ୍ୟମରେ ଏନ୍କ୍ରିପ୍ଟ କରାଯାଇଥିଲା। ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଏହାକୁ ଲେଖନ୍ତୁ।</translation> <translation id="6738867403308150051">ଡାଉନ୍ଲୋଡ୍ ହେଉଛି…</translation> +<translation id="6751521182688001123">ଶୀଘ୍ର ଏକ ନୂଆ ଟାବ୍ ଖୋଲନ୍ତୁ। ଏହି ସର୍ଟକଟକୁ ଏଡିଟ୍ କରିବା ପାଇଁ, ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।</translation> <translation id="6767294960381293877">ଏକ ଟାବ୍ ସେୟାର୍ କରିବା ପାଇଁ ଡିଭାଇସ୍ର ତାଲିକା ଅଧା ସ୍କ୍ରିନ୍ରେ ଖୋଲାଯାଇଛି।</translation> <translation id="6783942555455976443">ଏହି ପୃଷ୍ଠାକୁ ପରବର୍ତ୍ତୀ ସମୟ ପାଇଁ ସେଭ୍ କରନ୍ତୁ ଏବଂ ଏକ ରିମାଇଣ୍ଡର୍ ପାଆନ୍ତୁ</translation> <translation id="6811034713472274749">ଦେଖିବା ପାଇଁ ପୃଷ୍ଟାଟି ପ୍ତସ୍ତୁତ ଅଛି</translation> <translation id="6813446258015311409">Chromeରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ, ଖୋଲା ଅଛି।</translation> +<translation id="6817747507826986771">ଏହି ପୃଷ୍ଠାକୁ ଶୀଘ୍ର ସେୟାର୍ କରନ୍ତୁ। ଏହି ସର୍ଟକଟକୁ ଏଡିଟ୍ କରିବା ପାଇଁ, ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> ଟାବ୍ ଚୟନ କରାଯାଇଛି</translation> <translation id="6846298663435243399">ଲୋଡ୍ ହେଉଛି…</translation> @@ -966,6 +985,7 @@ <translation id="7333031090786104871">ପୂର୍ବର ସାଇଟ୍ ଏବେ ମଧ୍ୟ ଯୋଗ କରୁଛି</translation> <translation id="7339898014177206373">ନୂଆ ୱିଣ୍ଡୋ</translation> <translation id="7340958967809483333">Discover ପାଇଁ ବିକଳ୍ପଗୁଡ଼ିକ</translation> +<translation id="7352339641508007922">ଏକ ବଡ଼ ସ୍କ୍ରିନସଟ୍ ନେବା ପାଇଁ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation> <translation id="7352651011704765696">କିଛି ଭୁଲ୍ ହୋଇଛି</translation> <translation id="7352939065658542140">ଭିଡିଓ</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{1ଟି ଚୟନିତ ଆଇଟମ୍ ସେୟାର୍ କରନ୍ତୁ}other{#ଟି ଚୟନିତ ଆଇଟମ୍ ସେୟାର୍ କରନ୍ତୁ}}</translation> @@ -1058,6 +1078,7 @@ <translation id="7876243839304621966">ସବୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{ଆପଣଙ୍କର <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" />ଟି ପଢ଼ାଯାଇନଥିବା ପୃଷ୍ଠା ଅଛି}other{ଆପଣଙ୍କର <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" />ଟି ପଢ଼ାଯାଇନଥିବା ପୃଷ୍ଠା ଅଛି}}</translation> <translation id="7882131421121961860">କୌଣସି ବିଷୟବସ୍ତୁ ମିଳିଲା ନାହିଁ</translation> +<translation id="7884346424584885269">ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକ ପାଇଁ ସ୍କାନ୍ କରିବାକୁ Chrome ଅନୁମତି ଆବଶ୍ୟକ କରେ। <ph name="BEGIN_LINK" />ଅନୁମତିଗୁଡ଼ିକ ଅପଡେଟ୍ କରନ୍ତୁ<ph name="END_LINK" />।</translation> <translation id="7886917304091689118">Chromeରେ ଚାଲୁଛି</translation> <translation id="789763218334337857">Chrome କିପରି ବ୍ୟବହାର କରିବେ</translation> <translation id="7903184275147100332">ଏଥିପାଇଁ କିଛି ସମୟ ଲାଗିପାରେ</translation> @@ -1151,6 +1172,11 @@ <translation id="8461694314515752532">ଆପଣ ନିଜର ସିଙ୍କ୍ ପାସ୍ଫ୍ରେଜ୍ ସହିତ ସିଙ୍କ୍ କରାଯାଇଥିବା ଡାଟାକୁ ଏନ୍କ୍ରିପ୍ଟ କରନ୍ତୁ।</translation> <translation id="8466613982764129868"><ph name="TARGET_DEVICE_NAME" /> ଇଣ୍ଟର୍ନେଟ୍ ସହ ସଂଯୁକ୍ତ ଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> <translation id="8473863474539038330">ଠିକଣାଗୁଡ଼ିକ ଏବଂ ଅଧିକ</translation> +<translation id="8481921391193215807">ଚାଲୁ ଥିଲେ, ସାଇଟଗୁଡ଼ିକ ସେଗୁଡ଼ିକର ବିଷୟବସ୍ତୁ ଓ ସେବା ପ୍ରଦାନ କରିବା ପାଇଁ ଏଠାରେ ଦେଖାଯାଇଥିବା ଗୋପନୀୟତା-ସଂରକ୍ଷଣ ସମ୍ବନ୍ଧିତ କୌଶଳଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରେ। ଏଥିରେ କ୍ରସ୍-ସାଇଟ୍ ଟ୍ରାକିଂର ବିକଳ୍ପଗୁଡ଼ିକ ଅନ୍ତର୍ଭୁକ୍ତ ଅଛି। ଅଧିକ ଟ୍ରାଏଲ୍ ସମୟ ଅନୁସାରେ ଯୋଗ କରାଯାଇପାରେ। + +<ph name="BEGIN_LIST_ITEM1" />ବିଜ୍ଞାପନଦାତା ଏବଂ ପବ୍ଲିସରମାନେ FLoC ବ୍ୟବହାର କରିପାରିବେ।<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />ବିଜ୍ଞାପନଦାତା ଏବଂ ପବ୍ଲିସରମାନେ ଏପରି ଉପାୟରେ ବିଜ୍ଞାପନଗୁଡ଼ିକର ପ୍ରଭାବକୁ ଅଧ୍ୟୟନ କରିପାରିବେ ଯାହା ଆପଣଙ୍କୁ ବିଭିନ୍ନ ସାଇଟରେ ଟ୍ରାକ୍ କରେ ନାହିଁ।<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">ଟ୍ରାଏଲ୍ ଫିଚରଗୁଡ଼ିକ ଚାଲୁ ଅଛି</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">ଇତିବୃତ୍ତି ପୃଷ୍ଠାକୁ ଖୋଲନ୍ତୁ</translation> @@ -1262,6 +1288,7 @@ <translation id="9204836675896933765">1 ଫାଇଲ୍ ବାକି ଅଛି</translation> <translation id="9206873250291191720">ଅ</translation> <translation id="9209888181064652401">କଲ୍ କରାଯାଇପାରିବ ନାହିଁ</translation> +<translation id="9212845824145208577">ଏହାଠାରୁ ତଳକୁ ଯାଇପାରିବ ନାହିଁ। ପୃଷ୍ଠାର ଆହୁରି ତଳୁ ଆରମ୍ଭ କରିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="9219103736887031265">Images</translation> <translation id="926205370408745186">ଡିଜିଟାଲ୍ ୱେଲ୍ବିଂରୁ ଆପଣଙ୍କର Chrome କାର୍ଯ୍ୟକଳାପଗୁଡ଼ିକୁ କାଢ଼ନ୍ତୁ</translation> <translation id="927968626442779827">Google Chromeରେ ଲାଇଟ୍ ମୋଡ୍ ବ୍ୟବହାର କରନ୍ତୁ</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 4140d7b..099ef95 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pa"> +<translation id="1016498331642356377">ਤੁਰੰਤ ਆਪਣੀ ਅਵਾਜ਼ ਨਾਲ ਖੋਜੋ। ਇਸ ਸ਼ਾਰਟਕੱਟ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" /> ਨੂੰ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ...</translation> <translation id="103269572468856066">ਇਹਨਾਂ ਸਾਈਟਾਂ ਅਤੇ ਐਪਾਂ ਤੋਂ ਵੀ ਡਾਟਾ ਕਲੀਅਰ ਕਰਨਾ ਹੈ?</translation> <translation id="1036348656032585052">ਬੰਦ ਕਰੋ</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">ਲਿਖਤ</translation> <translation id="2068748236079642969">ਅਗਲਾ ਵੀਡੀਓ ਦੇਖੋ</translation> <translation id="2074143993849053708">Assistant ਦੀ ਅਵਾਜ਼ੀ ਖੋਜ ਲਈ ਸਹਿਮਤੀ ਵਾਲਾ UI ਬੰਦ ਹੈ</translation> +<translation id="2075835334924942448">ਤੁਹਾਨੂੰ ਇੱਥੇ ਕਹਾਣੀਆਂ ਮਿਲਣਗੀਆਂ</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> ਦਾ <ph name="RESULT_NUMBER" /> ਨਤੀਜਾ</translation> <translation id="2096012225669085171">ਡੀਵਾਈਸਾਂ ਵਿਚਾਲੇ ਸਮਕਾਲੀਕਰਨ ਕਰੋ ਅਤੇ ਵਿਅਕਤੀਗਤ ਬਣਾਓ</translation> <translation id="2100273922101894616">ਸਵੈਚਲਿਤ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> ਦੀ ਬਚਤ ਕੀਤੀ ਗਈ</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> ਬੰਦ ਕੀਤਾ</translation> <translation id="2139186145475833000">ਹੋਮ ਸਕ੍ਰੀਨ 'ਤੇ ਸ਼ਾਮਲ ਕਰੋ</translation> +<translation id="2141396931810938595">ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ 'ਤੇ</translation> <translation id="214888715418183969">ਚੁਣੋ ਕਿ ਜਿਸ ਨਾਲ ਤੁਸੀਂ Chrome ਨਾਲ ਜਾਣਕਾਰੀ ਸਾਂਝੀ ਕਰਨ ਵਿੱਚ ਸਹਿਜ ਹੋ। ਤੁਹਾਡੇ ਦੁਆਰਾ ਸਾਂਝੀ ਕੀਤੀ ਗਈ ਮੈਟਰਿਕਸ Chrome ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਸਥਿਰਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਸਹਾਇਤਾ ਲਈ ਵਰਤੀ ਜਾਵੇਗੀ।</translation> <translation id="2154484045852737596">ਕਾਰਡ ਦਾ ਸੰਪਾਦਨ ਕਰੋ</translation> <translation id="2154710561487035718">URL ਕਾਪੀ ਕਰੋ</translation> @@ -227,6 +230,7 @@ <translation id="247737702124049222">ਚਿੱਤਰ ਦੇ ਵਰਣਨ ਚਾਲੂ ਹਨ</translation> <translation id="2482878487686419369">ਸੂਚਨਾਵਾਂ</translation> <translation id="2485422356828889247">ਅਣਸਥਾਪਤ ਕਰੋ</translation> +<translation id="2489545061398461256">ਕਾਰਵਾਈ ਪੂਰੀ ਹੋਣ 'ਤੇ ਅਸੀਂ ਇਸਨੂੰ ਵਾਪਸ ਬੰਦ ਕਰ ਦੇਵਾਂਗੇ</translation> <translation id="2494974097748878569">Chrome ਵਿੱਚ 'Google ਅਸਿਸਟੈਂਟ'</translation> <translation id="2496180316473517155">ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ</translation> <translation id="2497852260688568942">ਸਮਕਾਲੀਕਰਨ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ।</translation> @@ -257,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# ਆਡੀਓ ਫ਼ਾਈਲ}one{# ਆਡੀਓ ਫ਼ਾਈਲ}other{# ਆਡੀਓ ਫ਼ਾਈਲਾਂ}}</translation> <translation id="2656405586795711023">ਵੈੱਬ ਐਪਾਂ</translation> <translation id="2689830683995595741">Chrome ਨੂੰ ਵਰਤ ਕੇ, ਤੁਸੀਂ <ph name="BEGIN_LINK1" />Google ਦੇ ਸੇਵਾ ਦੇ ਨਿਯਮਾਂ<ph name="END_LINK1" /> ਅਤੇ <ph name="BEGIN_LINK2" />Google Chrome ਅਤੇ Chrome OS ਦੇ ਵਧੀਕ ਸੇਵਾ ਦੇ ਨਿਯਮਾਂ<ph name="END_LINK2" /> ਨਾਲ ਸਹਿਮਤ ਹੁੰਦੇ ਹੋ। <ph name="BEGIN_LINK3" />Family Link ਨਾਲ ਪ੍ਰਤੀਬੰਧਿਤ ਕੀਤੇ ਜਾਂਦੇ Google ਖਾਤਿਆਂ ਲਈ ਪਰਦੇਦਾਰੀ ਨੋਟਿਸ<ph name="END_LINK3" /> ਵੀ ਲਾਗੂ ਹੁੰਦਾ ਹੈ।</translation> +<translation id="2702516483241149200">ਨਵਾਂ: ਇਸ ਲਿਖਤ ਤੱਕ ਸਕ੍ਰੋਲ ਕਰਨ ਵਾਲਾ ਲਿੰਕ ਸਾਂਝਾ ਕਰੋ</translation> <translation id="2704606927547763573">ਕਾਪੀ ਕੀਤਾ</translation> <translation id="2707726405694321444">ਪੰਨੇ ਰਿਫ੍ਰੈਸ਼ ਕਰੋ</translation> <translation id="271033894570825754">ਨਵਾਂ</translation> @@ -273,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> ਸਕਿੰਟ ਬਾਕੀ</translation> <translation id="2779651927720337254">ਅਸਫਲ</translation> <translation id="2781151931089541271">1 ਸਕਿੰਟ ਬਾਕੀ</translation> +<translation id="2788468313014644040">ਗਰੁੱਪ ਨੰਬਰ</translation> <translation id="2801022321632964776">Chrome ਦੇ ਨਵੀਨਤਮ ਵਰਜਨ ਵਿੱਚ ਆਪਣੀ ਭਾਸ਼ਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ</translation> <translation id="2805756323405976993">ਐਪਸ</translation> <translation id="2806840421670364300">FLoC</translation> @@ -304,6 +310,7 @@ <translation id="2956410042958133412">ਇਹ ਖਾਤਾ <ph name="PARENT_NAME_1" /> ਅਤੇ <ph name="PARENT_NAME_2" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> ਨਾ-ਪੜ੍ਹਿਆ ਪੰਨਾ}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> ਨਾ-ਪੜ੍ਹਿਆ ਪੰਨਾ}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> ਨਾ-ਪੜ੍ਹੇ ਪੰਨੇ}}</translation> <translation id="2979025552038692506">ਚੁਣੀ ਗਈ ਇਨਕੋਗਨਿਟੋ ਟੈਬ</translation> +<translation id="2979448359891869301">ਸਕ੍ਰੀਨਸ਼ਾਟ ਦਾ ਹੋਰ ਵਿਸਤਾਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਜਦੋਂ ਤੁਹਾਡਾ ਫ਼ੋਨ ਵਿਅਸਤ ਨਾ ਹੋਵੇ, ਉਦੋਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="2987620471460279764">ਕਿਸੇ ਹੋਰ ਡੀਵਾਈਸ ਤੋਂ ਸਾਂਝੀ ਕੀਤੀ ਲਿਖਤ</translation> <translation id="2989523299700148168">ਹਾਲੀਆ ਵੇਖੇ ਗਏ</translation> <translation id="2992473221983447149">ਚਿੱਤਰ ਦੇ ਵਰਣਨ</translation> @@ -345,6 +352,7 @@ <translation id="3265534588625245297">ਤੁਹਾਡੇ ਵੱਲੋਂ ਅਨੁਸਰਣ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਸਾਈਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="3269093882174072735">ਚਿੱਤਰ ਲੋਡ ਕਰੋ</translation> <translation id="3269956123044984603">ਤੁਹਾਡੇ ਹੋਰ ਡੀਵਾਈਸਾਂ ਤੋਂ ਤੁਹਾਡੀਆਂ ਟੈਬਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, Android ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਵਿੱਚ "ਡਾਟਾ ਸਵੈ-ਸਮਕਾਲੀਕਿਰਤ ਕਰੋ" ਨੂੰ ਚਾਲੂ ਕਰੋ।</translation> +<translation id="3280562213547448728">ਅਵਾਜ਼ੀ ਖੋਜ</translation> <translation id="3282568296779691940">Chrome 'ਤੇ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="3284510035090979597">ਚੁਸਤ ਮਦਦ</translation> <translation id="3285080554353377245">Chrome ਨੂੰ ਵਰਤਣ ਦੇ ਤਰੀਕੇ ਬਾਰੇ ਵੀਡੀਓ</translation> @@ -395,6 +403,7 @@ <translation id="3563767357928833671">ਕਲਿੱਪਬੋਰਡ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਦਿਖਾਈਆਂ ਗਈਆਂ</translation> <translation id="3566923219790363270">Chrome ਹਾਲੇ ਵੀ VR ਲਈ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਬਾਅਦ ਵਿੱਚ Chrome ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="3568688522516854065">ਆਪਣੇ ਹੋਰ ਡੀਵਾਈਸਾਂ ਤੋਂ ਆਪਣੀਆਂ ਟੈਬਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਾਈਨ-ਇਨ ਕਰਕੇ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation> +<translation id="3577473026931028326">ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="3587482841069643663">ਸਾਰੇ</translation> <translation id="3587596251841506391">ਵੈੱਬ 'ਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ</translation> <translation id="3602290021589620013">ਪ੍ਰੀਵਿਊ</translation> @@ -459,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">ਵਿਕਲਪ ਸਕ੍ਰੀਨ ਦੇ ਉੱਪਰਲੇ ਪਾਸੇ ਕੋਲ ਉਪਲਬਧ ਹਨ</translation> <translation id="4062305924942672200">ਕਨੂੰਨੀ ਜਾਣਕਾਰੀ</translation> -<translation id="4082818367361753283">ਗਰੁੱਪ ਆਈਡੀ</translation> <translation id="4084682180776658562">ਬੁੱਕਮਾਰਕ</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> ਤੋਂ – <ph name="BEGIN_DEEMPHASIZED" />Google ਰਾਹੀਂ ਡਿਲੀਵਰ ਕੀਤਾ ਗਿਆ<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ਕੀ ਐਪ ਡਾਟਾ ਮਿਟਾਉਣਾ ਹੈ?</translation> @@ -480,6 +488,7 @@ <translation id="4195643157523330669">ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation> <translation id="4198423547019359126">ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਕੋਈ ਟਿਕਾਣਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</translation> <translation id="4209895695669353772">Google ਵੱਲੋਂ ਸੁਝਾਈ ਵਿਅਕਤੀਗਤ ਬਣਾਈ ਗਈ ਸਮੱਗਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation> +<translation id="4225895483398857530">ਟੂਲਬਾਰ ਸ਼ਾਰਟਕੱਟ</translation> <translation id="4242533952199664413">ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ</translation> <translation id="4248098802131000011">ਆਪਣੇ ਪਾਸਵਰਡਾਂ ਨੂੰ ਡਾਟਾ ਉਲੰਘਣਾਵਾਂ ਅਤੇ ਹੋਰ ਸੁਰੱਖਿਆ ਸੰਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਸੁਰੱਖਿਅਤ ਰੱਖੋ</translation> <translation id="4250229828105606438">ਸਕ੍ਰੀਨਸ਼ਾਟ</translation> @@ -535,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# ਮਿੰਟ ਪਹਿਲਾਂ}one{# ਮਿੰਟ ਪਹਿਲਾਂ}other{# ਮਿੰਟ ਪਹਿਲਾਂ}}</translation> <translation id="4587589328781138893">ਸਾਈਟਾਂ</translation> <translation id="4594952190837476234">ਇਹ ਆਫ਼ਲਾਈਨ ਪੰਨਾ <ph name="CREATION_TIME" /> ਦਾ ਹੈ ਅਤੇ ਆਨਲਾਈਨ ਵਰਜਨ ਤੋਂ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ।</translation> +<translation id="4608360466722749036">ਬਲੂਟੁੱਥ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" /> ਖੋਲ੍ਹੋ</translation> <translation id="4619564267100705184">ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="4634124774493850572">ਪਾਸਵਰਡ ਵਰਤੋ</translation> @@ -746,12 +756,14 @@ <translation id="5864419784173784555">ਕਿਸੇ ਹੋਰ ਡਾਊਨਲੋਡ ਵੱਲੋਂ ਨੈੱਟਵਰਕ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…</translation> <translation id="5865733239029070421">Google ਨੂੰ ਵਰਤੋਂ ਅੰਕੜੇ ਅਤੇ ਕ੍ਰੈਸ਼ ਰਿਪੋਰਟਾਂ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਭੇਜਦੀ ਹੈ</translation> <translation id="5869522115854928033">ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ</translation> +<translation id="587735546353481577">ਕਿਸੇ ਸਾਈਟ ਦਾ ਅਨੁਸਰਣ ਕਰਨ ਲਈ, ਸਾਈਟ 'ਤੇ ਜਾਓ, Chrome ਮੀਨੂ ਖੋਲ੍ਹੋ, ਅਤੇ 'ਅਨੁਸਰਣ ਕਰੋ' 'ਤੇ ਟੈਪ ਕਰੋ।</translation> <translation id="5880748256563468367">ਫ਼ੀਡ 'ਤੇ ਜਾਓ</translation> <translation id="5884076754568147479">ਕਾਰਜ ਪੂਰੇ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਨ ਲਈ, Google ਨੂੰ ਉਹਨਾਂ ਸਾਈਟਾਂ ਦੇ URL ਅਤੇ ਸਮੱਗਰੀਆਂ ਮਿਲਣਗੀਆਂ ਜਿਨ੍ਹਾਂ 'ਤੇ ਤੁਸੀਂ Assistant ਨੂੰ ਵਰਤਦੇ ਹੋ, ਨਾਲ ਹੀ ਤੁਹਾਡੇ ਵੱਲੋਂ Assistant ਰਾਹੀਂ ਸਪੁਰਦ ਕੀਤੀ ਜਾਣਕਾਰੀ ਵੀ ਮਿਲੇਗੀ</translation> <translation id="5919204609460789179">ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ <ph name="PRODUCT_NAME" /> ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ</translation> <translation id="5939518447894949180">ਰੀਸੈਟ ਕਰੋ</translation> <translation id="5942872142862698679">ਖੋਜ ਲਈ Google ਦੀ ਵਰਤੋਂ ਹੋ ਰਹੀ ਹੈ</translation> +<translation id="5945035219773565305">ਮੌਜੂਦਾ ਸਿਫ਼ਾਰਸ਼: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">ਲਾਈਵ ਪੰਨਾ ਦੇਖਿਆ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="5952764234151283551">Google ਨੂੰ ਉਸ ਪੰਨੇ ਦਾ URL ਭੇਜਦੀ ਹੈ, ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਜਾਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ</translation> <translation id="5956665950594638604">ਇੱਕ ਨਵੀਂ ਟੈਬ ਵਿੱਚ Chrome ਮਦਦ ਕੇਂਦਰ ਖੋਲ੍ਹੋ</translation> @@ -765,6 +777,10 @@ <translation id="6000203700195075278">ਮੁੜ-ਅਨੁਸਰਣ ਕਰੋ</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />ਖੋਜ<ph name="END_LINK1" /> ਜਾਂ ਹੋਰ ਕਿਸਮ ਦੇ ਇਤਿਹਾਸ ਨੂੰ ਕਲੀਅਰ ਕਰਨ ਲਈ, <ph name="BEGIN_LINK2" />ਮੇਰੀ Google ਸਰਗਰਮੀ<ph name="END_LINK2" /> 'ਤੇ ਜਾਓ</translation> <translation id="6005538289190791541">ਸੁਝਾਇਆ ਗਿਆ ਪਾਸਵਰਡ</translation> +<translation id="6032091552407840792">ਇਹ ਪਰਖ ਸਿਰਫ਼ <ph name="BEGIN_LINK" />ਕੁਝ ਖੇਤਰਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਹੀ ਕਿਰਿਆਸ਼ੀਲ ਹੈ।</translation> +<translation id="6033245666633565791"><ph name="BEGIN_LINK" />ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ<ph name="END_LINK" /> ਦੇ ਨਾਲ, Chrome ਨਵੀਆਂ ਤਕਨਾਲੋਜੀਆਂ ਦਾ ਵਿਕਾਸ ਕਰ ਰਿਹਾ ਹੈ, ਤਾਂਕਿ ਖੁੱਲੇ ਵੈੱਬ ਨੂੰ ਸੰਭਾਲ ਕੇ ਰੱਖਣ ਦੇ ਨਾਲ-ਨਾਲ ਤੁਹਾਨੂੰ ਕ੍ਰਾਸ-ਸਾਈਟ ਟਰੈਕਿੰਗ ਤੋਂ ਸੁਰੱਖਿਅਤ ਰੱਖਿਆ ਜਾ ਸਕੇ। + +ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ ਪਰਖਾਂ ਅਜੇ ਵੀ ਵਿਕਾਸ ਅਧੀਨ ਹਨ ਅਤੇ ਚੁਣੇ ਗਏ ਖੇਤਰਾਂ ਵਿੱਚ ਉਪਲਬਧ ਹਨ। ਹੁਣ ਲਈ, ਸਾਈਟਾਂ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਵਰਗੀਆਂ ਮੌਜੂਦਾ ਵੈੱਬ ਤਕਨਾਲੋਜੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਪ੍ਰਾਈਵੇਸੀ ਸੈਂਡਬਾਕਸ ਨੂੰ ਅਜ਼ਮਾ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="6036057147555329831">ਵਾਧੂ ICU</translation> <translation id="6039379616847168523">ਅਗਲੀ ਟੈਬ 'ਤੇ ਜਾਓ</translation> <translation id="6040143037577758943">ਬੰਦ ਕਰੋ</translation> @@ -830,6 +846,7 @@ <translation id="6407224748847589805">ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਪੁਸ਼ਟੀਕਰਨ ਦਾ ਕੋਈ ਹੋਰ ਵਿਕਲਪ ਅਜ਼ਮਾਓ।</translation> <translation id="6410404864818553978">ਮੁੁੱਢਲਾ ਵਰਤੋਂ ਡਾਟਾ</translation> <translation id="6410883413783534063">ਇੱਕੋ ਵੇਲੇ ਵੱਖ-ਵੱਖ ਪੰਨਿਆਂ 'ਤੇ ਜਾਣ ਲਈ ਟੈਬਾਂ ਖੋਲ੍ਹੋ</translation> +<translation id="6411219469806822692">ਇਸ ਤੋਂ ਉੱਪਰ ਨਹੀਂ ਜਾ ਸਕਦੇ। ਪੰਨੇ 'ਤੇ ਥੋੜ੍ਹਾ ਉੱਪਰ ਤੋਂ ਸ਼ੁਰੂਆਤ ਕਰਕੇ ਦੇਖੋ।</translation> <translation id="6412673304250309937">Chrome ਵਿੱਚ ਸਟੋਰ ਕੀਤੀਆਂ ਅਸੁਰੱਖਿਅਤ ਸਾਈਟਾਂ ਦੀ ਸੂਚੀ ਦੇ ਨਾਲ URL ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਕੋਈ ਸਾਈਟ ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਨੂੰ ਚੋਰੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੀ ਹੈ ਜਾਂ ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਨੁਕਸਾਨਦੇਹ ਫ਼ਾਈਲ ਡਾਊਨਲੋਡ ਕਰਦੇ ਹੋ, ਤਾਂ Chrome ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਨੂੰ ਪੰਨੇ ਦੀ ਥੋੜ੍ਹੀ ਸਮੱਗਰੀ ਸਮੇਤ URL ਵੀ ਭੇਜ ਸਕਦਾ ਹੈ।</translation> <translation id="641643625718530986">ਪ੍ਰਿੰਟ…</translation> <translation id="6427112570124116297">ਵੈੱਬ ਦਾ ਅਨੁਵਾਦ ਕਰੋ</translation> @@ -892,10 +909,12 @@ <translation id="671481426037969117">ਤੁਹਾਡਾ <ph name="FQDN" /> ਟਾਈਮਰ ਸਮਾਪਤ ਹੋਇਆ। ਇਹ ਭਲਕੇ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਹੋਵੇਗਾ।</translation> <translation id="6738516213925468394">ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ <ph name="BEGIN_LINK" />ਸਮਕਾਲੀਕਰਨ ਪਾਸਫਰੇਜ਼<ph name="END_LINK" /> ਨਾਲ <ph name="TIME" /> ਵਜੇ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ। ਸਮਕਾਲੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇਸਨੂੰ ਦਾਖਲ ਕਰੋ।</translation> <translation id="6738867403308150051">ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…</translation> +<translation id="6751521182688001123">ਤੁਰੰਤ ਇੱਕ ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹੋ। ਇਸ ਸ਼ਾਰਟਕੱਟ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।</translation> <translation id="6767294960381293877">ਟੈਬ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਵਾਲੇ ਡੀਵਾਈਸਾਂ ਦੀ ਸੂਚੀ ਅੱਧੀ ਉਚਾਈ 'ਤੇ ਖੁੱਲ੍ਹੀ ਹੋਈ ਹੈ।</translation> <translation id="6783942555455976443">ਇਸ ਪੰਨੇ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹਣ ਲਈ ਰੱਖਿਅਤ ਕਰੋ ਅਤੇ ਇਸ ਲਈ ਇੱਕ ਯਾਦ-ਸੂਚਨਾ ਪ੍ਰਾਪਤ ਕਰੋ</translation> <translation id="6811034713472274749">ਦੇਖਣ ਲਈ ਪੰਨਾ ਤਿਆਰ ਹੈ</translation> <translation id="6813446258015311409">Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ, ਖੋਲ੍ਹਿਆ ਗਿਆ।</translation> +<translation id="6817747507826986771">ਇਸ ਪੰਨੇ ਨੂੰ ਤੁਰੰਤ ਸਾਂਝਾ ਕਰੋ। ਇਸ ਸ਼ਾਰਟਕੱਟ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> ਟੈਬ ਨੂੰ ਚੁਣਿਆ ਗਿਆ</translation> <translation id="6846298663435243399">ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...</translation> @@ -966,6 +985,7 @@ <translation id="7333031090786104871">ਹਾਲੇ ਪਿਛਲੀ ਸਾਈਟ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="7339898014177206373">ਨਵੀਂ window</translation> <translation id="7340958967809483333">'ਡਿਸਕਵਰ' ਲਈ ਵਿਕਲਪ</translation> +<translation id="7352339641508007922">ਇੱਕ ਲੰਬਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲੈਣ ਲਈ ਘਸੀਟੋ</translation> <translation id="7352651011704765696">ਕੁਝ ਗ਼ਲਤ ਹੋਇਆ ਸੀ</translation> <translation id="7352939065658542140">ਵੀਡੀਓ</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{1 ਚੁਣੀ ਗਈ ਆਈਟਮ ਸਾਂਝੀ ਕਰੋ}one{# ਚੁਣੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਸਾਂਝੀਆਂ ਕਰੋ}other{# ਚੁਣੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਸਾਂਝੀਆਂ ਕਰੋ}}</translation> @@ -1058,6 +1078,7 @@ <translation id="7876243839304621966">ਸਾਰੇ ਹਟਾਓ</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{ਤੁਹਾਡੇ ਕੋਲ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> ਨਾ-ਪੜ੍ਹਿਆ ਪੰਨਾ ਹੈ}one{ਤੁਹਾਡੇ ਕੋਲ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> ਨਾ-ਪੜ੍ਹਿਆ ਪੰਨਾ ਹੈ}other{ਤੁਹਾਡੇ ਕੋਲ <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> ਨਾ-ਪੜ੍ਹੇ ਪੰਨੇ ਹਨ}}</translation> <translation id="7882131421121961860">ਕੋਈ ਇਤਿਹਾਸ ਨਹੀਂ ਮਿਲਿਆ</translation> +<translation id="7884346424584885269">Chrome ਨੂੰ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਨੂੰ ਸਕੈਨ ਕਰਨ ਵਾਸਤੇ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ। <ph name="BEGIN_LINK" />ਇਜਾਜ਼ਤਾਂ ਅੱਪਡੇਟ ਕਰੋ<ph name="END_LINK" /></translation> <translation id="7886917304091689118">Chrome ਵਿੱਚ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="789763218334337857">Chrome ਨੂੰ ਵਰਤਣ ਦਾ ਤਰੀਕਾ</translation> <translation id="7903184275147100332">ਇਸ ਵਿੱਚ ਕੁਝ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ</translation> @@ -1151,6 +1172,11 @@ <translation id="8461694314515752532">ਆਪਣੇ ਖੁਦ ਦੇ ਸਮਕਾਲੀਕਰਨ ਪਾਸਫਰੇਜ਼ ਨਾਲ ਸਮਕਾਲੀਕਿਰਤ ਡਾਟੇ ਨੂੰ ਇਨਕ੍ਰਿਪਟ ਕਰੋ</translation> <translation id="8466613982764129868">ਪੱਕਾ ਕਰੋ ਕਿ <ph name="TARGET_DEVICE_NAME" /> ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਹੋਵੇ</translation> <translation id="8473863474539038330">ਪਤੇ ਅਤੇ ਹੋਰ</translation> +<translation id="8481921391193215807">ਚਾਲੂ ਹੋਣ 'ਤੇ, ਸਾਈਟਾਂ ਆਪਣੀ ਸਮੱਗਰੀ ਅਤੇ ਸੇਵਾਵਾਂ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਇੱਥੇ ਦਿਖਾਈਆਂ ਗਈਆਂ ਪਰਦੇਦਾਰੀ-ਸੰਭਾਲਣ ਵਾਲੀਆਂ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹਨਾਂ ਵਿੱਚ ਕ੍ਰਾਸ-ਸਾਈਟ ਟਰੈਕਿੰਗ ਦੇ ਵਿਕਲਪ ਸ਼ਾਮਲ ਹਨ। ਸਮੇਂ ਦੇ ਨਾਲ ਹੋਰ ਪਰਖਾਂ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। + +<ph name="BEGIN_LIST_ITEM1" />ਵਿਗਿਆਪਨਦਾਤੇ ਅਤੇ ਪ੍ਰਕਾਸ਼ਕ FLoC ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਨ।<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />ਵਿਗਿਆਪਨਦਾਤੇ ਅਤੇ ਪ੍ਰਕਾਸ਼ਕ ਵਿਗਿਆਪਨਾਂ ਦੀ ਪ੍ਰਭਾਵਕਤਾ ਦਾ ਅਧਿਐਨ ਅਜਿਹੇ ਤਰੀਕੇ ਨਾਲ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਸਾਈਟਾਂ 'ਤੇ ਟਰੈਕ ਨਹੀਂ ਕਰਦਾ।<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">ਪਰਖ ਸੰਬੰਧੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਚਾਲੂ ਹਨ</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">ਇਤਿਹਾਸ ਪੰਨਾ ਖੋਲ੍ਹੋ</translation> @@ -1262,6 +1288,7 @@ <translation id="9204836675896933765">1 ਫ਼ਾਈਲ ਬਾਕੀ</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">ਕਾਲਾਂ ਨਹੀਂ ਕਰ ਸਕਦੇ</translation> +<translation id="9212845824145208577">ਹੋਰ ਹੇਠਾਂ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਪੰਨੇ 'ਤੇ ਥੋੜ੍ਹਾ ਹੇਠਾਂ ਤੋਂ ਸ਼ੁਰੂਆਤ ਕਰਕੇ ਦੇਖੋ।</translation> <translation id="9219103736887031265">ਚਿੱਤਰ</translation> <translation id="926205370408745186">ਡਿਜੀਟਲ ਜੀਵਨਸ਼ੈਲੀ ਤੋਂ ਆਪਣੀ Chrome ਸਰਗਰਮੀ ਹਟਾਓ</translation> <translation id="927968626442779827">Google Chrome 'ਤੇ ਲਾਈਟ ਮੋਡ ਵਰਤੋ</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 33da03bc..28e12a9 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Pozostało: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">Nie pobrano</translation> <translation id="2781151931089541271">Pozostała sekunda</translation> +<translation id="2788468313014644040">Numer grupy</translation> <translation id="2801022321632964776">Zaktualizuj Chrome do najnowszej wersji, by mieć w nim dostępny swój język</translation> <translation id="2805756323405976993">Aplikacje</translation> <translation id="2806840421670364300">Sfederowane uczenie się kohort</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opcje dostępne na górze ekranu</translation> <translation id="4062305924942672200">Informacje prawne</translation> -<translation id="4082818367361753283">Identyfikator grupy</translation> <translation id="4084682180776658562">Dodaj do zakładek</translation> <translation id="4084712963632273211">Opublikowane na <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />wyświetlone przez Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Usunąć dane aplikacji?</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 18f451d..093b84a7 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pt-BR"> +<translation id="1016498331642356377">Pesquisar rapidamente usando sua voz. Para editar este atalho, toque e mantenha pressionado.</translation> <translation id="1028699632127661925">Enviando para este dispositivo: <ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">Limpar também dados desses sites e apps?</translation> <translation id="1036348656032585052">Desativar</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">texto</translation> <translation id="2068748236079642969">Assistir ao próximo vídeo</translation> <translation id="2074143993849053708">IU de consentimento para a pesquisa por voz do Assistente fechada</translation> +<translation id="2075835334924942448">Matérias serão exibidas aqui</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Sincronizar e personalizar vários dispositivos</translation> <translation id="2100273922101894616">Login automático</translation> @@ -167,9 +169,10 @@ <translation id="2111511281910874386">Ir para a página</translation> <translation id="2122601567107267586">Não foi possível abrir o aplicativo</translation> <translation id="2126426811489709554">Em execução no Chrome</translation> -<translation id="2131665479022868825"><ph name="DATA" /> salvo(s)</translation> +<translation id="2131665479022868825"><ph name="DATA" /> economizado(s)</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> fechada</translation> <translation id="2139186145475833000">Adicionar à tela inicial</translation> +<translation id="2141396931810938595">Com base no seu uso</translation> <translation id="214888715418183969">Escolha o que você gostaria de compartilhar com o Chrome. As métricas compartilhadas são usadas para aprimorar os recursos, o desempenho e a estabilidade do navegador.</translation> <translation id="2154484045852737596">Editar cartão</translation> <translation id="2154710561487035718">Copiar URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# arquivo de áudio}one{# arquivo de áudio}other{# arquivos de áudio}}</translation> <translation id="2656405586795711023">Apps da Web</translation> <translation id="2689830683995595741">Ao usar o Chrome, você concorda com os <ph name="BEGIN_LINK1" />Termos de Serviço do Google<ph name="END_LINK1" /> e os <ph name="BEGIN_LINK2" />Termos de Serviço adicionais do Google Chrome e do Chrome OS<ph name="END_LINK2" />. O <ph name="BEGIN_LINK3" />Aviso de privacidade para Contas do Google gerenciadas no Family Link<ph name="END_LINK3" /> também é aplicável.</translation> +<translation id="2702516483241149200">Novidade: agora é possível compartilhar um link que rola até este texto</translation> <translation id="2704606927547763573">Copiado</translation> <translation id="2707726405694321444">Atualizar página</translation> <translation id="271033894570825754">Novo</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> <translation id="2779651927720337254">falha</translation> <translation id="2781151931089541271">Um segundo restante</translation> +<translation id="2788468313014644040">Número do grupo</translation> <translation id="2801022321632964776">Faça a atualização para usar a versão mais recente do Chrome no seu idioma</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Esta conta é gerenciada por <ph name="PARENT_NAME_1" /> e <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> página não lida}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> página não lida}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> páginas não lidas}}</translation> <translation id="2979025552038692506">Guia anônima selecionada</translation> +<translation id="2979448359891869301">Não é possível alongar a captura de tela. Tente novamente quando o smartphone não estiver ocupado.</translation> <translation id="2987620471460279764">Texto compartilhado de outro dispositivo</translation> <translation id="2989523299700148168">Visitados recentemente</translation> <translation id="2992473221983447149">Descrições de imagens</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Gerenciar os sites seguidos</translation> <translation id="3269093882174072735">Carregar imagem</translation> <translation id="3269956123044984603">Para ver as guias dos seus outros dispositivos, ative a opção "Sincronizar dados automaticamente" nas configurações de conta do Android.</translation> +<translation id="3280562213547448728">Pesquisa por voz</translation> <translation id="3282568296779691940">Fazer login no Google Chrome</translation> <translation id="3284510035090979597">Ajuda proativa</translation> <translation id="3285080554353377245">Vídeos sobre como usar o Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Conteúdo da área de transferência exibido</translation> <translation id="3566923219790363270">O Chrome ainda está se preparando para a RV. Reinicie-o mais tarde.</translation> <translation id="3568688522516854065">Para ver as guias dos seus outros dispositivos, faça login e ative a sincronização</translation> +<translation id="3577473026931028326">Algo deu errado. Tente novamente.</translation> <translation id="3587482841069643663">Tudo</translation> <translation id="3587596251841506391">Ajudar a melhorar a segurança na Web</translation> <translation id="3602290021589620013">Visualizar</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sépia</translation> <translation id="4060598801229743805">Opções disponíveis perto da parte superior da tela</translation> <translation id="4062305924942672200">Informações legais</translation> -<translation id="4082818367361753283">ID do grupo</translation> <translation id="4084682180776658562">Favorito</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" />: <ph name="BEGIN_DEEMPHASIZED" />veiculado pelo Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Excluir dados de apps?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Abrir em uma nova guia</translation> <translation id="4198423547019359126">Não há locais de download disponíveis</translation> <translation id="4209895695669353772">Para receber conteúdo personalizado sugerido pelo Google, ative a sincronização</translation> +<translation id="4225895483398857530">Atalho da barra de ferramentas</translation> <translation id="4242533952199664413">Abrir configurações.</translation> <translation id="4248098802131000011">Manter suas senhas protegidas contra violações de dados e outros problemas de segurança</translation> <translation id="4250229828105606438">Captura de tela</translation> @@ -749,12 +757,14 @@ <translation id="5864419784173784555">Aguardando outro download…</translation> <translation id="5865733239029070421">Envia estatísticas de uso e relatórios de erros automaticamente para o Google</translation> <translation id="5869522115854928033">Senhas salvas</translation> +<translation id="587735546353481577">Para seguir um site, acesse-o, abra o menu do Google Chrome e toque em "Seguir".</translation> <translation id="5880748256563468367">Acessar o feed</translation> <translation id="5884076754568147479">Para ajudar você com suas tarefas, o Google receberá os URLs e o conteúdo de sites em que você usa o Assistente, bem como as informações que você envia por ele</translation> <translation id="5919204609460789179">Atualize <ph name="PRODUCT_NAME" /> para iniciar a sincronização</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> economizado(s)</translation> <translation id="5939518447894949180">Redefinir</translation> <translation id="5942872142862698679">Usando o Google para pesquisar</translation> +<translation id="5945035219773565305">Recomendação atual: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Visualizando página ativa</translation> <translation id="5952764234151283551">Envia ao Google o URL de uma página que você está tentando acessar</translation> <translation id="5956665950594638604">Abrir Central de Ajuda do Chrome em uma nova guia</translation> @@ -768,6 +778,10 @@ <translation id="6000203700195075278">Voltar a seguir</translation> <translation id="6002623704405939939">Para limpar a <ph name="BEGIN_LINK1" />pesquisa<ph name="END_LINK1" /> ou outras formas de histórico, acesse a página <ph name="BEGIN_LINK2" />Minha atividade no Google<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Senha sugerida</translation> +<translation id="6032091552407840792">Esse teste está disponível apenas em <ph name="BEGIN_LINK" />algumas regiões<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">Com o <ph name="BEGIN_LINK" />Sandbox de privacidade<ph name="END_LINK" />, o Chrome está desenvolvendo novas tecnologias de proteção contra mecanismos de rastreamento enquanto mantém a Web livre. + +Os testes dessa tecnologia ainda estão em desenvolvimento ativo e estão disponíveis apenas em algumas regiões. Por enquanto, os sites podem testar o Sandbox de privacidade enquanto continuam usando as tecnologias atuais da Web, como cookies de terceiros.</translation> <translation id="6036057147555329831">ICU extra</translation> <translation id="6039379616847168523">Ir para a próxima guia</translation> <translation id="6040143037577758943">Fechar</translation> @@ -833,6 +847,7 @@ <translation id="6407224748847589805">Não foi possível se conectar ao seu computador. Tente outra opção de verificação.</translation> <translation id="6410404864818553978">Dados de uso básicos</translation> <translation id="6410883413783534063">Abra guias para acessar páginas diferentes ao mesmo tempo</translation> +<translation id="6411219469806822692">Não é possível subir mais. Tente começar mais acima na página.</translation> <translation id="6412673304250309937">Verifica se os URLs estão em uma lista de sites não seguros armazenada no Chrome. Se um site tentar roubar sua senha ou se você fizer o download de um arquivo nocivo, o Chrome também poderá enviar URLs, incluindo partes do conteúdo da página, para o "Navegação segura".</translation> <translation id="641643625718530986">Imprimir...</translation> <translation id="6427112570124116297">Traduzir página da Web</translation> @@ -895,10 +910,12 @@ <translation id="671481426037969117">Seu timer para <ph name="FQDN" /> chegou ao fim. Ele será iniciado novamente amanhã.</translation> <translation id="6738516213925468394">Seus dados foram criptografados com sua <ph name="BEGIN_LINK" />senha longa de sincronização<ph name="END_LINK" /> em <ph name="TIME" />. Digite-a para iniciar a sincronização.</translation> <translation id="6738867403308150051">Fazendo o download...</translation> +<translation id="6751521182688001123">Abrir rapidamente uma nova guia. Para editar este atalho, toque e mantenha pressionado.</translation> <translation id="6767294960381293877">Lista de dispositivos com os quais é possível compartilhar uma guia aberta na metade da altura.</translation> <translation id="6783942555455976443">Salve esta página e receba uma notificação mais tarde</translation> <translation id="6811034713472274749">A página já pode ser visualizada</translation> <translation id="6813446258015311409">Fazer login no Chrome, aberta.</translation> +<translation id="6817747507826986771">Compartilhar esta página rapidamente. Para editar este atalho, toque e mantenha pressionado.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">A guia <ph name="TAB_TITLE" /> está selecionada</translation> <translation id="6846298663435243399">Carregando…</translation> @@ -969,6 +986,7 @@ <translation id="7333031090786104871">Ainda adicionando o site anterior</translation> <translation id="7339898014177206373">Nova janela</translation> <translation id="7340958967809483333">Opções do Discover</translation> +<translation id="7352339641508007922">Arraste para fazer uma captura de tela longa</translation> <translation id="7352651011704765696">Algo deu errado</translation> <translation id="7352939065658542140">VÍDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Compartilhar 1 item selecionado}one{Compartilhar # item selecionado}other{Compartilhar # itens selecionados}}</translation> @@ -1061,6 +1079,7 @@ <translation id="7876243839304621966">Remover tudo</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Você tem <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> página não lida}one{Você tem <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> página não lida}other{Você tem <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> páginas não lidas}}</translation> <translation id="7882131421121961860">Nenhum histórico encontrado</translation> +<translation id="7884346424584885269">O Chrome precisa de permissão para buscar dispositivos próximos. <ph name="BEGIN_LINK" />Atualizar permissões<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">Executando no Chrome</translation> <translation id="789763218334337857">Como usar o Google Chrome</translation> <translation id="7903184275147100332">Isso pode demorar um pouco</translation> @@ -1154,6 +1173,11 @@ <translation id="8461694314515752532">Criptografar dados sincronizados com sua própria senha longa de sincronização</translation> <translation id="8466613982764129868">Verifique se o <ph name="TARGET_DEVICE_NAME" /> está conectado à Internet</translation> <translation id="8473863474539038330">Endereços e mais</translation> +<translation id="8481921391193215807">Quando esse recurso estiver ativado, os sites poderão usar as técnicas de preservação de privacidade mostradas aqui para exibir conteúdo e serviços. Isso inclui alternativas ao rastreamento entre sites. Ao longo do tempo, é possível que outros testes sejam adicionados. + +<ph name="BEGIN_LIST_ITEM1" />Anunciantes e editores podem usar o FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Eles também podem analisar a eficácia dos anúncios sem rastrear suas ações em sites.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Os recursos de teste estão ativados</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Abrir Histórico</translation> @@ -1265,6 +1289,7 @@ <translation id="9204836675896933765">1 arquivo restante</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Não é possível fazer chamadas</translation> +<translation id="9212845824145208577">Não é possível descer mais. Tente começar mais abaixo na página.</translation> <translation id="9219103736887031265">Imagens</translation> <translation id="926205370408745186">Remover sua atividade do Chorme do Bem-estar digital</translation> <translation id="927968626442779827">Use o Modo Lite no Google Chrome</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 28fad50..b4b85a2 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Faltam <ph name="SECONDS" /> segundos</translation> <translation id="2779651927720337254">falhou</translation> <translation id="2781151931089541271">Falta 1 segundo</translation> +<translation id="2788468313014644040">Número do grupo</translation> <translation id="2801022321632964776">Atualize o Chrome para a versão mais recente de modo a obter o seu idioma.</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2806840421670364300">AFC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sépia</translation> <translation id="4060598801229743805">Opções disponíveis junto à parte superior do ecrã</translation> <translation id="4062305924942672200">Informações legais</translation> -<translation id="4082818367361753283">ID do grupo</translation> <translation id="4084682180776658562">Marcar</translation> <translation id="4084712963632273211">De <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />fornecido pela Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Pretende eliminar os dados da aplicação?</translation>
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 4f3a633..e5cb4838 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sec. rămase</translation> <translation id="2779651927720337254">nereușită</translation> <translation id="2781151931089541271">1 sec. rămasă</translation> +<translation id="2788468313014644040">Numărul grupului</translation> <translation id="2801022321632964776">Actualizează pentru a descărca limba ta în cea mai recentă versiune de Chrome</translation> <translation id="2805756323405976993">Aplicații</translation> <translation id="2806840421670364300">ÎFG</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opțiunile sunt disponibile în partea de sus a ecranului</translation> <translation id="4062305924942672200">Informații juridice</translation> -<translation id="4082818367361753283">ID-ul grupului</translation> <translation id="4084682180776658562">Marcaj</translation> <translation id="4084712963632273211">De la <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />livrată de Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Ștergi datele aplicației?</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 1fce2a00..d33d973 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ru"> +<translation id="1016498331642356377">Выполнить голосовой поиск. Чтобы изменить функцию кнопки, нажмите и удерживайте ее.</translation> <translation id="1028699632127661925">Отправка на устройство "<ph name="DEVICE_NAME" />"…</translation> <translation id="103269572468856066">Удалить эти данные?</translation> <translation id="1036348656032585052">Отключить</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">текст</translation> <translation id="2068748236079642969">Смотреть следующее видео</translation> <translation id="2074143993849053708">Окно, где требуется разрешить использование Ассистента для голосового поиска, закрыто</translation> +<translation id="2075835334924942448">Здесь будут статьи</translation> <translation id="2082238445998314030">Результат <ph name="RESULT_NUMBER" />, всего <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Синхронизация и персонализация данных на всех устройствах</translation> <translation id="2100273922101894616">Автоматический вход</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">Сэкономлено: <ph name="DATA" /></translation> <translation id="213279576345780926">Вкладка "<ph name="TAB_TITLE" />" закрыта.</translation> <translation id="2139186145475833000">Добавить на гл. экран</translation> +<translation id="2141396931810938595">На основе данных об использовании</translation> <translation id="214888715418183969">Укажите, какие данные вы готовы передавать Chrome. Информация, которую вы будете предоставлять, поможет нам улучшать функции браузера, а также повышать его производительность и стабильность.</translation> <translation id="2154484045852737596">Изменение данных карты</translation> <translation id="2154710561487035718">Копировать URL</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# аудиофайл}one{# аудиофайл}few{# аудиофайла}many{# аудиофайлов}other{# аудиофайла}}</translation> <translation id="2656405586795711023">Веб-приложения</translation> <translation id="2689830683995595741">Используя Chrome, вы принимаете <ph name="BEGIN_LINK1" />Условия использования Google<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Дополнительные условия использования Chrome и Chrome OS<ph name="END_LINK2" />. Кроме этих документов, также действует <ph name="BEGIN_LINK3" />Примечание о конфиденциальности данных в аккаунтах Google, управляемых с помощью Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Теперь можно поделиться ссылкой, которая прокручивает страницу до этого текста.</translation> <translation id="2704606927547763573">Скопировано</translation> <translation id="2707726405694321444">Обновить страницу</translation> <translation id="271033894570825754">Новый</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">Осталось <ph name="SECONDS" /> сек.</translation> <translation id="2779651927720337254">ошибка</translation> <translation id="2781151931089541271">Осталась 1 сек.</translation> +<translation id="2788468313014644040">Номер группы</translation> <translation id="2801022321632964776">Чтобы читать веб-страницы на своем языке, обновите Chrome до последней версии.</translation> <translation id="2805756323405976993">Сервисы</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Этим аккаунтом управляют <ph name="PARENT_NAME_1" /> и <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> непрочитанная страница}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитанная страница}few{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитанные страницы}many{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитанных страниц}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитанной страницы}}</translation> <translation id="2979025552038692506">Выбранная вкладка инкогнито</translation> +<translation id="2979448359891869301">Невозможно расширить скриншот. Освободите память телефона и повторите попытку.</translation> <translation id="2987620471460279764">Текст, полученный с другого устройства</translation> <translation id="2989523299700148168">Недавние</translation> <translation id="2992473221983447149">Описания изображений</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Управляйте сайтами, на которые вы подписаны</translation> <translation id="3269093882174072735">Загрузить изображение</translation> <translation id="3269956123044984603">Чтобы получить доступ к вкладкам на всех своих устройствах, включите автосинхронизацию данных в настройках аккаунта на устройстве Android.</translation> +<translation id="3280562213547448728">Голосовой поиск</translation> <translation id="3282568296779691940">Войти в Chrome</translation> <translation id="3284510035090979597">Помощь в нужный момент</translation> <translation id="3285080554353377245">Видео о том, как пользоваться Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Содержимое буфера обмена показано</translation> <translation id="3566923219790363270">Подготовка для VR ещё не завершена. Перезапустите Chrome позже.</translation> <translation id="3568688522516854065">Чтобы получить доступ к вкладкам на всех устройствах, войдите в аккаунт и включите синхронизацию.</translation> +<translation id="3577473026931028326">Произошла ошибка. Повторите попытку.</translation> <translation id="3587482841069643663">Все</translation> <translation id="3587596251841506391">Помогать Google делать Интернет безопаснее</translation> <translation id="3602290021589620013">Предварительный просмотр</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Сепия</translation> <translation id="4060598801229743805">Меню доступно в верхней части экрана</translation> <translation id="4062305924942672200">Юридическая информация</translation> -<translation id="4082818367361753283">Идентификатор группы</translation> <translation id="4084682180776658562">Закладка</translation> <translation id="4084712963632273211">Контент сайта <ph name="PUBLISHER_ORIGIN" />. <ph name="BEGIN_DEEMPHASIZED" />Получен с помощью Google<ph name="END_DEEMPHASIZED" />.</translation> <translation id="4095146165863963773">Удалить данные приложения?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Открыть в новой вкладке</translation> <translation id="4198423547019359126">Нет доступных мест для скачивания</translation> <translation id="4209895695669353772">Чтобы мы могли рекомендовать вам интересный контент, включите синхронизацию.</translation> +<translation id="4225895483398857530">Кнопка на панели инструментов</translation> <translation id="4242533952199664413">Открыть настройки</translation> <translation id="4248098802131000011">Защитите пароли от утечки данных и других проблем с безопасностью</translation> <translation id="4250229828105606438">Скриншот</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Завершение предыдущего скачивания…</translation> <translation id="5865733239029070421">Автоматически отправлять в Google статистику использования и отчеты о сбоях</translation> <translation id="5869522115854928033">Сайты с сохраненными паролями</translation> +<translation id="587735546353481577">Чтобы подписаться на сайт, откройте его, перейдите в меню Google Chrome и нажмите "Подписаться".</translation> <translation id="5880748256563468367">Перейти к ленте</translation> <translation id="5884076754568147479">Выполнять действия в Chrome с помощью Ассистента: отправлять в Google контент и URL сайтов, а также информацию, сообщаемую Ассистенту</translation> <translation id="5919204609460789179">Обновите <ph name="PRODUCT_NAME" />, чтобы начать синхронизацию</translation> <translation id="5937580074298050696">Сохранено: <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">Сбросить</translation> <translation id="5942872142862698679">Google используется как поисковая система по умолчанию</translation> +<translation id="5945035219773565305">Рекомендуется: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Просмотр действующей страницы.</translation> <translation id="5952764234151283551">Отправлять в Google URL страниц, которые вы пытаетесь открыть</translation> <translation id="5956665950594638604">Открыть Справочный центр Chrome в новой вкладке</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Снова подписаться</translation> <translation id="6002623704405939939">Чтобы удалить <ph name="BEGIN_LINK1" />поисковые запросы<ph name="END_LINK1" /> или другие данные о вашей активности, перейдите на страницу <ph name="BEGIN_LINK2" />Мои действия в Google<ph name="END_LINK2" />.</translation> <translation id="6005538289190791541">Предложенный пароль</translation> +<translation id="6032091552407840792">Эта пробная функция доступна только в <ph name="BEGIN_LINK" />некоторых регионах<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">С помощью <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> команда Chrome разрабатывает новые технологии для защиты пользователей от межсайтового отслеживания, сохраняя открытый интернет. + +Пробные функции Privacy Sandbox находятся на стадии разработки и доступны не во всех регионах. Пока сайты могут использовать Privacy Sandbox, не отказываясь от уже существующих веб-технологий, таких как сторонние файлы cookie.</translation> <translation id="6036057147555329831">Дополнительный модуль ICU</translation> <translation id="6039379616847168523">Перейти к следующей вкладке</translation> <translation id="6040143037577758943">Закрыть</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Не удается подключиться к компьютеру. Выберите другой способ подтверждения.</translation> <translation id="6410404864818553978">Основные данные</translation> <translation id="6410883413783534063">Используйте вкладки для одновременного посещения нескольких страниц.</translation> +<translation id="6411219469806822692">Невозможно прокрутить дальше вверх. Начните делать скриншот выше на этой странице.</translation> <translation id="6412673304250309937">Сверяет URL со списком небезопасных сайтов в Chrome. Кроме того, если вы скачаете вредоносный файл или сайт попытается похитить ваш пароль, Chrome может отправить URL с образцами контента на проверку с помощью Безопасного просмотра.</translation> <translation id="641643625718530986">Печать</translation> <translation id="6427112570124116297">Перевод веб-страниц</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Время на таймере <ph name="FQDN" /> истекло. Завтра сайт снова станет доступен.</translation> <translation id="6738516213925468394">Данные были зашифрованы <ph name="TIME" /> с помощью <ph name="BEGIN_LINK" />кодовой фразы<ph name="END_LINK" />. Введите ее, чтобы начать синхронизацию.</translation> <translation id="6738867403308150051">Скачивание…</translation> +<translation id="6751521182688001123">Открыть новую вкладку. Чтобы изменить функцию кнопки, нажмите и удерживайте ее.</translation> <translation id="6767294960381293877">Список устройств для отправки вкладки развернут на половину экрана.</translation> <translation id="6783942555455976443">Сохранить эту страницу офлайн и отправить напоминание</translation> <translation id="6811034713472274749">Страница загружена</translation> <translation id="6813446258015311409">Окно "Войти в Chrome" открыто.</translation> +<translation id="6817747507826986771">Поделиться этой страницей. Чтобы изменить функцию кнопки, нажмите и удерживайте ее.</translation> <translation id="6820686453637990663">Код CVC</translation> <translation id="6824899148643461612">Выбрана вкладка "<ph name="TAB_TITLE" />"</translation> <translation id="6846298663435243399">Загрузка…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Предыдущий сайт ещё не добавлен</translation> <translation id="7339898014177206373">Новое окно</translation> <translation id="7340958967809483333">Параметры рекомендаций</translation> +<translation id="7352339641508007922">Перетащите, чтобы сделать длинный скриншот.</translation> <translation id="7352651011704765696">Ошибка</translation> <translation id="7352939065658542140">ВИДЕО</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Поделиться 1 выбранным объектом}one{Поделиться # выбранным объектом}few{Поделиться # выбранными объектами}many{Поделиться # выбранными объектами}other{Поделиться # выбранного объекта}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Удалить все</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> непрочитанная страница.}one{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитанная страница.}few{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитанных страницы.}many{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитанных страниц.}other{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитанной страницы.}}</translation> <translation id="7882131421121961860">Ничего не найдено.</translation> +<translation id="7884346424584885269">Браузеру Chrome требуется разрешение на поиск устройств поблизости. <ph name="BEGIN_LINK" />Изменить разрешения<ph name="END_LINK" /></translation> <translation id="7886917304091689118">Выполняется в Chrome</translation> <translation id="789763218334337857">Работа в браузере Chrome</translation> <translation id="7903184275147100332">Подождите немного…</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Задать кодовую фразу для шифрования синхронизированных данных</translation> <translation id="8466613982764129868">Проверьте, подключено ли устройство <ph name="TARGET_DEVICE_NAME" /> к Интернету.</translation> <translation id="8473863474539038330">Адреса и другие данные</translation> +<translation id="8481921391193215807">Если функции Privacy Sandbox включены, сайты могут использовать представленные здесь технологии, не нарушающие конфиденциальность, в том числе альтернативы межсайтовому отслеживанию. Со временем будет доступно больше пробных функций. + +<ph name="BEGIN_LIST_ITEM1" />Рекламодатели и издатели могут использовать технологию FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Рекламодатели и издатели могут оценивать эффективность рекламы, не отслеживая ваши действия на сайтах.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Функции включены</translation> <translation id="8485434340281759656"><ph name="DESCRIPTION" /> <ph name="FILE_SIZE" /> <ph name="SEPARATOR" /></translation> <translation id="8489271220582375723">Открыть страницу "История"</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">Остался 1 файл</translation> <translation id="9206873250291191720">А</translation> <translation id="9209888181064652401">Звонки недоступны</translation> +<translation id="9212845824145208577">Не удается прокрутить дальше вниз. Начните делать скриншот ниже на этой странице.</translation> <translation id="9219103736887031265">Картинки</translation> <translation id="926205370408745186">Удалить данные о действиях в Chrome из сервиса "Цифровое благополучие"</translation> <translation id="927968626442779827">Попробуйте упрощенный режим в Google Chrome.</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 8fdc7b5..f44e882 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">තත්පර <ph name="SECONDS" />ක් ඉතිරියි</translation> <translation id="2779651927720337254">අසාර්ථකයි</translation> <translation id="2781151931089541271">තත්පර 1ක් ඉතිරියි</translation> +<translation id="2788468313014644040">සමූහ අංකය</translation> <translation id="2801022321632964776">Chrome හි නවතම අනුවාදයේ ඔබේ භාෂාව ලබා ගැනීමට යාවත්කාලීන කරන්න</translation> <translation id="2805756323405976993">යෙදුම්</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">තිරයේ ඉහළට ආසන්නව විකල්ප තිබේ</translation> <translation id="4062305924942672200">නෛතික තොරතුරු</translation> -<translation id="4082818367361753283">සමූහ ID</translation> <translation id="4084682180776658562">පිටු සලකුණ</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> වෙතින් – <ph name="BEGIN_DEEMPHASIZED" />Google විසින් බෙදා හරින ලදි<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">යෙදුම් දත්ත මකා දමනවා ද?</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 eda3025..6dd1450 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Zostáva: <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">neúspešné</translation> <translation id="2781151931089541271">Zostáva: 1 s</translation> +<translation id="2788468313014644040">Číslo skupiny</translation> <translation id="2801022321632964776">Ak chcete získať svoj jazyk v najnovšej verzii Chromu, aktualizujte ho</translation> <translation id="2805756323405976993">Aplikácie</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sépia</translation> <translation id="4060598801229743805">Možnosti sú k dispozícii v hornej časti obrazovky</translation> <translation id="4062305924942672200">Právne informácie</translation> -<translation id="4082818367361753283">Identifikátor skupiny</translation> <translation id="4084682180776658562">Záložka</translation> <translation id="4084712963632273211">Od: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />doručené Googlom<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Odstrániť dáta aplikácie?</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 e71a4ddf..f1b0278 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Še <ph name="SECONDS" /> s</translation> <translation id="2779651927720337254">ni uspelo</translation> <translation id="2781151931089541271">Še 1 s</translation> +<translation id="2788468313014644040">Številka skupine</translation> <translation id="2801022321632964776">Posodobite Chrome na najnovejšo različico, če ga želite v svojem jeziku</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepija</translation> <translation id="4060598801229743805">Možnosti so na voljo blizu vrha zaslona</translation> <translation id="4062305924942672200">Pravne informacije</translation> -<translation id="4082818367361753283">ID skupine</translation> <translation id="4084682180776658562">Zaznamek</translation> <translation id="4084712963632273211">Vsebino objavil <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />prikazuje jo Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Izbris podatkov aplikacije?</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 ba867283..ca39532 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
@@ -460,7 +460,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Opsionet janë të disponueshme pranë kreut të ekranit</translation> <translation id="4062305924942672200">Informacioni ligjor</translation> -<translation id="4082818367361753283">ID-ja e grupit</translation> <translation id="4084682180776658562">Faqeshënuesi</translation> <translation id="4084712963632273211">Nga <ph name="PUBLISHER_ORIGIN" /> - <ph name="BEGIN_DEEMPHASIZED" />dërguar nga Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Të fshihen të dhënat e aplikacioneve?</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 2075c3df..2219347 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Još <ph name="SECONDS" /> sek</translation> <translation id="2779651927720337254">nije uspelo</translation> <translation id="2781151931089541271">Još 1 sek</translation> +<translation id="2788468313014644040">Broj grupe</translation> <translation id="2801022321632964776">Ažurirajte na najnoviju verziju Chrome-a da biste imali svoj jezik u njoj</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2806840421670364300">Grupisani podaci o kohortama</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepija</translation> <translation id="4060598801229743805">Opcije su dostupne pri vrhu ekrana</translation> <translation id="4062305924942672200">Pravne informacije</translation> -<translation id="4082818367361753283">ID grupe</translation> <translation id="4084682180776658562">Obeleživač</translation> <translation id="4084712963632273211">Od objavljivača <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />prikazuje Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Želite li da izbrišete podatke aplikacije?</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 a91b257..c1b5025 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Још <ph name="SECONDS" /> сек</translation> <translation id="2779651927720337254">није успело</translation> <translation id="2781151931089541271">Још 1 сек</translation> +<translation id="2788468313014644040">Број групе</translation> <translation id="2801022321632964776">Ажурирајте на најновију верзију Chrome-а да бисте имали свој језик у њој</translation> <translation id="2805756323405976993">Апликације</translation> <translation id="2806840421670364300">Груписани подаци о кохортама</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Сепија</translation> <translation id="4060598801229743805">Опције су доступне при врху екрана</translation> <translation id="4062305924942672200">Правне информације</translation> -<translation id="4082818367361753283">ИД групе</translation> <translation id="4084682180776658562">Обележивач</translation> <translation id="4084712963632273211">Од објављивача <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />приказује Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Желите ли да избришете податке апликације?</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 3d7feed00..a3fb9842 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder kvar</translation> <translation id="2779651927720337254">misslyckades</translation> <translation id="2781151931089541271">1 sekund kvar</translation> +<translation id="2788468313014644040">Gruppens nummer</translation> <translation id="2801022321632964776">Uppdatera och få ditt språk i den senaste versionen av Chrome</translation> <translation id="2805756323405976993">Appar</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Alternativ finns högt upp på skärmen</translation> <translation id="4062305924942672200">Juridisk information</translation> -<translation id="4082818367361753283">Grupp-id</translation> <translation id="4084682180776658562">Infoga bokmärke</translation> <translation id="4084712963632273211">Från <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />via Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Vill du ta bort appdata?</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 8381d43e..a9c8cae 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Zimesalia sekunde <ph name="SECONDS" /></translation> <translation id="2779651927720337254">imeshindwa</translation> <translation id="2781151931089541271">Imesalia sekunde 1</translation> +<translation id="2788468313014644040">Nambari ya kikundi</translation> <translation id="2801022321632964776">Sasisha ili upate lugha yako katika toleo jipya zaidi la Chrome</translation> <translation id="2805756323405976993">Programu</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepia</translation> <translation id="4060598801229743805">Chaguo zinapatikana karibu na sehemu ya juu ya skrini</translation> <translation id="4062305924942672200">Maelezo ya kisheria</translation> -<translation id="4082818367361753283">Kitambulishi cha kikundi</translation> <translation id="4084682180776658562">Alamisho</translation> <translation id="4084712963632273211">Kutoka <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />imesafirishwa na Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Ungependa kufuta data ya programu?</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 e991441..9ba01b3 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ta"> +<translation id="1016498331642356377">குரல் மூலம் உடனடியாகத் தேடலாம். இந்த ஷார்ட்கட்டை மாற்ற தொட்டுப் பிடித்திருக்கவும்.</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" /> சாதனத்திற்கு அனுப்புகிறது...</translation> <translation id="103269572468856066">இந்தத் தளங்கள் & ஆப்ஸிலிருந்தும் தரவை அழிக்க வேண்டுமா?</translation> <translation id="1036348656032585052">முடக்கு</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">உரை</translation> <translation id="2068748236079642969">அடுத்த வீடியோவைக் காட்டு</translation> <translation id="2074143993849053708">குரல் தேடலுக்கு Assistantடைப் பயன்படுத்துவதற்கான ஒப்புதல் UI மூடப்பட்டது</translation> +<translation id="2075835334924942448">கட்டுரைகள் இங்கே காட்டப்படும்</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> முடிவுகளில் <ph name="RESULT_NUMBER" />வது முடிவு</translation> <translation id="2096012225669085171">பல சாதனங்களுக்கிடையில் ஒத்திசைக்கலாம், தனிப்பயனாக்கலாம்</translation> <translation id="2100273922101894616">தானாக உள்நுழையவும்</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> சேமிக்கப்பட்டது</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> மூடப்பட்டது</translation> <translation id="2139186145475833000">முகப்புத் திரையில் சேர்</translation> +<translation id="2141396931810938595">உங்கள் உபயோகத்தின் அடிப்படையில்</translation> <translation id="214888715418183969">Chromeமுடன் எதையெல்லாம் பகிரலாம் என்பதைத் தேர்வுசெய்யுங்கள். Chromeமின் அம்சங்கள், செயல்திறன், நிலைப்புத்தன்மை ஆகியவற்றை மேம்படுத்த இந்த அளவீடுகள் பயன்படுத்தப்படும்.</translation> <translation id="2154484045852737596">கார்டைத் திருத்தவும்</translation> <translation id="2154710561487035718">URL ஐ நகலெடு</translation> @@ -227,6 +230,7 @@ <translation id="247737702124049222">'பட விளக்கங்கள்' இயக்கப்பட்டது</translation> <translation id="2482878487686419369">அறிவிப்புகள்</translation> <translation id="2485422356828889247">நிறுவல் நீக்கு</translation> +<translation id="2489545061398461256">பரிமாற்றம் முடிந்ததும் முடக்கப்படும்</translation> <translation id="2494974097748878569">Chromeமில் Google அசிஸ்டண்ட்</translation> <translation id="2496180316473517155">உலாவல் வரலாறு</translation> <translation id="2497852260688568942">உங்கள் நிர்வாகி ஒத்திசைவை முடக்கியுள்ளார்</translation> @@ -257,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# ஆடியோ கோப்பு}other{# ஆடியோ கோப்புகள்}}</translation> <translation id="2656405586795711023">இணைய ஆப்ஸ்</translation> <translation id="2689830683995595741">Chromeமைப் பயன்படுத்துவதன் மூலம் <ph name="BEGIN_LINK1" />Google சேவை விதிமுறைகளையும்<ph name="END_LINK1" /> <ph name="BEGIN_LINK2" />Google Chrome மற்றும் Chrome OS தொடர்பான கூடுதல் சேவை விதிமுறைகளையும்<ph name="END_LINK2" /> ஏற்கிறீர்கள். இவற்றோடு <ph name="BEGIN_LINK3" />Family Link நிர்வகிக்கும் Google கணக்குகளுக்கான தனியுரிமை அறிக்கையும்<ph name="END_LINK3" /> பொருந்தும்.</translation> +<translation id="2702516483241149200">புதிது: இந்த உரைக்குச் செல்லும் இணைப்பைப் பகிரலாம்</translation> <translation id="2704606927547763573">நகலெடுக்கப்பட்டது</translation> <translation id="2707726405694321444">பக்கத்தைப் புதுப்பி</translation> <translation id="271033894570825754">புதிது</translation> @@ -273,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> வினாடிகள் மீதமுள்ளன</translation> <translation id="2779651927720337254">தோல்வியுற்றது</translation> <translation id="2781151931089541271">1 வினாடி மீதமுள்ளது</translation> +<translation id="2788468313014644040">குழு எண்</translation> <translation id="2801022321632964776">Chromeமில் உங்கள் மொழியைப் பெற சமீபத்திய பதிப்பிற்குப் புதுப்பிக்கவும்</translation> <translation id="2805756323405976993">ஆப்ஸ்</translation> <translation id="281504910091592009">உங்கள் <ph name="BEGIN_LINK" />Google கணக்கில்<ph name="END_LINK" /> சேமிக்கப்பட்ட கடவுச்சொற்களைப் பார்த்து, நிர்வகிக்கவும்</translation> @@ -303,6 +309,7 @@ <translation id="2956410042958133412">இந்தக் கணக்கு <ph name="PARENT_NAME_1" /> மற்றும் <ph name="PARENT_NAME_2" /> ஆல் நிர்வகிக்கப்படுகிறது.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{படிக்காத பக்கம்: <ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" />}other{படிக்காத பக்கங்கள்: <ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" />}}</translation> <translation id="2979025552038692506">தேர்ந்தெடுத்த மறைநிலைத் தாவல்</translation> +<translation id="2979448359891869301">ஸ்கிரீன்ஷாட்டை இதற்குமேல் நீட்டிக்க முடியாது. ஃபோன் பிசியாக இல்லாதபோது மீண்டும் முயலவும்.</translation> <translation id="2987620471460279764">பிற சாதனத்திலிருந்து உரை பகிரப்பட்டது</translation> <translation id="2989523299700148168">சமீபத்தில் பார்த்தவை</translation> <translation id="2992473221983447149">பட விளக்கங்கள்</translation> @@ -344,6 +351,7 @@ <translation id="3265534588625245297">பின்தொடரும் தளங்களை நிர்வகிக்கலாம்</translation> <translation id="3269093882174072735">படத்தை ஏற்று</translation> <translation id="3269956123044984603">பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, Android கணக்கு அமைப்புகளில் "தரவைத் தானாக ஒத்திசை" என்பதை இயக்கவும்.</translation> +<translation id="3280562213547448728">குரல் தேடல்</translation> <translation id="3282568296779691940">Chrome இல் உள்நுழைக</translation> <translation id="3284510035090979597">முன்கூட்டிய உதவி</translation> <translation id="3285080554353377245">Chromeமை எப்படிப் பயன்படுத்துவது என்பது குறித்த வீடியோக்கள்</translation> @@ -394,6 +402,7 @@ <translation id="3563767357928833671">கிளிப்போர்டில் உள்ளவை காட்டப்படுகிறது</translation> <translation id="3566923219790363270">VRருக்காக Chrome இன்னமும் தயார்செய்கிறது. Chromeமைப் பின்னர் மீண்டும் தொடங்கவும்.</translation> <translation id="3568688522516854065">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, உள்நுழைந்து, ஒத்திசைவை இயக்கவும்</translation> +<translation id="3577473026931028326">ஏதோ தவறாகிவிட்டது. மீண்டும் முயலவும்.</translation> <translation id="3587482841069643663">அனைத்தும்</translation> <translation id="3587596251841506391">இணையத்தில் பாதுகாப்பை மேம்படுத்த உதவுங்கள்</translation> <translation id="3602290021589620013">மாதிரிக்காட்சி</translation> @@ -478,6 +487,7 @@ <translation id="4195643157523330669">புதிய தாவலில் திற</translation> <translation id="4198423547019359126">பதிவிறக்க இருப்பிடம் எதுவும் இல்லை</translation> <translation id="4209895695669353772">Google பரிந்துரைக்கும் பிரத்யேக உள்ளடக்கத்தைப் பெற, ஒத்திசைவை இயக்கவும்</translation> +<translation id="4225895483398857530">கருவிப்பட்டி ஷார்ட்கட்</translation> <translation id="4242533952199664413">அமைப்புகளைத் திற</translation> <translation id="4248098802131000011">தரவு மீறல்கள் மற்றும் பிற பாதுகாப்பு சிக்கல்களிலிருந்து உங்கள் கடவுச்சொற்களைப் பாதுகாத்திடுங்கள்</translation> <translation id="4250229828105606438">ஸ்கிரீன்ஷாட்</translation> @@ -533,6 +543,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# நிமிடத்திற்கு முன்பு}other{# நிமிடங்களுக்கு முன்பு}}</translation> <translation id="4587589328781138893">Sites</translation> <translation id="4594952190837476234"><ph name="CREATION_TIME" /> அன்று இந்த ஆஃப்லைன் பக்கம் உருவாக்கப்பட்டது. இது ஆன்லைன் பதிப்பிலிருந்து வேறுபடலாம்.</translation> +<translation id="4608360466722749036">புளூடூத்தை இயக்குகிறது…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" />ஐத் திற</translation> <translation id="4619564267100705184">இது நீங்கள்தான் என உறுதிசெய்யுங்கள்</translation> <translation id="4634124774493850572">கடவுச்சொல்லைப் பயன்படுத்து</translation> @@ -744,12 +755,14 @@ <translation id="5864419784173784555">வேறொரு பதிவிறக்கத்திற்காகக் காத்திருக்கிறது…</translation> <translation id="5865733239029070421">பயன்பாட்டுப் புள்ளிவிவரங்களையும் சிதைவு அறிக்கைகளையும் தானாகவே Googleளுக்கு அனுப்பும்</translation> <translation id="5869522115854928033">சேமிக்கப்பட்ட கடவுச்சொற்கள்</translation> +<translation id="587735546353481577">ஒரு தளத்தைப் பின்தொடர, அதற்குச் சென்று Chrome மெனுவைத் திறந்து ‘பின்தொடர்க’ என்பதைத் தட்டவும்.</translation> <translation id="5880748256563468367">ஊட்டத்திற்குச் செல்</translation> <translation id="5884076754568147479">உங்கள் பணிகளை நிறைவு செய்வதில் உதவும் பொருட்டு, நீங்கள் Assistantடைப் பயன்படுத்தும் தளங்களின் URLகளையும் உள்ளடக்கங்களையும் அத்துடன் நீங்கள் Assistant மூலம் சமர்ப்பிக்கும் தகவலையும் Google பெறும்</translation> <translation id="5919204609460789179">ஒத்திசைவைத் தொடங்க, <ph name="PRODUCT_NAME" />ஐப் புதுப்பிக்கவும்</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> சேமிக்கப்பட்டது</translation> <translation id="5939518447894949180">மீட்டமை</translation> <translation id="5942872142862698679">தேடலுக்கு Googleளைப் பயன்படுத்துகிறீர்கள்</translation> +<translation id="5945035219773565305">தற்போது பரிந்துரைக்கப்படுவது: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">நேரலைப் பக்கம் காட்டப்படுகிறது</translation> <translation id="5952764234151283551">நீங்கள் செல்ல முயலும் பக்கத்தின் URLலை Googleளுக்கு அனுப்பும்</translation> <translation id="5956665950594638604">Chrome உதவி மையத்தைப் புதிய தாவலில் திறக்கும்</translation> @@ -763,6 +776,10 @@ <translation id="6000203700195075278">மீண்டும் பின்தொடர்க</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />இதுவரை தேடியவற்றையும்<ph name="END_LINK1" /> பிற தரவையும் அழிக்க, <ph name="BEGIN_LINK2" />எனது Google செயல்பாடு<ph name="END_LINK2" /> பக்கத்திற்குச் செல்லவும்</translation> <translation id="6005538289190791541">பரிந்துரைக்கப்படும் கடவுச்சொல்</translation> +<translation id="6032091552407840792">இந்தச் சோதனை <ph name="BEGIN_LINK" />சில பிராந்தியங்களில்<ph name="END_LINK" /> மட்டுமே செயலில் இருக்கும்.</translation> +<translation id="6033245666633565791">பொது இணையத்தைப் பாதுகாக்கும் அதே வேளையில் தளங்களுக்கு இடையே மாறும்போது கண்காணிக்கப்படுவதில் இருந்து உங்களைப் பாதுகாக்க, <ph name="BEGIN_LINK" />தனியுரிமை சாண்ட்பாக்ஸ்<ph name="END_LINK" /> மூலம் புதிய தொழில்நுட்பங்களை Chrome உருவாக்குகிறது. + +தனியுரிமை சாண்ட்பாக்ஸ் சோதனைகள் இன்னும் உருவாக்கத்தில் இருப்பதுடன் குறிப்பிட்ட பிராந்தியங்களில் மட்டுமே கிடைக்கின்றன. மூன்றாம் தரப்புக் குக்கீகள் போன்ற தற்போதைய இணையத் தொழில்நுட்பங்களைத் தொடர்ந்து பயன்படுத்தினாலும் தளங்கள் இப்போது தனியுரிமை சாண்ட்பாக்ஸைப் பயன்படுத்தக்கூடும்.</translation> <translation id="6036057147555329831">கூடுதல் ICU</translation> <translation id="6039379616847168523">அடுத்த தாவலுக்குச் செல்லும்</translation> <translation id="6040143037577758943">மூடு</translation> @@ -828,6 +845,7 @@ <translation id="6407224748847589805">கம்ப்யூட்டருடன் இணைக்க முடியவில்லை. வேறொரு சரிபார்ப்பு விருப்பத்தைப் பயன்படுத்தவும்.</translation> <translation id="6410404864818553978">அடிப்படை உபயோகத் தரவு</translation> <translation id="6410883413783534063">ஒரே நேரத்தில் வெவ்வேறு பக்கங்களைப் பார்வையிடுவதற்குத் தாவல்களைத் திறக்கவும்</translation> +<translation id="6411219469806822692">இதற்கும் மேல் செல்ல முடியாது. பக்கத்தின் மேற்பகுதியில் இருந்து எடுக்கவும்.</translation> <translation id="6412673304250309937">Chromeமில் சேமிக்கப்பட்டுள்ள பாதுகாப்பில்லாத தளங்களின் பட்டியலைப் பயன்படுத்தி URLகளைச் சரிபார்க்கும். தளம் உங்கள் கடவுச்சொல்லைத் திருட முயன்றலோ தீங்குவிளைவிக்கும் கோப்பை நீங்கள் பதிவிறக்கினாலோ Chromeமானது பக்க உள்ளடக்கத்தின் சிறிய பகுதிகள் உட்பட URLகளையும் பாதுகாப்பு உலாவலுக்கு அனுப்பக்கூடும்.</translation> <translation id="641643625718530986">அச்சிடு...</translation> <translation id="6427112570124116297">இணையத்தை மொழிபெயர்த்தல்</translation> @@ -890,10 +908,12 @@ <translation id="671481426037969117">உங்கள் <ph name="FQDN" /> டைமர் நேரம் முடிந்தது. நாளை மீண்டும் தொடங்கும்.</translation> <translation id="6738516213925468394"><ph name="TIME" />க்கு உங்கள் தரவு உங்கள் <ph name="BEGIN_LINK" />ஒத்திசைவுக் கடவுச்சொற்றொடரைக்<ph name="END_LINK" /> கொண்டு என்க்ரிப்ட் செய்யப்பட்டது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation> <translation id="6738867403308150051">பதிவிறக்குகிறது…</translation> +<translation id="6751521182688001123">புதிய தாவலை உடனடியாகத் திறக்கலாம். இந்த ஷார்ட்கட்டை மாற்ற தொட்டுப் பிடித்திருக்கவும்.</translation> <translation id="6767294960381293877">தாவலைப் பகிர்வதற்கான சாதனங்களின் பட்டியல் திரையின் பாதி அளவிற்குத் திறக்கப்பட்டுள்ளது.</translation> <translation id="6783942555455976443">இதைப் பின்னர் பார்ப்பதற்குச் சேமித்து அதற்கான நினைவூட்டலைப் பெறலாம்</translation> <translation id="6811034713472274749">பக்கத்தைப் பார்க்கலாம்</translation> <translation id="6813446258015311409">Chromeமில் உள்நுழைக, திறக்கப்பட்டுள்ளது.</translation> +<translation id="6817747507826986771">இந்தப் பக்கத்தை உடனடியாகப் பகிரலாம். இந்த ஷார்ட்கட்டை மாற்ற தொட்டுப் பிடித்திருக்கவும்.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> தாவல் தேர்ந்தெடுக்கப்பட்டது</translation> <translation id="6846298663435243399">ஏற்றுகிறது...</translation> @@ -964,6 +984,7 @@ <translation id="7333031090786104871">முந்தைய தளத்தை இன்னும் சேர்க்கிறது</translation> <translation id="7339898014177206373">புதிய சாளரம்</translation> <translation id="7340958967809483333">Discoverருக்கான விருப்பங்கள்</translation> +<translation id="7352339641508007922">நீண்ட ஸ்கிரீன்ஷாட்டை எடுக்க இழுக்கவும்</translation> <translation id="7352651011704765696">ஏதோ தவறு ஏற்பட்டது</translation> <translation id="7352939065658542140">வீடியோ</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{தேர்ந்தெடுத்த 1 உருப்படியைப் பகிரும்}other{தேர்ந்தெடுத்த # உருப்படிகளைப் பகிரும்}}</translation> @@ -1056,6 +1077,7 @@ <translation id="7876243839304621966">அனைத்தையும் அகற்று</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{படிக்காத பக்கம் <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> உள்ளது}other{படிக்காத பக்கங்கள் <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> உள்ளன}}</translation> <translation id="7882131421121961860">வரலாறு எதுவுமில்லை</translation> +<translation id="7884346424584885269">அருகிலுள்ள சாதனங்களைக் கண்டறிய Chromeமிற்கு அனுமதி தேவை. <ph name="BEGIN_LINK" />அனுமதிகளை மாற்றுக<ph name="END_LINK" />.</translation> <translation id="7886917304091689118">Chrome இல் இயங்குகிறது</translation> <translation id="789763218334337857">Chromeமை எப்படிப் பயன்படுத்துவது?</translation> <translation id="7903184275147100332">இதற்கு ஒரு நிமிடம் ஆகக்கூடும்</translation> @@ -1149,6 +1171,11 @@ <translation id="8461694314515752532">ஒத்திசைக்கப்பட்ட தரவை எனது ஒத்திசைவுக் கடவுச்சொற்றொடர் மூலம் என்கிரிப்ட் செய்</translation> <translation id="8466613982764129868"><ph name="TARGET_DEVICE_NAME" /> சாதனம் இணையத்துடன் இணைக்கப்பட்டுள்ளதை உறுதி செய்யவும்</translation> <translation id="8473863474539038330">முகவரிகள் மற்றும் பல</translation> +<translation id="8481921391193215807">இதை இயக்கினால் தளங்கள் அவற்றின் உள்ளடக்கத்தையும் சேவைகளையும் வழங்குவதற்காக இங்கே காட்டப்பட்டுள்ள தனியுரிமைப் பாதுகாப்புத் தொழில்நுட்பங்களைப் பயன்படுத்தக்கூடும். தளங்களுக்கிடையே மாறும்போது கண்காணிப்பதற்கான மாற்று முறைகளும் இவற்றில் அடங்கும். கூடுதல் செயல்பாடுகள் காலப்போக்கில் சேர்க்கப்படக்கூடும். + +<ph name="BEGIN_LIST_ITEM1" />விளம்பரதாரர்களும் வெளியீட்டாளர்களும் FLoC தொழில்நுட்பத்தைப் பயன்படுத்தலாம்.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />தளங்களில் உலாவும்போது உங்களைக் கண்காணிக்காத வகையில் விளம்பரங்களின் செயல்திறனை விளம்பரதாரர்களும் வெளியீட்டாளர்களும் அறிந்துகொள்ளலாம்.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">சோதனையிலுள்ள அம்சங்கள் இயக்கப்பட்டுள்ளன</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">வரலாறு பக்கத்தைத் திறக்கும்</translation> @@ -1258,6 +1285,7 @@ <translation id="9204836675896933765">1 கோப்பு மீதமுள்ளது</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">அழைப்புகளைச் செய்ய இயலவில்லை</translation> +<translation id="9212845824145208577">இதற்குக் கீழ் செல்ல முடியாது. பக்கத்தின் கீழ்ப்பகுதியில் இருந்து எடுக்கவும்.</translation> <translation id="9219103736887031265">Images</translation> <translation id="926205370408745186">Chrome செயல்பாட்டை டிஜிட்டல் வெல்பீயிங்கிலிருந்து நீக்குதல்</translation> <translation id="927968626442779827">Google Chrome உலாவியில் லைட் பயன்முறையைப் பயன்படுத்தலாம்</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 687a4ab..01a1e4a1 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
@@ -230,6 +230,7 @@ <translation id="247737702124049222">ఇమేజ్ వివరణలు ఆన్ చేయబడ్డాయి</translation> <translation id="2482878487686419369">నోటిఫికేషన్లు</translation> <translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> +<translation id="2489545061398461256">మేము పూర్తి చేసిన తర్వాత, మళ్లీ దాన్ని స్విచ్ ఆఫ్ చేస్తాము</translation> <translation id="2494974097748878569">Chromeలో Google అసిస్టెంట్</translation> <translation id="2496180316473517155">బ్రౌజింగ్ హిస్టరీ</translation> <translation id="2497852260688568942">సింక్ను మీ నిర్వాహకులు నిలిపివేశారు</translation> @@ -277,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> సెకన్లు మిగిలి ఉంది</translation> <translation id="2779651927720337254">విఫలమైంది</translation> <translation id="2781151931089541271">1 సెకను మిగిలి ఉంది</translation> +<translation id="2788468313014644040">గ్రూప్ నంబర్</translation> <translation id="2801022321632964776">Chrome యొక్క తాజా వెర్షన్లో మీ భాషను పొందడానికి అప్డేట్ చేయండి</translation> <translation id="2805756323405976993">యాప్స్</translation> <translation id="2806840421670364300">FLoC</translation> @@ -466,7 +468,6 @@ <translation id="4056223980640387499">సెపియా</translation> <translation id="4060598801229743805">ఎంపికలు స్క్రీన్ పైభాగానికి సమీపంలో అందుబాటులో ఉంటాయి</translation> <translation id="4062305924942672200">చట్ట సంబంధిత సమాచారం</translation> -<translation id="4082818367361753283">గ్రూప్ ID</translation> <translation id="4084682180776658562">బుక్మార్క్ చేయి</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> నుండి – <ph name="BEGIN_DEEMPHASIZED" />Google బట్వాడా చేస్తోంది<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">యాప్ డేటాను తొలగించాలా?</translation> @@ -543,6 +544,7 @@ <translation id="4583164079174244168">{MINUTES,plural, =1{# నిమిషం క్రితం}other{# నిమిషాల క్రితం}}</translation> <translation id="4587589328781138893">సైట్లు</translation> <translation id="4594952190837476234">ఈ ఆఫ్లైన్ పేజీ <ph name="CREATION_TIME" />కి చెందినది మరియు ఆన్లైన్ వెర్షన్ వేరుగా ఉండవచ్చు.</translation> +<translation id="4608360466722749036">బ్లూటూత్ స్విచ్ ఆన్ అవుతోంది…</translation> <translation id="4616150815774728855"><ph name="WEBAPK_NAME" />ని తెరువు</translation> <translation id="4619564267100705184">ఇది మీరే అని వెరిఫై చేయండి</translation> <translation id="4634124774493850572">పాస్వర్డ్ను ఉపయోగించు</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 71003fdb..a5d98d3 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">เหลือ <ph name="SECONDS" /> วิ</translation> <translation id="2779651927720337254">ล้มเหลว</translation> <translation id="2781151931089541271">เหลือ 1 วิ</translation> +<translation id="2788468313014644040">หมายเลขกลุ่ม</translation> <translation id="2801022321632964776">อัปเดตเพื่อใช้ภาษาของคุณใน Chrome เวอร์ชันล่าสุด</translation> <translation id="2805756323405976993">แอป</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">ซีเปีย</translation> <translation id="4060598801229743805">ตัวเลือกอยู่ตรงบริเวณด้านบนของหน้าจอ</translation> <translation id="4062305924942672200">ข้อมูลทางกฎหมาย</translation> -<translation id="4082818367361753283">รหัสกลุ่ม</translation> <translation id="4084682180776658562">บุ๊กมาร์ก</translation> <translation id="4084712963632273211">จาก <ph name="PUBLISHER_ORIGIN" /> - <ph name="BEGIN_DEEMPHASIZED" />แสดงโดย Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ลบข้อมูลแอปไหม</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 1d88f2b..b66e423 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="tr"> +<translation id="1016498331642356377">Hızlıca sesinizle arama yapın. Bu kısayolu düzenlemek için dokunup basılı tutun.</translation> <translation id="1028699632127661925"><ph name="DEVICE_NAME" /> cihazına gönderiliyor...</translation> <translation id="103269572468856066">Veriler bu siteler ve uygulamalardan da silinsin mi?</translation> <translation id="1036348656032585052">Kapat</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">Kısa mesaj</translation> <translation id="2068748236079642969">Sonraki videoyu izle</translation> <translation id="2074143993849053708">Asistan sesli arama izni kullanıcı arayüzü kapalı</translation> +<translation id="2075835334924942448">Burada hikayeler görüntülenir</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> sonuçtan <ph name="RESULT_NUMBER" /> numaralı sonuç</translation> <translation id="2096012225669085171">Cihazlar arasında senkronizasyon ve kişiselleştirme</translation> <translation id="2100273922101894616">Otomatik Oturum Aç</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> tasarruf edildi</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> kapatıldı</translation> <translation id="2139186145475833000">Ana ekrana ekle</translation> +<translation id="2141396931810938595">Kullanımınıza göre</translation> <translation id="214888715418183969">Chrome'la paylaşmak istediklerinizi seçin. Paylaştığınız metrikler Chrome’un özelliklerini, performansını ve kararlılığını iyileştirmeye yardımcı olmak için kullanılır.</translation> <translation id="2154484045852737596">Kartı düzenle</translation> <translation id="2154710561487035718">URL'yi Kopyala</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# Ses dosyası}other{# Ses dosyası}}</translation> <translation id="2656405586795711023">Web uygulamaları</translation> <translation id="2689830683995595741">Chrome'u kullanarak <ph name="BEGIN_LINK1" />Google Hizmet Şartları<ph name="END_LINK1" /> ile <ph name="BEGIN_LINK2" />Google Chrome ve Chrome OS Ek Hizmet Şartları<ph name="END_LINK2" />'nı kabul etmiş olursunuz. <ph name="BEGIN_LINK3" />Family Link ile Yönetilen Google Hesapları İçin Gizlilik Uyarısı<ph name="END_LINK3" /> da geçerlidir.</translation> +<translation id="2702516483241149200">Yeni: bu metne kaydıran bir bağlantı paylaşın</translation> <translation id="2704606927547763573">Kopyalandı</translation> <translation id="2707726405694321444">Sayfayı yenile</translation> <translation id="271033894570825754">Yeni</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> sn. kaldı</translation> <translation id="2779651927720337254">başarısız</translation> <translation id="2781151931089541271">1 sn. kaldı</translation> +<translation id="2788468313014644040">Grup numarası</translation> <translation id="2801022321632964776">Chrome'un en son sürümünü kendi dilinizde kullanmak için güncelleyin</translation> <translation id="2805756323405976993">Uygulamalar</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Bu hesap <ph name="PARENT_NAME_1" /> ve <ph name="PARENT_NAME_2" /> tarafından yönetiliyor.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{Okunmamış <ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> sayfa}other{Okunmamış <ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> sayfa}}</translation> <translation id="2979025552038692506">Seçili Gizli Sekme</translation> +<translation id="2979448359891869301">Ekran görüntüsü büyütülemiyor. Telefonunuz yoğun değilken tekrar deneyin.</translation> <translation id="2987620471460279764">Başka cihazdan paylaşılan metin</translation> <translation id="2989523299700148168">Son ziyaret edilenler</translation> <translation id="2992473221983447149">Resim açıklamaları</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Takip ettiğiniz siteleri yönetin</translation> <translation id="3269093882174072735">Resim yükle</translation> <translation id="3269956123044984603">Diğer cihazlarınızdaki sekmelerinize ulaşmak için Android hesap ayarlarından "Verileri otomatik senkronize et" seçeneğini etkinleştirin.</translation> +<translation id="3280562213547448728">Sesli arama</translation> <translation id="3282568296779691940">Chrome'da oturum aç</translation> <translation id="3284510035090979597">Proaktif Yardım</translation> <translation id="3285080554353377245">Chrome'un nasıl kullanılacağıyla ilgili videolar</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Pano içerikleri gösteriliyor</translation> <translation id="3566923219790363270">Chrome hâlâ VR için hazırlanıyor. Chrome'u daha sonra yeniden başlatın.</translation> <translation id="3568688522516854065">Diğer cihazlarınızdaki sekmelerinize ulaşmak için oturum açın ve senkronizasyonu etkinleştirin</translation> +<translation id="3577473026931028326">Bir sorun oldu. Tekrar deneyin.</translation> <translation id="3587482841069643663">Tümü</translation> <translation id="3587596251841506391">Web'de güvenliğin iyileştirilmesine yardımcı olun</translation> <translation id="3602290021589620013">Önizleme</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Sepya Tonu</translation> <translation id="4060598801229743805">Ekranın üst kısmına yakın bir yerde seçenekler vardır</translation> <translation id="4062305924942672200">Yasal bilgiler</translation> -<translation id="4082818367361753283">Grup Kimliği</translation> <translation id="4084682180776658562">Yer İşareti</translation> <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> web sitesinden - <ph name="BEGIN_DEEMPHASIZED" />Google tarafından yayınlandı<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Uygulama verileri silinsin mi?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Yeni sekmede aç</translation> <translation id="4198423547019359126">Kullanılabilir indirme yeri yok</translation> <translation id="4209895695669353772">Google tarafından önerilen kişiselleştirilmiş içeriği almak için senkronizasyonu açın</translation> +<translation id="4225895483398857530">Araç çubuğu kısayolu</translation> <translation id="4242533952199664413">Ayarları aç</translation> <translation id="4248098802131000011">Şifrelerinizi veri ihlali ve diğer güvenlik sorunlarına karşı güvende tutun</translation> <translation id="4250229828105606438">Ekran görüntüsü</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Başka bir indirme işlemi bekleniyor…</translation> <translation id="5865733239029070421">Kullanım istatistiklerini ve kilitlenme raporlarını Google'a otomatik olarak gönderir</translation> <translation id="5869522115854928033">Kayıtlı şifreler</translation> +<translation id="587735546353481577">Bir siteyi takip etmek için siteye gidin, Chrome menüsünü açıp Takip et'e dokunun.</translation> <translation id="5880748256563468367">Feed'e git</translation> <translation id="5884076754568147479">Google, görevleri tamamlamanıza yardımcı olmak için Asistan'ı kullandığınız sitelerin URL'lerinin ve içeriklerinin yanı sıra Asistan aracılığıyla gönderdiğiniz bilgileri alır</translation> <translation id="5919204609460789179">Senkronizasyonu başlatmak için <ph name="PRODUCT_NAME" /> adlı uygulamayı güncelleyin</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> tasarruf edildi</translation> <translation id="5939518447894949180">Sıfırla</translation> <translation id="5942872142862698679">Arama için Google kullanılıyor</translation> +<translation id="5945035219773565305">Geçerli öneri: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Yayındaki sayfa görüntüleniyor</translation> <translation id="5952764234151283551">Erişmeye çalıştığınız sayfanın URL'sini Google'a gönderir</translation> <translation id="5956665950594638604">Chrome Yardım Merkezi'ni yeni bir sekmede açar</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Yeniden takip et</translation> <translation id="6002623704405939939"><ph name="BEGIN_LINK1" />Arama<ph name="END_LINK1" /> veya başka biçimlerdeki geçmişi temizlemek için <ph name="BEGIN_LINK2" />Google Etkinliğim<ph name="END_LINK2" />'i ziyaret edin</translation> <translation id="6005538289190791541">Önerilen şifre</translation> +<translation id="6032091552407840792">Bu deneme yalnızca <ph name="BEGIN_LINK" />bazı bölgelerde<ph name="END_LINK" /> etkindir.</translation> +<translation id="6033245666633565791">Chrome, <ph name="BEGIN_LINK" />Özel Korumalı Alan<ph name="END_LINK" /> girişimi kapsamında, açık web'i korurken sizi siteler arası izlemeden koruyacak yeni teknolojiler geliştiriyor. + +Privacy Sandbox denemeleri, hâlâ aktif geliştirme aşamasında olup belirli bölgelerde kullanılmaktadır. Şimdilik, siteler üçüncü taraf çerezler gibi geçerli web teknolojilerini kullanmaya devam ederken Privacy Sandbox'ı deneyebilir.</translation> <translation id="6036057147555329831">Ekstra ICU</translation> <translation id="6039379616847168523">Sonraki sekmeye gider</translation> <translation id="6040143037577758943">Kapat</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Bilgisayarınıza bağlanılamıyor. Başka bir doğrulama seçeneğini deneyin.</translation> <translation id="6410404864818553978">Temel kullanım verileri</translation> <translation id="6410883413783534063">Aynı anda birden fazla sayfayı ziyaret etmek için yeni sekme açın</translation> +<translation id="6411219469806822692">Daha yukarı çıkılamıyor. Sayfanın daha yukarısından başlamayı deneyin.</translation> <translation id="6412673304250309937">URL'leri, Chrome'da kayıtlı güvenli olmayan siteler listesine göre kontrol eder. Chrome, bir sitenin şifrenizi çalmaya çalışması veya zararlı bir dosya indirmeniz halinde de Güvenli Tarama'ya sayfa içeriğinden parçalarla birlikte URL'ler gönderebilir.</translation> <translation id="641643625718530986">Yazdır…</translation> <translation id="6427112570124116297">Web'i çevir</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117"><ph name="FQDN" /> zamanlayıcınızın süresi doldu. Yarın tekrar başlatılacak.</translation> <translation id="6738516213925468394">Verileriniz <ph name="TIME" /> tarihinde <ph name="BEGIN_LINK" />senkronizasyon parolanızla<ph name="END_LINK" /> şifrelendi. Senkronizasyonu başlatmak için senkronizasyon parolanızı girin.</translation> <translation id="6738867403308150051">İndiriliyor…</translation> +<translation id="6751521182688001123">Hızlıca yeni bir sekme açın. Bu kısayolu düzenlemek için dokunup basılı tutun.</translation> <translation id="6767294960381293877">Sekme paylaşılacak cihazların listesi yarım yükseklikte açıldı.</translation> <translation id="6783942555455976443">Sayfayı daha sonrası için kaydedip hatırlatıcı al</translation> <translation id="6811034713472274749">Sayfa görüntülenmeye hazır</translation> <translation id="6813446258015311409">Chrome'da oturum açma sayfası açıldı.</translation> +<translation id="6817747507826986771">Bu sayfayı hızlıca paylaşın. Bu kısayolu düzenlemek için dokunup basılı tutun.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" /> sekmesi seçildi</translation> <translation id="6846298663435243399">Yükleniyor...</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Önceki siteyi ekleme işlemi devam ediyor.</translation> <translation id="7339898014177206373">Yeni pencere</translation> <translation id="7340958967809483333">Keşfet seçenekleri</translation> +<translation id="7352339641508007922">Uzun ekran görüntüsü almak için sürükleyin</translation> <translation id="7352651011704765696">Bir şeyler ters gitti</translation> <translation id="7352939065658542140">VİDEO</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{1 seçili öğeyi paylaş}other{# seçili öğeyi paylaş}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Tümünü kaldır</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Okunmamış <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> sayfanız var}other{Okunmamış <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> sayfanız var}}</translation> <translation id="7882131421121961860">Geçmiş bulunamadı</translation> +<translation id="7884346424584885269">Chrome'un yakındaki cihazları taraması için izin gerekiyor. <ph name="BEGIN_LINK" />İzinleri güncelle<ph name="END_LINK" /></translation> <translation id="7886917304091689118">Chrome'da çalıştırılıyor</translation> <translation id="789763218334337857">Chrome'u kullanma</translation> <translation id="7903184275147100332">Bu işlem bir dakika sürebilir</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Senkronize edilen verileri kendi senkronizasyon parolanızla şifreleyin</translation> <translation id="8466613982764129868"><ph name="TARGET_DEVICE_NAME" /> cihazının internete bağlı olduğundan emin olun</translation> <translation id="8473863474539038330">Adresler ve daha fazlası</translation> +<translation id="8481921391193215807">Etkinleştirildiğinde, siteler içeriklerini ve hizmetlerini sunmak için burada gösterilen gizliliği koruma tekniklerini kullanabilir. Bu teknikler, siteler arası izlemeye alternatif çözümler sağlar. Zaman içinde başka denemeler de eklenebilir. + +<ph name="BEGIN_LIST_ITEM1" />Reklamverenler ve yayıncılar FLoC'u kullanabilir.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Reklamverenler ve yayıncılar, sizi sitelerde izlemeden reklamların etkisini inceleyebilirler.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Deneme özellikleri açık</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Geçmiş sayfasını açar</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">1 dosya kaldı</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Arama yapılamıyor</translation> +<translation id="9212845824145208577">Daha aşağı inilemiyor. Sayfanın daha aşağısından başlamayı deneyin.</translation> <translation id="9219103736887031265">Resimler</translation> <translation id="926205370408745186">Chrome etkinliğinizi Dijital Denge'den kaldırma</translation> <translation id="927968626442779827">Google Chrome'da Basit modu kullanı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 b0ba05d..5a102a1 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="uk"> +<translation id="1016498331642356377">Швидко шукайте за допомогою голосу. Щоб змінити функцію цієї кнопки, натисніть і втримуйте її.</translation> <translation id="1028699632127661925">Надсилання на пристрій "<ph name="DEVICE_NAME" />"…</translation> <translation id="103269572468856066">Видалити дані з цих сайтів і додатків?</translation> <translation id="1036348656032585052">Вимкнути</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">SMS</translation> <translation id="2068748236079642969">Дивитися наступне відео</translation> <translation id="2074143993849053708">Інтерфейс надання згоди на голосовий пошук через Асистента закрито</translation> +<translation id="2075835334924942448">Історії відображатимуться тут</translation> <translation id="2082238445998314030">Результат <ph name="RESULT_NUMBER" /> з <ph name="TOTAL_RESULTS" /></translation> <translation id="2096012225669085171">Синхронізація та персоналізація на всіх пристроях</translation> <translation id="2100273922101894616">Автоматичний вхід</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">Заощаджено <ph name="DATA" /></translation> <translation id="213279576345780926">Вкладку "<ph name="TAB_TITLE" />" закрито</translation> <translation id="2139186145475833000">Додати на головний екран</translation> +<translation id="2141396931810938595">На основі даних про використання</translation> <translation id="214888715418183969">Виберіть, до яких даних надати доступ веб-переглядачу Chrome. Ми використовуватимемо їх, щоб покращувати функції, продуктивність і стабільність Chrome.</translation> <translation id="2154484045852737596">Редагувати картку</translation> <translation id="2154710561487035718">Копіювати URL-адресу</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# аудіофайл}one{# аудіофайл}few{# аудіофайли}many{# аудіофайлів}other{# аудіофайлу}}</translation> <translation id="2656405586795711023">Веб-додатки</translation> <translation id="2689830683995595741">Використовуючи Chrome, ви погоджуєтесь із <ph name="BEGIN_LINK1" />Загальними положеннями та умовами Google<ph name="END_LINK1" /> і <ph name="BEGIN_LINK2" />Додатковими умовами використання Google Chrome і ОС Chrome<ph name="END_LINK2" />. Також застосовується <ph name="BEGIN_LINK3" />Примітка про конфіденційність для облікових записів Google, керованих у Family Link<ph name="END_LINK3" />.</translation> +<translation id="2702516483241149200">Новинка! Діліться посиланням, яке прокручує сторінку до цього тексту</translation> <translation id="2704606927547763573">Скопійов.</translation> <translation id="2707726405694321444">Оновити сторінку</translation> <translation id="271033894570825754">Новий</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">Залишилося <ph name="SECONDS" /> с</translation> <translation id="2779651927720337254">не завантажено</translation> <translation id="2781151931089541271">Залишилась 1 с</translation> +<translation id="2788468313014644040">Номер групи</translation> <translation id="2801022321632964776">Виконайте оновлення, щоб користуватися своєю мовою в останній версії Chrome</translation> <translation id="2805756323405976993">Додатки</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">Цим обліковим записом керують <ph name="PARENT_NAME_1" /> і <ph name="PARENT_NAME_2" />.</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> непрочитана сторінка}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитана сторінка}few{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитані сторінки}many{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитаних сторінок}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> непрочитаної сторінки}}</translation> <translation id="2979025552038692506">Вибрана анонімна вкладка</translation> +<translation id="2979448359891869301">Не вдається розширити знімок екрана. Звільніть пам’ять на телефоні та повторіть спробу.</translation> <translation id="2987620471460279764">Текст, яким поділилися з іншого пристрою</translation> <translation id="2989523299700148168">Нещодавно відвідані</translation> <translation id="2992473221983447149">Описи зображень</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">Керуйте сайтами, на які підписалися</translation> <translation id="3269093882174072735">Завантажити зображення</translation> <translation id="3269956123044984603">Щоб мати доступ до вкладок з інших пристроїв, увімкніть опцію "Автоматично синхронізувати дані" в налаштуваннях облікового запису на Android.</translation> +<translation id="3280562213547448728">Голосовий пошук</translation> <translation id="3282568296779691940">Вхід у Chrome</translation> <translation id="3284510035090979597">Активна допомога</translation> <translation id="3285080554353377245">Відеоінструкції щодо користування веб-переглядачем Chrome</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">Показано вміст буфера обміну</translation> <translation id="3566923219790363270">Chrome готується до запуску VR. Перезапустіть Chrome пізніше.</translation> <translation id="3568688522516854065">Щоб мати доступ до вкладок з інших пристроїв, увійдіть в обліковий запис і ввімкніть синхронізацію</translation> +<translation id="3577473026931028326">Сталася помилка Повторіть спробу.</translation> <translation id="3587482841069643663">Все</translation> <translation id="3587596251841506391">Покращувати безпеку в Інтернеті</translation> <translation id="3602290021589620013">Попередній перегляд</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">Сепія</translation> <translation id="4060598801229743805">Панель інструментів розташовано вгорі екрана</translation> <translation id="4062305924942672200">Правова інформація</translation> -<translation id="4082818367361753283">Ідентифікатор групи</translation> <translation id="4084682180776658562">Закладка</translation> <translation id="4084712963632273211">Видавець: <ph name="PUBLISHER_ORIGIN" />, <ph name="BEGIN_DEEMPHASIZED" />доставлено Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Видалити дані додатка?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">Відкрити в новій вкладці</translation> <translation id="4198423547019359126">Немає доступних місць для завантаження</translation> <translation id="4209895695669353772">Щоб отримувати персоналізовані пропозиції від Google, увімкніть синхронізацію</translation> +<translation id="4225895483398857530">Кнопка на панелі інструментів</translation> <translation id="4242533952199664413">Відкрити налаштування</translation> <translation id="4248098802131000011">Захистіть свої паролі від порушень безпеки даних та інших проблем із безпекою</translation> <translation id="4250229828105606438">Знімок екрана</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">Очікується інше завантаження…</translation> <translation id="5865733239029070421">Автоматично надсилає статистику використання та звіти про аварійне завершення роботи в Google</translation> <translation id="5869522115854928033">Збережені паролі</translation> +<translation id="587735546353481577">Щоб підписатися на сайт, перейдіть на нього, відкрийте меню Chrome і натисніть "Підписатися".</translation> <translation id="5880748256563468367">Перейти до фіду</translation> <translation id="5884076754568147479">Щоб допомагати вам виконувати завдання, Google отримуватиме URL-адреси та вміст веб-сайтів, на яких ви користуєтесь Асистентом, а також інформацію, яку надсилаєте через нього</translation> <translation id="5919204609460789179">Оновіть <ph name="PRODUCT_NAME" />, щоб почати синхронізацію</translation> <translation id="5937580074298050696">Заощаджено <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">Скинути</translation> <translation id="5942872142862698679">Пошук за допомогою Google</translation> +<translation id="5945035219773565305">Поточна рекомендація: <ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">Перегляд активної сторінки</translation> <translation id="5952764234151283551">Надсилає в Google URL-адресу сторінки, яку ви намагаєтеся відкрити</translation> <translation id="5956665950594638604">Відкрити Довідковий центр Chrome у новій вкладці</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">Підписатися знову</translation> <translation id="6002623704405939939">Щоб очистити історію, наприклад <ph name="BEGIN_LINK1" />пошуку<ph name="END_LINK1" />, перейдіть на сторінку <ph name="BEGIN_LINK2" />Мої дії в Google<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">Запропонований пароль</translation> +<translation id="6032091552407840792">Ця пробна версія доступна лише в <ph name="BEGIN_LINK" />певних регіонах<ph name="END_LINK" />.</translation> +<translation id="6033245666633565791">За допомогою <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> команда Chrome розробляє нові технології, які захистять вас від механізмів відстеження на різних сайтах, зберігаючи відкриту мережу. + +Пробні технології Privacy Sandbox ще перебувають на стадії розробки й доступні лише у вибраних регіонах. Наразі сайти можуть користуватися Privacy Sandbox, продовжуючи застосовувати наявні веб-технології (зокрема сторонні файли cookie).</translation> <translation id="6036057147555329831">Зайвий модуль ICU</translation> <translation id="6039379616847168523">Перейти до наступної вкладки</translation> <translation id="6040143037577758943">Закрити</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">Не вдається підключитися до комп'ютера. Виберіть інший варіант підтвердження.</translation> <translation id="6410404864818553978">Основні дані про використання</translation> <translation id="6410883413783534063">Відкривайте різні вкладки, щоб одночасно переглядати кілька сторінок</translation> +<translation id="6411219469806822692">Не вдається прокрутити далі вгору. Спробуйте почати вище на сторінці.</translation> <translation id="6412673304250309937">Перевіряє URL-адреси за списком шкідливих сайтів, що зберігається в Chrome. Якщо сайт намагається викрасти ваш пароль або ви завантажуєте шкідливий файл, Chrome також може надсилати Безпечному перегляду URL-адреси, зокрема уривки вмісту сторінки.</translation> <translation id="641643625718530986">Друк…</translation> <translation id="6427112570124116297">Перекласти веб-сторінки</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">Вийшов час на таймері веб-сайту <ph name="FQDN" />. Завтра він знову запрацює.</translation> <translation id="6738516213925468394">Ваші дані було зашифровано за допомогою <ph name="BEGIN_LINK" />парольної фрази для синхронізації<ph name="END_LINK" /> від <ph name="TIME" />. Введіть її, щоб почати синхронізацію.</translation> <translation id="6738867403308150051">Завантаження…</translation> +<translation id="6751521182688001123">Швидко відкривайте нову вкладку. Щоб змінити функцію цієї кнопки, натисніть і втримуйте її.</translation> <translation id="6767294960381293877">Список пристроїв, з якими можна ділитися вкладкою, відкрито на половину висоти.</translation> <translation id="6783942555455976443">Зберегти цю сторінку на пізніше й отримати нагадування</translation> <translation id="6811034713472274749">Сторінка готова для перегляду</translation> <translation id="6813446258015311409">Вікно "Увійти в Chrome" відкрите.</translation> +<translation id="6817747507826986771">Швидко діліться цією сторінкою. Щоб змінити функцію цієї кнопки, натисніть і втримуйте її.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">Вибрано вкладку "<ph name="TAB_TITLE" />"</translation> <translation id="6846298663435243399">Завантаження…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">Попередній сайт ще додається</translation> <translation id="7339898014177206373">Нове вікно</translation> <translation id="7340958967809483333">Налаштування рекомендацій</translation> +<translation id="7352339641508007922">Потягніть, щоб зробити довгий знімок екрана</translation> <translation id="7352651011704765696">Виникли проблеми</translation> <translation id="7352939065658542140">ВІДЕО</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Поділитись 1 вибраним елементом}one{Поділитися # вибраним елементом}few{Поділитися # вибраними елементами}many{Поділитися # вибраними елементами}other{Поділитися # вибраного елемента}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">Видалити все</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> непрочитана сторінка}one{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитана сторінка}few{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитані сторінки}many{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитаних сторінок}other{У вас <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> непрочитаної сторінки}}</translation> <translation id="7882131421121961860">Історії не знайдено</translation> +<translation id="7884346424584885269">Надайте веб-переглядачу Chrome дозвіл шукати пристрої поблизу. <ph name="BEGIN_LINK" />Оновити дозволи.<ph name="END_LINK" /></translation> <translation id="7886917304091689118">Відкрито в Chrome</translation> <translation id="789763218334337857">Як користуватися веб-переглядачем Chrome</translation> <translation id="7903184275147100332">Це може тривати хвилину</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">Шифрувати синхронізовані дані за допомогою власної парольної фрази</translation> <translation id="8466613982764129868">Переконайтеся, що пристрій <ph name="TARGET_DEVICE_NAME" /> підключено до Інтернету</translation> <translation id="8473863474539038330">Адреси й інше</translation> +<translation id="8481921391193215807">Коли ці функції ввімкнено, сайти можуть використовувати зазначені технології, що забезпечують конфіденційність, щоб пропонувати контент і сервіси. Це альтернативні способи вирішення проблеми збору даних про дії користувачів на різних сайтах. З часом з’являтимуться інші пробні функції. + +<ph name="BEGIN_LIST_ITEM1" />Рекламодавці й видавці можуть використовувати технологію FLoC.<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />Рекламодавці й видавці можуть досліджувати ефективність оголошень, не відстежуючи ваші дії на різних сайтах.<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">Пробні функції ввімкнено</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">Відкрити сторінку "Історія"</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">Залишився 1 файл</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">Неможливо здійснювати виклики</translation> +<translation id="9212845824145208577">Не вдається прокрутити далі вниз. Спробуйте почати нижче на сторінці.</translation> <translation id="9219103736887031265">Зображення</translation> <translation id="926205370408745186">Видалити активність у Chrome із Цифрового добробуту</translation> <translation id="927968626442779827">Користуйтеся спрощеним режимом у Google Chrome</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 43bcea73..8cac0b2 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
@@ -277,6 +277,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> سیکنڈ باقی</translation> <translation id="2779651927720337254">ناکام ہو گیا</translation> <translation id="2781151931089541271">1 سیکنڈ باقی</translation> +<translation id="2788468313014644040">گروپ نمبر</translation> <translation id="2801022321632964776">Chrome کے تازہ ترین ورژن میں اپنی زبان حاصل کرنے کے لیے اپ ڈیٹ کریں</translation> <translation id="2805756323405976993">اطلاقات</translation> <translation id="2806840421670364300">FLoC</translation> @@ -466,7 +467,6 @@ <translation id="4056223980640387499">سیپیا</translation> <translation id="4060598801229743805">اسکرین کے اوپری حصہ کے قریب اختیارات دستیاب ہیں</translation> <translation id="4062305924942672200">قانونی معلومات</translation> -<translation id="4082818367361753283">گروپ ID</translation> <translation id="4084682180776658562">بُک مارک</translation> <translation id="4084712963632273211">بذریعہ <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google کے ذریعے ڈیلیور کردہ<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">ایپ کا ڈیٹا حذف کریں؟</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 4c6d4c70..8bf76ad6 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> soniya qoldi</translation> <translation id="2779651927720337254">xatolik:</translation> <translation id="2781151931089541271">1 soniya qoldi</translation> +<translation id="2788468313014644040">Guruh raqami</translation> <translation id="2801022321632964776">Chromeni eng oxirgi versiyagacha yangilab, internetni oʻz tilingizda kezing</translation> <translation id="2805756323405976993">Ilovalar</translation> <translation id="2806840421670364300">FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Sepiya</translation> <translation id="4060598801229743805">Parametrlar ekranning yuqoriroq qismida joylashgan</translation> <translation id="4062305924942672200">Yuridik ma’lumot</translation> -<translation id="4082818367361753283">Guruh ID</translation> <translation id="4084682180776658562">Xatcho‘p</translation> <translation id="4084712963632273211">Muallifi: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google tomonidan taqdim etildi<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Bu ilova maʼlumotlari oʻchirilsinmi?</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 27fad7f..ddeddd9 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389">Còn <ph name="SECONDS" /> giây</translation> <translation id="2779651927720337254">không tải xuống được</translation> <translation id="2781151931089541271">Còn 1 giây</translation> +<translation id="2788468313014644040">Số nhóm</translation> <translation id="2801022321632964776">Hãy cập nhật để dùng ngôn ngữ của bạn trong phiên bản Chrome mới nhất</translation> <translation id="2805756323405976993">Ứng dụng</translation> <translation id="2806840421670364300">FLoC (Học liên kết theo nhóm cùng sở thích)</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">Màu nâu đỏ</translation> <translation id="4060598801229743805">Có các tùy chọn ở gần đầu màn hình</translation> <translation id="4062305924942672200">Thông tin pháp lý</translation> -<translation id="4082818367361753283">Mã nhóm</translation> <translation id="4084682180776658562">Dấu trang</translation> <translation id="4084712963632273211">Từ <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Do Google phân phối<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Xóa dữ liệu ứng dụng?</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 4ce7b55d..f5614d0 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> +<translation id="1016498331642356377">使用语音快速搜索。若要修改此快捷方式,请轻触并按住这里。</translation> <translation id="1028699632127661925">正在发送到<ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">一并清除来自这些网站和应用的数据?</translation> <translation id="1036348656032585052">关闭</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">文本</translation> <translation id="2068748236079642969">观看下一个视频</translation> <translation id="2074143993849053708">针对 Google 助理语音搜索功能的用户意见征求界面已关闭</translation> +<translation id="2075835334924942448">您会在此处看到报道</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 条结果,共 <ph name="TOTAL_RESULTS" /> 条</translation> <translation id="2096012225669085171">在所有设备上保持同步,获享个性化体验</translation> <translation id="2100273922101894616">自动登录</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">节省了 <ph name="DATA" /></translation> <translation id="213279576345780926">已关闭“<ph name="TAB_TITLE" />”</translation> <translation id="2139186145475833000">添加到主屏幕</translation> +<translation id="2141396931810938595">根据您的使用情况</translation> <translation id="214888715418183969">选择您要与 Chrome 共享哪些数据。您共享的指标将有助于我们改进 Chrome 的功能、性能和稳定性。</translation> <translation id="2154484045852737596">修改支付卡</translation> <translation id="2154710561487035718">复制网址</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# 个音频文件}other{# 个音频文件}}</translation> <translation id="2656405586795711023">Web 应用</translation> <translation id="2689830683995595741">使用 Chrome 即表示您同意接受 <ph name="BEGIN_LINK1" />Google 服务条款<ph name="END_LINK1" />以及 <ph name="BEGIN_LINK2" />Google Chrome 和 Chrome 操作系统附加服务条款<ph name="END_LINK2" />。<ph name="BEGIN_LINK3" />针对通过 Family Link 管理的 Google 帐号的隐私权声明<ph name="END_LINK3" />也适用。</translation> +<translation id="2702516483241149200">新功能:分享某个文本链接即可滚动至对应的文本</translation> <translation id="2704606927547763573">已复制</translation> <translation id="2707726405694321444">刷新网页</translation> <translation id="271033894570825754">新建</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">还剩 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失败</translation> <translation id="2781151931089541271">还剩 1 秒</translation> +<translation id="2788468313014644040">群组编号</translation> <translation id="2801022321632964776">更新即可在最新版本的 Chrome 中使用您的语言</translation> <translation id="2805756323405976993">应用</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">该帐号由 <ph name="PARENT_NAME_1" /> 和 <ph name="PARENT_NAME_2" /> 管理。</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> 个未读页面}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> 个未读页面}}</translation> <translation id="2979025552038692506">所选的无痕模式标签页</translation> +<translation id="2979448359891869301">无法扩展屏幕截图范围。请在手机内存不紧张时重试。</translation> <translation id="2987620471460279764">从其他设备分享的文字</translation> <translation id="2989523299700148168">最近用过的搜索引擎</translation> <translation id="2992473221983447149">图片说明</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">管理您关注的网站</translation> <translation id="3269093882174072735">加载图片</translation> <translation id="3269956123044984603">要访问您在其他设备上的标签页,请在 Android 帐号设置部分开启“自动同步数据”。</translation> +<translation id="3280562213547448728">语音搜索</translation> <translation id="3282568296779691940">登录 Chrome</translation> <translation id="3284510035090979597">主动帮助</translation> <translation id="3285080554353377245">介绍如何使用 Chrome 的视频</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">已显示剪贴板内容</translation> <translation id="3566923219790363270">Chrome 仍在准备 VR。请稍等片刻再重启 Chrome。</translation> <translation id="3568688522516854065">要访问您在其他设备上的标签页,请登录您的帐号并开启同步功能</translation> +<translation id="3577473026931028326">出了点问题。请重试。</translation> <translation id="3587482841069643663">全部</translation> <translation id="3587596251841506391">帮助我们改善网络安全环境</translation> <translation id="3602290021589620013">预览</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">棕褐色调</translation> <translation id="4060598801229743805">选项位于屏幕顶部附近</translation> <translation id="4062305924942672200">法律信息</translation> -<translation id="4082818367361753283">群组 ID</translation> <translation id="4084682180776658562">添加书签</translation> <translation id="4084712963632273211">来自 <ph name="PUBLISHER_ORIGIN" /> - <ph name="BEGIN_DEEMPHASIZED" />由 Google 提供<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">要删除应用数据吗?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">在新标签页中打开</translation> <translation id="4198423547019359126">没有可用的下载内容保存位置</translation> <translation id="4209895695669353772">要获取 Google 推荐的个性化内容,请开启同步功能</translation> +<translation id="4225895483398857530">工具栏中的快捷方式</translation> <translation id="4242533952199664413">打开“设置”</translation> <translation id="4248098802131000011">确保您的密码免受数据泄露和其他安全问题的侵害</translation> <translation id="4250229828105606438">屏幕截图</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">正在等待完成另一项下载…</translation> <translation id="5865733239029070421">自动将使用情况统计信息和崩溃报告发送至 Google</translation> <translation id="5869522115854928033">已保存的密码</translation> +<translation id="587735546353481577">若要关注某个网站,请转到该网站,打开 Chrome 菜单,然后点按“关注”。</translation> <translation id="5880748256563468367">转到 Feed</translation> <translation id="5884076754568147479">为了帮助您执行各种操作,Google 将会收到您使用 Google 助理时所在网站的网址和内容,以及您通过 Google 助理提交的信息</translation> <translation id="5919204609460789179">需更新 <ph name="PRODUCT_NAME" />,才能开始同步</translation> <translation id="5937580074298050696">已节省 <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">重置</translation> <translation id="5942872142862698679">目前使用的搜索引擎是 Google</translation> +<translation id="5945035219773565305">当前建议:<ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">目前查看的是实际网页</translation> <translation id="5952764234151283551">将您尝试访问的网页的网址发送给 Google</translation> <translation id="5956665950594638604">在新标签页中打开 Chrome 帮助中心</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">重新关注</translation> <translation id="6002623704405939939">若要清除<ph name="BEGIN_LINK1" />搜索<ph name="END_LINK1" />记录或其他形式的历史记录,请前往<ph name="BEGIN_LINK2" />我的 Google 活动记录<ph name="END_LINK2" />页面</translation> <translation id="6005538289190791541">建议的密码</translation> +<translation id="6032091552407840792">这项试用版功能仅在<ph name="BEGIN_LINK" />部分区域<ph name="END_LINK" />有效。</translation> +<translation id="6033245666633565791">Chrome 正在通过 <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> 开发新技术,以便既能保护开放网络又能使您免受跨网站跟踪。 + +Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部分区域使用。现阶段,网站可在继续使用第三方 Cookie 等当前网络技术的同时试用 Privacy Sandbox。</translation> <translation id="6036057147555329831">额外的 ICU</translation> <translation id="6039379616847168523">跳转到下一个标签页</translation> <translation id="6040143037577758943">关闭</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">无法连接到您的计算机。请尝试另一种验证方式。</translation> <translation id="6410404864818553978">基本的使用情况数据</translation> <translation id="6410883413783534063">打开多个标签页即可同时访问不同网页</translation> +<translation id="6411219469806822692">无法继续向上滚动屏幕了。请尝试从页面中更靠上的位置开始截屏。</translation> <translation id="6412673304250309937">将网址与存储在 Chrome 中的不安全网站列表进行比对。如果某个网站企图窃取您的密码,或者您下载了有害的文件,Chrome 可能还会将相应网址连同少量网页内容发送给“安全浏览”功能。</translation> <translation id="641643625718530986">打印…</translation> <translation id="6427112570124116297">翻译网页</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">您的 <ph name="FQDN" /> 计时器已结束计时。它将于明天重新开始。</translation> <translation id="6738516213925468394">您的数据已于 <ph name="TIME" />使用您的<ph name="BEGIN_LINK" />同步密码<ph name="END_LINK" />加密。输入该密码即可开始同步。</translation> <translation id="6738867403308150051">正在下载…</translation> +<translation id="6751521182688001123">快速打开一个新标签页。若要修改此快捷方式,请轻触并按住这里。</translation> <translation id="6767294960381293877">要与之分享标签页的设备的列表已半屏打开。</translation> <translation id="6783942555455976443">保存此页面以便稍后阅读并接收提醒</translation> <translation id="6811034713472274749">页面已可供查看</translation> <translation id="6813446258015311409">登录 Chrome,已打开。</translation> +<translation id="6817747507826986771">快速分享此页面。若要修改此快捷方式,请轻触并按住这里。</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612">已选择标签页“<ph name="TAB_TITLE" />”</translation> <translation id="6846298663435243399">正在加载…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">仍在添加先前的网站</translation> <translation id="7339898014177206373">打开新的窗口</translation> <translation id="7340958967809483333">“探索”功能的选项</translation> +<translation id="7352339641508007922">向上/向下拖动即可截取长屏幕</translation> <translation id="7352651011704765696">出了点问题</translation> <translation id="7352939065658542140">视频</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{分享 1 个所选项}other{分享 # 个所选项}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">全部删除</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{您有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> 个未读页面}other{您有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> 个未读页面}}</translation> <translation id="7882131421121961860">未找到任何记录</translation> +<translation id="7884346424584885269">Chrome 需要获得相应权限,才能搜寻附近的设备。<ph name="BEGIN_LINK" />更新权限<ph name="END_LINK" />。</translation> <translation id="7886917304091689118">正在 Chrome 中运行</translation> <translation id="789763218334337857">如何使用 Chrome</translation> <translation id="7903184275147100332">请稍等片刻</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">使用您自己的同步密码加密已同步的数据</translation> <translation id="8466613982764129868">请确保<ph name="TARGET_DEVICE_NAME" />已连接到互联网</translation> <translation id="8473863474539038330">地址和其他信息</translation> +<translation id="8481921391193215807">如果此控件已开启,网站可能会使用此处所示的隐私保护技术来提供其内容和服务。这些技术包括跨网站跟踪机制的替代方案。随着时间的推移,我们可能会添加更多试用版功能。 + +<ph name="BEGIN_LIST_ITEM1" />广告主和发布商可使用 FLoC。<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />广告主和发布商可通过一种不会对您进行跨网站跟踪的方式研究广告的效果。<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">试用版功能已开启</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">打开历史记录页</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">还剩 1 个文件</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">无法致电</translation> +<translation id="9212845824145208577">无法继续向下滚动屏幕了。请尝试从页面中更靠下的位置开始截屏。</translation> <translation id="9219103736887031265">图片</translation> <translation id="926205370408745186">从“数字健康”应用中移除您的 Chrome 活动记录</translation> <translation id="927968626442779827">使用 Google Chrome 的精简模式</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 897981d5..799e93a 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-HK"> +<translation id="1016498331642356377">透過語音快速搜尋。如要編輯此捷徑,請按住捷徑按鈕。</translation> <translation id="1028699632127661925">正在傳送至 <ph name="DEVICE_NAME" />…</translation> <translation id="103269572468856066">要一併清除這些網站和應用程式的資料嗎?</translation> <translation id="1036348656032585052">停用</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">文字</translation> <translation id="2068748236079642969">觀看下一段影片</translation> <translation id="2074143993849053708">「Google 助理」語音搜尋的同意使用者介面</translation> +<translation id="2075835334924942448">您可在此查看報導</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 項結果 (共 <ph name="TOTAL_RESULTS" /> 項)</translation> <translation id="2096012225669085171">在不同裝置上同步與個人化</translation> <translation id="2100273922101894616">自動登入</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">已節省 <ph name="DATA" /></translation> <translation id="213279576345780926">已關閉「<ph name="TAB_TITLE" />」</translation> <translation id="2139186145475833000">新增至主螢幕</translation> +<translation id="2141396931810938595">根據使用情況</translation> <translation id="214888715418183969">選擇您想與 Chrome 分享的資料。您分享的數據將有助我們改善 Chrome 的功能、效能和穩定性。</translation> <translation id="2154484045852737596">編輯付款信用卡</translation> <translation id="2154710561487035718">複製網址</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# 個音訊檔案}other{# 個音訊檔案}}</translation> <translation id="2656405586795711023">網絡應用程式</translation> <translation id="2689830683995595741">使用 Chrome 即表示您同意《<ph name="BEGIN_LINK1" />Google 服務條款<ph name="END_LINK1" />》以及 <ph name="BEGIN_LINK2" />Google Chrome 和 Chrome 作業系統的《附加服務條款》<ph name="END_LINK2" />。須同時受《<ph name="BEGIN_LINK3" />透過 Family Link 管理的 Google 帳戶私隱聲明<ph name="END_LINK3" />》約束。</translation> +<translation id="2702516483241149200">新功能:分享捲動至此段文字的連結</translation> <translation id="2704606927547763573">已複製</translation> <translation id="2707726405694321444">重新整理網頁</translation> <translation id="271033894570825754">全新</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">尚餘 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> <translation id="2781151931089541271">尚餘 1 秒</translation> +<translation id="2788468313014644040">群組號碼</translation> <translation id="2801022321632964776">更新後即可在 Chrome 最新版本中使用您的語言。</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2806840421670364300">群組聯合學習 : FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">這個帳戶是由 <ph name="PARENT_NAME_1" /> 和 <ph name="PARENT_NAME_2" /> 管理。</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> 個未讀網頁}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> 個未讀網頁}}</translation> <translation id="2979025552038692506">已選取無痕式分頁</translation> +<translation id="2979448359891869301">無法延伸螢幕截圖範圍。請在手機並非處於忙碌狀態時重試。</translation> <translation id="2987620471460279764">從其他裝置分享的文字</translation> <translation id="2989523299700148168">最近使用的搜尋引擎</translation> <translation id="2992473221983447149">圖片說明</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">管理您追蹤的網站</translation> <translation id="3269093882174072735">載入圖片</translation> <translation id="3269956123044984603">如要取得其他裝置上的分頁,請在 Android 帳戶設定中開啟「自動同步資料」功能。</translation> +<translation id="3280562213547448728">語音搜尋</translation> <translation id="3282568296779691940">登入 Chrome</translation> <translation id="3284510035090979597">主動提供協助</translation> <translation id="3285080554353377245">關於如何使用 Chrome 的影片</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">顯示咗剪貼簿嘅內容</translation> <translation id="3566923219790363270">Chrome 仍在準備 VR。請稍後再重新啟動 Chrome。</translation> <translation id="3568688522516854065">如要取得其他裝置上的分頁,請登入並開啟同步處理功能</translation> +<translation id="3577473026931028326">發生錯誤,請再試一次。</translation> <translation id="3587482841069643663">全部</translation> <translation id="3587596251841506391">協助改善網絡安全</translation> <translation id="3602290021589620013">預覽</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">棕褐色</translation> <translation id="4060598801229743805">選項位於螢幕頂部</translation> <translation id="4062305924942672200">法律資料</translation> -<translation id="4082818367361753283">群組 ID</translation> <translation id="4084682180776658562">書籤</translation> <translation id="4084712963632273211">發佈者:<ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />由 Google 提供<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">要刪除應用程式資料嗎?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">在新分頁中開啟</translation> <translation id="4198423547019359126">沒有可用的下載位置</translation> <translation id="4209895695669353772">如要接收 Google 建議的個人化內容,請開啟同步處理功能</translation> +<translation id="4225895483398857530">工具列捷徑</translation> <translation id="4242533952199664413">開啟設定</translation> <translation id="4248098802131000011">確保密碼安全,避免發生資料外洩或其他安全性問題</translation> <translation id="4250229828105606438">螢幕截圖</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">正在等待其他下載程序完成…</translation> <translation id="5865733239029070421">自動將使用情況統計和當機報告傳送給 Google</translation> <translation id="5869522115854928033">已儲存的密碼</translation> +<translation id="587735546353481577">如要追蹤網站,只要前往該網站並開啟 Chrome 選單,然後輕按 [追蹤] 即可。</translation> <translation id="5880748256563468367">前往動態消息</translation> <translation id="5884076754568147479">為協助您完成工作,系統會將您使用「Google 助理」的網站網址和內容,以及您透過「Google 助理」提交的資料傳送給 Google</translation> <translation id="5919204609460789179">更新 <ph name="PRODUCT_NAME" /> 即可開始同步處理</translation> <translation id="5937580074298050696">已節省 <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">重設</translation> <translation id="5942872142862698679">使用 Google 搜尋內容</translation> +<translation id="5945035219773565305">目前的建議:<ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">正在查看實際網頁</translation> <translation id="5952764234151283551">將您嘗試瀏覽的網頁網址傳送至 Google</translation> <translation id="5956665950594638604">在新分頁中開啟 Chrome 說明中心</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">重新追蹤</translation> <translation id="6002623704405939939">如要清除<ph name="BEGIN_LINK1" />搜尋<ph name="END_LINK1" />或其他類型的記錄,請前往<ph name="BEGIN_LINK2" />我的 Google 活動<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">建議的密碼</translation> +<translation id="6032091552407840792">此試用功能只會在<ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />啟用。</translation> +<translation id="6033245666633565791">Chrome 透過「<ph name="BEGIN_LINK" />私隱沙箱<ph name="END_LINK" />」開發新的技術,防止有心人士透過跨網站追蹤機制取得您的資料,同時保護開放網絡。 + +「私隱沙箱」的試用功能仍在開發階段,目前開放地區有限。現在網站可以嘗試使用「私隱沙箱」,亦能繼續使用第三方 Cookie 等現有的網絡技術。</translation> <translation id="6036057147555329831">其他 ICU</translation> <translation id="6039379616847168523">跳至下一個分頁</translation> <translation id="6040143037577758943">關閉</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">無法連接電腦。請改用其他驗證選項。</translation> <translation id="6410404864818553978">基本使用情況資料</translation> <translation id="6410883413783534063">開啟分頁即可同時瀏覽不同網頁</translation> +<translation id="6411219469806822692">無法再往上移動。請嘗試從上一頁開始。</translation> <translation id="6412673304250309937">使用儲存在 Chrome 中的不安全網站清單來檢查網址。如果有網站試圖盜取您的密碼,或當您下載有害檔案時,Chrome 亦可能將網址 (包括部分網頁內容) 傳送至「安全瀏覽」功能。</translation> <translation id="641643625718530986">列印…</translation> <translation id="6427112570124116297">翻譯網頁</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">「<ph name="FQDN" />」計時器已結束計時,將於明天重新開始。</translation> <translation id="6738516213925468394">您已於 <ph name="TIME" />使用<ph name="BEGIN_LINK" />同步密碼短語<ph name="END_LINK" />加密資料,請輸入密碼短語開始同步資料。</translation> <translation id="6738867403308150051">下載中…</translation> +<translation id="6751521182688001123">快速開啟新分頁。如要編輯此捷徑,請按住捷徑按鈕。</translation> <translation id="6767294960381293877">要共用分頁嘅裝置清單宜家顯示喺畫面下半部。</translation> <translation id="6783942555455976443">將此頁面儲存至稍後閱讀,並接收提醒</translation> <translation id="6811034713472274749">網頁已準備就緒,可供查看</translation> <translation id="6813446258015311409">登入 Chrome,開咗。</translation> +<translation id="6817747507826986771">快速分享此頁面。如要編輯此捷徑,請按住捷徑按鈕。</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6824899148643461612"><ph name="TAB_TITLE" />,分頁,已選取</translation> <translation id="6846298663435243399">載入中…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">仍在新增先前的網站</translation> <translation id="7339898014177206373">新視窗</translation> <translation id="7340958967809483333">「探索」的選項</translation> +<translation id="7352339641508007922">拖曳以擷取長螢幕截圖</translation> <translation id="7352651011704765696">發生問題</translation> <translation id="7352939065658542140">影片</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{分享 1 個已選取的項目}other{分享 # 個已選取的項目}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">全部移除</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{您有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> 個未讀頁面}other{您有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> 個未讀頁面}}</translation> <translation id="7882131421121961860">找不到任何記錄</translation> +<translation id="7884346424584885269">Chrome 需要掃瞄附近裝置的權限。<ph name="BEGIN_LINK" />更新權限<ph name="END_LINK" />。</translation> <translation id="7886917304091689118">正在 Chrome 中執行</translation> <translation id="789763218334337857">如何使用 Chrome</translation> <translation id="7903184275147100332">請稍候片刻</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">使用您的同步密碼短語,加密已同步的資料</translation> <translation id="8466613982764129868">請確保 <ph name="TARGET_DEVICE_NAME" /> 已連接互聯網</translation> <translation id="8473863474539038330">地址及其他資料</translation> +<translation id="8481921391193215807">開啟後,網站可能會使用此處顯示的私隱保護技術提供內容和服務。這些技術包括替代跨網站追蹤的選項。本服務可能會陸續新增更多試用功能。 + +<ph name="BEGIN_LIST_ITEM1" />廣告客戶和發佈者可使用 FLoC。<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />廣告客戶和發佈者無需追蹤您的網站瀏覽記錄,就能瞭解廣告成效。<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">試用功能已開啟</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">開啟記錄頁面</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">尚餘 1 個檔案</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">無法撥打電話</translation> +<translation id="9212845824145208577">無法再往下移動。請嘗試從下一頁開始。</translation> <translation id="9219103736887031265">圖片</translation> <translation id="926205370408745186">從「健康數碼生活」中移除您的 Chrome 活動記錄</translation> <translation id="927968626442779827">使用 Google Chrome 的「精簡模式」</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 21acfdda..f084e68 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
@@ -1,6 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> +<translation id="1016498331642356377">快速透過語音進行搜尋。按住這裡即可編輯這個捷徑。</translation> <translation id="1028699632127661925">正在傳送到「<ph name="DEVICE_NAME" />」...</translation> <translation id="103269572468856066">要一併清除這些網站和應用程式中的資料嗎?</translation> <translation id="1036348656032585052">關閉</translation> @@ -157,6 +158,7 @@ <translation id="2067805253194386918">文字</translation> <translation id="2068748236079642969">觀看下一部影片</translation> <translation id="2074143993849053708">Google 助理語音搜尋的同意使用者介面已關閉</translation> +<translation id="2075835334924942448">你可以在這裡瀏覽其他報導</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 個結果,共 <ph name="TOTAL_RESULTS" /> 個</translation> <translation id="2096012225669085171">讓多部裝置保持同步,並提供人化體驗</translation> <translation id="2100273922101894616">自動登入</translation> @@ -170,6 +172,7 @@ <translation id="2131665479022868825">已節省 <ph name="DATA" /></translation> <translation id="213279576345780926">已關閉「<ph name="TAB_TITLE" />」</translation> <translation id="2139186145475833000">加到主畫面</translation> +<translation id="2141396931810938595">根據你的使用情形</translation> <translation id="214888715418183969">選擇你要與 Chrome 分享的使用資料。你分享的指標將用於協助改善 Chrome 的功能、效能和穩定性。</translation> <translation id="2154484045852737596">編輯卡片資訊</translation> <translation id="2154710561487035718">複製網址</translation> @@ -258,6 +261,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# 個音訊檔案}other{# 個音訊檔案}}</translation> <translation id="2656405586795711023">網頁應用程式</translation> <translation id="2689830683995595741">使用 Chrome 即表示您同意《<ph name="BEGIN_LINK1" />Google 服務條款<ph name="END_LINK1" />》以及 <ph name="BEGIN_LINK2" />Google Chrome 和 Chrome 作業系統的《附加服務條款》<ph name="END_LINK2" />。您也必須遵守《<ph name="BEGIN_LINK3" />透過 Family Link 管理的 Google 帳戶所適用的隱私權聲明<ph name="END_LINK3" />》。</translation> +<translation id="2702516483241149200">新功能:共用可跳至這段文字的連結</translation> <translation id="2704606927547763573">已複製</translation> <translation id="2707726405694321444">重新整理頁面</translation> <translation id="271033894570825754">新</translation> @@ -274,6 +278,7 @@ <translation id="2777555524387840389">還剩 <ph name="SECONDS" /> 秒</translation> <translation id="2779651927720337254">失敗</translation> <translation id="2781151931089541271">還剩 1 秒</translation> +<translation id="2788468313014644040">群組編號</translation> <translation id="2801022321632964776">更新後即可在 Chrome 最新版本中使用你偏好的語言</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2806840421670364300">FLoC</translation> @@ -305,6 +310,7 @@ <translation id="2956410042958133412">這個帳戶受 <ph name="PARENT_NAME_1" /> 和 <ph name="PARENT_NAME_2" /> 管理。</translation> <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> 個未讀取的網頁}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> 個未讀取的網頁}}</translation> <translation id="2979025552038692506">選取的無痕式分頁</translation> +<translation id="2979448359891869301">無法擴展螢幕截圖範圍。請在手機負載降低時再試一次。</translation> <translation id="2987620471460279764">從其他裝置分享的文字</translation> <translation id="2989523299700148168">最近造訪過</translation> <translation id="2992473221983447149">圖片說明</translation> @@ -346,6 +352,7 @@ <translation id="3265534588625245297">管理你追蹤的網站</translation> <translation id="3269093882174072735">載入圖片</translation> <translation id="3269956123044984603">如要存取您在其他裝置上開啟的分頁,請前往 Android 帳戶設定開啟 [自動同步處理資料]。</translation> +<translation id="3280562213547448728">語音搜尋</translation> <translation id="3282568296779691940">登入 Chrome</translation> <translation id="3284510035090979597">主動提供協助</translation> <translation id="3285080554353377245">關於如何使用 Chrome 的影片</translation> @@ -396,6 +403,7 @@ <translation id="3563767357928833671">已顯示剪貼簿內容</translation> <translation id="3566923219790363270">Chrome 仍在準備 VR 模組。請稍後再重新啟動 Chrome。</translation> <translation id="3568688522516854065">如要存取你在其他裝置上開啟的分頁,請登入並開啟同步處理功能</translation> +<translation id="3577473026931028326">發生錯誤,請再試一次。</translation> <translation id="3587482841069643663">全部</translation> <translation id="3587596251841506391">協助改善網路安全</translation> <translation id="3602290021589620013">預覽</translation> @@ -460,7 +468,6 @@ <translation id="4056223980640387499">深褐色調</translation> <translation id="4060598801229743805">選項位於畫面頂端</translation> <translation id="4062305924942672200">法律資訊</translation> -<translation id="4082818367361753283">群組 ID</translation> <translation id="4084682180776658562">書籤</translation> <translation id="4084712963632273211">發布者:<ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />由 Google 所提供<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">要刪除應用程式資料嗎?</translation> @@ -481,6 +488,7 @@ <translation id="4195643157523330669">在新分頁中開啟</translation> <translation id="4198423547019359126">沒有可用的下載位置</translation> <translation id="4209895695669353772">如要取得個人化的 Google 推薦內容,請開啟同步處理功能</translation> +<translation id="4225895483398857530">工具列捷徑</translation> <translation id="4242533952199664413">開啟設定</translation> <translation id="4248098802131000011">確保密碼安全,避免發生資料侵害或其他安全性問題</translation> <translation id="4250229828105606438">螢幕截圖</translation> @@ -748,12 +756,14 @@ <translation id="5864419784173784555">正在等待其他下載程序完成…</translation> <translation id="5865733239029070421">自動將使用統計資料和當機報告傳送給 Google</translation> <translation id="5869522115854928033">已儲存的密碼</translation> +<translation id="587735546353481577">如要追蹤網站,只要前往該網站並開啟 Chrome 選單,然後輕觸 [追蹤] 即可。</translation> <translation id="5880748256563468367">前往動態饋給</translation> <translation id="5884076754568147479">為協助你完成工作,系統會將你使用 Google 助理時所在網站的網址與互動的內容,以及你透過 Google 助理提交的資訊,一併傳送給 Google。</translation> <translation id="5919204609460789179">更新 <ph name="PRODUCT_NAME" /> 即可開始同步處理</translation> <translation id="5937580074298050696">已儲存 <ph name="AMOUNT" /></translation> <translation id="5939518447894949180">重設</translation> <translation id="5942872142862698679">現已使用 Google 搜尋</translation> +<translation id="5945035219773565305">目前建議:<ph name="RECOMMENDATION" /></translation> <translation id="5951119116059277034">正在查看實際網頁</translation> <translation id="5952764234151283551">將你嘗試瀏覽的網頁網址傳送給 Google</translation> <translation id="5956665950594638604">在新分頁中開啟 Chrome 說明中心</translation> @@ -767,6 +777,10 @@ <translation id="6000203700195075278">重新追蹤</translation> <translation id="6002623704405939939">如要清除<ph name="BEGIN_LINK1" />搜尋<ph name="END_LINK1" />記錄或其他類型的歷史記錄,請前往<ph name="BEGIN_LINK2" />我的 Google 活動<ph name="END_LINK2" /></translation> <translation id="6005538289190791541">建議的密碼</translation> +<translation id="6032091552407840792">這項功能目前僅開放<ph name="BEGIN_LINK" />部分地區<ph name="END_LINK" />試用。</translation> +<translation id="6033245666633565791">Chrome 透過 <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> 開發新的技術,防止有心人士透過跨網站追蹤機制取得你的資料,同時保護開放網路。 + +Privacy Sandbox 的試用功能仍在開發階段,目前開放地區有限。現在網站可以嘗試使用 Privacy Sandbox,也能繼續使用第三方 Cookie 等現有的網路技術。</translation> <translation id="6036057147555329831">其他 ICU</translation> <translation id="6039379616847168523">跳至下一個分頁</translation> <translation id="6040143037577758943">關閉</translation> @@ -832,6 +846,7 @@ <translation id="6407224748847589805">無法連線至你的電腦。請改用其他驗證選項。</translation> <translation id="6410404864818553978">基本使用資料</translation> <translation id="6410883413783534063">開啟分頁即可同時造訪不同的網頁</translation> +<translation id="6411219469806822692">無法再向上捲動。請嘗試從上一頁開始。</translation> <translation id="6412673304250309937">可使用儲存在 Chrome 中的不安全網站清單檢查網址。如果有網站試圖竊取你的密碼,或當你下載有害檔案時,Chrome 可能也會將網址 (包括部分網頁內容) 傳送至安全瀏覽功能。</translation> <translation id="641643625718530986">列印…</translation> <translation id="6427112570124116297">翻譯網頁</translation> @@ -894,10 +909,12 @@ <translation id="671481426037969117">「<ph name="FQDN" />」計時器已結束計時,將於明天重新開始。</translation> <translation id="6738516213925468394">你在 <ph name="TIME" />已使用<ph name="BEGIN_LINK" />同步通關密語<ph name="END_LINK" />將資料加密。如要開始同步處理資料,請輸入通關密語。</translation> <translation id="6738867403308150051">下載中…</translation> +<translation id="6751521182688001123">快速開啟新分頁。按住這裡即可編輯這個捷徑。</translation> <translation id="6767294960381293877">要共用分頁的裝置清單已開啟,顯示在畫面下半部。</translation> <translation id="6783942555455976443">儲存這個頁面以便稍後閱讀並設定提醒</translation> <translation id="6811034713472274749">你可以瀏覽這個網頁了</translation> <translation id="6813446258015311409">登入 Chrome,帳戶挑選器已開啟。</translation> +<translation id="6817747507826986771">快速分享這個專頁。按住這裡即可編輯這個捷徑。</translation> <translation id="6820686453637990663">信用卡驗證碼</translation> <translation id="6824899148643461612">「<ph name="TAB_TITLE" />」,分頁,已選取</translation> <translation id="6846298663435243399">載入中…</translation> @@ -968,6 +985,7 @@ <translation id="7333031090786104871">仍在新增先前的網站</translation> <translation id="7339898014177206373">新視窗</translation> <translation id="7340958967809483333">探索的選項</translation> +<translation id="7352339641508007922">拖曳即可擷取長螢幕截圖</translation> <translation id="7352651011704765696">發生錯誤</translation> <translation id="7352939065658542140">影片</translation> <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{分享 1 個選取的項目}other{分享 # 個選取的項目}}</translation> @@ -1060,6 +1078,7 @@ <translation id="7876243839304621966">全部移除</translation> <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{你有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> 個網頁尚未閱讀}other{你有 <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> 個網頁尚未閱讀}}</translation> <translation id="7882131421121961860">找不到瀏覽記錄</translation> +<translation id="7884346424584885269">Chrome 需要你提供權限才能掃描附近的裝置。<ph name="BEGIN_LINK" />更新權限<ph name="END_LINK" />。</translation> <translation id="7886917304091689118">正在 Chrome 中執行</translation> <translation id="789763218334337857">如何使用 Chrome</translation> <translation id="7903184275147100332">請稍待片刻</translation> @@ -1153,6 +1172,11 @@ <translation id="8461694314515752532">使用你自己的同步通關密語,加密保護同步資料</translation> <translation id="8466613982764129868">請確認「<ph name="TARGET_DEVICE_NAME" />」已連上網際網路</translation> <translation id="8473863474539038330">地址和其他資訊</translation> +<translation id="8481921391193215807">在啟用狀態下,網站可能會使用這裡顯示的隱私保護技術提供內容和服務,包括對於跨網站追蹤的替代性措施。本服務可能會陸續新增更多試用功能。 + +<ph name="BEGIN_LIST_ITEM1" />廣告客戶和發布商可以使用 FLoC 技術。<ph name="END_LIST_ITEM1" /> + +<ph name="BEGIN_LIST_ITEM2" />廣告客戶和發布商不必追蹤你的網站瀏覽記錄,就能瞭解自身的廣告成效。<ph name="END_LIST_ITEM2" /></translation> <translation id="8481980314595922412">試用功能已開啟</translation> <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="8489271220582375723">開啟記錄頁面</translation> @@ -1264,6 +1288,7 @@ <translation id="9204836675896933765">還剩 1 個檔案</translation> <translation id="9206873250291191720">A</translation> <translation id="9209888181064652401">無法撥打電話</translation> +<translation id="9212845824145208577">無法再向下捲動。請嘗試從下一頁開始。</translation> <translation id="9219103736887031265">圖片</translation> <translation id="926205370408745186">將你的 Chrome 活動記錄從數位健康中移除</translation> <translation id="927968626442779827">使用 Google Chrome 精簡模式</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index d4db744d..4e1b68d 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
@@ -278,6 +278,7 @@ <translation id="2777555524387840389"><ph name="SECONDS" /> amasekhondi asele</translation> <translation id="2779651927720337254">yehlulekile</translation> <translation id="2781151931089541271">1 isekhondi elisele</translation> +<translation id="2788468313014644040">Inombolo yeqembu</translation> <translation id="2801022321632964776">Buyekeza ukuze uthole ulimi lwakho ngenguqulo yakamuva ye-Chrome</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> <translation id="2806840421670364300">I-FLoC</translation> @@ -467,7 +468,6 @@ <translation id="4056223980640387499">I-Sepia</translation> <translation id="4060598801229743805">Izinketho ziyatholakala eduze kwaphezulu kwesikrini</translation> <translation id="4062305924942672200">Ulwazi lezomthetho</translation> -<translation id="4082818367361753283">I-ID yeqembu</translation> <translation id="4084682180776658562">Ibhukhimakhi</translation> <translation id="4084712963632273211">Kusukela ku-<ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />okulethwe i-Google<ph name="END_DEEMPHASIZED" /></translation> <translation id="4095146165863963773">Susa idatha yohlelo lokusebenza?</translation>
diff --git a/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc b/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc index fef153dc..1c670ce 100644 --- a/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc +++ b/chrome/browser/ui/ash/wallpaper_controller_client_impl.cc
@@ -21,7 +21,6 @@ #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/launch_utils.h" -#include "chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper.pb.h" #include "chrome/browser/ash/customization/customization_wallpaper_util.h" #include "chrome/browser/ash/login/wizard_controller.h" #include "chrome/browser/browser_process.h" @@ -49,7 +48,6 @@ #include "ui/display/screen.h" #include "url/gurl.h" -using backdrop_wallpaper_handlers::SurpriseMeImageFetcher; using extension_misc::kWallpaperManagerId; namespace { @@ -638,16 +636,6 @@ storage_weak_factory_.GetWeakPtr(), task_runner)); } -void WallpaperControllerClientImpl::FetchDailyRefreshWallpaper( - const std::string& collection_id, - DailyWallpaperUrlFetchedCallback callback) { - surprise_me_image_fetcher_ = std::make_unique<SurpriseMeImageFetcher>( - collection_id, /*resume_token=*/std::string()); - surprise_me_image_fetcher_->Start( - base::BindOnce(&WallpaperControllerClientImpl::OnDailyImageInfoFetched, - weak_factory_.GetWeakPtr(), std::move(callback))); -} - bool WallpaperControllerClientImpl::ShouldShowUserNamesOnLogin() const { bool show_user_names = true; ash::CrosSettings::Get()->GetBoolean( @@ -678,16 +666,3 @@ const std::string& collection_id) { wallpaper_controller_->SetDailyRefreshCollectionId(collection_id); } - -void WallpaperControllerClientImpl::OnDailyImageInfoFetched( - DailyWallpaperUrlFetchedCallback callback, - bool success, - const backdrop::Image& image, - const std::string& next_resume_token) { - if (success) { - std::move(callback).Run(image.image_url()); - } else { - std::move(callback).Run(std::string()); - } - surprise_me_image_fetcher_.reset(); -}
diff --git a/chrome/browser/ui/ash/wallpaper_controller_client_impl.h b/chrome/browser/ui/ash/wallpaper_controller_client_impl.h index 83b8705..b8d8fbf 100644 --- a/chrome/browser/ui/ash/wallpaper_controller_client_impl.h +++ b/chrome/browser/ui/ash/wallpaper_controller_client_impl.h
@@ -11,7 +11,6 @@ #include "ash/public/cpp/wallpaper_controller_client.h" #include "ash/public/cpp/wallpaper_types.h" #include "base/macros.h" -#include "chrome/browser/ash/backdrop_wallpaper_handlers/backdrop_wallpaper_handlers.h" #include "chrome/browser/ash/settings/cros_settings.h" #include "components/prefs/pref_change_registrar.h" #include "url/gurl.h" @@ -54,9 +53,6 @@ void SetDefaultWallpaper(const AccountId& account_id, bool show_wallpaper) override; void MigrateCollectionIdFromChromeApp() override; - void FetchDailyRefreshWallpaper( - const std::string& collection_id, - DailyWallpaperUrlFetchedCallback callback) override; // Wrappers around the ash::WallpaperController interface. void SetCustomWallpaper(const AccountId& account_id, @@ -148,11 +144,6 @@ // Passes |collection_id| to wallpaper controller on main task runner. void SetDailyRefreshCollectionId(const std::string& collection_id); - void OnDailyImageInfoFetched(DailyWallpaperUrlFetchedCallback callback, - bool success, - const backdrop::Image& image, - const std::string& next_resume_token); - // WallpaperController interface in ash. ash::WallpaperController* wallpaper_controller_; @@ -166,9 +157,6 @@ // wallpaper should be shown. base::CallbackListSubscription show_user_names_on_signin_subscription_; - std::unique_ptr<backdrop_wallpaper_handlers::SurpriseMeImageFetcher> - surprise_me_image_fetcher_; - base::WeakPtrFactory<WallpaperControllerClientImpl> weak_factory_{this}; base::WeakPtrFactory<WallpaperControllerClientImpl> storage_weak_factory_{ this};
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index dbbed5843..48a43a8 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -71,6 +71,7 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/ssl_status.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/geometry/rect.h" #if defined(OS_ANDROID) @@ -435,10 +436,9 @@ ->AddInfoBar(CreateSaveCardInfoBarMobile( std::make_unique<AutofillSaveCardInfoBarDelegateMobile>( /*upload=*/false, options, card, LegalMessageLines(), - /*upload_save_card_callback=*/ AutofillClient::UploadSaveCardPromptCallback(), - /*local_save_card_callback=*/std::move(callback), GetPrefs()), - absl::nullopt)); + /*local_save_card_callback=*/std::move(callback), GetPrefs(), + AccountInfo()))); #else // Do lazy initialization of SaveCardBubbleControllerImpl. SaveCardBubbleControllerImpl::CreateForWebContents(web_contents()); @@ -455,18 +455,11 @@ UploadSaveCardPromptCallback callback) { #if defined(OS_ANDROID) DCHECK(options.show_prompt); - std::unique_ptr<AutofillSaveCardInfoBarDelegateMobile> - save_card_info_bar_delegate_mobile = - std::make_unique<AutofillSaveCardInfoBarDelegateMobile>( - /*upload=*/true, options, card, legal_message_lines, - /*upload_save_card_callback=*/std::move(callback), - /*local_save_card_callback=*/ - AutofillClient::LocalSaveCardPromptCallback(), GetPrefs()); bool sync_disabled_wallet_transport_enabled = GetPersonalDataManager()->GetSyncSigninState() == autofill::AutofillSyncSigninState::kSignedInAndWalletSyncTransportEnabled; - absl::optional<AccountInfo> account_info; + AccountInfo account_info; // AccountInfo data should be passed down only if the following conditions are // satisfied: // 1) Sync is off or the @@ -481,11 +474,18 @@ base::FeatureList::IsEnabled( features:: kAutofillEnableInfoBarAccountIndicationFooterForSingleAccountUsers))) { - account_info = GetAccountInfo(); + signin::IdentityManager* identity_manager = + IdentityManagerFactory::GetForProfile(GetProfile()); + account_info = identity_manager->FindExtendedAccountInfo( + identity_manager->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin)); } infobars::ContentInfoBarManager::FromWebContents(web_contents()) ->AddInfoBar(CreateSaveCardInfoBarMobile( - std::move(save_card_info_bar_delegate_mobile), account_info)); + std::make_unique<AutofillSaveCardInfoBarDelegateMobile>( + /*upload=*/true, options, card, legal_message_lines, + /*upload_save_card_callback=*/std::move(callback), + AutofillClient::LocalSaveCardPromptCallback(), GetPrefs(), + account_info))); #else // Do lazy initialization of SaveCardBubbleControllerImpl. SaveCardBubbleControllerImpl::CreateForWebContents(web_contents()); @@ -851,16 +851,6 @@ return Profile::FromBrowserContext(web_contents()->GetBrowserContext()); } -absl::optional<AccountInfo> ChromeAutofillClient::GetAccountInfo() { - signin::IdentityManager* identity_manager = - IdentityManagerFactory::GetForProfile(GetProfile()); - CoreAccountId account_id = - identity_manager->GetPrimaryAccountId(signin::ConsentLevel::kSignin); - return identity_manager - ->FindExtendedAccountInfoForAccountWithRefreshTokenByAccountId( - account_id); -} - bool ChromeAutofillClient::IsMultipleAccountUser() { signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(GetProfile());
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h index 013a18e3..1ca15fc 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.h +++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
@@ -24,7 +24,6 @@ #include "components/signin/public/identity_manager/account_info.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" -#include "third_party/abseil-cpp/absl/types/optional.h" #if defined(OS_ANDROID) #include "chrome/browser/autofill/android/save_address_profile_flow_manager.h" @@ -190,7 +189,6 @@ explicit ChromeAutofillClient(content::WebContents* web_contents); Profile* GetProfile() const; - absl::optional<AccountInfo> GetAccountInfo(); bool IsMultipleAccountUser(); std::u16string GetAccountHolderName();
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.h b/chrome/browser/ui/cocoa/history_menu_bridge.h index 8e477e1..3754c47 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.h +++ b/chrome/browser/ui/cocoa/history_menu_bridge.h
@@ -115,12 +115,15 @@ // to have the global IDC view tags. enum Tags { kRecentlyClosedSeparator = 400, // Item before recently closed section. - kRecentlyClosedTitle = 401, // Title of recently closed section. - kRecentlyClosed = 420, // Used for items in the recently closed section. - kVisitedSeparator = 440, // Separator before visited section. - kVisitedTitle = 441, // Title of the visited section. - kVisited = 460, // Used for all entries in the visited section. - kShowFullSeparator = 480 // Separator after the visited section. + kRecentlyClosedTitle = 401, // Title of recently closed section. + kRecentlyClosed = 420, // Used for items in the recently closed section. + kVisitedSeparator = 440, // Separator before visited section. + kVisitedTitle = 441, // Title of the visited section. + kVisited = 460, // Used for all entries in the visited section. + kShowFullSeparator = 480, // Separator after the visited section. + kIncognitoDisclaimerSeparator = + 500, // Separator before Incognito disclaimer text. + kIncognitoDisclaimerLabel = 501 // Label for Incognito disclaimer text. }; explicit HistoryMenuBridge(Profile* profile); @@ -271,6 +274,13 @@ history::HistoryServiceObserver> history_service_observation_{this}; + // Changes the visibility of the menu items depend on the current profile + // type. + void SetVisibilityOfMenuItems(); + + // Returns if the given menu item should be visible for the current profile. + bool ShouldMenuItemBeVisible(NSMenuItem* item); + DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge); };
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.mm b/chrome/browser/ui/cocoa/history_menu_bridge.mm index b68fca5f..d00e10e 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.mm +++ b/chrome/browser/ui/cocoa/history_menu_bridge.mm
@@ -70,9 +70,30 @@ tab_restore_service_(NULL), create_in_progress_(false), need_recreate_(false) { + // Set the static icons in the menu. + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); + NSMenuItem* full_history_item = [HistoryMenu() itemWithTag:IDC_SHOW_HISTORY]; + [full_history_item + setImage:rb.GetNativeImageNamed(IDR_HISTORY_FAVICON).ToNSImage()]; + NSMenuItem* incognito_disclaimer_item = + [HistoryMenu() itemWithTag:kIncognitoDisclaimerLabel]; + [incognito_disclaimer_item + setImage:rb.GetNativeImageNamed(IDR_INFO_FAVICON).ToNSImage()]; + // If we don't have a profile, do not bother initializing our data sources. // This shouldn't happen except in unit tests. if (profile_) { + // Set the visibility of menu items according to profile type. + // "Recently Visited", "Recently Closed" and "Show Full History" sections + // should be hidden for incognito mode, while incognito disclaimer should be + // visible. + SetVisibilityOfMenuItems(); + + // If the profile is incognito, no need to set history and tab restore + // services. + if (profile_->IsOffTheRecord()) + return; + // Check to see if the history service is ready. Because it loads async, it // may not be ready when the Bridge is created. If this happens, register // for a notification that tells us the HistoryService is ready. @@ -99,14 +120,9 @@ } } - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); default_favicon_.reset( [rb.GetNativeImageNamed(IDR_DEFAULT_FAVICON).ToNSImage() retain]); - // Set the static icons in the menu. - NSMenuItem* item = [HistoryMenu() itemWithTag:IDC_SHOW_HISTORY]; - [item setImage:rb.GetNativeImageNamed(IDR_HISTORY_FAVICON).ToNSImage()]; - [HistoryMenu() setDelegate:controller_]; } @@ -409,8 +425,11 @@ // If the menu is currently open, wait until it closes. // If the history service got torn down while our async task was queued, don't // do anything - the browser is exiting anyway. - if (create_in_progress_ || is_menu_open_ || !history_service_) + // If the current profile is incognito, do not fill the menu. + if (create_in_progress_ || is_menu_open_ || !history_service_ || + profile_->IsOffTheRecord()) { return; + } create_in_progress_ = true; need_recreate_ = false; @@ -545,3 +564,39 @@ if (history_service_ == history_service) history_service_ = nullptr; } + +void HistoryMenuBridge::SetVisibilityOfMenuItems() { + NSMenu* menu = HistoryMenu(); + for (int i = 0; i < [menu numberOfItems]; i++) { + NSMenuItem* item = [menu itemAtIndex:i]; + [item setHidden:!ShouldMenuItemBeVisible(item)]; + } +} + +bool HistoryMenuBridge::ShouldMenuItemBeVisible(NSMenuItem* item) { + int tag = [item tag]; + switch (tag) { + // The common menu items for both profiles + case IDC_HOME: + case IDC_BACK: + case IDC_FORWARD: + return true; + // The original profile specific menu items + case kRecentlyClosedSeparator: + case kRecentlyClosedTitle: + case kVisitedSeparator: + case kVisitedTitle: + case kShowFullSeparator: + case IDC_SHOW_HISTORY: + return !profile_->IsOffTheRecord(); + // The incognito profile specific menu items + case kIncognitoDisclaimerSeparator: + case kIncognitoDisclaimerLabel: + return profile_->IsOffTheRecord(); + } + + // When a new menu item is introduced, it should be added to one of the cases + // above. + NOTREACHED(); + return false; +}
diff --git a/chrome/browser/ui/cocoa/main_menu_builder.h b/chrome/browser/ui/cocoa/main_menu_builder.h index d2d2c44..eac5a684 100644 --- a/chrome/browser/ui/cocoa/main_menu_builder.h +++ b/chrome/browser/ui/cocoa/main_menu_builder.h
@@ -119,6 +119,12 @@ return *this; } + // Hide this item from the menu if |condition| is true. + MenuItemBuilder& set_hidden(bool condition) { + is_hidden_ |= condition; + return *this; + } + // Builds a NSMenuItem instance from the properties set on the Builder. base::scoped_nsobject<NSMenuItem> Build() const; @@ -142,6 +148,8 @@ absl::optional<std::vector<MenuItemBuilder>> submenu_; + bool is_hidden_ = false; + // Copy and assign allowed. };
diff --git a/chrome/browser/ui/cocoa/main_menu_builder.mm b/chrome/browser/ui/cocoa/main_menu_builder.mm index e5f7aef..7270fa1 100644 --- a/chrome/browser/ui/cocoa/main_menu_builder.mm +++ b/chrome/browser/ui/cocoa/main_menu_builder.mm
@@ -326,6 +326,15 @@ Item(IDS_HISTORY_SHOWFULLHISTORY_LINK) .command_id(IDC_SHOW_HISTORY) .remove_if(is_pwa), + Item() + .tag(HistoryMenuBridge::kIncognitoDisclaimerSeparator) + .is_separator() + .set_hidden(true) + .remove_if(is_pwa), + Item(IDS_HISTORY_INCOGNITO_DISCLAIMER_MAC) + .tag(HistoryMenuBridge::kIncognitoDisclaimerLabel) + .set_hidden(true) + .remove_if(is_pwa), }) .Build(); return item; @@ -524,6 +533,7 @@ if (tag_) { [item setTag:tag_]; } + [item setHidden:is_hidden_]; return item; } @@ -556,6 +566,7 @@ [item setTag:tag_]; [item setKeyEquivalentModifierMask:key_equivalent_flags]; [item setAlternate:is_alternate_]; + [item setHidden:is_hidden_]; if (submenu_.has_value()) { base::scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:title]);
diff --git a/chrome/browser/ui/cocoa/main_menu_builder_unittest.mm b/chrome/browser/ui/cocoa/main_menu_builder_unittest.mm index e87cb12..ae31bf40 100644 --- a/chrome/browser/ui/cocoa/main_menu_builder_unittest.mm +++ b/chrome/browser/ui/cocoa/main_menu_builder_unittest.mm
@@ -112,4 +112,10 @@ EXPECT_NSEQ(l10n_util::GetNSStringWithFixup(IDS_NEW_TAB_MAC), [item title]); } +TEST(MainMenuBuilderTest, Hidden) { + base::scoped_nsobject<NSMenuItem> item = + MenuItemBuilder(IDS_NEW_TAB_MAC).set_hidden(true).Build(); + EXPECT_EQ(true, [item isHidden]); +} + } // namespace
diff --git a/chrome/browser/ui/thumbnails/thumbnail_image.h b/chrome/browser/ui/thumbnails/thumbnail_image.h index edf845d..1246e70d 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_image.h +++ b/chrome/browser/ui/thumbnails/thumbnail_image.h
@@ -11,7 +11,6 @@ #include <vector> #include "base/callback.h" -#include "base/containers/flat_set.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h"
diff --git a/chrome/browser/ui/thumbnails/thumbnail_scheduler_impl.h b/chrome/browser/ui/thumbnails/thumbnail_scheduler_impl.h index 379d3feca..f78773c 100644 --- a/chrome/browser/ui/thumbnails/thumbnail_scheduler_impl.h +++ b/chrome/browser/ui/thumbnails/thumbnail_scheduler_impl.h
@@ -8,7 +8,6 @@ #include <deque> #include <map> -#include "base/containers/flat_set.h" #include "base/containers/linked_list.h" #include "chrome/browser/ui/thumbnails/thumbnail_capture_driver.h" #include "chrome/browser/ui/thumbnails/thumbnail_readiness_tracker.h"
diff --git a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc index 0d4ed61..0a9060e 100644 --- a/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc +++ b/chrome/browser/ui/views/constrained_web_dialog_delegate_views.cc
@@ -135,8 +135,6 @@ const content::NativeWebKeyboardEvent& event) override { // Forward shortcut keys in dialog to our initiator's delegate. // http://crbug.com/104586 - // Disabled on Mac due to http://crbug.com/112173 -#if !defined(OS_MAC) if (!initiator_observer_->web_contents()) return false; @@ -145,9 +143,6 @@ return false; return delegate->HandleKeyboardEvent(initiator_observer_->web_contents(), event); -#else - return false; -#endif } void ResizeDueToAutoResize(content::WebContents* source,
diff --git a/chrome/browser/ui/views/frame/browser_root_view.cc b/chrome/browser/ui/views/frame/browser_root_view.cc index 92dced6..6e2d0988 100644 --- a/chrome/browser/ui/views/frame/browser_root_view.cc +++ b/chrome/browser/ui/views/frame/browser_root_view.cc
@@ -5,10 +5,12 @@ #include "chrome/browser/ui/views/frame/browser_root_view.h" #include <cmath> +#include <memory> #include <string> #include <utility> #include "base/bind.h" +#include "base/callback_helpers.h" #include "base/metrics/user_metrics.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" @@ -42,6 +44,7 @@ #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/compositor/paint_recorder.h" #include "ui/gfx/scoped_canvas.h" +#include "ui/views/view.h" #if BUILDFLAG(ENABLE_PLUGINS) #include "content/public/browser/plugin_service.h" @@ -218,48 +221,22 @@ if (!drop_info_) return DragOperation::kNone; - // Ensure we call HandleDragExited() on |drop_info_|'s |target| when this - // function returns. - std::unique_ptr<DropInfo> drop_info = std::move(drop_info_); + auto cb = GetDropCallback(event); + ui::mojom::DragOperation output_drag_op = ui::mojom::DragOperation::kNone; + std::move(cb).Run(event, output_drag_op); - // Extract the URL and create a new ui::OSExchangeData containing the URL. We - // do this as the TabStrip doesn't know about the autocomplete edit and needs - // to know about it to handle 'paste and go'. - GURL url; - if (!GetURLForDrop(event, &url)) { - // The url isn't valid. Use the paste and go url. - GetPasteAndGoURL(event.data(), &url); - } + return output_drag_op; +} - // Do nothing if the file was unsupported, the URL is invalid, or this is a - // javascript: URL (prevent self-xss). The URL may have been changed after - // |drop_info| was created. - if (!drop_info->file_supported || !url.is_valid() || - url.SchemeIs(url::kJavaScriptScheme)) - return DragOperation::kNone; +views::View::DropCallback BrowserRootView::GetDropCallback( + const ui::DropTargetEvent& event) { + if (!drop_info_) + return base::DoNothing(); - Browser* const browser = browser_view_->browser(); - TabStripModel* const model = browser->tab_strip_model(); - - NavigateParams params(browser_view_->browser(), url, - ui::PAGE_TRANSITION_LINK); - params.tabstrip_index = drop_info->index->value; - if (drop_info->index->drop_before) { - base::RecordAction(UserMetricsAction("Tab_DropURLBetweenTabs")); - params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB; - if (drop_info->index->drop_in_group && - drop_info->index->value < model->count()) - params.group = model->GetTabGroupForTab(drop_info->index->value); - } else { - base::RecordAction(UserMetricsAction("Tab_DropURLOnTab")); - params.disposition = WindowOpenDisposition::CURRENT_TAB; - params.source_contents = model->GetWebContentsAt(drop_info->index->value); - } - - params.window_action = NavigateParams::SHOW_WINDOW; - Navigate(¶ms); - - return GetDropEffect(event, url); + // Moving `drop_info_` ensures we call HandleDragExited() on |drop_info_|'s + // |target| when this function returns. + return base::BindOnce(&BrowserRootView::NavigateToDropUrl, + weak_ptr_factory_.GetWeakPtr(), std::move(drop_info_)); } bool BrowserRootView::OnMouseWheel(const ui::MouseWheelEvent& event) { @@ -445,5 +422,60 @@ return true; } +void BrowserRootView::NavigateToDropUrl( + std::unique_ptr<DropInfo> drop_info, + const ui::DropTargetEvent& event, + ui::mojom::DragOperation& output_drag_op) { + DCHECK(drop_info); + + Browser* const browser = browser_view_->browser(); + TabStripModel* const model = browser->tab_strip_model(); + + // If the browser window is not visible, it's about to be destroyed. + if (!browser->window()->IsVisible() || model->empty()) + return; + + if (drop_info->index->value > model->GetTabCount()) + return; + + // Extract the URL and create a new ui::OSExchangeData containing the URL. We + // do this as the TabStrip doesn't know about the autocomplete edit and needs + // to know about it to handle 'paste and go'. + GURL url; + if (!GetURLForDrop(event, &url)) { + // The url isn't valid. Use the paste and go url. + GetPasteAndGoURL(event.data(), &url); + } + + // Do nothing if the file was unsupported, the URL is invalid, or this is a + // javascript: URL (prevent self-xss). The URL may have been changed after + // |drop_info| was created. + if (!drop_info->file_supported || !url.is_valid() || + url.SchemeIs(url::kJavaScriptScheme)) { + output_drag_op = DragOperation::kNone; + return; + } + + NavigateParams params(browser_view_->browser(), url, + ui::PAGE_TRANSITION_LINK); + params.tabstrip_index = drop_info->index->value; + if (drop_info->index->drop_before) { + base::RecordAction(base::UserMetricsAction("Tab_DropURLBetweenTabs")); + params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB; + if (drop_info->index->drop_in_group && + drop_info->index->value < model->count()) + params.group = model->GetTabGroupForTab(drop_info->index->value); + } else { + base::RecordAction(base::UserMetricsAction("Tab_DropURLOnTab")); + params.disposition = WindowOpenDisposition::CURRENT_TAB; + params.source_contents = model->GetWebContentsAt(drop_info->index->value); + } + + params.window_action = NavigateParams::SHOW_WINDOW; + Navigate(¶ms); + + output_drag_op = GetDropEffect(event, url); +} + BEGIN_METADATA(BrowserRootView, views::internal::RootView) END_METADATA
diff --git a/chrome/browser/ui/views/frame/browser_root_view.h b/chrome/browser/ui/views/frame/browser_root_view.h index f3d7ef9..4c25055 100644 --- a/chrome/browser/ui/views/frame/browser_root_view.h +++ b/chrome/browser/ui/views/frame/browser_root_view.h
@@ -78,6 +78,7 @@ void OnDragExited() override; ui::mojom::DragOperation OnPerformDrop( const ui::DropTargetEvent& event) override; + DropCallback GetDropCallback(const ui::DropTargetEvent& event) override; bool OnMouseWheel(const ui::MouseWheelEvent& event) override; void OnMouseExited(const ui::MouseEvent& event) override; @@ -128,6 +129,11 @@ // desired destination. bool GetPasteAndGoURL(const ui::OSExchangeData& data, GURL* url); + // Navigates to the dropped URL. + void NavigateToDropUrl(std::unique_ptr<DropInfo> drop_info, + const ui::DropTargetEvent& event, + ui::mojom::DragOperation& output_drag_op); + // The BrowserView. BrowserView* browser_view_ = nullptr;
diff --git a/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc b/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc index f6e874b4..51e4c885 100644 --- a/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc +++ b/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc
@@ -66,3 +66,24 @@ // the target. CloseBrowserSynchronously(browser()); } + +// Drop is performed when drop callback is run. +IN_PROC_BROWSER_TEST_F(BrowserRootViewBrowserTest, RunDropCallback) { + ui::OSExchangeData data; + data.SetURL(GURL("http://www.chromium.org/"), std::u16string()); + ui::DropTargetEvent event(data, gfx::PointF(), gfx::PointF(), + ui::DragDropTypes::DRAG_COPY); + + auto* tab_strip_model = browser()->tab_strip_model(); + + EXPECT_EQ(tab_strip_model->count(), 1); + + BrowserRootView* root_view = browser_root_view(); + root_view->OnDragUpdated(event); + ui::mojom::DragOperation output_drag_op = ui::mojom::DragOperation::kNone; + auto cb = root_view->GetDropCallback(event); + std::move(cb).Run(event, output_drag_op); + + EXPECT_EQ(output_drag_op, ui::mojom::DragOperation::kCopy); + EXPECT_EQ(tab_strip_model->count(), 2); +}
diff --git a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc index a666225d..69cd540 100644 --- a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc +++ b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc
@@ -354,6 +354,14 @@ } } +bool PaymentHandlerWebFlowViewController::HandleKeyboardEvent( + content::WebContents* source, + const content::NativeWebKeyboardEvent& event) { + return content_view() && content_view()->GetFocusManager() && + unhandled_keyboard_event_handler_.HandleKeyboardEvent( + event, content_view()->GetFocusManager()); +} + void PaymentHandlerWebFlowViewController::DidFinishNavigation( content::NavigationHandle* navigation_handle) { if (!is_active())
diff --git a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.h b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.h index ac0f0011..4e7cf8f 100644 --- a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.h +++ b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.h
@@ -13,6 +13,7 @@ #include "content/public/browser/web_contents_observer.h" #include "ui/base/window_open_disposition.h" #include "ui/gfx/geometry/rect.h" +#include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" #include "url/gurl.h" class Profile; @@ -78,6 +79,9 @@ const gfx::Rect& initial_rect, bool user_gesture, bool* was_blocked) override; + bool HandleKeyboardEvent( + content::WebContents* source, + const content::NativeWebKeyboardEvent& event) override; // content::WebContentsObserver: void DidStartNavigation( @@ -98,6 +102,9 @@ // Used to present modal dialog triggered from the payment handler web view, // e.g. an authenticator dialog. PaymentHandlerModalDialogManagerDelegate dialog_manager_delegate_; + // A handler to handle unhandled keyboard messages coming back from the + // renderer process. + views::UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_; }; } // namespace payments
diff --git a/chrome/browser/ui/views/payments/payment_request_sheet_controller.h b/chrome/browser/ui/views/payments/payment_request_sheet_controller.h index bdc9cb7..740151f 100644 --- a/chrome/browser/ui/views/payments/payment_request_sheet_controller.h +++ b/chrome/browser/ui/views/payments/payment_request_sheet_controller.h
@@ -159,6 +159,8 @@ return header_content_separator_container_; } + views::View* content_view() { return content_view_; } + // Returns whether the controller should be controlling the UI. bool is_active() const { return is_active_; }
diff --git a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.cc b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.cc index eeef45b..70ab65a 100644 --- a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.cc
@@ -27,17 +27,27 @@ return true; } -void ShowBubble(Profile* profile, views::View* anchor_view, bool should_show) { - if (should_show) { - ProfileCustomizationBubbleView::CreateBubble(profile, anchor_view); - return; +void ShowBubble(Profile* profile, + views::View* anchor_view, + ProfileCustomizationBubbleSyncController::Outcome outcome) { + switch (outcome) { + case ProfileCustomizationBubbleSyncController::Outcome::kAbort: + return; + case ProfileCustomizationBubbleSyncController::Outcome::kShowBubble: + ProfileCustomizationBubbleView::CreateBubble(profile, anchor_view); + return; + case ProfileCustomizationBubbleSyncController::Outcome::kSkipBubble: + // If the customization bubble is not shown, show the IPH now. Otherwise + // the IPH will be shown after the customization bubble. + if (!anchor_view->GetWidget()) + return; + gfx::NativeWindow window = anchor_view->GetWidget()->GetNativeWindow(); + if (!window || !BrowserView::GetBrowserViewForNativeWindow(window)) + return; + BrowserView::GetBrowserViewForNativeWindow(window) + ->MaybeShowProfileSwitchIPH(); + return; } - - // If the customization bubble is not shown, show the IPH now. Otherwise the - // IPH will be shown after the customization bubble. - BrowserView::GetBrowserViewForNativeWindow( - anchor_view->GetWidget()->GetNativeWindow()) - ->MaybeShowProfileSwitchIPH(); } } // namespace @@ -47,9 +57,15 @@ ApplyColorAndShowBubbleWhenNoValueSynced(Profile* profile, views::View* anchor_view, SkColor suggested_profile_color) { + syncer::SyncService* sync_service = + ProfileSyncServiceFactory::GetForProfile(profile); + // TODO(crbug.com/1213112): A speculative fix, remove if not functional or not + // needed. + if (!profile || !anchor_view || !sync_service) + return; // The controller is owned by itself. auto* controller = new ProfileCustomizationBubbleSyncController( - ProfileSyncServiceFactory::GetForProfile(profile), + profile, anchor_view, sync_service, ThemeServiceFactory::GetForProfile(profile), base::BindOnce(&ShowBubble, profile, anchor_view), suggested_profile_color); @@ -59,14 +75,16 @@ // static void ProfileCustomizationBubbleSyncController:: ApplyColorAndShowBubbleWhenNoValueSyncedForTesting( + Profile* profile, + views::View* anchor_view, syncer::SyncService* sync_service, ThemeService* theme_service, - base::OnceCallback<void(bool)> show_bubble_callback, + ShowBubbleCallback show_bubble_callback, SkColor suggested_profile_color) { // The controller is owned by itself. auto* controller = new ProfileCustomizationBubbleSyncController( - sync_service, theme_service, std::move(show_bubble_callback), - suggested_profile_color); + profile, anchor_view, sync_service, theme_service, + std::move(show_bubble_callback), suggested_profile_color); controller->Init(); } @@ -80,18 +98,25 @@ ProfileCustomizationBubbleSyncController:: ProfileCustomizationBubbleSyncController( + Profile* profile, + views::View* anchor_view, syncer::SyncService* sync_service, ThemeService* theme_service, - base::OnceCallback<void(bool)> show_bubble_callback, + ShowBubbleCallback show_bubble_callback, SkColor suggested_profile_color) : sync_service_(sync_service), theme_service_(theme_service), show_bubble_callback_(std::move(show_bubble_callback)), suggested_profile_color_(suggested_profile_color), observation_start_time_(base::TimeTicks::Now()) { - DCHECK(sync_service_); - DCHECK(theme_service_); - DCHECK(show_bubble_callback_); + CHECK(profile); + CHECK(anchor_view); + CHECK(sync_service_); + CHECK(theme_service_); + CHECK(show_bubble_callback_); + + profile_observation_.Observe(profile); + view_observation_.Observe(anchor_view); } ProfileCustomizationBubbleSyncController:: @@ -148,15 +173,31 @@ ApplyDefaultColorAndShowBubble(); } +void ProfileCustomizationBubbleSyncController::OnProfileWillBeDestroyed( + Profile* profile) { + // This gets called before any keyed services for the profile are destroyed. + Abort(); // deletes this +} + +void ProfileCustomizationBubbleSyncController::OnViewIsDeleting( + views::View* observed_view) { + Abort(); // deletes this +} + void ProfileCustomizationBubbleSyncController:: ApplyDefaultColorAndShowBubble() { theme_service_->BuildAutogeneratedThemeFromColor(suggested_profile_color_); - std::move(show_bubble_callback_).Run(true); + std::move(show_bubble_callback_).Run(Outcome::kShowBubble); delete this; } void ProfileCustomizationBubbleSyncController::SkipBubble() { - std::move(show_bubble_callback_).Run(false); + std::move(show_bubble_callback_).Run(Outcome::kSkipBubble); + delete this; +} + +void ProfileCustomizationBubbleSyncController::Abort() { + std::move(show_bubble_callback_).Run(Outcome::kAbort); delete this; } @@ -165,10 +206,15 @@ void ApplyProfileColorAndShowCustomizationBubbleWhenNoValueSynced( Browser* browser, SkColor suggested_profile_color) { + if (!browser) + return; + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); + if (!browser_view || !browser_view->toolbar_button_provider()) + return; views::View* anchor_view = BrowserView::GetBrowserViewForBrowser(browser) ->toolbar_button_provider() ->GetAvatarToolbarButton(); - DCHECK(anchor_view); + CHECK(anchor_view); ProfileCustomizationBubbleSyncController:: ApplyColorAndShowBubbleWhenNoValueSynced(browser->profile(), anchor_view, suggested_profile_color);
diff --git a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h index f4d69b49..ccb69105 100644 --- a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h +++ b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h
@@ -8,10 +8,14 @@ #include "base/callback.h" #include "base/scoped_observation.h" #include "base/time/time.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_observer.h" #include "chrome/browser/themes/theme_syncable_service.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_service_observer.h" #include "third_party/skia/include/core/SkColor.h" +#include "ui/views/view.h" +#include "ui/views/view_observer.h" namespace views { class View; @@ -23,8 +27,18 @@ // bubble. Owns itself. class ProfileCustomizationBubbleSyncController : public syncer::SyncServiceObserver, - public ThemeSyncableService::Observer { + public ThemeSyncableService::Observer, + public ProfileObserver, + public views::ViewObserver { public: + enum class Outcome { + kShowBubble, + kSkipBubble, + // The browser is being destroyed. + kAbort + }; + using ShowBubbleCallback = base::OnceCallback<void(Outcome outcome)>; + ~ProfileCustomizationBubbleSyncController() override; ProfileCustomizationBubbleSyncController( @@ -47,9 +61,11 @@ // A version of ApplyColorAndShowBubbleWhenNoValueSynced() that allows simpler // mocking. static void ApplyColorAndShowBubbleWhenNoValueSyncedForTesting( + Profile* profile, + views::View* anchor_view, syncer::SyncService* sync_service, ThemeService* theme_service, - base::OnceCallback<void(bool)> show_bubble_callback, + ShowBubbleCallback show_bubble_callback, SkColor suggested_profile_color); // Returns whether theme sync can start (i.e. is not disabled by policy, @@ -58,9 +74,11 @@ private: ProfileCustomizationBubbleSyncController( + Profile* profile, + views::View* anchor_view, syncer::SyncService* sync_service, ThemeService* theme_service, - base::OnceCallback<void(bool)> show_bubble_callback, + ShowBubbleCallback show_bubble_callback, SkColor suggested_profile_color); // SyncServiceObserver: @@ -69,20 +87,30 @@ // ThemeSyncableService::Observer: void OnThemeSyncStarted(ThemeSyncableService::ThemeSyncState state) override; + // ProfileObserver: + void OnProfileWillBeDestroyed(Profile* profile) override; + + // views::ViewObserver: + void OnViewIsDeleting(views::View* observed_view) override; + // This function may delete the object. void Init(); // Functions that finalize the control logic by either showing or skipping the - // bubble and deleting itself. + // bubble (or aborting completely) and deleting itself. void ApplyDefaultColorAndShowBubble(); void SkipBubble(); + void Abort(); syncer::SyncService* const sync_service_; ThemeService* const theme_service_; - base::OnceCallback<void(bool)> show_bubble_callback_; + ShowBubbleCallback show_bubble_callback_; SkColor const suggested_profile_color_; base::TimeTicks observation_start_time_; + base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this}; + base::ScopedObservation<views::View, views::ViewObserver> view_observation_{ + this}; base::ScopedObservation<syncer::SyncService, syncer::SyncServiceObserver> sync_observation_{this}; base::ScopedObservation<ThemeSyncableService, ThemeSyncableService::Observer>
diff --git a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller_unittest.cc b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller_unittest.cc index b3f38e2..b989793 100644 --- a/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller_unittest.cc +++ b/chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller_unittest.cc
@@ -8,8 +8,11 @@ #include "base/test/mock_callback.h" #include "chrome/browser/themes/theme_service.h" #include "chrome/browser/themes/theme_syncable_service.h" +#include "chrome/test/base/testing_browser_process.h" +#include "chrome/test/base/testing_profile_manager.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/test_sync_service.h" +#include "content/public/test/browser_task_environment.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkColor.h" @@ -18,6 +21,7 @@ constexpr SkColor kNewProfileColor = SK_ColorRED; constexpr SkColor kSyncedProfileColor = SK_ColorBLUE; +const char kTestingProfileName[] = "testing_profile"; class FakeThemeService : public ThemeService { public: @@ -61,18 +65,30 @@ class ProfileCustomizationBubbleSyncControllerTest : public testing::Test { public: + using Outcome = ProfileCustomizationBubbleSyncController::Outcome; ProfileCustomizationBubbleSyncControllerTest() - : fake_theme_service_(theme_helper_), - theme_syncable_service_(nullptr, &fake_theme_service_) { + : testing_profile_manager_(TestingBrowserProcess::GetGlobal()), + fake_theme_service_(theme_helper_), + theme_syncable_service_(nullptr, &fake_theme_service_) {} + + void SetUp() override { fake_theme_service_.SetThemeSyncableService(&theme_syncable_service_); + + ASSERT_TRUE(testing_profile_manager_.SetUp()); + testing_profile_ = + testing_profile_manager_.CreateTestingProfile(kTestingProfileName); + + testing_view_ = std::make_unique<views::View>(); } void ApplyColorAndShowBubbleWhenNoValueSynced( - base::OnceCallback<void(bool)> show_bubble_callback) { + ProfileCustomizationBubbleSyncController::ShowBubbleCallback + show_bubble_callback) { ProfileCustomizationBubbleSyncController:: ApplyColorAndShowBubbleWhenNoValueSyncedForTesting( - &test_sync_service_, &fake_theme_service_, - std::move(show_bubble_callback), kNewProfileColor); + testing_profile_, testing_view_.get(), &test_sync_service_, + &fake_theme_service_, std::move(show_bubble_callback), + kNewProfileColor); } void SetSyncedProfileColor() { @@ -83,6 +99,12 @@ fake_theme_service_.DoSetTheme(nullptr, false); } + void DeleteTestingProfile() { + testing_profile_manager_.DeleteTestingProfile(kTestingProfileName); + } + + void DeleteTestingView() { testing_view_.reset(); } + void NotifyOnSyncStarted(bool waiting_for_extension_installation = false) { theme_syncable_service_.NotifyOnSyncStartedForTesting( waiting_for_extension_installation @@ -92,10 +114,14 @@ } protected: + content::BrowserTaskEnvironment task_environment_; syncer::TestSyncService test_sync_service_; base::HistogramTester histogram_tester_; private: + Profile* testing_profile_ = nullptr; + TestingProfileManager testing_profile_manager_; + std::unique_ptr<views::View> testing_view_; FakeThemeService fake_theme_service_; ThemeSyncableService theme_syncable_service_; ThemeHelper theme_helper_; @@ -103,8 +129,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldShowWhenSyncGetsDefaultTheme) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(true)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kShowBubble)); ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); NotifyOnSyncStarted(); @@ -113,8 +139,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldShowWhenSyncDisabled) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(true)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kShowBubble)); test_sync_service_.SetDisableReasons( syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY); @@ -124,8 +150,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldNotShowWhenSyncGetsCustomColor) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(false)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kSkipBubble)); ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); SetSyncedProfileColor(); @@ -135,8 +161,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldNotShowWhenSyncGetsCustomTheme) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(false)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kSkipBubble)); ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); SetSyncedProfileTheme(); @@ -146,8 +172,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldNotShowWhenSyncGetsCustomThemeToInstall) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(false)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kSkipBubble)); ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); NotifyOnSyncStarted(/*waiting_for_extension_installation=*/true); @@ -156,8 +182,8 @@ TEST_F(ProfileCustomizationBubbleSyncControllerTest, ShouldNotShowWhenSyncHasCustomPasshrase) { - base::MockCallback<base::OnceCallback<void(bool)>> show_bubble; - EXPECT_CALL(show_bubble, Run(false)); + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kSkipBubble)); test_sync_service_.SetPassphraseRequired(true); ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); @@ -165,4 +191,24 @@ histogram_tester_.ExpectTotalCount("Profile.SyncCustomizationBubbleDelay", 1); } +TEST_F(ProfileCustomizationBubbleSyncControllerTest, + ShouldNotShowWhenProfileGetsDeleted) { + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kAbort)); + + ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); + DeleteTestingProfile(); + histogram_tester_.ExpectTotalCount("Profile.SyncCustomizationBubbleDelay", 1); +} + +TEST_F(ProfileCustomizationBubbleSyncControllerTest, + ShouldNotShowWhenViewGetsDeleted) { + base::MockCallback<base::OnceCallback<void(Outcome)>> show_bubble; + EXPECT_CALL(show_bubble, Run(Outcome::kAbort)); + + ApplyColorAndShowBubbleWhenNoValueSynced(show_bubble.Get()); + DeleteTestingView(); + histogram_tester_.ExpectTotalCount("Profile.SyncCustomizationBubbleDelay", 1); +} + } // namespace
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc index 32151a5..4d5bc9a 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc
@@ -46,10 +46,14 @@ // color is enforced by policy or downloaded through Sync. An IPH is shown after // the bubble, or right away if the bubble cannot be shown. void ShowCustomizationBubble(SkColor new_profile_color, Browser* browser) { + if (!browser) + return; BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); + if (!browser_view || !browser_view->toolbar_button_provider()) + return; views::View* anchor_view = browser_view->toolbar_button_provider()->GetAvatarToolbarButton(); - DCHECK(anchor_view); + CHECK(anchor_view); // Don't show the customization bubble if a valid policy theme is set. if (ThemeServiceFactory::GetForProfile(browser->profile()) @@ -514,7 +518,7 @@ BrowserOpenedCallback finish_flow_callback, Profile* profile, Profile::CreateStatus profile_create_status) { - DCHECK_EQ(profile, profile_); + CHECK_EQ(profile, profile_); // Hide the flow window. This posts a task on the message loop to destroy the // window incl. this view. @@ -524,6 +528,6 @@ return; Browser* browser = chrome::FindLastActiveWithProfile(profile); - DCHECK(browser); + CHECK(browser); std::move(finish_flow_callback).Run(browser); }
diff --git a/chrome/browser/ui/webui/chromeos/login/testapi/oobe_test_api_browsertest.cc b/chrome/browser/ui/webui/chromeos/login/testapi/oobe_test_api_browsertest.cc index 866a9ef5..829c766 100644 --- a/chrome/browser/ui/webui/chromeos/login/testapi/oobe_test_api_browsertest.cc +++ b/chrome/browser/ui/webui/chromeos/login/testapi/oobe_test_api_browsertest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ash/constants/ash_switches.h" +#include "base/test/scoped_chromeos_version_info.h" #include "build/branding_buildflags.h" #include "chrome/browser/ash/login/test/hid_controller_mixin.h" #include "chrome/browser/ash/login/test/oobe_base_test.h" @@ -44,14 +45,13 @@ class OobeTestApiTestChromebox : public OobeTestApiTest { public: - OobeTestApiTestChromebox() { - base::SysInfo::SetChromeOSVersionInfoForTest("DEVICETYPE=CHROMEBASE", - base::Time::Now()); - } - ~OobeTestApiTestChromebox() override {} + OobeTestApiTestChromebox() = default; + ~OobeTestApiTestChromebox() override = default; protected: test::HIDControllerMixin hid_controller_{&mixin_host_}; + base::test::ScopedChromeOSVersionInfo version_{"DEVICETYPE=CHROMEBASE", + base::Time::Now()}; }; IN_PROC_BROWSER_TEST_F(OobeTestApiTestChromebox, HIDDetectionScreen) {
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_ui.cc b/chrome/browser/ui/webui/print_preview/print_preview_ui.cc index f98201b..bf8112d 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_ui.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_ui.cc
@@ -415,16 +415,12 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) source->AddBoolean( - "showPrinterStatus", - base::FeatureList::IsEnabled(chromeos::features::kPrinterStatus)); - source->AddBoolean( "showPrinterStatusInDialog", base::FeatureList::IsEnabled(chromeos::features::kPrinterStatusDialog)); source->AddBoolean( "printServerScaling", base::FeatureList::IsEnabled(chromeos::features::kPrintServerScaling)); #elif BUILDFLAG(IS_CHROMEOS_LACROS) - source->AddBoolean("showPrinterStatus", true); source->AddBoolean("showPrinterStatusInDialog", true); source->AddBoolean("printServerScaling", true); #endif
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.h b/chrome/browser/ui/webui/settings/site_settings_handler.h index 202503c..881025a 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler.h +++ b/chrome/browser/ui/webui/settings/site_settings_handler.h
@@ -10,7 +10,6 @@ #include <set> #include <string> -#include "base/containers/flat_set.h" #include "base/scoped_multi_source_observation.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/browsing_data/cookies_tree_model.h"
diff --git a/chrome/browser/web_applications/test/web_app_icon_test_utils.cc b/chrome/browser/web_applications/test/web_app_icon_test_utils.cc index 485f3c9..8adca91 100644 --- a/chrome/browser/web_applications/test/web_app_icon_test_utils.cc +++ b/chrome/browser/web_applications/test/web_app_icon_test_utils.cc
@@ -5,16 +5,19 @@ #include "chrome/browser/web_applications/test/web_app_icon_test_utils.h" #include <utility> -#include <vector> +#include "base/containers/contains.h" +#include "base/files/file_enumerator.h" +#include "base/files/file_path.h" +#include "base/strings/stringprintf.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/web_applications/components/web_app_icon_generator.h" #include "chrome/browser/web_applications/components/web_app_utils.h" #include "chrome/browser/web_applications/file_utils_wrapper.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/codec/png_codec.h" #include "ui/gfx/image/image_skia.h" +#include "url/gurl.h" namespace web_app { @@ -130,4 +133,45 @@ image_skia.GetRepresentation(scale).GetBitmap().getColor(0, 0)); } +blink::Manifest::ImageResource CreateSquareImageResource( + const GURL& src, + int size_px, + const std::vector<IconPurpose>& purposes) { + blink::Manifest::ImageResource r; + r.src = src; + r.type = u"image/png"; + r.sizes = {gfx::Size{size_px, size_px}}; + r.purpose = purposes; + return r; +} + +std::map<SquareSizePx, SkBitmap> ReadPngsFromDirectory( + FileUtilsWrapper* file_utils, + const base::FilePath& icons_dir) { + std::map<SquareSizePx, SkBitmap> pngs; + + base::FileEnumerator enumerator(icons_dir, true, base::FileEnumerator::FILES); + for (base::FilePath path = enumerator.Next(); !path.empty(); + path = enumerator.Next()) { + EXPECT_TRUE(path.MatchesExtension(FILE_PATH_LITERAL(".png"))); + + SkBitmap bitmap; + EXPECT_TRUE(ReadBitmap(file_utils, path, &bitmap)); + + EXPECT_EQ(bitmap.width(), bitmap.height()); + + const int size_px = bitmap.width(); + EXPECT_FALSE(base::Contains(pngs, size_px)); + + base::FilePath size_file_name; + size_file_name = + size_file_name.AppendASCII(base::StringPrintf("%i.png", size_px)); + EXPECT_EQ(size_file_name, path.BaseName()); + + pngs[size_px] = bitmap; + } + + return pngs; +} + } // namespace web_app
diff --git a/chrome/browser/web_applications/test/web_app_icon_test_utils.h b/chrome/browser/web_applications/test/web_app_icon_test_utils.h index 0156d47d..ef8343b 100644 --- a/chrome/browser/web_applications/test/web_app_icon_test_utils.h +++ b/chrome/browser/web_applications/test/web_app_icon_test_utils.h
@@ -6,12 +6,14 @@ #define CHROME_BROWSER_WEB_APPLICATIONS_TEST_WEB_APP_ICON_TEST_UTILS_H_ #include <map> +#include <vector> #include "base/containers/span.h" #include "base/files/file_path.h" #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_install_utils.h" #include "chrome/browser/web_applications/components/web_application_info.h" +#include "third_party/blink/public/common/manifest/manifest.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkColor.h" @@ -45,6 +47,7 @@ base::FilePath GetAppIconsMaskableDir(Profile* profile, const AppId& app_id); +// Performs blocking IO and decompression. bool ReadBitmap(FileUtilsWrapper* utils, const base::FilePath& file_path, SkBitmap* bitmap); @@ -59,6 +62,16 @@ SquareSizePx size_px, SkColor color); +blink::Manifest::ImageResource CreateSquareImageResource( + const GURL& src, + int size_px, + const std::vector<IconPurpose>& purposes); + +// Performs blocking IO and decompression. +std::map<SquareSizePx, SkBitmap> ReadPngsFromDirectory( + FileUtilsWrapper* file_utils, + const base::FilePath& icons_dir); + } // namespace web_app #endif // CHROME_BROWSER_WEB_APPLICATIONS_TEST_WEB_APP_ICON_TEST_UTILS_H_
diff --git a/chrome/browser/web_applications/web_app_install_finalizer.cc b/chrome/browser/web_applications/web_app_install_finalizer.cc index 6d1d111..da9efa8 100644 --- a/chrome/browser/web_applications/web_app_install_finalizer.cc +++ b/chrome/browser/web_applications/web_app_install_finalizer.cc
@@ -520,11 +520,9 @@ IsFileHandlerPermissionBlocked(web_app->scope())); AppId app_id = web_app->app_id(); - IconBitmaps icon_bitmaps; - icon_bitmaps.any = web_app_info.icon_bitmaps.any; - icon_bitmaps.maskable = web_app_info.icon_bitmaps.maskable; + icon_manager_->WriteData( - std::move(app_id), std::move(icon_bitmaps), + std::move(app_id), web_app_info.icon_bitmaps, base::BindOnce(&WebAppInstallFinalizer::OnIconsDataWritten, weak_ptr_factory_.GetWeakPtr(), std::move(commit_callback), std::move(web_app),
diff --git a/chrome/browser/web_applications/web_app_install_task_unittest.cc b/chrome/browser/web_applications/web_app_install_task_unittest.cc index 70d44a1..2afb1e51 100644 --- a/chrome/browser/web_applications/web_app_install_task_unittest.cc +++ b/chrome/browser/web_applications/web_app_install_task_unittest.cc
@@ -4,18 +4,13 @@ #include "chrome/browser/web_applications/web_app_install_task.h" +#include <array> #include <memory> #include <set> #include <utility> -#include "chrome/browser/content_settings/host_content_settings_map_factory.h" -#include "components/content_settings/core/browser/host_content_settings_map.h" -#include "components/content_settings/core/common/content_settings.h" -#include "components/content_settings/core/common/content_settings_pattern.h" - #include "base/bind.h" #include "base/callback.h" -#include "base/files/file_enumerator.h" #include "base/files/file_path.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" @@ -24,6 +19,7 @@ #include "base/test/scoped_feature_list.h" #include "base/threading/thread_task_runner_handle.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/web_applications/components/web_app_constants.h" #include "chrome/browser/web_applications/components/web_app_helpers.h" #include "chrome/browser/web_applications/components/web_app_icon_generator.h" @@ -51,6 +47,9 @@ #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile_manager.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings.h" +#include "components/content_settings/core/common/content_settings_pattern.h" #include "components/webapps/browser/installable/installable_data.h" #include "components/webapps/browser/installable/installable_metrics.h" #include "testing/gtest/include/gtest/gtest.h" @@ -58,6 +57,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/manifest/manifest.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkColor.h" #include "url/gurl.h" #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -657,8 +657,62 @@ TEST_F(WebAppInstallTaskTest, WriteDataToDisk) { const GURL url = GURL("https://example.com/path"); - CreateDefaultDataToRetrieve(url); - CreateRendererAppInfo(url, "Name", "Description"); + + struct TestIconInfo { + IconPurpose purpose; + std::string icon_url_name; + SkColor color; + std::vector<SquareSizePx> sizes_px; + std::string dir; + }; + + const std::array<TestIconInfo, 3> purpose_infos = { + TestIconInfo{IconPurpose::ANY, + "any", + SK_ColorGREEN, + {icon_size::k16, icon_size::k512}, + "Icons"}, + TestIconInfo{IconPurpose::MONOCHROME, + "monochrome", + SkColorSetARGB(0x80, 0x00, 0x00, 0x00), + {icon_size::k32, icon_size::k256}, + "Icons Monochrome"}, + TestIconInfo{IconPurpose::MASKABLE, + "maskable", + SK_ColorRED, + {icon_size::k64, icon_size::k96, icon_size::k128}, + "Icons Maskable"}}; + + static_assert( + purpose_infos.size() == static_cast<int>(IconPurpose::kMaxValue) - + static_cast<int>(IconPurpose::kMinValue) + 1, + "All purposes covered"); + + // Prepare all the data to be fetched or downloaded. + { + auto manifest = std::make_unique<blink::Manifest>(); + manifest->start_url = url; + manifest->short_name = u"Manifest Name"; + + IconsMap icons_map; + + for (const TestIconInfo& purpose_info : purpose_infos) { + for (SquareSizePx s : purpose_info.sizes_px) { + std::string size_str = base::NumberToString(s); + GURL icon_url = + url.Resolve(purpose_info.icon_url_name + size_str + ".png"); + + manifest->icons.push_back( + CreateSquareImageResource(icon_url, s, {purpose_info.purpose})); + + icons_map[icon_url] = {CreateSquareIcon(s, purpose_info.color)}; + } + } + + data_retriever().SetEmptyRendererWebApplicationInfo(); + data_retriever().SetManifest(std::move(manifest), /*is_installable=*/true); + data_retriever().SetIcons(std::move(icons_map)); + } // TestingProfile creates temp directory if TestingProfile::path_ is empty // (i.e. if TestingProfile::Builder::SetPath was not called by a test fixture) @@ -667,13 +721,6 @@ GetManifestResourcesDirectory(web_apps_dir); EXPECT_FALSE(file_utils_->DirectoryExists(manifest_resources_directory)); - const SkColor color = SK_ColorGREEN; - const int original_icon_size_px = icon_size::k512; - - // Generate one icon as if it was fetched from renderer. - AddGeneratedIcon(&data_retriever_->web_app_info().icon_bitmaps.any, - original_icon_size_px, color); - const AppId app_id = InstallWebAppFromManifestWithFallback(); EXPECT_TRUE(file_utils_->DirectoryExists(manifest_resources_directory)); @@ -686,41 +733,41 @@ manifest_resources_directory.AppendASCII(app_id); EXPECT_TRUE(file_utils_->DirectoryExists(app_dir)); - const base::FilePath icons_dir = app_dir.AppendASCII("Icons"); - EXPECT_TRUE(file_utils_->DirectoryExists(icons_dir)); + for (const TestIconInfo& purpose_info : purpose_infos) { + SCOPED_TRACE(purpose_info.purpose); - std::set<int> written_sizes_px; + const base::FilePath icons_dir = app_dir.AppendASCII(purpose_info.dir); + EXPECT_TRUE(file_utils_->DirectoryExists(icons_dir)); - base::FileEnumerator enumerator(icons_dir, true, base::FileEnumerator::FILES); - for (base::FilePath path = enumerator.Next(); !path.empty(); - path = enumerator.Next()) { - EXPECT_TRUE(path.MatchesExtension(FILE_PATH_LITERAL(".png"))); + std::map<SquareSizePx, SkBitmap> pngs = + ReadPngsFromDirectory(file_utils_, icons_dir); - SkBitmap bitmap; - EXPECT_TRUE(ReadBitmap(file_utils_, path, &bitmap)); + // The install does ResizeIconsAndGenerateMissing() only for ANY icons. + if (purpose_info.purpose == IconPurpose::ANY) { + // Icons are generated for all mandatory sizes in GetIconSizes() in + // addition to the input k16 and k512 sizes. + EXPECT_EQ(GetIconSizes().size() + 2UL, pngs.size()); + // Excludes autogenerated sizes. + for (SquareSizePx s : GetIconSizes()) { + pngs.erase(s); + } + } else { + EXPECT_EQ(purpose_info.sizes_px.size(), pngs.size()); + } - EXPECT_EQ(bitmap.width(), bitmap.height()); + for (SquareSizePx size_px : purpose_info.sizes_px) { + SCOPED_TRACE(size_px); + ASSERT_TRUE(base::Contains(pngs, size_px)); - const int size_px = bitmap.width(); - EXPECT_EQ(0UL, written_sizes_px.count(size_px)); + SkBitmap icon_bitmap = pngs[size_px]; + EXPECT_EQ(icon_bitmap.width(), icon_bitmap.height()); + EXPECT_EQ(size_px, icon_bitmap.height()); + EXPECT_EQ(purpose_info.color, pngs[size_px].getColor(0, 0)); + pngs.erase(size_px); + } - base::FilePath size_file_name; - size_file_name = - size_file_name.AppendASCII(base::StringPrintf("%i.png", size_px)); - EXPECT_EQ(size_file_name, path.BaseName()); - - written_sizes_px.insert(size_px); - - EXPECT_EQ(color, bitmap.getColor(0, 0)); + EXPECT_TRUE(pngs.empty()); } - - EXPECT_EQ(GetIconSizes().size() + 1UL, written_sizes_px.size()); - - for (int size_px : GetIconSizes()) - written_sizes_px.erase(size_px); - written_sizes_px.erase(original_icon_size_px); - - EXPECT_TRUE(written_sizes_px.empty()); } TEST_F(WebAppInstallTaskTest, WriteDataToDiskFailed) {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLoggingDependencyProvider.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLoggingDependencyProvider.java index 61429a5..aa66b3e 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLoggingDependencyProvider.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLoggingDependencyProvider.java
@@ -38,4 +38,11 @@ * message. */ default void processViewAction(byte[] data) {} + + /** + * Reports whether the visibility log upload was successful. + * + * @param success - whether the upload was successful + */ + default void reportOnUploadVisibilityLog(boolean success) {} }
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 5d12223..13dc145 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1622073319-a5b7f2bb1fc83192f8ecd49aaea8e7dd859e12b3.profdata +chrome-win32-master-1622115746-7a5685df868f2e5715f41920b7a31a95d2753a86.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index a772e1d6..aeafbb9 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1622073319-7a663a4d53e4866bcda6bc6a1885f5cee6d92f26.profdata +chrome-win64-master-1622115746-16aae4983a3b79f0983927a7f29da7d36068f03d.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 9008767..54db136 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -833,8 +833,8 @@ "SafetyCheckChromeCleanerChild", base::FEATURE_DISABLED_BY_DEFAULT}; #endif -const base::Feature kSafetyCheckWeakPasswords{ - "SafetyCheckWeakPasswords", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kSafetyCheckWeakPasswords{"SafetyCheckWeakPasswords", + base::FEATURE_ENABLED_BY_DEFAULT}; #if BUILDFLAG(IS_CHROMEOS_ASH) // Enable support for multiple scheduler configurations.
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc index d6aff40a..0348970 100644 --- a/chrome/renderer/media/chrome_key_systems.cc +++ b/chrome/renderer/media/chrome_key_systems.cc
@@ -250,7 +250,12 @@ chromeos::features::kCdmFactoryDaemon)) { supported_codecs |= GetHevcCodecs(codec.second); } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#elif defined(OS_WIN) + if (is_secure) { + supported_codecs |= media::EME_CODEC_HEVC_PROFILE_MAIN; + supported_codecs |= media::EME_CODEC_HEVC_PROFILE_MAIN10; + } +#endif // BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_WIN) break; #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) default:
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 88a4db6a..7c298f3 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -883,6 +883,10 @@ if (is_win) { deps += [ "//chrome/installer/util:strings" ] } + + if (is_android) { + deps += [ "//ui/compositor" ] + } } if (!is_android) { @@ -8316,17 +8320,15 @@ "../browser/ash/child_accounts/time_limit_consistency_test/consistency_test_utils.h", "../browser/ash/child_accounts/time_limit_consistency_test/proto_matcher.h", "../browser/ash/child_accounts/time_limit_consistency_test/run_all_unittests.cc", - "../browser/ash/child_accounts/time_limit_override.cc", - "../browser/ash/child_accounts/time_limit_override.h", "../browser/ash/child_accounts/time_limit_test_utils.cc", "../browser/ash/child_accounts/time_limit_test_utils.h", - "../browser/ash/child_accounts/usage_time_limit_processor.cc", - "../browser/ash/child_accounts/usage_time_limit_processor.h", ] deps = [ ":consistency_golden_proto", "//base", "//base/test:test_support", + "//chrome/browser", + "//chrome/browser/chromeos", "//chromeos/settings", "//testing/gmock", "//testing/gtest",
diff --git a/chrome/test/data/extensions/api_test/content_settings/clearproperlygranular/manifest.json b/chrome/test/data/extensions/api_test/content_settings/clearproperlygranular/manifest.json index 0357e420..ae143db 100644 --- a/chrome/test/data/extensions/api_test/content_settings/clearproperlygranular/manifest.json +++ b/chrome/test/data/extensions/api_test/content_settings/clearproperlygranular/manifest.json
@@ -5,7 +5,7 @@ "description" : "Sets and checks content settings, ensuring clear works properly.", "background": { "scripts": ["test.js"], - "persistent": false + "persistent": true }, "permissions": [ "contentSettings" ] }
diff --git a/chrome/test/data/extensions/api_test/content_settings/embeddedsettings/manifest.json b/chrome/test/data/extensions/api_test/content_settings/embeddedsettings/manifest.json index dbf502b..fc5a218 100644 --- a/chrome/test/data/extensions/api_test/content_settings/embeddedsettings/manifest.json +++ b/chrome/test/data/extensions/api_test/content_settings/embeddedsettings/manifest.json
@@ -5,7 +5,7 @@ "description" : "Content Settings API Test Extension", "background": { "scripts": ["test.js"], - "persistent": false + "persistent": true }, "permissions": [ "contentSettings" ] }
diff --git a/chrome/test/data/extensions/api_test/content_settings/embeddedsettingsmetric/manifest.json b/chrome/test/data/extensions/api_test/content_settings/embeddedsettingsmetric/manifest.json index dbf502b..fc5a218 100644 --- a/chrome/test/data/extensions/api_test/content_settings/embeddedsettingsmetric/manifest.json +++ b/chrome/test/data/extensions/api_test/content_settings/embeddedsettingsmetric/manifest.json
@@ -5,7 +5,7 @@ "description" : "Content Settings API Test Extension", "background": { "scripts": ["test.js"], - "persistent": false + "persistent": true }, "permissions": [ "contentSettings" ] }
diff --git a/chrome/test/data/extensions/api_test/content_settings/getresourceidentifiers/manifest.json b/chrome/test/data/extensions/api_test/content_settings/getresourceidentifiers/manifest.json index c362df0d..3fd41bd 100644 --- a/chrome/test/data/extensions/api_test/content_settings/getresourceidentifiers/manifest.json +++ b/chrome/test/data/extensions/api_test/content_settings/getresourceidentifiers/manifest.json
@@ -6,6 +6,6 @@ "permissions": [ "contentSettings" ], "background": { "scripts": ["test.js"], - "persistent": false + "persistent": true } }
diff --git a/chrome/test/data/extensions/api_test/content_settings/unsupporteddefaultsettings/manifest.json b/chrome/test/data/extensions/api_test/content_settings/unsupporteddefaultsettings/manifest.json index dbf502b..fc5a218 100644 --- a/chrome/test/data/extensions/api_test/content_settings/unsupporteddefaultsettings/manifest.json +++ b/chrome/test/data/extensions/api_test/content_settings/unsupporteddefaultsettings/manifest.json
@@ -5,7 +5,7 @@ "description" : "Content Settings API Test Extension", "background": { "scripts": ["test.js"], - "persistent": false + "persistent": true }, "permissions": [ "contentSettings" ] }
diff --git a/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js b/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js index 51498e5..fb18264 100644 --- a/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js +++ b/chrome/test/data/webui/extensions/a11y/extensions_a11y_test.js
@@ -119,7 +119,8 @@ /** @override */ tests: { 'Accessible with No Extensions': function() { - let list = document.querySelector('extensions-manager').$$('#items-list'); + let list = document.querySelector('extensions-manager') + .shadowRoot.querySelector('#items-list'); assertEquals(list.extensions.length, 0); assertEquals(list.apps.length, 0); } @@ -149,7 +150,8 @@ /** @override */ tests: { 'Accessible with Extensions and Apps': function() { - let list = document.querySelector('extensions-manager').$$('#items-list'); + let list = document.querySelector('extensions-manager') + .shadowRoot.querySelector('#items-list'); assertEquals(list.extensions.length, 1); assertEquals(list.apps.length, 3); }, @@ -178,7 +180,7 @@ tests: { 'Accessible with No Extensions or Apps': function() { let list = document.querySelector('extensions-manager') - .$$('extensions-keyboard-shortcuts'); + .shadowRoot.querySelector('extensions-keyboard-shortcuts'); assertEquals(list.items.length, 0); }, }, @@ -206,7 +208,7 @@ tests: { 'Accessible with Extensions': function() { let list = document.querySelector('extensions-manager') - .$$('extensions-keyboard-shortcuts'); + .shadowRoot.querySelector('extensions-keyboard-shortcuts'); assertEquals(list.items.length, 1); }, }, @@ -249,8 +251,8 @@ tests: { 'Accessible Error Console': function() { assertTrue(!!document.querySelector('extensions-manager') - .$$('extensions-error-page') - .$$('#errorsList')); + .shadowRoot.querySelector('extensions-error-page') + .shadowRoot.querySelector('#errorsList')); }, }, });
diff --git a/chrome/test/data/webui/extensions/activity_log_test.js b/chrome/test/data/webui/extensions/activity_log_test.js index dbae4666..1c20627 100644 --- a/chrome/test/data/webui/extensions/activity_log_test.js +++ b/chrome/test/data/webui/extensions/activity_log_test.js
@@ -76,7 +76,7 @@ // needed for iron-list as it reuses components but hides them when not in // use. function getStreamItems() { - return activityLog.$$('activity-log-stream') + return activityLog.shadowRoot.querySelector('activity-log-stream') .shadowRoot.querySelectorAll('activity-log-stream-item:not([hidden])'); } @@ -88,7 +88,7 @@ currentPage = newPage; }); - activityLog.$$('#closeButton').click(); + activityLog.shadowRoot.querySelector('#closeButton').click(); expectDeepEquals( currentPage, {page: Page.DETAILS, extensionId: EXTENSION_ID}); }); @@ -105,7 +105,7 @@ currentPage = newPage; }); - activityLog.$$('#closeButton').click(); + activityLog.shadowRoot.querySelector('#closeButton').click(); expectDeepEquals(currentPage, {page: Page.LIST}); }); @@ -116,7 +116,7 @@ boundTestVisible('activity-log-history', true); // Navigate to the activity log stream. - activityLog.$$('cr-tabs').selected = 1; + activityLog.shadowRoot.querySelector('cr-tabs').selected = 1; flush(); // One activity is recorded and should appear in the stream. @@ -127,7 +127,7 @@ expectEquals(1, getStreamItems().length); // Navigate back to the activity log history tab. - activityLog.$$('cr-tabs').selected = 0; + activityLog.shadowRoot.querySelector('cr-tabs').selected = 0; // Expect a refresh of the activity log. await proxyDelegate.whenCalled('getExtensionActivityLog'); @@ -138,7 +138,7 @@ // the stream is inactive. proxyDelegate.getOnExtensionActivity().callListeners(activity1); - activityLog.$$('cr-tabs').selected = 1; + activityLog.shadowRoot.querySelector('cr-tabs').selected = 1; flush(); // The one activity in the stream should have persisted between tab
diff --git a/chrome/test/data/webui/extensions/code_section_test.js b/chrome/test/data/webui/extensions/code_section_test.js index 725b73e4..076acce 100644 --- a/chrome/test/data/webui/extensions/code_section_test.js +++ b/chrome/test/data/webui/extensions/code_section_test.js
@@ -41,7 +41,8 @@ const testIsVisible = isChildVisible.bind(null, codeSection); expectFalse(!!codeSection.code); - expectTrue(codeSection.$$('#scroll-container').hidden); + expectTrue( + codeSection.shadowRoot.querySelector('#scroll-container').hidden); expectFalse(testIsVisible('#main')); expectTrue(testIsVisible('#no-code')); @@ -58,7 +59,9 @@ expectEquals(code.afterHighlight, codeSections[2].textContent); expectEquals( - '1\n2\n3\n4', codeSection.$$('#line-numbers span').textContent.trim()); + '1\n2\n3\n4', + codeSection.shadowRoot.querySelector('#line-numbers span') + .textContent.trim()); }); test(assert(extension_code_section_tests.TestNames.LongSource), function() { @@ -83,38 +86,53 @@ setCodeContent(0, 2000); codeSection.code = code; - lineNums = codeSection.$$('#line-numbers span').textContent; + lineNums = + codeSection.shadowRoot.querySelector('#line-numbers span').textContent; // Length should be 1000 +- 1. expectTrue(lineNums.split('\n').length >= 999); expectTrue(lineNums.split('\n').length <= 1001); expectTrue(!!lineNums.match(/^1\n/)); expectTrue(!!lineNums.match(/1000/)); expectFalse(!!lineNums.match(/1001/)); - expectTrue(codeSection.$$('#line-numbers .more-code.before').hidden); - expectFalse(codeSection.$$('#line-numbers .more-code.after').hidden); + expectTrue( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.before') + .hidden); + expectFalse( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.after') + .hidden); setCodeContent(1000, 1000); codeSection.code = code; - lineNums = codeSection.$$('#line-numbers span').textContent; + lineNums = + codeSection.shadowRoot.querySelector('#line-numbers span').textContent; // Length should be 1000 +- 1. expectTrue(lineNums.split('\n').length >= 999); expectTrue(lineNums.split('\n').length <= 1001); expectFalse(!!lineNums.match(/^1\n/)); expectTrue(!!lineNums.match(/1000/)); expectFalse(!!lineNums.match(/1999/)); - expectFalse(codeSection.$$('#line-numbers .more-code.before').hidden); - expectFalse(codeSection.$$('#line-numbers .more-code.after').hidden); + expectFalse( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.before') + .hidden); + expectFalse( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.after') + .hidden); setCodeContent(2000, 0); codeSection.code = code; - lineNums = codeSection.$$('#line-numbers span').textContent; + lineNums = + codeSection.shadowRoot.querySelector('#line-numbers span').textContent; // Length should be 1000 +- 1. expectTrue(lineNums.split('\n').length >= 999); expectTrue(lineNums.split('\n').length <= 1001); expectFalse(!!lineNums.match(/^1\n/)); expectTrue(!!lineNums.match(/1002/)); expectTrue(!!lineNums.match(/2000/)); - expectFalse(codeSection.$$('#line-numbers .more-code.before').hidden); - expectTrue(codeSection.$$('#line-numbers .more-code.after').hidden); + expectFalse( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.before') + .hidden); + expectTrue( + codeSection.shadowRoot.querySelector('#line-numbers .more-code.after') + .hidden); }); });
diff --git a/chrome/test/data/webui/extensions/detail_view_test.js b/chrome/test/data/webui/extensions/detail_view_test.js index 159d162..2325108 100644 --- a/chrome/test/data/webui/extensions/detail_view_test.js +++ b/chrome/test/data/webui/extensions/detail_view_test.js
@@ -76,7 +76,7 @@ {key: 'fileAccess', id: '#allow-on-file-urls'}, {key: 'errorCollection', id: '#collect-errors'}, ]; - const isChecked = id => item.$$(id).checked; + const isChecked = id => item.shadowRoot.querySelector(id).checked; for (let option of accessOptions) { expectTrue(isChildVisible(item, option.id)); expectFalse(isChecked(option.id), option.id); @@ -97,7 +97,10 @@ flush(); expectTrue(testIsVisible('#dependent-extensions-list')); expectEquals( - 2, item.$$('#dependent-extensions-list').querySelectorAll('li').length); + 2, + item.shadowRoot.querySelector('#dependent-extensions-list') + .querySelectorAll('li') + .length); expectFalse(testIsVisible('#permissions-list')); expectFalse(testIsVisible('#host-access')); @@ -109,7 +112,11 @@ {simplePermissions: ['Permission 1', 'Permission 2']}); flush(); expectTrue(testIsVisible('#permissions-list')); - expectEquals(2, item.$$('#permissions-list').querySelectorAll('li').length); + expectEquals( + 2, + item.shadowRoot.querySelector('#permissions-list') + .querySelectorAll('li') + .length); expectFalse(testIsVisible('#no-permissions')); expectFalse(testIsVisible('#host-access')); expectFalse(testIsVisible('extensions-runtime-host-permissions')); @@ -161,7 +168,8 @@ // Ensure that the "Extension options" button is disabled when the item // itself is disabled. - const extensionOptions = item.$$('#extensions-options'); + const extensionOptions = + item.shadowRoot.querySelector('#extensions-options'); assertFalse(extensionOptions.disabled); item.set('data.state', chrome.developerPrivate.ExtensionState.DISABLED); flush(); @@ -262,8 +270,9 @@ extension_detail_view_tests.TestNames.SupervisedUserDisableReasons), function() { flush(); - const toggle = item.$$('#enableToggle'); - const tooltip = item.$$('#parentDisabledPermissionsToolTip'); + const toggle = item.shadowRoot.querySelector('#enableToggle'); + const tooltip = + item.shadowRoot.querySelector('#parentDisabledPermissionsToolTip'); expectTrue(isVisible(toggle)); expectFalse(isVisible(tooltip)); @@ -313,7 +322,7 @@ // to redirect the page back to the details view is in manager.js. Since // this behavior does not happen in the testing environment, we test the // behavior in manager_test.js. - item.$$('#extensionsActivityLogLink').click(); + item.shadowRoot.querySelector('#extensionsActivityLogLink').click(); expectDeepEquals( currentPage, {page: Page.ACTIVITY_LOG, extensionId: extensionData.id}); @@ -324,37 +333,38 @@ currentPage = null; mockDelegate.testClickingCalls( - item.$$('#allow-incognito').getLabel(), 'setItemAllowedIncognito', - [extensionData.id, true]); + item.shadowRoot.querySelector('#allow-incognito').getLabel(), + 'setItemAllowedIncognito', [extensionData.id, true]); mockDelegate.testClickingCalls( - item.$$('#allow-on-file-urls').getLabel(), + item.shadowRoot.querySelector('#allow-on-file-urls').getLabel(), 'setItemAllowedOnFileUrls', [extensionData.id, true]); mockDelegate.testClickingCalls( - item.$$('#collect-errors').getLabel(), 'setItemCollectsErrors', - [extensionData.id, true]); + item.shadowRoot.querySelector('#collect-errors').getLabel(), + 'setItemCollectsErrors', [extensionData.id, true]); mockDelegate.testClickingCalls( - item.$$('#extensions-options'), 'showItemOptionsPage', - [extensionData]); + item.shadowRoot.querySelector('#extensions-options'), + 'showItemOptionsPage', [extensionData]); mockDelegate.testClickingCalls( - item.$$('#remove-extension'), 'deleteItem', [extensionData.id]); - mockDelegate.testClickingCalls( - item.$$('#load-path > a[is=\'action-link\']'), 'showInFolder', + item.shadowRoot.querySelector('#remove-extension'), 'deleteItem', [extensionData.id]); mockDelegate.testClickingCalls( - item.$$('#warnings-reload-button'), 'reloadItem', - [extensionData.id], Promise.resolve()); + item.shadowRoot.querySelector('#load-path > a[is=\'action-link\']'), + 'showInFolder', [extensionData.id]); + mockDelegate.testClickingCalls( + item.shadowRoot.querySelector('#warnings-reload-button'), + 'reloadItem', [extensionData.id], Promise.resolve()); // Terminate the extension so the reload button appears. item.set( 'data.state', chrome.developerPrivate.ExtensionState.TERMINATED); flush(); mockDelegate.testClickingCalls( - item.$$('#terminated-reload-button'), 'reloadItem', - [extensionData.id], Promise.resolve()); + item.shadowRoot.querySelector('#terminated-reload-button'), + 'reloadItem', [extensionData.id], Promise.resolve()); }); test(assert(extension_detail_view_tests.TestNames.Indicator), function() { - const indicator = item.$$('cr-tooltip-icon'); + const indicator = item.shadowRoot.querySelector('cr-tooltip-icon'); expectTrue(indicator.hidden); item.set('data.controlledInfo', {text: 'policy'}); flush();
diff --git a/chrome/test/data/webui/extensions/error_page_test.js b/chrome/test/data/webui/extensions/error_page_test.js index 14a36dd6..b46b2d2 100644 --- a/chrome/test/data/webui/extensions/error_page_test.js +++ b/chrome/test/data/webui/extensions/error_page_test.js
@@ -141,7 +141,10 @@ mockDelegate.requestFileSourceResolver.resolve(code); mockDelegate.requestFileSourceResolver.promise.then(function() { flush(); - expectEquals(code, errorPage.$$('extensions-code-section').code); + expectEquals( + code, + errorPage.shadowRoot.querySelector('extensions-code-section') + .code); done(); }); });
diff --git a/chrome/test/data/webui/extensions/extension_options_dialog_test.js b/chrome/test/data/webui/extensions/extension_options_dialog_test.js index d7839729..4d3b7ac 100644 --- a/chrome/test/data/webui/extensions/extension_options_dialog_test.js +++ b/chrome/test/data/webui/extensions/extension_options_dialog_test.js
@@ -23,13 +23,15 @@ document.body.appendChild(manager); assertTrue(!!manager); await eventToPromise('view-enter-start', manager); - const extensionDetailView = manager.$$('extensions-detail-view'); + const extensionDetailView = + manager.shadowRoot.querySelector('extensions-detail-view'); assertTrue(!!extensionDetailView); - const optionsButton = extensionDetailView.$$('#extensions-options'); + const optionsButton = + extensionDetailView.shadowRoot.querySelector('#extensions-options'); optionsButton.click(); await eventToPromise('cr-dialog-open', manager); - const dialog = manager.$$('#options-dialog'); + const dialog = manager.shadowRoot.querySelector('#options-dialog'); let waitForClose = eventToPromise('close', dialog); dialog.$.dialog.cancel(); await waitForClose;
diff --git a/chrome/test/data/webui/extensions/host_permissions_toggle_list_test.js b/chrome/test/data/webui/extensions/host_permissions_toggle_list_test.js index cb2b52cca..751cbfb 100644 --- a/chrome/test/data/webui/extensions/host_permissions_toggle_list_test.js +++ b/chrome/test/data/webui/extensions/host_permissions_toggle_list_test.js
@@ -159,7 +159,8 @@ element.permissions = permissions; flush(); - const learnMoreButton = element.$$('#link-icon-button'); + const learnMoreButton = + element.shadowRoot.querySelector('#link-icon-button'); // Prevent triggering the navigation, which could interfere with tests. learnMoreButton.href = '#'; learnMoreButton.target = '_self';
diff --git a/chrome/test/data/webui/extensions/item_list_test.js b/chrome/test/data/webui/extensions/item_list_test.js index 18c02d0f..8c4d177 100644 --- a/chrome/test/data/webui/extensions/item_list_test.js +++ b/chrome/test/data/webui/extensions/item_list_test.js
@@ -65,15 +65,21 @@ // Only 'Bravo' has a 'b'. itemList.filter = 'b'; itemLengthEquals(1); - expectEquals('Bravo', itemList.$$('extensions-item').data.name); + expectEquals( + 'Bravo', + itemList.shadowRoot.querySelector('extensions-item').data.name); // Test inner substring (rather than prefix). itemList.filter = 'lph'; itemLengthEquals(1); - expectEquals('Alpha', itemList.$$('extensions-item').data.name); + expectEquals( + 'Alpha', + itemList.shadowRoot.querySelector('extensions-item').data.name); // Test trailing/leading spaces. itemList.filter = ' Alpha '; itemLengthEquals(1); - expectEquals('Alpha', itemList.$$('extensions-item').data.name); + expectEquals( + 'Alpha', + itemList.shadowRoot.querySelector('extensions-item').data.name); // Test string with no matching items. itemList.filter = 'z'; itemLengthEquals(0); @@ -87,7 +93,9 @@ // matches. itemList.filter = 'xy'; itemLengthEquals(1); - expectEquals('Charlie', itemList.$$('extensions-item').data.name); + expectEquals( + 'Charlie', + itemList.shadowRoot.querySelector('extensions-item').data.name); }); test(assert(extension_item_list_tests.TestNames.NoItemsMsg), function() {
diff --git a/chrome/test/data/webui/extensions/item_test.js b/chrome/test/data/webui/extensions/item_test.js index 1687d06..ed0ac13 100644 --- a/chrome/test/data/webui/extensions/item_test.js +++ b/chrome/test/data/webui/extensions/item_test.js
@@ -167,8 +167,8 @@ mockDelegate.testClickingCalls( item.$['enableToggle'], 'setItemEnabled', [item.data.id, false]); mockDelegate.testClickingCalls( - item.$$('#inspect-views a[is="action-link"]'), 'inspectItemView', - [item.data.id, item.data.views[0]]); + item.shadowRoot.querySelector('#inspect-views a[is="action-link"]'), + 'inspectItemView', [item.data.id, item.data.views[0]]); // Setup for testing navigation buttons. let currentPage = null; @@ -176,21 +176,24 @@ currentPage = newPage; }); - item.$$('#detailsButton').click(); + item.shadowRoot.querySelector('#detailsButton').click(); expectDeepEquals( currentPage, {page: Page.DETAILS, extensionId: item.data.id}); // Reset current page and test inspect-view navigation. navigation.navigateTo({page: Page.LIST}); currentPage = null; - item.$$('#inspect-views a[is="action-link"]:nth-of-type(2)').click(); + item.shadowRoot + .querySelector('#inspect-views a[is="action-link"]:nth-of-type(2)') + .click(); expectDeepEquals( currentPage, {page: Page.DETAILS, extensionId: item.data.id}); item.set('data.disableReasons.corruptInstall', true); flush(); mockDelegate.testClickingCalls( - item.$$('#repair-button'), 'repairItem', [item.data.id]); + item.shadowRoot.querySelector('#repair-button'), 'repairItem', + [item.data.id]); testVisible(item, '#enableToggle', false); item.set('data.disableReasons.corruptInstall', false); flush(); @@ -198,8 +201,8 @@ item.set('data.state', chrome.developerPrivate.ExtensionState.TERMINATED); flush(); mockDelegate.testClickingCalls( - item.$$('#terminated-reload-button'), 'reloadItem', [item.data.id], - Promise.resolve()); + item.shadowRoot.querySelector('#terminated-reload-button'), + 'reloadItem', [item.data.id], Promise.resolve()); item.set('data.location', chrome.developerPrivate.Location.UNPACKED); item.set('data.state', chrome.developerPrivate.ExtensionState.ENABLED); @@ -238,13 +241,13 @@ }); }; - item.$$('#dev-reload-button').click(); + item.shadowRoot.querySelector('#dev-reload-button').click(); let id = await proxyDelegate.whenCalled('reloadItem'); expectEquals(item.data.id, id); await verifyEventPromise(false); proxyDelegate.resetResolver('reloadItem'); proxyDelegate.setForceReloadItemError(true); - item.$$('#dev-reload-button').click(); + item.shadowRoot.querySelector('#dev-reload-button').click(); id = await proxyDelegate.whenCalled('reloadItem'); expectEquals(item.data.id, id); return verifyEventPromise(true); @@ -316,7 +319,7 @@ item.set('data.location', 'UNPACKED'); flush(); expectTrue(isChildVisible(item, '#source-indicator')); - const icon = item.$$('#source-indicator iron-icon'); + const icon = item.shadowRoot.querySelector('#source-indicator iron-icon'); assertTrue(!!icon); expectEquals('extensions-icons:unpacked', icon.icon); @@ -382,7 +385,7 @@ item.set('data.disableReasons.custodianApprovalRequired', true); flush(); testVisible(item, '#enableToggle', true); - expectFalse(item.$$('#enableToggle').disabled); + expectFalse(item.shadowRoot.querySelector('#enableToggle').disabled); item.set('data.disableReasons.custodianApprovalRequired', false); flush(); });
diff --git a/chrome/test/data/webui/extensions/keyboard_shortcuts_test.js b/chrome/test/data/webui/extensions/keyboard_shortcuts_test.js index ed691066d..48caf84 100644 --- a/chrome/test/data/webui/extensions/keyboard_shortcuts_test.js +++ b/chrome/test/data/webui/extensions/keyboard_shortcuts_test.js
@@ -85,8 +85,8 @@ // rather than a fancy-schmancy custom element. return isChildVisible(e, s, true); }; - const cards = - keyboardShortcuts.$$('#container').querySelectorAll('.shortcut-card'); + const cards = keyboardShortcuts.shadowRoot.querySelector('#container') + .querySelectorAll('.shortcut-card'); assertEquals(2, cards.length); const card1 = cards[0]; @@ -130,7 +130,7 @@ }); test(extension_shortcut_tests.TestNames.ScopeChange, function() { - const selectElement = keyboardShortcuts.$$('select'); + const selectElement = keyboardShortcuts.shadowRoot.querySelector('select'); selectElement.value = 'GLOBAL'; selectElement.dispatchEvent(new CustomEvent('change')); return keyboardShortcuts.delegate.whenCalled('updateExtensionCommandScope')
diff --git a/chrome/test/data/webui/extensions/kiosk_mode_manager_unit_test.js b/chrome/test/data/webui/extensions/kiosk_mode_manager_unit_test.js index 83d80f8..5f80e26 100644 --- a/chrome/test/data/webui/extensions/kiosk_mode_manager_unit_test.js +++ b/chrome/test/data/webui/extensions/kiosk_mode_manager_unit_test.js
@@ -35,12 +35,12 @@ setup(function() { browserProxy = new TestKioskBrowserProxy(); - KioskBrowserProxyImpl.instance_ = browserProxy; + KioskBrowserProxyImpl.setInstance(browserProxy); document.body.innerHTML = ''; service = new TestService(); - Service.instance_ = service; + Service.setInstance(service); manager = document.createElement('extensions-manager'); document.body.appendChild(manager); @@ -54,13 +54,14 @@ }); test(assert(extension_manager_unit_tests.TestNames.KioskMode), function() { - expectFalse(!!manager.$$('extensions-kiosk-dialog')); + expectFalse(!!manager.shadowRoot.querySelector('extensions-kiosk-dialog')); return browserProxy.whenCalled('initializeKioskAppSettings').then(() => { - expectTrue(manager.$$('extensions-toolbar').kioskEnabled); - manager.$$('extensions-toolbar').fire('kiosk-tap'); + expectTrue( + manager.shadowRoot.querySelector('extensions-toolbar').kioskEnabled); + manager.shadowRoot.querySelector('extensions-toolbar').fire('kiosk-tap'); flush(); - expectTrue(!!manager.$$('extensions-kiosk-dialog')); + expectTrue(!!manager.shadowRoot.querySelector('extensions-kiosk-dialog')); }); }); });
diff --git a/chrome/test/data/webui/extensions/kiosk_mode_test.js b/chrome/test/data/webui/extensions/kiosk_mode_test.js index e98dab4..0dcfa96 100644 --- a/chrome/test/data/webui/extensions/kiosk_mode_test.js +++ b/chrome/test/data/webui/extensions/kiosk_mode_test.js
@@ -86,7 +86,7 @@ setup(function() { browserProxy = new TestKioskBrowserProxy(); setAppSettings({apps: basicApps.slice(0)}); - KioskBrowserProxyImpl.instance_ = browserProxy; + KioskBrowserProxyImpl.setInstance(browserProxy); return initPage(); }); @@ -111,7 +111,7 @@ expectTrue(items[1].querySelector('cr-button').hidden); // Bailout checkbox should be hidden when auto-launch editing // disabled. - expectTrue(dialog.$$('cr-checkbox').hidden); + expectTrue(dialog.shadowRoot.querySelector('cr-checkbox').hidden); items[0].querySelector('.icon-delete-gray').click(); flush(); @@ -161,7 +161,7 @@ let bailoutCheckbox; return initPage() .then(() => { - bailoutCheckbox = dialog.$$('cr-checkbox'); + bailoutCheckbox = dialog.shadowRoot.querySelector('cr-checkbox'); // Bailout checkbox should be usable when auto-launching. expectFalse(bailoutCheckbox.hidden); expectFalse(bailoutCheckbox.disabled);
diff --git a/chrome/test/data/webui/extensions/load_error_test.js b/chrome/test/data/webui/extensions/load_error_test.js index 15bb9392..baf81780 100644 --- a/chrome/test/data/webui/extensions/load_error_test.js +++ b/chrome/test/data/webui/extensions/load_error_test.js
@@ -44,28 +44,30 @@ }); test(assert(extension_load_error_tests.TestNames.RetryError), function() { - const dialogElement = loadError.$$('cr-dialog').getNative(); + const dialogElement = + loadError.shadowRoot.querySelector('cr-dialog').getNative(); expectFalse(isElementVisible(dialogElement)); loadError.show(); expectTrue(isElementVisible(dialogElement)); mockDelegate.setRetryLoadUnpackedError(stubLoadError); - loadError.$$('.action-button').click(); + loadError.shadowRoot.querySelector('.action-button').click(); return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => { expectEquals(fakeGuid, arg); expectTrue(isElementVisible(dialogElement)); - loadError.$$('.cancel-button').click(); + loadError.shadowRoot.querySelector('.cancel-button').click(); expectFalse(isElementVisible(dialogElement)); }); }); test(assert(extension_load_error_tests.TestNames.RetrySuccess), function() { - const dialogElement = loadError.$$('cr-dialog').getNative(); + const dialogElement = + loadError.shadowRoot.querySelector('cr-dialog').getNative(); expectFalse(isElementVisible(dialogElement)); loadError.show(); expectTrue(isElementVisible(dialogElement)); - loadError.$$('.action-button').click(); + loadError.shadowRoot.querySelector('.action-button').click(); return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => { expectEquals(fakeGuid, arg); expectFalse(isElementVisible(dialogElement)); @@ -73,7 +75,8 @@ }); test(assert(extension_load_error_tests.TestNames.CodeSection), function() { - expectTrue(loadError.$.code.$$('#scroll-container').hidden); + expectTrue( + loadError.$.code.shadowRoot.querySelector('#scroll-container').hidden); const loadErrorWithSource = { error: 'Some error', path: '/some/path', @@ -85,6 +88,7 @@ }; loadError.loadError = loadErrorWithSource; - expectFalse(loadError.$.code.$$('#scroll-container').hidden); + expectFalse( + loadError.$.code.shadowRoot.querySelector('#scroll-container').hidden); }); });
diff --git a/chrome/test/data/webui/extensions/manager_test.js b/chrome/test/data/webui/extensions/manager_test.js index cf8ac98..b96ee2e0 100644 --- a/chrome/test/data/webui/extensions/manager_test.js +++ b/chrome/test/data/webui/extensions/manager_test.js
@@ -82,36 +82,45 @@ }); test(assert(extension_manager_tests.TestNames.ChangePages), function() { - manager.$$('extensions-toolbar') - .$$('cr-toolbar') + manager.shadowRoot.querySelector('extensions-toolbar') + .shadowRoot.querySelector('cr-toolbar') .shadowRoot.querySelector('#menuButton') .click(); flush(); // We start on the item list. - manager.$$('#sidebar').$['sections-extensions'].click(); + manager.shadowRoot.querySelector('#sidebar') + .$['sections-extensions'] + .click(); flush(); assertViewActive('extensions-item-list'); // Switch: item list -> keyboard shortcuts. - manager.$$('#sidebar').$['sections-shortcuts'].click(); + manager.shadowRoot.querySelector('#sidebar') + .$['sections-shortcuts'] + .click(); flush(); assertViewActive('extensions-keyboard-shortcuts'); // Switch: item list -> detail view. - const item = manager.$['items-list'].$$('extensions-item'); + const item = + manager.$['items-list'].shadowRoot.querySelector('extensions-item'); assert(item); item.onDetailsTap_(); flush(); assertViewActive('extensions-detail-view'); // Switch: detail view -> keyboard shortcuts. - manager.$$('#sidebar').$['sections-shortcuts'].click(); + manager.shadowRoot.querySelector('#sidebar') + .$['sections-shortcuts'] + .click(); flush(); assertViewActive('extensions-keyboard-shortcuts'); // We get back on the item list. - manager.$$('#sidebar').$['sections-extensions'].click(); + manager.shadowRoot.querySelector('#sidebar') + .$['sections-extensions'] + .click(); flush(); assertViewActive('extensions-item-list'); });
diff --git a/chrome/test/data/webui/extensions/manager_test_with_id_query_param.js b/chrome/test/data/webui/extensions/manager_test_with_id_query_param.js index 0fd30c6..b905244b 100644 --- a/chrome/test/data/webui/extensions/manager_test_with_id_query_param.js +++ b/chrome/test/data/webui/extensions/manager_test_with_id_query_param.js
@@ -51,7 +51,8 @@ assert(extension_manager_tests.TestNames.UrlNavigationToDetails), function() { assertViewActive('extensions-detail-view'); - const detailsView = manager.$$('extensions-detail-view'); + const detailsView = + manager.shadowRoot.querySelector('extensions-detail-view'); expectEquals('ldnnhddmnhbkjipkidpdiheffobcpfmf', detailsView.data.id); // Try to open detail view for invalid ID. @@ -85,7 +86,8 @@ // Should be re-routed to details page with showActivityLog set to // false. assertViewActive('extensions-detail-view'); - const detailsView = manager.$$('extensions-detail-view'); + const detailsView = + manager.shadowRoot.querySelector('extensions-detail-view'); expectFalse(detailsView.showActivityLog); // Try to open activity log with an invalid ID.
diff --git a/chrome/test/data/webui/extensions/manager_unit_test.js b/chrome/test/data/webui/extensions/manager_unit_test.js index ff56e53..654bd0c2 100644 --- a/chrome/test/data/webui/extensions/manager_unit_test.js +++ b/chrome/test/data/webui/extensions/manager_unit_test.js
@@ -45,7 +45,7 @@ document.body.innerHTML = ''; service = new TestService(); - Service.instance_ = service; + Service.setInstance(service); manager = document.createElement('extensions-manager'); document.body.appendChild(manager); @@ -124,15 +124,17 @@ simulateExtensionInstall(extension); // The detail view is not present until navigation. - expectFalse(!!manager.$$('extensions-detail-view')); + expectFalse(!!manager.shadowRoot.querySelector('extensions-detail-view')); navigation.navigateTo({page: Page.DETAILS, extensionId: extension.id}); - const detailsView = manager.$$('extensions-detail-view'); + const detailsView = + manager.shadowRoot.querySelector('extensions-detail-view'); expectTrue(!!detailsView); // View should now be present. expectEquals(extension.id, detailsView.data.id); expectEquals(description, detailsView.data.description); expectEquals( description, - detailsView.$$('.section .section-content').textContent.trim()); + detailsView.shadowRoot.querySelector('.section .section-content') + .textContent.trim()); }); test( @@ -150,7 +152,8 @@ simulateExtensionInstall(secondExtension); navigation.navigateTo({page: Page.DETAILS, extensionId: extension.id}); - const detailsView = manager.$$('extensions-detail-view'); + const detailsView = + manager.shadowRoot.querySelector('extensions-detail-view'); let extensionCopy = Object.assign({}, extension); extensionCopy.description = newDescription; @@ -170,7 +173,8 @@ expectEquals(newDescription, detailsView.data.description); expectEquals( newDescription, - detailsView.$$('.section .section-content').textContent.trim()); + detailsView.shadowRoot.querySelector('.section .section-content') + .textContent.trim()); }); test(
diff --git a/chrome/test/data/webui/extensions/manager_unit_test_with_activity_log_flag.js b/chrome/test/data/webui/extensions/manager_unit_test_with_activity_log_flag.js index 4d90abc0..e53ec1a 100644 --- a/chrome/test/data/webui/extensions/manager_unit_test_with_activity_log_flag.js +++ b/chrome/test/data/webui/extensions/manager_unit_test_with_activity_log_flag.js
@@ -34,7 +34,7 @@ document.body.innerHTML = ''; service = new TestService(); - Service.instance_ = service; + Service.setInstance(service); manager = document.createElement('extensions-manager'); document.body.appendChild(manager); @@ -76,7 +76,8 @@ extensionId: extension.id, }); - const activityLog = manager.$$('extensions-activity-log'); + const activityLog = + manager.shadowRoot.querySelector('extensions-activity-log'); assertTrue(!!activityLog); // View should now be present. expectEquals(extension.id, activityLog.extensionInfo.id);
diff --git a/chrome/test/data/webui/extensions/options_dialog_test.js b/chrome/test/data/webui/extensions/options_dialog_test.js index 4f3355d0..6ac13c43 100644 --- a/chrome/test/data/webui/extensions/options_dialog_test.js +++ b/chrome/test/data/webui/extensions/options_dialog_test.js
@@ -61,7 +61,8 @@ assertEquals( data.name, - assert(optionsDialog.$$('#icon-and-name-wrapper span')) + assert(optionsDialog.shadowRoot.querySelector( + '#icon-and-name-wrapper span')) .textContent.trim()); }); });
diff --git a/chrome/test/data/webui/extensions/pack_dialog_test.js b/chrome/test/data/webui/extensions/pack_dialog_test.js index aaa8e4d2..ac17b64 100644 --- a/chrome/test/data/webui/extensions/pack_dialog_test.js +++ b/chrome/test/data/webui/extensions/pack_dialog_test.js
@@ -73,30 +73,33 @@ }); test(assert(extension_pack_dialog_tests.TestNames.Interaction), function() { - const dialogElement = packDialog.$$('cr-dialog').getNative(); + const dialogElement = + packDialog.shadowRoot.querySelector('cr-dialog').getNative(); expectTrue(isElementVisible(dialogElement)); - expectEquals('', packDialog.$$('#root-dir').value); - packDialog.$$('#root-dir-browse').click(); + expectEquals('', packDialog.shadowRoot.querySelector('#root-dir').value); + packDialog.shadowRoot.querySelector('#root-dir-browse').click(); expectTrue(!!mockDelegate.rootPromise); - expectEquals('', packDialog.$$('#root-dir').value); + expectEquals('', packDialog.shadowRoot.querySelector('#root-dir').value); const kRootPath = 'this/is/a/path'; const promises = []; promises.push(mockDelegate.rootPromise.promise.then(function() { - expectEquals(kRootPath, packDialog.$$('#root-dir').value); + expectEquals( + kRootPath, packDialog.shadowRoot.querySelector('#root-dir').value); expectEquals(kRootPath, packDialog.packDirectory_); })); flush(); - expectEquals('', packDialog.$$('#key-file').value); - packDialog.$$('#key-file-browse').click(); + expectEquals('', packDialog.shadowRoot.querySelector('#key-file').value); + packDialog.shadowRoot.querySelector('#key-file-browse').click(); expectTrue(!!mockDelegate.keyPromise); - expectEquals('', packDialog.$$('#key-file').value); + expectEquals('', packDialog.shadowRoot.querySelector('#key-file').value); const kKeyPath = 'here/is/another/path'; promises.push(mockDelegate.keyPromise.promise.then(function() { - expectEquals(kKeyPath, packDialog.$$('#key-file').value); + expectEquals( + kKeyPath, packDialog.shadowRoot.querySelector('#key-file').value); expectEquals(kKeyPath, packDialog.keyFile_); })); @@ -104,14 +107,15 @@ mockDelegate.keyPromise.resolve(kKeyPath); return Promise.all(promises).then(function() { - packDialog.$$('.action-button').click(); + packDialog.shadowRoot.querySelector('.action-button').click(); expectEquals(kRootPath, mockDelegate.rootPath); expectEquals(kKeyPath, mockDelegate.keyPath); }); }); test(assert(extension_pack_dialog_tests.TestNames.PackSuccess), function() { - const dialogElement = packDialog.$$('cr-dialog').getNative(); + const dialogElement = + packDialog.shadowRoot.querySelector('cr-dialog').getNative(); let packDialogAlert; let alertElement; @@ -122,26 +126,30 @@ status: chrome.developerPrivate.PackStatus.SUCCESS }; - packDialog.$$('#root-dir-browse').click(); + packDialog.shadowRoot.querySelector('#root-dir-browse').click(); mockDelegate.rootPromise.resolve(kRootPath); return mockDelegate.rootPromise.promise .then(() => { - expectEquals(kRootPath, packDialog.$$('#root-dir').value); - packDialog.$$('.action-button').click(); + expectEquals( + kRootPath, + packDialog.shadowRoot.querySelector('#root-dir').value); + packDialog.shadowRoot.querySelector('.action-button').click(); return flushTasks(); }) .then(() => { - packDialogAlert = packDialog.$$('extensions-pack-dialog-alert'); + packDialogAlert = packDialog.shadowRoot.querySelector( + 'extensions-pack-dialog-alert'); alertElement = packDialogAlert.$.dialog.getNative(); expectTrue(isElementVisible(alertElement)); expectTrue(isElementVisible(dialogElement)); - expectTrue(!!packDialogAlert.$$('.action-button')); + expectTrue( + !!packDialogAlert.shadowRoot.querySelector('.action-button')); const wait = eventToPromise('close', dialogElement); // After 'ok', both dialogs should be closed. - packDialogAlert.$$('.action-button').click(); + packDialogAlert.shadowRoot.querySelector('.action-button').click(); return wait; }) @@ -152,7 +160,8 @@ }); test(assert(extension_pack_dialog_tests.TestNames.PackError), function() { - const dialogElement = packDialog.$$('cr-dialog').getNative(); + const dialogElement = + packDialog.shadowRoot.querySelector('cr-dialog').getNative(); let packDialogAlert; let alertElement; @@ -163,32 +172,36 @@ status: chrome.developerPrivate.PackStatus.ERROR }; - packDialog.$$('#root-dir-browse').click(); + packDialog.shadowRoot.querySelector('#root-dir-browse').click(); mockDelegate.rootPromise.resolve(kRootPath); return mockDelegate.rootPromise.promise.then(() => { - expectEquals(kRootPath, packDialog.$$('#root-dir').value); - packDialog.$$('.action-button').click(); + expectEquals( + kRootPath, packDialog.shadowRoot.querySelector('#root-dir').value); + packDialog.shadowRoot.querySelector('.action-button').click(); flush(); // Make sure new alert and the appropriate buttons are visible. - packDialogAlert = packDialog.$$('extensions-pack-dialog-alert'); + packDialogAlert = + packDialog.shadowRoot.querySelector('extensions-pack-dialog-alert'); alertElement = packDialogAlert.$.dialog.getNative(); expectTrue(isElementVisible(alertElement)); expectTrue(isElementVisible(dialogElement)); - expectTrue(!!packDialogAlert.$$('.action-button')); + expectTrue(!!packDialogAlert.shadowRoot.querySelector('.action-button')); // After cancel, original dialog is still open and values unchanged. - packDialogAlert.$$('.action-button').click(); + packDialogAlert.shadowRoot.querySelector('.action-button').click(); flush(); expectFalse(isElementVisible(alertElement)); expectTrue(isElementVisible(dialogElement)); - expectEquals(kRootPath, packDialog.$$('#root-dir').value); + expectEquals( + kRootPath, packDialog.shadowRoot.querySelector('#root-dir').value); }); }); test(assert(extension_pack_dialog_tests.TestNames.PackWarning), function() { - const dialogElement = packDialog.$$('cr-dialog').getNative(); + const dialogElement = + packDialog.shadowRoot.querySelector('cr-dialog').getNative(); let packDialogAlert; let alertElement; @@ -202,26 +215,31 @@ override_flags: 1, }; - packDialog.$$('#root-dir-browse').click(); + packDialog.shadowRoot.querySelector('#root-dir-browse').click(); mockDelegate.rootPromise.resolve(kRootPath); return mockDelegate.rootPromise.promise .then(() => { - expectEquals(kRootPath, packDialog.$$('#root-dir').value); - packDialog.$$('.action-button').click(); + expectEquals( + kRootPath, + packDialog.shadowRoot.querySelector('#root-dir').value); + packDialog.shadowRoot.querySelector('.action-button').click(); flush(); // Make sure new alert and the appropriate buttons are visible. - packDialogAlert = packDialog.$$('extensions-pack-dialog-alert'); + packDialogAlert = packDialog.shadowRoot.querySelector( + 'extensions-pack-dialog-alert'); alertElement = packDialogAlert.$.dialog.getNative(); expectTrue(isElementVisible(alertElement)); expectTrue(isElementVisible(dialogElement)); - expectFalse(packDialogAlert.$$('.cancel-button').hidden); - expectFalse(packDialogAlert.$$('.action-button').hidden); + expectFalse(packDialogAlert.shadowRoot.querySelector('.cancel-button') + .hidden); + expectFalse(packDialogAlert.shadowRoot.querySelector('.action-button') + .hidden); // Make sure "proceed anyway" try to pack extension again. const whenClosed = eventToPromise('close', packDialogAlert); - packDialogAlert.$$('.action-button').click(); + packDialogAlert.shadowRoot.querySelector('.action-button').click(); return whenClosed; }) .then(() => {
diff --git a/chrome/test/data/webui/extensions/runtime_host_permissions_test.js b/chrome/test/data/webui/extensions/runtime_host_permissions_test.js index 2604102..de75495 100644 --- a/chrome/test/data/webui/extensions/runtime_host_permissions_test.js +++ b/chrome/test/data/webui/extensions/runtime_host_permissions_test.js
@@ -52,7 +52,7 @@ const testIsVisible = isChildVisible.bind(null, element); expectTrue(testIsVisible('#host-access')); - const selectHostAccess = element.$$('#host-access'); + const selectHostAccess = element.shadowRoot.querySelector('#host-access'); expectEquals(HostAccess.ON_CLICK, selectHostAccess.selected); // For on-click mode, there should be no runtime hosts listed. expectFalse(testIsVisible('#hosts')); @@ -74,7 +74,11 @@ expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.selected); expectTrue(testIsVisible('#hosts')); // Expect three entries in the list: the two hosts + the add-host button. - expectEquals(3, element.$$('#hosts').getElementsByTagName('li').length); + expectEquals( + 3, + element.shadowRoot.querySelector('#hosts') + .getElementsByTagName('li') + .length); expectTrue(testIsVisible('#add-host')); }); @@ -88,7 +92,7 @@ element.set('permissions', permissions); flush(); - const selectHostAccess = element.$$('#host-access'); + const selectHostAccess = element.shadowRoot.querySelector('#host-access'); assertTrue(!!selectHostAccess); // Changes the value of the selectHostAccess menu and fires the change @@ -127,13 +131,14 @@ element.permissions = permissions; flush(); - const selectHostAccess = element.$$('#host-access'); + const selectHostAccess = element.shadowRoot.querySelector('#host-access'); assertTrue(!!selectHostAccess); selectHostAccess.selected = HostAccess.ON_SPECIFIC_SITES; flush(); - const dialog = element.$$('extensions-runtime-hosts-dialog'); + const dialog = + element.shadowRoot.querySelector('extensions-runtime-hosts-dialog'); assertTrue(!!dialog); expectEquals( getUserActionCount('Extensions.Settings.Hosts.OnClickSelected'), 0); @@ -147,7 +152,7 @@ // since no host was added. assertTrue(dialog.isOpen()); let whenClosed = eventToPromise('close', dialog); - dialog.$$('.cancel-button').click(); + dialog.shadowRoot.querySelector('.cancel-button').click(); await whenClosed; flush(); @@ -177,7 +182,7 @@ element.set('permissions', permissions); flush(); - const selectHostAccess = element.$$('#host-access'); + const selectHostAccess = element.shadowRoot.querySelector('#host-access'); assertTrue(!!selectHostAccess); selectHostAccess.selected = HostAccess.ON_SPECIFIC_SITES; @@ -186,13 +191,14 @@ 1); flush(); - const dialog = element.$$('extensions-runtime-hosts-dialog'); + const dialog = + element.shadowRoot.querySelector('extensions-runtime-hosts-dialog'); assertTrue(!!dialog); expectTrue(dialog.updateHostAccess); // Make the add button clickable by entering valid input. - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); input.value = 'https://example.com'; input.fire('input'); @@ -200,7 +206,7 @@ // selectHostAccess value at ON_SPECIFIC_SITES. assertTrue(dialog.isOpen()); let whenClosed = eventToPromise('close', dialog); - dialog.$$('.action-button').click(); + dialog.shadowRoot.querySelector('.action-button').click(); return whenClosed.then(() => { flush(); expectEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.selected); @@ -222,11 +228,11 @@ flush(); // Open the dialog by clicking to edit the host permission. - const editHost = element.$$('.edit-host'); + const editHost = element.shadowRoot.querySelector('.edit-host'); editHost.click(); expectEquals( getUserActionCount('Extensions.Settings.Hosts.ActionMenuOpened'), 1); - const actionMenu = element.$$('cr-action-menu'); + const actionMenu = element.shadowRoot.querySelector('cr-action-menu'); const actionMenuEdit = actionMenu.querySelector('#action-menu-edit'); assertTrue(!!actionMenuEdit); actionMenuEdit.click(); @@ -238,7 +244,8 @@ // Verify that the dialog does not want to update the old host access. // Regression test for https://crbug.com/903082. - const dialog = element.$$('extensions-runtime-hosts-dialog'); + const dialog = + element.shadowRoot.querySelector('extensions-runtime-hosts-dialog'); assertTrue(!!dialog); expectTrue(dialog.$.dialog.open); expectFalse(dialog.updateHostAccess); @@ -260,7 +267,7 @@ element.set('permissions', permissions); flush(); - const addHostButton = element.$$('#add-host'); + const addHostButton = element.shadowRoot.querySelector('#add-host'); assertTrue(!!addHostButton); expectTrue(isChildVisible(element, '#add-host')); @@ -268,7 +275,8 @@ flush(); expectEquals( getUserActionCount('Extensions.Settings.Hosts.AddHostActivated'), 1); - const dialog = element.$$('extensions-runtime-hosts-dialog'); + const dialog = + element.shadowRoot.querySelector('extensions-runtime-hosts-dialog'); assertTrue(!!dialog); expectTrue(dialog.$.dialog.open); expectEquals(null, dialog.currentSite); @@ -288,12 +296,12 @@ element.set('permissions', permissions); flush(); - const editHost = element.$$('.edit-host'); + const editHost = element.shadowRoot.querySelector('.edit-host'); assertTrue(!!editHost); editHost.click(); expectEquals( getUserActionCount('Extensions.Settings.Hosts.ActionMenuOpened'), 1); - const actionMenu = element.$$('cr-action-menu'); + const actionMenu = element.shadowRoot.querySelector('cr-action-menu'); assertTrue(!!actionMenu); expectTrue(actionMenu.open); @@ -325,16 +333,17 @@ element.set('permissions', permissions); flush(); - const editHost = element.$$('.edit-host'); + const editHost = element.shadowRoot.querySelector('.edit-host'); editHost.click(); - const actionMenu = element.$$('cr-action-menu'); + const actionMenu = element.shadowRoot.querySelector('cr-action-menu'); const actionMenuEdit = actionMenu.querySelector('#action-menu-edit'); assertTrue(!!actionMenuEdit); actionMenuEdit.click(); flush(); - const dialog = element.$$('extensions-runtime-hosts-dialog'); + const dialog = + element.shadowRoot.querySelector('extensions-runtime-hosts-dialog'); assertTrue(!!dialog); expectTrue(dialog.$.dialog.open); expectFalse(dialog.updateHostAccess);
diff --git a/chrome/test/data/webui/extensions/runtime_hosts_dialog_test.js b/chrome/test/data/webui/extensions/runtime_hosts_dialog_test.js index 95b24f7e..05a57c1 100644 --- a/chrome/test/data/webui/extensions/runtime_hosts_dialog_test.js +++ b/chrome/test/data/webui/extensions/runtime_hosts_dialog_test.js
@@ -32,7 +32,7 @@ }); test('valid input', function() { - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); const site = 'http://www.example.com'; input.value = site; input.fire('input'); @@ -52,7 +52,7 @@ test('invalid input', function() { // Initially the action button should be disabled, but the error warning // should not be shown for an empty input. - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); assertFalse(input.invalid); const submit = dialog.$.submit; assertTrue(submit.disabled); @@ -74,7 +74,7 @@ test('delegate indicates invalid input', function() { delegate.acceptRuntimeHostPermission = false; - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); const site = 'http://....a'; input.value = site; input.fire('input'); @@ -94,7 +94,7 @@ const newPattern = 'http://chromium.org/*'; dialog.currentSite = oldPattern; - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); input.value = newPattern; input.fire('input'); const submit = dialog.$.submit; @@ -140,7 +140,7 @@ test('update site access', function() { dialog.updateHostAccess = true; - const input = dialog.$$('cr-input'); + const input = dialog.shadowRoot.querySelector('cr-input'); const site = 'http://www.example.com'; input.value = site; input.fire('input');
diff --git a/chrome/test/data/webui/extensions/sidebar_test.js b/chrome/test/data/webui/extensions/sidebar_test.js index 867d9b0..80e5eed 100644 --- a/chrome/test/data/webui/extensions/sidebar_test.js +++ b/chrome/test/data/webui/extensions/sidebar_test.js
@@ -32,7 +32,7 @@ test(assert(extension_sidebar_tests.TestNames.SetSelected), function() { const selector = '.section-item.iron-selected'; - expectFalse(!!sidebar.$$(selector)); + expectFalse(!!sidebar.shadowRoot.querySelector(selector)); window.history.replaceState(undefined, '', '/shortcuts'); document.body.innerHTML = ''; @@ -42,7 +42,9 @@ flush(); return whenSelected .then(function() { - expectEquals(sidebar.$$(selector).id, 'sections-shortcuts'); + expectEquals( + sidebar.shadowRoot.querySelector(selector).id, + 'sections-shortcuts'); window.history.replaceState(undefined, '', '/'); document.body.innerHTML = ''; @@ -54,7 +56,9 @@ return whenSelected; }) .then(function() { - expectEquals(sidebar.$$(selector).id, 'sections-extensions'); + expectEquals( + sidebar.shadowRoot.querySelector(selector).id, + 'sections-extensions'); }); }); @@ -71,14 +75,14 @@ currentPage = newPage; }); - sidebar.$$('#sections-shortcuts').click(); + sidebar.shadowRoot.querySelector('#sections-shortcuts').click(); expectDeepEquals(currentPage, {page: Page.SHORTCUTS}); - sidebar.$$('#sections-extensions').click(); + sidebar.shadowRoot.querySelector('#sections-extensions').click(); expectDeepEquals(currentPage, {page: Page.LIST}); // Clicking on the link for the current page should close the dialog. sidebar.addEventListener('close-drawer', () => done()); - sidebar.$$('#sections-extensions').click(); + sidebar.shadowRoot.querySelector('#sections-extensions').click(); }); });
diff --git a/chrome/test/data/webui/extensions/toolbar_test.js b/chrome/test/data/webui/extensions/toolbar_test.js index 617f9d9..440b715 100644 --- a/chrome/test/data/webui/extensions/toolbar_test.js +++ b/chrome/test/data/webui/extensions/toolbar_test.js
@@ -133,10 +133,12 @@ }) .then(function() { assertEquals(1, mockDelegate.getCallCount('updateAllExtensions')); - assertFalse(!!toolbar.$$('extensions-pack-dialog')); + assertFalse( + !!toolbar.shadowRoot.querySelector('extensions-pack-dialog')); toolbar.$.packExtensions.click(); flush(); - const dialog = toolbar.$$('extensions-pack-dialog'); + const dialog = + toolbar.shadowRoot.querySelector('extensions-pack-dialog'); assertTrue(!!dialog); if (!isMac) {
diff --git a/chrome/test/data/webui/print_preview/destination_select_test_cros.js b/chrome/test/data/webui/print_preview/destination_select_test_cros.js index 7600e3d..1092b71 100644 --- a/chrome/test/data/webui/print_preview/destination_select_test_cros.js +++ b/chrome/test/data/webui/print_preview/destination_select_test_cros.js
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {Destination, DestinationConnectionStatus, DestinationOrigin, DestinationType, getSelectDropdownBackground, NativeLayer, NativeLayerCros, NativeLayerCrosImpl, NativeLayerImpl, PrinterStatus, PrinterStatusReason, PrinterStatusSeverity, SAVE_TO_DRIVE_CROS_DESTINATION_KEY} from 'chrome://print/print_preview.js'; +import {Destination, DestinationConnectionStatus, DestinationOrigin, DestinationType, NativeLayer, NativeLayerCros, NativeLayerCrosImpl, NativeLayerImpl, PrinterStatus, PrinterStatusReason, PrinterStatusSeverity, SAVE_TO_DRIVE_CROS_DESTINATION_KEY} from 'chrome://print/print_preview.js'; import {assert} from 'chrome://resources/js/assert.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {Base, flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; @@ -12,7 +12,7 @@ import {NativeLayerCrosStub} from './native_layer_cros_stub.js'; import {NativeLayerStub} from './native_layer_stub.js'; -import {getGoogleDriveDestination, getSaveAsPdfDestination, selectOption} from './print_preview_test_utils.js'; +import {getGoogleDriveDestination, getSaveAsPdfDestination} from './print_preview_test_utils.js'; window.printer_status_test_cros = {}; const printer_status_test_cros = window.printer_status_test_cros; @@ -399,210 +399,3 @@ }); }); }); - -window.destination_select_test_cros = {}; -const destination_select_test_cros = window.destination_select_test_cros; -destination_select_test_cros.suiteName = 'DestinationSelectTestCros'; -/** @enum {string} */ -destination_select_test_cros.TestNames = { - UpdateStatus: 'update status', - ChangeIcon: 'change icon', - EulaIsDisplayed: 'eula is displayed', -}; - -suite(destination_select_test_cros.suiteName, function() { - /** @type {!PrintPreviewDestinationSelectCrosElement} */ - let destinationSelect; - - /** @type {string} */ - const account = 'foo@chromium.org'; - - /** @type {!DestinationOrigin} */ - const cookieOrigin = DestinationOrigin.COOKIES; - - /** @type {string} */ - const driveKey = - `${Destination.GooglePromotedId.DOCS}/${cookieOrigin}/${account}`; - - /** @type {!Array<!Destination>} */ - let recentDestinationList = []; - - const meta = /** @type {!IronMetaElement} */ ( - Base.create('iron-meta', {type: 'iconset'})); - - /** @override */ - setup(function() { - document.body.innerHTML = ''; - - destinationSelect = - /** @type {!PrintPreviewDestinationSelectCrosElement} */ - (document.createElement('print-preview-destination-select-cros')); - destinationSelect.activeUser = account; - destinationSelect.appKioskMode = false; - destinationSelect.disabled = false; - destinationSelect.loaded = false; - destinationSelect.noDestinations = false; - populateRecentDestinationList(); - destinationSelect.recentDestinationList = recentDestinationList; - - document.body.appendChild(destinationSelect); - }); - - // Create three different destinations and use them to populate - // |recentDestinationList|. - function populateRecentDestinationList() { - recentDestinationList = [ - new Destination( - 'ID1', DestinationType.LOCAL, DestinationOrigin.LOCAL, 'One', - DestinationConnectionStatus.ONLINE), - new Destination( - 'ID2', DestinationType.GOOGLE, cookieOrigin, 'Two', - DestinationConnectionStatus.OFFLINE, {account: account}), - new Destination( - 'ID3', DestinationType.GOOGLE, cookieOrigin, 'Three', - DestinationConnectionStatus.ONLINE, - {account: account, isOwned: true}), - ]; - } - - function compareIcon(selectEl, expectedIcon) { - const icon = selectEl.style['background-image'].replace(/ /gi, ''); - const expected = getSelectDropdownBackground( - /** @type {!IronIconsetSvgElement} */ - (meta.byKey('print-preview')), expectedIcon, destinationSelect); - assertEquals(expected, icon); - } - - /** - * Test that changing different destinations results in the correct icon being - * shown. - * @return {!Promise} Promise that resolves when the test finishes. - */ - function testChangeIcon() { - let selectEl; - - return waitBeforeNextRender(destinationSelect) - .then(() => { - const destination = recentDestinationList[0]; - destinationSelect.destination = destination; - destinationSelect.updateDestination(); - destinationSelect.loaded = true; - selectEl = destinationSelect.$$('.md-select'); - compareIcon(selectEl, 'print'); - destinationSelect.driveDestinationKey = driveKey; - - return selectOption( - destinationSelect, - driveKey); - }) - .then(() => { - // Icon updates early based on the ID. - compareIcon(selectEl, 'save-to-drive'); - - // Update the destination. - destinationSelect.destination = getGoogleDriveDestination(account); - - // Still Save to Drive icon. - compareIcon(selectEl, 'save-to-drive'); - - // Select a destination with the shared printer icon. - return selectOption( - destinationSelect, `ID2/${cookieOrigin}/${account}`); - }) - .then(() => { - // Should already be updated. - compareIcon(selectEl, 'printer-shared'); - - // Update destination. - destinationSelect.destination = recentDestinationList[1]; - compareIcon(selectEl, 'printer-shared'); - - // Select a destination with a standard printer icon. - return selectOption( - destinationSelect, `ID3/${cookieOrigin}/${account}`); - }) - .then(() => { - compareIcon(selectEl, 'print'); - - // Update destination. - destinationSelect.destination = recentDestinationList[2]; - compareIcon(selectEl, 'print'); - }); - } - - /** - * Test that changing different destinations results in the correct status - * being shown. - */ - function testUpdateStatus() { - loadTimeData.overrideValues({ - offline: 'offline', - printerNotSupportedWarning: 'printerNotSupportedWarning', - }); - - assertFalse(destinationSelect.$$('.throbber-container').hidden); - assertTrue(destinationSelect.$$('.md-select').hidden); - - destinationSelect.loaded = true; - assertTrue(destinationSelect.$$('.throbber-container').hidden); - assertFalse(destinationSelect.$$('.md-select').hidden); - - const additionalInfoEl = - destinationSelect.$$('.destination-additional-info'); - const statusEl = destinationSelect.$$('#statusText'); - - destinationSelect.driveDestinationKey = driveKey; - destinationSelect.destination = getGoogleDriveDestination(account); - destinationSelect.updateDestination(); - assertTrue(additionalInfoEl.hidden); - assertEquals('', statusEl.innerHTML); - - destinationSelect.destination = recentDestinationList[0]; - destinationSelect.updateDestination(); - assertTrue(additionalInfoEl.hidden); - assertEquals('', statusEl.innerHTML); - - destinationSelect.destination = recentDestinationList[1]; - destinationSelect.updateDestination(); - assertFalse(additionalInfoEl.hidden); - assertEquals('offline', statusEl.innerHTML); - - destinationSelect.destination = recentDestinationList[2]; - destinationSelect.updateDestination(); - assertTrue(additionalInfoEl.hidden); - assertEquals('', statusEl.innerHTML); - } - - test(assert(destination_select_test_cros.TestNames.UpdateStatus), function() { - populateRecentDestinationList(); - destinationSelect.recentDestinationList = recentDestinationList; - - return waitBeforeNextRender(destinationSelect).then(() => { - testUpdateStatus(); - }); - }); - - test(assert(destination_select_test_cros.TestNames.ChangeIcon), function() { - populateRecentDestinationList(); - destinationSelect.recentDestinationList = recentDestinationList; - - return testChangeIcon(); - }); - - /** - * Tests that destinations with a EULA will display the EULA URL. - */ - test( - assert(destination_select_test_cros.TestNames.EulaIsDisplayed), - function() { - destinationSelect.destination = recentDestinationList[0]; - destinationSelect.loaded = true; - const destinationEulaWrapper = - destinationSelect.$$('#destinationEulaWrapper'); - assertTrue(destinationEulaWrapper.hidden); - - destinationSelect.set( - 'destination.eulaUrl', 'chrome://os-credits/eula'); - assertFalse(destinationEulaWrapper.hidden); - }); -});
diff --git a/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js index 20118de..0098ba73 100644 --- a/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js +++ b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js
@@ -1313,52 +1313,6 @@ GEN('#if defined(OS_CHROMEOS)'); // eslint-disable-next-line no-var -var PrintPreviewDestinationSelectTestCrOS = class extends PrintPreviewTest { - /** @override */ - get browsePreload() { - return 'chrome://print/test_loader.html?module=print_preview/destination_select_test_cros.js'; - } - - /** @override */ - get suiteName() { - return destination_select_test_cros.suiteName; - } - - /** @override */ - get featureList() { - const kPrinterStatus = ['chromeos::features::kPrinterStatus']; - const featureList = super.featureList || []; - featureList.disabled = featureList.disabled ? - featureList.disabled.concat(kPrinterStatus) : - kPrinterStatus; - return featureList; - } -}; - -// TODO(crbug.com/1207745): Remove once the tests pass on Lacros. -GEN(`#if BUILDFLAG(IS_CHROMEOS_LACROS) -#define MAYBE_UpdateStatus DISABLED_UpdateStatus -#define MAYBE_ChangeIcon DISABLED_ChangeIcon -#else -#define MAYBE_UpdateStatus UpdateStatus -#define MAYBE_ChangeIcon ChangeIcon -#endif -`); - -TEST_F( - 'PrintPreviewDestinationSelectTestCrOS', 'MAYBE_UpdateStatus', function() { - this.runMochaTest(destination_select_test_cros.TestNames.UpdateStatus); - }); - -TEST_F('PrintPreviewDestinationSelectTestCrOS', 'MAYBE_ChangeIcon', function() { - this.runMochaTest(destination_select_test_cros.TestNames.ChangeIcon); -}); - -TEST_F('PrintPreviewDestinationSelectTestCrOS', 'EulaIsDisplayed', function() { - this.runMochaTest(destination_select_test_cros.TestNames.EulaIsDisplayed); -}); - -// eslint-disable-next-line no-var var PrintPreviewPrinterStatusTestCros = class extends PrintPreviewTest { /** @override */ get browsePreload() { @@ -1369,16 +1323,6 @@ get suiteName() { return printer_status_test_cros.suiteName; } - - /** @override */ - get featureList() { - const kPrinterStatus = ['chromeos::features::kPrinterStatus']; - const featureList = super.featureList || []; - featureList.enabled = featureList.enabled ? - featureList.enabled.concat(kPrinterStatus) : - kPrinterStatus; - return featureList; - } }; TEST_F(
diff --git a/chrome/test/data/webui/settings/chromeos/os_about_page_tests.js b/chrome/test/data/webui/settings/chromeos/os_about_page_tests.js index e0863e9b..59bd9f4 100644 --- a/chrome/test/data/webui/settings/chromeos/os_about_page_tests.js +++ b/chrome/test/data/webui/settings/chromeos/os_about_page_tests.js
@@ -838,7 +838,8 @@ Polymer.dom.flush(); - const deepLinkElement = page.$$('#reportIssue').$$('cr-icon-button'); + const deepLinkElement = + page.$$('#reportIssue').shadowRoot.querySelector('cr-icon-button'); await test_util.waitAfterNextRender(deepLinkElement); assertEquals( deepLinkElement, getDeepActiveElement(),
diff --git a/chromecast/media/cma/backend/mixer/post_processing_pipeline_parser.h b/chromecast/media/cma/backend/mixer/post_processing_pipeline_parser.h index 1bd291c..f0e7c64 100644 --- a/chromecast/media/cma/backend/mixer/post_processing_pipeline_parser.h +++ b/chromecast/media/cma/backend/mixer/post_processing_pipeline_parser.h
@@ -9,7 +9,6 @@ #include <string> #include <vector> -#include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/macros.h" #include "base/values.h"
diff --git a/chromecast/media/cma/backend/mixer/stream_mixer.h b/chromecast/media/cma/backend/mixer/stream_mixer.h index aeb4aa8a..14a95c4 100644 --- a/chromecast/media/cma/backend/mixer/stream_mixer.h +++ b/chromecast/media/cma/backend/mixer/stream_mixer.h
@@ -14,7 +14,6 @@ #include "base/callback.h" #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h"
diff --git a/chromecast/media/common/media_pipeline_backend_manager.h b/chromecast/media/common/media_pipeline_backend_manager.h index 1f38068..235b6a8 100644 --- a/chromecast/media/common/media_pipeline_backend_manager.h +++ b/chromecast/media/common/media_pipeline_backend_manager.h
@@ -10,7 +10,6 @@ #include <vector> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h"
diff --git a/chromeos/components/phonehub/fake_notification_manager.h b/chromeos/components/phonehub/fake_notification_manager.h index 0fbacc93..bbb9dbf 100644 --- a/chromeos/components/phonehub/fake_notification_manager.h +++ b/chromeos/components/phonehub/fake_notification_manager.h
@@ -7,7 +7,6 @@ #include <vector> -#include "base/containers/flat_set.h" #include "chromeos/components/phonehub/notification.h" #include "chromeos/components/phonehub/notification_manager.h"
diff --git a/chromeos/components/proximity_auth/metrics.cc b/chromeos/components/proximity_auth/metrics.cc index 329468c..9f7a371 100644 --- a/chromeos/components/proximity_auth/metrics.cc +++ b/chromeos/components/proximity_auth/metrics.cc
@@ -9,11 +9,11 @@ #include <algorithm> #include "base/check_op.h" +#include "base/cxx17_backports.h" #include "base/hash/md5.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/numerics/ranges.h" -#include "base/stl_util.h" #include "base/sys_byteorder.h" namespace proximity_auth {
diff --git a/chromeos/components/string_matching/tokenized_string_match_unittest.cc b/chromeos/components/string_matching/tokenized_string_match_unittest.cc index 210c06a..a19e8f1 100644 --- a/chromeos/components/string_matching/tokenized_string_match_unittest.cc +++ b/chromeos/components/string_matching/tokenized_string_match_unittest.cc
@@ -8,7 +8,7 @@ #include <string> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chromeos/dbus/shill/shill_third_party_vpn_driver_client.cc b/chromeos/dbus/shill/shill_third_party_vpn_driver_client.cc index 96fabb3..23d79e3 100644 --- a/chromeos/dbus/shill/shill_third_party_vpn_driver_client.cc +++ b/chromeos/dbus/shill/shill_third_party_vpn_driver_client.cc
@@ -12,8 +12,8 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/cxx17_backports.h" #include "base/logging.h" -#include "base/stl_util.h" #include "base/values.h" #include "chromeos/dbus/shill/fake_shill_third_party_vpn_driver_client.h" #include "chromeos/dbus/shill/shill_third_party_vpn_observer.h"
diff --git a/chromeos/dbus/update_engine_client.cc b/chromeos/dbus/update_engine_client.cc index 624c4ab..afbd54b1 100644 --- a/chromeos/dbus/update_engine_client.cc +++ b/chromeos/dbus/update_engine_client.cc
@@ -13,10 +13,10 @@ #include "base/bind.h" #include "base/callback.h" #include "base/command_line.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/logging.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/threading/thread_task_runner_handle.h" #include "chromeos/dbus/constants/dbus_switches.h"
diff --git a/chromeos/dbus/userdataauth/fake_cryptohome_misc_client.cc b/chromeos/dbus/userdataauth/fake_cryptohome_misc_client.cc index 7dff413..11c9110 100644 --- a/chromeos/dbus/userdataauth/fake_cryptohome_misc_client.cc +++ b/chromeos/dbus/userdataauth/fake_cryptohome_misc_client.cc
@@ -4,9 +4,9 @@ #include "chromeos/dbus/userdataauth/fake_cryptohome_misc_client.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "base/threading/thread_task_runner_handle.h" #include "chromeos/dbus/userdataauth/userdataauth_client.h"
diff --git a/chromeos/disks/disk_mount_manager_unittest.cc b/chromeos/disks/disk_mount_manager_unittest.cc index 701909a6..c2a0ba4 100644 --- a/chromeos/disks/disk_mount_manager_unittest.cc +++ b/chromeos/disks/disk_mount_manager_unittest.cc
@@ -11,8 +11,8 @@ #include <vector> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/run_loop.h" -#include "base/stl_util.h" #include "base/strings/stringprintf.h" #include "base/test/task_environment.h" #include "chromeos/dbus/dbus_thread_manager.h"
diff --git a/chromeos/geolocation/geoposition.cc b/chromeos/geolocation/geoposition.cc index a05bb82..3bd1e05 100644 --- a/chromeos/geolocation/geoposition.cc +++ b/chromeos/geolocation/geoposition.cc
@@ -4,7 +4,7 @@ #include "chromeos/geolocation/geoposition.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/stringprintf.h" namespace {
diff --git a/chromeos/network/network_device_handler_impl.cc b/chromeos/network/network_device_handler_impl.cc index c447a18..b091d9a 100644 --- a/chromeos/network/network_device_handler_impl.cc +++ b/chromeos/network/network_device_handler_impl.cc
@@ -14,9 +14,9 @@ #include "ash/constants/ash_features.h" #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/system/sys_info.h" #include "base/threading/thread_task_runner_handle.h"
diff --git a/chromeos/network/network_type_pattern.cc b/chromeos/network/network_type_pattern.cc index 99f483b7..414b956 100644 --- a/chromeos/network/network_type_pattern.cc +++ b/chromeos/network/network_type_pattern.cc
@@ -6,8 +6,8 @@ #include <stddef.h> +#include "base/cxx17_backports.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "chromeos/network/network_event_log.h" #include "chromeos/network/tether_constants.h" #include "third_party/cros_system_api/dbus/service_constants.h"
diff --git a/chromeos/process_proxy/process_output_watcher.cc b/chromeos/process_proxy/process_output_watcher.cc index 5b33a2d..9b5af9e 100644 --- a/chromeos/process_proxy/process_output_watcher.cc +++ b/chromeos/process_proxy/process_output_watcher.cc
@@ -11,11 +11,11 @@ #include <cstdio> #include <cstring> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/logging.h" #include "base/posix/eintr_wrapper.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/third_party/icu/icu_utf.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h"
diff --git a/chromeos/process_proxy/process_proxy_unittest.cc b/chromeos/process_proxy/process_proxy_unittest.cc index c1cc4d8..c63224a 100644 --- a/chromeos/process_proxy/process_proxy_unittest.cc +++ b/chromeos/process_proxy/process_proxy_unittest.cc
@@ -11,12 +11,12 @@ #include "base/at_exit.h" #include "base/bind.h" #include "base/command_line.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/process/kill.h" #include "base/process/process.h" #include "base/run_loop.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/test/task_environment.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread.h"
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index 6412e6bc..b334404b 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-92-4484.0-1621849150-benchmark-92.0.4515.28-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-92-4484.0-1621849150-benchmark-92.0.4515.32-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index b4f1843..e7a1b05f 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-92-4484.0-1621852288-benchmark-92.0.4515.28-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-92-4484.0-1621852288-benchmark-92.0.4515.32-r1-redacted.afdo.xz
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/bn_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/bn_phone.cc index 0b965ade..ba99cdf 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/bn_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/bn_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/bn_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace bn_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/deva_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/deva_phone.cc index 0fc15a9..a1e9564 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/deva_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/deva_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/deva_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace deva_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/ethi.cc b/chromeos/services/ime/public/cpp/rulebased/def/ethi.cc index ac5015a..7c72387 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/ethi.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/ethi.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/ethi.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace ethi {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/gu_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/gu_phone.cc index 757d726..5bf6f13e 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/gu_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/gu_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/gu_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace gu_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/kn_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/kn_phone.cc index ee239a1..c831184 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/kn_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/kn_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/kn_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace kn_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/ml_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/ml_phone.cc index d211ff9..2eeafd8 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/ml_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/ml_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/ml_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace ml_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/my.cc b/chromeos/services/ime/public/cpp/rulebased/def/my.cc index d05eda5a..89f29ae 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/my.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/my.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/my.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace my {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/my_myansan.cc b/chromeos/services/ime/public/cpp/rulebased/def/my_myansan.cc index d20b583..7e2f07a 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/my_myansan.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/my_myansan.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/my_myansan.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace my_myansan {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/si.cc b/chromeos/services/ime/public/cpp/rulebased/def/si.cc index d1ae97c..ffa2375f 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/si.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/si.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/si.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace si {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/ta_itrans.cc b/chromeos/services/ime/public/cpp/rulebased/def/ta_itrans.cc index 4ec09162..e78888f7 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/ta_itrans.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/ta_itrans.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/ta_itrans.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace ta_itrans {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/ta_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/ta_phone.cc index f69910b..5b03317b 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/ta_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/ta_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/ta_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace ta_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/ta_tamil99.cc b/chromeos/services/ime/public/cpp/rulebased/def/ta_tamil99.cc index 6cfabd7..0e9c1d56 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/ta_tamil99.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/ta_tamil99.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/ta_tamil99.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace ta_tamil99 {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/te_phone.cc b/chromeos/services/ime/public/cpp/rulebased/def/te_phone.cc index db404d4..c2f71504 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/te_phone.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/te_phone.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/te_phone.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace te_phone {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/vi_tcvn.cc b/chromeos/services/ime/public/cpp/rulebased/def/vi_tcvn.cc index 902d5ce..619c982 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/vi_tcvn.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/vi_tcvn.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/vi_tcvn.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace vi_tcvn {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/vi_telex.cc b/chromeos/services/ime/public/cpp/rulebased/def/vi_telex.cc index 3ee91e54..133e023 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/vi_telex.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/vi_telex.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/vi_telex.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace vi_telex {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/vi_viqr.cc b/chromeos/services/ime/public/cpp/rulebased/def/vi_viqr.cc index 6f23b13..0ff328d 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/vi_viqr.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/vi_viqr.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/vi_viqr.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace vi_viqr {
diff --git a/chromeos/services/ime/public/cpp/rulebased/def/vi_vni.cc b/chromeos/services/ime/public/cpp/rulebased/def/vi_vni.cc index 5ac5f6b..0083566 100644 --- a/chromeos/services/ime/public/cpp/rulebased/def/vi_vni.cc +++ b/chromeos/services/ime/public/cpp/rulebased/def/vi_vni.cc
@@ -4,7 +4,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/def/vi_vni.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace vi_vni {
diff --git a/chromeos/services/ime/public/cpp/rulebased/rulebased_fuzzer.cc b/chromeos/services/ime/public/cpp/rulebased/rulebased_fuzzer.cc index 7311199a..93808e2 100644 --- a/chromeos/services/ime/public/cpp/rulebased/rulebased_fuzzer.cc +++ b/chromeos/services/ime/public/cpp/rulebased/rulebased_fuzzer.cc
@@ -5,7 +5,7 @@ #include <stddef.h> #include <stdint.h> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "chromeos/services/ime/public/cpp/rulebased/def/us.h" #include "chromeos/services/ime/public/cpp/rulebased/engine.h" #include "chromeos/services/ime/public/cpp/rulebased/rulebased_fuzzer.pb.h"
diff --git a/chromeos/services/ime/public/cpp/rulebased/rulebased_unittest.cc b/chromeos/services/ime/public/cpp/rulebased/rulebased_unittest.cc index 1e23d39..096de7b 100644 --- a/chromeos/services/ime/public/cpp/rulebased/rulebased_unittest.cc +++ b/chromeos/services/ime/public/cpp/rulebased/rulebased_unittest.cc
@@ -4,7 +4,7 @@ #include <memory> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "chromeos/services/ime/public/cpp/rulebased/def/us.h" #include "chromeos/services/ime/public/cpp/rulebased/engine.h" #include "chromeos/services/ime/public/cpp/rulebased/rules_data.h"
diff --git a/chromeos/services/ime/public/cpp/rulebased/rules_data.cc b/chromeos/services/ime/public/cpp/rulebased/rules_data.cc index 8b6a97b..6df7b31 100644 --- a/chromeos/services/ime/public/cpp/rulebased/rules_data.cc +++ b/chromeos/services/ime/public/cpp/rulebased/rules_data.cc
@@ -5,7 +5,7 @@ #include "chromeos/services/ime/public/cpp/rulebased/rules_data.h" #include "base/containers/contains.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/utf_string_conversions.h" #include "chromeos/services/ime/public/cpp/rulebased/def/ar.h" #include "chromeos/services/ime/public/cpp/rulebased/def/bn_phone.h"
diff --git a/chromeos/services/libassistant/grpc/assistant_client_impl.h b/chromeos/services/libassistant/grpc/assistant_client_impl.h index 5ab305f..43538f9e2 100644 --- a/chromeos/services/libassistant/grpc/assistant_client_impl.h +++ b/chromeos/services/libassistant/grpc/assistant_client_impl.h
@@ -8,7 +8,6 @@ #include <memory> #include <string> -#include "base/containers/flat_set.h" #include "base/memory/weak_ptr.h" #include "base/sequenced_task_runner.h" #include "chromeos/services/libassistant/grpc/assistant_client.h"
diff --git a/chromeos/services/libassistant/grpc/external_services/grpc_services_initializer.h b/chromeos/services/libassistant/grpc/external_services/grpc_services_initializer.h index 6954330..07df3dd 100644 --- a/chromeos/services/libassistant/grpc/external_services/grpc_services_initializer.h +++ b/chromeos/services/libassistant/grpc/external_services/grpc_services_initializer.h
@@ -8,7 +8,6 @@ #include <memory> #include <string> -#include "base/containers/flat_set.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h"
diff --git a/chromeos/services/multidevice_setup/fake_eligible_host_devices_provider.h b/chromeos/services/multidevice_setup/fake_eligible_host_devices_provider.h index 2cb3cd0..9c37b7c 100644 --- a/chromeos/services/multidevice_setup/fake_eligible_host_devices_provider.h +++ b/chromeos/services/multidevice_setup/fake_eligible_host_devices_provider.h
@@ -5,7 +5,6 @@ #ifndef CHROMEOS_SERVICES_MULTIDEVICE_SETUP_FAKE_ELIGIBLE_HOST_DEVICES_PROVIDER_H_ #define CHROMEOS_SERVICES_MULTIDEVICE_SETUP_FAKE_ELIGIBLE_HOST_DEVICES_PROVIDER_H_ -#include "base/containers/flat_set.h" #include "base/macros.h" #include "chromeos/components/multidevice/remote_device_ref.h" #include "chromeos/services/multidevice_setup/eligible_host_devices_provider.h"
diff --git a/chromeos/settings/timezone_settings.cc b/chromeos/settings/timezone_settings.cc index 10e5eed..5cba063 100644 --- a/chromeos/settings/timezone_settings.cc +++ b/chromeos/settings/timezone_settings.cc
@@ -10,6 +10,7 @@ #include <string> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/i18n/unicodestring.h" @@ -18,7 +19,6 @@ #include "base/memory/ptr_util.h" #include "base/memory/singleton.h" #include "base/observer_list.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/system/sys_info.h"
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 981c4f07..1addd58 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -18,7 +18,7 @@ <translation id="1290331692326790741">လိုင်းအား မကောင်းပါ</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">ပင်မ ကွန်ရက်၊ ရိုမင်း မဟုတ်ပါ</translation> -<translation id="1327977588028644528">ဝင်ပေါက်</translation> +<translation id="1327977588028644528">ဂိတ်ဝ</translation> <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">စကင်လုပ်မည့်နေရာနှင့် ကွက်တိ လုပ်ပေးရန်</translation> <translation id="1387854245479784695">၎င်းသည် core အားလုံး၏ ပေါင်းစည်းဆောင်ရွက်မှု ဖြစ်သည်</translation>
diff --git a/chromeos/system/name_value_pairs_parser_unittest.cc b/chromeos/system/name_value_pairs_parser_unittest.cc index 9118f8ac..a43cd1b8 100644 --- a/chromeos/system/name_value_pairs_parser_unittest.cc +++ b/chromeos/system/name_value_pairs_parser_unittest.cc
@@ -4,7 +4,7 @@ #include "chromeos/system/name_value_pairs_parser.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "testing/gtest/include/gtest/gtest.h" namespace chromeos {
diff --git a/chromeos/system/statistics_provider.cc b/chromeos/system/statistics_provider.cc index af67015..3d52667 100644 --- a/chromeos/system/statistics_provider.cc +++ b/chromeos/system/statistics_provider.cc
@@ -12,6 +12,7 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/containers/flat_map.h" +#include "base/cxx17_backports.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/json/json_file_value_serializer.h" @@ -20,7 +21,6 @@ #include "base/memory/singleton.h" #include "base/path_service.h" #include "base/sequenced_task_runner.h" -#include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/synchronization/atomic_flag.h"
diff --git a/chromeos/timezone/timezone_request.cc b/chromeos/timezone/timezone_request.cc index ec687367..40ec1e7 100644 --- a/chromeos/timezone/timezone_request.cc +++ b/chromeos/timezone/timezone_request.cc
@@ -9,10 +9,10 @@ #include <utility> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/json/json_reader.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" -#include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/time/time.h"
diff --git a/chromeos/tools/onc_validator/onc_validator.cc b/chromeos/tools/onc_validator/onc_validator.cc index 28930f2..f059029 100644 --- a/chromeos/tools/onc_validator/onc_validator.cc +++ b/chromeos/tools/onc_validator/onc_validator.cc
@@ -8,11 +8,11 @@ #include <utility> #include "base/command_line.h" +#include "base/cxx17_backports.h" #include "base/files/file_path.h" #include "base/json/json_file_value_serializer.h" #include "base/json/json_reader.h" #include "base/logging.h" -#include "base/stl_util.h" #include "base/values.h" #include "chromeos/network/onc/onc_signature.h" #include "chromeos/network/onc/onc_validator.h"
diff --git a/chromeos/tpm/install_attributes.cc b/chromeos/tpm/install_attributes.cc index 23b8765..b134ba8c 100644 --- a/chromeos/tpm/install_attributes.cc +++ b/chromeos/tpm/install_attributes.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/cxx17_backports.h" #include "base/files/file_util.h" #include "base/location.h" #include "base/logging.h" @@ -17,7 +18,6 @@ #include "base/metrics/histogram_macros.h" #include "base/path_service.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/system/sys_info.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h"
diff --git a/chromeos/tpm/tpm_token_info_getter_unittest.cc b/chromeos/tpm/tpm_token_info_getter_unittest.cc index bcfdfcfaf..305399a 100644 --- a/chromeos/tpm/tpm_token_info_getter_unittest.cc +++ b/chromeos/tpm/tpm_token_info_getter_unittest.cc
@@ -10,10 +10,10 @@ #include <vector> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/run_loop.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/task_runner.h" #include "base/test/task_environment.h" #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/README.md b/components/README.md index 9d8f29a..cfaefab 100644 --- a/components/README.md +++ b/components/README.md
@@ -54,10 +54,10 @@ Components **can** depend on each other. This must be made explicit in the `DEPS` file of the component. -Components **can** depend on `//content/public` and `//ipc`. This must be made -explicit in the `DEPS` file of the component. If such a component is used by -Chrome for iOS (which does not use content or IPC), the component will have to -be in the form of a [layered +Components **can** depend on `//content/public`, `//ipc`, and +`//third_party/blink/public`. This must be made explicit in the `DEPS` file of +the component. If such a component is used by Chrome for iOS (which does not +use content or IPC), the component will have to be in the form of a [layered component](http://www.chromium.org/developers/design-documents/layered-components-design). `//chrome`, `//ios/chrome`, `//content` and `//ios/web` **can** depend on @@ -68,8 +68,8 @@ ## Structure of a component -As mentioned above, components that depend on `//content/public` or `//ipc` -might have to be in the form of a [layered +As mentioned above, components that depend on `//content/public`, `//ipc`, or +`third_party/blink/public` might have to be in the form of a [layered component](http://www.chromium.org/developers/design-documents/layered-components-design). Components that have bits of code that need to live in different processes (e.g. @@ -85,7 +85,9 @@ These subdirectories should have DEPS files with the relevant restrictions in place, i.e. only `components/foo/browser` should be allowed to #include from -`content/public/browser`. +`content/public/browser`. Note that `third_party/blink/public` is a +renderer process directory except for `third_party/blink/public/common` which +can be used by all processes. Note that there may also be an `android` subdir, with a Java source code structure underneath it where the package name is org.chromium.components.foo,
diff --git a/components/arc/compat_mode/arc_splash_screen_dialog_view.cc b/components/arc/compat_mode/arc_splash_screen_dialog_view.cc index f33a5c7..f890d46 100644 --- a/components/arc/compat_mode/arc_splash_screen_dialog_view.cc +++ b/components/arc/compat_mode/arc_splash_screen_dialog_view.cc
@@ -12,6 +12,8 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/paint_vector_icon.h" +#include "ui/strings/grit/ui_strings.h" +#include "ui/views/accessibility/view_accessibility.h" #include "ui/views/background.h" #include "ui/views/border.h" #include "ui/views/bubble/bubble_border.h" @@ -24,6 +26,7 @@ #include "ui/views/layout/box_layout.h" #include "ui/views/layout/box_layout_view.h" #include "ui/views/layout/layout_provider.h" +#include "ui/views/widget/widget.h" namespace arc { @@ -49,6 +52,9 @@ GetContentLayerColor(ContentLayerType::kIconColorPrimary)); close_button->SetSize(kCloseButtonSize); close_button->ink_drop()->SetMode(views::InkDropHost::InkDropMode::OFF); + close_button->SetAccessibleName( + l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE)); + close_button->SetTooltipText(l10n_util::GetStringUTF16(IDS_APP_CLOSE)); return close_button; } @@ -159,6 +165,13 @@ return size; } +void ArcSplashScreenDialogView::AddedToWidget() { + auto& view_ax = GetWidget()->GetRootView()->GetViewAccessibility(); + view_ax.OverrideRole(ax::mojom::Role::kDialog); + view_ax.OverrideName( + l10n_util::GetStringUTF16(IDS_ARC_COMPAT_MODE_SPLASH_SCREEN_TITLE)); +} + void ArcSplashScreenDialogView::OnLinkClicked() { // TODO(b/180253004): Calling per-app setting NOTIMPLEMENTED();
diff --git a/components/arc/compat_mode/arc_splash_screen_dialog_view.h b/components/arc/compat_mode/arc_splash_screen_dialog_view.h index a04abf2..f31920d2 100644 --- a/components/arc/compat_mode/arc_splash_screen_dialog_view.h +++ b/components/arc/compat_mode/arc_splash_screen_dialog_view.h
@@ -37,6 +37,7 @@ // views::View: gfx::Size CalculatePreferredSize() const override; + void AddedToWidget() override; private: void OnLinkClicked();
diff --git a/components/arc/compat_mode/resize_confirmation_dialog_view.cc b/components/arc/compat_mode/resize_confirmation_dialog_view.cc index db58538..8bc45a7 100644 --- a/components/arc/compat_mode/resize_confirmation_dialog_view.cc +++ b/components/arc/compat_mode/resize_confirmation_dialog_view.cc
@@ -12,11 +12,13 @@ #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" #include "ui/strings/grit/ui_strings.h" +#include "ui/views/accessibility/view_accessibility.h" #include "ui/views/bubble/bubble_border.h" #include "ui/views/controls/button/checkbox.h" #include "ui/views/controls/button/md_text_button.h" #include "ui/views/layout/layout_provider.h" #include "ui/views/view_class_properties.h" +#include "ui/views/widget/widget.h" namespace arc { @@ -67,6 +69,13 @@ return size; } +void ResizeConfirmationDialogView::AddedToWidget() { + auto& view_ax = GetWidget()->GetRootView()->GetViewAccessibility(); + view_ax.OverrideRole(ax::mojom::Role::kDialog); + view_ax.OverrideName( + l10n_util::GetStringUTF16(IDS_ASH_ARC_APP_COMPAT_RESIZE_CONFIRM_TITLE)); +} + std::unique_ptr<views::View> ResizeConfirmationDialogView::MakeContentsView() { return views::Builder<views::BoxLayoutView>() .SetOrientation(views::BoxLayout::Orientation::kVertical)
diff --git a/components/arc/compat_mode/resize_confirmation_dialog_view.h b/components/arc/compat_mode/resize_confirmation_dialog_view.h index d0b36a3..9b6ee06 100644 --- a/components/arc/compat_mode/resize_confirmation_dialog_view.h +++ b/components/arc/compat_mode/resize_confirmation_dialog_view.h
@@ -48,7 +48,9 @@ delete; ~ResizeConfirmationDialogView() override; + // views::View: gfx::Size CalculatePreferredSize() const override; + void AddedToWidget() override; private: std::unique_ptr<views::View> MakeContentsView();
diff --git a/components/arc/intent_helper/arc_intent_helper_bridge.h b/components/arc/intent_helper/arc_intent_helper_bridge.h index 4f64c34..b6640dba 100644 --- a/components/arc/intent_helper/arc_intent_helper_bridge.h +++ b/components/arc/intent_helper/arc_intent_helper_bridge.h
@@ -11,7 +11,6 @@ #include <string> #include <vector> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/observer_list.h" #include "base/threading/thread_checker.h"
diff --git a/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.cc b/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.cc index 31ce7e5..c226624 100644 --- a/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.cc +++ b/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.cc
@@ -34,7 +34,8 @@ // If the user has navigated away without saving the modal, then the // |address_profile_save_prompt_callback_| is run here. if (!address_profile_save_prompt_callback_.is_null()) { - modal_was_shown_ = false; + // TODO(crbug.com/1167062): Record last action on the infobar and send + // callback accordingly. InfoBarDismissed(); } } @@ -146,11 +147,6 @@ } void AutofillSaveUpdateAddressProfileDelegateIOS::InfoBarDismissed() { - // If the address profile modal dialog is presented, InfoBarDismissed is - // called due to BannerVisibilityChanged. - if (modal_was_shown_) - return; - RunSaveAddressProfilePromptCallback( AutofillClient::SaveAddressProfileOfferUserDecision::kDeclined); } @@ -182,7 +178,9 @@ const NavigationDetails& details) const { // Expire the Infobar unless the navigation was triggered by the form that // presented the Infobar, or the navigation is a redirect. - return !details.is_form_submission && !details.is_redirect; + // Also, expire the infobar if the navigation is to a different page. + return !details.is_form_submission && !details.is_redirect && + ConfirmInfoBarDelegate::ShouldExpire(details); } int AutofillSaveUpdateAddressProfileDelegateIOS::GetButtons() const { @@ -200,9 +198,6 @@ RunSaveAddressProfilePromptCallback( AutofillClient::SaveAddressProfileOfferUserDecision decision) { std::move(address_profile_save_prompt_callback_).Run(decision, profile_); - - // Reset the modal dialog flags. - modal_was_shown_ = false; } } // namespace autofill
diff --git a/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.h b/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.h index 18fefe9..4df0ee5 100644 --- a/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.h +++ b/components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.h
@@ -70,8 +70,6 @@ const autofill::AutofillProfile* GetProfile() const; const autofill::AutofillProfile* GetOriginalProfile() const; - bool modal_was_shown() { return modal_was_shown_; } - void set_modal_was_shown_to_true() { modal_was_shown_ = true; } // ConfirmInfoBarDelegate int GetIconId() const override; @@ -102,9 +100,6 @@ // The callback to run once the user makes a decision. AutofillClient::AddressProfileSavePromptCallback address_profile_save_prompt_callback_; - - // True if the AddressProfile modal dialog was shown. - bool modal_was_shown_ = false; }; } // namespace autofill
diff --git a/components/autofill/core/browser/field_filler.cc b/components/autofill/core/browser/field_filler.cc index be36985..1ecbb7e 100644 --- a/components/autofill/core/browser/field_filler.cc +++ b/components/autofill/core/browser/field_filler.cc
@@ -53,7 +53,9 @@ DCHECK_EQ(field->option_values.size(), field->option_contents.size()); std::u16string best_match; - for (size_t i = 0; i < field->option_values.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; i < items_count; ++i) { if (value == field->option_values[i] || value == field->option_contents[i]) { // An exact match, use it. @@ -116,8 +118,9 @@ std::vector<std::u16string> tokenized; DCHECK_EQ(field->option_values.size(), field->option_contents.size()); l10n::CaseInsensitiveCompare compare; - - for (size_t i = 0; i < field->option_values.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; i < items_count; ++i) { tokenized = base::SplitString(field->option_values[i], base::kWhitespaceASCIIAs16, base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); @@ -230,7 +233,9 @@ FormFieldData* field, std::string* failure_to_fill) { DCHECK_EQ(field->option_values.size(), field->option_contents.size()); - for (size_t i = 0; i < field->option_values.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; i < items_count; ++i) { int option; if ((StringToInt(field->option_values[i], &option) && option == value) || (StringToInt(field->option_contents[i], &option) && option == value)) { @@ -463,7 +468,9 @@ } DCHECK_EQ(field->option_values.size(), field->option_contents.size()); - for (size_t i = 0; i < field->option_values.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; i < items_count; ++i) { if (LastTwoDigitsMatch(value, field->option_values[i]) || LastTwoDigitsMatch(value, field->option_contents[i])) { field->value = field->option_values[i]; @@ -979,8 +986,9 @@ ignore_whitespace ? RemoveWhitespace(value) : value; base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents searcher( value_stripped); - - for (size_t i = 0; i < field->option_values.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; i < items_count; ++i) { std::u16string option_value = ignore_whitespace ? RemoveWhitespace(field->option_values[i]) : field->option_values[i];
diff --git a/components/autofill/core/browser/form_data_importer.cc b/components/autofill/core/browser/form_data_importer.cc index 1e4a996..598ca09 100644 --- a/components/autofill/core/browser/form_data_importer.cc +++ b/components/autofill/core/browser/form_data_importer.cc
@@ -912,7 +912,9 @@ // month. Attempt to save with the option value. First find the index of the // option text in the select options and try the corresponding value. if (!saved && server_field_type == CREDIT_CARD_EXP_MONTH) { - for (size_t i = 0; i < field->option_contents.size(); ++i) { + size_t items_count = + std::min(field->option_contents.size(), field->option_values.size()); + for (size_t i = 0; items_count; ++i) { if (value == field->option_contents[i]) { candidate_credit_card.SetInfo(field_type, field->option_values[i], app_locale_);
diff --git a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc index aaed50f..8f649d3 100644 --- a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc +++ b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc
@@ -21,6 +21,7 @@ #include "components/infobars/core/infobar.h" #include "components/infobars/core/infobar_manager.h" #include "components/prefs/pref_service.h" +#include "components/signin/public/identity_manager/account_info.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/window_open_disposition.h" @@ -36,7 +37,8 @@ AutofillClient::UploadSaveCardPromptCallback upload_save_card_prompt_callback, AutofillClient::LocalSaveCardPromptCallback local_save_card_prompt_callback, - PrefService* pref_service) + PrefService* pref_service, + const AccountInfo& displayed_target_account) : ConfirmInfoBarDelegate(), upload_(upload), options_(options), @@ -53,9 +55,16 @@ cardholder_name_(card.GetRawInfo(CREDIT_CARD_NAME_FULL)), expiration_date_month_(card.Expiration2DigitMonthAsString()), expiration_date_year_(card.Expiration4DigitYearAsString()), - legal_message_lines_(legal_message_lines) { + legal_message_lines_(legal_message_lines), + displayed_target_account_email_( + base::UTF8ToUTF16((displayed_target_account.email))), + displayed_target_account_avatar_(displayed_target_account.account_image) { DCHECK_EQ(upload, !upload_save_card_prompt_callback_.is_null()); DCHECK_EQ(upload, local_save_card_prompt_callback_.is_null()); + if (!upload) { + DCHECK(displayed_target_account_email_.empty()); + DCHECK(displayed_target_account_avatar_.IsEmpty()); + } AutofillMetrics::LogCreditCardInfoBarMetric( AutofillMetrics::INFOBAR_SHOWN, upload_, options_,
diff --git a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h index 34cf8d8..c4a6d00 100644 --- a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h +++ b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h
@@ -15,7 +15,9 @@ #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/payments/legal_message_line.h" #include "components/infobars/core/confirm_infobar_delegate.h" +#include "ui/gfx/image/image.h" +struct AccountInfo; class PrefService; namespace autofill { @@ -26,6 +28,16 @@ // card information gathered from a form submission. Only used on mobile. class AutofillSaveCardInfoBarDelegateMobile : public ConfirmInfoBarDelegate { public: + // |upload| must be true iff the infobar should offer to save the card in the + // cloud, as opposed to saving locally. Only one of + // |upload_save_card_prompt_callback| and |local_save_card_prompt_callback| + // will be executed. + // If |upload| is true, |displayed_target_account| must either be the account + // where the card will be saved, or empty if no target account should be + // shown. + // TODO(crbug.com/1206190): Split into 2 static constructors (local/cloud), + // each with the minimum set of required parameters. Also consider merging + // the 2 callbacks into one. AutofillSaveCardInfoBarDelegateMobile( bool upload, AutofillClient::SaveCreditCardOptions options, @@ -35,7 +47,8 @@ upload_save_card_prompt_callback, AutofillClient::LocalSaveCardPromptCallback local_save_card_prompt_callback, - PrefService* pref_service); + PrefService* pref_service, + const AccountInfo& displayed_target_account); ~AutofillSaveCardInfoBarDelegateMobile() override; @@ -61,6 +74,12 @@ const std::u16string& expiration_date_year() const { return expiration_date_year_; } + const std::u16string& displayed_target_account_email() const { + return displayed_target_account_email_; + } + const gfx::Image& displayed_target_account_avatar() const { + return displayed_target_account_avatar_; + } // Called when a link in the legal message text was clicked. virtual void OnLegalMessageLinkClicked(GURL url); @@ -152,6 +171,13 @@ // The legal message lines to show in the content of the infobar. const LegalMessageLines& legal_message_lines_; + // Information the infobar should display about the account where the card + // will be saved. Both the email and avatar can be empty, e.g. if the card + // won't be saved to any account (just locally) or the target account + // shouldn't appear. + std::u16string displayed_target_account_email_; + gfx::Image displayed_target_account_avatar_; + DISALLOW_COPY_AND_ASSIGN(AutofillSaveCardInfoBarDelegateMobile); };
diff --git a/components/autofill/core/browser/payments/autofill_save_card_infobar_mobile.h b/components/autofill/core/browser/payments/autofill_save_card_infobar_mobile.h index dc412e8..c380fd0 100644 --- a/components/autofill/core/browser/payments/autofill_save_card_infobar_mobile.h +++ b/components/autofill/core/browser/payments/autofill_save_card_infobar_mobile.h
@@ -18,12 +18,9 @@ class AutofillSaveCardInfoBarDelegateMobile; -// Creates an Infobar for saving a credit card on a mobile device. If -// AccountInfo contains the user's data, an account indication footer will be -// shown at the bottom of the Infobar. +// Creates an Infobar for saving a credit card on a mobile device. std::unique_ptr<infobars::InfoBar> CreateSaveCardInfoBarMobile( - std::unique_ptr<AutofillSaveCardInfoBarDelegateMobile> delegate, - absl::optional<AccountInfo> accountInfo); + std::unique_ptr<AutofillSaveCardInfoBarDelegateMobile> delegate); } // namespace autofill
diff --git a/components/autofill/core/common/autofill_payments_features.cc b/components/autofill/core/common/autofill_payments_features.cc index 68df963d..440d8c8 100644 --- a/components/autofill/core/common/autofill_payments_features.cc +++ b/components/autofill/core/common/autofill_payments_features.cc
@@ -54,11 +54,6 @@ const base::Feature kAutofillCreditCardUploadFeedback{ "AutofillCreditCardUploadFeedback", base::FEATURE_DISABLED_BY_DEFAULT}; -// When enabled, shows the Google Pay logo on CVC prompt on Android. -const base::Feature kAutofillDownstreamCvcPromptUseGooglePayLogo{ - "AutofillDownstreamCvcPromptUseGooglePayLogo", - base::FEATURE_ENABLED_BY_DEFAULT}; - // Controls whether we show a Google-issued card in the suggestions list. const base::Feature kAutofillEnableGoogleIssuedCard{ "AutofillEnableGoogleIssuedCard", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/autofill/core/common/autofill_payments_features.h b/components/autofill/core/common/autofill_payments_features.h index b45f3dc..7a227ca9 100644 --- a/components/autofill/core/common/autofill_payments_features.h +++ b/components/autofill/core/common/autofill_payments_features.h
@@ -20,7 +20,6 @@ extern const base::Feature kAutofillAutoTriggerManualFallbackForCards; extern const base::Feature kAutofillCreditCardAuthentication; extern const base::Feature kAutofillCreditCardUploadFeedback; -extern const base::Feature kAutofillDownstreamCvcPromptUseGooglePayLogo; extern const base::Feature kAutofillEnableGoogleIssuedCard; extern const base::Feature kAutofillEnableMerchantBoundVirtualCards; extern const base::Feature kAutofillEnableOfferNotification;
diff --git a/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler.cc b/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler.cc index ef27c3b8..2809d86 100644 --- a/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler.cc +++ b/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler.cc
@@ -390,7 +390,7 @@ action_delegate_->GetWebController()->SelectOption( re2_value, case_sensitive, option_comparison_attribute, - /* strict= */ true, *element_ptr, std::move(on_set_field_value)); + /* strict= */ false, *element_ptr, std::move(on_set_field_value)); return; }
diff --git a/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler_unittest.cc b/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler_unittest.cc index 0ba9656..9c6f111 100644 --- a/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler_unittest.cc +++ b/components/autofill_assistant/browser/actions/fallback_handler/required_fields_fallback_handler_unittest.cc
@@ -505,7 +505,7 @@ .WillOnce(RunOnceCallback<1>(OkClientStatus(), "SELECT")); EXPECT_CALL(mock_web_controller_, SelectOption("^05\\/2050$", /* case_sensitive= */ false, - SelectOptionProto::VALUE, /* strict= */ true, + SelectOptionProto::VALUE, /* strict= */ false, EqualsElement(expected_element), _)) .WillOnce(RunOnceCallback<5>(OkClientStatus())); @@ -555,7 +555,7 @@ .WillOnce(RunOnceCallback<1>(OkClientStatus(), "SELECT")); EXPECT_CALL(mock_web_controller_, SelectOption("^05\\/2050", /* case_sensitive= */ true, - SelectOptionProto::VALUE, /* strict= */ true, + SelectOptionProto::VALUE, /* strict= */ false, EqualsElement(expected_element), _)) .WillOnce(RunOnceCallback<5>(OkClientStatus()));
diff --git a/components/browser_sync/profile_sync_components_factory_impl.cc b/components/browser_sync/profile_sync_components_factory_impl.cc index e55b188..5f8e952 100644 --- a/components/browser_sync/profile_sync_components_factory_impl.cc +++ b/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -400,16 +400,15 @@ std::unique_ptr<DataTypeManager> ProfileSyncComponentsFactoryImpl::CreateDataTypeManager( - syncer::ModelTypeSet initial_types, const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const syncer::DataTypeEncryptionHandler* encryption_handler, syncer::ModelTypeConfigurer* configurer, DataTypeManagerObserver* observer) { - return std::make_unique<DataTypeManagerImpl>( - initial_types, debug_info_listener, controllers, encryption_handler, - configurer, observer); + return std::make_unique<DataTypeManagerImpl>(debug_info_listener, controllers, + encryption_handler, configurer, + observer); } std::unique_ptr<syncer::SyncEngine>
diff --git a/components/browser_sync/profile_sync_components_factory_impl.h b/components/browser_sync/profile_sync_components_factory_impl.h index 0379c5d6..a00a6bc 100644 --- a/components/browser_sync/profile_sync_components_factory_impl.h +++ b/components/browser_sync/profile_sync_components_factory_impl.h
@@ -71,7 +71,6 @@ // SyncApiComponentFactory implementation: std::unique_ptr<syncer::DataTypeManager> CreateDataTypeManager( - syncer::ModelTypeSet initial_types, const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& debug_info_listener, const syncer::DataTypeController::TypeMap* controllers,
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_CURRENT_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_CURRENT_ICON.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_CURRENT_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_CURRENT_ICON.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_UPDATED_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_UPDATED_ICON.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_UPDATED_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_UPDATE_WEBAPK_UPDATED_ICON.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_CLOSE.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_CLOSE.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_CLOSE.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_CLOSE.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_UPDATE.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_UPDATE.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_UPDATE.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_BUTTON_UPDATE.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_ICON.png.sha1 index 3a9ed5a..699a0dde 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_ICON.png.sha1
@@ -1 +1 @@ -f827a1c422903ccb691056fe1de1820dce493b41 \ No newline at end of file +dac58f2a2c62bb672f74ba0731fdc04fd334af66 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME.png.sha1 index 09fc14a..b4c514d 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME.png.sha1
@@ -1 +1 @@ -caa7951c95ac81e521d62554104f2595c1812d85 \ No newline at end of file +e1447ed4b2aa862f8f62b4c8ba98356cd00799a0 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME_AND_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME_AND_ICON.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME_AND_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_DIALOG_TITLE_NAME_AND_ICON.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_ICON.png.sha1 index 3a9ed5a..699a0dde 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_ICON.png.sha1
@@ -1 +1 @@ -f827a1c422903ccb691056fe1de1820dce493b41 \ No newline at end of file +dac58f2a2c62bb672f74ba0731fdc04fd334af66 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME.png.sha1 index 09fc14a..b4c514d 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME.png.sha1
@@ -1 +1 @@ -caa7951c95ac81e521d62554104f2595c1812d85 \ No newline at end of file +e1447ed4b2aa862f8f62b4c8ba98356cd00799a0 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME_AND_ICON.png.sha1 b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME_AND_ICON.png.sha1 index abbd7ff..de259f7 100644 --- a/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME_AND_ICON.png.sha1 +++ b/components/browser_ui/strings/android/browser_ui_strings_grd/IDS_WEBAPK_UPDATE_EXPLANATION_NAME_AND_ICON.png.sha1
@@ -1 +1 @@ -486cf2f888e86268022ae78cfcafce0e77d8fb81 \ No newline at end of file +1045512c88452ac74d1b82ac36dfad9ecf13b1ef \ No newline at end of file
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 1153e6c..40752b6 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
@@ -3,6 +3,7 @@ <translationbundle lang="ar"> <translation id="1006017844123154345">فتح على الإنترنت</translation> <translation id="1044891598689252897">ستعمل المواقع الإلكترونية بشكلٍ طبيعي.</translation> +<translation id="1100504063505580045">الرمز الحالي</translation> <translation id="1124090076051167250">سيؤدي هذا الإجراء إلى محو <ph name="DATASIZE" /> من البيانات وملفات تعريف الارتباط المُخزّنة من خلال المواقع الإلكترونية أو التطبيقات على الشاشة الرئيسية.</translation> <translation id="1124772482545689468">المستخدم</translation> <translation id="1178581264944972037">الإيقاف مؤقتًا</translation> @@ -88,9 +89,11 @@ <translation id="3227137524299004712">الميكروفون</translation> <translation id="3277252321222022663">يمكنك السماح للمواقع بالوصول إلى أجهزة الاستشعار (مُقترَح).</translation> <translation id="3295602654194328831">إخفاء المعلومات</translation> +<translation id="3317660236277031814">تم تغيير رمز أحد تطبيقات الويب التي ثبّتها.</translation> <translation id="3328801116991980348">معلومات الموقع الإلكتروني</translation> <translation id="3333961966071413176">جميع جهات الاتصال</translation> <translation id="3386292677130313581">السؤال قبل السماح للمواقع الإلكترونية بمعرفة الموقع الجغرافي (موصى به)</translation> +<translation id="345699454248713913">تم تغيير اسم أحد تطبيقات الويب التي ثبّتها.</translation> <translation id="3538390592868664640">منع المواقع الإلكترونية من إنشاء خريطة ثلاثية الأبعاد للبيئة المحيطة بك أو تتبُّع موضع الكاميرا</translation> <translation id="3551268116566418498">أتريد مغادرة وضع التصفح المتخفي؟</translation> <translation id="3586500876634962664">الكاميرا والميكروفون قيد التشغيل</translation> @@ -115,6 +118,7 @@ <translation id="4200726100658658164">فتح إعدادات الموقع الجغرافي</translation> <translation id="4226663524361240545">يمكن أن تؤدي الإشعارات إلى اهتزاز الجهاز</translation> <translation id="4259722352634471385">التنقل محظور: <ph name="URL" /></translation> +<translation id="4277239631747669329">تم تغيير اسم ورمز أحد تطبيقات الويب التي ثبّتها.</translation> <translation id="4278390842282768270">منح الإذن</translation> <translation id="429312253194641664">تفعيل موقع إلكتروني للوسائط</translation> <translation id="42981349822642051">توسيع</translation> @@ -155,11 +159,13 @@ <translation id="5335288049665977812">السماح للمواقع الإلكترونية بتشغيل JavaScript (موصى به)</translation> <translation id="534295439873310000">أجهزة NFC</translation> <translation id="5354152178998424783">سيؤدي هذا الإجراء إلى محو <ph name="DATASIZE" /> من البيانات وملفات تعريف الارتباط المُخزّنة من خلال المواقع الإلكترونية.</translation> +<translation id="536508626067510330">هل تريد تعديل الرمز الظاهر على الشاشة الرئيسية؟</translation> <translation id="5391532827096253100">إن اتصالك بهذا الموقع الإلكتروني غير آمن. معلومات الموقع الإلكتروني</translation> <translation id="5394307150471348411">{DETAIL_COUNT,plural, =1{(+ 1 آخر)}zero{(+ # آخر)}two{(+ اثنين (#) آخرين)}few{(+ # أخرى)}many{(+ # آخر)}other{(+ # آخر)}}</translation> <translation id="5403592356182871684">الأسماء</translation> <translation id="5489227211564503167">الوقت المنقضي <ph name="ELAPSED_TIME" /> من <ph name="TOTAL_TIME" /></translation> <translation id="5494752089476963479">حظر الإعلانات في المواقع الإلكترونية التي تعرض إعلانات مضلِّلة أو غير مرغوب فيها</translation> +<translation id="549957179819296104">رمز جديد</translation> <translation id="5502860503640766021">تم السماح بالوصول إلى <ph name="PERMISSION_1" /> وحظر <ph name="PERMISSION_2" />.</translation> <translation id="5505264765875738116">منع المواقع الإلكترونية من طلب إرسال إشعارات</translation> <translation id="5516455585884385570">فتح إعدادات الإشعارات</translation> @@ -176,6 +182,7 @@ <translation id="5804241973901381774">الأذونات</translation> <translation id="5860033963881614850">غير مفعّل</translation> <translation id="5876056640971328065">إيقاف الفيديو مؤقتًا</translation> +<translation id="5904826301761575486">هل تريد تعديل الاسم والرمز الظاهرَين على الشاشة الرئيسية؟</translation> <translation id="5916664084637901428">مفعّل</translation> <translation id="5922853908706496913">جارٍ مشاركة شاشتك</translation> <translation id="5939518447894949180">إعادة الضبط</translation> @@ -192,6 +199,7 @@ <translation id="6196640612572343990">حظر ملفات تعريف الارتباط للجهات الخارجية</translation> <translation id="6206551242102657620">يُعدُّ اتصالك آمنًا. معلومات الموقع الإلكتروني</translation> <translation id="6216432067784365534">خيارات <ph name="NAME_OF_LIST_ITEM" /></translation> +<translation id="6260852843601447737">الإغلاق والإبلاغ عن إساءة استخدام</translation> <translation id="6262279340360821358">تم حظر <ph name="PERMISSION_1" /> و<ph name="PERMISSION_2" />.</translation> <translation id="6270391203985052864">السماح للمواقع الإلكترونية بطلب إرسال إشعارات</translation> <translation id="6295158916970320988">جميع المواقع الإلكترونية</translation> @@ -288,6 +296,7 @@ <translation id="8525306231823319788">ملء الشاشة</translation> <translation id="857943718398505171">مسموح بها (موصى بها)</translation> <translation id="8609465669617005112">الانتقال إلى الأعلى</translation> +<translation id="861748745608658996">هل تريد تعديل الاسم الظاهر على الشاشة الرئيسية؟</translation> <translation id="8676374126336081632">محو الإرسال</translation> <translation id="868929229000858085">البحث في جهات الاتصال</translation> <translation id="8702612070107455751">سيتم محو أي بيانات متوفّرة بلا اتصال بالإنترنت.</translation>
diff --git a/components/browser_ui/widget/android/BUILD.gn b/components/browser_ui/widget/android/BUILD.gn index ec8c8cd..9e177b73 100644 --- a/components/browser_ui/widget/android/BUILD.gn +++ b/components/browser_ui/widget/android/BUILD.gn
@@ -33,6 +33,7 @@ "java/src/org/chromium/components/browser_ui/widget/RoundedCornerImageView.java", "java/src/org/chromium/components/browser_ui/widget/RoundedIconGenerator.java", "java/src/org/chromium/components/browser_ui/widget/TintedDrawable.java", + "java/src/org/chromium/components/browser_ui/widget/TouchEventObserver.java", "java/src/org/chromium/components/browser_ui/widget/ViewResourceFrameLayout.java", "java/src/org/chromium/components/browser_ui/widget/WrappingLayout.java", "java/src/org/chromium/components/browser_ui/widget/animation/CancelAwareAnimatorListener.java",
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/TouchEventObserver.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/TouchEventObserver.java new file mode 100644 index 0000000..3cf8910 --- /dev/null +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/TouchEventObserver.java
@@ -0,0 +1,26 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.components.browser_ui.widget; + +import android.view.MotionEvent; + +/** + * Observer interface for any object that needs to process touch events. + */ +public interface TouchEventObserver { + /** + * Determine if touch events should be forwarded to the observing object. + * Should return {@link true} if the object decided to consume the events. + * @param e {@link MotionEvent} object to process. + * @return {@code true} if the observer will process touch events going forward. + */ + boolean shouldInterceptTouchEvent(MotionEvent e); + + /** + * Handle touch events. + * @param e {@link MotionEvent} object to process. + */ + void handleTouchEvent(MotionEvent e); +}
diff --git a/components/discardable_memory/client/client_discardable_shared_memory_manager.h b/components/discardable_memory/client/client_discardable_shared_memory_manager.h index 5efc90219..eb23e9ba 100644 --- a/components/discardable_memory/client/client_discardable_shared_memory_manager.h +++ b/components/discardable_memory/client/client_discardable_shared_memory_manager.h
@@ -48,6 +48,13 @@ std::unique_ptr<base::DiscardableMemory> AllocateLockedDiscardableMemory( size_t size) override LOCKS_EXCLUDED(lock_); + // Overridden from base::DiscardableMemoryAllocator: + size_t GetBytesAllocated() const override LOCKS_EXCLUDED(lock_); + + // Overridden from base::DiscardableMemoryAllocator: + // Release memory and associated resources that have been purged. + void ReleaseFreeMemory() override LOCKS_EXCLUDED(lock_); + // Overridden from base::trace_event::MemoryDumpProvider: bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, base::trace_event::ProcessMemoryDump* pmd) override @@ -65,27 +72,6 @@ void OnForegrounded(); void OnBackgrounded(); - // Release memory and associated resources that have been purged. - void ReleaseFreeMemory() override LOCKS_EXCLUDED(lock_); - - bool LockSpan(DiscardableSharedMemoryHeap::Span* span) - EXCLUSIVE_LOCKS_REQUIRED(lock_); - void UnlockSpan(DiscardableSharedMemoryHeap::Span* span) - EXCLUSIVE_LOCKS_REQUIRED(lock_); - - base::trace_event::MemoryAllocatorDump* CreateMemoryAllocatorDump( - DiscardableSharedMemoryHeap::Span* span, - const char* name, - base::trace_event::ProcessMemoryDump* pmd) const - EXCLUSIVE_LOCKS_REQUIRED(lock_); - - struct Statistics { - size_t total_size; - size_t freelist_size; - }; - - // Overridden from base::DiscardableMemoryAllocator: - size_t GetBytesAllocated() const override LOCKS_EXCLUDED(lock_); void SetBytesAllocatedLimitForTesting(size_t limit) { bytes_allocated_limit_for_testing_ = limit; } @@ -155,6 +141,17 @@ base::TimeTicks last_locked_ GUARDED_BY(manager_->lock_); }; + struct Statistics { + size_t total_size; + size_t freelist_size; + }; + + base::trace_event::MemoryAllocatorDump* CreateMemoryAllocatorDump( + DiscardableSharedMemoryHeap::Span* span, + const char* name, + base::trace_event::ProcessMemoryDump* pmd) const + EXCLUSIVE_LOCKS_REQUIRED(lock_); + // Purge any unlocked memory from foreground that hasn't been touched in a // while. void ScheduledPurge() LOCKS_EXCLUDED(lock_); @@ -177,12 +174,18 @@ // Releases all unlocked memory that was last locked at least |min_age| ago. void PurgeUnlockedMemory(base::TimeDelta min_age) LOCKS_EXCLUDED(lock_); + + bool LockSpan(DiscardableSharedMemoryHeap::Span* span) + EXCLUSIVE_LOCKS_REQUIRED(lock_); + void UnlockSpan(DiscardableSharedMemoryHeap::Span* span) + EXCLUSIVE_LOCKS_REQUIRED(lock_); void UnlockAndReleaseMemory( DiscardableMemoryImpl* memory, std::unique_ptr<DiscardableSharedMemoryHeap::Span> span) EXCLUSIVE_LOCKS_REQUIRED(lock_); void ReleaseSpan(std::unique_ptr<DiscardableSharedMemoryHeap::Span> span) EXCLUSIVE_LOCKS_REQUIRED(lock_); + size_t GetBytesAllocatedLocked() const EXCLUSIVE_LOCKS_REQUIRED(lock_); scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
diff --git a/components/exo/data_device_delegate.h b/components/exo/data_device_delegate.h index 65053f80..a483754 100644 --- a/components/exo/data_device_delegate.h +++ b/components/exo/data_device_delegate.h
@@ -5,7 +5,6 @@ #ifndef COMPONENTS_EXO_DATA_DEVICE_DELEGATE_H_ #define COMPONENTS_EXO_DATA_DEVICE_DELEGATE_H_ -#include "base/containers/flat_set.h" #include "components/exo/data_offer.h" namespace base {
diff --git a/components/exo/fullscreen_shell_surface.cc b/components/exo/fullscreen_shell_surface.cc index 8a11409..c6b3a74 100644 --- a/components/exo/fullscreen_shell_surface.cc +++ b/components/exo/fullscreen_shell_surface.cc
@@ -47,6 +47,7 @@ FullscreenShellSurface::FullscreenShellSurface() : SurfaceTreeHost("FullscreenShellSurfaceHost") { CreateFullscreenShellSurfaceWidget(ui::SHOW_STATE_FULLSCREEN); + SetCanResize(false); widget_->SetFullscreen(true); } @@ -172,10 +173,6 @@ std::move(surface_destroyed_callback_).Run(); } -bool FullscreenShellSurface::CanResize() const { - return false; -} - bool FullscreenShellSurface::CanMaximize() const { return true; }
diff --git a/components/exo/fullscreen_shell_surface.h b/components/exo/fullscreen_shell_surface.h index 8613f34..8b75541 100644 --- a/components/exo/fullscreen_shell_surface.h +++ b/components/exo/fullscreen_shell_surface.h
@@ -63,7 +63,6 @@ void OnSurfaceDestroying(Surface* surface) override; // views::WidgetDelegate: - bool CanResize() const override; bool CanMaximize() const override; bool CanMinimize() const override; bool ShouldShowWindowTitle() const override;
diff --git a/components/exo/keyboard.h b/components/exo/keyboard.h index 249d2cf..ef5dd10e 100644 --- a/components/exo/keyboard.h +++ b/components/exo/keyboard.h
@@ -10,7 +10,6 @@ #include "ash/ime/ime_controller_impl.h" #include "ash/public/cpp/keyboard/keyboard_controller_observer.h" #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/observer_list.h" #include "components/exo/key_state.h" #include "components/exo/keyboard_observer.h"
diff --git a/components/feature_engagement/public/feature_configurations.cc b/components/feature_engagement/public/feature_configurations.cc index c9563b5..0af4758 100644 --- a/components/feature_engagement/public/feature_configurations.cc +++ b/components/feature_engagement/public/feature_configurations.cc
@@ -189,7 +189,17 @@ k10YearsInDays, k10YearsInDays); return config; } - + if (kIPHTabSwitcherButtonFeature.name == feature->name) { + absl::optional<FeatureConfig> config = FeatureConfig(); + config->valid = true; + config->availability = Comparator(GREATER_THAN_OR_EQUAL, 14); + config->session_rate = Comparator(LESS_THAN, 1); + config->trigger = + EventConfig("tab_switcher_iph_triggered", Comparator(EQUAL, 0), 90, 90); + config->used = EventConfig("tab_switcher_button_clicked", + Comparator(EQUAL, 0), 14, 90); + return config; + } if (kIPHWebFeedFollowFeature.name == feature->name) { // A config that allows the WebFeed follow intro to be shown up to 5x per // week.
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc index 8176a0b..aa66ea1 100644 --- a/components/feature_engagement/public/feature_constants.cc +++ b/components/feature_engagement/public/feature_constants.cc
@@ -137,7 +137,7 @@ const base::Feature kIPHTabGroupsDragAndDropFeature{ "IPH_TabGroupsDragAndDrop", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kIPHTabSwitcherButtonFeature{ - "IPH_TabSwitcherButton", base::FEATURE_DISABLED_BY_DEFAULT}; + "IPH_TabSwitcherButton", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kIPHTranslateMenuButtonFeature{ "IPH_TranslateMenuButton", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kIPHVideoTutorialNTPChromeIntroFeature{
diff --git a/components/gcm_driver/gcm_internals_helper.cc b/components/gcm_driver/gcm_internals_helper.cc index cbde37d..6b360d6 100644 --- a/components/gcm_driver/gcm_internals_helper.cc +++ b/components/gcm_driver/gcm_internals_helper.cc
@@ -23,78 +23,78 @@ namespace { void SetCheckinInfo(const std::vector<gcm::CheckinActivity>& checkins, - base::ListValue* checkin_info) { + std::vector<base::Value>* checkin_info) { for (const gcm::CheckinActivity& checkin : checkins) { - auto row = std::make_unique<base::ListValue>(); - row->Append(checkin.time.ToJsTime()); - row->AppendString(checkin.event); - row->AppendString(checkin.details); - checkin_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(checkin.time.ToJsTime()); + row.Append(checkin.event); + row.Append(checkin.details); + checkin_info->push_back(std::move(row)); } } void SetConnectionInfo(const std::vector<gcm::ConnectionActivity>& connections, - base::ListValue* connection_info) { + std::vector<base::Value>* connection_info) { for (const gcm::ConnectionActivity& connection : connections) { - auto row = std::make_unique<base::ListValue>(); - row->Append(connection.time.ToJsTime()); - row->AppendString(connection.event); - row->AppendString(connection.details); - connection_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(connection.time.ToJsTime()); + row.Append(connection.event); + row.Append(connection.details); + connection_info->push_back(std::move(row)); } } void SetRegistrationInfo( const std::vector<gcm::RegistrationActivity>& registrations, - base::ListValue* registration_info) { + std::vector<base::Value>* registration_info) { for (const gcm::RegistrationActivity& registration : registrations) { - auto row = std::make_unique<base::ListValue>(); - row->Append(registration.time.ToJsTime()); - row->AppendString(registration.app_id); - row->AppendString(registration.source); - row->AppendString(registration.event); - row->AppendString(registration.details); - registration_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(registration.time.ToJsTime()); + row.Append(registration.app_id); + row.Append(registration.source); + row.Append(registration.event); + row.Append(registration.details); + registration_info->push_back(std::move(row)); } } void SetReceivingInfo(const std::vector<gcm::ReceivingActivity>& receives, - base::ListValue* receive_info) { + std::vector<base::Value>* receive_info) { for (const gcm::ReceivingActivity& receive : receives) { - auto row = std::make_unique<base::ListValue>(); - row->Append(receive.time.ToJsTime()); - row->AppendString(receive.app_id); - row->AppendString(receive.from); - row->AppendString(base::NumberToString(receive.message_byte_size)); - row->AppendString(receive.event); - row->AppendString(receive.details); - receive_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(receive.time.ToJsTime()); + row.Append(receive.app_id); + row.Append(receive.from); + row.Append(base::NumberToString(receive.message_byte_size)); + row.Append(receive.event); + row.Append(receive.details); + receive_info->push_back(std::move(row)); } } void SetSendingInfo(const std::vector<gcm::SendingActivity>& sends, - base::ListValue* send_info) { + std::vector<base::Value>* send_info) { for (const gcm::SendingActivity& send : sends) { - auto row = std::make_unique<base::ListValue>(); - row->Append(send.time.ToJsTime()); - row->AppendString(send.app_id); - row->AppendString(send.receiver_id); - row->AppendString(send.message_id); - row->AppendString(send.event); - row->AppendString(send.details); - send_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(send.time.ToJsTime()); + row.Append(send.app_id); + row.Append(send.receiver_id); + row.Append(send.message_id); + row.Append(send.event); + row.Append(send.details); + send_info->push_back(std::move(row)); } } void SetDecryptionFailureInfo( const std::vector<gcm::DecryptionFailureActivity>& failures, - base::ListValue* failure_info) { + std::vector<base::Value>* failure_info) { for (const gcm::DecryptionFailureActivity& failure : failures) { - auto row = std::make_unique<base::ListValue>(); - row->Append(failure.time.ToJsTime()); - row->AppendString(failure.app_id); - row->AppendString(failure.details); - failure_info->Append(std::move(row)); + base::Value row(base::Value::Type::LIST); + row.Append(failure.time.ToJsTime()); + row.Append(failure.app_id); + row.Append(failure.details); + failure_info->push_back(std::move(row)); } } @@ -104,84 +104,85 @@ gcm::GCMProfileService* profile_service, PrefService* prefs, base::DictionaryValue* results) { - auto device_info = std::make_unique<base::DictionaryValue>(); + base::Value device_info(base::Value::Type::DICTIONARY); - device_info->SetBoolean(kProfileServiceCreated, profile_service != nullptr); - device_info->SetBoolean(kGcmEnabled, true); + device_info.SetBoolKey(kProfileServiceCreated, profile_service != nullptr); + device_info.SetBoolKey(kGcmEnabled, true); if (stats) { - results->SetBoolean(kIsRecording, stats->is_recording); - device_info->SetBoolean(kGcmClientCreated, stats->gcm_client_created); - device_info->SetString(kGcmClientState, stats->gcm_client_state); - device_info->SetBoolean(kConnectionClientCreated, - stats->connection_client_created); + results->SetBoolKey(kIsRecording, stats->is_recording); + device_info.SetBoolKey(kGcmClientCreated, stats->gcm_client_created); + device_info.SetStringKey(kGcmClientState, stats->gcm_client_state); + device_info.SetBoolKey(kConnectionClientCreated, + stats->connection_client_created); - auto registered_app_ids = std::make_unique<base::ListValue>(); + base::Value registered_app_ids(base::Value::Type::LIST); for (const std::string& app_id : stats->registered_app_ids) - registered_app_ids->AppendString(app_id); + registered_app_ids.Append(app_id); - device_info->SetList(kRegisteredAppIds, std::move(registered_app_ids)); + device_info.SetKey(kRegisteredAppIds, std::move(registered_app_ids)); if (stats->connection_client_created) - device_info->SetString(kConnectionState, stats->connection_state); + device_info.SetStringKey(kConnectionState, stats->connection_state); if (!stats->last_checkin.is_null()) { - device_info->SetString( + device_info.SetStringKey( kLastCheckin, base::UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime( stats->last_checkin))); } if (!stats->next_checkin.is_null()) { - device_info->SetString( + device_info.SetStringKey( kNextCheckin, base::UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime( stats->next_checkin))); } if (stats->android_id > 0) { - device_info->SetString( + device_info.SetStringKey( kAndroidId, base::StringPrintf("0x%" PRIx64, stats->android_id)); } if (stats->android_secret > 0) { - device_info->SetString(kAndroidSecret, - base::NumberToString(stats->android_secret)); + device_info.SetStringKey(kAndroidSecret, + base::NumberToString(stats->android_secret)); } - device_info->SetInteger(kSendQueueSize, stats->send_queue_size); - device_info->SetInteger(kResendQueueSize, stats->resend_queue_size); - results->Set(kDeviceInfo, std::move(device_info)); + device_info.SetIntKey(kSendQueueSize, stats->send_queue_size); + device_info.SetIntKey(kResendQueueSize, stats->resend_queue_size); + results->SetKey(kDeviceInfo, std::move(device_info)); if (stats->recorded_activities.checkin_activities.size() > 0) { - auto checkin_info = std::make_unique<base::ListValue>(); + std::vector<base::Value> checkin_info; SetCheckinInfo(stats->recorded_activities.checkin_activities, - checkin_info.get()); - results->Set(kCheckinInfo, std::move(checkin_info)); + &checkin_info); + results->SetKey(kCheckinInfo, base::Value(std::move(checkin_info))); } if (stats->recorded_activities.connection_activities.size() > 0) { - auto connection_info = std::make_unique<base::ListValue>(); + std::vector<base::Value> connection_info; SetConnectionInfo(stats->recorded_activities.connection_activities, - connection_info.get()); - results->Set(kConnectionInfo, std::move(connection_info)); + &connection_info); + results->SetKey(kConnectionInfo, base::Value(std::move(connection_info))); } if (stats->recorded_activities.registration_activities.size() > 0) { - auto registration_info = std::make_unique<base::ListValue>(); + std::vector<base::Value> registration_info; SetRegistrationInfo(stats->recorded_activities.registration_activities, - registration_info.get()); - results->Set(kRegistrationInfo, std::move(registration_info)); + ®istration_info); + results->SetKey(kRegistrationInfo, + base::Value(std::move(registration_info))); } if (stats->recorded_activities.receiving_activities.size() > 0) { - auto receive_info = std::make_unique<base::ListValue>(); + std::vector<base::Value> receive_info; SetReceivingInfo(stats->recorded_activities.receiving_activities, - receive_info.get()); - results->Set(kReceiveInfo, std::move(receive_info)); + &receive_info); + results->SetKey(kReceiveInfo, base::Value(std::move(receive_info))); } if (stats->recorded_activities.sending_activities.size() > 0) { - auto send_info = std::make_unique<base::ListValue>(); - SetSendingInfo(stats->recorded_activities.sending_activities, - send_info.get()); - results->Set(kSendInfo, std::move(send_info)); + std::vector<base::Value> send_info; + SetSendingInfo(stats->recorded_activities.sending_activities, &send_info); + results->SetKey(kSendInfo, base::Value(std::move(send_info))); } if (stats->recorded_activities.decryption_failure_activities.size() > 0) { - auto failure_info = std::make_unique<base::ListValue>(); + std::vector<base::Value> failure_info; SetDecryptionFailureInfo( stats->recorded_activities.decryption_failure_activities, - failure_info.get()); - results->Set(kDecryptionFailureInfo, std::move(failure_info)); + &failure_info); + results->SetKey(kDecryptionFailureInfo, + base::Value(std::move(failure_info))); } } }
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc index b3085b80..8cb8201 100644 --- a/components/no_state_prefetch/browser/no_state_prefetch_manager.cc +++ b/components/no_state_prefetch/browser/no_state_prefetch_manager.cc
@@ -180,6 +180,9 @@ case blink::mojom::PrerenderTriggerType::kLinkRelNext: origin = ORIGIN_LINK_REL_NEXT; break; + case blink::mojom::PrerenderTriggerType::kSpeculationRule: + // SpeculationRule is not routed to NoStatePrefetchManager. + NOTREACHED(); } SessionStorageNamespace* session_storage_namespace = nullptr;
diff --git a/components/optimization_guide/core/decision_tree_prediction_model.h b/components/optimization_guide/core/decision_tree_prediction_model.h index aa9fa87a..289203d 100644 --- a/components/optimization_guide/core/decision_tree_prediction_model.h +++ b/components/optimization_guide/core/decision_tree_prediction_model.h
@@ -9,7 +9,6 @@ #include <string> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "components/optimization_guide/core/prediction_model.h" #include "components/optimization_guide/proto/models.pb.h"
diff --git a/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc index d389419..36f922a4 100644 --- a/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc +++ b/components/page_load_metrics/browser/observers/back_forward_cache_page_load_metrics_observer.cc
@@ -261,23 +261,12 @@ normalized_cls_data.sliding_windows_duration1000ms_max_cls)) .SetMaxCumulativeShiftScoreAfterBackForwardCacheRestore_SlidingWindow_Duration300ms( page_load_metrics::LayoutShiftUkmValue( - normalized_cls_data.sliding_windows_duration300ms_max_cls)) - .SetMaxCumulativeShiftScoreAfterBackForwardCacheRestore_SessionWindowByInputs_Gap1000ms_Max5000ms( - page_load_metrics::LayoutShiftUkmValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); + normalized_cls_data.sliding_windows_duration300ms_max_cls)); base::UmaHistogramCounts100( "PageLoad.LayoutInstability.MaxCumulativeShiftScore." "AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms", page_load_metrics::LayoutShiftUmaValue( normalized_cls_data.session_windows_gap1000ms_max5000ms_max_cls)); - base::UmaHistogramCounts100( - "PageLoad.LayoutInstability.MaxCumulativeShiftScore." - "AfterBackForwardCacheRestore.SessionWindowByInputs.Gap1000ms." - "Max5000ms", - page_load_metrics::LayoutShiftUmaValue( - normalized_cls_data - .session_windows_by_inputs_gap1000ms_max5000ms_max_cls)); } builder.Record(ukm::UkmRecorder::Get());
diff --git a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc index 8c59d4a..5f02125 100644 --- a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc +++ b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc
@@ -736,13 +736,9 @@ void PageLoadMetricsUpdateDispatcher::UpdatePageRenderData( const mojom::FrameRenderDataUpdate& render_data) { page_render_data_.layout_shift_score += render_data.layout_shift_delta; - // Should add input timestamps before layout shifts. - layout_shift_normalization_.AddInputTimeStamps(render_data.input_timestamps); layout_shift_normalization_.AddNewLayoutShifts( render_data.new_layout_shifts, base::TimeTicks::Now(), page_render_data_.layout_shift_score); - layout_shift_normalization_for_bfcache_.AddInputTimeStamps( - render_data.input_timestamps); layout_shift_normalization_for_bfcache_.AddNewLayoutShifts( render_data.new_layout_shifts, base::TimeTicks::Now(), page_render_data_.layout_shift_score -
diff --git a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/PlayerManager.java b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/PlayerManager.java index 723cfcd..1acdf287 100644 --- a/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/PlayerManager.java +++ b/components/paint_preview/player/android/java/src/org/chromium/components/paintpreview/player/PlayerManager.java
@@ -109,8 +109,8 @@ // considered 'large'. private static final float LARGE_SUB_FRAME_RATIO = .8f; // The maximum scroll extent value that is allowed for a frame to be considered non-scrollable, - // in pixels. - private static final float SCROLLABLE_FRAME_LENIENCY_THRESHOLD = 50; + // as a ratio of the viewport height. + private static final float SCROLLABLE_FRAME_LENIENCY_RATIO = .1f; /** * Creates a new {@link PlayerManager}. @@ -227,12 +227,14 @@ return; } - float mainFrameScale = mRootFrameCoordinator.getViewportForAccessibility().getScale(); - int mainFrameViewportHeight = + final float mainFrameScale = mRootFrameCoordinator.getViewportForAccessibility().getScale(); + final int mainFrameViewportHeight = mRootFrameCoordinator.getViewportForAccessibility().getHeight(); - boolean isMainFrameScrollable = - (mainFrameScale * mRootFrameData.getContentHeight()) - mainFrameViewportHeight - < SCROLLABLE_FRAME_LENIENCY_THRESHOLD; + final float mainFrameScrollAmountPx = + (mainFrameScale * mRootFrameData.getContentHeight()) - mainFrameViewportHeight; + final float mainFrameScrollLeniencyPx = + SCROLLABLE_FRAME_LENIENCY_RATIO * mainFrameViewportHeight; + final boolean isMainFrameScrollable = mainFrameScrollAmountPx > mainFrameScrollLeniencyPx; if (isMainFrameScrollable) { // We cannot have accessibility support if we have scrollable sub-frames as well as a // scrollable main frame.
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc index 3cd6d0d1..9ccbc46c 100644 --- a/components/password_manager/core/common/password_manager_features.cc +++ b/components/password_manager/core/common/password_manager_features.cc
@@ -34,7 +34,7 @@ // Enables the editing of passwords in Chrome settings. const base::Feature kEditPasswordsInSettings = { -#if defined(OS_ANDROID) || defined(OS_IOS) +#if defined(OS_ANDROID) "EditPasswordsInSettings", base::FEATURE_DISABLED_BY_DEFAULT}; #else "EditPasswordsInSettings", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/components/payments/core/BUILD.gn b/components/payments/core/BUILD.gn index b53b94ae..67c054c 100644 --- a/components/payments/core/BUILD.gn +++ b/components/payments/core/BUILD.gn
@@ -171,6 +171,7 @@ "payment_method_data_unittest.cc", "payment_shipping_option_unittest.cc", "payments_validators_unittest.cc", + "secure_payment_confirmation_instrument_unittest.cc", "url_util_unittest.cc", ]
diff --git a/components/payments/core/secure_payment_confirmation_instrument.cc b/components/payments/core/secure_payment_confirmation_instrument.cc index 8a1c475..0fa4142 100644 --- a/components/payments/core/secure_payment_confirmation_instrument.cc +++ b/components/payments/core/secure_payment_confirmation_instrument.cc
@@ -26,7 +26,7 @@ // before storing in DB. crbug.com/1122764 base::UmaHistogramCounts10000( "PaymentRequest.SecurePaymentConfirmationCredentialIdSizeInBytes", - credential_id.size()); + this->credential_id.size()); } SecurePaymentConfirmationInstrument::~SecurePaymentConfirmationInstrument() =
diff --git a/components/payments/core/secure_payment_confirmation_instrument_unittest.cc b/components/payments/core/secure_payment_confirmation_instrument_unittest.cc new file mode 100644 index 0000000..e856300 --- /dev/null +++ b/components/payments/core/secure_payment_confirmation_instrument_unittest.cc
@@ -0,0 +1,42 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/payments/core/secure_payment_confirmation_instrument.h" + +#include "base/test/metrics/histogram_tester.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace payments { + +// Regression test for https://crbug.com/1122764#c10 - ensure we are recording +// the correct credential ID size. +TEST(SecurePaymentConfirmationInstrumentTest, CredentialIdSizeHistogram) { + const std::string rp_id = "relyingparty.com"; + const std::u16string label = u"My Card"; + const std::vector<uint8_t> icon = {}; + + base::HistogramTester histogram_tester; + + std::vector<uint8_t> credential_id(8); + SecurePaymentConfirmationInstrument i1(credential_id, rp_id, label, icon); + credential_id = std::vector<uint8_t>(64); + SecurePaymentConfirmationInstrument i2(credential_id, rp_id, label, icon); + credential_id = std::vector<uint8_t>(120); + SecurePaymentConfirmationInstrument i3(credential_id, rp_id, label, icon); + credential_id = std::vector<uint8_t>(1024); + SecurePaymentConfirmationInstrument i4(credential_id, rp_id, label, icon); + credential_id = std::vector<uint8_t>(9000); + SecurePaymentConfirmationInstrument i5(credential_id, rp_id, label, icon); + + const std::string kHistogram = + "PaymentRequest.SecurePaymentConfirmationCredentialIdSizeInBytes"; + histogram_tester.ExpectTotalCount(kHistogram, 5); + histogram_tester.ExpectBucketCount(kHistogram, 8, 1); + histogram_tester.ExpectBucketCount(kHistogram, 64, 1); + histogram_tester.ExpectBucketCount(kHistogram, 120, 1); + histogram_tester.ExpectBucketCount(kHistogram, 1024, 1); + histogram_tester.ExpectBucketCount(kHistogram, 9000, 1); +} + +} // namespace payments
diff --git a/components/performance_manager/graph/graph_impl.h b/components/performance_manager/graph/graph_impl.h index aef17c99..a3cc10e 100644 --- a/components/performance_manager/graph/graph_impl.h +++ b/components/performance_manager/graph/graph_impl.h
@@ -13,7 +13,6 @@ #include <utility> #include <vector> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/process/process_handle.h" #include "base/sequence_checker.h"
diff --git a/components/permissions/contexts/bluetooth_chooser_context.h b/components/permissions/contexts/bluetooth_chooser_context.h index a6a14d1..4f66e209 100644 --- a/components/permissions/contexts/bluetooth_chooser_context.h +++ b/components/permissions/contexts/bluetooth_chooser_context.h
@@ -9,7 +9,6 @@ #include <string> #include <utility> -#include "base/containers/flat_set.h" #include "components/permissions/object_permission_context_base.h" #include "third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h" #include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom-forward.h"
diff --git a/components/policy/core/common/BUILD.gn b/components/policy/core/common/BUILD.gn index 10290f8..d926df20 100644 --- a/components/policy/core/common/BUILD.gn +++ b/components/policy/core/common/BUILD.gn
@@ -334,8 +334,8 @@ "cloud/mock_signing_service.h", "cloud/mock_user_cloud_policy_store.cc", "cloud/mock_user_cloud_policy_store.h", - "cloud/policy_builder.cc", - "cloud/policy_builder.h", + "cloud/test/policy_builder.cc", + "cloud/test/policy_builder.h", "configuration_policy_provider_test.cc", "configuration_policy_provider_test.h", "fake_async_policy_loader.cc",
diff --git a/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc b/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc index 220702e..4fdf689 100644 --- a/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc
@@ -14,7 +14,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_client.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/configuration_policy_provider_test.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/mock_configuration_policy_provider.h"
diff --git a/components/policy/core/common/cloud/cloud_policy_validator_unittest.cc b/components/policy/core/common/cloud/cloud_policy_validator_unittest.cc index 0549ed9..9f72c0a 100644 --- a/components/policy/core/common/cloud/cloud_policy_validator_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_validator_unittest.cc
@@ -20,7 +20,7 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_switches.h" #include "components/policy/proto/device_management_backend.pb.h" #include "crypto/rsa_private_key.h" @@ -106,8 +106,8 @@ std::move(policy_response), base::ThreadTaskRunnerHandle::Get()); validator->ValidateTimestamp(timestamp_, timestamp_option_); if (validate_by_gaia_id_) { - validator->ValidateUsernameAndGaiaId(/*username=*/std::string(), - PolicyBuilder::kFakeGaiaId); + validator->ValidateUsernameAndGaiaId( + /*expected_user=*/std::string(), PolicyBuilder::kFakeGaiaId); } else { validator->ValidateUsername(PolicyBuilder::kFakeUsername); }
diff --git a/components/policy/core/common/cloud/component_cloud_policy_service_unittest.cc b/components/policy/core/common/cloud/component_cloud_policy_service_unittest.cc index 5da9bb7..0dda20d42 100644 --- a/components/policy/core/common/cloud/component_cloud_policy_service_unittest.cc +++ b/components/policy/core/common/cloud/component_cloud_policy_service_unittest.cc
@@ -22,8 +22,8 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_client.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/cloud/resource_cache.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_types.h"
diff --git a/components/policy/core/common/cloud/component_cloud_policy_store_unittest.cc b/components/policy/core/common/cloud/component_cloud_policy_store_unittest.cc index 158e991..c67d0d3 100644 --- a/components/policy/core/common/cloud/component_cloud_policy_store_unittest.cc +++ b/components/policy/core/common/cloud/component_cloud_policy_store_unittest.cc
@@ -17,8 +17,8 @@ #include "base/test/test_simple_task_runner.h" #include "base/time/time.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/cloud/resource_cache.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/policy_namespace.h" #include "components/policy/core/common/policy_types.h"
diff --git a/components/policy/core/common/cloud/component_cloud_policy_updater_unittest.cc b/components/policy/core/common/cloud/component_cloud_policy_updater_unittest.cc index 558d42d..b7129af 100644 --- a/components/policy/core/common/cloud/component_cloud_policy_updater_unittest.cc +++ b/components/policy/core/common/cloud/component_cloud_policy_updater_unittest.cc
@@ -18,8 +18,8 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/component_cloud_policy_store.h" #include "components/policy/core/common/cloud/external_policy_data_fetcher.h" -#include "components/policy/core/common/cloud/policy_builder.h" #include "components/policy/core/common/cloud/resource_cache.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/external_data_fetcher.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_map.h"
diff --git a/components/policy/core/common/cloud/machine_level_user_cloud_policy_store_unittest.cc b/components/policy/core/common/cloud/machine_level_user_cloud_policy_store_unittest.cc index f7966b5..bd5f1ae 100644 --- a/components/policy/core/common/cloud/machine_level_user_cloud_policy_store_unittest.cc +++ b/components/policy/core/common/cloud/machine_level_user_cloud_policy_store_unittest.cc
@@ -15,7 +15,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/cloud_policy_util.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/policy/core/common/cloud/policy_builder.cc b/components/policy/core/common/cloud/test/policy_builder.cc similarity index 98% rename from components/policy/core/common/cloud/policy_builder.cc rename to components/policy/core/common/cloud/test/policy_builder.cc index df9a3a6..c01b3d8d 100644 --- a/components/policy/core/common/cloud/policy_builder.cc +++ b/components/policy/core/common/cloud/test/policy_builder.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "base/cxx17_backports.h" #include "build/build_config.h" @@ -216,8 +216,7 @@ std::unique_ptr<crypto::RSAPrivateKey> PolicyBuilder::GetNewSigningKey() const { if (raw_new_signing_key_.empty()) return nullptr; - return std::unique_ptr<crypto::RSAPrivateKey>( - crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(raw_new_signing_key_)); + return crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(raw_new_signing_key_); } void PolicyBuilder::SetDefaultNewSigningKey() {
diff --git a/components/policy/core/common/cloud/policy_builder.h b/components/policy/core/common/cloud/test/policy_builder.h similarity index 91% rename from components/policy/core/common/cloud/policy_builder.h rename to components/policy/core/common/cloud/test/policy_builder.h index 33063f86..5530a53 100644 --- a/components/policy/core/common/cloud/policy_builder.h +++ b/components/policy/core/common/cloud/test/policy_builder.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_BUILDER_H_ -#define COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_BUILDER_H_ +#ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_TEST_POLICY_BUILDER_H_ +#define COMPONENTS_POLICY_CORE_COMMON_CLOUD_TEST_POLICY_BUILDER_H_ #include <stdint.h> @@ -30,7 +30,6 @@ // A helper class for testing that provides a straightforward interface for // constructing policy blobs for use in testing. NB: This uses fake data and // hard-coded signing keys by default, so should not be used in production code. -// TODO: Add "ForTesting" suffix to trigger presubmit checks. class PolicyBuilder { public: // Constants used as dummy data for filling the PolicyData protobuf. @@ -48,6 +47,8 @@ // Creates a policy builder. The builder will have all |policy_data_| fields // initialized to dummy values and use the test signing keys. PolicyBuilder(); + PolicyBuilder(const PolicyBuilder&) = delete; + PolicyBuilder& operator=(const PolicyBuilder&) = delete; virtual ~PolicyBuilder(); // Returns a reference to the policy data protobuf being built. Note that an @@ -147,8 +148,6 @@ std::vector<uint8_t> raw_signing_key_; std::vector<uint8_t> raw_new_signing_key_; std::string raw_new_signing_key_signature_; - - DISALLOW_COPY_AND_ASSIGN(PolicyBuilder); }; // Type-parameterized PolicyBuilder extension that allows for building policy @@ -157,6 +156,8 @@ class TypedPolicyBuilder : public PolicyBuilder { public: TypedPolicyBuilder(); + TypedPolicyBuilder(const TypedPolicyBuilder&) = delete; + TypedPolicyBuilder& operator=(const TypedPolicyBuilder&) = delete; // Returns a reference to the payload protobuf being built. Note that an // initial payload protobuf is created in the constructor. @@ -175,8 +176,6 @@ private: std::unique_ptr<PayloadProto> payload_; - - DISALLOW_COPY_AND_ASSIGN(TypedPolicyBuilder); }; // PolicyBuilder extension that allows for building policy blobs carrying string @@ -184,6 +183,9 @@ class StringPolicyBuilder : public PolicyBuilder { public: StringPolicyBuilder(); + StringPolicyBuilder(const StringPolicyBuilder&) = delete; + StringPolicyBuilder& operator=(const StringPolicyBuilder&) = delete; + void set_payload(std::string payload) { payload_ = std::move(payload); } const std::string& payload() const { return payload_; } void clear_payload() { payload_.clear(); } @@ -193,12 +195,10 @@ private: std::string payload_; - - DISALLOW_COPY_AND_ASSIGN(StringPolicyBuilder); }; -typedef TypedPolicyBuilder<enterprise_management::CloudPolicySettings> - UserPolicyBuilder; +using UserPolicyBuilder = + TypedPolicyBuilder<enterprise_management::CloudPolicySettings>; #if !defined(OS_ANDROID) && !defined(OS_IOS) using ComponentCloudPolicyBuilder = @@ -211,4 +211,4 @@ } // namespace policy -#endif // COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_BUILDER_H_ +#endif // COMPONENTS_POLICY_CORE_COMMON_CLOUD_TEST_POLICY_BUILDER_H_
diff --git a/components/policy/core/common/cloud/user_cloud_policy_store_unittest.cc b/components/policy/core/common/cloud/user_cloud_policy_store_unittest.cc index 6dd799b8..0d93ef0 100644 --- a/components/policy/core/common/cloud/user_cloud_policy_store_unittest.cc +++ b/components/policy/core/common/cloud/user_cloud_policy_store_unittest.cc
@@ -16,7 +16,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_external_data_manager.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_switches.h" #include "components/policy/policy_constants.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/policy/core/common/management/platform_management_service.h b/components/policy/core/common/management/platform_management_service.h index b55a647f..c0a73d3 100644 --- a/components/policy/core/common/management/platform_management_service.h +++ b/components/policy/core/common/management/platform_management_service.h
@@ -5,7 +5,6 @@ #ifndef COMPONENTS_POLICY_CORE_COMMON_MANAGEMENT_PLATFORM_MANAGEMENT_SERVICE_H_ #define COMPONENTS_POLICY_CORE_COMMON_MANAGEMENT_PLATFORM_MANAGEMENT_SERVICE_H_ -#include "base/containers/flat_set.h" #include "base/no_destructor.h" #include "components/policy/core/common/management/management_service.h" #include "components/policy/policy_export.h"
diff --git a/components/policy/core/common/management/platform_management_status_provider_win.h b/components/policy/core/common/management/platform_management_status_provider_win.h index 6ec597b8..2aeaf67 100644 --- a/components/policy/core/common/management/platform_management_status_provider_win.h +++ b/components/policy/core/common/management/platform_management_status_provider_win.h
@@ -5,7 +5,6 @@ #ifndef COMPONENTS_POLICY_CORE_COMMON_MANAGEMENT_PLATFORM_MANAGEMENT_STATUS_PROVIDER_WIN_H_ #define COMPONENTS_POLICY_CORE_COMMON_MANAGEMENT_PLATFORM_MANAGEMENT_STATUS_PROVIDER_WIN_H_ -#include "base/containers/flat_set.h" #include "build/build_config.h" #include "components/policy/core/common/management/management_service.h" #include "components/policy/policy_export.h"
diff --git a/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc b/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc index d2d014e..5ecab2e1 100644 --- a/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc +++ b/components/policy/core/common/remote_commands/remote_commands_service_unittest.cc
@@ -22,7 +22,7 @@ #include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/remote_commands/remote_command_job.h" #include "components/policy/core/common/remote_commands/remote_commands_factory.h" #include "components/policy/core/common/remote_commands/remote_commands_queue.h"
diff --git a/components/policy/core/common/remote_commands/testing_remote_commands_server.cc b/components/policy/core/common/remote_commands/testing_remote_commands_server.cc index ac7be24..1b90be89 100644 --- a/components/policy/core/common/remote_commands/testing_remote_commands_server.cc +++ b/components/policy/core/common/remote_commands/testing_remote_commands_server.cc
@@ -17,7 +17,7 @@ #include "base/time/default_tick_clock.h" #include "base/time/tick_clock.h" #include "base/time/time.h" -#include "components/policy/core/common/cloud/policy_builder.h" +#include "components/policy/core/common/cloud/test/policy_builder.h" #include "crypto/signature_creator.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index 3aef635..7e85ea7 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -40,6 +40,7 @@ Ist die Richtlinie deaktiviert, kann die Synchronisierung von SMS nicht eingerichtet werden. Ist sie nicht konfiguriert, gilt die Standardeinstellung, in der diese Funktion zwar für verwaltete Nutzer nicht zulässig ist, für andere Nutzer jedoch schon.</translation> +<translation id="1035860095382451169">Schloss-Symbol in der Omnibox für sichere Verbindungen aktivieren</translation> <translation id="1040446814317236570">Stripping von PAC-URLs für https:// aktivieren</translation> <translation id="1041450926450683286">Der Client soll diese Daten unverändert weiterleiten und nicht interpretieren. Der DMServer nutzt Version policy_version, um zu bestätigen, dass die Richtlinienansicht des DMServers mit der Ansicht auf Chrome OS-Geräten übereinstimmt.</translation> <translation id="1041719059374171202">Wenn diese Richtlinie konfiguriert ist, können Sie eine Liste mit URL-Mustern erstellen, die angeben, welche Websites kein JavaScript ausführen dürfen. @@ -83,6 +84,7 @@ <translation id="1095209545735032039">Serial API auf diesen Websites blockieren</translation> <translation id="1096105751829466145">Standardsuchmaschine</translation> <translation id="1099282607296956954">Website-Isolierung für jede Website aktivieren</translation> +<translation id="1105572260329131950">Standardsymbole für sichere Verbindungen verwenden</translation> <translation id="1117535567637097036">Die über diese Richtlinie festgelegten Protokoll-Handler werden bei der Verarbeitung von Android-Intents nicht verwendet.</translation> <translation id="1118093128235245168">Websites dürfen den Nutzer um Zugriff auf ein angeschlossenes USB-Gerät bitten</translation> <translation id="111910763555783249">Benachrichtigungseinstellungen</translation> @@ -208,6 +210,7 @@ <translation id="1294263471858445589">Aktiviert die passive Authentifizierung für Inkognito- und reguläre Sitzungen.</translation> <translation id="1295737447968372331">Hiermit wird die Funktion "Spracheingabe" auf dem Anmeldebildschirm aktiviert</translation> <translation id="1297182715641689552">PAC-Proxy-Skript verwenden</translation> +<translation id="1297827666345629703">Ein verwaltetes Konto muss ein primäres Konto sein</translation> <translation id="1297961932043741908">Festlegen, wie viel Megabyte Arbeitsspeicher eine einzelne Instanz von Chrome nutzen darf.</translation> <translation id="1304973015437969093">Ohne Nutzereingriff zu installierende Erweiterungs-/App-IDs und Aktualisierungs-URLs</translation> <translation id="1305400589435476516">Wenn die Richtlinie aktiviert ist, wird Daten-Roaming für das Gerät zugelassen. @@ -572,6 +575,13 @@ Genaue Informationen zu gültigen <ph name="URL_LABEL" />-Mustern finden Sie unter https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> ist kein akzeptierter Wert für diese Richtlinie.</translation> <translation id="1755310913456007816">Vorhandene Einstellungen zur Onlinewiderrufsprüfung verwenden</translation> <translation id="1760951637494635692">Serial API auf diesen Seiten erlauben</translation> +<translation id="1765503534110351026">Diese Richtlinie wurde eingestellt. Bitte verwenden Sie stattdessen die Richtlinie „<ph name="PROXY_SETTINGS_POLICY_NAME" />“. + + Wenn diese Richtlinie festgelegt ist, umgeht <ph name="PRODUCT_NAME" /> alle Proxys für die hier angegebenen Hosts. Diese Richtlinie ist nur dann wirksam, wenn die Richtlinie „<ph name="PROXY_SETTINGS_POLICY_NAME" />“ nicht konfiguriert ist und Sie „<ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />“ oder „<ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />“ für „<ph name="PROXY_MODE_POLICY_NAME" />“ angegeben haben. + + Konfigurieren Sie diese Richtlinie nicht, wenn Sie sich für eine andere Methode zur Festlegung der Proxyrichtlinien entschieden haben. + + Hinweis: Ausführliche Beispiele finden Sie in den Chromium-Projekten unter https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="1767673020408652620">App-Empfehlungen bei Nullstatus des Suchfelds aktivieren</translation> <translation id="1780323582106687813">Diese Richtlinie wurde eingestellt. Bitte verwenden Sie stattdessen "<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />". @@ -793,6 +803,7 @@ <translation id="2082205219176343977">Konfigurieren Sie die für das Gerät erforderliche Mindestversion von Chrome.</translation> <translation id="208566302163036794">Deaktivierte Funktionen sperren</translation> <translation id="208623333578980446">Bildschirm-Wakelocks für die Energieverwaltung zulassen</translation> +<translation id="2086944573376916479">Ein verwaltetes Konto muss ein primäres Konto sein und darf nicht mit sekundären Konten verknüpft sein</translation> <translation id="2090939118981888335">Wenn diese Richtlinie aktiviert ist, wird der Proxy zur Datenkomprimierung zugelassen. Ist die Richtlinie deaktiviert, kann der Proxy nicht verwendet werden. Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wenn sie nicht konfiguriert ist, können Nutzer entscheiden, ob die Funktion genutzt werden soll.</translation> @@ -846,6 +857,17 @@ Wenn diese Richtlinie nicht konfiguriert ist, wird der Browser versuchen, Arbeitsspeicher zu leeren, wenn der verfügbare Arbeitsspeicher auf dem jeweiligen Gerät gering ist.</translation> <translation id="2166472654199325139">Websites mit Inhalten nur für Erwachsene nicht filtern</translation> +<translation id="2168060657210442816"> + Laut dieser Richtlinie muss die Richtlinie „<ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" />“ auf „True“ gesetzt sein, damit sie wirksam wird. + + Wenn für diese Richtlinie „<ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />“ auf Maschinenebene festgelegt ist, müssen alle verwalteten Konten primäre Konten sein. + Wenn für diese Richtlinie „<ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />“ für ein Konto festgelegt ist, ist dieses Konto immer ein primäres Konto, sein Profil kann aber mit sekundären Konten verknüpft sein. + + Wenn für diese Richtlinie „<ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />“ auf Maschinenebene festgelegt ist, müssen alle verwalteten Konten primäre Konten sein. + Wenn für diese Richtlinie „<ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />“ für ein Konto festgelegt ist, ist dieses Konto immer ein primäres Konto und sein Profil darf nicht mit sekundären Konten verknüpft sein. + + Wenn diese Richtlinie auf „<ph name="POLICY_VALUE_NONE" />“ gesetzt oder nicht konfiguriert ist, gelten für verwaltete Konten keine Einschränkungen. Das kann dazu führen, dass ein verwaltetes Konto ein sekundäres Konto ist. Hierdurch gelten für das Konto keine Richtlinien, die durch den Administrator für das Konto festgelegt werden. + </translation> <translation id="2168397434410358693">Inaktivitätsverzögerung im Netzbetrieb</translation> <translation id="217013996107840632">Befehlszeilenparameter für den Wechsel vom alternativen Browser.</translation> <translation id="2170233653554726857">WPAD-Optimierung aktivieren</translation> @@ -1761,6 +1783,11 @@ Unter <ph name="MS_WIN_NAME" /> ist diese Funktion nur in Instanzen verfügbar, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, auf denen Windows 10 Pro läuft oder die durch <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet werden. Unter <ph name="MAC_OS_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die über die Mobilgeräteverwaltung verwaltet werden oder per MCX mit einer Domain verbunden sind.</translation> <translation id="3261592499545947104">Zeitpunkt, an dem eine Zertifikatsverlängerung ausgelöst werden soll, angegeben in Sekunden bis zum Zertifikatsablauf</translation> +<translation id="3264706118366247207">Konfiguriert eine Liste von Browserdatentypen, die beim Schließen aller Browserfenster gelöscht werden sollen. Die folgenden Datentypen sind verfügbar: Browserverlauf (<ph name="DATA_TYPE_BROWSING_HISTORY" />), Downloadverlauf (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), Cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), Cache (<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />), die Funktion „Automatisches Ausfüllen“ (<ph name="DATA_TYPE_AUTOFILL" />), Passwörter (<ph name="DATA_TYPE_PASSWORD" />), Website-Einstellungen (<ph name="DATA_TYPE_SITE_SETTINGS" />) und Daten von gehosteten Apps (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Diese Richtlinie hat keinen Vorrang vor <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Laut dieser Richtlinie muss die Richtlinie „<ph name="SYNC_DISABLED_POLICY_NAME" />“ auf „True“ gesetzt sein. Andernfalls wird sie ignoriert. Wenn diese Richtlinie auf Plattformebene eingerichtet wird, muss die Synchronisierung auf Plattformebene deaktiviert werden. Wenn diese Richtlinie auf Nutzerebene eingerichtet wird, muss die Synchronisierung für diesen Nutzer deaktiviert werden, damit die Richtlinie wirksam wird. + + Wenn <ph name="PRODUCT_NAME" /> nicht ordnungsgemäß beendet wird, z. B. beim Absturz des Browsers oder Betriebssystems, werden die Browserdaten beim nächsten Laden des Profils gelöscht.</translation> <translation id="3264793472749429012">Standardsuchmaschinen-Codierungen</translation> <translation id="3273221114520206906">JavaScript-Standardeinstellung</translation> <translation id="328347261792478720">Der Browser zeigt standardmäßig für den Nutzer personalisierte Empfehlungen zu Medien an. Wenn diese Richtlinie deaktiviert ist, sind diese Empfehlungen für den Nutzer nicht sichtbar. Wenn sie aktiviert oder nicht konfiguriert ist, werden dem Nutzer die Empfehlungen zu Medien angezeigt.</translation> @@ -1825,6 +1852,7 @@ Der Wert für die Richtlinie muss in Millisekunden angegeben werden. Werte müssen kleiner oder gleich dem Wert für die Inaktivitätsverzögerung sein. Die Warnung wird nur eingeblendet, wenn infolge der Inaktivität der Nutzer abgemeldet oder das Gerät heruntergefahren wird.</translation> +<translation id="3363360928811201045">Einschränkungen für verwaltete Konten hinzufügen</translation> <translation id="3367868895271989224">Wenn die Richtlinie aktiviert ist, werden alle Websites isoliert. Jede Website wird dann in einem eigenen Prozess ausgeführt. Ist die Richtlinie deaktiviert oder nicht konfiguriert, wird die Website-Isolierung nicht deaktiviert, kann aber vom Nutzer deaktiviert werden, zum Beispiel mit "Disable site isolation" in chrome://flags. <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> kann für die Differenzierung von Ursprüngen nützlich sein. Setzen Sie unter <ph name="PRODUCT_OS_NAME" /> bis Version 76 die Geräterichtlinie <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> auf denselben Wert. Wenn die Werte nicht übereinstimmen, kann es beim Beginn von Nutzersitzungen zu einer Verzögerung kommen. @@ -3005,6 +3033,7 @@ Steht eine Richtlinie nicht auf der Liste und entsteht dadurch ein Konflikt zwischen Quellen, Bereichen oder Ebene, wird die Richtlinie mit der höchsten Priorität angewendet.</translation> <translation id="5056708224511062314">Lupe deaktiviert</translation> <translation id="5058573563327660283">Strategie auswählen, die bei der automatischen Bereinigung zur Freigabe von Festplattenspeicher verwendet wird (eingestellt)</translation> +<translation id="5059201920681374653">Verwaltete Konten müssen sich auf einem verknüpften verwalteten Gerät befinden</translation> <translation id="5061114193960158745">Mithilfe dieser Richtlinie wird die Liste der Websites verwaltet, die unter keinen Umständen einen Browserwechsel auslösen. Jedes Element wird als Regel angesehen. Wenn es eine Übereinstimmung mit der Regel gibt, wird kein alternativer Browser geöffnet. Im Gegensatz zur Richtlinie "<ph name="URL_LIST_POLICY_NAME" />" gelten die Regeln in beide Richtungen. Wenn das <ph name="IE_PRODUCT_NAME" />-Add-in aktiviert ist, wird damit auch gesteuert, ob <ph name="IE_PRODUCT_NAME" /> diese URLs in <ph name="PRODUCT_NAME" /> öffnen soll. Ist die Richtlinie nicht konfiguriert, werden der Liste keine Websites hinzugefügt. @@ -3190,6 +3219,7 @@ Wenn die Richtlinie nicht konfiguriert ist, können Nutzer das Dinosaurierspiel nicht auf registrierten <ph name="PRODUCT_OS_NAME" />-Geräten spielen, auf anderen aber schon.</translation> <translation id="529457411593078576">Nutzungsbedingungen während der ersten Ausführung für CCT aktivieren</translation> +<translation id="5298949392804966105">Keine Einschränkungen für verwaltete Konten</translation> <translation id="530134925949808452">Zeitpunkt (in Ortszeit), an dem das Nutzungskontingent erneuert wird.</translation> <translation id="5303080953475303561">Mit dieser Richtlinie können Sie festlegen, wie oft auf dem Sperrbildschirm das Passwort zum schnellen Entsperren angefordert wird. Immer dann, wenn der Sperrbildschirm angezeigt wird und die letzte Passworteingabe vor dem über den ausgewählten Wert festgelegten Zeitfenster liegt, steht schnelles Entsperren nicht zur Verfügung. Wenn Nutzer auf dem Sperrbildschirm bleiben, bis diese Zeit abgelaufen ist, wird das nächste Mal, wenn sie einen falschen Code eingeben oder wieder auf den Sperrbildschirm gelangen, ein Passwort angefordert, je nachdem, welche Situation zuerst eintritt. @@ -4350,6 +4380,26 @@ Hinweis: Sofern konfiguriert, überschreibt "<ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />" diese Richtlinie.</translation> <translation id="6833988859168635883">Start, Startseite und Seite "Neuer Tab"</translation> +<translation id="6834298774555537368">Durch Festlegen der Richtlinie werden die Proxyeinstellungen für Chrome- und ARC-Apps so konfiguriert, dass alle Proxyoptionen, die über die Befehlszeile eingegeben werden, ignoriert werden. + + Wird die Richtlinie nicht konfiguriert, können Nutzer die Proxyeinstellungen auswählen. + + Durch Festlegen der Richtlinie „<ph name="PROXY_SETTINGS_POLICY_NAME" />“ werden die folgenden Felder übernommen: + * „<ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />“ legt fest, welcher Proxyserver von Chrome verwendet werden soll, und verhindert, dass Nutzer die Proxyeinstellungen ändern + * „<ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />“, die URL zu einer PAC-Proxydatei + * „<ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />“, die URL des Proxyservers + * „<ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />“, eine Liste mit Hosts, für die der Proxy umgangen wird + + Das Feld „<ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" />“ wurde zugunsten des Felds „<ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />“ eingestellt. + + Für „<ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />“ können folgende Werte festgelegt werden: + * <ph name="PROXY_MODE_ENUM_DIRECT" /> – kein Proxy wird verwendet und alle anderen Felder werden ignoriert. + * <ph name="PROXY_MODE_ENUM_SYSTEM" /> – der Proxy des Systems wird verwendet und alle anderen Felder werden ignoriert. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" /> – alle anderen Felder werden ignoriert. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> – die Felder „<ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />“ und „<ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />“ werden verwendet. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> – die Felder „<ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" />“ und „<ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />“ werden verwendet. + + Hinweis: Ausführliche Beispiele finden Sie in den Chromium-Projekten unter https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="6835883744948188639">Dem Nutzer eine wiederkehrende Aufforderung anzeigen, dass ein Neustart empfohlen wird</translation> <translation id="683688607121170501">Mit dieser Einstellung können Nutzer nach der Anmeldung auf ihrem <ph name="PRODUCT_OS_NAME" />-Gerät im Inhaltsbereich des Browserfensters und in Android-Apps zwischen Google-Konten wechseln. @@ -4762,6 +4812,7 @@ <translation id="7207095846245296855">Google SafeSearch erzwingen</translation> <translation id="7211368186050418507">Zeitzone nie automatisch erkennen</translation> <translation id="7216442368414164495">Ermöglicht Nutzern die Aktivierung erweiterter Berichterstellung bei Verwendung von Safe Browsing</translation> +<translation id="7221574724100909818">Schloss-Symbol für sichere Verbindungen verwenden</translation> <translation id="7229975860249300121">Enthält einen regulären Ausdruck, der festlegt, welche Google-Konten in <ph name="PRODUCT_NAME" /> als primäre Browserkonten eingerichtet werden können, also als das Konto, das bei der Zustimmung zur Synchronisierung ausgewählt wurde. Wenn ein Nutzer ein primäres Browserkonto mit einem Nutzernamen einrichten will, der diesem Muster nicht entspricht, wird ein entsprechender Fehler ausgegeben. @@ -5764,6 +5815,10 @@ <translation id="8631437968147930597">Die Liste der Notizen-Apps, die auf dem Sperrbildschirm von <ph name="PRODUCT_OS_NAME" /> zulässig sind</translation> <translation id="8637566476051166626">Ausdrücklich erlaubte Netzwerkports</translation> <translation id="8643838501942693770">Drittanbieter-Cookies zulassen, aber Nutzern ermöglichen, diese Einstellung zu ändern</translation> +<translation id="8648844602494595665">Mit dieser Richtlinie legen Sie fest, wie das Schloss-Symbol in der Omnibox gehandhabt wird. + Ab Chrome M93 gibt es ein neues Omnibox-Symbol für sichere Verbindungen. + Wenn die Richtlinie aktiviert ist, verwendet Chrome das bestehende Schloss-Symbol für sichere Verbindungen. + Ist die Richtlinie deaktiviert oder nicht konfiguriert, verwendet Chrome das Standardsymbol für sichere Verbindungen.</translation> <translation id="8650974590712548439">Windows-Registrierungspfad für Windows-Clients:</translation> <translation id="8653085952260859632">Informationen zum Arbeitsspeicher ausgeben</translation> <translation id="8653561013005884087">Wenn Sie die Richtlinie auf "True" setzen, bleibt gesprochenes Feedback aktiviert. Wenn Sie die Richtlinie auf "False" setzen, bleibt gesprochenes Feedback deaktiviert.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 9b183893..089c3ea 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Permite la autenticación ambiental en sesiones comunes y de incógnito.</translation> <translation id="1295737447968372331">Habilita la función de dictado en la pantalla de acceso</translation> <translation id="1297182715641689552">Usar un script para proxy .pac</translation> +<translation id="1297827666345629703">Una cuenta administrada debe ser una cuenta principal</translation> <translation id="1297961932043741908">Establece el límite de memoria en megabytes que puede usar una única instancia de Chrome</translation> <translation id="1304973015437969093">ID de extensiones/apps y direcciones URL de actualización para instalar en silencio</translation> <translation id="1305400589435476516">Si habilitas la política, se permitirá el roaming de datos para el dispositivo. @@ -580,6 +581,13 @@ Para obtener información detallada sobre los patrones de <ph name="URL_LABEL" /> válidos, consulta https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> no es un valor aceptado para esta política.</translation> <translation id="1755310913456007816">Usa la configuración para comprobar la actual revocación en línea</translation> <translation id="1760951637494635692">Permite la API de Serial en estos sitios</translation> +<translation id="1765503534110351026">Esta política dejó de estar disponible; usa <ph name="PROXY_SETTINGS_POLICY_NAME" /> en su lugar. + + Si estableces la política, <ph name="PRODUCT_NAME" /> omitirá cualquier proxy de la lista de hosts que se proporciona aquí. Esta política se aplica únicamente si no se especifica la política <ph name="PROXY_SETTINGS_POLICY_NAME" /> y si especificaste <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> o <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> para <ph name="PROXY_MODE_POLICY_NAME" />. + + No debes configurar esta política si seleccionaste otro modo para configurar políticas de proxy. + + Nota: Para obtener más ejemplos detallados, visita The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="1767673020408652620">Habilitar las recomendaciones de apps cuando el cuadro de búsqueda se encuentra sin estado</translation> <translation id="1780323582106687813">Esta política dejó de estar disponible. En su lugar, utiliza la política "<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />". @@ -812,6 +820,7 @@ <translation id="2082205219176343977">Configura la versión mínima permitida de Chrome para el dispositivo.</translation> <translation id="208566302163036794">Bloquea las funciones inhabilitadas</translation> <translation id="208623333578980446">Permite los bloqueos de activación de pantalla para la administración de energía</translation> +<translation id="2086944573376916479">Una cuenta administrada debe ser una cuenta principal y no puede tener cuentas secundarias asociadas</translation> <translation id="2090939118981888335">Si habilitas la política, se activará el proxy de compresión de datos. Si la inhabilitas, se desactivará el proxy. Si estableces la política, los usuarios no podrán cambiarla. Si no la estableces, los usuarios podrán usar la función.</translation> @@ -865,6 +874,17 @@ Si no estableces esta política, el navegador solo comenzará a ahorrar memoria cuando detecte que queda poca cantidad de memoria física disponible en la máquina.</translation> <translation id="2166472654199325139">No aplicar filtros de contenido para adultos a los sitios</translation> +<translation id="2168060657210442816"> + Para que esta política tenga efecto, debe establecerse la política <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> como verdadera. + + Si estableces esta política como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> al nivel de la máquina, todas las cuentas administradas deberán ser principales. + Si la estableces como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> en una cuenta, esa cuenta siempre será principal, pero podrá tener cuentas secundarias en su perfil. + + Si la estableces como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> al nivel de la máquina, todas las cuentas administradas deberán ser principales. + Si la estableces como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> en una cuenta, esa cuenta siempre será principal y no tendrá cuentas secundarias en su perfil. + + Si la estableces como <ph name="POLICY_VALUE_NONE" /> o no la estableces, las cuentas administradas no tendrán restricciones. Por lo tanto, una cuenta administrada podrá ser secundaria. En ese caso, no podrá recibir las políticas que establezca el administrador en la cuenta. + </translation> <translation id="2168397434410358693">Demora de inactividad con alimentación de CA</translation> <translation id="217013996107840632">Parámetros de la línea de comandos para cambiar del navegador alternativo</translation> <translation id="2170233653554726857">Habilitar optimización de WPAD</translation> @@ -1780,6 +1800,11 @@ En <ph name="MS_WIN_NAME" />, esta funcionalidad solo está disponible en instancias vinculadas a un dominio de <ph name="MS_AD_NAME" />, que se ejecuten en Windows 10 Pro o inscritas en la <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. En <ph name="MAC_OS_NAME" />, esta funcionalidad solo está disponible en instancias administradas mediante MDM o vinculadas a un dominio a través de MCX.</translation> <translation id="3261592499545947104">La cantidad de segundos restantes para que caduque un certificado y se active la renovación.</translation> +<translation id="3264706118366247207">Configura una lista de los tipos de datos de navegación que deben borrarse cuando el usuario cierra todas las ventanas de navegación. Los tipos de datos disponibles son el historial de navegación (<ph name="DATA_TYPE_BROWSING_HISTORY" />), el historial de descargas (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), las cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), la memoria caché <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, las opciones de Autocompletar (<ph name="DATA_TYPE_AUTOFILL" />), las contraseñas (<ph name="DATA_TYPE_PASSWORD" />), la configuración de los sitios (<ph name="DATA_TYPE_SITE_SETTINGS" />) y los datos de las apps alojadas (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Esta política no tendrá prioridad sobre <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Esta política requiere que se establezca la política <ph name="SYNC_DISABLED_POLICY_NAME" /> como verdadera; de lo contrario, se ignorará. Si estableces esta política al nivel de la plataforma, se deberá inhabilitar la sincronización al nivel de la plataforma. Si la estableces al nivel del usuario, se deberá inhabilitar la sincronización para ese usuario a fin de que tenga efecto esta política. + + Si no se logra salir de <ph name="PRODUCT_NAME" /> de forma correcta (p. ej., si falla el navegador o el SO), se borrarán los datos de navegación la próxima vez que se cargue el perfil.</translation> <translation id="3264793472749429012">Codificación del proveedor de búsqueda predeterminado</translation> <translation id="3273221114520206906">Configuración de JavaScript predeterminada</translation> <translation id="328347261792478720">De forma predeterminada, el navegador mostrará recomendaciones de contenido multimedia personalizadas para el usuario. Si inhabilitas esta política, el usuario no verá estas recomendaciones. Si la habilitas o no la estableces, el usuario verá las recomendaciones de contenido multimedia.</translation> @@ -1844,6 +1869,7 @@ El valor de la política debe especificarse en milisegundos. Los valores deben ser menores o iguales que la demora de inactividad. Solo se muestra el mensaje de advertencia si la acción de inactividad es salir de la cuenta o apagar el dispositivo.</translation> +<translation id="3363360928811201045">Agregar restricciones en las cuentas administradas</translation> <translation id="3367868895271989224">Si habilitas la política, se aislarán todos los sitios (cada sitio se ejecutará en su propio proceso). Si inhabilitas la política o no la estableces, no se desactivará el aislamiento de sitios, pero los usuarios podrán inhabilitarlo (p. ej., mediante la entrada para inhabilitar el aislamiento de sitios en chrome://flags). <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> también puede ser útil para aislar orígenes más precisos. En la versión 76 y anteriores del <ph name="PRODUCT_OS_NAME" />, establece la política de dispositivo <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> en el mismo valor (dado que, si los valores no coinciden, pueden producirse retrasos cuando se ingresa una sesión de usuario). @@ -3023,6 +3049,7 @@ Si la lista no incluye una política y hay conflicto entre fuentes, alcances o niveles, se aplicará la política con la prioridad más alta.</translation> <translation id="5056708224511062314">La lupa está inhabilitada.</translation> <translation id="5058573563327660283">Seleccionar la estrategia utilizada para liberar espacio en el disco durante el proceso de limpieza automática (dejó de estar disponible)</translation> +<translation id="5059201920681374653">Las cuentas administradas deben estar en un dispositivo administrado que esté afiliada</translation> <translation id="5061114193960158745">Si estableces esta política, se controlará la lista de sitios web que nunca obligarán a cambiar de navegador. Cada elemento será tratado como una regla. Las reglas que coincidan no se abrirán en un navegador alternativo. A diferencia de la política <ph name="URL_LIST_POLICY_NAME" />, las reglas se aplican en ambas direcciones. Si el complemento de <ph name="IE_PRODUCT_NAME" /> está activado, también controlará si <ph name="IE_PRODUCT_NAME" /> puede abrir estas URL en <ph name="PRODUCT_NAME" />. Si no estableces la política, no se agregarán sitios web a la lista. @@ -3208,6 +3235,7 @@ Si no la estableces, los usuario no podrán jugar al juego en el <ph name="PRODUCT_OS_NAME" /> registrado, pero podrán hacerlo en otras circunstancias.</translation> <translation id="529457411593078576">Habilita las Condiciones del Servicio en la primera ejecución para CCT</translation> +<translation id="5298949392804966105">No hay restricciones en las cuentas administradas</translation> <translation id="530134925949808452">La hora del día en que se renueva la cuota de uso (en hora local).</translation> <translation id="5303080953475303561">Si estableces la política, se controlará la frecuencia con la que la pantalla de bloqueo solicita la contraseña para un desbloqueo rápido. Cada vez que aparezca la pantalla de bloqueo, si se ingresó la contraseña por última vez antes del período que especifica el valor elegido, el desbloqueo rápido no estará disponible. Si el usuario permanece en la pantalla de bloqueo por más tiempo que el especificado, la próxima vez que ingrese el código incorrecto o reingrese la pantalla de bloqueo (lo que ocurra primero), se le solicitará una contraseña. @@ -4380,6 +4408,26 @@ Nota: Si se especifica <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />, anulará esta política.</translation> <translation id="6833988859168635883">Página de inicio, página principal y página Nueva pestaña</translation> +<translation id="6834298774555537368">Si estableces la política, se especificará la configuración del proxy para Chrome y las apps de ARC, por lo que se ignorarán todas las opciones relacionadas con el proxy que se especificaron en la línea de comandos. + + Si no la estableces, los usuarios podrán elegir su configuración de proxy. + + Si estableces la política <ph name="PROXY_SETTINGS_POLICY_NAME" />, se aceptarán los siguientes campos: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> (podrás especificar el servidor proxy que usa Chrome y evitar que los usuarios cambien la configuración del proxy) + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> (una dirección URL a un archivo de proxy en formato .pac) + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> (una dirección URL al servidor proxy) + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> (una lista de hosts que omitirán el proxy) + + El campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> dejó de estar disponible. En su lugar, aparece el campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Para <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, si eliges uno de estos valores: + * <ph name="PROXY_MODE_ENUM_DIRECT" />: no se usará nunca un proxy y se ignorará el resto de los campos. + * <ph name="PROXY_MODE_ENUM_SYSTEM" />: se usará el proxy del sistema y se ignorará el resto de los campos. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />: se ignorará el resto de los campos. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />: se usarán los campos <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: se usarán los campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + + Nota: Para obtener más ejemplos detallados, visita The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="6835883744948188639">Mostrar un mensaje recurrente al usuario para indicarle que se recomienda llevar a cabo el reinicio</translation> <translation id="683688607121170501">Esta configuración permite que los usuarios cambien entre Cuentas de Google en el área de contenido de la ventana del navegador y en apps de Android después de acceder en el dispositivo con <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index 11c7a96..8fe7fa19 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Habilita la autenticación pasiva en sesiones normales y de incógnito.</translation> <translation id="1295737447968372331">Habilita el dictado en la pantalla de inicio de sesión</translation> <translation id="1297182715641689552">Utilizar una secuencia de comandos .pac de proxy</translation> +<translation id="1297827666345629703">Una cuenta gestionada debe ser primaria</translation> <translation id="1297961932043741908">Define el límite de megabytes de memoria que puede usar una instancia de Chrome individual.</translation> <translation id="1304973015437969093">IDs de extensiones/aplicaciones y URLs de actualización que se instalan automáticamente</translation> <translation id="1305400589435476516">Si se habilita la política, se permitirá utilizar el roaming de datos en el dispositivo. @@ -579,6 +580,13 @@ Para obtener información detallada sobre los patrones de <ph name="URL_LABEL" /> válidos, consulta https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> no es un valor aceptado para esta política.</translation> <translation id="1755310913456007816">Usar la configuración de comprobación de revocación online actual</translation> <translation id="1760951637494635692">Permitir la API Serial en estos sitios web</translation> +<translation id="1765503534110351026">Esta política está obsoleta. Usa <ph name="PROXY_SETTINGS_POLICY_NAME" /> en su lugar. + + Si se establece la política, <ph name="PRODUCT_NAME" /> evitará cualquier proxy en el caso de los hosts de la lista. Esta política solo se hace efectiva si no se especifica la política <ph name="PROXY_SETTINGS_POLICY_NAME" /> y has especificado <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> o <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> en el caso de <ph name="PROXY_MODE_POLICY_NAME" />. + + Deja esta política sin establecer si has seleccionado otro modo para configurar las políticas de proxy. + + Nota: Puedes consultar más ejemplos detallados en The Chromium Projects: https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="1767673020408652620">Habilitar la opción Aplicaciones recomendadas en estado cero del cuadro de búsqueda.</translation> <translation id="1780323582106687813">Esta política está obsoleta. Usa la política <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> en su lugar. @@ -817,6 +825,7 @@ <translation id="2082205219176343977">Configurar la versión mínima permitida de Chrome en el dispositivo.</translation> <translation id="208566302163036794">Bloquear las funciones inhabilitadas</translation> <translation id="208623333578980446">Permitir los wake locks de pantalla para la gestión de energía</translation> +<translation id="2086944573376916479">Una cuenta gestionada debe ser primaria y no puede tener cuentas secundarias</translation> <translation id="2090939118981888335">Si se habilita esta política, se permitirá usar el proxy de compresión de datos. Si se inhabilita esta política, no se permitirá usar este proxy. Si se asigna un valor a esta política, los usuarios no podrán cambiarlo. Si no se le asigna ninguno, los usuarios podrán elegir si quieren usar esta función.</translation> @@ -870,6 +879,17 @@ Si no se define esta política, el navegador solo intentará ahorrar memoria cuando detecte que la cantidad de memoria física del equipo es baja.</translation> <translation id="2166472654199325139">No filtrar el contenido para adultos de los sitios web</translation> +<translation id="2168060657210442816"> + Esta política requiere asignar el valor True a <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> para que tenga efecto. + + Si a esta política se le asigna el valor <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> en el nivel de máquina, se forzará que todas las cuentas gestionadas sean primarias. + Si se le asigna el valor <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> en una cuenta, esa cuenta siempre será primaria, pero es posible que tenga cuentas secundarias en su perfil. + + Si se le asigna el valor <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> en el nivel de máquina, se forzará que todas las cuentas gestionadas sean primarias. + Si se le asigna el valor <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> en una cuenta, esa cuenta siempre será primaria y no tendrá cuentas secundarias en su perfil. + + Si se le asigna el valor <ph name="POLICY_VALUE_NONE" /> o no se le asigna ningún valor, las cuentas gestionadas no tendrán restricciones. Esto podría provocar que una cuenta gestionada fuera secundaria, lo que impediría que recibiera políticas establecidas por el administrador en la cuenta. + </translation> <translation id="2168397434410358693">Retraso de inactividad cuando el dispositivo está conectado a la red</translation> <translation id="217013996107840632">Parámetros de línea de comandos para cambiar desde el navegador alternativo.</translation> <translation id="2170233653554726857">Habilitar optimización de WPAD</translation> @@ -1790,6 +1810,11 @@ En <ph name="MS_WIN_NAME" />, esta política solo está disponible en las instancias vinculadas a un dominio de <ph name="MS_AD_NAME" /> que se ejecuten en Windows 10 Pro o que se hayan registrado en <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. En <ph name="MAC_OS_NAME" />, esta función solo está disponible en instancias que se gestionen mediante MDM o que estén vinculadas a un dominio a través de MCX.</translation> <translation id="3261592499545947104">Número de segundos restantes para que caduque un certificado cuando se deba activar la renovación</translation> +<translation id="3264706118366247207">Configura una lista de tipos de datos de navegación que se deben eliminar cuando el usuario cierra todas las ventanas del navegador. Los tipos de datos disponibles son los siguientes: historial de navegación (<ph name="DATA_TYPE_BROWSING_HISTORY" />), historial de descargas (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), caché <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, Autocompletar (<ph name="DATA_TYPE_AUTOFILL" />), contraseñas (<ph name="DATA_TYPE_PASSWORD" />), configuración de sitios (<ph name="DATA_TYPE_SITE_SETTINGS" />) y datos de aplicaciones alojadas (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Esta política no prevalece sobre <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + La política requiere asignar el valor true a la política <ph name="SYNC_DISABLED_POLICY_NAME" />. De lo contrario, se ignorará. Si la política se establece a nivel de plataforma, se debe inhabilitar la sincronización a nivel de plataforma. Si la política se establece a nivel de usuario, se debe inhabilitar la sincronización en el caso de ese usuario para que la política se haga efectiva. + + Si <ph name="PRODUCT_NAME" /> no se cierra correctamente (por ejemplo, si el navegador o el SO fallan), los datos de navegación se borrarán la próxima vez que se cargue el perfil.</translation> <translation id="3264793472749429012">Codificaciones del proveedor de búsquedas predeterminadas</translation> <translation id="3273221114520206906">Configuración de JavaScript predeterminada</translation> <translation id="328347261792478720">De forma predeterminada, el navegador mostrará recomendaciones de contenido multimedia personalizadas al usuario. Si se inhabilita esta política, no se mostrarán estas recomendaciones al usuario. Si se habilita esta política o no se establece, se mostrarán recomendaciones de contenido multimedia al usuario.</translation> @@ -1854,6 +1879,7 @@ El valor de esta política debe especificarse en milisegundos. Los valores deben ser inferiores o iguales al retraso de inactividad. El mensaje de advertencia solo se muestra si el modo de inactividad cierra la sesión o apaga el equipo.</translation> +<translation id="3363360928811201045">Añadir restricciones a las cuentas gestionadas</translation> <translation id="3367868895271989224">Si la política se habilita, todos los sitios web se aislarán. (Cada sitio web se ejecuta en su propio proceso). Si se inhabilita o no se le asigna ningún valor, no se desactivará el aislamiento de sitio web, pero permitirá a los usuarios inhabilitarlo (por ejemplo, a través de la opción Disabel site isolation (Inhabilitar el aislamiento de sitio web) en chrome://flags). <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> también puede resultar útil para ajustar los orígenes. Define la política de dispositivos <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> con el mismo valor en la versión 76 de <ph name="PRODUCT_OS_NAME" /> y versiones posteriores. (Si los valores de las dos políticas no coinciden, es posible que se produzca un retraso al acceder a una sesión de usuario). @@ -3037,6 +3063,7 @@ Si una política no está en la lista y se produce un conflicto entre distintos permisos, niveles o fuentes, se aplicará la política con mayor prioridad.</translation> <translation id="5056708224511062314">Lupa inhabilitada</translation> <translation id="5058573563327660283">Seleccionar la estrategia utilizada para liberar espacio en disco durante la limpieza automática (obsoleta)</translation> +<translation id="5059201920681374653">Las cuentas gestionadas deben estar en un dispositivo gestionado asociado</translation> <translation id="5061114193960158745">Si se define esta política, controlará la lista de sitios web que nunca provocarán que se cambie de navegador. Cada elemento se tratará como una regla. Las reglas para las que se encuentre una coincidencia no abrirán un navegador alternativo. A diferencia de la política <ph name="URL_LIST_POLICY_NAME" />, estas reglas se aplicarán en ambas direcciones. Si el complemento de <ph name="IE_PRODUCT_NAME" /> está activado, también controlará si <ph name="IE_PRODUCT_NAME" /> debe abrir esas URL en <ph name="PRODUCT_NAME" />. Si no se asigna ningún valor a esta política, no se añadirá ningún sitio web a la lista. @@ -3223,6 +3250,7 @@ Si no se le asigna ningún valor, los usuarios no podrán jugar al juego del dinosaurio en dispositivos <ph name="PRODUCT_OS_NAME" /> registrados, pero podrán hacerlo en otras circunstancias.</translation> <translation id="529457411593078576">Habilitar los Términos del Servicio cuando CCT se ejecute por primera vez</translation> +<translation id="5298949392804966105">Sin restricciones en las cuentas gestionadas</translation> <translation id="530134925949808452">La hora del día (en la zona horaria local) en la que se renovará la cuota de uso.</translation> <translation id="5303080953475303561">Esta política controla la frecuencia con la que la pantalla de bloqueo solicita la contraseña para el desbloqueo rápido. Cuando aparece la pantalla de bloqueo, si el tiempo transcurrido desde la última vez que se introdujo la contraseña es mayor al del valor elegido, el desbloqueo rápido no estará disponible. Si los usuarios permanecen en la pantalla de bloqueo pasado ese tiempo, la próxima vez que introduzcan un código incorrecto o vuelvan a acceder a la pantalla de bloqueo (lo que suceda primero), se les pedirá la contraseña. @@ -4396,6 +4424,26 @@ Nota: <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> anula esta política si se especifica la anterior.</translation> <translation id="6833988859168635883">Inicio, Página principal y página Nueva pestaña</translation> +<translation id="6834298774555537368">Si se establece la política, se definirá la configuración de proxy aplicable a Chrome y a las aplicaciones ARC, que ignoran todas las opciones relacionadas con el proxy especificadas en la línea de comandos. + + Si no se establece la política, los usuarios podrán elegir su configuración de proxy. + + Si se establece la política <ph name="PROXY_SETTINGS_POLICY_NAME" />, se aceptarán los siguientes campos: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />: permite especificar el servidor proxy que usará Chrome. Además, impide que los usuarios puedan cambiar la configuración del proxy. + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />: URL a un archivo .pac de proxy. + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />: URL del servidor proxy. + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />: lista de hosts que determinarán que se evite el proxy. + + El campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> está obsoleto y ha sido sustituido por el campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Si en el campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> eliges el valor: + * <ph name="PROXY_MODE_ENUM_DIRECT" />: nunca se usará un proxy y se ignorarán los demás campos. + * <ph name="PROXY_MODE_ENUM_SYSTEM" />: se usará el proxy del sistema y se ignorarán el resto de los campos. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />: se ignorarán los demás campos. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />: se usarán los campos <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: se usarán los campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> y <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + + Nota: Puedes consultar más ejemplos detallados en The Chromium Projects: https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="6835883744948188639">Mostrar un mensaje periódico al usuario indicando que se recomienda reiniciar el navegador</translation> <translation id="683688607121170501">Esta opción permite que los usuarios cambien de una cuenta de Google a otra en el área de contenido de la ventana de su navegador y en las aplicaciones de Android después de haber iniciado sesión en su dispositivo <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 7b80b5d..3b59cba 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Activer l'authentification ambiante pour les sessions standards et de navigation privée.</translation> <translation id="1295737447968372331">Activer la dictée sur l'écran de connexion</translation> <translation id="1297182715641689552">Utiliser un script de proxy .pac</translation> +<translation id="1297827666345629703">Un compte géré doit être un compte principal</translation> <translation id="1297961932043741908">Définir la quantité maximale (en mégaoctets) de mémoire qu'une instance de Chrome peut utiliser.</translation> <translation id="1304973015437969093">Identifiants d'extension ou d'application et URL de mise à jour à installer en arrière-plan</translation> <translation id="1305400589435476516">Si cette règle est activée, l'itinérance des données est autorisée sur l'appareil. @@ -581,6 +582,13 @@ Pour en savoir plus sur les formats <ph name="URL_LABEL" /> valides, veuillez consulter la page https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. La valeur <ph name="WILDCARD_VALUE" /> n'est pas acceptée pour cette règle.</translation> <translation id="1755310913456007816">Utiliser les paramètres existants de vérification en ligne de la révocation</translation> <translation id="1760951637494635692">Autoriser l'API Serial sur ces sites</translation> +<translation id="1765503534110351026">Cette règle étant obsolète, veuillez utiliser <ph name="PROXY_SETTINGS_POLICY_NAME" /> à la place. + + Si cette règle est configurée, <ph name="PRODUCT_NAME" /> contourne tout proxy de la liste d'hôtes indiquée ici. Elle ne s'applique que si la règle <ph name="PROXY_SETTINGS_POLICY_NAME" /> n'est pas spécifiée et si vous avez sélectionné <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> ou <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> pour <ph name="PROXY_MODE_POLICY_NAME" />. + + Ne configurez pas cette règle si vous avez sélectionné un autre mode pour spécifier les règles de proxy. + + Remarque : Pour voir des exemples détaillés, accédez à The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="1767673020408652620">Activer les recommandations d'applications dans le champ de recherche vide</translation> <translation id="1780323582106687813">Cette règle étant obsolète, veuillez utiliser à la place la règle <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />. @@ -819,6 +827,7 @@ <translation id="2082205219176343977">Configurer la version Chrome minimale autorisée de l'appareil.</translation> <translation id="208566302163036794">Bloquer les fonctionnalités désactivées</translation> <translation id="208623333578980446">Autoriser les wakelocks forçant l'activation de l'écran pour la gestion de l'alimentation</translation> +<translation id="2086944573376916479">Un compte géré doit être un compte principal sans comptes secondaires</translation> <translation id="2090939118981888335">Si vous activez cette règle, le proxy de compression des données est activé. Si vous la désactivez, le proxy est désactivé. Si vous configurez cette règle, les utilisateurs ne peuvent pas la modifier. Si vous ne la configurez pas, les utilisateurs peuvent choisir d'utiliser ou non la fonctionnalité.</translation> @@ -872,6 +881,17 @@ Si cette règle n'est pas configurée, le navigateur ne commence à économiser de la mémoire que s'il détecte que la quantité de mémoire physique sur l'ordinateur est faible.</translation> <translation id="2166472654199325139">Ne pas filtrer les sites de contenus réservés aux adultes</translation> +<translation id="2168060657210442816"> + Cette règle nécessite que la règle <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> soit définie sur "True" pour être appliquée. + + Si elle est définie sur <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> au niveau de l'ordinateur, tous les comptes gérés seront obligatoirement des comptes principaux. + Si elle est définie sur <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> au niveau d'un compte, ce compte sera toujours un compte principal, qui pourra avoir des comptes secondaires dans son profil. + + Si elle est définie sur <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> au niveau de l'ordinateur, tous les comptes gérés seront obligatoirement des comptes principaux. + Si elle est définie sur <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> au niveau d'un compte, ce compte sera toujours un compte principal, sans compte secondaire dans son profil. + + Si elle est définie sur <ph name="POLICY_VALUE_NONE" /> ou si elle n'est pas configurée, il n'y aura aucune restriction pour les comptes gérés. Il sera donc possible qu'un compte géré soit un compte secondaire, ce qui l'empêchera de recevoir des règles définies sur le compte par l'administrateur. + </translation> <translation id="2168397434410358693">Délai d'inactivité (secteur)</translation> <translation id="217013996107840632">Paramètres de ligne de commande pour basculer vers Chrome à partir du navigateur secondaire.</translation> <translation id="2170233653554726857">Activer l'optimisation WPAD</translation> @@ -1771,6 +1791,11 @@ Sous <ph name="MS_WIN_NAME" />, cette règle n'est disponible que sur les instances associées à un domaine <ph name="MS_AD_NAME" />, exécutées sous Windows 10 Pro ou qui bénéficient de la <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Sous <ph name="MAC_OS_NAME" />, elle n'est disponible que sur les instances gérées via MDM ou associées à un domaine via MCX.</translation> <translation id="3261592499545947104">Nombre de secondes avant l'expiration d'un certificat lorsque le renouvellement doit être déclenché.</translation> +<translation id="3264706118366247207">Configure une liste des types de données de navigation devant être supprimés lorsque l'utilisateur ferme toutes les fenêtres du navigateur. Les types de données disponibles sont les suivants : historique de navigation (<ph name="DATA_TYPE_BROWSING_HISTORY" />), historique des téléchargements (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), cache (<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />), saisie automatique (<ph name="DATA_TYPE_AUTOFILL" />), mots de passe (<ph name="DATA_TYPE_PASSWORD" />), paramètres des sites (<ph name="DATA_TYPE_SITE_SETTINGS" />) et données des applis hébergées (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Cette règle ne prévaut pas sur <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Cette règle nécessite que la règle <ph name="SYNC_DISABLED_POLICY_NAME" /> soit définie sur "True". Si ce n'est pas le cas, elle sera ignorée. Si cette règle est définie au niveau de la plate-forme, la synchronisation devra y être désactivée. Si elle est définie au niveau d'un utilisateur, la synchronisation devra être désactivée au niveau de cet utilisateur pour que la règle prenne effet. + + Si <ph name="PRODUCT_NAME" /> ne se ferme pas correctement, par exemple si le navigateur ou l'OS plante, les données de navigation seront supprimées lors du prochain chargement du profil.</translation> <translation id="3264793472749429012">Codages du moteur de recherche par défaut</translation> <translation id="3273221114520206906">Paramètre JavaScript par défaut</translation> <translation id="328347261792478720">Par défaut, le navigateur propose à l'utilisateur des recommandations personnalisées de contenus multimédias. Si cette règle est désactivée, l'utilisateur ne bénéficie pas de ces recommandations. Si cette règle est activée ou qu'elle n'est pas configurée, l'utilisateur peut voir ces recommandations.</translation> @@ -1831,6 +1856,7 @@ La valeur de la règle doit être indiquée en millisecondes. Elle doit également être inférieure ou égale au délai d'inactivité. Le message d'avertissement ne s'affiche que si le dépassement du délai d'inactivité entraîne une déconnexion ou l'arrêt de l'appareil.</translation> +<translation id="3363360928811201045">Ajouter des restrictions aux comptes gérés</translation> <translation id="3367868895271989224">Si cette règle est activée, tous les sites sont isolés. (Chaque site exécute son propre processus.) Si cette règle est désactivée ou si elle n'est pas configurée, les utilisateurs peuvent désactiver l'isolation de sites (en accédant à l'option "Désactiver l'isolation de sites" sur la page chrome://flags, par exemple). <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> peut être également utile pour le réglage des origines. Pour <ph name="PRODUCT_OS_NAME" /> 76 ou version antérieure, attribuez la même valeur à la règle <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> relative aux appareils. En effet, si les valeurs ne sont pas identiques, un retard peut être constaté lors de l'ouverture d'une session utilisateur. @@ -3009,6 +3035,7 @@ Si une règle ne figure pas dans la liste et qu'il y a conflit entre plusieurs sources, champs d'application ou niveaux, la règle ayant la plus haute priorité s'applique.</translation> <translation id="5056708224511062314">Loupe désactivée</translation> <translation id="5058573563327660283">Sélectionner la stratégie utilisée pour libérer de l'espace disque au cours du nettoyage automatique (obsolète)</translation> +<translation id="5059201920681374653">Les comptes gérés doivent être sur un appareil géré affilié</translation> <translation id="5061114193960158745">Permet d'établir la liste des sites Web qui ne déclencheront jamais de changement de navigateur. Chaque élément est traité comme une instruction. Les instructions pour lesquelles il y a une correspondance ne déclenchent pas l'ouverture d'un navigateur secondaire. Contrairement à la règle <ph name="URL_LIST_POLICY_NAME" />, les instructions s'appliquent dans les deux sens. Lorsque le module complémentaire d'<ph name="IE_PRODUCT_NAME" /> est activé, il contrôle également si <ph name="IE_PRODUCT_NAME" /> doit ouvrir ou non ces URL dans <ph name="PRODUCT_NAME" />. Si cette règle n'est pas configurée, aucun site Web n'est ajouté à la liste. @@ -3194,6 +3221,7 @@ Si cette règle n'est pas configurée, les utilisateurs ne peuvent pas jouer à ce jeu sur les appareils équipés de <ph name="PRODUCT_OS_NAME" />, mais ils le peuvent dans d'autres circonstances.</translation> <translation id="529457411593078576">Activer les conditions d'utilisation à la première exécution des onglets personnalisés Chrome</translation> +<translation id="5298949392804966105">Aucune restriction pour les comptes gérés</translation> <translation id="530134925949808452">Heure locale à laquelle le quota d'utilisation est renouvelé.</translation> <translation id="5303080953475303561">Cette règle permet de contrôler la fréquence à laquelle l'écran de verrouillage exige un mot de passe pour le déverrouillage rapide. Si la dernière saisie du mot de passe est antérieure à la période définie, le déverrouillage rapide n'est pas disponible. Si l'utilisateur reste sur l'écran de verrouillage au-delà de cette période, il devra saisir son mot de passe la prochaine fois qu'il saisira un code erroné ou accédera de nouveau à l'écran de verrouillage, selon la situation qui se présente en premier. @@ -4367,6 +4395,26 @@ Remarque : <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> remplace cette règle si l'ancienne est définie.</translation> <translation id="6833988859168635883">Démarrage, page d'accueil et page Nouvel onglet</translation> +<translation id="6834298774555537368">Cette règle permet de configurer les paramètres de proxy pour Chrome et les applis ARC, qui ignorent toutes les options liées au proxy spécifiées à partir de la ligne de commande. + + Si cette règle n'est pas configurée, les utilisateurs peuvent sélectionner les paramètres de proxy. + + Si la règle <ph name="PROXY_SETTINGS_POLICY_NAME" /> est configurée, les champs suivants sont proposés : + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> vous permet de spécifier le serveur proxy que Chrome utilise, et empêche les utilisateurs de modifier les paramètres de proxy + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> : URL d'un fichier .pac de proxy + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> : URL du serveur proxy + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> : liste d'hôtes pour lesquels le proxy sera contourné + + Le champ <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> est obsolète et a été remplacé par le champ <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Dans <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, si vous sélectionnez : + * <ph name="PROXY_MODE_ENUM_DIRECT" />, aucun proxy n'est utilisé et tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, le proxy du système est utilisé et tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, tous les autres champs sont ignorés ; + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, les champs <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> et <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sont utilisés ; + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, les champs <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> et <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> sont utilisés. + + Remarque : Pour voir des exemples détaillés, accédez à The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="6835883744948188639">Afficher une invite récurrente indiquant qu'un redémarrage est recommandé</translation> <translation id="683688607121170501">Ce paramètre permet aux utilisateurs de basculer d'un compte Google à l'autre dans la zone de contenu de la fenêtre de leur navigateur et dans les applications Android une fois qu'ils sont connectés sur leur appareil <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 7f39acf..8908f91 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Mengaktifkan autentikasi pasif di sesi samaran dan reguler.</translation> <translation id="1295737447968372331">Mengaktifkan dikte di layar login</translation> <translation id="1297182715641689552">Gunakan skrip proxy .pac</translation> +<translation id="1297827666345629703">Akun terkelola harus berupa akun utama</translation> <translation id="1297961932043741908">Menetapkan batas megabyte memori yang dapat digunakan oleh satu instance Chrome.</translation> <translation id="1304973015437969093">ID Ekstensi/Aplikasi dan URL pembaruan akan dipasang di latar belakang</translation> <translation id="1305400589435476516">Jika kebijakan disetel ke Aktif, roaming data akan diizinkan untuk perangkat. @@ -579,6 +580,13 @@ Untuk informasi selengkapnya tentang pola <ph name="URL_LABEL" /> yang valid, lihat https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> bukanlah nilai yang diterima untuk kebijakan ini.</translation> <translation id="1755310913456007816">Gunakan setelan pemeriksaan pembatalan online yang sudah ada</translation> <translation id="1760951637494635692">Mengizinkan Serial API di situs ini</translation> +<translation id="1765503534110351026">Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Jika kebijakan disetel, <ph name="PRODUCT_NAME" /> akan mengabaikan proxy apa pun untuk daftar host yang diberikan di sini. Kebijakan ini hanya berlaku jika kebijakan <ph name="PROXY_SETTINGS_POLICY_NAME" /> tidak ditentukan dan Anda menentukan <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> atau <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> untuk <ph name="PROXY_MODE_POLICY_NAME" />. + + Biarkan kebijakan ini tidak disetel, jika Anda memilih mode lain untuk menyetel kebijakan proxy. + + Catatan: Untuk contoh yang lebih mendetail, buka Project Chromium ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="1767673020408652620">Aktifkan fitur Rekomendasi Aplikasi pada Status Kosong Kotak Penelusuran</translation> <translation id="1780323582106687813">Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan kebijakan '<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />'. @@ -817,6 +825,7 @@ <translation id="2082205219176343977">Mengonfigurasi versi minimum Chrome yang diizinkan untuk perangkat.</translation> <translation id="208566302163036794">Blokir fitur yang dinonaktifkan</translation> <translation id="208623333578980446">Izinkan penguncian layar saat aktif untuk pengelolaan daya</translation> +<translation id="2086944573376916479">Akun terkelola harus berupa akun utama dan tidak memiliki akun sekunder</translation> <translation id="2090939118981888335">Jika kebijakan disetel ke Aktif, proxy kompresi data akan diizinkan. Jika kebijakan disetel ke Nonaktif, proxy tidak akan diizinkan. Jika kebijakan disetel, pengguna tidak dapat mengubahnya. Jika tidak disetel, pengguna dapat memilih menggunakan fitur tersebut.</translation> @@ -870,6 +879,17 @@ Jika kebijakan ini tidak ditetapkan, browser hanya akan mulai mencoba menghemat memori setelah mendeteksi bahwa perangkatnya memiliki jumlah memori fisik yang rendah.</translation> <translation id="2166472654199325139">Jangan filter konten khusus dewasa dari situs</translation> +<translation id="2168060657210442816"> + Kebijakan ini mengharuskan <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> disetel ke Benar (True) agar dapat berlaku. + + Jika kebijakan ini disetel ke <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> di tingkat perangkat, semua akun terkelola akan dipaksa menjadi akun utama. + Jika kebijakan ini disetel ke <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> untuk suatu akun, akun tersebut akan selalu menjadi akun utama, tetapi dapat memiliki akun sekunder di profilnya. + + Jika kebijakan ini disetel ke <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> di tingkat perangkat, semua akun terkelola akan dipaksa menjadi akun utama. + Jika kebijakan ini disetel ke <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> untuk suatu akun, akun tersebut akan selalu menjadi akun utama dan tidak akan memiliki akun sekunder di profilnya. + + Jika kebijakan ini disetel ke <ph name="POLICY_VALUE_NONE" /> atau tidak disetel, akun terkelola tidak akan memiliki batasan. Hal ini dapat menyebabkan akun terkelola menjadi akun sekunder, yang akan menonaktifkan kemampuannya untuk menerima kebijakan yang disetel di akun oleh admin. + </translation> <translation id="2168397434410358693">Menunda waktu menganggur saat menggunakan daya AC</translation> <translation id="217013996107840632">Parameter command line untuk beralih dari browser alternatif.</translation> <translation id="2170233653554726857">Aktifkan pengoptimalan WPAD</translation> @@ -1790,6 +1810,11 @@ Di <ph name="MS_WIN_NAME" />, fungsi ini hanya tersedia di instance yang dihubungkan ke domain <ph name="MS_AD_NAME" />, dijalankan di Windows 10 Pro, atau didaftarkan di <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Di <ph name="MAC_OS_NAME" />, fungsi ini hanya tersedia di instance yang dikelola melalui MDM, atau dihubungkan ke domain melalui MCX.</translation> <translation id="3261592499545947104">Jumlah detik sebelum masa berlaku sertifikat habis saat perpanjangan harus dipicu.</translation> +<translation id="3264706118366247207">Mengonfigurasi daftar jenis data penjelajahan yang harus dihapus saat pengguna menutup semua jendela browser. Jenis data yang tersedia adalah histori penjelajahan (<ph name="DATA_TYPE_BROWSING_HISTORY" />), histori download (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), cache <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, isi otomatis (<ph name="DATA_TYPE_AUTOFILL" />), sandi (<ph name="DATA_TYPE_PASSWORD" />), setelan situs (<ph name="DATA_TYPE_SITE_SETTINGS" />), dan data aplikasi yang dihosting (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Kebijakan ini tidak akan lebih diprioritaskan daripada <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Kebijakan ini mengharuskan kebijakan <ph name="SYNC_DISABLED_POLICY_NAME" /> disetel ke benar (true). Jika tidak, kebijakan ini akan diabaikan. Jika kebijakan ini disetel di tingkat platform, Sinkronisasi harus dinonaktifkan di tingkat platform. Jika kebijakan ini disetel di tingkat pengguna, Sinkronisasi harus dinonaktifkan untuk pengguna tersebut agar kebijakan ini dapat berlaku. + + Jika <ph name="PRODUCT_NAME" /> tidak ditutup dengan benar (misalnya, browser atau OS mengalami error), data penjelajahan akan dihapus saat berikutnya profil dimuat.</translation> <translation id="3264793472749429012">Penyandiaksaraan penyedia penelusuran default</translation> <translation id="3273221114520206906">Setelan JavaScript default</translation> <translation id="328347261792478720">Secara default, browser akan menampilkan rekomendasi media yang dipersonalisasi kepada pengguna. Jika kebijakan ini disetel ke Nonaktif, rekomendasi ini akan disembunyikan dari pengguna. Jika kebijakan ini disetel ke Aktif atau tidak disetel, rekomendasi media akan ditampilkan kepada pengguna.</translation> @@ -1854,6 +1879,7 @@ Nilai kebijakan harus ditentukan dalam milidetik. Nilai dikunci ke kurang dari atau sama dengan penundaan waktu tidak ada aktivitas. Pesan peringatan hanya ditampilkan jika tindakan tidak ada aktivitas adalah logout atau matikan.</translation> +<translation id="3363360928811201045">Menambahkan batasan di akun terkelola</translation> <translation id="3367868895271989224">Jika kebijakan disetel ke Aktif, semua situs akan diisolasi. (Setiap situs menjalankan prosesnya sendiri.) Jika kebijakan disetel ke Nonaktif atau tidak disetel, isolasi situs tidak akan dinonaktifkan, tetapi pengguna dapat memilih untuk tidak ikut (misalnya, dengan menggunakan opsi Nonaktifkan isolasi situs di chrome://flags). <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> juga dapat bermanfaat untuk menyempurnakan asal. Di <ph name="PRODUCT_OS_NAME" /> versi 76 dan yang lebih lama, setel kebijakan perangkat <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> ke nilai yang sama. (Jika nilai tidak cocok, penundaan dapat terjadi saat memasuki sesi pengguna.) @@ -3036,6 +3062,7 @@ Jika sebuah kebijakan tidak tercantum dalam daftar dan terdapat konflik antara sumber, cakupan, atau level, kebijakan dengan prioritas tertinggi akan diterapkan.</translation> <translation id="5056708224511062314">Lup dinonaktifkan</translation> <translation id="5058573563327660283">Pilih strategi yang digunakan untuk mengosongkan ruang disk selama pembersihan otomatis (tidak digunakan lagi)</translation> +<translation id="5059201920681374653">Akun terkelola harus berada di perangkat terkelola yang berafiliasi</translation> <translation id="5061114193960158745">Menyetel kebijakan akan mengontrol daftar situs yang tidak pernah menyebabkan pengalihan browser. Setiap item diperlakukan sebagai aturan. Aturan yang cocok tidak akan membuka browser alternatif. Tidak seperti kebijakan <ph name="URL_LIST_POLICY_NAME" />, aturan berlaku untuk kedua arah. Jika diaktifkan, add-in <ph name="IE_PRODUCT_NAME" /> juga akan mengontrol apakah <ph name="IE_PRODUCT_NAME" /> harus membuka URL ini di <ph name="PRODUCT_NAME" />. Jika kebijakan tidak disetel, tidak ada situs yang akan ditambahkan ke daftar. @@ -3222,6 +3249,7 @@ Jika kebijakan tidak ditetapkan, pengguna tidak dapat memainkan game di <ph name="PRODUCT_OS_NAME" /> yang terdaftar, tetapi dapat memainkannya dalam kondisi lain.</translation> <translation id="529457411593078576">Menampilkan Persyaratan Layanan (ToS) saat CCT pertama kali dijalankan</translation> +<translation id="5298949392804966105">Tidak ada batasan di akun terkelola</translation> <translation id="530134925949808452">Waktu dalam hari dalam waktu lokal saat kuota penggunaan diperpanjang.</translation> <translation id="5303080953475303561">Menyetel kebijakan akan mengontrol frekuensi layar kunci meminta sandi untuk mode buka kunci cepat. Setiap kali layar kunci ditampilkan, jika entri sandi terakhir terjadi sebelum jangka waktu yang ditentukan oleh nilai yang dipilih, mode buka kunci cepat tidak akan tersedia. Jika pengguna tetap berada di layar kunci setelah jangka waktu ini, sandi akan diminta saat pengguna salah memasukkan kode lagi atau masuk kembali ke layar kunci, mana saja yang terjadi lebih dahulu. @@ -4397,6 +4425,26 @@ Catatan: <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> akan mengganti kebijakan ini jika kebijakan tersebut ditentukan.</translation> <translation id="6833988859168635883">Halaman Awal, Halaman Beranda, dan halaman Tab Baru</translation> +<translation id="6834298774555537368">Menyetel kebijakan akan mengonfigurasi setelan proxy untuk Chrome dan aplikasi ARC, yang mengabaikan semua opsi terkait proxy yang ditentukan dari command line. + + Jika kebijakan tidak disetel, pengguna dapat memilih setelan proxy mereka. + + Menyetel kebijakan <ph name="PROXY_SETTINGS_POLICY_NAME" /> akan menyetujui kolom berikut: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, yang memungkinkan Anda menentukan server proxy yang digunakan oleh Chrome dan mencegah pengguna mengubah setelan proxy + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />, URL ke file .pac proxy + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />, URL server proxy + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />, daftar host proxy yang diabaikan + + Kolom <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> tidak digunakan lagi dan digantikan dengan kolom <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Untuk <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, jika Anda memilih nilai: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, proxy tidak akan pernah digunakan dan semua kolom lainnya akan diabaikan. + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, proxy sistem akan digunakan dan semua kolom lainnya akan diabaikan. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, semua kolom lainnya akan diabaikan. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, kolom <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> dan <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> akan digunakan. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, kolom <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> dan <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> akan digunakan. + + Catatan: Untuk contoh yang lebih mendetail, buka Project Chromium ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation> <translation id="6835883744948188639">Tampilkan permintaan berulang kepada pengguna yang menunjukkan bahwa peluncuran ulang direkomendasikan</translation> <translation id="683688607121170501">Setelan ini memungkinkan pengguna beralih ke Akun Google lain di dalam area konten jendela browser dan aplikasi Android setelah mereka login ke perangkat <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 28cbbae..88b3b9b 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -217,6 +217,7 @@ <translation id="1294263471858445589">Attiva l'autenticazione ambientale nelle sessioni standard e in modalità in incognito.</translation> <translation id="1295737447968372331">Attiva la dettatura sulla schermata di accesso</translation> <translation id="1297182715641689552">Utilizza uno script proxy .pac</translation> +<translation id="1297827666345629703">Un account gestito deve essere un account principale</translation> <translation id="1297961932043741908">Imposta un limite sui megabyte di memoria che una istanza singola di Chrome può usare.</translation> <translation id="1304973015437969093">ID app/estensioni e URL di aggiornamento da installare automaticamente</translation> <translation id="1305400589435476516">Se il criterio viene impostato su Attivato, il roaming dei dati è consentito per il dispositivo. @@ -576,6 +577,13 @@ Per informazioni dettagliate sui pattern <ph name="URL_LABEL" /> validi, visita la pagina https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> non è un valore accettato per questo criterio.</translation> <translation id="1755310913456007816">Utilizza le impostazioni di controllo delle revoche online esistenti</translation> <translation id="1760951637494635692">Consenti l'API Serial su questi siti</translation> +<translation id="1765503534110351026">Questo criterio è deprecato. Usa il criterio <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Se il criterio viene impostato, <ph name="PRODUCT_NAME" /> bypassa qualsiasi proxy per l'elenco di host fornito. Questo criterio viene applicato se il criterio <ph name="PROXY_SETTINGS_POLICY_NAME" /> non viene specificato e hai indicato <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> o <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> per <ph name="PROXY_MODE_POLICY_NAME" />. + + Non impostare questo criterio se hai selezionato una qualsiasi altra modalità per i criteri di impostazione del proxy. + + Nota: per esempi più dettagliati, consulta la pagina The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="1767673020408652620">Attiva consigli di app a stato nullo della casella di ricerca</translation> <translation id="1780323582106687813">Questo criterio è deprecato, al suo posto utilizza "<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />". @@ -809,6 +817,7 @@ <translation id="2082205219176343977">Configura la versione minima di Chrome consentita per il dispositivo.</translation> <translation id="208566302163036794">Blocca le funzionalità disattivate</translation> <translation id="208623333578980446">Consenti wakelock schermo per la gestione dell'alimentazione</translation> +<translation id="2086944573376916479">Un account gestito deve essere un account principale e non deve avere account secondari</translation> <translation id="2090939118981888335">Se il criterio viene impostato su Attivato, è consentito il proxy di compressione dei dati. Se viene impostato su Disattivato, il proxy non è consentito. Se il criterio viene configurato, gli utenti non possono modificarlo. In caso contrario, gli utenti possono scegliere di utilizzare la funzionalità.</translation> @@ -862,6 +871,17 @@ Se questo criterio non viene impostato, il browser farà dei tentativi per risparmiare memoria solo una volta rilevato che la memoria fisica del computer è in esaurimento.</translation> <translation id="2166472654199325139">Non filtrare i siti di contenuti per adulti</translation> +<translation id="2168060657210442816"> + Per essere applicato, questo criterio richiede l'impostazione di <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> su Vero. + + Se questo criterio è impostato su <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> a livello di macchina, tutti gli account gestiti vengono forzati come principali. + Se è impostato su <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> a livello di account, quell'account sarà sempre considerato principale, ma potrà avere account secondari nel suo profilo. + + Se questo criterio è impostato su <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> a livello di macchina, tutti gli account gestiti vengono forzati come principali. + Se viene impostato su <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> a livello di account, quell'account sarà sempre considerato principale e non avrà account secondari nel suo profilo. + + Se il criterio è impostato su <ph name="POLICY_VALUE_NONE" /> o non viene configurato, gli account gestiti non avranno limitazioni Di conseguenza, un account gestito potrebbe essere un account secondario, il che ne disabilita la capacità di ricevere criteri impostati sull'account da parte dell'amministratore. + </translation> <translation id="2168397434410358693">Ritardo inattività in caso di utilizzo di CA</translation> <translation id="217013996107840632">Parametri della riga di comando per cambiare il browser alternativo.</translation> <translation id="2170233653554726857">Attiva ottimizzazione WPAD</translation> @@ -1771,6 +1791,11 @@ Su <ph name="MS_WIN_NAME" />, questa funzionalità è disponibile soltanto sulle istanze che fanno parte di un dominio <ph name="MS_AD_NAME" />, sono in esecuzione su Windows 10 Pro o sono registrate in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Su <ph name="MAC_OS_NAME" />, questa funzionalità è disponibile soltanto nelle istanze gestite tramite MDM o aggiunte a un dominio tramite MCX.</translation> <translation id="3261592499545947104">Il numero di secondi prima della scadenza di un certificato in cui attivare il rinnovo.</translation> +<translation id="3264706118366247207">Consente di configurare un elenco dei tipi di dati di navigazione che dovrebbero essere eliminati alla chiusura di tutte le finestre del browser da parte dell'utente. Tra i tipi di dati disponibili ci sono: cronologia di navigazione (<ph name="DATA_TYPE_BROWSING_HISTORY" />), cronologia dei download (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), cache<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, compilazione automatica (<ph name="DATA_TYPE_AUTOFILL" />), password (<ph name="DATA_TYPE_PASSWORD" />), impostazioni sito (<ph name="DATA_TYPE_SITE_SETTINGS" />) e dati di app ospitate (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Questo criterio non ha la precedenza su <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Questo criterio richiede l'impostazione del criterio <ph name="SYNC_DISABLED_POLICY_NAME" /> su Vero, altrimenti sarà ignorato. Se questo criterio viene impostato a livello di piattaforma, la sincronizzazione dovrebbe essere disattivata a livello di piattaforma. Se questo criterio viene impostato a livello di utente, la sincronizzazione dovrebbe essere disattivata per quell'utente affinché il criterio venga applicato. + + Se <ph name="PRODUCT_NAME" /> non si chiude correttamente (ad esempio, in caso di arresto anomalo del browser o del sistema operativo), i dati di navigazione verranno cancellati al successivo caricamento del profilo.</translation> <translation id="3264793472749429012">Codifiche del provider di ricerca predefinito</translation> <translation id="3273221114520206906">Impostazione JavaScript predefinita</translation> <translation id="328347261792478720">Per impostazione predefinita, nel browser vengono mostrati consigli di contenuti multimediali personalizzati in base agli interessi dell'utente. Se questo criterio viene impostato su Disattivato, questi consigli vengono nascosti all'utente. Se il criterio viene impostato su Attivato o se non viene configurato, i consigli di contenuti multimediali vengono mostrati all'utente.</translation> @@ -1832,6 +1857,7 @@ Il valore del criterio deve essere specificato in millisecondi. I valori devono essere inferiori o uguali al ritardo di inattività. L'avviso viene mostrato solo se l'azione stabilita in caso di inattività è la disconnessione o lo spegnimento.</translation> +<translation id="3363360928811201045">Aggiungi limitazioni agli account gestiti</translation> <translation id="3367868895271989224">Se il criterio viene impostato su Attivato, tutti i siti vengono isolati. Ogni sito viene eseguito nel proprio processo. Se il criterio viene impostato su Disattivato o se non viene configurato, l'isolamento dei siti non viene disattivato, ma possono farlo gli utenti (ad esempio, utilizzando la voce "Disattiva isolamento dei siti" in chrome://flags). Il criterio <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> potrebbe essere utile anche per la correzione delle origini. In <ph name="PRODUCT_OS_NAME" /> 76 o versioni precedenti, imposta il criterio relativo ai dispositivi <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> sullo stesso valore, perché, se i valori non corrispondono, potrebbe verificarsi un ritardo quando si accede a una sessione utente. @@ -3014,6 +3040,7 @@ Se un criterio è nell'elenco, nel caso ci sia conflitto tra le origini, l'ambito o il livello, verrà applicato il criterio con la priorità massima.</translation> <translation id="5056708224511062314">Ingrandimento dello schermo disattivato</translation> <translation id="5058573563327660283">Seleziona la strategia da utilizzare per liberare spazio su disco durante la pulizia automatica (obsoleta)</translation> +<translation id="5059201920681374653">Gli account gestiti devono trovarsi un su dispositivo gestito affiliato</translation> <translation id="5061114193960158745">Questo criterio consente di stabilire l'elenco di siti web che non causeranno mai un cambio di browser. Ogni elemento è considerato come una regola. Le regole con una corrispondenza non aprono un browser alternativo. A differenza del criterio <ph name="URL_LIST_POLICY_NAME" />, le regole vengono applicate in entrambe le direzioni. Quando il componente aggiuntivo <ph name="IE_PRODUCT_NAME" /> è attivo, il criterio consente di stabilire anche se <ph name="IE_PRODUCT_NAME" /> deve aprire questi URL in <ph name="PRODUCT_NAME" />. Se il criterio non viene impostato, non viene aggiunto alcun sito web all'elenco. @@ -3199,6 +3226,7 @@ Se il criterio non è configurato, gli utenti non possono giocare sul dispositivo <ph name="PRODUCT_OS_NAME" /> registrato, ma possono farlo in altre circostanze.</translation> <translation id="529457411593078576">Attiva i TdS alla prima esecuzione di CCT</translation> +<translation id="5298949392804966105">Nessuna limitazione per gli account gestiti</translation> <translation id="530134925949808452">L'ora del giorno, in ora locale, in cui viene rinnovata la quota di utilizzo.</translation> <translation id="5303080953475303561">La configurazione del criterio consente di stabilire la frequenza della richiesta della password nella schermata di blocco per lo sblocco rapido. Ogni volta che viene visualizzata la schermata di blocco, se l'ultimo inserimento della password si è verificato prima del periodo di tempo specificato dal valore scelto, lo sblocco rapido non sarà disponibile. Se l'utente rimane nella schermata di blocco per un tempo superiore a quello specificato in questo criterio, viene richiesta la password la volta successiva che inserisce il codice sbagliato o accede di nuovo alla schermata di blocco, a seconda dell'evento che si verifica per primo. @@ -4349,6 +4377,26 @@ Nota: se specificato, <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> sostituisce questo criterio.</translation> <translation id="6833988859168635883">Avvio, pagina iniziale e pagina Nuova scheda</translation> +<translation id="6834298774555537368">L'impostazione del criterio consente di configurare le impostazioni del proxy per Chrome e le app ARC, ignorando tutte le opzioni relative al proxy specificate dalla riga di comando. + + Se il criterio non viene configurato, gli utenti possono scegliere le impostazioni del proxy. + + L'impostazione del criterio <ph name="PROXY_SETTINGS_POLICY_NAME" /> consente di accettare i seguenti campi: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, che consente di specificare il server proxy utilizzato da Chrome e impedisce agli utenti di modificare le impostazioni del proxy + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />, un URL a un file proxy .pac + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />, un URL a un server proxy + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />, un elenco di host per i quali il proxy verrà bypassato + + Il campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> è deprecato a favore del campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Per il campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, se scegli il valore: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, non viene mai utilizzato un proxy e tutti gli altri campi vengono ignorati. + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, viene utilizzato il proxy del sistema e tutti gli altri campi vengono ignorati. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, tutti gli altri campi vengono ignorati. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, vengono utilizzati i campi <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, vengono utilizzati i campi <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + + Nota: per esempi più dettagliati, consulta la pagina The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="6835883744948188639">Mostra all'utente un messaggio ricorrente che indica che è consigliato eseguire un riavvio</translation> <translation id="683688607121170501">Questa impostazione consente agli utenti di passare da un Account Google a un altro all'interno dell'area dei contenuti della finestra del browser e nelle applicazioni Android, dopo avere eseguito l'accesso al dispositivo <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index 280db75..e725028 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -212,6 +212,7 @@ <translation id="1294263471858445589">シークレット モードと標準のセッションでアンビエント認証を有効にします。</translation> <translation id="1295737447968372331">ログイン画面で音声入力を有効にする</translation> <translation id="1297182715641689552">.pac プロキシ スクリプトを使用する</translation> +<translation id="1297827666345629703">管理対象アカウントをメイン アカウントのみとする</translation> <translation id="1297961932043741908">1 つの Chrome インスタンスで使用できるメモリの制限量を MB 単位で設定する。</translation> <translation id="1304973015437969093">サイレント インストールされる拡張機能 / アプリの ID と更新 URL</translation> <translation id="1305400589435476516">このポリシーを有効に設定した場合、デバイスのデータ ローミングが許可されます。 @@ -566,6 +567,13 @@ 有効な <ph name="URL_LABEL" /> パターンについて詳しくは、https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns をご覧ください。このポリシーの値に「<ph name="WILDCARD_VALUE" />」は使用できません。</translation> <translation id="1755310913456007816">オンライン失効確認の既存の設定を使用する</translation> <translation id="1760951637494635692">シリアル API を許可するサイトを指定します</translation> +<translation id="1765503534110351026">このポリシーはサポートが終了しています。代わりに <ph name="PROXY_SETTINGS_POLICY_NAME" /> を使用してください。 + + このポリシーを設定した場合、<ph name="PRODUCT_NAME" /> では、ここで指定したホストリストに対してプロキシを一切使用しません。このポリシーは、<ph name="PROXY_SETTINGS_POLICY_NAME" /> ポリシーを指定せずに、<ph name="PROXY_MODE_POLICY_NAME" /> を <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> または <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> のいずれかに指定した場合のみ適用されます。 + + プロキシ ポリシーの設定で他のモードを選択した場合は、このポリシーを未設定のままにしてください。 + + 注: 詳しい例については、Chromium プロジェクトの説明(https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)をご覧ください。</translation> <translation id="1767673020408652620">検索ボックスが「ゼロ状態」のときにアプリのおすすめを有効にする</translation> <translation id="1780323582106687813">このポリシーはサポートが終了しています。代わりに <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" /> ポリシーを使用してください。 @@ -792,6 +800,7 @@ <translation id="2082205219176343977">デバイスでの使用を許可する Chrome の最小バージョンを設定する。</translation> <translation id="208566302163036794">無効にした機能をブロックする</translation> <translation id="208623333578980446">電源管理の画面の wake lock を許可する</translation> +<translation id="2086944573376916479">管理対象アカウントを予備のアカウントのないメイン アカウントのみとする</translation> <translation id="2090939118981888335">このポリシーを有効に設定した場合、データ圧縮プロキシが許可されます。このポリシーを無効に設定した場合、プロキシは許可されません。 このポリシーを設定した場合、ユーザーはこの設定を変更できません。未設定の場合、ユーザーはこの機能の使用を選択できます。</translation> @@ -845,6 +854,17 @@ このポリシーを設定しない場合、ブラウザでパソコンの物理メモリが少なくなったことが検出されたときにのみ、メモリの節約が試行されます。</translation> <translation id="2166472654199325139">アダルト コンテンツに基づくサイトの除外を行わない</translation> +<translation id="2168060657210442816"> + このポリシーを適用するには、<ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> を True に設定する必要があります。 + + マシンレベルでこのポリシーを <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> に設定した場合、管理対象アカウントはすべて強制的にメイン アカウントとなります。 + アカウントでこのポリシーを <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> に設定した場合、そのアカウントは常にメイン アカウントとなりますが、プロファイルで予備のアカウントを作成できます。 + + マシンレベルでこのポリシーを <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> に設定した場合、管理対象アカウントはすべて強制的にメイン アカウントとなります。 + アカウントでこのポリシーを <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> に設定した場合、そのアカウントは常にメイン アカウントとなり、プロファイルで予備のアカウントを作成することはできません。 + + このポリシーを <ph name="POLICY_VALUE_NONE" /> に設定するか未設定のままにした場合、管理対象アカウントに制限は課されません。これにより、管理対象アカウントは予備のアカウントとなる場合もあります。その場合、管理者がアカウントに設定したポリシーは適用されません。 + </translation> <translation id="2168397434410358693">アイドル状態になるまでの時間(AC 電源での実行時)</translation> <translation id="217013996107840632">代替ブラウザからの切り替えに使用するコマンドライン パラメータです。</translation> <translation id="2170233653554726857">WPAD 最適化を有効にする</translation> @@ -1722,6 +1742,11 @@ <ph name="MS_WIN_NAME" /> では、この機能は <ph name="MS_AD_NAME" /> ドメインに追加されたインスタンス、Windows 10 Pro で実行されているインスタンス、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> に登録されているインスタンスでのみ使用できます。<ph name="MAC_OS_NAME" /> では、MDM を介して管理されるインスタンスまたは MCX を介してドメインに追加されたインスタンスでのみこの機能を使用できます。</translation> <translation id="3261592499545947104">更新が必要となる、証明書の有効期限が切れるまでの時間(秒)</translation> +<translation id="3264706118366247207">ユーザーがすべてのブラウザ ウィンドウを終了したときに削除する閲覧データの種類のリストを設定します。指定できるデータの種類は、閲覧履歴(<ph name="DATA_TYPE_BROWSING_HISTORY" />)、ダウンロード履歴(<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />)、Cookie(<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />)、キャッシュ(<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />)、自動入力(<ph name="DATA_TYPE_AUTOFILL" />)、パスワード(<ph name="DATA_TYPE_PASSWORD" />)、サイトの設定(<ph name="DATA_TYPE_SITE_SETTINGS" />)、ホストされているアプリデータ(<ph name="DATA_TYPE_HOSTED_APP_DATA" />)です。ただし、このポリシーよりも <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" /> が優先されます。 + + このポリシーを適用するには、<ph name="SYNC_DISABLED_POLICY_NAME" /> ポリシーを true に設定する必要があります。設定していない場合、このポリシーは無視されます。このポリシーをプラットフォーム レベルで設定する場合は、プラットフォーム レベルで同期を無効にする必要があります。このポリシーをユーザーレベルで設定する場合は、そのユーザーに対して同期を無効にする必要があります。 + + <ph name="PRODUCT_NAME" /> が正常に終了しなかった場合(ブラウザや OS がクラッシュした場合など)は、次回プロファイルが読み込まれたときに閲覧データが削除されます。</translation> <translation id="3264793472749429012">デフォルトの検索プロバイダのエンコード</translation> <translation id="3273221114520206906">デフォルトのJavaScript 設定</translation> <translation id="328347261792478720">デフォルトでは、ブラウザはユーザーに合わせてパーソナライズされたおすすめメディアを表示します。このポリシーを無効に設定すると、ユーザーに対するおすすめは表示されません。このポリシーを有効にするか、未設定のままにすると、おすすめメディアがユーザーに表示されます。</translation> @@ -1783,6 +1808,7 @@ このポリシーの値はミリ秒単位とし、アイドル待ちの時間と同じかそれより短い時間を指定できます。 警告メッセージは、アイドル時の操作がログアウトかシャットダウンの場合にのみ表示されます。</translation> +<translation id="3363360928811201045">管理対象アカウントに制限を追加する</translation> <translation id="3367868895271989224">このポリシーを有効に設定した場合、すべてのサイトが分離されます(各サイトが独自のプロセスで実行されます)。このポリシーを無効に設定するか未設定のままにした場合、サイト分離は無効になりませんが、ユーザーは chrome://flags などで無効に設定できます。 <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> を使用して、発行元を詳細に管理することもできます。<ph name="PRODUCT_OS_NAME" /> バージョン 76 以前では、<ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> デバイス ポリシーを同じ値に設定してください(値が異なる場合、ユーザー セッションの開始時に遅延が生じる可能性があります)。 @@ -2942,6 +2968,7 @@ ポリシーがリストになく、ソース、スコープ、レベル間で矛盾がある場合は、優先度の最も高いポリシーが適用されます。</translation> <translation id="5056708224511062314">画面拡大鏡を無効にする</translation> <translation id="5058573563327660283">自動クリーンアップ時にディスクの空き容量を増やす方法を選択する(サポート終了)</translation> +<translation id="5059201920681374653">管理対象アカウントを関連する管理対象デバイス上のアカウントのみとする</translation> <translation id="5061114193960158745">このポリシーの設定により、ブラウザの切り替えを行わないウェブサイトのリストを管理します。個々のアイテムはルールとして扱われます。このルールに一致すると、代替ブラウザは開かれません。<ph name="URL_LIST_POLICY_NAME" /> ポリシーとは異なり、ルールは双方向に適用されます。<ph name="IE_PRODUCT_NAME" /> アドインが有効になっている場合は、<ph name="IE_PRODUCT_NAME" /> でこれらの URL を開くときに <ph name="PRODUCT_NAME" /> を使用するかどうかもこのポリシーで制御されます。 このポリシーを未設定のままにした場合、リストにウェブサイトは追加されません。 @@ -3115,6 +3142,7 @@ <translation id="5290940294294002042">ユーザーが有効または無効にできるプラグインのリストを指定する</translation> <translation id="5293044154216294358">このポリシーを True に設定した場合、ユーザーが恐竜ゲームをプレイすることを許可します。このポリシーを False に設定した場合、ユーザーはデバイスがオフラインのときに恐竜のイースター エッグゲームをプレイできません。このポリシーを未設定のままにした場合、ユーザーは登録されている <ph name="PRODUCT_OS_NAME" /> ではゲームをプレイできませんが、他の環境ではプレイできます。</translation> <translation id="529457411593078576">CCT の初回実行時の利用規約を有効にする</translation> +<translation id="5298949392804966105">管理対象アカウントに制限を課さない</translation> <translation id="530134925949808452">使用時間の割り当てが更新される時間(現地時間)です。</translation> <translation id="5303080953475303561">このポリシーでは、ロック画面でロックをクイック解除するためにパスワードの入力を求める頻度を管理できます。ロック画面が表示されるたびに、前回のパスワード入力から指定値に基づく時間が経過したかどうかが確認され、経過していなければロックのクイック解除は使用できません。ユーザーがロックを解除しないまま設定した指定時間が経過した場合は、次回ユーザーが誤ったコードを入力するか、ロック画面を再表示するかのいずれか早い方が発生した時点でパスワード入力が求められます。 @@ -4222,6 +4250,26 @@ 注: <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> が指定されている場合はこのポリシーより優先されます。</translation> <translation id="6833988859168635883">起動ページ、ホームページ、新しいタブページ</translation> +<translation id="6834298774555537368">このポリシーでは、Chrome と ARC アプリのプロキシ設定を行います。いずれもコマンドラインで指定されたプロキシ関連の設定はすべて無視されます。 + + このポリシーを未設定のままにした場合、ユーザーはプロキシ設定を選択できます。 + + <ph name="PROXY_SETTINGS_POLICY_NAME" /> ポリシーを設定すると、次のフィールドを受け取れるようになります。 + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />: Chrome で使用するプロキシ サーバーを指定して、ユーザーがプロキシ設定を変更できないようにします + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />: プロキシ .pac ファイルへの URL + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />: プロキシ サーバーの URL + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />: プロキシを使用しないホストのリスト + + <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> フィールドはサポートを終了しました。代わりに <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> フィールドを使用してください。 + + <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> については、以下のいずれかの値を指定します。 + * <ph name="PROXY_MODE_ENUM_DIRECT" />: プロキシは一切使用せず、他のフィールドをすべて無視します。 + * <ph name="PROXY_MODE_ENUM_SYSTEM" />: システムのプロキシを使用して、他のフィールドをすべて無視します。 + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />: 他のフィールドをすべて無視します。 + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />: <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> フィールドと <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> フィールドを使用します。 + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> フィールドと <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> フィールドを使用します。 + + 注: 詳しい例については、Chromium プロジェクトの説明(https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)をご覧ください。</translation> <translation id="6835883744948188639">再起動が推奨されることを示すメッセージをユーザーに繰り返し表示する</translation> <translation id="683688607121170501">ユーザーが <ph name="PRODUCT_OS_NAME" /> デバイスにログインした後に、ブラウザ ウィンドウのコンテンツ領域内や Android アプリケーションで Google アカウントを切り替えることができるかどうかを制御します。
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index f43d1c1..0f592dc 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -212,6 +212,7 @@ <translation id="1294263471858445589">Ativar a autenticação pelo SO em sessões normais e anônimas.</translation> <translation id="1295737447968372331">Ativa o ditado na tela de login</translation> <translation id="1297182715641689552">Usar um script de proxy .pac</translation> +<translation id="1297827666345629703">Uma conta gerenciada precisa ser uma conta principal</translation> <translation id="1297961932043741908">Define um limite, em megabytes, para a memória que uma única instância do Chrome pode usar.</translation> <translation id="1304973015437969093">IDs de extensões//aplicativos e URLs de atualização deverão ser instalados silenciosamente</translation> <translation id="1305400589435476516">Se a política for definida como "Ativada", o roaming de dados será permitido no dispositivo. @@ -576,6 +577,13 @@ Para informações detalhadas sobre padrões de <ph name="URL_LABEL" /> válidos, consulte https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns (link em inglês). <ph name="WILDCARD_VALUE" /> não é um valor aceitável para esta política.</translation> <translation id="1755310913456007816">Usar as configurações on-line existentes de verificação da revogação</translation> <translation id="1760951637494635692">Permitir a API Serial nesses sites</translation> +<translation id="1765503534110351026">O uso desta política foi suspenso. Use a <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Se a política for definida, o <ph name="PRODUCT_NAME" /> ignorará todos os proxies em favor da lista de hosts apresentada aqui. Esta política só terá efeito se a política <ph name="PROXY_SETTINGS_POLICY_NAME" /> não tiver sido especificada e você tiver selecionado <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> ou <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> para <ph name="PROXY_MODE_POLICY_NAME" />. + + Não defina esta política se você tiver selecionado qualquer outro modo para políticas de configuração de proxy. + + Observação: para ver mais exemplos detalhados, acesse The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett, link em inglês).</translation> <translation id="1767673020408652620">Ativar recomendações de app no estado inicial da caixa de pesquisa</translation> <translation id="1780323582106687813">Esta política está obsoleta. Use <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />. @@ -810,6 +818,7 @@ <translation id="2082205219176343977">Configurar a versão mínima permitida do Chrome para o dispositivo.</translation> <translation id="208566302163036794">Bloquear recursos desativados</translation> <translation id="208623333578980446">Permitir wake locks de tela para gerenciamento de energia</translation> +<translation id="2086944573376916479">Uma conta gerenciada precisa ser a principal e não pode ter contas secundárias</translation> <translation id="2090939118981888335">Se a política for definida como "Ativada", o proxy de compressão de dados será permitido. Se a política for definida como "Desativada", o proxy não será permitido. Se você definir a política, os usuários não poderão mudá-la. Se ela não for definida, os usuários poderão escolher como usar o recurso.</translation> @@ -863,6 +872,17 @@ Se esta política não for definida, o navegador só começará a economizar memória quando detectar que a quantidade de memória física da máquina está baixa.</translation> <translation id="2166472654199325139">Não filtrar sites com conteúdo adulto</translation> +<translation id="2168060657210442816"> + Esta política precisa que <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> seja definida como "Verdadeira" para entrar em vigor. + + Se esta política for definida como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> no nível da máquina, todas as contas gerenciadas serão forçadas a ser principais. + Se esta política for definida como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> em uma conta, essa conta sempre será principal, mas poderá ter contas secundárias no perfil. + + Se esta política for definida como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> no nível da máquina, todas as contas gerenciadas serão forçadas a ser principais. + Se esta política for definida como <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> em uma conta, essa conta será sempre principal e não terá nenhuma conta secundária no perfil. + + Se esta política for definida como <ph name="POLICY_VALUE_NONE" /> ou não for definida, contas gerenciadas não terão restrições. Isso pode resultar em uma conta gerenciada secundária, o que desativa a capacidade de receber políticas definidas para a conta pelo administrador. + </translation> <translation id="2168397434410358693">Intervalo de inatividade no funcionamento com alimentação CA</translation> <translation id="217013996107840632">Parâmetros de linha de comando para fazer a mudança do navegador alternativo.</translation> <translation id="2170233653554726857">Ativar otimização WPAD</translation> @@ -1782,6 +1802,11 @@ No <ph name="MS_WIN_NAME" />, essa funcionalidade está disponível apenas em instâncias associadas a um domínio do <ph name="MS_AD_NAME" />, executadas no Windows 10 Pro ou registradas em <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. No <ph name="MAC_OS_NAME" />, essa funcionalidade está disponível apenas em instâncias gerenciadas por MDM ou associadas a um domínio via MCX.</translation> <translation id="3261592499545947104">Número de segundos antes da expiração de um certificado quando a renovação precisa ser acionada.</translation> +<translation id="3264706118366247207">Configura uma lista de tipos de dados de navegação a serem excluídos quando o usuário fechar todas as janelas do navegador. Os tipos de dados disponíveis são: histórico de navegação (<ph name="DATA_TYPE_BROWSING_HISTORY" />), histórico de downloads (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), cache<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, preenchimento automático (<ph name="DATA_TYPE_AUTOFILL" />), senhas (<ph name="DATA_TYPE_PASSWORD" />), configurações de sites (<ph name="DATA_TYPE_SITE_SETTINGS" />) e dados de apps hospedados (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Esta política não tem precedência sobre <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Esta política exige <ph name="SYNC_DISABLED_POLICY_NAME" /> para ser definida como verdadeira. Caso contrário, ela será ignorada. Se esta política for definida no nível da plataforma, a sincronização será desativada em toda a plataforma. Se ela for definida no nível do usuário, a sincronização desse usuário específico será desativada para que esta política seja aplicada. + + Se o <ph name="PRODUCT_NAME" /> não for fechado corretamente (por exemplo, se o navegador ou o SO falhar), os dados de navegação serão excluídos da próxima vez que o perfil for carregado.</translation> <translation id="3264793472749429012">Codificações do provedor de pesquisa padrão</translation> <translation id="3273221114520206906">Configuração padrão do JavaScript</translation> <translation id="328347261792478720">Por padrão, o navegador mostrará recomendações de mídia personalizadas para o usuário. Se esta política for definida como "Desativada", essas recomendações ficarão ocultas para o usuário. Se esta política for definida como "Ativada" ou não for definida, as recomendações de mídia serão mostradas para o usuário.</translation> @@ -1842,6 +1867,7 @@ O valor da política precisa ser especificado em milissegundos. Os valores são ajustados para serem menores ou iguais ao intervalo de inatividade. A mensagem de aviso só será mostrada se a ação de inatividade for para sair ou encerrar.</translation> +<translation id="3363360928811201045">Adicionar restrições em contas gerenciadas</translation> <translation id="3367868895271989224">Se a política for definida como "Ativada" todos os sites serão isolados. Cada site executará um processo próprio. Se a política for definida como "Desativada" ou não for definida, o isolamento de sites não será desativado, mas os usuários poderão desativá-lo, por exemplo, usando "Disable site isolation" (Desativar isolamento de sites) em chrome://flags. A <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> pode ser útil para origens de ajustes. No <ph name="PRODUCT_OS_NAME" /> 76 e versões anteriores, defina a política <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> do dispositivo com o mesmo valor. Se os valores não forem iguais, pode haver um atraso ao entrar em uma sessão de usuário. @@ -3018,6 +3044,7 @@ Se uma política não estiver na lista e houver um conflito entre fontes, escopos ou níveis, a política com a maior prioridade será aplicada.</translation> <translation id="5056708224511062314">Lupa desativada</translation> <translation id="5058573563327660283">Selecionar a estratégia usada para liberar espaço em disco durante a limpeza automática (obsoleta)</translation> +<translation id="5059201920681374653">As contas gerenciadas precisam estar conectadas em um dispositivo gerenciado afiliado</translation> <translation id="5061114193960158745">A definição a política controla a lista de sites que nunca causarão uma troca de navegador. Cada item é tratado como uma regra. As regras correspondentes não abrirão um navegador alternativo. Ao contrário da política <ph name="URL_LIST_POLICY_NAME" />, as regras se aplicam nas duas direções. Quando o suplemento do <ph name="IE_PRODUCT_NAME" /> estiver ativado, ele também controlará se o <ph name="IE_PRODUCT_NAME" /> abrirá os URLs no <ph name="PRODUCT_NAME" />. Se a política não for definida, nenhum site será adicionado à lista. @@ -3201,6 +3228,7 @@ Não definir a política significa que os usuários não poderão jogar no <ph name="PRODUCT_OS_NAME" /> registrado, mas poderão fazer isso em outras circunstâncias.</translation> <translation id="529457411593078576">Ativar TOS durante a primeira execução do CCT</translation> +<translation id="5298949392804966105">Nenhuma restrição em contas gerenciadas</translation> <translation id="530134925949808452">A hora do dia, no horário local, em que a cota de uso é renovada.</translation> <translation id="5303080953475303561">Se a política for definida, ela controlará a frequência com que a tela de bloqueio solicita a senha para o desbloqueio rápido. Quando a tela de bloqueio aparece, se a última senha digitada tiver sido inserida antes da janela de tempo especificada pelo valor escolhido, o desbloqueio rápido não ficará disponível. Se os usuários continuarem na tela de bloqueio após esse período, uma senha será solicitada na próxima vez que o código errado for digitado ou que eles acessarem a tela de bloqueio, o que ocorrer primeiro. @@ -4369,6 +4397,26 @@ Observação: se <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> for especificada, ela substituirá esta política.</translation> <translation id="6833988859168635883">Inicialização, página inicial e página "Nova guia"</translation> +<translation id="6834298774555537368">Se a política for definida, haverá configurações de proxy para o Chrome e apps ARC, ignorando todas as opções relacionadas a proxy especificadas na linha de comando. + + Se a política não for definida, os usuários poderão escolher as configurações de proxy. + + Se a política <ph name="PROXY_SETTINGS_POLICY_NAME" /> for definida, os campos a seguir serão aceitos: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, permite especificar o servidor proxy usado pelo Chrome e evitar que os usuários mudem as configurações de proxy. + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />, um URL de um arquivo de proxy .pac. + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />, um URL do servidor de proxy. + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />, uma lista de hosts pelos quais o proxy será ignorado. + + O uso do campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> foi suspenso em favor do campo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Para <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, se você escolher o valor: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, um proxy nunca será usado e todos os outros campos serão ignorados; + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, o proxy do sistema será usado e todos os outros campos serão ignorados; + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, todos os outros campos serão ignorados; + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, os campos <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> serão usados; + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, os campos <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> e <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> serão usados. + + Observação: para ver mais exemplos detalhados, acesse The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett, link em inglês).</translation> <translation id="6835883744948188639">Mostrar um prompt recorrente ao usuário indicando que a reinicialização é necessária</translation> <translation id="683688607121170501">Esta configuração permite que os usuários alternem entre Contas do Google na área de conteúdo da janela do navegador e nos aplicativos Android, depois de fazer login no dispositivo <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index 3c794d7..be2b1e54 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -213,6 +213,7 @@ <translation id="1294263471858445589">Включить пассивную аутентификацию для режима инкогнито и обычных сеансов</translation> <translation id="1295737447968372331">Включить голосовой ввод на экране входа</translation> <translation id="1297182715641689552">Использовать скрипт PAC для прокси-сервера</translation> +<translation id="1297827666345629703">Управляемый аккаунт должен быть основным</translation> <translation id="1297961932043741908">Установить ограничение в мегабайтах для памяти, которую может использовать один экземпляр Chrome</translation> <translation id="1304973015437969093">Устанавливать идентификаторы расширений/приложений и URL обновлений без подтверждения пользователя</translation> <translation id="1305400589435476516">Если правило включено, на устройстве доступен интернет-роуминг. @@ -577,6 +578,13 @@ Подробнее о допустимых шаблонах <ph name="URL_LABEL" />: https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. Значение <ph name="WILDCARD_VALUE" /> не поддерживается для этого правила.</translation> <translation id="1755310913456007816">Использовать текущие настройки онлайн-проверки</translation> <translation id="1760951637494635692">Разрешение использовать Serial API на указанных сайтах</translation> +<translation id="1765503534110351026">Это правило больше не поддерживается. Используйте вместо него правило <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Оно позволяет <ph name="PRODUCT_NAME" /> игнорировать любые прокси-серверы для хостов, перечисленных в этом списке. Это правило действует только в том случае, если правило <ph name="PROXY_SETTINGS_POLICY_NAME" /> не указано и для <ph name="PROXY_MODE_POLICY_NAME" /> задано значение <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> или <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />. + + Если выбран какой-либо другой параметр, не настраивайте это правило. + + Примечание. Подробную информацию можно найти здесь: https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="1767673020408652620">Включить рекомендации приложений при нулевом состоянии окна поиска</translation> <translation id="1780323582106687813">Это правило больше не поддерживается. Используйте вместо него правило <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />. @@ -805,6 +813,7 @@ <translation id="2082205219176343977">Настройка версии Chrome, минимально допустимой для устройства</translation> <translation id="208566302163036794">Блокировать отключенные функции</translation> <translation id="208623333578980446">Разрешить использование запретов блокировки через API расширения управления питанием</translation> +<translation id="2086944573376916479">Управляемый аккаунт должен быть основным и не иметь дополнительных аккаунтов</translation> <translation id="2090939118981888335">Если правило включено, для сжатия трафика используется прокси-сервер. Если правило отключено, эта функция не работает. Если правило настроено, пользователи не могут изменить его. Если правило не настроено, пользователи могут самостоятельно выбирать, использовать ли эту функцию.</translation> @@ -858,6 +867,17 @@ Если правило не настроено, браузер начнет экономить память только тогда, когда определит, что объем доступной физической памяти на компьютере стал низким.</translation> <translation id="2166472654199325139">Не фильтровать сайты, содержащие контент только для взрослых</translation> +<translation id="2168060657210442816"> + Это правило работает, если для правила <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> задано значение True. + + Если для этого правила установлено значение <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> на уровне устройства, все управляемые аккаунты принудительно становятся основными. + Если для этого правила задано значение <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> на уровне аккаунта, он всегда будет основным, но сможет иметь в своем профиле дополнительные аккаунты. + + Если для этого правила установлено значение <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> на уровне устройства, все управляемые аккаунты принудительно становятся основными. + Если для этого правила задано значение <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> на уровне аккаунта, он всегда будет основным и не сможет иметь дополнительные аккаунты в своем профиле. + + Если правило не настроено или для него установлено значение <ph name="POLICY_VALUE_NONE" />, для управляемых аккаунтов не будет ограничений. То есть они смогут быть дополнительными, и в таком случае на них не будут распространяться правила, заданные на уровне аккаунта администратором. + </translation> <translation id="2168397434410358693">Задержка перехода в спящий режим при работе от сети</translation> <translation id="217013996107840632">Параметры командной строки для перехода из альтернативного браузера</translation> <translation id="2170233653554726857">Разрешить оптимизацию WPAD</translation> @@ -1762,6 +1782,11 @@ В <ph name="MS_WIN_NAME" /> правило поддерживается только на устройствах из домена <ph name="MS_AD_NAME" />, на которых установлена ОС Windows 10 Pro или которые зарегистрированы в программе "<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />". В <ph name="MAC_OS_NAME" /> правило поддерживается только на устройствах, которые контролируются с помощью ПО для управления мобильными устройствами или добавлены в домен через MCX.</translation> <translation id="3261592499545947104">Время в секундах до истечения срока действия сертификата для запуска обновления</translation> +<translation id="3264706118366247207">Правило позволяет настроить список данных о работе в браузере, которые должны удаляться, когда пользователь закрывает все окна браузера. Вы можете выбрать следующие типы данных: историю браузера (<ph name="DATA_TYPE_BROWSING_HISTORY" />), историю скачиваний (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), файлы cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), кеш <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, информацию для автозаполнения (<ph name="DATA_TYPE_AUTOFILL" />), пароли (<ph name="DATA_TYPE_PASSWORD" />), настройки сайтов (<ph name="DATA_TYPE_SITE_SETTINGS" />) и данные размещенных приложений (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Это правило не имеет приоритет над правилом <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Это правило работает, если для правила <ph name="SYNC_DISABLED_POLICY_NAME" /> задано значение True. В противном случае правило игнорируется. Если правило настроено на уровне платформы, необходимо отключить синхронизацию для всей этой платформы. Если правило настроено на уровне пользователя, оно работает только при условии, что синхронизация отключена для этого пользователя. + + Если <ph name="PRODUCT_NAME" /> закрывается непредвиденно (например, из-за сбоя в работе браузера или ОС), данные о работе в браузере удаляются при следующей загрузке профиля.</translation> <translation id="3264793472749429012">Кодировки поисковой системы по умолчанию</translation> <translation id="3273221114520206906">Настройки JavaScript по умолчанию</translation> <translation id="328347261792478720">По умолчанию в браузере показываются персональные рекомендации для пользователя. Если правило отключено, персональные рекомендации скрыты от пользователя. Если правило включено или не настроено, пользователь видит советы о том, что посмотреть.</translation> @@ -1826,6 +1851,7 @@ Значение указывается в миллисекундах и не должно превышать время задержки при переходе в режим бездействия. Предупреждение будет появляться только в том случае, если в режиме бездействия происходит выход из аккаунта или отключение устройства.</translation> +<translation id="3363360928811201045">Добавление ограничений для управляемых аккаунтов</translation> <translation id="3367868895271989224">Если это правило включено, изолируются все сайты (для каждого из них запускается отдельный процесс). Если правило выключено или не настроено, изоляция сайтов остается активна, но пользователи могут от этого отказаться (например, задав параметр Disable site isolation на странице chrome://flags). Обратите внимание, что изоляцию отдельных сайтов также удобно настраивать с помощью правила <ph name="ISOLATE_ORIGINS_POLICY_NAME" />. В <ph name="PRODUCT_OS_NAME" /> 76 и более ранних версиях рекомендуется задавать правилу <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> то же значение, что и правилу SitePerProcess. В случае противоречия в начале сеанса пользователя может возникнуть задержка. @@ -3005,6 +3031,7 @@ Если правила нет в списке, то в случае конфликта между источниками, областями действия или уровнями будет применяться правило с наивысшим приоритетом.</translation> <translation id="5056708224511062314">Экранная лупа отключена</translation> <translation id="5058573563327660283">Выбор стратегии удаления данных при автоматической очистке диска (устаревшее правило)</translation> +<translation id="5059201920681374653">Управляемые аккаунты должны располагаться на связанном управляемом устройстве</translation> <translation id="5061114193960158745">Это правило определяет список сайтов, которые никогда не должны открываться в другом браузере. Каждый элемент обрабатывается как отдельное правило. Сайты, которые соответствуют указанным элементам, не открываются в альтернативном браузере. В отличие от <ph name="URL_LIST_POLICY_NAME" /> заданные здесь элементы-правила применяются в обоих браузерах. Таким образом, если включено дополнение <ph name="IE_PRODUCT_NAME" />, оно определяет, должен ли браузер <ph name="IE_PRODUCT_NAME" /> открывать указанные сайты в <ph name="PRODUCT_NAME" />. Если правило не настроено, список остается пустым. @@ -3188,6 +3215,7 @@ Если правило не настроено, игра будет недоступна на зарегистрированных устройствах <ph name="PRODUCT_OS_NAME" />, однако при других обстоятельствах пользователи смогут играть в нее.</translation> <translation id="529457411593078576">Показ Условий использования при первом запуске для CCT</translation> +<translation id="5298949392804966105">Нет ограничений для управляемых аккаунтов</translation> <translation id="530134925949808452">Местное время обновления ограничения использования.</translation> <translation id="5303080953475303561">Правило позволяет определить, как часто требуется вводить пароль на устройстве, где используется быстрая разблокировка. Если заданный период времени истек, экран нельзя будет разблокировать без пароля. Если пользователь не разблокирует экран в течение заданного периода, ему потребуется указать пароль в случае ошибки при вводе кода или повторного открытия экрана блокировки. @@ -4355,6 +4383,26 @@ Примечание. Если настроено правило <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />, его значение будет иметь приоритет над этим правилом.</translation> <translation id="6833988859168635883">Главная страница и страница быстрого доступа при запуске</translation> +<translation id="6834298774555537368">Правило позволяет задать настройки прокси-сервера для Chrome и ARC-приложений, игнорируя все настройки прокси, указанные с помощью командной строки. + + Если правило не задано, пользователи могут самостоятельно настраивать прокси-сервер. + + Правило <ph name="PROXY_SETTINGS_POLICY_NAME" /> позволяет указать значения следующих полей: + * поле <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> задает прокси-сервер для Chrome и запрещает пользователям изменять эти настройки; + * поле <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> задает URL PAC-файла прокси-сервера; + * поле <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> задает URL прокси-сервера; + * поле <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> задает список хостов, для которых прокси-сервер будет игнорироваться. + + Поле <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> заменено полем <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Выбор значения поля <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />: + * <ph name="PROXY_MODE_ENUM_DIRECT" /> – прокси-сервер никогда не будет использоваться, а значения остальных полей будут игнорироваться. + * <ph name="PROXY_MODE_ENUM_SYSTEM" /> – будут использоваться системные настройки прокси-сервера, значения остальных полей будут игнорироваться. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" /> – значения остальных полей будут игнорироваться. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> – будут использоваться поля <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> и <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> – будут использоваться поля <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> и <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + + Примечание. Подробную информацию можно найти здесь: https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett.</translation> <translation id="6835883744948188639">Уведомлять пользователя о том, что рекомендуется перезапустить браузер</translation> <translation id="683688607121170501">Позволяет переключаться между несколькими аккаунтами Google в Android-приложениях и в окне браузера после входа в аккаунт на устройстве с <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 89db70a7..602ab0d 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Ambiyans kimlik doğrulamasını gizli ve normal oturumlarda etkinleştir.</translation> <translation id="1295737447968372331">Giriş ekranında dikte özelliğini etkinleştir</translation> <translation id="1297182715641689552">.pac proxy komut dosyası kullan</translation> +<translation id="1297827666345629703">Yönetilen hesaplar birincil hesap olmalıdır</translation> <translation id="1297961932043741908">Tek bir Chrome örneğinin kullanabileceği bellek için bir megabayt sınırı ayarlayın.</translation> <translation id="1304973015437969093">Uzantı/Uygulama kimlikleri ve güncelleme URL'leri sessizce yüklenir</translation> <translation id="1305400589435476516">Politika, Etkin değerine ayarlanırsa cihazda veri dolaşımına izin verilir. @@ -579,6 +580,13 @@ Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakabilirsiniz. <ph name="WILDCARD_VALUE" />, bu politikada kabul edilen bir değer değildir.</translation> <translation id="1755310913456007816">Mevcut online iptal kontrolü ayarlarını kullan</translation> <translation id="1760951637494635692">Bu sitelerde Serial API'sine izin ver</translation> +<translation id="1765503534110351026">Bu politika kullanımdan kaldırıldı, lütfen bunun yerine <ph name="PROXY_SETTINGS_POLICY_NAME" /> politikasını kullanın. + + Politikanın ayarlanması, <ph name="PRODUCT_NAME" /> ürününün burada verilen ana bilgisayar listesindeki tüm proxy'leri atladığı anlamına gelir. Bu politika, yalnızca <ph name="PROXY_SETTINGS_POLICY_NAME" /> politikası belirtilmemişken <ph name="PROXY_MODE_POLICY_NAME" /> politikası için <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> veya <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> belirttiğinizde geçerli olur. + + Proxy politikalarının ayarlanmasıyla ilgili olarak başka bir mod seçtiyseniz bu politikayı ayarlamadan bırakın. + + Not: Daha ayrıntılı örnekler için Chromium Projeleri'ni ziyaret edin (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="1767673020408652620">Arama Kutusunun Sıfır Durumunda Uygulama Önerileri Politikasını Etkinleştir</translation> <translation id="1780323582106687813">Bu politika kullanımdan kaldırıldı. Bunun yerine lütfen "<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />" politikasını kullanın. @@ -807,6 +815,7 @@ <translation id="2082205219176343977">Cihaz için izin verilen minimum Chrome sürümünü yapılandır.</translation> <translation id="208566302163036794">Devre dışı bırakılan özellikleri engelle</translation> <translation id="208623333578980446">Güç yönetimi için ekran uyanık kalma kilitlerine izin ver</translation> +<translation id="2086944573376916479">Yönetilen hesaplar, birincil hesap olmalı ve ikincil hesapları bulunmamalıdır</translation> <translation id="2090939118981888335">Politika, Etkin değerine ayarlanırsa veri sıkıştırma proxy'sine izin verilir. Politika, Devre Dışı değerine ayarlanırsa proxy'ye izin verilmez. Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Politika ayarlanmadan bırakılırsa kullanıcılar, özelliği kullanmayı seçebilir.</translation> @@ -860,6 +869,17 @@ Bu politika ayarlanmazsa tarayıcı yalnızca makinesindeki fiziksel bellek miktarının düştüğünü algıladığında bellekten tasarruf etmeye çalışır.</translation> <translation id="2166472654199325139">Yetişkinlere uygun içerik için siteler filtreleme</translation> +<translation id="2168060657210442816"> + Bu politikanın etkinleşmesi için <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> politikasının Doğru değerine ayarlanması gerekir. + + Bu politika, makine düzeyinde <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> değerine ayarlanırsa tüm yönetilen hesapların birincil hesap olması zorunlu hale gelir. + Bu politika bir hesapta <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" /> değerine ayarlanırsa o hesap, her zaman birincil hesap olur ancak profilinde ikincil hesaplar bulundurabilir. + + Bu politika, makine düzeyinde <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> değerine ayarlanırsa tüm yönetilen hesapların birincil hesap olması zorunlu hale gelir. + Bu politika bir hesapta <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" /> değerine ayarlanırsa o hesap, her zaman birincil hesap olur ve profilinde ikincil hesaplar bulunduramaz. + + Bu politika <ph name="POLICY_VALUE_NONE" /> değerine ayarlanır veya ayarlanmadan bırakılırsa yönetilen hesaplarda kısıtlama olmaz. Bu durum, bir yönetilen hesabın ikincil hesap olmasına ve dolayısıyla yönetici tarafından hesapta ayarlanan politika alabilme özelliğinin devre dışı kalmasına neden olabilir. + </translation> <translation id="2168397434410358693">AC güçle çalışırken boşta kalma gecikmesi</translation> <translation id="217013996107840632">Alternatif tarayıcıdan geçiş yapmak için komut satırı parametreleri.</translation> <translation id="2170233653554726857">WPAD optimizasyonunu etkinleştir</translation> @@ -1771,6 +1791,11 @@ <ph name="MS_WIN_NAME" /> işletim sisteminde bu işlev yalnızca Windows 10 Pro üzerinde çalışan bir <ph name="MS_AD_NAME" /> alan adına katılmış veya <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> öğesine kaydolmuş örneklerde kullanılabilir. <ph name="MAC_OS_NAME" /> işletim sisteminde bu işlev yalnızca MDM ile çalışan veya MCX aracılığıyla bir alan adına katılmış örneklerde kullanılabilir.</translation> <translation id="3261592499545947104">Bir sertifikanın kullanım süresi dolmadan kaç saniye önce yenilemenin tetikleneceği</translation> +<translation id="3264706118366247207">Kullanıcı tüm tarayıcı pencerelerini kapattığında silinmesi gereken tarama verisi türlerinin listesini yapılandırır. Kullanılabilir veri türleri şunlardır: Tarama geçmişi (<ph name="DATA_TYPE_BROWSING_HISTORY" />), indirme geçmişi (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), çerezler (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), önbellek <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, otomatik doldurma (<ph name="DATA_TYPE_AUTOFILL" />), şifreler (<ph name="DATA_TYPE_PASSWORD" />), site ayarları (<ph name="DATA_TYPE_SITE_SETTINGS" />) ve barındırılan uygulama verileri (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Bu politikanın <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" /> üzerinde önceliği yoktur. + + Bu politika, <ph name="SYNC_DISABLED_POLICY_NAME" /> politikasının doğru değerine ayarlanmasını gerektirir, aksi takdirde yok sayılır. Bu politika, platform seviyesinde ayarlanırsa Senkronizasyon, platform seviyesinde devre dışı bırakılmalıdır. Bu politika, kullanıcı seviyesinde ayarlanırsa politikanın geçerli olması için Senkronizasyon, bu kullanıcıda devre dışı bırakılmalıdır. + + <ph name="PRODUCT_NAME" /> temiz bir şekilde kapanmazsa (örneğin tarayıcı veya işletim sistemi çökerse) tarama verileri, profil tekrar yüklendiğinde silinir.</translation> <translation id="3264793472749429012">Varsayılan arama sağlayıcı kodlamaları</translation> <translation id="3273221114520206906">Varsayılan JavaScript ayarı</translation> <translation id="328347261792478720">Varsayılan olarak tarayıcı, kullanıcıya göre kişiselleştirilmiş medya önerileri gösterir. Bu politika Devre Dışı değerine ayarlanırsa bu öneriler kullanıcıdan gizlenir. Bu politika Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcıya medya önerileri gösterilir.</translation> @@ -1832,6 +1857,7 @@ Politika değeri milisaniye olarak belirtilmelidir. Değerler boşta kalma gecikmesinin altında veya o gecikmeye eşit olacak şekilde ayarlanır. Uyarı mesajı yalnızca boşta kalma işlemi, çıkış yapma veya cihazı kapatma olduğunda gösterilir.</translation> +<translation id="3363360928811201045">Yönetilen hesaplara kısıtlama ekleme</translation> <translation id="3367868895271989224">Politika Etkin değerine ayarlanırsa tüm siteler izole edilir. (Her site kendi işleminde çalışır.) Politika Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa site izolasyonu kapatılmaz ancak kullanıcıların devre dışı bırakmasına izin verilir (örneğin, chrome:/flags'te Site izolasyonunu devre dışı bırak seçeneğini kullanarak). <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> politikası ek kaynaklara ince ayar için de faydalı olabilir. <ph name="PRODUCT_OS_NAME" /> 76 ve önceki sürümlerde <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> cihaz politikasını aynı değere ayarlayın. (Aksi halde, değerlerin eşleşmemesi durumunda kullanıcı oturumuna giriş sırasında gecikme yaşanabilir.) @@ -3011,6 +3037,7 @@ Bir politika listede yoksa ve kaynaklar, kapsamlar veya düzey arasında çakışma varsa en yüksek önceliğe sahip politika uygulanır.</translation> <translation id="5056708224511062314">Ekran büyüteci devre dışı</translation> <translation id="5058573563327660283">Otomatik temizlik sırasında disk alanı boşaltmak için kullanılan stratejiyi seç (kullanımdan kaldırıldı)</translation> +<translation id="5059201920681374653">Yönetilen hesaplar, ilişkili yönetilen cihazlarda bulunlmalıdır</translation> <translation id="5061114193960158745">Bu politika, hiçbir zaman tarayıcı geçişine neden olmayacak web sitelerinin listesini kontrol eder. Her öğe bir kural olarak ele alınır. Eşleşen kurallar alternatif bir tarayıcı açmaz. <ph name="URL_LIST_POLICY_NAME" /> politikasından farklı olarak, kurallar her iki yönde de uygulanır. <ph name="IE_PRODUCT_NAME" /> eklentisi etkinse aynı zamanda <ph name="IE_PRODUCT_NAME" /> tarayıcısının bu URL'leri <ph name="PRODUCT_NAME" /> ile açıp açmayacağını da kontrol eder. Politika ayarlanmadan bırakılırsa web siteleri listeye eklenmez. @@ -3196,6 +3223,7 @@ Poltikanının ayarlanmadan bırakılması, kullanıcıların oyunu kayıtlı <ph name="PRODUCT_OS_NAME" /> ürününde oynayamayacakları, ancak diğer durumlarda oynayabilecekleri anlamına gelir.</translation> <translation id="529457411593078576">CCT için ilk çalıştırma sırasında Hizmet Şartları'nı etkinleştirme</translation> +<translation id="5298949392804966105">Yönetilen hesaplarda kısıtlama yok</translation> <translation id="530134925949808452">Kullanım kotasının yerel saatle günün hangi saatinde yenileneceği.</translation> <translation id="5303080953475303561">Politikanın ayarlanması, hızlı kilit açma için kilit ekranında ne sıklıkta şifre isteneceğini kontrol eder. Kilit ekranı her görüntülendiğinde, son şifre girişi, seçilen değer tarafından belirtilen zaman aralığından önce yapılmışsa hızlı kilit açma kullanılamaz. Kullanıcı bu süreden daha uzun bir zaman kilit ekranında kalırsa yanlış kod girdiğinde veya kilit ekranına tekrar girdiğinde (hangisi önce olursa) şifre sorulur. @@ -4337,6 +4365,26 @@ Not: <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" /> belirtilmişse bu politikayı geçersiz kılar.</translation> <translation id="6833988859168635883">Başlangıç, Ana sayfa ve Yeni Sekme sayfası</translation> +<translation id="6834298774555537368">Politikanın ayarlanması, komut satırında proxy ile ilgili belirtilen tüm seçenekleri yok sayan Chrome ve ARC-uygulamaları için proxy ayarlarını yapılandırır. + + Politika ayarlanmazsa kullanıcılar kendi proxy ayarlarını seçebilir. + + <ph name="PROXY_SETTINGS_POLICY_NAME" /> politikası ayarlandığında aşağıdaki alanlar kabul edilmiş olur: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, Chrome'un kullandığı proxy sunucusunu belirtmenizi sağlar ve kullanıcıların proxy ayarlarını değiştirmesini önler + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />, proxy .pac dosyası için URL + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />, proxy sunucu URL'si + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />, proxy'nin atlanmasını sağlayan sunucuların listesi + + <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> alanı kullanımdan kaldırılmış, yerine <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> alanı getirilmiştir. + + <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> için aşağıdaki değerleri seçerseniz: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, proxy hiçbir zaman kullanılmaz ve diğer tüm alanlar yok sayılır. + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, sisteme ait proxy kullanılır ve diğer tüm alanlar yok sayılır. + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, diğer tüm alanlar yok sayılır. + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> ve <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> alanları kullanılır. + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> ve <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> alanları kullanılır. + + Not: Daha ayrıntılı örnekler için Chromium Projeleri'ni ziyaret edin (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="6835883744948188639">Kullanıcıya yeniden başlatmanın önerildiğini belirten yinelenen bir istem gösterme</translation> <translation id="683688607121170501">Bu ayar, kullanıcıların <ph name="PRODUCT_OS_NAME" /> cihazlarında oturum açtıktan sonra tarayıcı pencerelerinin içerik alanındaki Google Hesapları arasında geçiş yapmalarına olanak tanır.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index d478f3a9..952c933 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -216,6 +216,7 @@ <translation id="1294263471858445589">Увімкнути фонову автентифікацію у звичайному й анонімному сеансах.</translation> <translation id="1295737447968372331">Увімкнути функцію "Диктування" на екрані входу</translation> <translation id="1297182715641689552">Використовувати сценарій .pac проксі-сервера</translation> +<translation id="1297827666345629703">Керований обліковий запис має бути основним</translation> <translation id="1297961932043741908">Налаштувати обмеження обсягу пам'яті для однієї копії Chrome.</translation> <translation id="1304973015437969093">Ідентифікатори розширень або додатків і URL-адреси оновлень, які встановлюються без попередження</translation> <translation id="1305400589435476516">Якщо це правило ввімкнено, на пристрої буде дозволено роумінг даних. @@ -579,6 +580,13 @@ Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила.</translation> <translation id="1755310913456007816">Використовувати поточні налаштування онлайн-перевірки відкликання</translation> <translation id="1760951637494635692">Дозволити Serial API на цих сайтах</translation> +<translation id="1765503534110351026">Це правило більше не підтримується. Натомість використовуйте <ph name="PROXY_SETTINGS_POLICY_NAME" />. + + Якщо налаштувати це правило, <ph name="PRODUCT_NAME" /> обходитиме всі проксі для хостів із наведеного тут списку. Це правило діє, лише якщо правило <ph name="PROXY_SETTINGS_POLICY_NAME" /> не вказане, а для правила <ph name="PROXY_MODE_POLICY_NAME" /> вказано значення <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> або <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />. + + Якщо вибрати інший режим, це правило не потрібно налаштовувати. + + Примітка: щоб переглянути детальніші приклади, відвідайте веб-сайт проектів Chromium (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="1767673020408652620">Увімкнути рекомендації додатків у нульовому стані вікна пошуку</translation> <translation id="1780323582106687813">Це правило більше не підтримується. Натомість використовуйте <ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />. @@ -817,6 +825,7 @@ <translation id="2082205219176343977">Налаштуйте мінімальну дозволену версію Chrome для пристрою.</translation> <translation id="208566302163036794">Блокувати вимкнені функції</translation> <translation id="208623333578980446">Дозволити розширенням керування живленням блокувати переходи екрана в режим сну</translation> +<translation id="2086944573376916479">Керований обліковий запис має бути основним і не містити додаткових</translation> <translation id="2090939118981888335">Якщо ввімкнути це правило, дозволятиметься робота проксі-сервера стиснення даних. Якщо його вимкнути, робота проксі-сервера заборонятиметься. Якщо налаштувати це правило, користувачі не зможуть змінювати його. В іншому разі користувачі зможуть самі керувати цією функцією.</translation> @@ -870,6 +879,17 @@ Якщо це правило не налаштовано, веб-переглядач намагається економити пам'ять, лише коли виявляє, що обсяг фізичної пам'яті комп'ютера малий.</translation> <translation id="2166472654199325139">Не фільтрувати сайти з вмістом для дорослих</translation> +<translation id="2168060657210442816"> + Це правило діє, якщо для правила <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> указано значення True. + + Якщо на рівні пристрою для цього правила вибрати значення <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />, усі керовані облікові записи примусово стануть основними. + Якщо на рівні облікового запису для цього правила вибрати значення <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />, цей обліковий запис завжди буде основним, але його профіль може містити додаткові облікові записи. + + Якщо на рівні пристрою для цього правила вибрати значення <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />, усі керовані облікові записи примусово стануть основними. + Якщо на рівні облікового запису для цього правила вибрати значення <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />, цей обліковий запис завжди буде основним, а його профіль не міститиме додаткових облікових записів. + + Якщо для цього правила вибрати значення <ph name="POLICY_VALUE_NONE" /> або не налаштовувати його, керовані облікові записи не матимуть обмежень. Тобто вони можуть стати додатковими обліковими записами, і на них не розповсюджуватимуться правила, налаштовані адміністратором в обліковому записі. + </translation> <translation id="2168397434410358693">Затримка через неактивність, коли використовується живлення від мережі</translation> <translation id="217013996107840632">Параметри командного рядка для переходу з альтернативного веб-переглядача.</translation> <translation id="2170233653554726857">Увімкнути оптимізацію WPAD</translation> @@ -1789,6 +1809,11 @@ У <ph name="MS_WIN_NAME" /> ця функція доступна лише для Windows 10 Pro або версій, зареєстрованих у домені <ph name="MS_AD_NAME" /> чи в сервісі <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. У <ph name="MAC_OS_NAME" /> ця функція доступна лише для машин, які контролюються через Керування мобільними пристроями або зареєстровані в домені через MCX.</translation> <translation id="3261592499545947104">За скільки секунд до закінчення терміну дії сертифіката має активуватися поновлення</translation> +<translation id="3264706118366247207">Налаштовує список типів даних веб-перегляду, які потрібно видаляти, коли користувач закриває всі вікна веб-переглядача. Доступні типи даних: історія веб-перегляду (<ph name="DATA_TYPE_BROWSING_HISTORY" />), історія завантажень (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />), файли cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />), кеш <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, дані автозаповнення (<ph name="DATA_TYPE_AUTOFILL" />), паролі (<ph name="DATA_TYPE_PASSWORD" />), налаштування сайтів (<ph name="DATA_TYPE_SITE_SETTINGS" />) і дані розміщених додатків (<ph name="DATA_TYPE_HOSTED_APP_DATA" />). Воно не має пріоритету над правилом <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />. + + Це правило діє, лише якщо для правила <ph name="SYNC_DISABLED_POLICY_NAME" /> вибрано значення true. Інакше воно ігноруватиметься. Якщо налаштувати це правило на рівні платформи, потрібно вимкнути синхронізацію для всієї платформи. Якщо це правило налаштовано на рівні користувача, воно діє, лише якщо вимкнути синхронізацію для цього користувача. + + Якщо <ph name="PRODUCT_NAME" /> закривається неналежним чином (наприклад, унаслідок помилки чи збою ОС), дані веб-перегляду буде видалено під час наступного завантаження профілю.</translation> <translation id="3264793472749429012">Кодування пошукової служби за умовчанням</translation> <translation id="3273221114520206906">Налаштування JavaScript за умовчанням</translation> <translation id="328347261792478720">За умовчанням веб-переглядач показуватиме рекомендації медіа, персоналізовані для користувача. Якщо це правило вимкнено, користувач не бачитиме таких рекомендацій. Якщо це правило ввімкнено або не налаштовано, користувачі бачитимуть рекомендації медіа.</translation> @@ -1853,6 +1878,7 @@ Значення правила вказуються в мілісекундах. Крім того, вони не можуть перевищувати тривалість затримки через неактивність. Застереження з'являється, лише якщо потрібно вийти із системи чи завершити роботу.</translation> +<translation id="3363360928811201045">Додати обмеження для керованих облікових записів</translation> <translation id="3367868895271989224">Якщо це правило ввімкнено, усі сайти ізолюються (для кожного запускається окремий процес). Якщо це правило вимкнено або не налаштовано, ізоляція сайтів працюватиме, але користувачі зможуть відмовитися від неї (наприклад, скориставшись записом "Disable site isolation" у chrome://flags). Для точнішої ізоляції джерел може бути корисним правило <ph name="ISOLATE_ORIGINS_POLICY_NAME" />. В <ph name="PRODUCT_OS_NAME" /> 76 або старіших версій налаштуйте таке саме значення в правилі для пристроїв <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" />. (Інакше сеанс користувача може починатись із затримкою.) @@ -3035,6 +3061,7 @@ Якщо правила немає в списку, але наявний конфлікт між джерелами, областями дії або рівнями, застосовується правило з найвищим пріоритетом.</translation> <translation id="5056708224511062314">Лупу вимкнено</translation> <translation id="5058573563327660283">Вибирати, які дані видалятимуться під час автоматичного очищення диска (більше не підтримується)</translation> +<translation id="5059201920681374653">Керовані облікові записи мають бути на афілійованому керованому пристрої</translation> <translation id="5061114193960158745">Налаштування цього правила керують списком веб-сайтів, які ніколи не ініціюють перехід в інший веб-переглядач. Кожний елемент вважається правилом. Правила, які збігаються, не відкриватимуть альтернативний веб-переглядач. На відміну від <ph name="URL_LIST_POLICY_NAME" />, правила застосовуються в обох напрямках. Якщо доповнення <ph name="IE_PRODUCT_NAME" /> увімкнено, воно також визначає, чи <ph name="IE_PRODUCT_NAME" /> відкриватиме ці URL-адреси в <ph name="PRODUCT_NAME" />. Якщо це правило не налаштовано, у список не додається жодний веб-сайт. @@ -3221,6 +3248,7 @@ Якщо це правило не налаштовано, користувачі не зможуть грати в гру на зареєстрованих пристроях з <ph name="PRODUCT_OS_NAME" />, але матимуть таку можливість за інших умов.</translation> <translation id="529457411593078576">Увімкнути відображення Умов використання під час першого запуску спеціальної вкладки Chrome</translation> +<translation id="5298949392804966105">Обмежень для керованих облікових записів немає</translation> <translation id="530134925949808452">Час дня (місцевий), коли поновлюється квота на використання.</translation> <translation id="5303080953475303561">Це правило визначає, як часто на заблокованому екрані потрібно вводити пароль, щоб надалі користуватися режимом швидкого розблокування. Якщо екран заблоковано й користувач востаннє вводив пароль давніше, ніж указано в цьому правилі, швидке розблокування буде недоступне. У цьому випадку користувачу потрібно буде ввести пароль, коли він знову перейде до заблокованого екрана чи введе неправильний код (залежно від того, що станеться швидше). @@ -4392,6 +4420,26 @@ Примітка: якщо вказано правило <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />, воно замінює це правило.</translation> <translation id="6833988859168635883">Стартова й домашня сторінки та сторінка нової вкладки</translation> +<translation id="6834298774555537368">За допомогою налаштувань цього правила можна вибрати параметри проксі для Chrome і додатків ARC, які ігнорують усі опції проксі, указані в командному рядку. + + Якщо не налаштувати це правило, користувачі зможуть самостійно вибирати налаштування проксі. + + Якщо правило <ph name="PROXY_SETTINGS_POLICY_NAME" /> налаштовано, буде прийнято ці поля: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> визначає проксі-сервер для Chrome і забороняє користувачам змінювати ці налаштування; + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> – URL-адреса файлу .pac проксі-сервера; + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> – URL-адреса проксі-сервера; + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> – список хостів, для яких проксі ігноруватиметься. + + Поле <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> застаріле. Замість нього використовується поле <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />. + + Якщо для параметра <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> вибрати значення: + * <ph name="PROXY_MODE_ENUM_DIRECT" />, проксі ніколи не використовуватиметься, а всі інші поля ігноруватимуться; + * <ph name="PROXY_MODE_ENUM_SYSTEM" />, використовуватимуться проксі системи, а всі інші поля ігноруватимуться; + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />, усі інші поля ігноруватимуться; + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />, використовуватимуться поля <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> і <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />; + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />, використовуватимуться поля <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> і <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />. + + Примітка: щоб переглянути детальніші приклади, відвідайте веб-сайт проектів Chromium (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation> <translation id="6835883744948188639">Показувати користувачеві повторюваний запит із рекомендацією перезапуску</translation> <translation id="683688607121170501">Це налаштування дає змогу користувачам переходити в інші облікові записи Google у вікні контенту веб-переглядача та в додатках Android, якщо вони ввійшли на пристрої з <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 4fb146e..0ccd5840 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -215,6 +215,7 @@ <translation id="1294263471858445589">为无痕会话和常规会话启用静默身份验证。</translation> <translation id="1295737447968372331">在登录屏幕上启用“语音输入”</translation> <translation id="1297182715641689552">使用 .pac 代理脚本</translation> +<translation id="1297827666345629703">受管理的帐号必须是主帐号</translation> <translation id="1297961932043741908">设置单个 Chrome 实例可以使用的内存上限(以 MB 为单位)。</translation> <translation id="1304973015437969093">要静默安装的扩展程序/应用的 ID 和更新网址</translation> <translation id="1305400589435476516">如果此政策已启用,系统将允许设备使用数据漫游功能。 @@ -573,6 +574,13 @@ 如需详细了解有效的<ph name="URL_LABEL" />格式,请访问 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是此政策可接受的值。</translation> <translation id="1755310913456007816">使用现有的在线撤消检查设置</translation> <translation id="1760951637494635692">允许在这些网站上使用 Serial API</translation> +<translation id="1765503534110351026">此政策已被弃用,请改用 <ph name="PROXY_SETTINGS_POLICY_NAME" />。 + + 如果您设置了此政策,<ph name="PRODUCT_NAME" /> 会绕过此列表指定的域名,不对其使用任何代理。若要使此政策生效,您必须确保未指定 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策并为 <ph name="PROXY_MODE_POLICY_NAME" /> 指定了 <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> 或 <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />。 + + 如果您选择了任何其他用于设置代理政策的模式,请勿设置此政策。 + + 注意:如需查看更详细的示例,请访问 Chromium 项目 ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation> <translation id="1767673020408652620">在处于零状态的搜索框内启用应用推荐</translation> <translation id="1780323582106687813">此政策已被弃用,请改用“<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />”政策。 @@ -796,6 +804,7 @@ <translation id="2082205219176343977">为设备配置允许使用的最低 Chrome 版本。</translation> <translation id="208566302163036794">禁用已停用的功能</translation> <translation id="208623333578980446">允许使用屏幕唤醒锁定以便进行电源管理</translation> +<translation id="2086944573376916479">受管理的帐号必须是主帐号,且无任何辅助帐号</translation> <translation id="2090939118981888335">如果此政策已启用,系统会允许使用数据压缩代理。如果此政策已停用,系统将禁止使用该代理。 如果您设置了此政策,用户便无法更改相关设置。如果您未设置此政策,用户可以选择使用该功能。</translation> @@ -849,6 +858,17 @@ 如果此政策未设置,那么仅当检测到所用机器的物理内存容量即将用尽时,浏览器才会开始尝试节省内存空间。</translation> <translation id="2166472654199325139">不滤除提供成人内容的网站</translation> +<translation id="2168060657210442816"> + 仅当 <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> 设为 true 时,此政策才会生效。 + + 如果此政策在设备级别设为<ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />,系统会强制所有受管理的帐号成为主帐号。 + 如果此政策在某个帐号中设为<ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />,该帐号将始终是主帐号,但其配置文件中可能会有辅助帐号。 + + 如果此政策在设备级别设为<ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />,系统会强制所有受管理的帐号成为主帐号。 + 如果此政策在某个帐号中设为<ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />,该帐号将始终是主帐号,而且其配置文件中将不会有任何辅助帐号。 + + 如果此政策设为<ph name="POLICY_VALUE_NONE" />或未设置,受管理的帐号将没有任何限制。这可能会导致受管理的帐号成为辅助帐号,从而使其无法接收管理员针对该帐号设定的政策。 + </translation> <translation id="2168397434410358693">使用交流电源供电时的闲置延迟时间</translation> <translation id="217013996107840632">用于从替代浏览器切换至 Chrome 的命令行参数。</translation> <translation id="2170233653554726857">启用WPAD优化</translation> @@ -1758,6 +1778,11 @@ 在 <ph name="MS_WIN_NAME" /> 上,此功能仅适用于已加入 <ph name="MS_AD_NAME" /> 网域的实例、在 Windows 10 专业版上运行的实例,或已注册 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />的实例。在 <ph name="MAC_OS_NAME" /> 上,此功能仅适用于通过 MDM 进行管理或通过 MCX 加入网域的实例。</translation> <translation id="3261592499545947104">应在证书还差多少秒到期时触发续订操作</translation> +<translation id="3264706118366247207">以列表形式配置在用户关闭所有浏览器窗口后应删除哪些类型的浏览数据。可用的数据类型包括浏览记录 (<ph name="DATA_TYPE_BROWSING_HISTORY" />)、下载记录 (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />)、Cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />)、缓存 <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />、自动填充 (<ph name="DATA_TYPE_AUTOFILL" />)、密码 (<ph name="DATA_TYPE_PASSWORD" />)、网站设置 (<ph name="DATA_TYPE_SITE_SETTINGS" />) 和托管的应用数据 (<ph name="DATA_TYPE_HOSTED_APP_DATA" />)。此政策不会优先于 <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />。 + + 仅当 <ph name="SYNC_DISABLED_POLICY_NAME" /> 政策设为 true 时,此政策才不会被忽略。如果在平台级别设置了此政策,则应在平台级别停用同步功能。如果在用户级别设置了此政策,则应为该用户停用同步功能,才能使此政策生效。 + + 如果用户未彻底退出 <ph name="PRODUCT_NAME" />(例如,浏览器或操作系统崩溃时),系统将在下次加载配置文件时清除浏览数据。</translation> <translation id="3264793472749429012">默认搜索服务提供商的编码</translation> <translation id="3273221114520206906">默认 JavaScript 设置</translation> <translation id="328347261792478720">默认情况下,浏览器会显示为用户量身定制的媒体推荐内容。如果此政策已停用,系统将对用户隐藏这些推荐内容。如果此政策已启用或未设置,系统则会向用户显示媒体推荐内容。</translation> @@ -1815,6 +1840,7 @@ 指定的政策值应以毫秒为单位,且不得大于闲置延迟时间。 仅当闲置操作为注销或关机时,系统才会显示警告消息。</translation> +<translation id="3363360928811201045">针对受管理的帐号添加限制</translation> <translation id="3367868895271989224">如果此政策已启用,系统会隔离所有网站。(每个网站都在自己的进程内运行。)如果此政策已停用或未设置,系统将不会关闭网站隔离功能,但用户可以选择停用此功能(例如,使用 chrome://flags 中的“停用网站隔离”)。 <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> 还可用于精确地调整来源。在 <ph name="PRODUCT_OS_NAME" /> 76 版及更低版本中,请将 <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> 设备政策设为相同的值。(因为如果这两项政策的值不一致,当进入用户会话时,系统可能会出现延迟。) @@ -2991,6 +3017,7 @@ 如果某项政策不在列表中,而且来源、范围或级别之间存在冲突,系统将会应用优先级最高的政策。</translation> <translation id="5056708224511062314">放大镜已停用</translation> <translation id="5058573563327660283">选择在自动清理期间释放磁盘空间时采用的策略(已弃用)</translation> +<translation id="5059201920681374653">受管理的帐号必须在关联的受管设备上</translation> <translation id="5061114193960158745">通过设置此政策,您可以控制哪些网站始终不会导致切换浏览器。网站列表中的每项内容都会被视为一条规则。有匹配项的规则将不会打开备用浏览器。与 <ph name="URL_LIST_POLICY_NAME" /> 政策不同的是,此政策中的规则双向适用。如果 <ph name="IE_PRODUCT_NAME" /> 插件已开启,此政策还可控制 <ph name="IE_PRODUCT_NAME" /> 是否应在 <ph name="PRODUCT_NAME" /> 中打开这些网址。 如果您不设置此政策,系统不会将任何网站加入列表。 @@ -3176,6 +3203,7 @@ 如果此政策未设置,用户无法在已注册的 <ph name="PRODUCT_OS_NAME" />上玩恐龙游戏,但可在其他环境下玩这款游戏。</translation> <translation id="529457411593078576">在 CCT 首次运行期间启用《服务条款》</translation> +<translation id="5298949392804966105">不针对受管理的帐号添加限制</translation> <translation id="530134925949808452">应在一天中的什么时间(以当地时间为准)更新用量配额。</translation> <translation id="5303080953475303561">通过设置此政策,您可以控制锁定屏幕将会按照什么样的频率要求用户输入密码以实现快速解锁。每当系统显示锁定屏幕时,如果与上次输入密码相距的时间超出了所选值指定的时长,便无法快速解锁。如果用户在锁定屏幕上的停留时长超过了此时长,那么当用户下次输错代码或重新进入锁定屏幕时(以先发生者为准),系统就会要求输入密码。 @@ -4316,6 +4344,26 @@ 注意:<ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />(若已指定)会覆盖此政策。</translation> <translation id="6833988859168635883">启动页、主页和新标签页</translation> +<translation id="6834298774555537368">通过设置此政策,您可为 Chrome 和 ARC 应用配置代理设置,它们会忽略从命令行中指定的所有与代理有关的选项。 + + 如果您未设置此政策,用户便可自行选择代理设置。 + + 设置 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策时可使用以下字段: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />,该字段让您能够指定 Chrome 使用的代理服务器,并禁止用户更改代理设置 + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" />,即代理 .pac 文件的网址 + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />,即代理服务器的网址 + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />,该字段让您能够以列表形式指定允许哪些域名绕过代理 + + <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> 字段已被弃用且已被 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> 字段取代。 + + 对于 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />,如果您选择以下值: + * <ph name="PROXY_MODE_ENUM_DIRECT" />,系统永远不会使用代理,并且会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_SYSTEM" />,系统会使用自己的代理,并且会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />,系统会忽略所有其他字段。 + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />,系统会使用 <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 字段。 + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />,系统会使用 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 字段。 + + 注意:如需查看更详细的示例,请访问 Chromium 项目 ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )。</translation> <translation id="6835883744948188639">显示建议用户重新启动浏览器的周期性提示</translation> <translation id="683688607121170501">通过此设置,您可允许用户在登录其 <ph name="PRODUCT_OS_NAME" />设备后从浏览器窗口的内容区域和 Android 应用中切换 Google 帐号。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index ed1b0db..4c0572ce 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -215,6 +215,7 @@ <translation id="1294263471858445589">在無痕模式工作階段和一般工作階段中啟用背景驗證。</translation> <translation id="1295737447968372331">在登入畫面上啟用語音輸入功能</translation> <translation id="1297182715641689552">使用 .pac Proxy 指令碼</translation> +<translation id="1297827666345629703">受管理帳戶必須是主要帳戶</translation> <translation id="1297961932043741908">設定單一 Chrome 例項可以使用的記憶體大小限制 (以 MB 為單位)。</translation> <translation id="1304973015437969093">自動在背景中安裝的擴充功能/應用程式 ID 和更新網址</translation> <translation id="1305400589435476516">如果將這項政策設為啟用,將允許裝置使用漫遊服務功能。 @@ -577,6 +578,13 @@ 想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation> <translation id="1755310913456007816">採用現有的線上撤銷檢查設定</translation> <translation id="1760951637494635692">允許這些網站上的 Serial API</translation> +<translation id="1765503534110351026">這項政策已遭淘汰,請改用 <ph name="PROXY_SETTINGS_POLICY_NAME" />。 + + 如果設定這項政策,<ph name="PRODUCT_NAME" /> 會略過此處所列主機的 Proxy。只有在 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策未設定,且你為 <ph name="PROXY_MODE_POLICY_NAME" /> 選取 <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" /> 或 <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" /> 時,這項政策才會生效。 + + 如果你選擇了透過任何其他模式設定 Proxy 政策,請勿設定這項政策。 + + 注意:如需詳細範例,請前往 Chromium 計畫 (網址為 https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)。</translation> <translation id="1767673020408652620">在零狀態搜尋框中啟用應用程式推薦</translation> <translation id="1780323582106687813">這項政策已遭淘汰,請改用「<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />」政策。 @@ -799,6 +807,7 @@ <translation id="2082205219176343977">設定裝置的最低 Chrome 版本限制。</translation> <translation id="208566302163036794">封鎖已停用的功能</translation> <translation id="208623333578980446">允許電源管理的螢幕 Wake Lock</translation> +<translation id="2086944573376916479">受管理帳戶必須是主要帳戶,而且不能有次要帳戶。</translation> <translation id="2090939118981888335">如果將這項政策設為啟用,代表允許使用資料壓縮 Proxy。如果將這項政策設為停用,則代表禁止使用該 Proxy。 如果設定這項政策,使用者將無法變更設定。如果不設定,使用者可選擇使用該功能。</translation> @@ -852,6 +861,17 @@ 如果不設定這項政策,瀏覽器只會在偵測到電腦上的實體記憶體即將用盡時,才會開始嘗試節省記憶體。</translation> <translation id="2166472654199325139">不要針對成人內容篩選網站。</translation> +<translation id="2168060657210442816"> + 如要使用這項政策,必須將 <ph name="SIGNIN_INTERCEPTION_ENABLED_POLICY_NAME" /> 設為 True,政策才會生效。 + + 如果在電腦層級將這項政策設為 <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />,系統會強制將所有受管理帳戶變更為主要帳戶。 + 如果在某個帳戶中將這項政策設為 <ph name="POLICY_VALUE_PRIMARY_ACCOUNT" />,系統一律會將該帳戶變更為主要帳戶,但其設定檔中可具備次要帳戶。 + + 如果在電腦層級將這項政策設為 <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />,系統會強制將所有受管理帳戶變更為主要帳戶。 + 如果在某個帳戶中將這項政策設為 <ph name="POLICY_VALUE_PRIMARY_ACCOUNT_STRICT" />,系統一律會將該帳戶變更為主要帳戶,而且其設定檔中不能有任何次要帳戶。 + + 如果將這項政策設為 <ph name="POLICY_VALUE_NONE" /> 或不設定,系統不會對受管理帳戶設定限制。這麼做可能導致受管理帳戶變更為次要帳戶,進而讓該帳戶無法接收由管理員對其設定的政策。 + </translation> <translation id="2168397434410358693">在 AC 供電環境下執行時的閒置延遲時間</translation> <translation id="217013996107840632">從替代瀏覽器切換到 Chrome 所使用的指令列參數。</translation> <translation id="2170233653554726857">啟用 WPAD 最佳化功能</translation> @@ -1758,6 +1778,11 @@ 在 <ph name="MS_WIN_NAME" /> 上,這項功能僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的執行個體、在 Windows 10 專業版上執行的執行個體,或是已註冊 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務的執行個體。在 <ph name="MAC_OS_NAME" /> 上,這項功能僅適用於透過行動裝置管理 (MDM) 軟體進行管理或透過 MCX 加入網域的執行個體。</translation> <translation id="3261592499545947104">憑證過期之前提早觸發更新程序的秒數</translation> +<translation id="3264706118366247207">設定當使用者關閉所有瀏覽器視窗時要刪除的瀏覽資料類型清單。可用的資料類型有瀏覽記錄 (<ph name="DATA_TYPE_BROWSING_HISTORY" />)、下載記錄 (<ph name="DATA_TYPE_DOWNLOAD_HISTORY" />)、Cookie (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />)、快取內容<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />、自動填入內容 (<ph name="DATA_TYPE_AUTOFILL" />)、密碼 (<ph name="DATA_TYPE_PASSWORD" />)、網站設定 (<ph name="DATA_TYPE_SITE_SETTINGS" />) 和代管的應用程式資料 (<ph name="DATA_TYPE_HOSTED_APP_DATA" />)。這項政策的優先順序低於 <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME" />。 + + 如要使用這項政策,必須將 <ph name="SYNC_DISABLED_POLICY_NAME" /> 政策設為 True,否則系統會予以忽略。如果是在平台層級設定這項政策,必須在平台層級停用同步功能。如果是在使用者層級設定這項政策,則必須為該使用者停用同步功能,這樣這項政策才會生效。 + + 如果未正常關閉 <ph name="PRODUCT_NAME" /> (例如瀏覽器或作業系統當機時),系統會在下次載入設定檔時清除瀏覽資料。</translation> <translation id="3264793472749429012">預設搜尋引擎編碼</translation> <translation id="3273221114520206906">預設 JavaScript 設定</translation> <translation id="328347261792478720">在預設狀態下,瀏覽器會根據使用者顯示個人化的媒體推薦內容。如果將這項政策設為停用,瀏覽器會向使用者隱藏這類推薦內容。如果將這項政策設為啟用或不設定,瀏覽器會向使用者顯示媒體推薦內容。</translation> @@ -1815,6 +1840,7 @@ 指定政策值時需以毫秒為單位。設定值必須小於或等於閒置延遲時間。 只有當閒置動作設為登出或關機時,系統才會顯示警告訊息。</translation> +<translation id="3363360928811201045">對受管理帳戶設定限制</translation> <translation id="3367868895271989224">如果將這項政策設為啟用,系統會隔離所有網站。(每個網站將各自以獨立程序執行)。如果將這項政策設為停用或不設定,系統不會停用網站隔離,但使用者可以選擇停用 (例如:在 chrome://flags 中透過停用網站隔離的方式進行停用)。 <ph name="ISOLATE_ORIGINS_POLICY_NAME" /> 也可用於微調來源。請在 <ph name="PRODUCT_OS_NAME" /> 76 以下版本中,將 <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> 裝置政策設為相同值。(原因是如果兩者的值不相符,在進入使用者工作階段時可能會發生延遲。) @@ -2990,6 +3016,7 @@ 如果某項政策不在清單中,但發生來源、範圍或層級衝突,系統會套用優先順序最高的政策。</translation> <translation id="5056708224511062314">已停用螢幕放大鏡</translation> <translation id="5058573563327660283">選取自動清理時用來釋出磁碟空間的策略 (已不適用)</translation> +<translation id="5059201920681374653">必須在關聯的受管理裝置上使用受管理帳戶</translation> <translation id="5061114193960158745">你可以透過這項政策,控管一律不觸發瀏覽器切換的網站清單。系統會將每個項目視為規則。相符的規則不會開啟替代瀏覽器。這項政策與 <ph name="URL_LIST_POLICY_NAME" /> 政策的不同之處在於,規則為雙向適用。如果 <ph name="IE_PRODUCT_NAME" /> 增益集已啟用,這項政策也會控管 <ph name="IE_PRODUCT_NAME" /> 是否應在 <ph name="PRODUCT_NAME" /> 中開啟這些網址。 @@ -3174,6 +3201,7 @@ 如果未設定這項政策,使用者無法在已註冊的 <ph name="PRODUCT_OS_NAME" />上玩恐龍復活節彩蛋遊戲,但可以在其他環境下玩這個遊戲。</translation> <translation id="529457411593078576">在第一次執行 CCT 時啟用《服務條款》</translation> +<translation id="5298949392804966105">不對受管理帳戶設定限制</translation> <translation id="530134925949808452">要在一天中的哪個時段 (以當地時間為準) 更新用量配額。</translation> <translation id="5303080953475303561">你可以透過這項政策,控管螢幕鎖定畫面要求使用者輸入密碼以快速解鎖的頻率。每當螢幕鎖定畫面顯示時,如果上一次輸入密碼的時間點落在所選值指定的時間範圍之前,裝置將無法快速解鎖。如果使用者停留在螢幕鎖定畫面的時間超過這個時間長度,則下次當他們輸入錯誤的解鎖碼或重新進入螢幕鎖定畫面時 (以先發生者為準),系統就會要求輸入密碼。 @@ -4301,6 +4329,26 @@ 注意:如果指定 <ph name="DEVICE_LOGIN_SCREEN_HIGH_CONTRAST_ENABLED_POLICY_NAME" />,這項政策會遭到覆寫。</translation> <translation id="6833988859168635883">起始頁面、首頁和新分頁</translation> +<translation id="6834298774555537368">你可以透過這項政策,設定 Chrome 和 ARC 應用程式的 Proxy 設定,系統會忽略所有從指令列所指定的 Proxy 相關選項。 + + 如果不設定這項政策,使用者就能選擇要使用的 Proxy 設定。 + + 設定 <ph name="PROXY_SETTINGS_POLICY_NAME" /> 政策時,可使用下列欄位: + * <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> 可讓你指定 Chrome 要使用的 Proxy 伺服器,並禁止使用者變更 Proxy 設定 + * <ph name="PROXY_PAC_URL_PROXY_SETTINGS_FIELD" /> 是 Proxy .pac 檔案的網址 + * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> 是 Proxy 伺服器的網址 + * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 是會略過的 Proxy 主機清單 + + <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> 欄位已遭淘汰,請改用 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> 欄位。 + + 如果將 <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" /> 的值設為: + * <ph name="PROXY_MODE_ENUM_DIRECT" />:Chrome 一律不會使用 Proxy,且會忽略所有其他欄位。 + * <ph name="PROXY_MODE_ENUM_SYSTEM" />:Chrome 會使用系統 Proxy,並忽略所有其他欄位。 + * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />:Chrome 會忽略所有其他欄位。 + * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />:Chrome 會使用 <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 欄位。 + * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />:Chrome 會使用 <ph name="PROXY_BYPASS_LIST_PROXY_PAC_URL" /> 和 <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" /> 欄位。 + + 注意:如需詳細範例,請前往 Chromium 計畫 (網址為 https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)。</translation> <translation id="6835883744948188639">顯示週期性提示,建議使用者重新啟動瀏覽器</translation> <translation id="683688607121170501">如果啟用這項設定,當使用者登入 <ph name="PRODUCT_OS_NAME" />裝置後,將可在瀏覽器視窗的內容區域和 Android 應用程式中切換 Google 帳戶。
diff --git a/components/policy/tools/generate_policy_source.py b/components/policy/tools/generate_policy_source.py index 4d4bab9..db57ccf 100755 --- a/components/policy/tools/generate_policy_source.py +++ b/components/policy/tools/generate_policy_source.py
@@ -16,6 +16,7 @@ from collections import namedtuple from collections import OrderedDict from functools import partial +import codecs import json import re import sys @@ -461,7 +462,7 @@ def _LoadJSONFile(json_file): - with open(json_file, 'r') as f: + with codecs.open(json_file, 'r', encoding='utf-8') as f: text = f.read() return eval(text) @@ -869,7 +870,7 @@ 'Extra IsSensitiveValue HasSensitiveChildren\n') for schema_node in self.schema_nodes: assert schema_node.extra >= MIN_INDEX and schema_node.extra <= MAX_INDEX - comment = ('\n' + ' ' * 69 + '// ').join(schema_node.comments) + comment = ('\n' + ' ' * 69 + '// ').join(sorted(schema_node.comments)) f.write(' { base::Value::%-19s %4s %-16s %-5s }, // %s\n' % (schema_node.schema_type + ',', str(schema_node.extra) + ',', str(schema_node.is_sensitive_value).lower() + ',', @@ -1560,9 +1561,9 @@ return filter(partial(_IsSupportedChromeOSPolicy, type), policies) -# Returns the set of all policy.policy_protobuf_type strings from |policies|. +# Returns the list of all policy.policy_protobuf_type strings from |policies|. def _GetProtobufTypes(policies): - return set(['Integer', 'Boolean', 'String', 'StringList']) + return sorted(['Integer', 'Boolean', 'String', 'StringList']) # Writes the definition of an array that contains the pointers to the mutable
diff --git a/components/policy/tools/template_writers/policy_template_generator.py b/components/policy/tools/template_writers/policy_template_generator.py index 2a7b6289..83059351 100755 --- a/components/policy/tools/template_writers/policy_template_generator.py +++ b/components/policy/tools/template_writers/policy_template_generator.py
@@ -4,7 +4,16 @@ # found in the LICENSE file. import copy +import os import re +import sys + +sys.path.insert( + 0, + os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, + os.pardir, 'third_party', 'six', 'src')) + +import six def IsGroupOrAtomicGroup(policy): @@ -21,7 +30,7 @@ ''' def _ImportMessage(self, msg_txt): - msg_txt = msg_txt.decode('utf-8') + msg_txt = six.ensure_text(msg_txt) lines = msg_txt.split('\n') # Strip any extra leading spaces, but keep useful indentation:
diff --git a/components/policy/tools/template_writers/template_formatter.py b/components/policy/tools/template_writers/template_formatter.py index 56b63c5..f997883a 100755 --- a/components/policy/tools/template_writers/template_formatter.py +++ b/components/policy/tools/template_writers/template_formatter.py
@@ -14,6 +14,13 @@ import re import sys +sys.path.insert( + 0, + os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, + os.pardir, 'third_party', 'six', 'src')) + +import six + import writer_configuration import policy_template_generator @@ -118,20 +125,19 @@ elif key.strip() == 'PATCH': version['patch'] = value.strip() - version_found = version.has_key('major') and version.has_key( - 'minor') and version.has_key('build') and version.has_key('patch') + version_found = len(version) == 4 return version if version_found else None def _JsonToUtf8Encoding(data, ignore_dicts=False): - if isinstance(data, unicode): + if six.PY2 and isinstance(data, unicode): return data.encode('utf-8') elif isinstance(data, list): return [_JsonToUtf8Encoding(item, False) for item in data] elif isinstance(data, dict): return { _JsonToUtf8Encoding(key): _JsonToUtf8Encoding(value) - for key, value in data.iteritems() + for key, value in data.items() } return data @@ -177,11 +183,10 @@ parser.add_argument('--doc', action='append', dest='doc') parser.add_argument( '--doc_atomic_groups', action='append', dest='doc_atomic_groups') - parser.add_argument( - '--local', - action='store_true', - help='If set, the documentation will be built so \ - that links work locally in the generated path.') + parser.add_argument('--local', + action='store_true', + help='If set, the documentation will be built so ' + 'that links work locally in the generated path.') parser.add_argument('--json', action='append', dest='json') parser.add_argument('--plist', action='append', dest='plist') parser.add_argument('--plist_strings', action='append', dest='plist_strings')
diff --git a/components/policy/tools/template_writers/writers/doc_writer.py b/components/policy/tools/template_writers/writers/doc_writer.py index 5f7d775d..b852d86 100755 --- a/components/policy/tools/template_writers/writers/doc_writer.py +++ b/components/policy/tools/template_writers/writers/doc_writer.py
@@ -141,7 +141,7 @@ ''' features = [] # The sorting is to make the order well-defined for testing. - keys = policy['features'].keys() + keys = list(policy['features'].keys()) keys.sort() for key in keys: key_name = self._FEATURE_MAP[key] @@ -224,7 +224,7 @@ '[\n%s\n]' % ',\n'.join(' "%s"' % item for item in example_value)) def _AddListExample(self, parent, policy): - '''Adds the example value of a 'list' policy to a DOM node. Example output: + r'''Adds the example value of a 'list' policy to a DOM node. Example output: <dl> <dt>Windows (Windows clients):</dt> <dd>
diff --git a/components/policy/tools/template_writers/writers/xml_formatted_writer.py b/components/policy/tools/template_writers/writers/xml_formatted_writer.py index e4813d6..c0db6faf 100755 --- a/components/policy/tools/template_writers/writers/xml_formatted_writer.py +++ b/components/policy/tools/template_writers/writers/xml_formatted_writer.py
@@ -30,7 +30,7 @@ doc = parent.ownerDocument element = doc.createElement(name) - for key, value in sorted(attrs.iteritems()): + for key, value in sorted(attrs.items()): element.setAttribute(key, value) if text: element.appendChild(doc.createTextNode(text))
diff --git a/components/prefs/pref_member_unittest.cc b/components/prefs/pref_member_unittest.cc index 3a2faf1..d117898b 100644 --- a/components/prefs/pref_member_unittest.cc +++ b/components/prefs/pref_member_unittest.cc
@@ -207,7 +207,7 @@ EXPECT_FALSE(string.IsDefaultValue()); // Test string list - base::ListValue expected_list; + base::Value expected_list(base::Value::Type::LIST); std::vector<std::string> expected_vector; StringListPrefMember string_list; string_list.Init(kStringListPref, &prefs); @@ -219,7 +219,7 @@ EXPECT_TRUE(string_list.IsDefaultValue()); // Try changing through the pref member. - expected_list.AppendString("foo"); + expected_list.Append("foo"); expected_vector.push_back("foo"); string_list.SetValue(expected_vector); @@ -229,7 +229,7 @@ EXPECT_FALSE(string_list.IsDefaultValue()); // Try adding through the pref. - expected_list.AppendString("bar"); + expected_list.Append("bar"); expected_vector.push_back("bar"); prefs.Set(kStringListPref, expected_list); @@ -239,7 +239,7 @@ EXPECT_FALSE(string_list.IsDefaultValue()); // Try removing through the pref. - expected_list.Remove(0, nullptr); + EXPECT_TRUE(expected_list.EraseListIter(expected_list.GetList().begin())); expected_vector.erase(expected_vector.begin()); prefs.Set(kStringListPref, expected_list); @@ -255,14 +255,14 @@ expected_vector.push_back("foo"); // Try to add a valid list first. - base::ListValue list; - list.AppendString("foo"); + base::Value list(base::Value::Type::LIST); + list.Append("foo"); std::vector<std::string> vector; EXPECT_TRUE(subtle::PrefMemberVectorStringUpdate(list, &vector)); EXPECT_EQ(expected_vector, vector); // Now try to add an invalid list. |vector| should not be changed. - list.AppendInteger(0); + list.Append(0); EXPECT_FALSE(subtle::PrefMemberVectorStringUpdate(list, &vector)); EXPECT_EQ(expected_vector, vector); }
diff --git a/components/resources/components_scaled_resources.grd b/components/resources/components_scaled_resources.grd index 940244d..b404cac 100644 --- a/components/resources/components_scaled_resources.grd +++ b/components/resources/components_scaled_resources.grd
@@ -22,6 +22,7 @@ <!-- Generic resources --> <if expr="not is_android"> <structure type="chrome_scaled_image" name="IDR_HISTORY_FAVICON" file="favicon_history.png" /> + <structure type="chrome_scaled_image" name="IDR_INFO_FAVICON" file="favicon_info.png" /> </if> <structure type="chrome_scaled_image" name="IDR_SAD_WEBVIEW" file="webview-crash.png" /> <structure type="chrome_scaled_image" name="IDR_SAD_PLUGIN" file="sadplugin.png" />
diff --git a/components/resources/default_100_percent/favicon_info.png b/components/resources/default_100_percent/favicon_info.png new file mode 100644 index 0000000..bdd0358 --- /dev/null +++ b/components/resources/default_100_percent/favicon_info.png Binary files differ
diff --git a/components/resources/default_200_percent/favicon_info.png b/components/resources/default_200_percent/favicon_info.png new file mode 100644 index 0000000..07f97a6 --- /dev/null +++ b/components/resources/default_200_percent/favicon_info.png Binary files differ
diff --git a/components/resources/default_300_percent/favicon_info.png b/components/resources/default_300_percent/favicon_info.png new file mode 100644 index 0000000..fc1108a --- /dev/null +++ b/components/resources/default_300_percent/favicon_info.png Binary files differ
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index f310ab7..a814d36a 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -285,6 +285,7 @@ <translation id="1919345977826869612">الإعلانات</translation> <translation id="1919367280705858090">الحصول على مساعدة بخصوص رسالة خطأ محددة</translation> <translation id="192020519938775529">{COUNT,plural, =0{بدون}=1{موقع واحد}two{ موقعان (#)}few{# مواقع}many{# موقعًا}other{# موقع}}</translation> +<translation id="1924727005275031552">جديد</translation> <translation id="1945968466830820669">قد تفقد إمكانية الوصول إلى حساب مؤسستك أو تتعرَّض لسرقة هويتك. لذا، يوصي Chromium بتغيير كلمة مرورك الآن.</translation> <translation id="1947454675006758438">وضع دبوس أعلى اليمين</translation> <translation id="1958218078413065209">أعلى نتيجة حققتها هي <ph name="SCORE" />.</translation> @@ -307,12 +308,14 @@ <translation id="2042213636306070719">الدُرج 7</translation> <translation id="204357726431741734">يُرجى تسجيل الدخول لاستخدام كلمات المرور المحفوظة في حسابك على Google.</translation> <translation id="2053111141626950936">لن تتم ترجمة الصفحات باللغة <ph name="LANGUAGE" />.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل يوم.}=1{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل يوم.}two{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل يومَين ({NUM_DAYS}).}few{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل {NUM_DAYS} أيام.}many{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل {NUM_DAYS} يومًا.}other{عندما يكون عنصر التحكم هذا مفعّلاً ونشطًا، يحدّد Chrome "المجموعة النموذجية" التي تضم عددًا كبيرًا من الأشخاص الذين تتشابه أنشطة تصفّحهم مع أنشطة تصفّحك الأخيرة. ويمكن للمعلِنين اختيار الإعلانات التي يريدون عرضها للمجموعة ويتم الحفاظ على خصوصية سجلّ التصفّح على جهازك، مع العِلم أنّ مجموعتك يتم تعديلها كل {NUM_DAYS} يوم.}}</translation> <translation id="2053553514270667976">الرمز البريدي</translation> <translation id="2064691555167957331">{COUNT,plural, =1{اقتراح واحد}zero{# اقتراح}two{اقتراحان (#)}few{# اقتراحات}many{# اقتراحًا}other{# اقتراح}}</translation> <translation id="2071692954027939183">تم حظر الإشعارات تلقائيًا لأنّك عادةً لا تسمح بظهورها.</translation> <translation id="2079545284768500474">تراجع</translation> <translation id="20817612488360358">تم ضبط إعدادات الخادم الوكيل ليتم استخدامها وتم أيضًا تحديد إعداد صريح للخادم الوكيل.</translation> <translation id="2082238445998314030">النتيجة <ph name="RESULT_NUMBER" /> من <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">حفظ…</translation> <translation id="2088086323192747268">زر "إدارة المزامنة"، اضغط على مفتاح Enter لإدارة نوع المعلومات التي تريد مزامنتها من خلال إعدادات Chrome.</translation> <translation id="2091887806945687916">الصوت</translation> <translation id="2094505752054353250">النطاق غير متطابق</translation> @@ -393,8 +396,10 @@ <translation id="2355395290879513365">قد يتمكن المهاجمون من رؤية الصور التي تتطلع عليها على هذا الموقع وخداعك من خلال تعديلها.</translation> <translation id="2356070529366658676">طلب</translation> <translation id="2357481397660644965">يدير <ph name="DEVICE_MANAGER" /> جهازك، ويدير <ph name="ACCOUNT_MANAGER" /> حسابك.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{خلال أقل من يوم}=1{خلال يوم واحد}two{خلال يومَين ({NUM_DAYS})}few{خلال {NUM_DAYS} أيام}many{خلال {NUM_DAYS} يومًا}other{خلال {NUM_DAYS} يوم}}</translation> <translation id="2359629602545592467">متعددة</translation> <translation id="2359808026110333948">متابعة</translation> +<translation id="2359961752320758691">تم استخدام رقم البطاقة الافتراضية.</translation> <translation id="2367567093518048410">المستوى</translation> <translation id="2372464001869762664">بعد التأكيد، ستتم مشاركة تفاصيل البطاقة من حسابك على Google مع هذا الموقع الإلكتروني. يمكنك العثور على رمز التحقق من البطاقة (CVC) في تفاصيل حسابك على Plex.</translation> <translation id="2380886658946992094">قانوني</translation> @@ -405,6 +410,7 @@ <translation id="239429038616798445">طريقة الشحن هذه غير متاحة، جرِّب طريقة أخرى.</translation> <translation id="2396249848217231973">تراجع عن الحذ&ف</translation> <translation id="2410754574180102685">Government-Legal</translation> +<translation id="2413155254802890957">قديم</translation> <translation id="2413528052993050574">هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ بل إنه شهادة أمان ربما تم إلغاء صلاحيتها. وربما يكون السبب في ذلك خطأ في التكوين أو مهاجمًا يعترض اتصالك.</translation> <translation id="2414886740292270097">داكن</translation> <translation id="2438874542388153331">عمل أربعة ثقوب يمينًا</translation> @@ -713,6 +719,7 @@ <translation id="3590643883886679995">سيتم حفظ بيانات تسجيل الدخول على هذا الجهاز بعد الخروج من "وضع التصفُّح المتخفي".</translation> <translation id="359126217934908072">الشهر/السنة:</translation> <translation id="3592413004129370115">Italian (مغلف)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق يومًا تقريبًا.}=1{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق يومًا واحدًا تقريبًا.}two{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق يومَين ({NUM_DAYS}) تقريبًا.}few{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق {NUM_DAYS} أيام تقريبًا.}many{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق {NUM_DAYS} يومًا تقريبًا.}other{يمكنك إعادة ضبط مجموعتك متى شئت، مع العِلم أنّ الانضمام إلى مجموعة جديدة يستغرق {NUM_DAYS} يوم تقريبًا.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />، و<ph name="DOMAIN" />، و<ph name="TIME" /></translation> <translation id="3603507503523709">حظر مشرفك التطبيق</translation> <translation id="3608932978122581043">تخطيط الاتجاه</translation> @@ -910,12 +917,14 @@ <translation id="4275830172053184480">إعادة تشغيل جهازك</translation> <translation id="4277028893293644418">إعادة ضبط كلمة المرور</translation> <translation id="428639260510061158">{NUM_CARDS,plural, =1{تم حفظ هذه البطاقة في حسابك على Google}zero{تم حفظ هذه البطاقات في حسابك على Google}two{تم حفظ هاتين البطاقتين في حسابك على Google}few{تم حفظ هذه البطاقات في حسابك على Google}many{تم حفظ هذه البطاقات في حسابك على Google}other{تم حفظ هذه البطاقات في حسابك على Google}}</translation> +<translation id="4287885627794386150">حسابك مؤهّل للحصول على إصدار تجريبي ولكنّه غير نشِط.</translation> <translation id="4297502707443874121">صورة مصغّرة لصفحة <ph name="THUMBNAIL_PAGE" /></translation> <translation id="42981349822642051">توسيع</translation> <translation id="4300675098767811073">عمل عدة ثقوب يمينًا</translation> <translation id="4302514097724775343">انقر على الديناصور لبدء اللعب.</translation> <translation id="4302965934281694568">Chou3 (مغلف)</translation> <translation id="4305666528087210886">تعذّر الوصول لملفك</translation> +<translation id="4306529830550717874">هل تريد حفظ العنوان؟</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">حظر (تلقائي)</translation> <translation id="4314815835985389558">إدارة المزامنة</translation> @@ -1198,6 +1207,7 @@ <translation id="5332219387342487447">طريقة الشحن</translation> <translation id="5333022057423422993">لقد عثر Chrome في عمليّة اختراق للبيانات على كلمة المرور التي استخدمتها للتو. لحماية حساباتك، ننصحك بالتحقّق من كلمات مرورك المحفوظة.</translation> <translation id="5334013548165032829">سجلّات النظام التفصيلية</translation> +<translation id="5334145288572353250">هل تريد حفظ العنوان؟</translation> <translation id="5340250774223869109">التطبيق محظور</translation> <translation id="534295439873310000">أجهزة NFC</translation> <translation id="5344579389779391559">قد تُحاول هذه الصفحة تحصيل رسوم منك</translation> @@ -1403,6 +1413,7 @@ <translation id="610911394827799129">قد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح على <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation> <translation id="6116338172782435947">الاطلاع على النصوص والصور التي تم نسخها إلى الحافظة</translation> <translation id="6120179357481664955">هل تتذكر معرّف واجهة الدفعات الموحّدة؟</translation> +<translation id="6123290840358279103">عرض البطاقة الافتراضية</translation> <translation id="6124432979022149706">Chrome Enterprise Connectors</translation> <translation id="6146055958333702838">تحقق من أي كابلات وأعد تشغيل أي أجهزة توجيه أو أجهزة مودم أو أجهزة شبكة أخرى ربما تستخدمها.</translation> @@ -1536,6 +1547,7 @@ <translation id="6671697161687535275">هل تريد إزالة اقتراح النموذج من Chromium؟</translation> <translation id="6685834062052613830">الخروج وإكمال الإعداد</translation> <translation id="6687335167692595844">حجم الخط المطلوب</translation> +<translation id="6688743156324860098">تعديل…</translation> <translation id="6689249931105087298">طباعة نسبية باستخدام ميزة "تعويض النقاط السوداء"</translation> <translation id="6689271823431384964">يتيح لك Chrome حفظ بطاقاتك في حسابك على Google لأنك سجَّلت الدخول. يمكنك تغيير هذا السلوك في الإعدادات. ويتم الحصول على اسم حامل البطاقة من حسابك.</translation> <translation id="6698381487523150993">تاريخ الإنشاء:</translation> @@ -1551,6 +1563,7 @@ <translation id="6744009308914054259">أثناء انتظار اتصال، يمكنك الانتقال إلى مجلد "المحتوى الذي تم تنزيله" للاطِّلاع على المقالات بلا اتصال بالإنترنت.</translation> <translation id="6753269504797312559">قيمة السياسة</translation> <translation id="6757797048963528358">خضع جهازك إلى وضع السكون.</translation> +<translation id="6767985426384634228">هل تريد تعديل العنوان؟</translation> <translation id="6768213884286397650">Hagaki (بطاقة بريدية)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">بنفسجي</translation> @@ -1682,6 +1695,7 @@ <translation id="7300012071106347854">أزرق كوبالت</translation> <translation id="7302712225291570345">"<ph name="TEXT" />"</translation> <translation id="7304030187361489308">مرتفع</translation> +<translation id="7305756307268530424">تشغيل اللعبة ببطء</translation> <translation id="7319430975418800333">A3</translation> <translation id="7320336641823683070">المساعدة بشأن الاتصال</translation> <translation id="7323804146520582233">إخفاء قسم "<ph name="SECTION" />"</translation> @@ -1707,7 +1721,9 @@ <translation id="7378594059915113390">عناصر التحكم في الوسائط</translation> <translation id="7378627244592794276">لا</translation> <translation id="7378810950367401542">/</translation> +<translation id="7386364858855961704">غير سارٍ</translation> <translation id="7390545607259442187">التأكد من البطاقة</translation> +<translation id="7392089738299859607">تعديل العنوان</translation> <translation id="7399802613464275309">تأكيد السلامة</translation> <translation id="7400418766976504921">عنوان URL</translation> <translation id="7403591733719184120">إدارة <ph name="DEVICE_NAME" /></translation> @@ -1758,6 +1774,7 @@ <translation id="7548892272833184391">إصلاح أخطاء الاتصال</translation> <translation id="7549584377607005141">تتطلب صفحة الويب هذه البيانات التي أدخلتها في وقت سابق لعرضها بشكل صحيح. يمكنك إرسال هذه المعلومات مرة أخرى ولكن بذلك ستكرر أي إجراء اتخذته هذه الصفحة في وقت سابق.</translation> <translation id="7550637293666041147">اسم مستخدم الجهاز واسم مستخدم Chrome</translation> +<translation id="755279583747225797">الإصدار التجريبي نشِط.</translation> <translation id="7552846755917812628">جرّب النصائح التالية:</translation> <translation id="7554475479213504905">إعادة التحميل والعرض على أيّ حال</translation> <translation id="7554791636758816595">علامة تبويب جديدة</translation> @@ -1845,6 +1862,7 @@ <translation id="7865448901209910068">أفضل سرعة</translation> <translation id="7874263914261512992">لقد أدخلت للتو كلمة المرور في موقع إلكتروني مريب. وللحفاظ على أمان بياناتك، ينصحك متصفّح Chrome بالتحقّق من كلمات المرور المحفوظة للموقعين الإلكترونيين <ph name="WEBSITE_1" /> و<ph name="WEBSITE_2" /> وغيرهما من المواقع التي تستخدم فيها الآن كلمة المرور هذه.</translation> <translation id="7878562273885520351">من المحتمل أنه تم اختراق كلمة مرورك</translation> +<translation id="7880146494886811634">حفظ العنوان</translation> <translation id="7882421473871500483">بني</translation> <translation id="7887683347370398519">تحقق من رمز التحقق من البطاقة (CVC) ثم أعد المحاولة.</translation> <translation id="7887885240995164102">الدخول في وضع "نافذة ضمن نافذة"</translation> @@ -1852,6 +1870,7 @@ <translation id="7894280532028510793">إذا تم التأكُد من عدم ورود أخطاء إملائية، يُرجى <ph name="BEGIN_LINK" />محاولة تشغيل بيانات تشخيص الشبكة<ph name="END_LINK" />.</translation> <translation id="7904208859782148177">C3 (مغلف)</translation> <translation id="7931318309563332511">غير معروف</translation> +<translation id="793209273132572360">هل تريد تعديل العنوان؟</translation> <translation id="7932579305932748336">الطبقة الخارجية</translation> <translation id="79338296614623784">أدخِل رقم هاتف صحيحًا</translation> <translation id="7934052535022478634">اكتمل إجراء الدفع</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index acf3517..e97160b 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -308,12 +308,14 @@ <translation id="2042213636306070719">ট্ৰে’ ৭</translation> <translation id="204357726431741734">আপোনাৰ Google একাউণ্টত ষ্ট’ৰ হৈ থকা পাছৱৰ্ডসমূহ ব্যৱহাৰ কৰিবলৈ ছাইন ইন কৰক</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> ভাষাৰ পৃষ্ঠাসমূহ অনুবাদ কৰা নহয়।</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতিদিনে আপডে’ট কৰা হয়।}=1{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতিদিনে আপডে’ট কৰা হয়।}one{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতি {NUM_DAYS} দিনত আপডে’ট কৰা হয়।}other{এই নিয়ন্ত্ৰণটো অন কৰা অৱস্থাত আৰু স্থিতিটো সক্ৰিয় হৈ থাকিলে, Chromeএ আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ কাৰ্যকলাপৰ সৈতে সকলোতকৈ বেছি মিলা বহুতো লোকৰ গোট অথবা “একেধৰণৰ বৈশিষ্ট শ্বেয়াৰ কৰা গোট” নিৰ্ধাৰণ কৰে। বিজ্ঞাপনদাতাই গোটটোৰ বাবে বিজ্ঞাপন বাছনি কৰিব পাৰে আৰু আপোনাৰ ডিভাইচত আপোনাৰ ব্ৰাউজিঙৰ কাৰ্যকলাপ ব্যক্তিগত কৰি ৰখা হয়। আপোনাৰ গোটটো প্ৰতি {NUM_DAYS} দিনত আপডে’ট কৰা হয়।}}</translation> <translation id="2053553514270667976">পিন ক’ড</translation> <translation id="2064691555167957331">{COUNT,plural, =1{১টা পৰামৰ্শ}one{#টা পৰামৰ্শ}other{#টা পৰামৰ্শ}}</translation> <translation id="2071692954027939183">জাননীসমূহ স্বয়ংক্ৰিয়ভাৱে অৱৰোধ কৰা হৈছে কাৰণ আপুনি সাধাৰণতে সেইসমূহক অনুমতি নিদিয়ে</translation> <translation id="2079545284768500474">আনডু কৰক</translation> <translation id="20817612488360358">ছিষ্টেম প্ৰক্সি ছেটিংসমূহ ব্যৱহাৰ কৰিবলৈ ছেট কৰা হৈছে কিন্তু ক্ষতিকাৰক প্ৰক্সি কনফিগাৰেশ্বনো নির্দিষ্ট কৰা হৈছে।</translation> <translation id="2082238445998314030">ফলাফল <ph name="TOTAL_RESULTS" />ৰ ভিতৰত <ph name="RESULT_NUMBER" /></translation> +<translation id="2085876078937250610">ছেভ কৰক…</translation> <translation id="2088086323192747268">ছিংক কৰা বুটাম পৰিচালনা কৰক, আপুনি Chromeৰ ছেটিঙত কি তথ্য ছিংক কৰিব সেয়া পৰিচালনা কৰিবলৈ এণ্টাৰ টিপক</translation> <translation id="2091887806945687916">শব্দ</translation> <translation id="2094505752054353250">ড‘মেইন অমিল</translation> @@ -394,6 +396,7 @@ <translation id="2355395290879513365">আক্ৰমণকাৰীয়ে আপুনি এই ছাইটটোত চাই থকা প্ৰতিচ্ছবিসমূহ চাব পাৰিব পাৰে আৰু সেইসমূহ সলনি কৰি আপোনাক জালত পেলাব পাৰে।</translation> <translation id="2356070529366658676">সোধক</translation> <translation id="2357481397660644965">আপোনাৰ ডিভাইচটো <ph name="DEVICE_MANAGER" />এ আৰু আপোনাৰ একাউণ্টটো <ph name="ACCOUNT_MANAGER" />এ পৰিচালনা কৰে।</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{এদিনতকৈও কম সময়ত}=1{এদিনত}one{{NUM_DAYS} দিনত}other{{NUM_DAYS} দিনত}}</translation> <translation id="2359629602545592467">একাধিক</translation> <translation id="2359808026110333948">অব্যাহত ৰাখক</translation> <translation id="2359961752320758691">আপোনাৰ ভাৰ্চুৱেল কাৰ্ড নম্বৰটো প্ৰয়োগ কৰা হৈছে।</translation> @@ -713,6 +716,7 @@ <translation id="3590643883886679995">আপুনি ইনক’গনিট’ ম’ডৰ পৰা বাহিৰ ওলোৱাৰ পাছত এই ডিভাইচটোত ছাইন-ইনৰ ডেটা ষ্ট’ৰ কৰা হ’ব।</translation> <translation id="359126217934908072">মাহ/বছৰ:</translation> <translation id="3592413004129370115">ইটালিয়ান (লেফাফা)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{আপুনি যিকোনো সময়তে নিজৰ গোটটো ৰিছেট কৰিব পাৰে। এটা নতুন গোটত যোগদান কৰিবলৈ প্ৰায় এদিন সময় লাগে।}=1{আপুনি যিকোনো সময়তে নিজৰ গোটটো ৰিছেট কৰিব পাৰে। এটা নতুন গোটত যোগদান কৰিবলৈ প্ৰায় এদিন সময় লাগে।}one{আপুনি যিকোনো সময়তে নিজৰ গোটটো ৰিছেট কৰিব পাৰে। এটা নতুন গোটত যোগদান কৰিবলৈ {NUM_DAYS} দিন সময় লাগে।}other{আপুনি যিকোনো সময়তে নিজৰ গোটটো ৰিছেট কৰিব পাৰে। এটা নতুন গোটত যোগদান কৰিবলৈ {NUM_DAYS} দিন সময় লাগে।}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">আপোনাৰ প্ৰশাসকৰ দ্বাৰা এপ্লিকেশ্বনটো অৱৰোধ কৰা হৈছে</translation> <translation id="3608932978122581043">ফীডৰ দিশ</translation> @@ -1198,6 +1202,7 @@ <translation id="5332219387342487447">শ্বিপিঙৰ পদ্ধতি</translation> <translation id="5333022057423422993">Chromeএ আপুনি এইমাত্ৰ ডেটা উলংঘনত ব্যৱহাৰ কৰা পাছৱৰ্ডটো বিচাৰি পাইছে। আপোনাৰ একাউণ্ট সুৰক্ষিত কৰিবলৈ, আপুনি নিজৰ ছেভ কৰি ৰখা পাছৱৰ্ড পৰীক্ষা কৰাটো আমি চুপাৰিছ কৰোঁ।</translation> <translation id="5334013548165032829">ছিষ্টেমৰ সূক্ষ্মাতিসূক্ষ্ম লগ</translation> +<translation id="5334145288572353250">ঠিকনা ছেভ কৰিবনে?</translation> <translation id="5340250774223869109">এপ্লিকেশ্বনটো অৱৰোধ কৰা হৈছে</translation> <translation id="534295439873310000">NFC ডিভাইচসমূহ</translation> <translation id="5344579389779391559">এই পৃষ্ঠাটোৱে আপোনাৰ পৰা মাচুল লোৱাৰ চেষ্টা কৰিব পাৰে</translation> @@ -1535,6 +1540,7 @@ <translation id="6671697161687535275">Chromiumৰ পৰা ফ’ৰ্মৰ পৰামৰ্শ আঁতৰাবনে?</translation> <translation id="6685834062052613830">ছাইন আউট কৰি ছেট আপ সম্পূৰ্ণ কৰক</translation> <translation id="6687335167692595844">ফ’ণ্টৰ আকাৰ অনুৰোধ কৰা হৈছে</translation> +<translation id="6688743156324860098">আপডে’ট কৰক…</translation> <translation id="6689249931105087298">ক’লা পইণ্টৰ কমপ্ৰেশ্বনৰ সৈতে আপেক্ষিক</translation> <translation id="6689271823431384964">আপুনি ছাইন ইন কৰি থোৱাৰ বাবে Chromeএ আপোনাৰ Google একাউণ্টত আপোনাৰ কার্ডসমূহ ছেভ কৰাৰ সুবিধা দিছে। আপুনি ছেটিংসমূহত এই আচৰণ সলনি কৰিব পাৰে। কাৰ্ডৰ ধাৰকৰ নামটো আপোনাৰ একাউণ্টৰ পৰা আহে।</translation> <translation id="6698381487523150993">সৃষ্টি কৰাৰ সময়:</translation> @@ -1550,6 +1556,7 @@ <translation id="6744009308914054259">সংযোগলৈ অপেক্ষা কৰি থকা সময়ত আপুনি ডাউনল’ড-লৈ গৈ অফলাইনত থকা লেখাসমূহ পঢ়িব পাৰে।</translation> <translation id="6753269504797312559">নীতিৰ মান</translation> <translation id="6757797048963528358">আপোনাৰ ডিভাইচটো সুপ্ত অৱস্থালৈ গৈছে।</translation> +<translation id="6767985426384634228">ঠিকনা আপডে’ট কৰিবনে?</translation> <translation id="6768213884286397650">হেগাকি (প'ষ্টকাৰ্ড)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">বেঙুনীয়া</translation> @@ -1707,6 +1714,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">প্ৰযোজ্য নহয়</translation> <translation id="7390545607259442187">কাৰ্ডখন নিশ্চিত কৰক</translation> +<translation id="7392089738299859607">ঠিকনা আপডে’ট কৰক</translation> <translation id="7399802613464275309">সুৰক্ষা পৰীক্ষা</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">আপোনাৰ <ph name="DEVICE_NAME" /> পৰিচালিত</translation> @@ -1844,6 +1852,7 @@ <translation id="7865448901209910068">উত্তম বেগ</translation> <translation id="7874263914261512992">আপুনি এটা প্ৰৱঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। Chromeএ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> আৰু অন্য ছাইটসমূহ, য’ত আপুনি এই পাছৱৰ্ডটো ব্যৱহাৰ কৰে সেইবিলাকত ছেভ কৰি থোৱা আপোনাৰ পাছৱৰ্ডসমূহ এতিয়াই পৰীক্ষা কৰাটো চুপাৰিছ কৰে।</translation> <translation id="7878562273885520351">আপোনাৰ পাছৱৰ্ডটো হয়তো হেক হৈছে</translation> +<translation id="7880146494886811634">ঠিকনা ছেভ কৰক</translation> <translation id="7882421473871500483">মাটীয়া</translation> <translation id="7887683347370398519">আপোনাৰ CVC পৰীক্ষা কৰি আকৌ চেষ্টা কৰক</translation> <translation id="7887885240995164102">চিত্ৰৰ ভিতৰত চিত্ৰ আৰম্ভ কৰক</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index f54446c..2d9e91d 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -533,7 +533,7 @@ <translation id="2941952326391522266">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el seu certificat de seguretat prové del domini <ph name="DOMAIN2" />. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation> <translation id="2943895734390379394">Hora de la pujada:</translation> <translation id="2948083400971632585">Podeu desactivar qualsevol servidor intermediari configurat per a una connexió des de la pàgina de configuració.</translation> -<translation id="2949183777371959169">S'ha ignorat perquè l'ordinador no s'ha inscrit amb Gestió de navegadors Chrome en núvol.</translation> +<translation id="2949183777371959169">S'ha ignorat perquè la màquina no s'ha inscrit amb Gestió de navegadors Chrome en núvol.</translation> <translation id="2951588413176968965">La meva bústia de correu</translation> <translation id="295526156371527179">Advertiment: aquesta política no s'ha combinat com a diccionari segons el que s'especifica a la política perquè no és un diccionari.</translation> <translation id="2955913368246107853">Tanca la barra de cerca</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index ce7350a..6ebc84a 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">Fach 7</translation> <translation id="204357726431741734">Anmelden, um die in Ihrem Google-Konto gespeicherten Passwörter zu verwenden</translation> <translation id="2053111141626950936">Seiten auf <ph name="LANGUAGE" /> werden nicht übersetzt.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Wenn dieses Steuerelement aktiviert und aktiv ist, bestimmt Chrome, welcher großen Personengruppe oder „Kohorte“ Ihre aktuellen Browseraktivitäten am ähnlichsten sind. Werbetreibende können Werbung für die einzelnen Gruppen auswählen und Ihre Browseraktivitäten werden sicher auf Ihrem Gerät gespeichert. Ihre Gruppe wird täglich aktualisiert.}=1{Wenn dieses Steuerelement aktiviert und aktiv ist, bestimmt Chrome, welcher großen Personengruppe oder „Kohorte“ Ihre aktuellen Browseraktivitäten am ähnlichsten sind. Werbetreibende können Werbung für die einzelnen Gruppen auswählen und Ihre Browseraktivitäten werden sicher auf Ihrem Gerät gespeichert. Ihre Gruppe wird täglich aktualisiert.}other{Wenn dieses Steuerelement aktiviert und aktiv ist, bestimmt Chrome, welcher großen Personengruppe oder „Kohorte“ Ihre aktuellen Browseraktivitäten am ähnlichsten sind. Werbetreibende können Werbung für die einzelnen Gruppen auswählen und Ihre Browseraktivitäten werden sicher auf Ihrem Gerät gespeichert. Ihre Gruppe wird alle {NUM_DAYS} Tage aktualisiert.}}</translation> <translation id="2053553514270667976">Postleitzahl</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 Vorschlag}other{# Vorschläge}}</translation> <translation id="2071692954027939183">Benachrichtigungen wurden automatisch blockiert, da Sie sie normalerweise nicht zulassen</translation> <translation id="2079545284768500474">Rückgängig machen</translation> <translation id="20817612488360358">Die System-Proxy-Einstellungen sind zur Verwendung angegeben, gleichzeitig wurde aber auch eine explizite Proxy-Konfiguration festgelegt.</translation> <translation id="2082238445998314030">Ergebnis <ph name="RESULT_NUMBER" /> von <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Speichern…</translation> <translation id="2088086323192747268">Schaltfläche zum Verwalten der Synchronisierung – drücken Sie die Eingabetaste, um in den Chrome-Einstellungen zu verwalten, welche Informationen synchronisiert werden</translation> <translation id="2091887806945687916">Ton</translation> <translation id="2094505752054353250">Domains stimmen nicht überein.</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">Angreifer können unter Umständen die Bilder sehen, die Sie sich auf dieser Website ansehen, und könnten dann versuchen, Sie durch Ändern der Bilder zu täuschen.</translation> <translation id="2356070529366658676">Nachfragen</translation> <translation id="2357481397660644965">Dein Gerät wird von <ph name="DEVICE_MANAGER" /> und dein Konto von <ph name="ACCOUNT_MANAGER" /> verwaltet.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{In weniger als einem Tag}=1{In einem Tag}other{In {NUM_DAYS} Tagen}}</translation> <translation id="2359629602545592467">Mehrere</translation> <translation id="2359808026110333948">Weiter</translation> <translation id="2359961752320758691">Ihre virtuelle Kartennummer wurde eingefügt.</translation> @@ -530,6 +533,7 @@ <translation id="2941952326391522266">Dieser Server konnte nicht beweisen, dass er <ph name="DOMAIN" /> ist. Sein Sicherheitszertifikat stammt von <ph name="DOMAIN2" />. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.</translation> <translation id="2943895734390379394">Uhrzeit des Uploads:</translation> <translation id="2948083400971632585">Sie können alle für eine Verbindung konfigurierten Proxys auf der Seite "Einstellungen" deaktivieren.</translation> +<translation id="2949183777371959169">Ignoriert, da der Computer nicht bei der Chrome-Verwaltung über die Cloud angemeldet ist.</translation> <translation id="2951588413176968965">Meine Ablage</translation> <translation id="295526156371527179">Warnung: Diese Richtlinie wurde nicht gemäß Richtlinie in einem Wörterbuch zusammengeführt, weil sie kein Wörterbuch ist.</translation> <translation id="2955913368246107853">Suchleiste schließen</translation> @@ -708,6 +712,7 @@ <translation id="3590643883886679995">Nach dem Deaktivieren des Inkognitomodus werden Anmeldedaten auf diesem Gerät gespeichert.</translation> <translation id="359126217934908072">Monat/Jahr:</translation> <translation id="3592413004129370115">Italian (Umschlag)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Sie können Ihre Gruppe jederzeit zurücksetzen. Es dauert ungefähr einen Tag, einer neuen Gruppe beizutreten.}=1{Sie können Ihre Gruppe jederzeit zurücksetzen. Es dauert ungefähr einen Tag, einer neuen Gruppe beizutreten.}other{Sie können Ihre Gruppe jederzeit zurücksetzen. Es dauert {NUM_DAYS} Tage, einer neuen Gruppe beizutreten.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">App durch Administrator blockiert</translation> <translation id="3608932978122581043">Einzugsausrichtung</translation> @@ -1189,6 +1194,7 @@ <translation id="5332219387342487447">Versandart</translation> <translation id="5333022057423422993">Chrome hat das Passwort, das Sie gerade verwendet haben, in einer Datenpanne gefunden. Wir empfehlen Ihnen, Ihre gespeicherten Passwörter zu prüfen, um Ihre Konten besser zu schützen.</translation> <translation id="5334013548165032829">Detaillierte Systemprotokolle</translation> +<translation id="5334145288572353250">Adresse speichern?</translation> <translation id="5340250774223869109">Die App ist blockiert</translation> <translation id="534295439873310000">NFC-Geräte</translation> <translation id="5344579389779391559">Auf dieser Seite wird möglicherweise versucht, Ihnen etwas in Rechnung zu stellen</translation> @@ -1528,6 +1534,7 @@ <translation id="6671697161687535275">Vorschlag für das Formular aus Chromium entfernen?</translation> <translation id="6685834062052613830">Abmelden und Einrichtung abschließen</translation> <translation id="6687335167692595844">Gewünschte Schriftgröße</translation> +<translation id="6688743156324860098">Aktualisieren…</translation> <translation id="6689249931105087298">Relativ mit Schwarzpunktkompensation</translation> <translation id="6689271823431384964">Chrome bietet Ihnen die Möglichkeit, die Karten in Ihrem Google-Konto zu speichern, weil Sie angemeldet sind. Sie können dies in den Einstellungen ändern. Der Name des Karteninhabers stammt aus Ihrem Konto.</translation> <translation id="6698381487523150993">Erstellt:</translation> @@ -1543,6 +1550,7 @@ <translation id="6744009308914054259">Während Sie auf eine Verbindung warten, können Sie "Downloads" aufrufen und Offline-Artikel lesen.</translation> <translation id="6753269504797312559">Wert der Richtlinie</translation> <translation id="6757797048963528358">Ihr Gerät ist im Ruhemodus.</translation> +<translation id="6767985426384634228">Adresse aktualisieren?</translation> <translation id="6768213884286397650">Hagaki (Postkarte)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Violett</translation> @@ -1702,6 +1710,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Nicht zutreffend</translation> <translation id="7390545607259442187">Karte bestätigen</translation> +<translation id="7392089738299859607">Adresse aktualisieren</translation> <translation id="7399802613464275309">Sicherheitscheck</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Ihr <ph name="DEVICE_NAME" /> wird verwaltet</translation> @@ -1840,6 +1849,7 @@ <translation id="7865448901209910068">Beste Geschwindigkeit</translation> <translation id="7874263914261512992">Sie haben Ihr Passwort gerade auf einer verdächtigen Seite eingegeben. Chrome empfiehlt, Ihre gespeicherten Passwörter für <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> und alle anderen Websites, auf denen Sie dieses Passwort verwenden, zu prüfen.</translation> <translation id="7878562273885520351">Ihr Passwort könnte gefährdet sein</translation> +<translation id="7880146494886811634">Adresse speichern</translation> <translation id="7882421473871500483">Braun</translation> <translation id="7887683347370398519">Prüfen Sie Ihren CVC und versuchen Sie es dann erneut.</translation> <translation id="7887885240995164102">Bild im Bild aktivieren</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 242e6e2..17fdbba 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">Bandeja 7</translation> <translation id="204357726431741734">Accede a tu Cuenta de Google para usar las contraseñas guardadas allí</translation> <translation id="2053111141626950936">No se traducirán las páginas en <ph name="LANGUAGE" />.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Si habilitas este control y su estado es "activado", Chrome determinará el grupo grande de personas, o "cohorte", al que más se asemeja tu actividad de navegación reciente. Los anunciantes podrán seleccionar los anuncios del grupo, y tu actividad de navegación se mantendrá privada en tu dispositivo. Tu grupo se actualiza todos los días.}=1{Si habilitas este control y su estado es "activado", Chrome determinará el grupo grande de personas, o "cohorte", al que más se asemeja tu actividad de navegación reciente. Los anunciantes podrán seleccionar los anuncios del grupo, y tu actividad de navegación se mantendrá privada en tu dispositivo. Tu grupo se actualiza todos los días.}other{Si habilitas este control y su estado es "activado", Chrome determinará el grupo grande de personas, o "cohorte", al que más se asemeja tu actividad de navegación reciente. Los anunciantes podrán seleccionar los anuncios del grupo, y tu actividad de navegación se mantendrá privada en tu dispositivo. Tu grupo se actualiza cada {NUM_DAYS} días.}}</translation> <translation id="2053553514270667976">Código Postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 sugerencia}other{# sugerencias}}</translation> <translation id="2071692954027939183">Se bloquearon las notificaciones de forma automática porque no sueles permitirlas.</translation> <translation id="2079545284768500474">Deshacer</translation> <translation id="20817612488360358">Se ha establecido la configuración de proxy del sistema, pero también se ha especificado una configuración explícita de proxy.</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Guardar…</translation> <translation id="2088086323192747268">Botón Administrar la sincronización: presiona Intro para administrar en la configuración de Chrome qué información sincronizar</translation> <translation id="2091887806945687916">Sonido</translation> <translation id="2094505752054353250">El dominio no coincide.</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">Es posible que los atacantes vean las imágenes que observas en este sitio y las modifiquen para engañarte.</translation> <translation id="2356070529366658676">Preguntar</translation> <translation id="2357481397660644965"><ph name="DEVICE_MANAGER" /> y <ph name="ACCOUNT_MANAGER" /> administran tu dispositivo y tu cuenta, respectivamente.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{En menos de un día}=1{En un día}other{En {NUM_DAYS} días}}</translation> <translation id="2359629602545592467">Varias</translation> <translation id="2359808026110333948">Continuar</translation> <translation id="2359961752320758691">Se aplicó tu número de tarjeta virtual.</translation> @@ -711,6 +714,7 @@ <translation id="3590643883886679995">Los datos de acceso se almacenarán en este dispositivo cuando salgas del modo Incógnito.</translation> <translation id="359126217934908072">Mes/Año:</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Puedes restablecer tu grupo en cualquier momento. Te llevará aproximadamente un día unirte a un grupo nuevo.}=1{Puedes restablecer tu grupo en cualquier momento. Te llevará aproximadamente un día unirte a un grupo nuevo.}other{Puedes restablecer tu grupo en cualquier momento. Te llevará {NUM_DAYS} días unirte a un grupo nuevo.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">El administrador bloqueó la aplicación</translation> <translation id="3608932978122581043">Orientación de la entrada</translation> @@ -1193,6 +1197,7 @@ <translation id="5332219387342487447">Método de envío</translation> <translation id="5333022057423422993">Chrome encontró la contraseña que acabas de usar en una violación de la seguridad de los datos. Para proteger tus cuentas, te recomendamos revisar las contraseñas guardadas.</translation> <translation id="5334013548165032829">Registros detallados del sistema</translation> +<translation id="5334145288572353250">¿Deseas guardar la dirección?</translation> <translation id="5340250774223869109">Se bloqueó la app</translation> <translation id="534295439873310000">Dispositivos NFC</translation> <translation id="5344579389779391559">Es posible que esta página intente cobrarte dinero</translation> @@ -1532,6 +1537,7 @@ <translation id="6671697161687535275">¿Confirmas que quieres quitar la sugerencia de formulario de Chromium?</translation> <translation id="6685834062052613830">Salir y completar la configuración</translation> <translation id="6687335167692595844">Se necesita el tamaño de la fuente</translation> +<translation id="6688743156324860098">Actualizar…</translation> <translation id="6689249931105087298">Relativo con la compresión de puntos negros</translation> <translation id="6689271823431384964">Como accediste a tu Cuenta de Google, Chrome te ofrece guardar tus tarjetas allí. Puedes modificar este comportamiento en la configuración. El nombre del titular de la tarjeta se obtiene de tu cuenta.</translation> <translation id="6698381487523150993">Creado:</translation> @@ -1547,6 +1553,7 @@ <translation id="6744009308914054259">Mientras esperas a que se restablezca la conexión, puedes visitar Descargas para leer artículos sin conexión.</translation> <translation id="6753269504797312559">Valor de la política</translation> <translation id="6757797048963528358">El dispositivo se suspendió.</translation> +<translation id="6767985426384634228">¿Deseas actualizar la dirección?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Violeta</translation> @@ -1706,6 +1713,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">No aplicable</translation> <translation id="7390545607259442187">Confirmar tarjeta</translation> +<translation id="7392089738299859607">Actualizar dirección</translation> <translation id="7399802613464275309">Verificación de seguridad</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Tu <ph name="DEVICE_NAME" /> está administrado</translation> @@ -1844,6 +1852,7 @@ <translation id="7865448901209910068">Mejor velocidad</translation> <translation id="7874263914261512992">Ingresaste tu contraseña en un sitio engañoso. Chrome te recomienda revisar las contraseñas guardadas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios donde uses esta contraseña.</translation> <translation id="7878562273885520351">Es posible que tu contraseña esté en peligro</translation> +<translation id="7880146494886811634">Guardar dirección</translation> <translation id="7882421473871500483">Marrón</translation> <translation id="7887683347370398519">Verifica tu CVC y vuelve a intentarlo.</translation> <translation id="7887885240995164102">Ingresar al modo de pantalla en pantalla</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 9de10cd..60df27b 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -39,7 +39,7 @@ <translation id="1107591249535594099">Si se selecciona, Chrome almacenará una copia de tu tarjeta en este dispositivo para completar formularios más rápidamente.</translation> <translation id="1110994991967754504">Seleccionar permiso de <ph name="PERMISSION_NAME" /></translation> <translation id="1113869188872983271">&Deshacer reorganización</translation> -<translation id="1123753900084781868">La función Subtítulos instantáneos no está disponible en estos momentos</translation> +<translation id="1123753900084781868">Subtítulos automáticos no está disponible en estos momentos</translation> <translation id="1125573121925420732">Es probable que se muestren advertencias mientras se actualiza la seguridad de los sitios web, pero pronto se solucionará.</translation> <translation id="112840717907525620">Caché de política correcta</translation> <translation id="1130564665089811311">Botón Traducir página, pulsa Intro para traducir esta página con el Traductor de Google</translation> @@ -308,12 +308,14 @@ <translation id="2042213636306070719">Bandeja 7</translation> <translation id="204357726431741734">Inicia sesión para poder usar las contraseñas guardadas en tu cuenta de Google</translation> <translation id="2053111141626950936">No se traducirán las páginas en <ph name="LANGUAGE" />.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Cuando el control está habilitado y en estado activo, Chrome determina qué grupo de personas o "cohorte" encaja mejor con tu actividad de navegación reciente. Los anunciantes pueden seleccionar anuncios para el grupo, y tu actividad de navegación se conservará en tu dispositivo y será privada. Tu grupo se actualiza todos los días.}=1{Cuando el control está habilitado y en estado activo, Chrome determina qué grupo de personas o "cohorte" encaja mejor con tu actividad de navegación reciente. Los anunciantes pueden seleccionar anuncios para el grupo, y tu actividad de navegación se conservará en tu dispositivo y será privada. Tu grupo se actualiza todos los días.}other{Cuando el control está habilitado y en estado activo, Chrome determina qué grupo de personas o "cohorte" encaja mejor con tu actividad de navegación reciente. Los anunciantes pueden seleccionar anuncios para el grupo, y tu actividad de navegación se conservará en tu dispositivo y será privada. Tu grupo se actualiza cada {NUM_DAYS} días.}}</translation> <translation id="2053553514270667976">Código postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{Una sugerencia}other{# sugerencias}}</translation> <translation id="2071692954027939183">Se han bloqueado automáticamente las notificaciones porque no las sueles permitir.</translation> <translation id="2079545284768500474">Deshacer</translation> <translation id="20817612488360358">Se ha establecido la configuración del proxy del sistema, pero también se han especificado ajustes de proxy explícitos.</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Guardar…</translation> <translation id="2088086323192747268">Botón Gestionar sincronización, pulsa Intro para gestionar la información que sincronizas en la configuración de Chrome</translation> <translation id="2091887806945687916">Sonido</translation> <translation id="2094505752054353250">El dominio no coincide</translation> @@ -394,6 +396,7 @@ <translation id="2355395290879513365">Es posible que los atacantes puedan ver las imágenes que ves en este sitio web y que las modifiquen para engañarte.</translation> <translation id="2356070529366658676">Preguntar</translation> <translation id="2357481397660644965"><ph name="DEVICE_MANAGER" /> gestiona tu dispositivo y <ph name="ACCOUNT_MANAGER" /> gestiona tu cuenta.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Dentro de menos de un día}=1{Dentro de un día}other{Dentro de {NUM_DAYS} días}}</translation> <translation id="2359629602545592467">Varias</translation> <translation id="2359808026110333948">Continuar</translation> <translation id="2359961752320758691">Número de tu tarjeta virtual aplicado.</translation> @@ -716,6 +719,7 @@ <translation id="3590643883886679995">Los datos de inicio de sesión se almacenarán en este dispositivo cuando salgas del modo de incógnito.</translation> <translation id="359126217934908072">Mes/año:</translation> <translation id="3592413004129370115">Italian (sobre)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Puedes restablecer tu grupo en cualquier momento. Se tarda alrededor de un día en unirse a un nuevo grupo.}=1{Puedes restablecer tu grupo en cualquier momento. Se tarda alrededor de un día en unirse a un nuevo grupo.}other{Puedes restablecer tu grupo en cualquier momento. Se tardan {NUM_DAYS} días en unirse a un nuevo grupo.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Tu administrador ha bloqueado esta aplicación</translation> <translation id="3608932978122581043">Orientación de entrada</translation> @@ -1203,6 +1207,7 @@ <translation id="5332219387342487447">Método de envío</translation> <translation id="5333022057423422993">Chrome ha detectado que la contraseña que acabas de usar se ha visto expuesta en una quiebra de seguridad de datos. Para proteger tus cuentas, te recomendamos que compruebes las contraseñas que tengas guardadas.</translation> <translation id="5334013548165032829">Registros detallados del sistema</translation> +<translation id="5334145288572353250">¿Guardar dirección?</translation> <translation id="5340250774223869109">Se ha bloqueado la aplicación</translation> <translation id="534295439873310000">Dispositivos NFC</translation> <translation id="5344579389779391559">Es posible que esta página intente aplicar algún cargo</translation> @@ -1542,6 +1547,7 @@ <translation id="6671697161687535275">¿Quitar sugerencia de formulario de Chromium?</translation> <translation id="6685834062052613830">Cierra sesión y completa la configuración</translation> <translation id="6687335167692595844">Tamaño de fuente solicitado</translation> +<translation id="6688743156324860098">Actualizar…</translation> <translation id="6689249931105087298">Relativo con compresión de puntos negros</translation> <translation id="6689271823431384964">Chrome te ofrece guardar las tarjetas en tu cuenta de Google porque has iniciado sesión. Puedes cambiar esta opción en los ajustes. El nombre del titular procede de tu cuenta.</translation> <translation id="6698381487523150993">Creado:</translation> @@ -1557,6 +1563,7 @@ <translation id="6744009308914054259">Mientras esperas a que haya conexión, puedes ir a Descargas para leer artículos sin conexión.</translation> <translation id="6753269504797312559">Valor de la política</translation> <translation id="6757797048963528358">El dispositivo se ha suspendido.</translation> +<translation id="6767985426384634228">¿Actualizar dirección?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Violeta</translation> @@ -1716,6 +1723,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">No aplicable</translation> <translation id="7390545607259442187">Confirmar tarjeta</translation> +<translation id="7392089738299859607">Actualizar dirección</translation> <translation id="7399802613464275309">Comprobación de seguridad</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Tu <ph name="DEVICE_NAME" /> está administrado</translation> @@ -1854,6 +1862,7 @@ <translation id="7865448901209910068">Mejor velocidad</translation> <translation id="7874263914261512992">Acabas de escribir tu contraseña en un sitio web engañoso. Chrome te recomienda que compruebes las contraseñas que has guardado en <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y otros sitios en los que uses esta contraseña.</translation> <translation id="7878562273885520351">Es posible que tu contraseña se haya vulnerado</translation> +<translation id="7880146494886811634">Guardar dirección</translation> <translation id="7882421473871500483">Marrón</translation> <translation id="7887683347370398519">Comprueba el código CVC y vuelve a intentarlo</translation> <translation id="7887885240995164102">Activar el modo imagen en imagen</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 398e8dad..55d6726 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -308,12 +308,14 @@ <translation id="2042213636306070719">Bac 7</translation> <translation id="204357726431741734">Connectez-vous pour utiliser les mots de passe enregistrés dans votre compte Google</translation> <translation id="2053111141626950936">Les pages en <ph name="LANGUAGE" /> ne seront pas traduites.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Lorsque cette option est activée et que son état est actif, Chrome détermine le groupe de personnes, ou "cohorte", le plus semblable à votre activité de navigation récente. Les annonceurs peuvent sélectionner des annonces pour ce groupe. Votre activité de navigation restera privée sur cet appareil. Votre groupe est mis à jour tous les jours.}=1{Lorsque cette option est activée et que son état est actif, Chrome détermine le groupe de personnes, ou "cohorte", le plus semblable à votre activité de navigation récente. Les annonceurs peuvent sélectionner des annonces pour ce groupe. Votre activité de navigation restera privée sur cet appareil. Votre groupe est mis à jour tous les jours.}one{Lorsque cette option est activée et que son état est actif, Chrome détermine le groupe de personnes, ou "cohorte", le plus semblable à votre activité de navigation récente. Les annonceurs peuvent sélectionner des annonces pour ce groupe. Votre activité de navigation restera privée sur cet appareil. Votre groupe est mis à jour {NUM_DAYS} fois par jour.}other{Lorsque cette option est activée et que son état est actif, Chrome détermine le groupe de personnes, ou "cohorte", le plus semblable à votre activité de navigation récente. Les annonceurs peuvent sélectionner des annonces pour ce groupe. Votre activité de navigation restera privée sur cet appareil. Votre groupe est mis à jour tous les {NUM_DAYS} jours.}}</translation> <translation id="2053553514270667976">Code postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestion}one{# suggestion}other{# suggestions}}</translation> <translation id="2071692954027939183">Notifications bloquées automatiquement, car vous les refusez d'habitude</translation> <translation id="2079545284768500474">Annuler</translation> <translation id="20817612488360358">Les paramètres de proxy du système sont configurés pour être utilisés, mais une configuration de proxy explicite est également spécifiée.</translation> <translation id="2082238445998314030">Résultat <ph name="RESULT_NUMBER" /> sur <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Enregistrer…</translation> <translation id="2088086323192747268">Bouton "Gérer la synchronisation" : appuyez sur Entrée pour gérer les infos que vous synchronisez dans les paramètres Chrome</translation> <translation id="2091887806945687916">Son</translation> <translation id="2094505752054353250">Le domaine ne correspond pas</translation> @@ -394,6 +396,7 @@ <translation id="2355395290879513365">Il se peut que des pirates informatiques puissent voir les images que vous regardez sur ce site et vous piègent en les modifiant.</translation> <translation id="2356070529366658676">Demander</translation> <translation id="2357481397660644965">Votre appareil est géré par <ph name="DEVICE_MANAGER" />, et votre compte par <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Dans moins de 1 jour}=1{Dans 1 jour}one{Dans {NUM_DAYS} jour}other{Dans {NUM_DAYS} jours}}</translation> <translation id="2359629602545592467">Plusieurs</translation> <translation id="2359808026110333948">Continuer</translation> <translation id="2359961752320758691">Votre numéro de carte virtuelle a été utilisé.</translation> @@ -714,6 +717,7 @@ <translation id="3590643883886679995">Les données de connexion seront stockées sur l'appareil lorsque vous aurez quitté le mode navigation privée.</translation> <translation id="359126217934908072">Mois/Année :</translation> <translation id="3592413004129370115">Italian (enveloppe)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Vous pouvez réinitialiser votre groupe à tout moment. Comptez environ une journée pour rejoindre un nouveau groupe.}=1{Vous pouvez réinitialiser votre groupe à tout moment. Comptez environ une journée pour rejoindre un nouveau groupe.}one{Vous pouvez réinitialiser votre groupe à tout moment. Comptez {NUM_DAYS} jour pour rejoindre un nouveau groupe.}other{Vous pouvez réinitialiser votre groupe à tout moment. Comptez {NUM_DAYS} jours pour rejoindre un nouveau groupe.}}</translation> <translation id="3600246354004376029">"<ph name="TITLE" />", <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Application bloquée par votre administrateur</translation> <translation id="3608932978122581043">Orientation de l'alimentation</translation> @@ -1201,6 +1205,7 @@ <translation id="5332219387342487447">Mode de livraison</translation> <translation id="5333022057423422993">Chrome a trouvé le mot de passe que vous venez d'utiliser lors d'une violation de données. Pour la sécurité de vos comptes, nous vous recommandons de vérifier immédiatement vos mots de passe enregistrés.</translation> <translation id="5334013548165032829">Journaux système détaillés</translation> +<translation id="5334145288572353250">Enregistrer l'adresse ?</translation> <translation id="5340250774223869109">Application bloquée</translation> <translation id="534295439873310000">Appareils NFC</translation> <translation id="5344579389779391559">L'accès à la page suivante peut engendrer des frais</translation> @@ -1540,6 +1545,7 @@ <translation id="6671697161687535275">Supprimer la suggestion de saisie de formulaire de Chromium ?</translation> <translation id="6685834062052613830">Déconnectez-vous et complétez la configuration.</translation> <translation id="6687335167692595844">Taille de police demandée</translation> +<translation id="6688743156324860098">Mettre à jour…</translation> <translation id="6689249931105087298">Valeur relative avec compression des points noirs</translation> <translation id="6689271823431384964">Chrome propose d'enregistrer vos cartes dans votre compte Google, car vous êtes connecté. Vous pouvez modifier ce comportement dans les paramètres. Le nom du titulaire de la carte provient de votre compte.</translation> <translation id="6698381487523150993">Créé :</translation> @@ -1555,6 +1561,7 @@ <translation id="6744009308914054259">En attendant d'avoir une connexion, vous pouvez consulter les téléchargements pour lire des articles hors connexion.</translation> <translation id="6753269504797312559">Valeur de la règle</translation> <translation id="6757797048963528358">Votre appareil s'est mis en veille.</translation> +<translation id="6767985426384634228">Modifier l'adresse ?</translation> <translation id="6768213884286397650">Hagaki (carte postale)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Mauve</translation> @@ -1714,6 +1721,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Non applicable</translation> <translation id="7390545607259442187">Valider la carte</translation> +<translation id="7392089738299859607">Modifier l'adresse</translation> <translation id="7399802613464275309">Contrôle de sécurité</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Votre <ph name="DEVICE_NAME" /> est géré</translation> @@ -1852,6 +1860,7 @@ <translation id="7865448901209910068">Vitesse optimale</translation> <translation id="7874263914261512992">Vous venez de saisir votre mot de passe sur un site trompeur. Chrome vous recommande de vérifier vos mots de passe enregistrés pour <ph name="WEBSITE_1" /> et <ph name="WEBSITE_2" />, ainsi que les autres sites pour lesquels vous utilisez ce mot de passe actuellement.</translation> <translation id="7878562273885520351">Votre mot de passe a peut-être été piraté</translation> +<translation id="7880146494886811634">Enregistrer l'adresse</translation> <translation id="7882421473871500483">Marron</translation> <translation id="7887683347370398519">Veuillez vérifier votre code CVC et réessayer.</translation> <translation id="7887885240995164102">Utiliser le mode Picture-in-picture</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 25c2ddc..2ac1024 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">Baki 7</translation> <translation id="204357726431741734">Login untuk menggunakan sandi yang disimpan di Akun Google Anda</translation> <translation id="2053111141626950936">Halaman dalam bahasa <ph name="LANGUAGE" /> tidak akan diterjemahkan.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Jika kontrol ini aktif dan statusnya masih berlaku, Chrome akan menentukan grup besar, atau "kohor", yang paling mirip dengan aktivitas penjelajahan terbaru Anda. Pengiklan dapat memilih iklan untuk grup tersebut dan aktivitas penjelajahan Anda tetap bersifat pribadi di perangkat Anda. Grup Anda diperbarui setiap hari.}=1{Jika kontrol ini aktif dan statusnya masih berlaku, Chrome akan menentukan grup besar, atau "kohor", yang paling mirip dengan aktivitas penjelajahan terbaru Anda. Pengiklan dapat memilih iklan untuk grup tersebut dan aktivitas penjelajahan Anda tetap bersifat pribadi di perangkat Anda. Grup Anda diperbarui setiap hari.}other{Jika kontrol ini aktif dan statusnya masih berlaku, Chrome akan menentukan grup besar, atau "kohor", yang paling mirip dengan aktivitas penjelajahan terbaru Anda. Pengiklan dapat memilih iklan untuk grup tersebut dan aktivitas penjelajahan Anda tetap bersifat pribadi di perangkat Anda. Grup Anda diperbarui setiap {NUM_DAYS} hari.}}</translation> <translation id="2053553514270667976">Kode pos</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 saran}other{# saran}}</translation> <translation id="2071692954027939183">Notifikasi otomatis diblokir karena Anda biasanya tidak mengizinkannya</translation> <translation id="2079545284768500474">Urungkan</translation> <translation id="20817612488360358">Setelan proxy sistem disetel untuk digunakan namun konfigurasi proxy eksplisit juga ditentukan.</translation> <translation id="2082238445998314030">Hasil <ph name="RESULT_NUMBER" /> dari <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Simpan …</translation> <translation id="2088086323192747268">Tombol Kelola sinkronisasi, tekan Enter untuk mengelola info apa saja yang Anda sinkronkan di setelan Chrome</translation> <translation id="2091887806945687916">Suara</translation> <translation id="2094505752054353250">Ketidakcocokan domain</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">Penyerang mungkin dapat melihat gambar yang sedang Anda lihat di situs dan mengelabui Anda dengan memodifikasinya.</translation> <translation id="2356070529366658676">Tanya</translation> <translation id="2357481397660644965">Perangkat Anda dikelola oleh <ph name="DEVICE_MANAGER" /> dan akun Anda dikelola oleh <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Dalam waktu kurang dari 1 hari}=1{Dalam waktu 1 hari}other{Dalam waktu {NUM_DAYS} hari}}</translation> <translation id="2359629602545592467">Beberapa</translation> <translation id="2359808026110333948">Lanjutkan</translation> <translation id="2359961752320758691">Nomor kartu virtual Anda diterapkan.</translation> @@ -711,6 +714,7 @@ <translation id="3590643883886679995">Data login akan disimpan di perangkat ini setelah Anda keluar dari mode Samaran.</translation> <translation id="359126217934908072">Bulan/Tahun:</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Anda dapat mereset grup kapan saja. Perlu waktu sekitar 1 hari untuk bergabung ke grup baru.}=1{Anda dapat mereset grup kapan saja. Perlu waktu sekitar 1 hari untuk bergabung ke grup baru.}other{Anda dapat mereset grup kapan saja. Perlu waktu sekitar {NUM_DAYS} hari untuk bergabung ke grup baru.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Aplikasi diblokir oleh administrator Anda</translation> <translation id="3608932978122581043">Feed orientasi</translation> @@ -1193,6 +1197,7 @@ <translation id="5332219387342487447">Metode Pengiriman</translation> <translation id="5333022057423422993">Chrome menemukan sandi yang baru saja Anda gunakan dalam pelanggaran data. Untuk mengamankan akun, sebaiknya periksa sandi tersimpan Anda.</translation> <translation id="5334013548165032829">Log sistem mendetail</translation> +<translation id="5334145288572353250">Simpan Alamat?</translation> <translation id="5340250774223869109">Aplikasi diblokir</translation> <translation id="534295439873310000">Perangkat NFC</translation> <translation id="5344579389779391559">Halaman ini mungkin mencoba menagih Anda</translation> @@ -1532,6 +1537,7 @@ <translation id="6671697161687535275">Hapus saran formulir dari Chromium?</translation> <translation id="6685834062052613830">Keluar dan selesaikan penyiapan</translation> <translation id="6687335167692595844">Ukuran font diminta</translation> +<translation id="6688743156324860098">Perbarui …</translation> <translation id="6689249931105087298">Relatif dengan kompresi titik hitam</translation> <translation id="6689271823431384964">Chrome menawarkan untuk menyimpan informasi kartu ke Akun Google Anda karena Anda sedang login. Anda dapat mengubah perilaku ini di setelan. Nama pemegang kartu berasal dari akun Anda.</translation> <translation id="6698381487523150993">Dibuat:</translation> @@ -1547,6 +1553,7 @@ <translation id="6744009308914054259">Sambil menunggu koneksi, Anda dapat mengunjungi Hasil Download untuk membaca artikel secara offline.</translation> <translation id="6753269504797312559">Nilai kebijakan</translation> <translation id="6757797048963528358">Perangkat Anda sedang dalam mode tidur.</translation> +<translation id="6767985426384634228">Perbarui Alamat?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Violet</translation> @@ -1704,6 +1711,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Tidak berlaku</translation> <translation id="7390545607259442187">Konfirmasi Kartu</translation> +<translation id="7392089738299859607">Perbarui Alamat</translation> <translation id="7399802613464275309">Pemeriksaan Keselamatan</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120"><ph name="DEVICE_NAME" /> Anda dikelola</translation> @@ -1842,6 +1850,7 @@ <translation id="7865448901209910068">Paling cepat</translation> <translation id="7874263914261512992">Anda baru saja memasukkan sandi ke situs penipuan. Chrome merekomendasikan Anda memeriksa sandi yang disimpan untuk <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, dan situs lain tempat Anda menggunakan sandi ini sekarang.</translation> <translation id="7878562273885520351">Sandi Anda mungkin disusupi</translation> +<translation id="7880146494886811634">Simpan Alamat</translation> <translation id="7882421473871500483">Cokelat</translation> <translation id="7887683347370398519">Periksa CVC dan coba lagi</translation> <translation id="7887885240995164102">Masuk ke mode picture-in-picture</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index d606b9a..75f823e 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -308,12 +308,14 @@ <translation id="2042213636306070719">Vassoio 7</translation> <translation id="204357726431741734">Accedi per usare le password salvate nel tuo Account Google</translation> <translation id="2053111141626950936">Le pagine in <ph name="LANGUAGE" /> non verranno tradotte.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Quando questo controllo è attivato e lo stato è attivo, Chrome stabilisce a quale "coorte" (un gruppo numeroso di utenti) è più simile la tua attività di navigazione. Gli inserzionisti possono selezionare gli annunci per il gruppo e la tua attività di navigazione rimane privata sul tuo dispositivo. Il tuo gruppo viene aggiornato ogni giorno.}=1{Quando questo controllo è attivato e lo stato è attivo, Chrome stabilisce a quale "coorte" (un gruppo numeroso di utenti) è più simile la tua attività di navigazione. Gli inserzionisti possono selezionare gli annunci per il gruppo e la tua attività di navigazione rimane privata sul tuo dispositivo. Il tuo gruppo viene aggiornato ogni giorno.}other{Quando questo controllo è attivato e lo stato è attivo, Chrome stabilisce a quale "coorte" (un gruppo numeroso di utenti) è più simile la tua attività di navigazione. Gli inserzionisti possono selezionare gli annunci per il gruppo e la tua attività di navigazione rimane privata sul tuo dispositivo. Il tuo gruppo viene aggiornato ogni {NUM_DAYS} giorni}}</translation> <translation id="2053553514270667976">ZIP</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggerimento}other{# suggerimenti}}</translation> <translation id="2071692954027939183">Le notifiche sono state automaticamente bloccate perché solitamente non le consenti</translation> <translation id="2079545284768500474">Annulla</translation> <translation id="20817612488360358">Devono essere utilizzate le impostazioni del proxy di sistema ma è stata specificata anche una configurazione proxy esplicita.</translation> <translation id="2082238445998314030">Risultato <ph name="RESULT_NUMBER" /> di <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Salva…</translation> <translation id="2088086323192747268">Pulsante Gestisci sincronizzazione: premi Invio per gestire le informazioni da sincronizzare nelle impostazioni di Chrome</translation> <translation id="2091887806945687916">Audio</translation> <translation id="2094505752054353250">Dominio non corrispondente</translation> @@ -394,6 +396,7 @@ <translation id="2355395290879513365">Gli utenti malintenzionati potrebbero riuscire a vedere le immagini che visualizzi in questo sito e ingannarti modificandole.</translation> <translation id="2356070529366658676">Chiedi</translation> <translation id="2357481397660644965">Il tuo dispositivo è gestito da <ph name="DEVICE_MANAGER" /> e il tuo account da <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Tra meno di un giorno}=1{Tra un giorno}other{Tra {NUM_DAYS} giorni}}</translation> <translation id="2359629602545592467">Multiple</translation> <translation id="2359808026110333948">Continua</translation> <translation id="2359961752320758691">Il numero della tua carta virtuale è stato utilizzato.</translation> @@ -713,6 +716,7 @@ <translation id="3590643883886679995">I dati di accesso verranno memorizzati su questo dispositivo quando uscirai dalla modalità di navigazione in incognito.</translation> <translation id="359126217934908072">Mese/anno:</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Puoi reimpostare il tuo gruppo in qualsiasi momento. Ci vorrà circa un giorno per unirsi a un nuovo gruppo.}=1{Puoi reimpostare il tuo gruppo in qualsiasi momento. Ci vorrà circa un giorno per unirsi a un nuovo gruppo.}other{Puoi reimpostare il tuo gruppo in qualsiasi momento. Ci vorranno {NUM_DAYS} giorni per unirsi a un nuovo gruppo.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Applicazione bloccata dal tuo amministratore</translation> <translation id="3608932978122581043">Fornisci orientamento</translation> @@ -1200,6 +1204,7 @@ <translation id="5332219387342487447">Modalità di spedizione</translation> <translation id="5333022057423422993">Chrome ha rilevato che la password appena usata è stata esposta a una violazione dei dati. Per proteggere i tuoi account, ti consigliamo di controllare le password che hai salvato.</translation> <translation id="5334013548165032829">Log di sistema dettagliati</translation> +<translation id="5334145288572353250">Vuoi salvare l'indirizzo?</translation> <translation id="5340250774223869109">L'applicazione è bloccata</translation> <translation id="534295439873310000">Dispositivi NFC</translation> <translation id="5344579389779391559">Questa pagina potrebbe tentare di addebitarti dei costi</translation> @@ -1538,6 +1543,7 @@ <translation id="6671697161687535275">Rimuovere il suggerimento per i moduli da Chromium?</translation> <translation id="6685834062052613830">Esci e completa la configurazione</translation> <translation id="6687335167692595844">Dimensioni carattere richieste</translation> +<translation id="6688743156324860098">Aggiorna…</translation> <translation id="6689249931105087298">Relativo con compressione del punto nero</translation> <translation id="6689271823431384964">Chrome chiede se vuoi salvare le tue carte nel tuo Account Google perché hai eseguito l'accesso. Puoi modificare questo comportamento nelle impostazioni. Il nome del titolare della carta proviene dal tuo account.</translation> <translation id="6698381487523150993">Data creazione:</translation> @@ -1553,6 +1559,7 @@ <translation id="6744009308914054259">In attesa di una connessione, puoi visitare la pagina Download per leggere gli articoli offline.</translation> <translation id="6753269504797312559">Valore criterio</translation> <translation id="6757797048963528358">Il dispositivo è entrato in modalità sospensione.</translation> +<translation id="6767985426384634228">Vuoi aggiornare l'indirizzo?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Lilla</translation> @@ -1712,6 +1719,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Non applicabile</translation> <translation id="7390545607259442187">Conferma della carta</translation> +<translation id="7392089738299859607">Aggiorna indirizzo</translation> <translation id="7399802613464275309">Controllo sicurezza</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Il tuo dispositivo <ph name="DEVICE_NAME" /> è gestito</translation> @@ -1850,6 +1858,7 @@ <translation id="7865448901209910068">Massima velocità</translation> <translation id="7874263914261512992">Hai appena inserito la tua password su un sito ingannevole. Chrome ti consiglia di controllare le password salvate per <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e altri siti su cui utilizzi questa password.</translation> <translation id="7878562273885520351">La tua password potrebbe essere stata compromessa</translation> +<translation id="7880146494886811634">Salva indirizzo</translation> <translation id="7882421473871500483">Marrone</translation> <translation id="7887683347370398519">Controlla il tuo codice CVC e riprova</translation> <translation id="7887885240995164102">Attiva Picture in picture</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index d65454d..43b86d30 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">トレイ 7</translation> <translation id="204357726431741734">Google アカウントに保存したパスワードを使用するには、ログインしてください</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" />のページは翻訳されません。</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{このコントロールをオンにして、ステータスが有効な場合、Chrome では、最近の閲覧アクティビティが類似しているユーザーが「コホート」という多人数のグループに分類されます。広告主はこのグループに対して広告を表示するように設定できる一方、ユーザーの閲覧アクティビティはデバイスに保存されてプライバシーが保たれます。なお、このグループは毎日更新されます。}=1{このコントロールをオンにして、ステータスが有効な場合、Chrome では、最近の閲覧アクティビティが類似しているユーザーが「コホート」という多人数のグループに分類されます。広告主はこのグループに対して広告を表示するように設定できる一方、ユーザーの閲覧アクティビティはデバイスに保存されてプライバシーが保たれます。なお、このグループは毎日更新されます。}other{このコントロールをオンにして、ステータスが有効な場合、Chrome では、最近の閲覧アクティビティが類似しているユーザーが「コホート」という多人数のグループに分類されます。広告主はこのグループに対して広告を表示するように設定できる一方、ユーザーの閲覧アクティビティはデバイスに保存されてプライバシーが保たれます。なお、このグループは {NUM_DAYS} 日ごとに更新されます。}}</translation> <translation id="2053553514270667976">郵便番号</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 件の候補}other{# 件の候補}}</translation> <translation id="2071692954027939183">普段は通知を許可されないようですので、通知を自動的にブロックしました</translation> <translation id="2079545284768500474">元に戻す</translation> <translation id="20817612488360358">システム プロキシ設定を使用するように設定されていますが、明示的なプロキシの設定も指定されています。</translation> <translation id="2082238445998314030">結果 <ph name="TOTAL_RESULTS" /> 件中 <ph name="RESULT_NUMBER" /> 件目</translation> +<translation id="2085876078937250610">保存…</translation> <translation id="2088086323192747268">同期を管理するボタンです。Enter キーを押して、Chrome の設定で同期する情報を管理します</translation> <translation id="2091887806945687916">音声</translation> <translation id="2094505752054353250">ドメインが一致しません</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">このサイトで目にする画像は、悪意のあるユーザーによって差し替えられたものである可能性があります。</translation> <translation id="2356070529366658676">確認する</translation> <translation id="2357481397660644965">ご使用のデバイスは <ph name="DEVICE_MANAGER" /> で管理され、アカウントは <ph name="ACCOUNT_MANAGER" /> で管理されています。</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{1 日以内}=1{1 日後}other{{NUM_DAYS} 日後}}</translation> <translation id="2359629602545592467">複数</translation> <translation id="2359808026110333948">続行</translation> <translation id="2359961752320758691">仮想カード番号を適用しました。</translation> @@ -710,6 +713,7 @@ <translation id="3590643883886679995">ログインデータはシークレット モードの終了後にこのデバイスに保存されます。</translation> <translation id="359126217934908072">月 / 年:</translation> <translation id="3592413004129370115">Italian(封筒)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{グループはいつでもリセットできます。新しいグループに分類されるまでには約 1 日かかります。}=1{グループはいつでもリセットできます。新しいグループに分類されるまでには約 1 日かかります。}other{グループはいつでもリセットできます。新しいグループに分類されるまでには {NUM_DAYS} 日かかります。}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />、<ph name="DOMAIN" />、<ph name="TIME" /></translation> <translation id="3603507503523709">アプリケーションは管理者によってブロックされています</translation> <translation id="3608932978122581043">給紙方向</translation> @@ -1192,6 +1196,7 @@ <translation id="5332219387342487447">配送方法</translation> <translation id="5333022057423422993">最近使用したパスワードがデータ侵害で検出されました。アカウントを保護するため、保存したパスワードを確認することをおすすめします。</translation> <translation id="5334013548165032829">詳細なシステムログ</translation> +<translation id="5334145288572353250">住所を保存しますか?</translation> <translation id="5340250774223869109">アプリケーションがブロックされました</translation> <translation id="534295439873310000">NFC デバイス</translation> <translation id="5344579389779391559">このページでは課金される恐れがあります</translation> @@ -1531,6 +1536,7 @@ <translation id="6671697161687535275">Chromium から候補を削除してもよろしいですか?</translation> <translation id="6685834062052613830">ログアウトして設定を完了してください</translation> <translation id="6687335167692595844">リクエストされたフォントサイズ</translation> +<translation id="6688743156324860098">更新…</translation> <translation id="6689249931105087298">相対的(黒点の補正あり)</translation> <translation id="6689271823431384964">ログインしている場合は、その Google アカウントにカードを保存できます。この動作は設定で変更できます。カード名義人はアカウントから取得されます。</translation> <translation id="6698381487523150993">作成:</translation> @@ -1546,6 +1552,7 @@ <translation id="6744009308914054259">接続するまでの間、[ダウンロード] に移動してオフラインで記事を読むことができます。</translation> <translation id="6753269504797312559">ポリシーの値</translation> <translation id="6757797048963528358">デバイスがスリープ状態です。</translation> +<translation id="6767985426384634228">住所を更新しますか?</translation> <translation id="6768213884286397650">はがき</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">バイオレット</translation> @@ -1705,6 +1712,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">該当なし</translation> <translation id="7390545607259442187">カードの確認</translation> +<translation id="7392089738299859607">住所を更新</translation> <translation id="7399802613464275309">安全確認</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">ご使用の <ph name="DEVICE_NAME" /> は管理されています</translation> @@ -1843,6 +1851,7 @@ <translation id="7865448901209910068">最高速度</translation> <translation id="7874263914261512992">偽のサイトでパスワードを入力しました。<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> のほか、このパスワードを使用しているサイトで、保存したパスワードを今すぐ確認することをおすすめします。</translation> <translation id="7878562273885520351">パスワードが不正使用される可能性があります</translation> +<translation id="7880146494886811634">住所を保存</translation> <translation id="7882421473871500483">茶</translation> <translation id="7887683347370398519">CVC を確認してからもう一度お試しください</translation> <translation id="7887885240995164102">ピクチャー イン ピクチャーを開始</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index 88ac2e8..722ffac 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -40,7 +40,7 @@ <translation id="1110994991967754504"><ph name="PERMISSION_NAME" /> уруксатын тандоо</translation> <translation id="1113869188872983271">Иреттештирүүнү &жасабоо</translation> <translation id="1123753900084781868">Ыкчам коштомо жазуулар учурда жеткиликтүү эмес</translation> -<translation id="1125573121925420732">Вебсайттардын коопсуздук шарттары жаңыртылып жатканда, эскертүүлөр көп жолу көрсөтүлүшү мүмкүн. Бул убактылуу көрүнүш.</translation> +<translation id="1125573121925420732">Вебсайттардын коопсуздук шарттары жаңыртылып жатканда, эскертүүлөр көп жолу көрүнүшү мүмкүн. Бул убактылуу көрүнүш.</translation> <translation id="112840717907525620">Саясат кеши OK</translation> <translation id="1130564665089811311">Баракты которуу баскычы, бул баракты Google Котормочу менен которуу үчүн, Enter баскычын басыңыз</translation> <translation id="1131264053432022307">Сиз көчүргөн сүрөт</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index eb055a01..adca132 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -807,7 +807,7 @@ <translation id="3909477809443608991"><ph name="URL" /> сака да пушти заштитени содржини. Google ќе го потврди идентитетот на вашиот уред, а сајтов ќе може да пристапи до него.</translation> <translation id="3909695131102177774"><ph name="LABEL" /> <ph name="ERROR" /></translation> <translation id="3939773374150895049">Да се користи WebAuthn наместо CVC?</translation> -<translation id="3946209740501886391">Секогаш прашувај на овој сајт</translation> +<translation id="3946209740501886391">Прашувај секогаш на овој сајт</translation> <translation id="3949571496842715403">Серверот не може да докаже дека е <ph name="DOMAIN" />; неговиот безбедносен сертификат не наведува алтернативни имиња на предметот. Тоа може да се должи на погрешна конфигурација или на напаѓач што го пресретнува поврзувањето.</translation> <translation id="3949601375789751990">Историјата на прелистување се појавува тука</translation> <translation id="3949870428812919180">Нема зачувани начини на плаќање</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index b2735c8fc..3693b0b 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -536,6 +536,7 @@ <translation id="2941952326391522266">ഈ സെർവറിന് അത് <ph name="DOMAIN" /> ആണെന്ന് തെളിയിക്കാനായില്ല; <ph name="DOMAIN2" /> എന്നതിൽ നിന്നുള്ളതാണ് അതിന്റെ സുരക്ഷാ സർട്ടിഫിക്കറ്റ്. തെറ്റായ കോൺഫിഗറേഷൻ കാരണമോ ഒരു അക്രമണകാരി നിങ്ങളുടെ കണക്ഷനെ തടസ്സപ്പെടുത്തുന്നത് കൊണ്ടോ ആയിരിക്കാം ഇത് സംഭവിച്ചത്.</translation> <translation id="2943895734390379394">അപ്ലോഡ് ചെയ്ത സമയം:</translation> <translation id="2948083400971632585">കണക്ഷനായി കോൺഫിഗർ ചെയ്ത ഏതൊരു പ്രോക്സികളും ക്രമീകരണങ്ങൾ പേജിൽ നിന്ന് നിങ്ങൾക്ക് പ്രവർത്തനരഹിതമാക്കാനാകും.</translation> +<translation id="2949183777371959169">മെഷീൻ, Chrome ബ്രൗസർ ക്ലൗഡ് മാനേജ്മെന്റുമായി എൻറോൾ ചെയ്യാത്തതിനാൽ നിരസിച്ചു.</translation> <translation id="2951588413176968965">എന്റെ മെയിൽബോക്സ്</translation> <translation id="295526156371527179">മുന്നറിയിപ്പ്: ഈ നയം ഒരു നിഘണ്ടു അല്ലാത്തതിനാലാണ് നയത്തിൽ വ്യക്തമാക്കിയിരിക്കുന്നത് പോലെ ഇത് ഒരു നിഘണ്ടുവായി ലയിപ്പിക്കാത്തത്.</translation> <translation id="2955913368246107853">ഫൈന്ഡ് ബാര് അടയ്ക്കുക</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 39ff3da3..b5746ad 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -539,6 +539,7 @@ <translation id="2941952326391522266">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता सर्टिफिकेट <ph name="DOMAIN2" /> वरील आहे. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.</translation> <translation id="2943895734390379394">अपलोड करण्याची वेळ:</translation> <translation id="2948083400971632585">तुम्हे सेटिंग्ज पेजवरून एका कनेक्शनसाठी कॉंफिगर केलेले कोणत्याही प्रॉक्सी अक्षम करू शकता.</translation> +<translation id="2949183777371959169">Chrome ब्राउझर क्लाउड व्यवस्थापन यामध्ये मशीनची नोंदणी न केल्यामुळे, दुर्लक्ष केले.</translation> <translation id="2951588413176968965">माझा मेलबॉक्स</translation> <translation id="295526156371527179">चेतावणी: धोरणामध्ये नमूद केल्याप्रमाणे हे धोरण शब्दकोश म्हणून विलीन केले नाही कारण तो एखादा शब्दकोश नाही.</translation> <translation id="2955913368246107853">शोध बार बंद करा</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index e75ebd0..4cc5b98 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -49,7 +49,7 @@ <translation id="1156303062776767266">तपाईं स्थानीय वा साझा फाइल हेर्दै हुनुहुन्छ</translation> <translation id="1158211211994409885"><ph name="HOST_NAME" /> ले अप्रत्याशित रूपमा जडान बन्द गर्यो।</translation> <translation id="115926840831309955">आफ्नो CVC जाँच गरी फेरि प्रयास गर्नुहोस् वा म्याद सकिने मिति अपडेट गर्नुहोस्</translation> -<translation id="1161325031994447685">Wi-Fi मा पुनः जडान गर्नुहोस्</translation> +<translation id="1161325031994447685">Wi-Fi मा पुनः कनेक्ट गर्नुहोस्</translation> <translation id="1165039591588034296">त्रुटि</translation> <translation id="1165174597379888365">पृष्ठ खोलिएको छ</translation> <translation id="1174723505405632867">तपाईं <ph name="EMBEDDED_URL" /> लाई <ph name="TOP_LEVEL_URL" /> का कुकी र साइटको डेटा प्रयोग गर्ने अनुमति दिन चाहनुहुन्छ? @@ -161,7 +161,7 @@ <translation id="1495677929897281669">ट्याबमा फर्कनुहोस्</translation> <translation id="1501859676467574491">आफ्नो Google खाताका कार्डहरू देखाउनुहोस्</translation> <translation id="1507202001669085618"><p>तपाईं अनलाइन हुनु पूर्व साइन इन गर्न पर्नेमा Wi-Fi पोर्टल प्रयोग गर्नुभएको खण्डमा तपाईंले यो त्रुटि देखुहुने छ।</p> - <p>त्रुटि समाधान गर्न, तपाईंले खोल्ने प्रयास गर्नुभएको पृष्ठमा <strong>जडान गर्नुहोस्</strong> मा क्लिक गर्नुहोस्।</p></translation> + <p>त्रुटि समाधान गर्न, तपाईंले खोल्ने प्रयास गर्नुभएको पृष्ठमा <strong>कनेक्ट गर्नुहोस्</strong> मा क्लिक गर्नुहोस्।</p></translation> <translation id="1513706915089223971">इतिहाससम्बन्धी प्रविष्टिहरूको सूची</translation> <translation id="1517433312004943670">फोन नम्बर आवश्यक छ</translation> <translation id="1519264250979466059">निर्माण मिति</translation> @@ -742,7 +742,7 @@ <translation id="3711895659073496551">निलम्बन</translation> <translation id="3712624925041724820">इजाजतपत्र निकास</translation> <translation id="3714780639079136834">मोबाइल डेटा वा Wi-Fi लाई सक्रिय गर्नुहोस्</translation> -<translation id="3715597595485130451">Wi-Fi मा जडान गर्नुहोस्</translation> +<translation id="3715597595485130451">Wi-Fi मा कनेक्ट गर्नुहोस्</translation> <translation id="3717027428350673159"><ph name="BEGIN_LINK" />प्रोक्सी, फायरवाल र DNS को कन्फिगरेसनलाई जाँच गर्नुहोस्<ph name="END_LINK" /></translation> <translation id="372429172604983730">यो त्रुटि उत्पन्न गराउन सक्ने एपहरूमा एन्टिभाइरस, फायरवाल र वेब-फिल्टर वा प्रोक्सी सफ्टवेयर पर्दछन्।</translation> <translation id="373042150751172459">B4 (Envelope)</translation> @@ -1157,7 +1157,7 @@ <translation id="5230733896359313003">ढुवानीको ठेगाना</translation> <translation id="5230815978613972521">B8</translation> <translation id="5233045608889518621">12x19</translation> -<translation id="5250209940322997802">"नेटवर्कमा जडान गर्नुहोस्"</translation> +<translation id="5250209940322997802">"नेटवर्कमा कनेक्ट गर्नुहोस्"</translation> <translation id="5251803541071282808">क्लाउड</translation> <translation id="5252000469029418751">C7 (Envelope)</translation> <translation id="5254043433801397071">छाप्ने सामग्री अनुकूलन गर्नुहोस्</translation> @@ -1180,7 +1180,7 @@ <translation id="5300589172476337783">देखाउनुहोस्</translation> <translation id="5306593769196050043">दुवै पाना</translation> <translation id="5307166000025436103">ठिक छ</translation> -<translation id="5308380583665731573">जडान गर्नुहोस्</translation> +<translation id="5308380583665731573">कनेक्ट गर्नुहोस्</translation> <translation id="5308689395849655368">क्र्यास रिपोर्ट अक्षम छ।</translation> <translation id="5314967030527622926">पुस्तिका निर्माता</translation> <translation id="5316812925700871227">घडीको विपरीत दिशामा घुमाउनुहोस्</translation> @@ -2167,7 +2167,7 @@ <translation id="9117930699067497412">ताजा</translation> <translation id="9119042192571987207">अपलोड गरिएको</translation> <translation id="9128016270925453879">नीतिहरू लोड गरिएका छन्</translation> -<translation id="9128870381267983090">नेटवर्कमा जडान गर्नुहोस्</translation> +<translation id="9128870381267983090">नेटवर्कमा कनेक्ट गर्नुहोस्</translation> <translation id="9137013805542155359">मूल देखाउनुहोस्</translation> <translation id="9141013498910525015">ठेगानाहरू व्यवस्थित गर्नुहोस्</translation> <translation id="9148088599418889305">ढुवानीको विधि छनौट गर्नुहोस्</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index 9adb213..4e9ee07 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">ଟ୍ରେ 7</translation> <translation id="204357726431741734">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ୍ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକ ବ୍ୟବହାର କରିବାକୁ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" />ରେ ଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ ଅନୁବାଦ କରାଯିବ ନାହିଁ।</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{ଏହି ନିୟନ୍ତ୍ରଣ ଚାଲୁ ଥିଲେ ଏବଂ ସ୍ଥିତି ସକ୍ରିୟ ଥିଲେ, ଆପଣଙ୍କର ବର୍ତ୍ତମାନର ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଲୋକମାନଙ୍କର କେଉଁ ବଡ଼ ଗୋଷ୍ଠୀ କିମ୍ବା "ଦଳ" ସହ ସବୁଠାରୁ ଅଧିକ ସମାନ ଅଟେ ତାହା Chrome ନିର୍ଦ୍ଧାରଣ କରେ। ବିଜ୍ଞାପନଦାତାମାନେ ଗୋଷ୍ଠୀ ପାଇଁ ବିଜ୍ଞାପନଗୁଡ଼ିକ ବାଛିପାରିବେ ଏବଂ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଆପଣଙ୍କ ଡିଭାଇସରେ ବ୍ୟକ୍ତିଗତ ରଖାଯାଏ। ଆପଣଙ୍କ ଗୋଷ୍ଠୀକୁ ପ୍ରତିଦିନ ଅପଡେଟ୍ କରାଯାଏ।}=1{ଏହି ନିୟନ୍ତ୍ରଣ ଚାଲୁ ଥିଲେ ଏବଂ ସ୍ଥିତି ସକ୍ରିୟ ଥିଲେ, ଆପଣଙ୍କର ବର୍ତ୍ତମାନର ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଲୋକମାନଙ୍କର କେଉଁ ବଡ଼ ଗୋଷ୍ଠୀ କିମ୍ବା "ଦଳ" ସହ ସବୁଠାରୁ ଅଧିକ ସମାନ ଅଟେ ତାହା Chrome ନିର୍ଦ୍ଧାରଣ କରେ। ବିଜ୍ଞାପନଦାତାମାନେ ଗୋଷ୍ଠୀ ପାଇଁ ବିଜ୍ଞାପନଗୁଡ଼ିକ ବାଛିପାରିବେ ଏବଂ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଆପଣଙ୍କ ଡିଭାଇସରେ ବ୍ୟକ୍ତିଗତ ରଖାଯାଏ। ଆପଣଙ୍କ ଗୋଷ୍ଠୀକୁ ପ୍ରତିଦିନ ଅପଡେଟ୍ କରାଯାଏ।}other{ଏହି ନିୟନ୍ତ୍ରଣ ଚାଲୁ ଥିଲେ ଏବଂ ସ୍ଥିତି ସକ୍ରିୟ ଥିଲେ, ଆପଣଙ୍କର ବର୍ତ୍ତମାନର ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଲୋକମାନଙ୍କର କେଉଁ ବଡ଼ ଗୋଷ୍ଠୀ କିମ୍ବା "ଦଳ" ସହ ସବୁଠାରୁ ଅଧିକ ସମାନ ଅଟେ ତାହା Chrome ନିର୍ଦ୍ଧାରଣ କରେ। ବିଜ୍ଞାପନଦାତାମାନେ ଗୋଷ୍ଠୀ ପାଇଁ ବିଜ୍ଞାପନଗୁଡ଼ିକ ବାଛିପାରିବେ ଏବଂ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଆପଣଙ୍କ ଡିଭାଇସରେ ବ୍ୟକ୍ତିଗତ ରଖାଯାଏ। ଆପଣଙ୍କ ଗୋଷ୍ଠୀକୁ ପ୍ରତି {NUM_DAYS} ଦିନରେ ଅପଡେଟ୍ କରାଯାଏ।}}</translation> <translation id="2053553514270667976">ZIP କୋଡ୍</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1ଟି ପରାମର୍ଶ}other{#ଟି ପରାମର୍ଶ}}</translation> <translation id="2071692954027939183">ଆପଣ ସାଧାରଣତଃ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଅନୁମତି ଦେଉନଥିବା ଯୋଗୁଁ ସେଗୁଡ଼ିକୁ ସ୍ୱଚାଳିତ ଭାବରେ ବ୍ଲକ୍ କରାଯାଇଛି</translation> <translation id="2079545284768500474">ପୂର୍ବବତ୍</translation> <translation id="20817612488360358">ସିଷ୍ଟମ୍ ପ୍ରକ୍ସି ସେଟିଂସ୍ ବ୍ୟବହାର କରିବା ପାଇଁ ପ୍ରସ୍ତୁତ ଅଛି କିନ୍ତୁ ଏକ ସୁନିର୍ଦ୍ଦିଷ୍ଟ ପ୍ରକ୍ସି କନ୍ଫିଗ୍ରେସନ୍ ମଧ୍ୟ ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଛି।</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />ର <ph name="RESULT_NUMBER" />ଟି ଫଳାଫଳ</translation> +<translation id="2085876078937250610">ସେଭ୍ କରନ୍ତୁ…</translation> <translation id="2088086323192747268">'ସିଙ୍କ୍ ପରିଚାଳନା କରନ୍ତୁ' ବଟନ୍, Chrome ସେଟିଂସରେ ଆପଣ କେଉଁ ସୂଚନା ସିଙ୍କ୍ କରନ୍ତି ତାହା ପରିଚାଳନା କରିବାକୁ Enter ଦବାନ୍ତୁ</translation> <translation id="2091887806945687916">ଧ୍ୱନି</translation> <translation id="2094505752054353250">ଡୋମେନ୍ ମେଳ ଖାଉ ନାହିଁ</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">ଆପଣ ଏହି ସାଇଟ୍ରେ ଦେଖୁଥିବା ଛବିଗୁଡ଼ିକୁ ଆକ୍ରମଣକାରୀ ଦେଖିବାରେ ସକ୍ଷମ ହୋଇପାରେ ଏବଂ ସେଗୁଡ଼ିକୁ ସଂଶୋଧନ କରି ଆପଣଙ୍କ ସହିତ ଛଳନା କରିପାରେ।</translation> <translation id="2356070529366658676">ପଚାରନ୍ତୁ</translation> <translation id="2357481397660644965">ଆପଣଙ୍କର ଡିଭାଇସ୍ <ph name="DEVICE_MANAGER" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି ଏବଂ ଆପଣଙ୍କର ଆକାଉଣ୍ଟ <ph name="ACCOUNT_MANAGER" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{ଗୋଟିଏ ଦିନରୁ କମ୍ ସମୟରେ}=1{ଗୋଟିଏ ଦିନରେ}other{{NUM_DAYS} ଦିନରେ}}</translation> <translation id="2359629602545592467">ଏକାଧିକ</translation> <translation id="2359808026110333948">ଜାରି ରଖନ୍ତୁ</translation> <translation id="2359961752320758691">ଆପଣଙ୍କ ଭର୍ଚୁଆଲ୍ କାର୍ଡ ନମ୍ବର ଲାଗୁ କରାଯାଇଛି।</translation> @@ -530,6 +533,7 @@ <translation id="2941952326391522266">ଏହା <ph name="DOMAIN" /> ଅଟେ ବୋଲି ଏହି ସର୍ଭର୍ ପ୍ରମାଣ କରିପାରିଲା ନାହିଁ; ଏହାର ସୁରକ୍ଷା ସାର୍ଟିଫିକେଟ୍ <ph name="DOMAIN2" /> ତରଫରୁ ଅଟେ। ଏହା ଏକ ଭୁଲ କନଫିଗ୍ରେସନ୍ କିମ୍ବା ଜଣେ ଆକ୍ରମଣକାରୀ ଆପଣଙ୍କର ସଂଯୋଗକୁ ପ୍ରତିରୋଧ କରୁଥିବା ଯୋଗୁଁ ହୋଇଥାଇପାରେ।</translation> <translation id="2943895734390379394">ଅପଲୋଡ୍ ସମୟ:</translation> <translation id="2948083400971632585">ଆପଣ ସେଟିଂସ୍ ପୃଷ୍ଠାରୁ ଏକ ସଂଯୋଗ ପାଇଁ କନ୍ଫିଗର୍ କରାଯାଇଥିବା କୌଣସି ପ୍ରକ୍ସିକୁ ଅକ୍ଷମ କରିପାରିବେ।</translation> +<translation id="2949183777371959169">Chrome ବ୍ରାଉଜର୍ କ୍ଲାଉଡ୍ ପରିଚାଳନା ମାଧ୍ୟମରେ ମେସିନଟି ପଞ୍ଜିକୃତ ହୋଇନଥିବା ଯୋଗୁଁ ଏହାକୁ ଅଣଦେଖା କରାଯାଇଛି।</translation> <translation id="2951588413176968965">ମୋ ମେଲବକ୍ସ</translation> <translation id="295526156371527179">ଚେତାବନୀ: ଏହି ନୀତିକୁ ଏକ ଅଭିଧାନ ଭାବେ ନିର୍ଦ୍ଦିଷ୍ଟ କରାଯାଇଥିବା ନୀତି ଦ୍ୱାରା ମିଶାଯାଇ ନଥିଲା କାହିଁକି ନା ଏହା ଏକ ଅଭିଧାନ ନୁହେଁ।</translation> <translation id="2955913368246107853">ଖୋଜନ୍ତୁ ଦଣ୍ଡିକା ବନ୍ଦ କରନ୍ତୁ</translation> @@ -707,6 +711,7 @@ <translation id="3590643883886679995">ଆପଣ ଇନକଗ୍ନିଟୋ ମୋଡରୁ ବାହାରି ଯିବା ପରେ ସାଇନ୍-ଇନ୍ ଡାଟା ଏହି ଡିଭାଇସରେ ଷ୍ଟୋର୍ କରାଯିବ।</translation> <translation id="359126217934908072">ମାସ/ବର୍ଷ:</translation> <translation id="3592413004129370115">ଇଟାଲିଆନ୍ (ଏନଭଲପ୍)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{ଆପଣ ଯେ କୌଣସି ସମୟରେ ଆପଣଙ୍କ ଗୋଷ୍ଠୀ ରିସେଟ୍ କରିପାରିବେ। ଏକ ନୂଆ ଗୋଷ୍ଠୀରେ ଯୋଗ ଦେବା ପାଇଁ ଗୋଟିଏ ଦିନ ସମୟ ଲାଗିଥାଏ।}=1{ଆପଣ ଯେ କୌଣସି ସମୟରେ ଆପଣଙ୍କ ଗୋଷ୍ଠୀ ରିସେଟ୍ କରିପାରିବେ। ଏକ ନୂଆ ଗୋଷ୍ଠୀରେ ଯୋଗ ଦେବା ପାଇଁ ଗୋଟିଏ ଦିନ ସମୟ ଲାଗିଥାଏ।}other{ଆପଣ ଯେ କୌଣସି ସମୟରେ ଆପଣଙ୍କ ଗୋଷ୍ଠୀ ରିସେଟ୍ କରିପାରିବେ। ଏକ ନୂଆ ଗୋଷ୍ଠୀରେ ଯୋଗ ଦେବା ପାଇଁ {NUM_DAYS} ଦିନ ସମୟ ଲାଗିଥାଏ।}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା ଆପ୍ଲିକେସନ୍ ବ୍ଲକ୍ କରାଯାଇଛି</translation> <translation id="3608932978122581043">ଫିଡ୍ ଓରିଏଣ୍ଟେସନ୍</translation> @@ -1188,6 +1193,7 @@ <translation id="5332219387342487447">ସିପିଂ ପଦ୍ଧତି</translation> <translation id="5333022057423422993">ଆପଣ ଏକ ଡାଟା ଉଲ୍ଲଙ୍ଘନରେ ଏବେ ବ୍ୟବହାର କରିଥିବା ପାସୱାର୍ଡ Chromeକୁ ମିଳିଛି। ଆପଣଙ୍କ ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ, ଆପଣଙ୍କ ସେଭ୍ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବାକୁ ଆମେ ସୁପାରିଶ କରୁ।</translation> <translation id="5334013548165032829">ବିସ୍ତୃତ ବିବରଣୀ ସହ ସିଷ୍ଟମ୍ ଲଗ୍ଗୁଡ଼ିକ</translation> +<translation id="5334145288572353250">ଠିକଣା ସେଭ୍ କରିବେ?</translation> <translation id="5340250774223869109">ଆପ୍ଲିକେସନ୍ ବ୍ଲକ୍ କରାଯାଇଛି</translation> <translation id="534295439873310000">NFC ଡିଭାଇସ୍ଗୁଡ଼ିକ</translation> <translation id="5344579389779391559">ଏହି ପୃଷ୍ଠା ଆପଣଙ୍କ ଠାରୁ ଶୁଳ୍କ ନେବା ପାଇଁ ଚେଷ୍ଟା କରିପାରେ</translation> @@ -1526,6 +1532,7 @@ <translation id="6671697161687535275">Chromiumରୁ ପରାମର୍ଶରୁ କାଢ଼ି ଦେବେ?</translation> <translation id="6685834062052613830">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ ଏବଂ ସେଟ୍ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ</translation> <translation id="6687335167692595844">ଅନୁରୋଧ କରାଯାଇଥିବା ଫଣ୍ଟ ଆକାର</translation> +<translation id="6688743156324860098">ଅପଡେଟ୍ କରନ୍ତୁ…</translation> <translation id="6689249931105087298">ବ୍ଲାକ୍ ପଏଣ୍ଟ କମ୍ପ୍ରେସନ୍ ସହିତ ରିଲେଟିଭ୍</translation> <translation id="6689271823431384964">ଆପଣ ସାଇନ୍ ଇନ୍ କରିଥିବା ଯୋଗୁଁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ଆପଣଙ୍କ କାର୍ଡଗୁଡ଼ିକ ସେଭ୍ କରିବାକୁ Chrome ଅଫର୍ ଦେଉଛି। ଆପଣ ସେଟିଂସ୍ରେ ଏହି ଆଚରଣ ପରିବର୍ତ୍ତନ କରିପାରିବେ। ଆପଣଙ୍କ ଆକାଉଣ୍ଟରୁ କାର୍ଡ ଧାରକଙ୍କ ନାମ ଆସିଛି।</translation> <translation id="6698381487523150993">ସୃଷ୍ଟିହେଲା:</translation> @@ -1541,6 +1548,7 @@ <translation id="6744009308914054259">ଗୋଟିଏ ସଂଯୋଗ ପାଇଁ ଅପେକ୍ଷା କରୁଥିବା ସମୟରେ, ଅଫ୍ଲାଇନ୍ ଆର୍ଟିକଲ୍ଗୁଡିକୁ ପଢ଼ିବାକୁ ଆପଣ ଡାଉନ୍ଲୋଡ୍ଗୁଡ଼ିକୁ ଯାଇପାରିବେ।</translation> <translation id="6753269504797312559">ନୀତି ମୂଲ୍ୟ</translation> <translation id="6757797048963528358">ଆପଣଙ୍କର ଡିଭାଇସ୍ ନିଷ୍କ୍ରିୟ ହୋଇଯାଇଛି।</translation> +<translation id="6767985426384634228">ଠିକଣା ଅପଡ଼େଟ୍ କରିବେ?</translation> <translation id="6768213884286397650">ହାଗାକି (ପୋଷ୍ଟକାର୍ଡ)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">ବାଇଗଣୀ</translation> @@ -1700,6 +1708,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">ପ୍ରଯୁଜ୍ୟ ନୁହେଁ</translation> <translation id="7390545607259442187">କାର୍ଡ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> +<translation id="7392089738299859607">ଠିକଣା ଅପଡ଼େଟ୍ କରନ୍ତୁ</translation> <translation id="7399802613464275309">ସୁରକ୍ଷା ଯାଞ୍ଚ</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">ଆପଣଙ୍କର <ph name="DEVICE_NAME" />କୁ ପରିଚାଳନା କରାଯାଏ</translation> @@ -1838,6 +1847,7 @@ <translation id="7865448901209910068">ଉତ୍ତମ ବେଗ</translation> <translation id="7874263914261512992">ଆପଣ ଏବେ ଏକ ପ୍ରତାରଣାମୂଳକ ସାଇଟରେ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଲେଖିଛନ୍ତି। <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ଏବଂ ଆପଣ ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡ ବ୍ୟବହାର କରିଥିବା ଅନ୍ୟ ସାଇଟଗୁଡ଼ିକ ପାଇଁ Chrome ଆପଣଙ୍କର ସେଭ୍ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିବାକୁ ସୁପାରିଶ କରେ।</translation> <translation id="7878562273885520351">ଆପଣଙ୍କର ପାସ୍ୱର୍ଡରେ ହେର୍ଫେର୍ କରାଯାଇଥାଇପାରେ</translation> +<translation id="7880146494886811634">ଠିକଣା ସେଭ୍ କରନ୍ତୁ</translation> <translation id="7882421473871500483">ବାଦାମୀ</translation> <translation id="7887683347370398519">ଆପଣଙ୍କର CVC ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="7887885240995164102">ପିକଚର୍-ଇନ୍-ପିକଚର୍ ଲେଖନ୍ତୁ</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index ad1f6bc..bd932cf 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">ਟ੍ਰੇਅ 7</translation> <translation id="204357726431741734">ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਵਰਤਣ ਲਈ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> ਭਾਸ਼ਾ ਵਾਲੇ ਪੰਨਿਆਂ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{ਇਸ ਕੰਟਰੋਲ ਦੇ ਚਾਲੂ ਹੋਣ ਅਤੇ ਸਥਿਤੀ ਦੇ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ 'ਤੇ, Chrome ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ ਤੁਹਾਡੀ ਹਾਲੀਆ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਲੋਕਾਂ ਦੇ ਕਿਹੜੇ ਵੱਡੇ ਗਰੁੱਪ ਜਾਂ "ਸਮਗੁਣ" ਦੇ ਸਮਾਨ ਹੈ। ਵਿਗਿਆਪਨਦਾਤੇ ਗਰੁੱਪ ਲਈ ਵਿਗਿਆਪਨਾਂ ਨੂੰ ਚੁਣ ਸਕਦੇ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਨਿੱਜੀ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਗਰੁੱਪ ਨੂੰ ਹਰ ਰੋਜ਼ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।}=1{ਇਸ ਕੰਟਰੋਲ ਦੇ ਚਾਲੂ ਹੋਣ ਅਤੇ ਸਥਿਤੀ ਦੇ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ 'ਤੇ, Chrome ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ ਤੁਹਾਡੀ ਹਾਲੀਆ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਲੋਕਾਂ ਦੇ ਕਿਹੜੇ ਵੱਡੇ ਗਰੁੱਪ ਜਾਂ "ਸਮਗੁਣ" ਦੇ ਸਮਾਨ ਹੈ। ਵਿਗਿਆਪਨਦਾਤੇ ਗਰੁੱਪ ਲਈ ਵਿਗਿਆਪਨਾਂ ਨੂੰ ਚੁਣ ਸਕਦੇ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਨਿੱਜੀ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਗਰੁੱਪ ਨੂੰ ਹਰ ਰੋਜ਼ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।}other{ਇਸ ਕੰਟਰੋਲ ਦੇ ਚਾਲੂ ਹੋਣ ਅਤੇ ਸਥਿਤੀ ਦੇ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ 'ਤੇ, Chrome ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ ਤੁਹਾਡੀ ਹਾਲੀਆ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਰਗਰਮੀ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਲੋਕਾਂ ਦੇ ਕਿਹੜੇ ਵੱਡੇ ਗਰੁੱਪ ਜਾਂ "ਸਮਗੁਣ" ਦੇ ਸਮਾਨ ਹੈ। ਵਿਗਿਆਪਨਦਾਤੇ ਗਰੁੱਪ ਲਈ ਵਿਗਿਆਪਨਾਂ ਨੂੰ ਚੁਣ ਸਕਦੇ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਨਿੱਜੀ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਗਰੁੱਪ ਨੂੰ ਹਰ {NUM_DAYS} ਦਿਨਾਂ ਬਾਅਦ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।}}</translation> <translation id="2053553514270667976">ਜ਼ਿਪ ਕੋਡ</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 ਸੁਝਾਅ}one{# ਸੁਝਾਅ}other{ # ਸੁਝਾਅ}}</translation> <translation id="2071692954027939183">ਸੂਚਨਾਵਾਂ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਬਲਾਕ ਕੀਤੀਆਂ ਗਈਆਂ ਕਿਉਂਕਿ ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਨੂੰ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦੇ ਹੋ</translation> <translation id="2079545284768500474">ਅਣਕੀਤਾ ਕਰੋ</translation> <translation id="20817612488360358">ਸਿਸਟਮ ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ ਵਰਤੇ ਜਾਣ ਲਈ ਸੈੱਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ ਪਰ ਇੱਕ ਸਪਸ਼ਟ ਪ੍ਰੌਕਸੀ ਸੰਰੂਪਿਤ ਵੀ ਨਿਸ਼ਚਿਤ ਹੈ।</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> ਦਾ <ph name="RESULT_NUMBER" /> ਨਤੀਜਾ</translation> +<translation id="2085876078937250610">ਰੱਖਿਅਤ ਕਰੋ…</translation> <translation id="2088086323192747268">'ਸਮਕਾਲੀਕਰਨ' ਬਟਨ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ, Chrome ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਤੁਸੀਂ ਜਿਹੜੀ ਜਾਣਕਾਰੀ ਦਾ ਸਮਕਾਲੀਕਰਨ ਕਰਦੇ ਹੋ, ਉਸਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="2091887806945687916">ਧੁਨੀ</translation> <translation id="2094505752054353250">ਡੋਮੇਨ ਮਿਸਮੈਚ</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਇਸ ਸਾਈਟ 'ਤੇ ਵੇਖੇ ਜਾ ਰਹੇ ਚਿੱਤਰਾਂ ਨੂੰ ਹਮਲਾਵਰ ਵੀ ਦੇਖਣ ਦੇ ਯੋਗ ਹੋਣ ਅਤੇ ਉਹਨਾਂ ਚਿੱਤਰਾਂ ਨੂੰ ਸੋਧ ਕੇ ਉਹ ਤੁਹਾਨੂੰ ਧੋਖਾ ਦੇ ਸਕਦੇ ਹਨ।</translation> <translation id="2356070529366658676">ਪੁੱਛੋ</translation> <translation id="2357481397660644965">ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="DEVICE_MANAGER" /> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਖਾਤੇ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="ACCOUNT_MANAGER" /> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{ਇੱਕ ਦਿਨ ਤੋਂ ਘੱਟ ਸਮੇਂ ਵਿੱਚ}=1{ਇੱਕ ਦਿਨ ਵਿੱਚ}other{{NUM_DAYS} ਦਿਨਾਂ ਵਿੱਚ}}</translation> <translation id="2359629602545592467">ਇੱਕ ਤੋਂ ਵਧੇਰੇ</translation> <translation id="2359808026110333948">ਜਾਰੀ ਰੱਖੋ</translation> <translation id="2359961752320758691">ਤੁਹਾਡਾ ਆਭਾਸੀ ਕਾਰਡ ਨੰਬਰ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ।</translation> @@ -531,6 +534,7 @@ <translation id="2941952326391522266">ਇਹ ਸਰਵਰ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰ ਸਕਿਆ ਕਿ ਇਹ <ph name="DOMAIN" /> ਹੈ; ਇਸਦਾ ਸੁਰੱਖਿਆ ਪ੍ਰਮਾਣ-ਪੱਤਰ <ph name="DOMAIN2" /> ਵੱਲੋਂ ਹੈ। ਇਹ ਇੱਕ ਗਲਤ ਸੰਰੂਪਣ ਕਾਰਨ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਕੋਈ ਹਮਲਾਵਰ ਤੁਹਾਡੇ ਕਨੈਕਸ਼ਨ ਨੂੰ ਰਾਹ ਵਿੱਚ ਰੋਕ ਰਿਹਾ ਹੈ।</translation> <translation id="2943895734390379394">ਅੱਪਲੋਡ ਦਾ ਸਮਾਂ:</translation> <translation id="2948083400971632585">ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਪੰਨੇ ਤੋਂ ਇੱਕ ਕਨੈਕਸ਼ਨ ਲਈ ਸੰਰੂਪਣ ਕੀਤੀਆਂ ਕੋਈ ਵੀ ਪ੍ਰੌਕਸੀਆਂ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾ ਸਕਦੇ ਹੋ।</translation> +<translation id="2949183777371959169">ਇਸ ਲਈ ਅਣਡਿੱਠ ਕੀਤੀ ਗਈ ਕਿਉਂਕਿ ਮਸ਼ੀਨ Chrome ਬ੍ਰਾਊਜ਼ਰ ਕਲਾਊਡ ਪ੍ਰਬੰਧਨ ਨਾਲ ਦਰਜ ਨਹੀਂ ਹੈ।</translation> <translation id="2951588413176968965">ਮੇਰਾ ਮੇਲਬਾਕਸ</translation> <translation id="295526156371527179">ਚਿਤਾਵਨੀ: ਇਹ ਨੀਤੀ, ਨੀਤੀ ਵੱਲੋਂ ਨਿਰਧਾਰਤ ਕੀਤੇ ਮੁਤਾਬਕ ਸ਼ਬਦਕੋਸ਼ ਵਜੋਂ ਵਿਲੀਨ ਨਹੀਂ ਕੀਤੀ ਗਈ ਕਿਉਂਕਿ ਇਹ ਸ਼ਬਦਕੋਸ਼ ਨਹੀਂ ਹੈ।</translation> <translation id="2955913368246107853">ਲੱਭੋ ਬਾਰ ਬੰਦ ਕਰੋ</translation> @@ -708,6 +712,7 @@ <translation id="3590643883886679995">ਇਨਕੋਗਨਿਟੋ ਮੋਡ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਦੇ ਬਾਅਦ ਸਾਈਨ-ਇਨ ਡਾਟਾ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਸਟੋਰ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> <translation id="359126217934908072">ਮਹੀਨਾ/ਸਾਲ:</translation> <translation id="3592413004129370115">ਇਤਾਲਵੀ (ਲਿਫ਼ਾਫ਼ਾ)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣਾ ਗਰੁੱਪ ਰੀਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਨਵੇਂ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਲਗਭਗ ਇੱਕ ਦਿਨ ਦਾ ਸਮਾਂ ਲੱਗਦਾ ਹੈ।}=1{ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣਾ ਗਰੁੱਪ ਰੀਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਨਵੇਂ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਲਗਭਗ ਇੱਕ ਦਿਨ ਦਾ ਸਮਾਂ ਲੱਗਦਾ ਹੈ।}other{ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣਾ ਗਰੁੱਪ ਰੀਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਨਵੇਂ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਲਗਭਗ {NUM_DAYS} ਦਿਨਾਂ ਦਾ ਸਮਾਂ ਲੱਗਦਾ ਹੈ।}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤਾ ਗਿਆ</translation> <translation id="3608932978122581043">ਦਿਸ਼ਾਮਾਨ ਫ਼ੀਡ ਕਰੋ</translation> @@ -1189,6 +1194,7 @@ <translation id="5332219387342487447">ਸ਼ਿਪਿੰਗ ਵਿਧੀ</translation> <translation id="5333022057423422993">Chrome ਨੂੰ ਉਹ ਪਾਸਵਰਡ ਮਿਲਿਆ ਹੈ ਜਿਸਦੀ ਵਰਤੋਂ ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਡਾਟਾ ਉਲੰਘਣਾ ਵਿੱਚ ਕੀਤੀ ਹੈ। ਤੁਹਾਡੇ ਖਾਤਿਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ, ਅਸੀਂ ਤੁਹਾਡੇ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦੇ ਹਾਂ।</translation> <translation id="5334013548165032829">ਵੇਰਵੇ ਸਹਿਤ ਸਿਸਟਮ ਲੌਗ</translation> +<translation id="5334145288572353250">ਕੀ ਪਤਾ ਰੱਖਿਅਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="5340250774223869109">ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ</translation> <translation id="534295439873310000">NFC ਡੀਵਾਈਸਾਂ</translation> <translation id="5344579389779391559">ਸ਼ਾਇਦ ਇਸ ਪੰਨੇ 'ਤੇ ਤੁਹਾਡੇ ਤੋਂ ਖਰਚਾ ਲਿਆ ਜਾਵੇ</translation> @@ -1527,6 +1533,7 @@ <translation id="6671697161687535275">ਕੀ Chromium ਤੋਂ ਫ਼ਾਰਮ ਸੰਬੰਧੀ ਸੁਝਾਅ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</translation> <translation id="6685834062052613830">ਸਾਈਨ-ਆਊਟ ਕਰੋ ਅਤੇ ਸਥਾਪਨਾ ਨੂੰ ਪੂਰਾ ਕਰੋ</translation> <translation id="6687335167692595844">ਫ਼ੌਂਟ ਆਕਾਰ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਗਈ</translation> +<translation id="6688743156324860098">ਅੱਪਡੇਟ ਕਰੋ…</translation> <translation id="6689249931105087298">ਕਾਲੇ ਬਿੰਦੂ ਨਪੀੜਨ ਨਾਲ ਸੰਬੰਧਿਤ</translation> <translation id="6689271823431384964">ਤੁਹਾਡੇ ਸਾਈਨ-ਇਨ ਹੋਣ ਕਰਕੇ Chrome ਤੁਹਾਡੇ ਕਾਰਡਾਂ ਨੂੰ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਰਿਹਾ ਹੈ। ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ ਵਤੀਰੇ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ। ਕਾਰਡਧਾਰਕ ਦੇ ਨਾਮ ਦੀ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਖਾਤੇ ਤੋਂ ਮਿਲਦੀ ਹੈ।</translation> <translation id="6698381487523150993">ਬਣਾਇਆ:</translation> @@ -1542,6 +1549,7 @@ <translation id="6744009308914054259">ਕਨੈਕਸ਼ਨ ਦੀ ਉਡੀਕ ਕਰਨ ਵੇਲੇ, ਆਫ਼ਲਾਈਨ ਲੇਖ ਪੜ੍ਹਨ ਲਈ ਤੁਸੀਂ ਡਾਊਨਲੋਡ 'ਤੇ ਜਾ ਸਕਦੇ ਹੋ।</translation> <translation id="6753269504797312559">ਨੀਤੀ ਦਾ ਮੁੱਲ</translation> <translation id="6757797048963528358">ਤੁਹਾਡੀ ਡੀਵਾਈਸ ਸਲੀਪ ਵਿੱਚ ਚਲੀ ਗਈ।</translation> +<translation id="6767985426384634228">ਕੀ ਪਤਾ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> <translation id="6768213884286397650">Hagaki (ਪੋਸਟਕਾਰਡ)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">ਬੈਂਗਣੀ</translation> @@ -1701,6 +1709,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">ਲਾਗੂ ਨਹੀਂ</translation> <translation id="7390545607259442187">ਕਾਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> +<translation id="7392089738299859607">ਪਤਾ ਅੱਪਡੇਟ ਕਰੋ</translation> <translation id="7399802613464275309">ਸੁਰੱਖਿਆ ਜਾਂਚ</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">ਤੁਹਾਡਾ <ph name="DEVICE_NAME" /> ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation> @@ -1839,6 +1848,7 @@ <translation id="7865448901209910068">ਬਿਹਤਰੀਨ ਗਤੀ</translation> <translation id="7874263914261512992">ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਕਿਸੇ ਭਰਮਪੂਰਨ ਸਾਈਟ 'ਤੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕੀਤਾ ਹੈ। Chrome ਵੱਲੋਂ <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ਅਤੇ ਉਹਨਾਂ ਹੋਰ ਸਾਈਟਾਂ 'ਤੇ ਆਪਣੇ ਰੱਖਿਅਤ ਪਾਸਵਰਡਾਂ ਨੂੰ ਜਾਂਚਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਹੁਣ ਤੁਸੀਂ ਇਹ ਪਾਸਵਰਡ ਵਰਤਦੇ ਹੋ।</translation> <translation id="7878562273885520351">ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਨਾਲ ਛੇੜਛਾੜ ਹੋਈ</translation> +<translation id="7880146494886811634">ਪਤਾ ਰੱਖਿਅਤ ਕਰੋ</translation> <translation id="7882421473871500483">ਭੂਰਾ</translation> <translation id="7887683347370398519">ਆਪਣੇ CVC ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation> <translation id="7887885240995164102">ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ ਦਾਖਲ ਕਰੋ</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 7309856..968c579 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">Bandeja 7</translation> <translation id="204357726431741734">Faça login para usar as senhas salvas na sua Conta do Google</translation> <translation id="2053111141626950936">Páginas em <ph name="LANGUAGE" /> não serão traduzidas.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Quando este controle estiver ligado e o status estiver ativo, o Chrome determinará com qual grupo grande de pessoas, ou "coorte", sua atividade de navegação se parece mais. Os anunciantes podem selecionar anúncios para o grupo e sua atividade de navegação será armazenada no dispositivo de forma particular. Seu grupo é atualizado todos os dias.}=1{Quando este controle estiver ligado e o status estiver ativo, o Chrome determinará com qual grupo grande de pessoas, ou "coorte", sua atividade de navegação se parece mais. Os anunciantes podem selecionar anúncios para o grupo e sua atividade de navegação será armazenada no dispositivo de forma particular. Seu grupo é atualizado todos os dias.}one{Quando este controle estiver ligado e o status estiver ativo, o Chrome determinará com qual grupo grande de pessoas, ou "coorte", sua atividade de navegação se parece mais. Os anunciantes podem selecionar anúncios para o grupo e sua atividade de navegação será armazenada no dispositivo de forma particular. Seu grupo é atualizado a cada {NUM_DAYS} dia.}other{Quando este controle estiver ligado e o status estiver ativo, o Chrome determinará com qual grupo grande de pessoas, ou "coorte", sua atividade de navegação se parece mais. Os anunciantes podem selecionar anúncios para o grupo e sua atividade de navegação será armazenada no dispositivo de forma particular. Seu grupo é atualizado a cada {NUM_DAYS} dias.}}</translation> <translation id="2053553514270667976">CEP</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestão}one{# sugestão}other{# sugestões}}</translation> <translation id="2071692954027939183">As notificações foram bloqueadas automaticamente porque você não costuma permiti-las</translation> <translation id="2079545284768500474">Desfazer</translation> <translation id="20817612488360358">As configurações de proxy do sistema são definidas para serem utilizadas, mas uma configuração explícita de proxy também foi especificada.</translation> <translation id="2082238445998314030">Resultado <ph name="RESULT_NUMBER" /> de <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Salvar…</translation> <translation id="2088086323192747268">Botão "Gerenciar sincronização". Pressione "Enter" para gerenciar quais informações são sincronizadas nas configurações do Chrome</translation> <translation id="2091887806945687916">Som</translation> <translation id="2094505752054353250">Incompatibilidade de domínio</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">É possível que invasores consigam ver as imagens que você está olhando nesse site e as modifiquem para enganar você.</translation> <translation id="2356070529366658676">Perguntar</translation> <translation id="2357481397660644965">Seu dispositivo é gerenciado por <ph name="DEVICE_MANAGER" />, e sua conta é gerenciada por <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Em menos de um dia}=1{Em um dia}one{Em {NUM_DAYS} dia}other{Em {NUM_DAYS} dias}}</translation> <translation id="2359629602545592467">Várias</translation> <translation id="2359808026110333948">Continuar</translation> <translation id="2359961752320758691">O número do seu cartão virtual foi aplicado.</translation> @@ -710,6 +713,7 @@ <translation id="3590643883886679995">Depois que você sair do modo de navegação anônima, os dados de login serão armazenados no dispositivo.</translation> <translation id="359126217934908072">Mês/ano:</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Você pode redefinir o grupo a qualquer momento. Demora cerca de um dia para fazer parte de um novo grupo.}=1{Você pode redefinir o grupo a qualquer momento. Demora cerca de um dia para fazer parte de um novo grupo.}one{Você pode redefinir o grupo a qualquer momento. Demora {NUM_DAYS} dia para fazer parte de um novo grupo.}other{Você pode redefinir o grupo a qualquer momento. Demora {NUM_DAYS} dias para fazer parte de um novo grupo.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Aplicativo bloqueado pelo administrador</translation> <translation id="3608932978122581043">Fornecer orientação</translation> @@ -1192,6 +1196,7 @@ <translation id="5332219387342487447">Forma de envio</translation> <translation id="5333022057423422993">A senha que você acabou de usar foi encontrada pelo Chrome em uma violação de dados. Para proteger suas contas, recomendamos verificar as senhas salvas.</translation> <translation id="5334013548165032829">Registros detalhados do sistema</translation> +<translation id="5334145288572353250">Salvar endereço?</translation> <translation id="5340250774223869109">O aplicativo foi bloqueado</translation> <translation id="534295439873310000">Dispositivos NFC</translation> <translation id="5344579389779391559">Esta página pode tentar cobrar pagamento em dinheiro</translation> @@ -1531,6 +1536,7 @@ <translation id="6671697161687535275">Remover sugestão de formulário do Chromium?</translation> <translation id="6685834062052613830">Saia e conclua a configuração</translation> <translation id="6687335167692595844">Tamanho da fonte solicitado</translation> +<translation id="6688743156324860098">Atualizar…</translation> <translation id="6689249931105087298">Relativa com compressão de pontos pretos</translation> <translation id="6689271823431384964">A opção de salvar seus cartões na Conta do Google está disponível no Chrome porque você fez login. É possível alterar esse comportamento nas configurações. O nome do titular do cartão vem da sua conta.</translation> <translation id="6698381487523150993">Criado em:</translation> @@ -1546,6 +1552,7 @@ <translation id="6744009308914054259">Enquanto espera por uma conexão, acesse "Downloads" para ler artigos off-line.</translation> <translation id="6753269504797312559">Valor da política</translation> <translation id="6757797048963528358">O dispositivo entrou em modo de suspensão.</translation> +<translation id="6767985426384634228">Atualizar endereço?</translation> <translation id="6768213884286397650">Hagaki (Postal)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Violeta</translation> @@ -1705,6 +1712,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Não aplicável</translation> <translation id="7390545607259442187">Confirmar cartão</translation> +<translation id="7392089738299859607">Atualizar endereço</translation> <translation id="7399802613464275309">Confirmação de segurança</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Seu <ph name="DEVICE_NAME" /> é gerenciado</translation> @@ -1843,6 +1851,7 @@ <translation id="7865448901209910068">Melhor velocidade</translation> <translation id="7874263914261512992">Você acabou de digitar sua senha em um site suspeito. O Chrome recomenda que você verifique agora suas senhas salvas para <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> e outros sites em que você usa essa senha.</translation> <translation id="7878562273885520351">Sua senha pode estar comprometida</translation> +<translation id="7880146494886811634">Salvar endereço</translation> <translation id="7882421473871500483">Marrom</translation> <translation id="7887683347370398519">Verifique seu CVC e tente novamente</translation> <translation id="7887885240995164102">Entrar no modo picture-in-picture</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 942121e..514455e1 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">Лоток 7</translation> <translation id="204357726431741734">Войти, чтобы использовать пароли, сохраненные в аккаунте Google</translation> <translation id="2053111141626950936">Страницы на этом языке (<ph name="LANGUAGE" />) не будут переводиться автоматически.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется ежедневно.}=1{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется ежедневно.}one{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется каждый {NUM_DAYS} день.}few{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется каждые {NUM_DAYS} дня.}many{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется каждые {NUM_DAYS} дней.}other{Если эта функция включена и активирована, Chrome определяет по вашим недавним действиям в браузере, к какой группе людей (когорте) вас отнести. Рекламодатели могут выбрать объявления для этой группы. Данные о ваших действиях в браузере хранятся на устройстве и доступны только вам. Группа обновляется каждые {NUM_DAYS} дня.}}</translation> <translation id="2053553514270667976">Почтовый индекс</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 вариант}one{# вариант}few{# варианта}many{# вариантов}other{# варианта}}</translation> <translation id="2071692954027939183">Уведомления заблокированы автоматически, потому что вы обычно запрещаете их показ.</translation> <translation id="2079545284768500474">Отмена</translation> <translation id="20817612488360358">Включены системные настройки прокси-сервера, но при этом его конфигурация задана явным образом.</translation> <translation id="2082238445998314030">Результат <ph name="RESULT_NUMBER" />, всего <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Сохранить</translation> <translation id="2088086323192747268">Кнопка "Настройки синхронизации". Нажмите Ввод, чтобы открыть настройки Chrome и указать, какая информация должна синхронизироваться.</translation> <translation id="2091887806945687916">Звук</translation> <translation id="2094505752054353250">Несоответствие домена</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">Злоумышленники могут видеть изображения, которые видны вам, и изменять их в целях мошенничества.</translation> <translation id="2356070529366658676">Спрашивать</translation> <translation id="2357481397660644965">Вашим устройством управляет <ph name="DEVICE_MANAGER" />, а аккаунтом – <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Меньше чем через 1 день.}=1{Через 1 день.}one{Через {NUM_DAYS} день.}few{Через {NUM_DAYS} дня.}many{Через {NUM_DAYS} дней.}other{Через {NUM_DAYS} дня.}}</translation> <translation id="2359629602545592467">Несколько</translation> <translation id="2359808026110333948">Продолжить</translation> <translation id="2359961752320758691">Применен номер виртуальной карты.</translation> @@ -709,6 +712,7 @@ <translation id="3590643883886679995">После выхода из режима инкогнито учетные данные сохранятся на устройстве.</translation> <translation id="359126217934908072">Месяц/год:</translation> <translation id="3592413004129370115">Italian (конверт)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется примерно 1 день.}=1{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется примерно 1 день.}one{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется примерно {NUM_DAYS} день.}few{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется примерно {NUM_DAYS} дня.}many{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется примерно {NUM_DAYS} дней.}other{Вы можете в любое время сбросить настройки группы. Чтобы присоединиться к другой группе, потребуется около {NUM_DAYS} дня.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Приложение заблокировано администратором</translation> <translation id="3608932978122581043">Задать ориентацию</translation> @@ -1191,6 +1195,7 @@ <translation id="5332219387342487447">Способ доставки</translation> <translation id="5333022057423422993">Пароль, который вы только что использовали, был раскрыт в результате утечки данных. Чтобы защитить свои аккаунты, проверьте надежность сохраненных паролей.</translation> <translation id="5334013548165032829">Подробные системные журналы.</translation> +<translation id="5334145288572353250">Сохранить адрес?</translation> <translation id="5340250774223869109">Приложение заблокировано</translation> <translation id="534295439873310000">Устройства с NFC</translation> <translation id="5344579389779391559">Если вы откроете эту страницу, с вашего счета могут быть списаны средства</translation> @@ -1530,6 +1535,7 @@ <translation id="6671697161687535275">Удалить подсказку из Chromium?</translation> <translation id="6685834062052613830">Выйдите из аккаунта и завершите настройку</translation> <translation id="6687335167692595844">Размер шрифта запрошен</translation> +<translation id="6688743156324860098">Изменить</translation> <translation id="6689249931105087298">Относительный со сжатием точки черного цвета</translation> <translation id="6689271823431384964">Chrome предлагает вам сохранить карты в аккаунте Google, поскольку вы вошли в систему. Этот параметр можно изменить в разделе настроек. Имя владельца карты взято из вашего аккаунта.</translation> <translation id="6698381487523150993">Создано:</translation> @@ -1545,6 +1551,7 @@ <translation id="6744009308914054259">В ожидании подключения вы можете открыть скачанные файлы и почитать статьи офлайн.</translation> <translation id="6753269504797312559">Значение правила</translation> <translation id="6757797048963528358">Устройство находится в спящем режиме.</translation> +<translation id="6767985426384634228">Изменить адрес?</translation> <translation id="6768213884286397650">Hagaki (открытка)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Фиолетовый</translation> @@ -1704,6 +1711,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Неприменимо</translation> <translation id="7390545607259442187">Подтвердите карту</translation> +<translation id="7392089738299859607">Изменить адрес</translation> <translation id="7399802613464275309">Проверка безопасности</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">Это устройство <ph name="DEVICE_NAME" /> управляется администратором</translation> @@ -1842,6 +1850,7 @@ <translation id="7865448901209910068">Лучшая скорость</translation> <translation id="7874263914261512992">Вы только что ввели пароль на поддельном сайте. Рекомендуем проверить сохраненные пароли для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> и других сайтов, на которых вы используете этот пароль.</translation> <translation id="7878562273885520351">Злоумышленники могли узнать ваш пароль</translation> +<translation id="7880146494886811634">Сохранить адрес</translation> <translation id="7882421473871500483">Коричневый</translation> <translation id="7887683347370398519">Проверьте CVC-код и повторите попытку</translation> <translation id="7887885240995164102">Включить режим "Картинка в картинке"</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index b6e76a9..84d30d8 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -307,12 +307,14 @@ <translation id="2042213636306070719">தட்டு 7</translation> <translation id="204357726431741734">உங்கள் Google கணக்கில் சேமிக்கப்பட்டுள்ள கடவுச்சொற்களைப் பயன்படுத்த உள்நுழைக</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> மொழியில் உள்ள பக்கங்கள் மொழிபெயர்க்கப்படாது.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். தினமும் உங்கள் குழு புதுப்பிக்கப்படும்.}=1{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். தினமும் உங்கள் குழு புதுப்பிக்கப்படும்.}other{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். {NUM_DAYS} நாட்களுக்கு ஒருமுறை உங்கள் குழு புதுப்பிக்கப்படும்.}}</translation> <translation id="2053553514270667976">ஜிப் குறியீடு</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 பரிந்துரை}other{# பரிந்துரைகள்}}</translation> <translation id="2071692954027939183">வழக்கமாக நீங்கள் அறிவிப்புகளை அனுமதிப்பதில்லை என்பதால் அவை தானாகவே தடுக்கப்பட்டன</translation> <translation id="2079545284768500474">செயல்தவிர்</translation> <translation id="20817612488360358">கணினி ப்ராக்ஸி அமைப்புகள் பயன்படுத்த அமைக்கப்பட்டுள்ளது. வெளிப்படையான ப்ராக்ஸி உள்ளமைவும் குறிப்பிடப்பட்டுள்ளது.</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> முடிவுகளில் <ph name="RESULT_NUMBER" />வது முடிவு</translation> +<translation id="2085876078937250610">சேமி…</translation> <translation id="2088086323192747268">ஒத்திசைவை நிர்வகிப்பதற்கான பட்டன். எந்தெந்தத் தகவல்களை ஒத்திசைக்க வேண்டும் என்பதை Chrome அமைப்புகளில் நிர்வகிக்க, Enter விசையை அழுத்துங்கள்</translation> <translation id="2091887806945687916">ஒலி</translation> <translation id="2094505752054353250">டொமைன் பொருந்தவில்லை</translation> @@ -393,6 +395,7 @@ <translation id="2355395290879513365">இந்தத் தளத்தில் நீங்கள் பார்த்துக் கொண்டிருக்கும் படங்களை தீங்கிழைப்பவர்களும் பார்த்து, அவற்றை மாற்றியமைத்து உங்களை ஏமாற்றக்கூடும்.</translation> <translation id="2356070529366658676">கேள்</translation> <translation id="2357481397660644965">உங்கள் சாதனத்தை <ph name="DEVICE_MANAGER" /> நிர்வகிக்கிறது, கணக்கை <ph name="ACCOUNT_MANAGER" /> நிர்வகிக்கிறது.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{ஒரு நாளுக்குள்}=1{ஒரு நாளில்}other{{NUM_DAYS} நாட்களில்}}</translation> <translation id="2359629602545592467">பல</translation> <translation id="2359808026110333948">தொடர்க</translation> <translation id="2367567093518048410">நிலை</translation> @@ -531,6 +534,7 @@ <translation id="2941952326391522266">இது <ph name="DOMAIN" /> தான் என்பதை இந்தச் சேவையகம் உறுதிப்படுத்தவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் <ph name="DOMAIN2" /> இலிருந்து பெறப்பட்டது. இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.</translation> <translation id="2943895734390379394">பதிவேற்றிய நேரம்:</translation> <translation id="2948083400971632585">இணைப்பிற்காக உள்ளமைத்த எந்த பிராக்சிகளையும் நீங்கள் அமைப்புகள் பக்கத்திலிருந்து முடக்கலாம்.</translation> +<translation id="2949183777371959169">Chrome உலாவியின் கிளவுட் நிர்வாகத்தில் மெஷின் பதிவுசெய்யப்படவில்லை என்பதால் புறக்கணிக்கப்பட்டது.</translation> <translation id="2951588413176968965">எனது அஞ்சல் பெட்டி</translation> <translation id="295526156371527179">எச்சரிக்கை: இது டிக்ஷனரி இல்லை என்பதால் கொள்கையில் குறிப்பிட்டபடி ஒன்றிணைக்கப்படவில்லை.</translation> <translation id="2955913368246107853">தேடல் பெட்டியை மூடுக</translation> @@ -706,6 +710,7 @@ <translation id="3590643883886679995">மறைநிலைப் பயன்முறையில் இருந்து வெளியேறிய பிறகு உள்நுழைவுத் தரவு இந்தச் சாதனத்தில் சேமிக்கப்படும்.</translation> <translation id="359126217934908072">மாதம்/ஆண்டு:</translation> <translation id="3592413004129370115">Italian (என்வலப்)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{எப்போது வேண்டுமானாலும் உங்கள் குழுவை மீட்டமைக்கலாம். புதிய குழுவில் சேர ஒரு நாள் ஆகும்.}=1{எப்போது வேண்டுமானாலும் உங்கள் குழுவை மீட்டமைக்கலாம். புதிய குழுவில் சேர ஒரு நாள் ஆகும்.}other{எப்போது வேண்டுமானாலும் உங்கள் குழுவை மீட்டமைக்கலாம். புதிய குழுவில் சேர {NUM_DAYS} நாட்கள் ஆகும்.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">உங்கள் நிர்வாகி ஆப்ஸைத் தடுத்துள்ளார்</translation> <translation id="3608932978122581043">உட்செலுத்தும் திசையமைப்பு</translation> @@ -1191,6 +1196,7 @@ <translation id="5332219387342487447">ஷிப்பிங் முறை</translation> <translation id="5333022057423422993">நீங்கள் தற்போது பயன்படுத்திய கடவுச்சொல், தரவு மீறலுக்கு உட்பட்டது என Chrome கண்டறிந்துள்ளது. கணக்குகளைப் பாதுகாக்க, சேமித்த கடவுச்சொற்களைச் சரிபார்க்கவும்.</translation> <translation id="5334013548165032829">விரிவான சிஸ்டம் பதிவுகள்</translation> +<translation id="5334145288572353250">முகவரியைச் சேமிக்கவா?</translation> <translation id="5340250774223869109">ஆப்ஸ் தடுக்கப்பட்டுள்ளது</translation> <translation id="534295439873310000">NFC சாதனங்கள்</translation> <translation id="5344579389779391559">இந்தப் பக்கம் உங்களிடமிருந்து கட்டணம் வசூலிக்கலாம்</translation> @@ -1528,6 +1534,7 @@ <translation id="6671697161687535275">Chromium இலிருந்து படிவப் பரிந்துரையை அகற்றவா?</translation> <translation id="6685834062052613830">வெளியேறி, அமைப்பை முடிக்கவும்</translation> <translation id="6687335167692595844">கோரப்பட்ட எழுத்துரு அளவு</translation> +<translation id="6688743156324860098">மாற்று…</translation> <translation id="6689249931105087298">கறுப்புப் புள்ளிச் சுருக்கத்துடன் சார்புடையது</translation> <translation id="6689271823431384964">நீங்கள் உள்நுழைந்துள்ளதால் Google கணக்கில் உங்கள் கார்டு விவரங்களைச் சேமிக்கும் விருப்பத்தை Chrome வழங்குகிறது. இதை நீங்கள் அமைப்புகளில் மாற்றலாம். கார்டு உரிமையாளரின் பெயர் உங்கள் கணக்கிலிருந்து பெறப்படுகிறது.</translation> <translation id="6698381487523150993">உருவாக்கப்பட்டது:</translation> @@ -1543,6 +1550,7 @@ <translation id="6744009308914054259">இணைப்புக்காகக் காத்திருக்கும்போது ஆஃப்லைன் கட்டுரைகளைப் படிக்க, ‘பதிவிறக்கங்கள்’ என்பதைப் பார்க்கவும்.</translation> <translation id="6753269504797312559">கொள்கை மதிப்பு</translation> <translation id="6757797048963528358">உங்கள் சாதனம் உறக்கநிலைக்குச் சென்றது.</translation> +<translation id="6767985426384634228">முகவரியை மாற்றவா?</translation> <translation id="6768213884286397650">Hagaki (போஸ்ட்கார்டு)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">ஊதா</translation> @@ -1700,6 +1708,7 @@ <translation id="7378627244592794276">வேண்டாம்</translation> <translation id="7378810950367401542">/</translation> <translation id="7390545607259442187">கார்டை உறுதிசெய்</translation> +<translation id="7392089738299859607">முகவரியை மாற்றுங்கள்</translation> <translation id="7399802613464275309">பாதுகாப்புச் சரிபார்ப்பு</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120">உங்கள் <ph name="DEVICE_NAME" /> சாதனம் நிர்வகிக்கப்படுகிறது</translation> @@ -1837,6 +1846,7 @@ <translation id="7865448901209910068">சிறந்த வேகம்</translation> <translation id="7874263914261512992">மோசடி செய்யும் தளத்தில் உங்கள் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். இந்தக் கடவுச்சொல்லைப் பயன்படுத்தும் <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> மற்றும் பிற தளங்களுக்குச் சென்று அங்கு சேமித்துள்ள கடவுச்சொற்களைச் சரிபார்க்கும்படி Chrome பரிந்துரைக்கிறது.</translation> <translation id="7878562273885520351">உங்கள் கடவுச்சொல் திருடப்பட்டிருக்கலாம்</translation> +<translation id="7880146494886811634">முகவரியைச் சேமியுங்கள்</translation> <translation id="7882421473871500483">பழுப்பு</translation> <translation id="7887683347370398519">CVCஐச் சோதித்து, மீண்டும் முயற்சிக்கவும்</translation> <translation id="7887885240995164102">பிக்ச்சர்-இன்-பிக்ச்சர் பயன்முறைக்கு செல்</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index a4261a1f..ab1feb7 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -539,6 +539,7 @@ <translation id="2941952326391522266">ఈ సర్వర్ <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రం <ph name="DOMAIN2" /> నుండి జారీ చేయబడింది. ఇది తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా దాడిచేసే వ్యక్తి మీ కనెక్షన్కు అంతరాయం కలిగించడం వలన జరిగి ఉండవచ్చు.</translation> <translation id="2943895734390379394">అప్లోడ్ సమయం:</translation> <translation id="2948083400971632585">మీరు సెట్టింగ్ల పేజీ నుండి కనెక్షన్ కోసం కాన్ఫిగర్ చేయబడిన ఏ ప్రాక్సీలను అయినా నిలిపివేయవచ్చు.</translation> +<translation id="2949183777371959169">'Chrome బ్రౌజర్ Cloud మేనేజ్మెంట్'తో మెషిన్ ఎన్రోల్ చేయబడలేదు కాబట్టి, తిరస్కరించబడింది.</translation> <translation id="2951588413176968965">నా మెయిల్బాక్స్</translation> <translation id="295526156371527179">హెచ్చరిక: ఈ విధానం ఒక నిఘంటువు కానందున, విధానంలో పేర్కొన్నట్లు నిఘంటువు లాగా విలీనం చేయబడలేదు.</translation> <translation id="2955913368246107853">కనుగొను పట్టీని మూసివేయి</translation> @@ -1998,7 +1999,7 @@ <translation id="8355270400102541638">స్థానిక క్రాష్ సందర్భం:</translation> <translation id="8363502534493474904">ఎయిర్ప్లైన్ మోడ్ను ఆఫ్ చేయడం</translation> <translation id="8364627913115013041">సెట్ చేయలేదు.</translation> -<translation id="8368476060205742148">Google Play సేవలు</translation> +<translation id="8368476060205742148">Google Play సర్వీసులు</translation> <translation id="8371889962595521444">అనుకూల రూట్ సెట్టింగ్లు</translation> <translation id="8374636051559112948">మారుతుంది</translation> <translation id="8380941800586852976">అపాయకరమైనది</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 22e0dc86..3c1371c0 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -305,12 +305,14 @@ <translation id="2042213636306070719">Tepsi 7</translation> <translation id="204357726431741734">Google Hesabınızda kayıtlı şifreleri kullanmak için oturum açın</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> dilindeki sayfalar çevrilmeyecek.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Bu denetim açık ve durum etkin olduğunda Chrome, son tarama etkinliklerinizin en çok benzediği geniş kullanıcı grubu veya "kohort"u belirler. Reklamverenler grup için reklam seçebilirler ve tarama etkinliğiniz cihazınızda gizli tutulur. Grubunuz her gün güncellenir.}=1{Bu denetim açık ve durum etkin olduğunda Chrome, son tarama etkinliklerinizin en çok benzediği geniş kullanıcı grubu veya "kohort"u belirler. Reklamverenler grup için reklam seçebilirler ve tarama etkinliğiniz cihazınızda gizli tutulur. Grubunuz her gün güncellenir.}other{Bu denetim açık ve durum etkin olduğunda Chrome, son tarama etkinliklerinizin en çok benzediği geniş kullanıcı grubu veya "kohort"u belirler. Reklamverenler grup için reklam seçebilirler ve tarama etkinliğiniz cihazınızda gizli tutulur. Grubunuz {NUM_DAYS} günde bir güncellenir.}}</translation> <translation id="2053553514270667976">Posta kodu</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 öneri}other{# öneri}}</translation> <translation id="2071692954027939183">Genelde izin vermediğiniz için bildirimler otomatik olarak engellendi</translation> <translation id="2079545284768500474">Geri al</translation> <translation id="20817612488360358">Sistem proxy ayarları kullanılmak üzere ayarlandı, ancak açık bir proxy yapılandırması da belirtildi.</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" /> sonuçtan <ph name="RESULT_NUMBER" /> numaralı sonuç</translation> +<translation id="2085876078937250610">Kaydet…</translation> <translation id="2088086323192747268">Senkronizasyonu yönet düğmesi, Chrome ayarlarında hangi bilgileri senkronize ettiğinizi yönetmek için Enter'a basın</translation> <translation id="2091887806945687916">Ses</translation> <translation id="2094505752054353250">Alan adı uyuşmazlığı</translation> @@ -391,6 +393,7 @@ <translation id="2355395290879513365">Saldırganlar bu sitede baktığınız resimleri görebilir ve bu resimler üzerinde değişiklik yaparak sizi kandırabilirler.</translation> <translation id="2356070529366658676">Sor</translation> <translation id="2357481397660644965">Cihazınız <ph name="DEVICE_MANAGER" /> tarafından, hesabınız ise <ph name="ACCOUNT_MANAGER" /> tarafından yönetiliyor.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Bir günden kısa bir süre içinde}=1{Bir gün içinde}other{{NUM_DAYS} gün içinde}}</translation> <translation id="2359629602545592467">Birden fazla</translation> <translation id="2359808026110333948">Devam et</translation> <translation id="2359961752320758691">Sanal kart numaranız uygulandı.</translation> @@ -711,6 +714,7 @@ <translation id="3590643883886679995">Gizli moddan çıktıktan sonra oturum açma verileriniz bu cihazda saklanır.</translation> <translation id="359126217934908072">Ay/Yıl:</translation> <translation id="3592413004129370115">Italian (Zarf)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Grubunuzu istediğiniz zaman sıfırlayabilirsiniz. Yeni bir gruba katılmak yaklaşık bir gün sürer.}=1{Grubunuzu istediğiniz zaman sıfırlayabilirsiniz. Yeni bir gruba katılmak yaklaşık bir gün sürer.}other{Grubunuzu istediğiniz zaman sıfırlayabilirsiniz. Yeni bir gruba katılmak yaklaşık {NUM_DAYS} gün sürer.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Uygulama, yöneticiniz tarafından engellendi</translation> <translation id="3608932978122581043">Besleme yönü</translation> @@ -1194,6 +1198,7 @@ <translation id="5332219387342487447">Gönderim Yöntemi</translation> <translation id="5333022057423422993">Chrome, az önce kullandığınız şifrenin bir veri ihlali sonucunda açığa çıktığını belirledi. Hesaplarınızın güvenliğini sağlamak için kayıtlı şifrelerinizi kontrol etmenizi öneririz.</translation> <translation id="5334013548165032829">Ayrıntılı sistem günlükleri</translation> +<translation id="5334145288572353250">Adres Kaydedilsin mi?</translation> <translation id="5340250774223869109">Uygulama engellendi</translation> <translation id="534295439873310000">NFC cihazları</translation> <translation id="5344579389779391559">Bu sayfa sizden para almaya çalışabilir</translation> @@ -1533,6 +1538,7 @@ <translation id="6671697161687535275">Form önerisi Chromium'dan kaldırılsın mı?</translation> <translation id="6685834062052613830">Çıkış yapın ve kurulumu tamamlayın</translation> <translation id="6687335167692595844">Yazı tipi boyutu istendi</translation> +<translation id="6688743156324860098">Güncelle…</translation> <translation id="6689249931105087298">Siyah nokta sıkıştırma ile göreli</translation> <translation id="6689271823431384964">Chrome, oturumunuz açık olduğu için kartlarınızı Google Hesabınıza kaydetmeyi öneriyor. Bu davranışı ayarlardan değiştirebilirsiniz. Kart sahibinin adı hesabınızdan gelir.</translation> <translation id="6698381487523150993">Oluşturma tarihi:</translation> @@ -1548,6 +1554,7 @@ <translation id="6744009308914054259">Bağlantı kurulmasını beklerken çevrimdışı makaleleri okumak için İndirilenler bölümünü ziyaret edebilirsiniz.</translation> <translation id="6753269504797312559">Politika değeri</translation> <translation id="6757797048963528358">Cihazınız uyku moduna geçti.</translation> +<translation id="6767985426384634228">Adres Güncellensin mi?</translation> <translation id="6768213884286397650">Hagaki (Kartpostal)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Mor</translation> @@ -1707,6 +1714,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Geçerli değil</translation> <translation id="7390545607259442187">Kartı Onayla</translation> +<translation id="7392089738299859607">Adresi Güncelle</translation> <translation id="7399802613464275309">Güvenlik Kontrolü</translation> <translation id="7400418766976504921">URL</translation> <translation id="7403591733719184120"><ph name="DEVICE_NAME" /> adlı cihazınız yönetilmektedir</translation> @@ -1845,6 +1853,7 @@ <translation id="7865448901209910068">En iyi hız</translation> <translation id="7874263914261512992">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chrome, <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ve bu şifreyi kullandığınız diğer sitelerdeki kayıtlı şifrelerinizi hemen kontrol etmenizi öneriyor.</translation> <translation id="7878562273885520351">Şifrenizin güvenliği ihlal edilmiş olabilir</translation> +<translation id="7880146494886811634">Adresi Kaydet</translation> <translation id="7882421473871500483">Kahverengi</translation> <translation id="7887683347370398519">CVC'nizi kontrol edin ve tekrar deneyin</translation> <translation id="7887885240995164102">Pencere içinde pencere moduna gir</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 2163356..0218010 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -308,12 +308,14 @@ <translation id="2042213636306070719">Лоток 7</translation> <translation id="204357726431741734">Увійдіть, щоб користуватися паролями, збереженими в обліковому записі Google</translation> <translation id="2053111141626950936">Сторінки цією мовою (<ph name="LANGUAGE" />) не перекладатимуться.</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється щодня.}=1{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється щодня.}one{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється кожен {NUM_DAYS} день.}few{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється кожні {NUM_DAYS} дні.}many{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється кожні {NUM_DAYS} днів.}other{Коли цей елемент керування ввімкнено й активовано, Chrome аналізує ваші нещодавні дії у веб-переглядачі та визначає, до якої великої групи чи "когорти" людей вас віднести. Рекламодавці можуть вибирати оголошення для цієї групи. Ваші дії у веб-переглядачі конфіденційно зберігаються на пристрої. Ваша група оновлюється кожні {NUM_DAYS} дня.}}</translation> <translation id="2053553514270667976">Поштовий індекс</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 пропозиція}one{# пропозиція}few{# пропозиції}many{# пропозицій}other{# пропозиції}}</translation> <translation id="2071692954027939183">Сповіщення автоматично заблоковано, оскільки ви зазвичай не дозволяєте їх</translation> <translation id="2079545284768500474">Відмінити</translation> <translation id="20817612488360358">Системні параметри проксі-сервера налаштовано для використання, але чітко вказано налаштування проксі-сервера.</translation> <translation id="2082238445998314030">Результат <ph name="RESULT_NUMBER" /> з <ph name="TOTAL_RESULTS" /></translation> +<translation id="2085876078937250610">Зберегти…</translation> <translation id="2088086323192747268">Кнопка "Керувати синхронізацією"; натисніть Enter, щоб вибрати в налаштуваннях Chrome, яку інформацію синхронізувати</translation> <translation id="2091887806945687916">Сигнал</translation> <translation id="2094505752054353250">Невідповідність домену</translation> @@ -394,6 +396,7 @@ <translation id="2355395290879513365">Зловмисники можуть бачити зображення, які ви переглядаєте на цьому сайті, і змінювати їх із метою ошукати вас.</translation> <translation id="2356070529366658676">Запитати</translation> <translation id="2357481397660644965">Вашим пристроєм керує <ph name="DEVICE_MANAGER" />, а обліковим записом – <ph name="ACCOUNT_MANAGER" />.</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Менше ніж через день}=1{Через день}one{Через {NUM_DAYS} день}few{Через {NUM_DAYS} дні}many{Через {NUM_DAYS} днів}other{Через {NUM_DAYS} дня}}</translation> <translation id="2359629602545592467">Декілька</translation> <translation id="2359808026110333948">Продовжити</translation> <translation id="2359961752320758691">Застосовується номер віртуальної картки.</translation> @@ -714,6 +717,7 @@ <translation id="3590643883886679995">Коли ви вимкнете режим анонімного перегляду, дані для входу зберігатимуться на цьому пристрої.</translation> <translation id="359126217934908072">Місяць/рік:</translation> <translation id="3592413004129370115">Italian (конверт)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає приблизно один день.}=1{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає приблизно один день.}one{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає {NUM_DAYS} день.}few{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає {NUM_DAYS} дні.}many{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає {NUM_DAYS} днів.}other{Ви можете будь-коли скинути цю групу. Перехід у нову групу займає {NUM_DAYS} дня.}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Додаток заблоковано адміністратором</translation> <translation id="3608932978122581043">Орієнтація стрічки</translation> @@ -1201,6 +1205,7 @@ <translation id="5332219387342487447">Спосіб доставки</translation> <translation id="5333022057423422993">Веб-переглядач Chrome виявив, що введений пароль розкрито через порушення безпеки даних. Щоб захистити свої облікові записи, радимо перевірити надійність збережених паролів.</translation> <translation id="5334013548165032829">Докладні журнали системи</translation> +<translation id="5334145288572353250">Зберегти адресу?</translation> <translation id="5340250774223869109">Додаток заблоковано</translation> <translation id="534295439873310000">Пристрої NFC</translation> <translation id="5344579389779391559">Ця сторінка може спробувати стягнути плату</translation> @@ -1540,6 +1545,7 @@ <translation id="6671697161687535275">Видалити пропозицію автозаповнення форм із Chromium?</translation> <translation id="6685834062052613830">Вийдіть з облікового запису та завершіть процедуру налаштування</translation> <translation id="6687335167692595844">Запит на розмір шрифту</translation> +<translation id="6688743156324860098">Оновити…</translation> <translation id="6689249931105087298">Відносно стиснення чорної точки</translation> <translation id="6689271823431384964">Chrome пропонує вам зберегти картки в обліковому записі Google, оскільки ви ввійшли в нього. Це можна змінити в налаштуваннях. Ім'я власника картки взято з вашого облікового запису.</translation> <translation id="6698381487523150993">Створено:</translation> @@ -1555,6 +1561,7 @@ <translation id="6744009308914054259">Очікуючи на з’єднання, можете перейти в папку "Завантаження" й переглянути статті, доступні в режимі офлайн.</translation> <translation id="6753269504797312559">Значення правила</translation> <translation id="6757797048963528358">Ваш пристрій перейшов у режим сну.</translation> +<translation id="6767985426384634228">Оновити адресу?</translation> <translation id="6768213884286397650">Hagaki (листівка)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">Фіолетовий</translation> @@ -1714,6 +1721,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">Не застосовується</translation> <translation id="7390545607259442187">Підтвердити дані картки</translation> +<translation id="7392089738299859607">Оновіть адресу</translation> <translation id="7399802613464275309">Перевірка безпеки</translation> <translation id="7400418766976504921">URL-адреса</translation> <translation id="7403591733719184120">Пристроєм <ph name="DEVICE_NAME" /> керує адміністратор</translation> @@ -1852,6 +1860,7 @@ <translation id="7865448901209910068">Оптимальна швидкість</translation> <translation id="7874263914261512992">Щойно ви ввели пароль на оманливому сайті. Chrome радить перевірити збережені паролі для <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> та інших сайтів, де використовується цей пароль.</translation> <translation id="7878562273885520351">Ваш пароль можуть зламати</translation> +<translation id="7880146494886811634">Збережіть адресу</translation> <translation id="7882421473871500483">Коричневий</translation> <translation id="7887683347370398519">Перевірте код CVC й повторіть спробу</translation> <translation id="7887885240995164102">Увімкнути режим "Картинка в картинці"</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index f8bab25e..8fdea18 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">纸匣 7</translation> <translation id="204357726431741734">登录后即可使用您 Google 帐号中保存的密码</translation> <translation id="2053111141626950936">系统不会翻译<ph name="LANGUAGE" />网页。</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{如果此控件已开启且处于有效状态,Chrome 会确定您近期的浏览活动与哪个大型用户群组或“同类群组”最接近。广告主可为群组选择广告,您的浏览活动记录会私密地保留在您的设备上。系统会按每天 1 次的频率更新您所属的群组。}=1{如果此控件已开启且处于有效状态,Chrome 会确定您近期的浏览活动与哪个大型用户群组或“同类群组”最接近。广告主可为群组选择广告,您的浏览活动记录会私密地保留在您的设备上。系统会按每天 1 次的频率更新您所属的群组。}other{如果此控件已开启且处于有效状态,Chrome 会确定您近期的浏览活动与哪个大型用户群组或“同类群组”最接近。广告主可为群组选择广告,您的浏览活动记录会私密地保留在您的设备上。系统会按每 {NUM_DAYS} 天 1 次的频率更新您所属的群组。}}</translation> <translation id="2053553514270667976">邮编</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 条建议}other{# 条建议}}</translation> <translation id="2071692954027939183">由于您通常不允许显示通知,系统已自动屏蔽通知</translation> <translation id="2079545284768500474">撤消</translation> <translation id="20817612488360358">已设置为使用系统代理设置,但同时指定了一个明确的代理配置。</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 条结果,共 <ph name="TOTAL_RESULTS" /> 条</translation> +<translation id="2085876078937250610">保存…</translation> <translation id="2088086323192747268">“管理同步数据”按钮,按 Enter 键即可在 Chrome 设置中管理您要同步的信息</translation> <translation id="2091887806945687916">声音</translation> <translation id="2094505752054353250">网域不匹配</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">攻击者可能能够看到您正在此网站上浏览的图片,并通过编辑这些图片让您受骗。</translation> <translation id="2356070529366658676">询问</translation> <translation id="2357481397660644965">您的设备由 <ph name="DEVICE_MANAGER" /> 管理,您的帐号由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{不到 1 天后}=1{1 天后}other{{NUM_DAYS} 天后}}</translation> <translation id="2359629602545592467">多种货币</translation> <translation id="2359808026110333948">继续</translation> <translation id="2359961752320758691">已应用您的虚拟卡号。</translation> @@ -707,6 +710,7 @@ <translation id="3590643883886679995">当您退出无痕模式后,登录数据会存储在此设备中。</translation> <translation id="359126217934908072">月/年:</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{您可以随时重置自己所属的群组。大约需要 1 天的时间才能加入新群组。}=1{您可以随时重置自己所属的群组。大约需要 1 天的时间才能加入新群组。}other{您可以随时重置自己所属的群组。大约需要 {NUM_DAYS} 天的时间才能加入新群组。}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />,<ph name="DOMAIN" />,<ph name="TIME" /></translation> <translation id="3603507503523709">已被您的管理员禁用的应用</translation> <translation id="3608932978122581043">送纸方向</translation> @@ -1188,6 +1192,7 @@ <translation id="5332219387342487447">送货方式</translation> <translation id="5333022057423422993">Chrome 发现您刚才使用的密码已遭遇数据泄露。为确保您的帐号安全,建议您检查您保存的密码。</translation> <translation id="5334013548165032829">详细的系统日志</translation> +<translation id="5334145288572353250">保存地址?</translation> <translation id="5340250774223869109">此应用已被禁用</translation> <translation id="534295439873310000">NFC 设备</translation> <translation id="5344579389779391559">此页面可能会向您收取费用</translation> @@ -1526,6 +1531,7 @@ <translation id="6671697161687535275">要从 Chromium 中移除表单填写建议吗?</translation> <translation id="6685834062052613830">请退出并完成设置</translation> <translation id="6687335167692595844">请求的字号</translation> +<translation id="6688743156324860098">更新…</translation> <translation id="6689249931105087298">相对(使用黑点压缩)</translation> <translation id="6689271823431384964">Chrome 正在询问是否要将卡保存到您的 Google 帐号中,因为您已登录。您可在“设置”中更改此行为。持卡人姓名来自您的帐号。</translation> <translation id="6698381487523150993">创建时间:</translation> @@ -1541,6 +1547,7 @@ <translation id="6744009308914054259">在等待连接时,您可以前往“下载内容”页面阅读离线文章。</translation> <translation id="6753269504797312559">政策值</translation> <translation id="6757797048963528358">您的设备已进入休眠模式。</translation> +<translation id="6767985426384634228">更新地址?</translation> <translation id="6768213884286397650">Hagaki (Postcard)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">紫罗兰色</translation> @@ -1700,6 +1707,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">不适用</translation> <translation id="7390545607259442187">确认信用卡</translation> +<translation id="7392089738299859607">更新地址</translation> <translation id="7399802613464275309">安全检查</translation> <translation id="7400418766976504921">网址</translation> <translation id="7403591733719184120">您的 <ph name="DEVICE_NAME" /> 受管理</translation> @@ -1838,6 +1846,7 @@ <translation id="7865448901209910068">最快的速度</translation> <translation id="7874263914261512992">您刚刚在一个诈骗网站中输入了密码。Chrome 建议您立即前往 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及使用此密码的其他网站检查您保存的密码。</translation> <translation id="7878562273885520351">您的密码可能会被盗用</translation> +<translation id="7880146494886811634">保存地址</translation> <translation id="7882421473871500483">棕色</translation> <translation id="7887683347370398519">请检查您的银行卡验证码 (CVC),然后重试</translation> <translation id="7887885240995164102">进入“画中画”模式</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index 63a1750..2f1110a 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">紙匣 7</translation> <translation id="204357726431741734">登入即可使用儲存在 Google 帳戶中的密碼</translation> <translation id="2053111141626950936">系統將不會翻譯<ph name="LANGUAGE" />網頁。</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每日更新您所屬的群組。}=1{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每日更新您所屬的群組。}other{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每隔 {NUM_DAYS} 日更新您所屬的群組。}}</translation> <translation id="2053553514270667976">郵遞區號</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 個建議}other{# 個建議}}</translation> <translation id="2071692954027939183">由於您通常不允許通知,因此系統已自動封鎖通知</translation> <translation id="2079545284768500474">復原</translation> <translation id="20817612488360358">雖然系統 Proxy 設定已設為使用,不過也指定了明確的 Proxy 設定。</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 項結果 (共 <ph name="TOTAL_RESULTS" /> 項)</translation> +<translation id="2085876078937250610">儲存…</translation> <translation id="2088086323192747268">管理同步功能按鈕,㩒一下 Enter 鍵就可以喺 Chrome 設定度管理同步資料</translation> <translation id="2091887806945687916">音效</translation> <translation id="2094505752054353250">網域不符</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">攻擊者可能可以看到您正在此網站上看到的圖片,然後透過修改圖片來欺騙您。</translation> <translation id="2356070529366658676">詢問</translation> <translation id="2357481397660644965">您的裝置由 <ph name="DEVICE_MANAGER" /> 管理,而您的帳戶由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{少於 1 天內}=1{1 天後}other{{NUM_DAYS} 天後}}</translation> <translation id="2359629602545592467">多種貨幣</translation> <translation id="2359808026110333948">繼續</translation> <translation id="2359961752320758691">已套用虛擬卡號。</translation> @@ -709,6 +712,7 @@ <translation id="3590643883886679995">離開無痕模式後,登入資料會儲存在此裝置中。</translation> <translation id="359126217934908072">月/年:</translation> <translation id="3592413004129370115">Italian (信封)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{您可隨時重設群組。加入新群組約需時 1 天。}=1{您可隨時重設群組。加入新群組約需時 1 天。}other{您可隨時重設群組。加入新群組約需時 {NUM_DAYS} 天。}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />,<ph name="DOMAIN" />,<ph name="TIME" /></translation> <translation id="3603507503523709">您的管理員已封鎖應用程式</translation> <translation id="3608932978122581043">送紙方向</translation> @@ -1191,6 +1195,7 @@ <translation id="5332219387342487447">運送方式</translation> <translation id="5333022057423422993">Chrome 發現您剛才使用的密碼因資料外洩而被洩露。如要確保帳戶安全,建議您檢查已儲存的密碼。</translation> <translation id="5334013548165032829">詳細系統記錄</translation> +<translation id="5334145288572353250">要儲存地址嗎?</translation> <translation id="5340250774223869109">已封鎖應用程式</translation> <translation id="534295439873310000">NFC 裝置</translation> <translation id="5344579389779391559">此網頁可能會向您收取費用</translation> @@ -1530,6 +1535,7 @@ <translation id="6671697161687535275">要從 Chromium 移除表格建議嗎?</translation> <translation id="6685834062052613830">請登出並完成設定程序</translation> <translation id="6687335167692595844">要求的字型大小</translation> +<translation id="6688743156324860098">更新…</translation> <translation id="6689249931105087298">與黑點壓縮相對</translation> <translation id="6689271823431384964">由於您已登入,因此 Chrome 提議將您的付款卡儲存至 Google 帳戶。您可在設定中變更此行為。持卡人姓名來自您的帳戶。</translation> <translation id="6698381487523150993">已建立:</translation> @@ -1545,6 +1551,7 @@ <translation id="6744009308914054259">等待連線時,您可以前往「下載」閱讀離線文章。</translation> <translation id="6753269504797312559">政策值</translation> <translation id="6757797048963528358">您的裝置已進入休眠狀態。</translation> +<translation id="6767985426384634228">要更新地址嗎?</translation> <translation id="6768213884286397650">Hagaki (明信片)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">紫羅蘭色</translation> @@ -1704,6 +1711,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">不適用</translation> <translation id="7390545607259442187">驗證信用卡</translation> +<translation id="7392089738299859607">更新地址</translation> <translation id="7399802613464275309">安全檢查</translation> <translation id="7400418766976504921">網址</translation> <translation id="7403591733719184120">您的 <ph name="DEVICE_NAME" /> 已受管理</translation> @@ -1842,6 +1850,7 @@ <translation id="7865448901209910068">最佳速度</translation> <translation id="7874263914261512992">您剛才在欺詐網站上輸入了密碼。Chrome 建議您立即檢查已儲存在 <ph name="WEBSITE_1" />、<ph name="WEBSITE_2" /> 以及其他您使用此密碼的網站。</translation> <translation id="7878562273885520351">您的密碼可能會被盜用</translation> +<translation id="7880146494886811634">儲存地址</translation> <translation id="7882421473871500483">啡色</translation> <translation id="7887683347370398519">請檢查您的 CVC,然後再試一次</translation> <translation id="7887885240995164102">進入畫中畫</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index e8dcf07..f09495b 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -304,12 +304,14 @@ <translation id="2042213636306070719">紙匣 7</translation> <translation id="204357726431741734">登入以使用儲存在 Google 帳戶中的密碼</translation> <translation id="2053111141626950936">系統不會翻譯<ph name="LANGUAGE" />網頁。</translation> +<translation id="2053373601901562871">{NUM_DAYS,plural, =0{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而且你的瀏覽記錄會保留在裝置上,且只供你本人存取。你所在的群組會每天更新。}=1{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而且你的瀏覽記錄會保留在裝置上,且只供你本人存取。你所在的群組會每天更新。}other{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而且你的瀏覽記錄會保留在裝置上,且只供你本人存取。你所在的群組會每隔 {NUM_DAYS} 天更新。}}</translation> <translation id="2053553514270667976">郵遞區號</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 個建議項目}other{# 個建議項目}}</translation> <translation id="2071692954027939183">系統已按照你的習慣自動封鎖通知</translation> <translation id="2079545284768500474">復原</translation> <translation id="20817612488360358">雖然系統 Proxy 設定已設為使用,不過也指定了明確 Proxy 設定。</translation> <translation id="2082238445998314030">第 <ph name="RESULT_NUMBER" /> 個結果,共 <ph name="TOTAL_RESULTS" /> 個</translation> +<translation id="2085876078937250610">儲存…</translation> <translation id="2088086323192747268">「管理同步功能」按鈕;按下 Enter 鍵即可在 Chrome 設定中管理要同步處理哪些資訊</translation> <translation id="2091887806945687916">音訊</translation> <translation id="2094505752054353250">網域不符</translation> @@ -390,6 +392,7 @@ <translation id="2355395290879513365">攻擊者可能會看到你正在這個網站上瀏覽的圖片,並以修改圖片內容的方式讓你受騙。</translation> <translation id="2356070529366658676">詢問</translation> <translation id="2357481397660644965">你的裝置是由 <ph name="DEVICE_MANAGER" /> 管理,帳戶是由 <ph name="ACCOUNT_MANAGER" /> 管理。</translation> +<translation id="2359347814217202136">{NUM_DAYS,plural, =0{不到 1 天後}=1{1 天後}other{{NUM_DAYS} 天後}}</translation> <translation id="2359629602545592467">多種</translation> <translation id="2359808026110333948">繼續</translation> <translation id="2359961752320758691">已套用虛擬卡號。</translation> @@ -710,6 +713,7 @@ <translation id="3590643883886679995">系統會在無痕模式結束後將登入資料儲存在這部裝置上。</translation> <translation id="359126217934908072">月/年:</translation> <translation id="3592413004129370115">Italian (信封)</translation> +<translation id="3595699422137460894">{NUM_DAYS,plural, =0{你隨時可以重設群組。大約需要 1 天才能加入新群組。}=1{你隨時可以重設群組。大約需要 1 天才能加入新群組。}other{你隨時可以重設群組。需要 {NUM_DAYS} 天才能加入新群組。}}</translation> <translation id="3600246354004376029"><ph name="TITLE" />,<ph name="DOMAIN" />,<ph name="TIME" /></translation> <translation id="3603507503523709">已遭系統管理員封鎖的應用程式</translation> <translation id="3608932978122581043">送紙方向</translation> @@ -1192,6 +1196,7 @@ <translation id="5332219387342487447">運送方式</translation> <translation id="5333022057423422993">Chrome 發現你剛才使用的密碼因為資料侵害事件而遭到外洩。如要確保帳戶安全,建議你檢查已儲存的密碼。</translation> <translation id="5334013548165032829">詳細系統記錄</translation> +<translation id="5334145288572353250">要儲存地址嗎?</translation> <translation id="5340250774223869109">應用程式已遭封鎖</translation> <translation id="534295439873310000">NFC 裝置</translation> <translation id="5344579389779391559">進入接下來的頁面後,系統可能會向您收費</translation> @@ -1531,6 +1536,7 @@ <translation id="6671697161687535275">要從 Chromium 中移除表單填寫建議嗎?</translation> <translation id="6685834062052613830">請登出並完成設定程序</translation> <translation id="6687335167692595844">要求的字型大小</translation> +<translation id="6688743156324860098">更新…</translation> <translation id="6689249931105087298">與黑點壓縮相對</translation> <translation id="6689271823431384964">你已登入帳戶,因此 Chrome 詢問你是否要將卡片儲存至 Google 帳戶。你可以在設定中變更這項行為。持卡人姓名來自你的帳戶。</translation> <translation id="6698381487523150993">建立於:</translation> @@ -1546,6 +1552,7 @@ <translation id="6744009308914054259">等待連線的同時,你可以前往「下載」頁面閱讀離線文章。</translation> <translation id="6753269504797312559">政策值</translation> <translation id="6757797048963528358">您的裝置已進入睡眠模式。</translation> +<translation id="6767985426384634228">要更新地址嗎?</translation> <translation id="6768213884286397650">Hagaki (明信片)</translation> <translation id="6775759552199460396">JIS B2</translation> <translation id="67862343314499040">紫羅蘭色</translation> @@ -1705,6 +1712,7 @@ <translation id="7378810950367401542">/</translation> <translation id="7386364858855961704">不適用</translation> <translation id="7390545607259442187">驗證信用卡</translation> +<translation id="7392089738299859607">更新地址</translation> <translation id="7399802613464275309">安全檢查</translation> <translation id="7400418766976504921">網址</translation> <translation id="7403591733719184120">你的 <ph name="DEVICE_NAME" /> 受到管理</translation> @@ -1843,6 +1851,7 @@ <translation id="7865448901209910068">最佳速度</translation> <translation id="7874263914261512992">你剛才在詐騙網站上輸入了密碼。Chrome 建議你立即檢查為以下網站儲存的密碼:<ph name="WEBSITE_1" />、<ph name="WEBSITE_2" />,以及使用這組密碼的其他網站。</translation> <translation id="7878562273885520351">你的密碼可能已經外洩</translation> +<translation id="7880146494886811634">儲存地址</translation> <translation id="7882421473871500483">棕色</translation> <translation id="7887683347370398519">請檢查您的信用卡驗證碼,然後再試一次</translation> <translation id="7887885240995164102">進入子母畫面</translation>
diff --git a/components/sync/driver/data_type_manager_impl.cc b/components/sync/driver/data_type_manager_impl.cc index 02e2c498..44f6bf1 100644 --- a/components/sync/driver/data_type_manager_impl.cc +++ b/components/sync/driver/data_type_manager_impl.cc
@@ -53,7 +53,6 @@ DataTypeManagerImpl::AssociationTypesInfo::~AssociationTypesInfo() = default; DataTypeManagerImpl::DataTypeManagerImpl( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const DataTypeEncryptionHandler* encryption_handler, @@ -61,7 +60,6 @@ DataTypeManagerObserver* observer) : configurer_(configurer), controllers_(controllers), - downloaded_types_(initial_types), debug_info_listener_(debug_info_listener), model_load_manager_(controllers, this), observer_(observer), @@ -69,6 +67,10 @@ DCHECK(configurer_); DCHECK(observer_); + // This class does not really handle NIGORI (whose controller lives on a + // different thread). + DCHECK_EQ(controllers_->count(NIGORI), 0u); + // Check if any of the controllers are already in a FAILED state, and if so, // mark them accordingly in the status table. DataTypeStatusTable::TypeErrorMap existing_errors;
diff --git a/components/sync/driver/data_type_manager_impl.h b/components/sync/driver/data_type_manager_impl.h index 2fe175d..f54b3f77 100644 --- a/components/sync/driver/data_type_manager_impl.h +++ b/components/sync/driver/data_type_manager_impl.h
@@ -30,10 +30,7 @@ class DataTypeManagerImpl : public DataTypeManager, public ModelLoadManagerDelegate { public: - // TODO(crbug.com/1170318): Get rid of the |initial_types| param, it doesn't - // seem to actually do anything. DataTypeManagerImpl( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const DataTypeEncryptionHandler* encryption_handler, @@ -178,7 +175,13 @@ State state_ = DataTypeManager::STOPPED; // The set of types whose initial download of sync data has completed. - ModelTypeSet downloaded_types_; + // TODO(crbug.com/1170318): This class does not actually handle control types + // (i.e. NIGORI) - |controllers_| doesn't contain an entry for NIGORI. + // However, we have to pretend that NIGORI is already downloaded (which it + // is, but this class doesn't know that) to prevent a re-download on every + // browser startup. It would be cleaner to remove all NIGORI/ControlTypes() + // handling from this class. + ModelTypeSet downloaded_types_ = ControlTypes(); // Types that requested in current configuration cycle. ModelTypeSet last_requested_types_;
diff --git a/components/sync/driver/data_type_manager_impl_unittest.cc b/components/sync/driver/data_type_manager_impl_unittest.cc index 7c1b96e..05719d7b 100644 --- a/components/sync/driver/data_type_manager_impl_unittest.cc +++ b/components/sync/driver/data_type_manager_impl_unittest.cc
@@ -220,10 +220,10 @@ protected: void SetUp() override { RecreateDataTypeManager(); } - void RecreateDataTypeManager(ModelTypeSet initial_types = ModelTypeSet()) { + void RecreateDataTypeManager() { dtm_ = std::make_unique<DataTypeManagerImpl>( - initial_types, MakeWeakHandle(debug_info_listener_.AsWeakPtr()), - &controllers_, &encryption_handler_, &configurer_, &observer_); + MakeWeakHandle(debug_info_listener_.AsWeakPtr()), &controllers_, + &encryption_handler_, &configurer_, &observer_); } void SetConfigureStartExpectation() { observer_.ExpectStart(); } @@ -825,18 +825,25 @@ SetConfigureStartExpectation(); SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable()); - // Initially only PRIORITY_PREFERENCES is downloaded. + // Start the configuration. + ASSERT_EQ(0, configurer_.configure_call_count()); Configure(ModelTypeSet(BOOKMARKS, PRIORITY_PREFERENCES)); + // This causes an immediate ConfigureDataTypes() call for control types, i.e. + // Nigori. It's important that this does *not* ask for any types to be + // downloaded, see crbug.com/1170318 and crbug.com/1187914. + ASSERT_NE(0, configurer_.configure_call_count()); + EXPECT_EQ(ModelTypeSet(), last_configure_params().to_download); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); - FinishDownload(ModelTypeSet(), ModelTypeSet()); // control types + // Finishing the no-op download of the control types causes the next + // ConfigureDataTypes() call, for priority types. + FinishDownload(ModelTypeSet(), ModelTypeSet()); EXPECT_EQ(AddControlTypesTo(PRIORITY_PREFERENCES), last_configure_params().to_download); // BOOKMARKS is downloaded after PRIORITY_PREFERENCES finishes. FinishDownload(ModelTypeSet(PRIORITY_PREFERENCES), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); - EXPECT_EQ(ModelTypeSet(BOOKMARKS, NIGORI), - last_configure_params().to_download); + EXPECT_EQ(AddControlTypesTo(BOOKMARKS), last_configure_params().to_download); FinishDownload(ModelTypeSet(BOOKMARKS), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); @@ -861,8 +868,7 @@ FinishDownload(ModelTypeSet(PRIORITY_PREFERENCES), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); - EXPECT_EQ(ModelTypeSet(BOOKMARKS, NIGORI), - last_configure_params().to_download); + EXPECT_EQ(AddControlTypesTo(BOOKMARKS), last_configure_params().to_download); // Enable syncing for APPS. Configure(ModelTypeSet(BOOKMARKS, PRIORITY_PREFERENCES, APPS)); @@ -877,7 +883,7 @@ FinishDownload(ModelTypeSet(), ModelTypeSet()); // control types FinishDownload(ModelTypeSet(PRIORITY_PREFERENCES), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); - EXPECT_EQ(ModelTypeSet(APPS, NIGORI), last_configure_params().to_download); + EXPECT_EQ(AddControlTypesTo(APPS), last_configure_params().to_download); FinishDownload(ModelTypeSet(BOOKMARKS, APPS), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state()); @@ -901,8 +907,7 @@ // BOOKMARKS is configured after download of PRIORITY_PREFERENCES finishes. FinishDownload(ModelTypeSet(PRIORITY_PREFERENCES), ModelTypeSet()); EXPECT_EQ(DataTypeManager::CONFIGURING, dtm_->state()); - EXPECT_EQ(ModelTypeSet(BOOKMARKS, NIGORI), - last_configure_params().to_download); + EXPECT_EQ(AddControlTypesTo(BOOKMARKS), last_configure_params().to_download); // PRIORITY_PREFERENCES controller is running while BOOKMARKS is downloading. EXPECT_EQ(DataTypeController::RUNNING, @@ -1278,9 +1283,8 @@ // Test that sync configures properly if all types are ready. TEST_F(SyncDataTypeManagerImplTest, AllTypesReady) { - // Mark PRIORITY_PREFERENCES and BOOKMARKS as already downloaded. - RecreateDataTypeManager(/*initial_types=*/{PRIORITY_PREFERENCES, BOOKMARKS}); - + // TODO(crbug.com/1170318): Mark PRIORITY_PREFERENCES and BOOKMARKS as already + // downloaded (and fix that the test passes even without that!). AddController(PRIORITY_PREFERENCES); AddController(BOOKMARKS);
diff --git a/components/sync/driver/fake_sync_api_component_factory.cc b/components/sync/driver/fake_sync_api_component_factory.cc index 8ba561f..f8fab81 100644 --- a/components/sync/driver/fake_sync_api_component_factory.cc +++ b/components/sync/driver/fake_sync_api_component_factory.cc
@@ -32,15 +32,14 @@ std::unique_ptr<DataTypeManager> FakeSyncApiComponentFactory::CreateDataTypeManager( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const DataTypeEncryptionHandler* encryption_handler, ModelTypeConfigurer* configurer, DataTypeManagerObserver* observer) { auto data_type_manager = std::make_unique<TestDataTypeManagerImpl>( - initial_types, debug_info_listener, controllers, encryption_handler, - configurer, observer); + debug_info_listener, controllers, encryption_handler, configurer, + observer); last_created_data_type_manager_ = data_type_manager->AsWeakPtr(); return data_type_manager; }
diff --git a/components/sync/driver/fake_sync_api_component_factory.h b/components/sync/driver/fake_sync_api_component_factory.h index 5645b9c..449aa82 100644 --- a/components/sync/driver/fake_sync_api_component_factory.h +++ b/components/sync/driver/fake_sync_api_component_factory.h
@@ -49,7 +49,6 @@ // SyncApiComponentFactory overrides. std::unique_ptr<DataTypeManager> CreateDataTypeManager( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const DataTypeEncryptionHandler* encryption_handler,
diff --git a/components/sync/driver/glue/sync_engine_backend.cc b/components/sync/driver/glue/sync_engine_backend.cc index 2b49b7d..caffca5 100644 --- a/components/sync/driver/glue/sync_engine_backend.cc +++ b/components/sync/driver/glue/sync_engine_backend.cc
@@ -312,11 +312,11 @@ return; } - host_.Call( - FROM_HERE, &SyncEngineImpl::HandleInitializationSuccessOnFrontendLoop, - sync_manager_->GetEnabledTypes(), sync_manager_->GetDebugInfoListener(), - sync_manager_->GetModelTypeConnectorProxy(), sync_manager_->birthday(), - sync_manager_->bag_of_chips()); + host_.Call(FROM_HERE, + &SyncEngineImpl::HandleInitializationSuccessOnFrontendLoop, + sync_manager_->GetDebugInfoListener(), + sync_manager_->GetModelTypeConnectorProxy(), + sync_manager_->birthday(), sync_manager_->bag_of_chips()); } void SyncEngineBackend::DoSetDecryptionPassphrase(
diff --git a/components/sync/driver/glue/sync_engine_impl.cc b/components/sync/driver/glue/sync_engine_impl.cc index 207282a..0e904e65 100644 --- a/components/sync/driver/glue/sync_engine_impl.cc +++ b/components/sync/driver/glue/sync_engine_impl.cc
@@ -419,7 +419,6 @@ } void SyncEngineImpl::HandleInitializationSuccessOnFrontendLoop( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener> debug_info_listener, std::unique_ptr<ModelTypeConnector> model_type_connector, const std::string& birthday, @@ -464,14 +463,13 @@ UpdateLastSyncedTime(); } - host_->OnEngineInitialized(initial_types, debug_info_listener, - /*success=*/true, is_first_time_sync_configure); + host_->OnEngineInitialized(debug_info_listener, /*success=*/true, + is_first_time_sync_configure); } void SyncEngineImpl::HandleInitializationFailureOnFrontendLoop() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - host_->OnEngineInitialized(ModelTypeSet(), - WeakHandle<DataTypeDebugInfoListener>(), + host_->OnEngineInitialized(WeakHandle<DataTypeDebugInfoListener>(), /*success=*/false, /*is_first_time_sync_configure=*/false); }
diff --git a/components/sync/driver/glue/sync_engine_impl.h b/components/sync/driver/glue/sync_engine_impl.h index f1ec634..d8bf223 100644 --- a/components/sync/driver/glue/sync_engine_impl.h +++ b/components/sync/driver/glue/sync_engine_impl.h
@@ -126,8 +126,7 @@ // // |model_type_connector| is our ModelTypeConnector, which is owned because in // production it is a proxy object to the real ModelTypeConnector. - virtual void HandleInitializationSuccessOnFrontendLoop( - ModelTypeSet initial_types, + void HandleInitializationSuccessOnFrontendLoop( const WeakHandle<DataTypeDebugInfoListener> debug_info_listener, std::unique_ptr<ModelTypeConnector> model_type_connector, const std::string& birthday,
diff --git a/components/sync/driver/glue/sync_engine_impl_unittest.cc b/components/sync/driver/glue/sync_engine_impl_unittest.cc index 92648b3..43420f7 100644 --- a/components/sync/driver/glue/sync_engine_impl_unittest.cc +++ b/components/sync/driver/glue/sync_engine_impl_unittest.cc
@@ -4,9 +4,7 @@ #include "components/sync/driver/glue/sync_engine_impl.h" -#include <cstddef> -#include <map> -#include <set> +#include <memory> #include <string> #include <utility> @@ -16,7 +14,6 @@ #include "base/files/scoped_temp_dir.h" #include "base/location.h" #include "base/run_loop.h" -#include "base/synchronization/waitable_event.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" #include "base/test/mock_callback.h" @@ -27,8 +24,6 @@ #include "base/time/time.h" #include "build/build_config.h" #include "components/invalidation/impl/invalidation_logger.h" -#include "components/invalidation/impl/invalidation_switches.h" -#include "components/invalidation/impl/profile_invalidation_provider.h" #include "components/invalidation/public/invalidation_service.h" #include "components/invalidation/public/invalidation_util.h" #include "components/invalidation/public/invalidator_state.h" @@ -46,15 +41,12 @@ #include "components/sync/protocol/sync_invalidations_payload.pb.h" #include "components/sync/test/engine/fake_sync_manager.h" #include "components/sync/test/engine/sync_engine_host_stub.h" -#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/test/test_network_connection_tracker.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" using testing::_; using testing::NiceMock; -using testing::NotNull; namespace syncer { @@ -66,16 +58,12 @@ class TestSyncEngineHost : public SyncEngineHostStub { public: - explicit TestSyncEngineHost( - base::OnceCallback<void(ModelTypeSet)> set_engine_types) - : set_engine_types_(std::move(set_engine_types)) {} + TestSyncEngineHost() = default; - void OnEngineInitialized(ModelTypeSet initial_types, - const WeakHandle<DataTypeDebugInfoListener>&, + void OnEngineInitialized(const WeakHandle<DataTypeDebugInfoListener>&, bool success, bool is_first_time_sync_configure) override { EXPECT_EQ(expect_success_, success); - std::move(set_engine_types_).Run(initial_types); std::move(quit_closure_).Run(); } @@ -88,7 +76,6 @@ } private: - base::OnceCallback<void(ModelTypeSet)> set_engine_types_; bool expect_success_ = false; base::OnceClosure quit_closure_; }; @@ -102,7 +89,7 @@ fake_manager_(fake_manager) { *fake_manager_ = nullptr; } - ~FakeSyncManagerFactory() override {} + ~FakeSyncManagerFactory() override = default; // SyncManagerFactory implementation. Called on the sync thread. std::unique_ptr<SyncManager> CreateSyncManager( @@ -190,12 +177,8 @@ class SyncEngineImplTest : public testing::Test { protected: - SyncEngineImplTest() - : host_(base::BindOnce(&SyncEngineImplTest::SetEngineTypes, - base::Unretained(this))), - fake_manager_(nullptr) {} - - ~SyncEngineImplTest() override {} + SyncEngineImplTest() = default; + ~SyncEngineImplTest() override = default; void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); @@ -252,10 +235,14 @@ backend_->Initialize(std::move(params)); PumpSyncThread(); - // |fake_manager_factory_|'s fake_manager() is set on the sync - // thread, but we can rely on the message loop barriers to - // guarantee that we see the updated value. + // |fake_manager_| is set on the sync thread, but we can rely on the message + // loop barriers to guarantee that we see the updated value. DCHECK(fake_manager_); + + if (expect_success) { + EXPECT_TRUE(engine_types_.Empty()); + engine_types_ = fake_manager_->GetEnabledTypes(); + } } void ShutdownBackend(ShutdownReason reason) { @@ -271,9 +258,6 @@ } ModelTypeSet ConfigureDataTypesWithUnready(ModelTypeSet unready_types) { - ModelTypeSet disabled_types = - Difference(ModelTypeSet::All(), enabled_types_); - ModelTypeConfigurer::ConfigureParams params; params.reason = CONFIGURE_REASON_RECONFIGURATION; params.enabled_types = Difference(enabled_types_, unready_types); @@ -281,7 +265,7 @@ if (!params.to_download.Empty()) { params.to_download.Put(NIGORI); } - params.to_purge = Intersection(engine_types_, disabled_types); + params.to_purge = Difference(engine_types_, enabled_types_); params.ready_task = base::BindOnce(&SyncEngineImplTest::DownloadReady, base::Unretained(this)); @@ -305,11 +289,6 @@ std::move(quit_loop_).Run(); } - void SetEngineTypes(ModelTypeSet engine_types) { - EXPECT_TRUE(engine_types_.Empty()); - engine_types_ = engine_types; - } - void PumpSyncThread() { base::RunLoop run_loop; quit_loop_ = run_loop.QuitClosure(); @@ -327,7 +306,7 @@ sync_transport_data_cleared_cb_; std::unique_ptr<SyncEngineImpl> backend_; std::unique_ptr<FakeSyncManagerFactory> fake_manager_factory_; - FakeSyncManager* fake_manager_; + FakeSyncManager* fake_manager_ = nullptr; ModelTypeSet engine_types_; ModelTypeSet enabled_types_; base::OnceClosure quit_loop_;
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc index dac2251..6b18b6fd 100644 --- a/components/sync/driver/profile_sync_service.cc +++ b/components/sync/driver/profile_sync_service.cc
@@ -749,7 +749,6 @@ } void ProfileSyncService::OnEngineInitialized( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, bool success, bool is_first_time_sync_configure) { @@ -780,8 +779,8 @@ data_type_manager_ = sync_client_->GetSyncApiComponentFactory()->CreateDataTypeManager( - initial_types, debug_info_listener, &data_type_controllers_, &crypto_, - engine_.get(), this); + debug_info_listener, &data_type_controllers_, &crypto_, engine_.get(), + this); crypto_.SetSyncEngine(GetAuthenticatedAccountInfo(), engine_.get());
diff --git a/components/sync/driver/profile_sync_service.h b/components/sync/driver/profile_sync_service.h index 1650baa..adbca0d 100644 --- a/components/sync/driver/profile_sync_service.h +++ b/components/sync/driver/profile_sync_service.h
@@ -159,7 +159,6 @@ // SyncEngineHost implementation. void OnEngineInitialized( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, bool success, bool is_first_time_sync_configure) override;
diff --git a/components/sync/driver/sync_api_component_factory.h b/components/sync/driver/sync_api_component_factory.h index 1e36f37e..ae716d9 100644 --- a/components/sync/driver/sync_api_component_factory.h +++ b/components/sync/driver/sync_api_component_factory.h
@@ -29,10 +29,9 @@ // service (like SyncableService) implementations. class SyncApiComponentFactory { public: - virtual ~SyncApiComponentFactory() {} + virtual ~SyncApiComponentFactory() = default; virtual std::unique_ptr<DataTypeManager> CreateDataTypeManager( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, const DataTypeController::TypeMap* controllers, const DataTypeEncryptionHandler* encryption_handler,
diff --git a/components/sync/engine/sync_engine_host.h b/components/sync/engine/sync_engine_host.h index b768da49..2830ea1c 100644 --- a/components/sync/engine/sync_engine_host.h +++ b/components/sync/engine/sync_engine_host.h
@@ -32,7 +32,6 @@ // initialized only if |success| is true. virtual void OnEngineInitialized( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, bool success, bool is_first_time_sync_configure) = 0;
diff --git a/components/sync/protocol/device_info_specifics.proto b/components/sync/protocol/device_info_specifics.proto index 6a05a56..b97eafa 100644 --- a/components/sync/protocol/device_info_specifics.proto +++ b/components/sync/protocol/device_info_specifics.proto
@@ -35,7 +35,8 @@ optional string sync_user_agent = 4; // The Chrome instance's version. Updated (if necessary) on every startup. - optional string chrome_version = 5; + // DEPRECATED in M92. Still populated for backward compatibility. + optional string chrome_version = 5 [deprecated=true]; // Last time when pre-sync data on the device was saved. The device can be // restored to state back to this time. In millisecond since UNIX epoch. @@ -82,6 +83,12 @@ // Unique hardware identifier string which details the HW combination of // a ChromeOS device. This field will be empty on other OS devices. optional string full_hardware_class = 16; + + // Version information to pin-point which client implementation this is. + oneof client_version_info { + ChromeVersionInfo chrome_version_info = 17; + GooglePlayServicesVersionInfo google_play_services_version_info = 18; + } } // Feature specific information about the device that is running a sync-enabled @@ -187,3 +194,12 @@ // instance. optional bytes peer_public_key_x962 = 5; } + +message ChromeVersionInfo { + // Version number as per https://www.chromium.org/developers/version-numbers. + optional string version_number = 1; +} + +message GooglePlayServicesVersionInfo { + optional string apk_version_name = 1; +}
diff --git a/components/sync/protocol/proto_visitors.h b/components/sync/protocol/proto_visitors.h index 39059d5..a95925b3 100644 --- a/components/sync/protocol/proto_visitors.h +++ b/components/sync/protocol/proto_visitors.h
@@ -393,6 +393,8 @@ VISIT(invalidation_fields); VISIT(paask_fields); VISIT(full_hardware_class); + VISIT(chrome_version_info); + VISIT(google_play_services_version_info); } VISIT_PROTO_FIELDS(const sync_pb::FeatureSpecificFields& proto) { @@ -418,6 +420,14 @@ // in debugging output, which might be included in bug reports etc. } +VISIT_PROTO_FIELDS(const sync_pb::ChromeVersionInfo& proto) { + VISIT(version_number); +} + +VISIT_PROTO_FIELDS(const sync_pb::GooglePlayServicesVersionInfo& proto) { + VISIT(apk_version_name); +} + VISIT_PROTO_FIELDS(const sync_pb::DictionarySpecifics& proto) { VISIT(word); }
diff --git a/components/sync/test/engine/fake_sync_engine.cc b/components/sync/test/engine/fake_sync_engine.cc index e46f4b8..496cc66 100644 --- a/components/sync/test/engine/fake_sync_engine.cc +++ b/components/sync/test/engine/fake_sync_engine.cc
@@ -30,8 +30,7 @@ initialized_ = success; - host_->OnEngineInitialized(ModelTypeSet(), - WeakHandle<DataTypeDebugInfoListener>(), success, + host_->OnEngineInitialized(WeakHandle<DataTypeDebugInfoListener>(), success, is_first_time_sync_configure_); }
diff --git a/components/sync/test/engine/sync_engine_host_stub.cc b/components/sync/test/engine/sync_engine_host_stub.cc index aa21ac0..c20774b 100644 --- a/components/sync/test/engine/sync_engine_host_stub.cc +++ b/components/sync/test/engine/sync_engine_host_stub.cc
@@ -10,7 +10,6 @@ SyncEngineHostStub::~SyncEngineHostStub() = default; void SyncEngineHostStub::OnEngineInitialized( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, bool success, bool is_first_time_sync_configure) {}
diff --git a/components/sync/test/engine/sync_engine_host_stub.h b/components/sync/test/engine/sync_engine_host_stub.h index 3229fc8..94fc57b 100644 --- a/components/sync/test/engine/sync_engine_host_stub.h +++ b/components/sync/test/engine/sync_engine_host_stub.h
@@ -16,7 +16,6 @@ // SyncEngineHost implementation. void OnEngineInitialized( - ModelTypeSet initial_types, const WeakHandle<DataTypeDebugInfoListener>& debug_info_listener, bool success, bool is_first_time_sync_configure) override;
diff --git a/components/sync_device_info/local_device_info_util_unittest.cc b/components/sync_device_info/local_device_info_util_unittest.cc index ef76cc0..438b205 100644 --- a/components/sync_device_info/local_device_info_util_unittest.cc +++ b/components/sync_device_info/local_device_info_util_unittest.cc
@@ -13,6 +13,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "base/command_line.h" +#include "base/test/scoped_chromeos_version_info.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) namespace syncer { @@ -31,7 +32,7 @@ // board type is CHROMEBOOK and make sure the return value is "Chromebook". TEST(GetClientNameTest, GetPersonalizableDeviceNameBlockingChromebook) { const char* kLsbRelease = "DEVICETYPE=CHROMEBOOK\n"; - base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease, base::Time()); + base::test::ScopedChromeOSVersionInfo version(kLsbRelease, base::Time()); const std::string& client_name = GetPersonalizableDeviceNameBlocking(); EXPECT_EQ("Chromebook", client_name); } @@ -40,7 +41,7 @@ // board type is a CHROMEBOX and make sure the return value is "Chromebox". TEST(GetClientNameTest, GetPersonalizableDeviceNameBlockingChromebox) { const char* kLsbRelease = "DEVICETYPE=CHROMEBOX\n"; - base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease, base::Time()); + base::test::ScopedChromeOSVersionInfo version(kLsbRelease, base::Time()); const std::string& client_name = GetPersonalizableDeviceNameBlocking(); EXPECT_EQ("Chromebox", client_name); }
diff --git a/components/system_media_controls/linux/system_media_controls_linux.h b/components/system_media_controls/linux/system_media_controls_linux.h index f58b38ba..7fbbfdf 100644 --- a/components/system_media_controls/linux/system_media_controls_linux.h +++ b/components/system_media_controls/linux/system_media_controls_linux.h
@@ -8,7 +8,6 @@ #include <string> #include "base/component_export.h" -#include "base/containers/flat_set.h" #include "base/memory/scoped_refptr.h" #include "base/observer_list.h" #include "base/timer/timer.h"
diff --git a/components/ui_devtools/viz/dom_agent_viz.h b/components/ui_devtools/viz/dom_agent_viz.h index f5657e6..0515d71 100644 --- a/components/ui_devtools/viz/dom_agent_viz.h +++ b/components/ui_devtools/viz/dom_agent_viz.h
@@ -6,7 +6,6 @@ #define COMPONENTS_UI_DEVTOOLS_VIZ_DOM_AGENT_VIZ_H_ #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "components/ui_devtools/DOM.h" #include "components/ui_devtools/dom_agent.h" #include "components/viz/service/frame_sinks/frame_sink_observer.h"
diff --git a/components/ukm/ukm_recorder_impl.h b/components/ukm/ukm_recorder_impl.h index 20395e0..69ed1e9 100644 --- a/components/ukm/ukm_recorder_impl.h +++ b/components/ukm/ukm_recorder_impl.h
@@ -16,7 +16,6 @@ #include "base/callback_forward.h" #include "base/component_export.h" #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/sequence_checker.h" #include "base/strings/string_piece.h" #include "components/ukm/ukm_entry_filter.h"
diff --git a/components/url_matcher/url_matcher_factory_unittest.cc b/components/url_matcher/url_matcher_factory_unittest.cc index 6cac0c19..a662c49 100644 --- a/components/url_matcher/url_matcher_factory_unittest.cc +++ b/components/url_matcher/url_matcher_factory_unittest.cc
@@ -29,20 +29,20 @@ // Invalid key: {"invalid": "foobar"} base::DictionaryValue invalid_condition; - invalid_condition.SetString("invalid", "foobar"); + invalid_condition.SetStringKey("invalid", "foobar"); // Invalid value type: {"hostSuffix": []} base::DictionaryValue invalid_condition2; - invalid_condition2.Set(keys::kHostSuffixKey, - std::make_unique<base::ListValue>()); + invalid_condition2.SetKey(keys::kHostSuffixKey, + base::Value(base::Value::Type::LIST)); // Invalid regex value: {"urlMatches": "*"} base::DictionaryValue invalid_condition3; - invalid_condition3.SetString(keys::kURLMatchesKey, "*"); + invalid_condition3.SetStringKey(keys::kURLMatchesKey, "*"); // Invalid regex value: {"originAndPathMatches": "*"} base::DictionaryValue invalid_condition4; - invalid_condition4.SetString(keys::kOriginAndPathMatchesKey, "*"); + invalid_condition4.SetStringKey(keys::kOriginAndPathMatchesKey, "*"); // Valid values: // { @@ -53,21 +53,21 @@ // } // Port range: Allow 80;1000-1010. - auto port_range = std::make_unique<base::ListValue>(); - port_range->AppendInteger(1000); - port_range->AppendInteger(1010); - auto port_ranges = std::make_unique<base::ListValue>(); - port_ranges->AppendInteger(80); - port_ranges->Append(std::move(port_range)); + base::Value port_range(base::Value::Type::LIST); + port_range.Append(1000); + port_range.Append(1010); + base::Value port_ranges(base::Value::Type::LIST); + port_ranges.Append(80); + port_ranges.Append(std::move(port_range)); - auto scheme_list = std::make_unique<base::ListValue>(); - scheme_list->AppendString("http"); + base::Value scheme_list(base::Value::Type::LIST); + scheme_list.Append("http"); base::DictionaryValue valid_condition; - valid_condition.SetString(keys::kHostSuffixKey, "example.com"); - valid_condition.SetString(keys::kHostPrefixKey, "www"); - valid_condition.Set(keys::kPortsKey, std::move(port_ranges)); - valid_condition.Set(keys::kSchemesKey, std::move(scheme_list)); + valid_condition.SetStringKey(keys::kHostSuffixKey, "example.com"); + valid_condition.SetStringKey(keys::kHostPrefixKey, "www"); + valid_condition.SetKey(keys::kPortsKey, std::move(port_ranges)); + valid_condition.SetKey(keys::kSchemesKey, std::move(scheme_list)); // Test wrong condition name passed. error.clear();
diff --git a/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc b/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc index fadbd89..63f49fe1 100644 --- a/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc +++ b/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc
@@ -162,7 +162,8 @@ params.valid_primary_icon ? primary_icon_url_ : GURL(), params.valid_primary_icon ? primary_icon_.get() : nullptr, params.prefer_maskable_icon, GURL() /* splash_icon_url */, - nullptr /* splash_icon */, std::vector<SkBitmap>() /* screenshots */, + nullptr /* splash_icon */, params.prefer_maskable_icon, + std::vector<SkBitmap>() /* screenshots */, params.valid_manifest ? is_installable : false, params.has_worker ? is_installable : false}); }
diff --git a/components/webapps/browser/android/shortcut_info.cc b/components/webapps/browser/android/shortcut_info.cc index 8bd5150f..5bcbf6c 100644 --- a/components/webapps/browser/android/shortcut_info.cc +++ b/components/webapps/browser/android/shortcut_info.cc
@@ -61,11 +61,24 @@ WebappsIconUtils::GetIdealSplashImageSizeInPx(); shortcut_info->minimum_splash_image_size_in_px = WebappsIconUtils::GetMinimumSplashImageSizeInPx(); - shortcut_info->splash_image_url = - blink::ManifestIconSelector::FindBestMatchingSquareIcon( - manifest.icons, shortcut_info->ideal_splash_image_size_in_px, - shortcut_info->minimum_splash_image_size_in_px, - blink::mojom::ManifestImageResource_Purpose::ANY); + if (WebappsIconUtils::DoesAndroidSupportMaskableIcons()) { + shortcut_info->splash_image_url = + blink::ManifestIconSelector::FindBestMatchingSquareIcon( + manifest.icons, shortcut_info->ideal_splash_image_size_in_px, + shortcut_info->minimum_splash_image_size_in_px, + blink::mojom::ManifestImageResource_Purpose::MASKABLE); + shortcut_info->is_splash_image_maskable = true; + } + // If did not fetch maskable icon for splash image, or can not find a best + // match, fallback to ANY icon. + if (!shortcut_info->splash_image_url.is_valid()) { + shortcut_info->splash_image_url = + blink::ManifestIconSelector::FindBestMatchingSquareIcon( + manifest.icons, shortcut_info->ideal_splash_image_size_in_px, + shortcut_info->minimum_splash_image_size_in_px, + blink::mojom::ManifestImageResource_Purpose::ANY); + shortcut_info->is_splash_image_maskable = false; + } return shortcut_info; }
diff --git a/components/webapps/browser/android/shortcut_info.h b/components/webapps/browser/android/shortcut_info.h index b57b84b..258f763 100644 --- a/components/webapps/browser/android/shortcut_info.h +++ b/components/webapps/browser/android/shortcut_info.h
@@ -141,6 +141,7 @@ int ideal_splash_image_size_in_px = 0; int minimum_splash_image_size_in_px = 0; GURL splash_image_url; + bool is_splash_image_maskable = false; GURL best_primary_icon_url; std::vector<std::string> icon_urls; std::vector<GURL> screenshot_urls;
diff --git a/components/webapps/browser/installable/fake_installable_manager.cc b/components/webapps/browser/installable/fake_installable_manager.cc index b49d5b0c..8d39e520 100644 --- a/components/webapps/browser/installable/fake_installable_manager.cc +++ b/components/webapps/browser/installable/fake_installable_manager.cc
@@ -69,8 +69,8 @@ auto installable_data = std::make_unique<InstallableData>( std::move(errors), installable_manager->manifest_url_, *installable_manager->manifest_, GURL::EmptyGURL(), icon.get(), false, - GURL::EmptyGURL(), icon.get(), std::vector<SkBitmap>(), valid_manifest, - has_worker); + GURL::EmptyGURL(), icon.get(), false, std::vector<SkBitmap>(), + valid_manifest, has_worker); installable_manager->data_ = std::move(installable_data);
diff --git a/components/webapps/browser/installable/installable_data.cc b/components/webapps/browser/installable/installable_data.cc index 146912a..dd9f6ad5 100644 --- a/components/webapps/browser/installable/installable_data.cc +++ b/components/webapps/browser/installable/installable_data.cc
@@ -16,6 +16,7 @@ bool has_maskable_primary_icon, const GURL& splash_icon_url, const SkBitmap* splash_icon, + bool has_maskable_splash_icon, const std::vector<SkBitmap>& screenshots, bool valid_manifest, bool has_worker) @@ -27,6 +28,7 @@ has_maskable_primary_icon(has_maskable_primary_icon), splash_icon_url(splash_icon_url), splash_icon(splash_icon), + has_maskable_splash_icon(has_maskable_splash_icon), screenshots(screenshots), valid_manifest(valid_manifest), has_worker(has_worker) {}
diff --git a/components/webapps/browser/installable/installable_data.h b/components/webapps/browser/installable/installable_data.h index 5aa44abc..4b20fad 100644 --- a/components/webapps/browser/installable/installable_data.h +++ b/components/webapps/browser/installable/installable_data.h
@@ -30,6 +30,7 @@ bool has_maskable_primary_icon, const GURL& splash_icon_url, const SkBitmap* splash_icon, + bool has_maskable_splash_icon, const std::vector<SkBitmap>& screenshots, bool valid_manifest, bool has_worker); @@ -77,6 +78,10 @@ // using it. const SkBitmap* splash_icon; + // Whether the splash icon had the 'maskable' purpose, meaningless if no + // splash_icon was requested. + const bool has_maskable_splash_icon; + // The screenshots to show in the install UI. const std::vector<SkBitmap>& screenshots;
diff --git a/components/webapps/browser/installable/installable_manager.cc b/components/webapps/browser/installable/installable_manager.cc index 0bba7a67..5882770 100644 --- a/components/webapps/browser/installable/installable_manager.cc +++ b/components/webapps/browser/installable/installable_manager.cc
@@ -393,12 +393,17 @@ if (params.valid_splash_icon) { IconProperty& icon = icons_[IconUsage::kSplash]; + // If the icon is MASKABLE, ignore any error since we want to fallback to + // fetch IconPurpose::ANY. // If the error is NO_ACCEPTABLE_ICON, there is no icon suitable as a splash // icon in the manifest. Ignore this case since we only want to fail the // check if there was a suitable splash icon specified and we couldn't fetch // it. - if (icon.error != NO_ERROR_DETECTED && icon.error != NO_ACCEPTABLE_ICON) + if (icon.error != NO_ERROR_DETECTED && + icon.purpose != IconPurpose::MASKABLE && + icon.error != NO_ACCEPTABLE_ICON) { errors.push_back(icon.error); + } } return errors; @@ -511,14 +516,17 @@ IconProperty* primary_icon = &null_icon; bool has_maskable_primary_icon = false; IconProperty* splash_icon = &null_icon; + bool has_maskable_splash_icon = false; if (params.valid_primary_icon && IsIconFetchComplete(IconUsage::kPrimary)) { primary_icon = &icons_[IconUsage::kPrimary]; has_maskable_primary_icon = (primary_icon->purpose == IconPurpose::MASKABLE); } - if (params.valid_splash_icon && IsIconFetchComplete(IconUsage::kSplash)) + if (params.valid_splash_icon && IsIconFetchComplete(IconUsage::kSplash)) { splash_icon = &icons_[IconUsage::kSplash]; + has_maskable_splash_icon = (splash_icon->purpose == IconPurpose::MASKABLE); + } InstallableData data = { std::move(errors), @@ -529,6 +537,7 @@ has_maskable_primary_icon, splash_icon->url, splash_icon->icon.get(), + has_maskable_splash_icon, screenshots_, valid_manifest_->is_valid, worker_->has_worker, @@ -578,6 +587,11 @@ CheckAndFetchScreenshots(); } else if (params.has_worker && !worker_->fetched) { CheckServiceWorker(); + } else if (params.valid_splash_icon && params.prefer_maskable_icon && + !IsMaskableIconFetched(IconUsage::kSplash)) { + CheckAndFetchBestIcon(GetIdealSplashIconSizeInPx(), + GetMinimumSplashIconSizeInPx(), IconPurpose::MASKABLE, + IconUsage::kSplash); } else if (params.valid_splash_icon && !IsIconFetchComplete(IconUsage::kSplash)) { CheckAndFetchBestIcon(GetIdealSplashIconSizeInPx(),
diff --git a/components/webapps/browser/installable/installable_task_queue.cc b/components/webapps/browser/installable/installable_task_queue.cc index d6e1660..4d9a2e0 100644 --- a/components/webapps/browser/installable/installable_task_queue.cc +++ b/components/webapps/browser/installable/installable_task_queue.cc
@@ -76,16 +76,16 @@ if (task.callback) { std::move(task.callback) .Run(InstallableData({code}, GURL(), manifest, GURL(), nullptr, false, - GURL(), nullptr, std::vector<SkBitmap>(), false, - false)); + GURL(), nullptr, false, std::vector<SkBitmap>(), + false, false)); } } for (InstallableTask& task : paused_tasks) { if (task.callback) { std::move(task.callback) .Run(InstallableData({code}, GURL(), manifest, GURL(), nullptr, false, - GURL(), nullptr, std::vector<SkBitmap>(), false, - false)); + GURL(), nullptr, false, std::vector<SkBitmap>(), + false, false)); } } }
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 228bc70..78d323c 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1418,6 +1418,10 @@ RunHtmlTest(FILE_PATH_LITERAL("audio.html")); } +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAWithBefore) { + RunHtmlTest(FILE_PATH_LITERAL("a-with-before.html")); +} + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAWithImg) { RunHtmlTest(FILE_PATH_LITERAL("a-with-img.html")); }
diff --git a/content/browser/browser_interface_binders.h b/content/browser/browser_interface_binders.h index 7743267..3aae4ceb 100644 --- a/content/browser/browser_interface_binders.h +++ b/content/browser/browser_interface_binders.h
@@ -5,7 +5,6 @@ #ifndef CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ #define CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ -#include "content/browser/service_worker/service_worker_info.h" #include "content/common/content_export.h" #include "mojo/public/cpp/bindings/binder_map.h" #include "services/device/public/mojom/battery_monitor.mojom-forward.h" @@ -20,6 +19,7 @@ class DedicatedWorkerHost; class SharedWorkerHost; class ServiceWorkerHost; +struct ServiceWorkerVersionInfo; struct ServiceWorkerVersionBaseInfo; namespace internal {
diff --git a/content/browser/devtools/devtools_agent_host_impl.cc b/content/browser/devtools/devtools_agent_host_impl.cc index 82f9504..99e9735 100644 --- a/content/browser/devtools/devtools_agent_host_impl.cc +++ b/content/browser/devtools/devtools_agent_host_impl.cc
@@ -27,6 +27,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/content_browser_client.h" #include "content/public/browser/devtools_external_agent_proxy_delegate.h" +#include "services/network/public/mojom/network_context.mojom.h" namespace content {
diff --git a/content/browser/devtools/devtools_agent_host_impl.h b/content/browser/devtools/devtools_agent_host_impl.h index c03b2ead..5889120 100644 --- a/content/browser/devtools/devtools_agent_host_impl.h +++ b/content/browser/devtools/devtools_agent_host_impl.h
@@ -11,7 +11,6 @@ #include "base/compiler_specific.h" #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/process/kill.h" #include "content/browser/devtools/devtools_io_context.h"
diff --git a/content/browser/devtools/devtools_instrumentation.cc b/content/browser/devtools/devtools_instrumentation.cc index 0eb5e077..a1f5ed58 100644 --- a/content/browser/devtools/devtools_instrumentation.cc +++ b/content/browser/devtools/devtools_instrumentation.cc
@@ -811,6 +811,12 @@ protocol::Audits::SameSiteCookieExclusionReasonEnum:: ExcludeSameSiteStrict); } + if (status.HasExclusionReason( + net::CookieInclusionStatus::EXCLUDE_INVALID_SAMEPARTY)) { + exclusion_reasons->push_back( + protocol::Audits::SameSiteCookieExclusionReasonEnum:: + ExcludeInvalidSameParty); + } return exclusion_reasons; } @@ -887,7 +893,7 @@ void ReportSameSiteCookieIssue( RenderFrameHostImpl* render_frame_host_impl, - const net::CookieWithAccessResult& excluded_cookie, + const network::mojom::CookieOrLineWithAccessResultPtr& excluded_cookie, const GURL& url, const net::SiteForCookies& site_for_cookies, blink::mojom::SameSiteCookieOperation operation, @@ -902,24 +908,31 @@ .Build(); } - auto affected_cookie = protocol::Audits::AffectedCookie::Create() - .SetName(excluded_cookie.cookie.Name()) - .SetPath(excluded_cookie.cookie.Path()) - .SetDomain(excluded_cookie.cookie.Domain()) - .Build(); - auto same_site_details = protocol::Audits::SameSiteCookieIssueDetails::Create() - .SetCookie(std::move(affected_cookie)) .SetCookieExclusionReasons( - BuildExclusionReasons(excluded_cookie.access_result.status)) + BuildExclusionReasons(excluded_cookie->access_result.status)) .SetCookieWarningReasons( - BuildWarningReasons(excluded_cookie.access_result.status)) + BuildWarningReasons(excluded_cookie->access_result.status)) .SetOperation(BuildCookieOperation(operation)) .SetCookieUrl(url.spec()) .SetRequest(std::move(affected_request)) .Build(); + if (excluded_cookie->cookie_or_line->is_cookie()) { + const auto& cookie = excluded_cookie->cookie_or_line->get_cookie(); + auto affected_cookie = protocol::Audits::AffectedCookie::Create() + .SetName(cookie.Name()) + .SetPath(cookie.Path()) + .SetDomain(cookie.Domain()) + .Build(); + same_site_details->SetCookie(std::move(affected_cookie)); + } else { + CHECK(excluded_cookie->cookie_or_line->is_cookie_string()); + same_site_details->SetRawCookieLine( + excluded_cookie->cookie_or_line->get_cookie_string()); + } + if (!site_for_cookies.IsNull()) { same_site_details->SetSiteForCookies( site_for_cookies.RepresentativeUrl().spec());
diff --git a/content/browser/devtools/devtools_instrumentation.h b/content/browser/devtools/devtools_instrumentation.h index 1ff5374..3bd8e7b 100644 --- a/content/browser/devtools/devtools_instrumentation.h +++ b/content/browser/devtools/devtools_instrumentation.h
@@ -194,7 +194,7 @@ void ReportSameSiteCookieIssue( RenderFrameHostImpl* render_frame_host_impl, - const net::CookieWithAccessResult& excluded_cookie, + const network::mojom::CookieOrLineWithAccessResultPtr& excluded_cookie, const GURL& url, const net::SiteForCookies& site_for_cookies, blink::mojom::SameSiteCookieOperation operation,
diff --git a/content/browser/devtools/protocol/storage_handler.h b/content/browser/devtools/protocol/storage_handler.h index c228b7b4..263c5a8d 100644 --- a/content/browser/devtools/protocol/storage_handler.h +++ b/content/browser/devtools/protocol/storage_handler.h
@@ -8,7 +8,6 @@ #include <memory> #include <string> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "content/browser/devtools/protocol/devtools_domain_handler.h"
diff --git a/content/browser/devtools/protocol/visual_debugger_handler.h b/content/browser/devtools/protocol/visual_debugger_handler.h index cbfe9e4..dc512a5 100644 --- a/content/browser/devtools/protocol/visual_debugger_handler.h +++ b/content/browser/devtools/protocol/visual_debugger_handler.h
@@ -5,7 +5,6 @@ #ifndef CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_ #define CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_ -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "content/browser/devtools/protocol/browser.h"
diff --git a/content/browser/file_system_access/file_system_access_directory_handle_impl_unittest.cc b/content/browser/file_system_access/file_system_access_directory_handle_impl_unittest.cc index 00a396b..cef6c58a 100644 --- a/content/browser/file_system_access/file_system_access_directory_handle_impl_unittest.cc +++ b/content/browser/file_system_access/file_system_access_directory_handle_impl_unittest.cc
@@ -17,6 +17,7 @@ #include "build/build_config.h" #include "content/browser/file_system_access/fixed_file_system_access_permission_grant.h" #include "content/public/test/browser_task_environment.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "storage/browser/quota/quota_manager_proxy.h" #include "storage/browser/test/test_file_system_context.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/content/browser/file_system_access/file_system_access_file_writer_impl.cc b/content/browser/file_system_access/file_system_access_file_writer_impl.cc index def6d65f..fa6035b6 100644 --- a/content/browser/file_system_access/file_system_access_file_writer_impl.cc +++ b/content/browser/file_system_access/file_system_access_file_writer_impl.cc
@@ -18,6 +18,7 @@ #include "content/public/common/content_client.h" #include "crypto/secure_hash.h" #include "mojo/public/cpp/bindings/callback_helpers.h" +#include "net/base/io_buffer.h" #include "storage/browser/file_system/file_stream_reader.h" #include "storage/browser/file_system/file_system_operation_runner.h" #include "third_party/blink/public/mojom/file_system_access/file_system_access_error.mojom.h"
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc index 329131b..420dbbd 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -1204,10 +1204,10 @@ if (browser_command_line->HasSwitch(switches::kHeadless)) { if (command_line->HasSwitch(switches::kUseGL)) { use_gl = command_line->GetSwitchValueASCII(switches::kUseGL); - // Don't append kOverrideUseSoftwareGLForTests when we need to enable GPU - // hardware for headless chromium. + // Don't append kOverrideUseSoftwareGLForHeadless when we need to enable + // GPU hardware for headless chromium. if (use_gl != gl::kGLImplementationEGLName) - command_line->AppendSwitch(switches::kOverrideUseSoftwareGLForTests); + command_line->AppendSwitch(switches::kOverrideUseSoftwareGLForHeadless); } } #endif // !OS_MAC
diff --git a/content/browser/loader/file_url_loader_factory.cc b/content/browser/loader/file_url_loader_factory.cc index 94d3056..1bc6f82 100644 --- a/content/browser/loader/file_url_loader_factory.cc +++ b/content/browser/loader/file_url_loader_factory.cc
@@ -809,7 +809,7 @@ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - // CORS mode requires a valid |request_inisiator|. + // CORS mode requires a valid |request_initiator|. if (network::cors::IsCorsEnabledRequestMode(request.mode) && !request.request_initiator) { mojo::Remote<network::mojom::URLLoaderClient>(std::move(client))
diff --git a/content/browser/media/key_system_support_impl.cc b/content/browser/media/key_system_support_impl.cc index 8e0d341..914ac66 100644 --- a/content/browser/media/key_system_support_impl.cc +++ b/content/browser/media/key_system_support_impl.cc
@@ -69,6 +69,8 @@ video_codecs[media::VideoCodec::kCodecVP9] = {}; else if (codec == "avc1") video_codecs[media::VideoCodec::kCodecH264] = {}; + else if (codec == "hevc") + video_codecs[media::VideoCodec::kCodecHEVC] = {}; else if (codec == "vorbis") audio_codecs.push_back(media::AudioCodec::kCodecVorbis); else
diff --git a/content/browser/prerender/prerender_browsertest.cc b/content/browser/prerender/prerender_browsertest.cc index 6836bbb..ae84f1f 100644 --- a/content/browser/prerender/prerender_browsertest.cc +++ b/content/browser/prerender/prerender_browsertest.cc
@@ -38,6 +38,7 @@ #include "content/public/browser/navigation_handle.h" #include "content/public/browser/render_document_host_user_data.h" #include "content/public/browser/render_process_host.h" +#include "content/public/browser/speculation_host_delegate.h" #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" @@ -154,6 +155,14 @@ return prerender_helper_->AddPrerender(prerendering_url); } + int AddSpeculationRules(const GURL& prerendering_url) { + return prerender_helper_->AddSpeculationRules(prerendering_url); + } + + void AddSpeculationRulesAsync(const GURL& prerendering_url) { + prerender_helper_->AddSpeculationRulesAsync(prerendering_url); + } + void NavigatePrimaryPage(const GURL& url) { prerender_helper_->NavigatePrimaryPage(url); } @@ -883,6 +892,63 @@ EXPECT_EQ(GetRequestCount(kInnerContentsUrl), 1); } +// Ensure that whether or not a NavigationRequest is for a prerender activation +// is available in WebContentsObserver::DidStartNavigation. +class IsActivationObserver : public WebContentsObserver { + public: + IsActivationObserver(WebContents& web_contents, const GURL& url) + : WebContentsObserver(&web_contents), url_(url) {} + bool did_navigate() { return did_navigate_; } + bool was_activation() { return was_activation_; } + + private: + void DidStartNavigation(NavigationHandle* handle) override { + if (handle->GetURL() != url_) + return; + did_navigate_ = true; + was_activation_ = handle->IsPrerenderedPageActivation(); + } + + const GURL url_; + bool did_navigate_ = false; + bool was_activation_ = false; +}; + +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, + NavigationRequestIsPrerenderedPageActivation) { + const GURL kInitialUrl = GetUrl("/prerender/add_prerender.html"); + const GURL kPrerenderingUrl = GetUrl("/empty.html"); + + test::PrerenderHostObserver prerender_observer(*shell()->web_contents(), + kPrerenderingUrl); + + // Navigate to an initial page and start a prerender. Note, AddPrerender will + // wait until the prerendered page has finished navigating. + { + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + ASSERT_EQ(web_contents()->GetURL(), kInitialUrl); + AddPrerender(kPrerenderingUrl); + ASSERT_NE(GetHostForUrl(kPrerenderingUrl), + RenderFrameHost::kNoFrameTreeNodeId); + } + + IsActivationObserver is_activation_observer(*shell()->web_contents(), + kPrerenderingUrl); + + // Now navigate the primary page to the prerendered URL so that we activate + // the prerender. + { + ASSERT_TRUE(ExecJs(web_contents()->GetMainFrame(), + JsReplace("location = $1", kPrerenderingUrl))); + prerender_observer.WaitForActivation(); + } + + // Ensure that WebContentsObservers see the correct value for + // IsPrerenderedPageActivation in DidStartNavigation. + ASSERT_TRUE(is_activation_observer.did_navigate()); + EXPECT_TRUE(is_activation_observer.was_activation()); +} + // Ensures that if we attempt to open a URL while prerendering with a window // disposition other than CURRENT_TAB, we fail. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, SuppressOpenURL) { @@ -2638,5 +2704,200 @@ } } +// Tests for speculation rules ================================================= + +// Tests that the new trigger of speculationrules works. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, SpeculationRulesPrerender) { + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kPrerenderingUrl = GetUrl("/empty.html?prerender"); + + // Navigate to an initial page. + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + ASSERT_EQ(web_contents()->GetURL(), kInitialUrl); + + // Add <script type="speculationrule"> that will prerender `kPrerenderingUrl`. + ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 0); + const int host_id = AddSpeculationRules(kPrerenderingUrl); + ASSERT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId); + ASSERT_EQ(GetRequestCount(kPrerenderingUrl), 1); + + NavigatePrimaryPage(kPrerenderingUrl); + + // The prerender host should be consumed. + EXPECT_FALSE(HasHostForUrl(kPrerenderingUrl)); + + // Activating the prerendered page should not issue a request. + EXPECT_EQ(GetRequestCount(kPrerenderingUrl), 1); +} + +// Tests that the speculationrules-triggered prerender would be destroyed after +// its initiator navigates away. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, SpeculationInitiatorNavigateAway) { + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kPrerenderingUrl = GetUrl("/empty.html?prerender"); + + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + const int host_id = AddSpeculationRules(kPrerenderingUrl); + ASSERT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId); + + // Navigate the initiator page to a non-prerendered page. This destroys the + // prerendered page. + test::PrerenderHostObserver host_observer(*web_contents_impl(), host_id); + NavigatePrimaryPage(GetUrl("/empty.html?elsewhere")); + host_observer.WaitForDestroyed(); + + // The prerender host should be destroyed. + EXPECT_FALSE(HasHostForUrl(kPrerenderingUrl)); +} + +class TestSpeculationHostDelegate final : public SpeculationHostDelegate { + public: + TestSpeculationHostDelegate() = default; + ~TestSpeculationHostDelegate() override = default; + + // Disallows copy and move operations. + TestSpeculationHostDelegate(const TestSpeculationHostDelegate&) = delete; + TestSpeculationHostDelegate& operator=(const TestSpeculationHostDelegate&) = + delete; + + // SpeculationRulesDelegate implementation. + void ProcessCandidates( + std::vector<blink::mojom::SpeculationCandidatePtr>& candidates) override { + EXPECT_FALSE(processed_); + processed_ = true; + if (waiting_for_processing_) { + // SpeculationHostImpl processes prerender candidates right after + // ProcessCandidates(). Run the quit closure asynchronously so that + // the closure can see results of processing the candidates. + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, std::move(waiting_for_processing_)); + } + } + + base::WeakPtr<TestSpeculationHostDelegate> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + + void ResetProcessingState() { + processed_ = false; + waiting_for_processing_.Reset(); + } + + void WaitUntilCandidatesAreProcessed() { + if (processed_) + return; + base::RunLoop loop; + waiting_for_processing_ = loop.QuitClosure(); + loop.Run(); + } + + private: + base::OnceClosure waiting_for_processing_; + bool processed_ = false; + + base::WeakPtrFactory<TestSpeculationHostDelegate> weak_ptr_factory_{this}; +}; + +class ScopedSpeculationHostImplContentBrowserClient + : public TestContentBrowserClient { + public: + ScopedSpeculationHostImplContentBrowserClient() { + old_browser_client_ = SetBrowserClientForTesting(this); + } + + ~ScopedSpeculationHostImplContentBrowserClient() override { + EXPECT_EQ(this, SetBrowserClientForTesting(old_browser_client_)); + } + + std::unique_ptr<SpeculationHostDelegate> CreateSpeculationHostDelegate( + RenderFrameHost& render_frame_host) override { + auto delegate = std::make_unique<TestSpeculationHostDelegate>(); + speculation_host_delegate_ = delegate->GetWeakPtr(); + if (waiting_for_created_) + std::move(waiting_for_created_).Run(); + return delegate; + } + + void WaitForDelegateCreation() { + if (speculation_host_delegate_) + return; + base::RunLoop loop; + waiting_for_created_ = loop.QuitClosure(); + loop.Run(); + } + + base::WeakPtr<TestSpeculationHostDelegate> speculation_host_delegate() { + return speculation_host_delegate_; + } + + private: + ContentBrowserClient* old_browser_client_; + base::OnceClosure waiting_for_created_; + base::WeakPtr<TestSpeculationHostDelegate> speculation_host_delegate_; +}; + +// Tests that SpeculationHostImpl only triggers prerendering for the first +// prerender speculation rule it receives. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, AddSpeculationRulesMultipleTimes) { + ScopedSpeculationHostImplContentBrowserClient test_browser_client; + + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kFirstPrerenderingUrl = GetUrl("/empty.html?prerender1"); + const GURL kSecondPrerenderingUrl = GetUrl("/empty.html?prerender2"); + + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + const int host_id = AddSpeculationRules(kFirstPrerenderingUrl); + + // The first prerender rule should be applied, so the prerender host for + // kFirstPrerenderingUrl should be registered. + ASSERT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId); + + base::WeakPtr<TestSpeculationHostDelegate> delegate = + test_browser_client.speculation_host_delegate(); + ASSERT_TRUE(delegate); + delegate->ResetProcessingState(); + + // Add a new speculation rule. Since SpeculationHostImpl limits the number of + // prerenders to one, this rule should not be applied. + AddSpeculationRulesAsync(kSecondPrerenderingUrl); + delegate->WaitUntilCandidatesAreProcessed(); + + // The kSecondPrerenderingUrl request should not be issued. + EXPECT_EQ(GetRequestCount(kSecondPrerenderingUrl), 0); + EXPECT_FALSE(HasHostForUrl(kSecondPrerenderingUrl)); + EXPECT_TRUE(HasHostForUrl(kFirstPrerenderingUrl)); +} + +// Tests that speculationrules cannot trigger cross-origin prerendering. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, CrossOriginSpeculationRules) { + ScopedSpeculationHostImplContentBrowserClient test_browser_client; + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kFirstPrerenderingUrlCrossOrigin = + GetCrossOriginUrl("/empty.html?crossorigin"); + const GURL kSecondPrerenderingUrlSameOrigin = + GetUrl("/empty.html?sameorigin"); + + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + + // Add a cross-origin prerender speculation rule, and it should be ignored. + AddSpeculationRulesAsync(kFirstPrerenderingUrlCrossOrigin); + test_browser_client.WaitForDelegateCreation(); + base::WeakPtr<TestSpeculationHostDelegate> delegate = + test_browser_client.speculation_host_delegate(); + ASSERT_TRUE(delegate); + delegate->WaitUntilCandidatesAreProcessed(); + + // Cross-origin prerender candidates should be ignored. + EXPECT_FALSE(HasHostForUrl(kFirstPrerenderingUrlCrossOrigin)); + delegate->ResetProcessingState(); + + // Since the first one was ignored, the second one should be processed by + // SpeculationHostImpl and trigger prerendering. + const int host_id = AddSpeculationRules(kSecondPrerenderingUrlSameOrigin); + EXPECT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId); +} + +// END: Tests for speculation rules ============================================ + } // namespace } // namespace content
diff --git a/content/browser/prerender/prerender_processor.cc b/content/browser/prerender/prerender_processor.cc index ca66e58..846857b1 100644 --- a/content/browser/prerender/prerender_processor.cc +++ b/content/browser/prerender/prerender_processor.cc
@@ -55,11 +55,11 @@ return; } - // Prerendering is only supported for <link rel=prerender>. - // We may want to support it for <link rel=next> if NoStatePrefetch re-enables - // it again. See https://crbug.com/1161545. + // Prerendering is only supported for <link rel=prerender> and + // SpeculationRules. switch (attributes->trigger_type) { case blink::mojom::PrerenderTriggerType::kLinkRelPrerender: + case blink::mojom::PrerenderTriggerType::kSpeculationRule: break; case blink::mojom::PrerenderTriggerType::kLinkRelNext: return;
diff --git a/content/browser/renderer_host/cookie_utils.cc b/content/browser/renderer_host/cookie_utils.cc index 97f2670..57df488 100644 --- a/content/browser/renderer_host/cookie_utils.cc +++ b/content/browser/renderer_host/cookie_utils.cc
@@ -36,6 +36,13 @@ } } +bool ShouldReportDevToolsIssueForStatus( + const net::CookieInclusionStatus& status) { + return status.ShouldWarn() || + status.HasExclusionReason( + net::CookieInclusionStatus::EXCLUDE_INVALID_SAMEPARTY); +} + } // namespace void SplitCookiesIntoAllowedAndBlocked( @@ -86,6 +93,16 @@ for (const network::mojom::CookieOrLineWithAccessResultPtr& cookie : cookie_details->cookie_list) { + if (ShouldReportDevToolsIssueForStatus(cookie->access_result.status)) { + devtools_instrumentation::ReportSameSiteCookieIssue( + root_frame_host, cookie, cookie_details->url, + cookie_details->site_for_cookies, + cookie_details->type == CookieAccessDetails::Type::kRead + ? blink::mojom::SameSiteCookieOperation::kReadCookie + : blink::mojom::SameSiteCookieOperation::kSetCookie, + cookie_details->devtools_request_id); + } + if (cookie->access_result.status.ShouldWarn()) { const net::CookieInclusionStatus& status = cookie->access_result.status; samesite_treated_as_lax_cookies = @@ -108,18 +125,6 @@ net::CookieInclusionStatus:: WARN_SAMESITE_UNSPECIFIED_LAX_ALLOW_UNSAFE); - if (cookie->cookie_or_line->is_cookie()) { - // TODO(sigurds): report issues on cookie line problems as well. - devtools_instrumentation::ReportSameSiteCookieIssue( - root_frame_host, - {cookie->cookie_or_line->get_cookie(), cookie->access_result}, - cookie_details->url, cookie_details->site_for_cookies, - cookie_details->type == CookieAccessDetails::Type::kRead - ? blink::mojom::SameSiteCookieOperation::kReadCookie - : blink::mojom::SameSiteCookieOperation::kSetCookie, - cookie_details->devtools_request_id); - } - same_party = same_party || status.HasWarningReason( net::CookieInclusionStatus::WARN_TREATED_AS_SAMEPARTY);
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc index 29fec4d..c7f2679 100644 --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc
@@ -1457,7 +1457,7 @@ if (blink::features::IsPrerender2Enabled() && IsPrerenderedPageActivation()) { GetPrerenderHostRegistry().AbandonReservedHost( - prerender_frame_tree_node_id_); + prerender_frame_tree_node_id_.value()); } if (IsServedFromBackForwardCache()) { @@ -1688,6 +1688,7 @@ CommitNavigation(); return; } + // If the navigation is served from the back-forward cache or is activating a // prerendered page, we already know its preview type from the first time we // navigated into the page, so we should only set |previews_state| when the @@ -1698,17 +1699,6 @@ common_params_->previews_state, this, common_params_->url); } - // Prerender2: - // Find an available prerendered page for the request URL. If it's found, - // this navigation will activate it instead of loading a page via network. - if (blink::features::IsPrerender2Enabled()) { - prerender_frame_tree_node_id_ = - GetPrerenderHostRegistry().ReserveHostToActivate(*this); - // If `prerender_frame_tree_node_id_` is not - // RenderFrameHost::kNoFrameTreeNodeId, this navigation will activate the - // prerendered page on navigation commit. - } - WillStartRequest(); } @@ -1721,6 +1711,21 @@ DCHECK(frame_tree_node_->navigation_request() == this || is_for_commit); FrameTreeNode* frame_tree_node = frame_tree_node_; + if (blink::features::IsPrerender2Enabled()) { + // Find an available prerendered page for the request URL. If it's found, + // this navigation will activate it instead of loading a page via network. + // This is the earliest we can compute this because: + // - A NavigationRequest is created before sending the BeforeUnload event + // which may cancel the navigation, reserving the host means we'd have to + // abandon it in that case. BeginNavigation, which calls StartNavigation, + // is the first time when we know the navigation will proceed. + // - We do this in StartNavigation rather than BeginNavigation because + // there are some cases like renderer-initiated same document navigations + // that call StartNavigation but not BeginNavigation. + prerender_frame_tree_node_id_ = + GetPrerenderHostRegistry().ReserveHostToActivate(*this); + } + // This is needed to get site URLs and assign the expected RenderProcessHost. // This is not always the same as |source_site_instance_|, as it only depends // on the current frame host, and does not depend on |entry|. @@ -2790,7 +2795,7 @@ render_frame_host_ = GetPrerenderHostRegistry().GetRenderFrameHostForReservedHost( - prerender_frame_tree_node_id_); + prerender_frame_tree_node_id_.value()); // TODO(https://crbug.com/1181712): Handle the cases when the prerender is // cancelled and RFH is destroyed while NavigationRequest is alive. } else if (response_should_be_rendered_) { @@ -3953,7 +3958,7 @@ return; } else { activated_entry = GetPrerenderHostRegistry().ActivateReservedHost( - prerender_frame_tree_node_id_, *this); + prerender_frame_tree_node_id_.value(), *this); // TODO(https://crbug.com/1181712): Determine the best way to handle // navigation when prerendering is cancelled during activation. This @@ -5592,8 +5597,10 @@ } bool NavigationRequest::IsPrerenderedPageActivation() { - // TODO(https://crbug.com/1211736): Make this CHECK more robust. - CHECK_GE(state_, WILL_START_REQUEST); + if (!blink::features::IsPrerender2Enabled()) + return false; + + CHECK(prerender_frame_tree_node_id_.has_value()); return prerender_frame_tree_node_id_ != RenderFrameHost::kNoFrameTreeNodeId; }
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h index cc1fb8b..6e53351 100644 --- a/content/browser/renderer_host/navigation_request.h +++ b/content/browser/renderer_host/navigation_request.h
@@ -883,7 +883,9 @@ base::WeakPtr<NavigationRequest> GetWeakPtr(); int prerender_frame_tree_node_id() const { - return prerender_frame_tree_node_id_; + DCHECK(prerender_frame_tree_node_id_.has_value()) + << "Must be called after StartNavigation()"; + return prerender_frame_tree_node_id_.value(); } void RenderFallbackContentForObjectTag(); @@ -1723,9 +1725,13 @@ net::IsolationInfo isolation_info_for_subresources_; // Prerender2: - // The root frame tree node id of the prerendered page. This is valid only - // when this navigation will activate a prerendered page. - int prerender_frame_tree_node_id_ = RenderFrameHost::kNoFrameTreeNodeId; + // The root frame tree node id of the prerendered page. This will be a valid + // FrameTreeNode id when this navigation will activate a prerendered page. + // For all other navigations this will be + // RenderFrameHost::kNoFrameTreeNodeId. We only know whether this is the case + // when BeginNavigation is called so the optional will be empty until then + // and callers must not query its value before it's been computed. + absl::optional<int> prerender_frame_tree_node_id_; // Used to store a cloned NavigationEntry for activating a prerendered page. // |prerender_navigation_entry_| is cloned and stored in NavigationRequest // when the prerendered page is transferred to the target FrameTree and is
diff --git a/content/browser/renderer_host/policy_container_host_browsertest.cc b/content/browser/renderer_host/policy_container_host_browsertest.cc index 2a2ac87a..d660855 100644 --- a/content/browser/renderer_host/policy_container_host_browsertest.cc +++ b/content/browser/renderer_host/policy_container_host_browsertest.cc
@@ -934,4 +934,42 @@ ->sources.size()); } +// Regression test for https://crbug.com/1196372. This test passes if the +// renderer does not crash. +IN_PROC_BROWSER_TEST_F(PolicyContainerHostBrowserTest, + PolicyContainerOnClonedDocumentNoCrash) { + GURL page = embedded_test_server()->GetURL("a.com", "/empty.html"); + GURL img_url = embedded_test_server()->GetURL("a.com", "/blank.jpg"); + ASSERT_TRUE(NavigateToURL(shell(), page)); + + // Create an empty iframe and clone its document. Then execute a javascript + // URL inside the iframe. This will create a new ExecutionContext, but with + // the same PolicyContainer. However, the clone we created is still around and + // still has an ExecutionContext, which has not PolicyContainer anymore. The + // following code used to trigger a nullptr dereference, while it should not. + ASSERT_TRUE(ExecJs(current_frame_host(), JsReplace(R"( + new Promise((resolve, reject) => { + let iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + let d = iframe.contentDocument.cloneNode(true); + iframe.src = + 'javascript:"<script>top.postMessage(\'ready\',\'*\');</script>"'; + function addStyleSheet() { + let css = 'html { background: url($1); }'; + let style = d.createElement('style'); + d.head.appendChild(style); + style.type = 'text/css'; + style.appendChild(d.createTextNode(css)); + }; + window.addEventListener('message', e => { + if (e.source !== iframe.contentWindow) return; + if (e.data !== 'ready') return; + addStyleSheet(); + resolve(); + }); + }); + )", + img_url))); +} + } // namespace content
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index f14f922c..7ca0bcc 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -185,6 +185,7 @@ } namespace content { +class ServiceWorkerContainerHost; class AgentSchedulingGroupHost; class AppCacheNavigationHandle; class CrossOriginEmbedderPolicyReporter;
diff --git a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc index e422fc7f..954c453 100644 --- a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc +++ b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
@@ -59,6 +59,7 @@ #include "content/test/frame_host_test_interface.mojom.h" #include "content/test/test_content_browser_client.h" #include "content/test/test_render_frame_host_factory.h" +#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "net/base/features.h" #include "net/base/ip_address.h" #include "net/base/ip_endpoint.h"
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index d8ebdb2..2821b23 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -2637,22 +2637,21 @@ mojo::PendingReceiver<blink::mojom::CodeCacheHost> receiver) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - // There should be at most one receiver and one CodeCacheHostImpl for any - // given RenderProcessHost. - DCHECK(!code_cache_host_impl_); + // There should be at most one CodeCacheHostImpl for any given + // RenderProcessHost. DCHECK(code_cache_host_receivers_.empty()); // Create a new CodeCacheHostImpl and bind it to the given receiver. - code_cache_host_impl_ = std::make_unique<CodeCacheHostImpl>( + auto code_cache_host = std::make_unique<CodeCacheHostImpl>( GetID(), this, storage_partition_impl_->GetGeneratedCodeCacheContext()); - auto receiver_id = code_cache_host_receivers_.Add(code_cache_host_impl_.get(), + CodeCacheHostImpl* impl = code_cache_host.get(); + auto receiver_id = code_cache_host_receivers_.Add(std::move(code_cache_host), std::move(receiver)); // If there is a callback registered, then invoke it with the newly // created CodeCacheHostImpl. if (!GetCodeCacheHostReceiverHandler().is_null()) { - GetCodeCacheHostReceiverHandler().Run(this, code_cache_host_impl_.get(), - receiver_id, + GetCodeCacheHostReceiverHandler().Run(this, impl, receiver_id, code_cache_host_receivers_); } } @@ -4693,7 +4692,6 @@ // object so that we can clearly create the new CodeCacheHostImpl while // asserting we don't have any duplicates. code_cache_host_receivers_.Clear(); - code_cache_host_impl_.reset(); // It's important not to wait for the DeleteTask to delete the channel // proxy. Kill it off now. That way, in case the profile is going away, the
diff --git a/content/browser/renderer_host/render_process_host_impl.h b/content/browser/renderer_host/render_process_host_impl.h index 11a4625..a7108cc3 100644 --- a/content/browser/renderer_host/render_process_host_impl.h +++ b/content/browser/renderer_host/render_process_host_impl.h
@@ -456,7 +456,7 @@ RenderProcessHost*, CodeCacheHostImpl*, mojo::ReceiverId, - mojo::ReceiverSet<blink::mojom::CodeCacheHost>&)>; + mojo::UniqueReceiverSet<blink::mojom::CodeCacheHost>&)>; static void SetCodeCacheHostReceiverHandlerForTesting( CodeCacheHostReceiverHandler handler); @@ -1083,10 +1083,8 @@ // Currently fetching code caches from main thread use the interface // associated with the RenderFrameHost. All others (fetches from worker // threads, writing into code caches) use per-process interface. - // TODO(mythria): Change this to unique receiver set so we don't need to hold - // the CodeCacheHostImpl explicitly. - mojo::ReceiverSet<blink::mojom::CodeCacheHost> code_cache_host_receivers_; - std::unique_ptr<CodeCacheHostImpl> code_cache_host_impl_; + mojo::UniqueReceiverSet<blink::mojom::CodeCacheHost> + code_cache_host_receivers_; bool channel_connected_; bool sent_render_process_ready_;
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h index 7ad9707..150246a 100644 --- a/content/browser/service_worker/embedded_worker_test_helper.h +++ b/content/browser/service_worker/embedded_worker_test_helper.h
@@ -16,6 +16,7 @@ #include "content/browser/service_worker/fake_embedded_worker_instance_client.h" #include "content/browser/service_worker/fake_service_worker.h" #include "content/browser/service_worker/service_worker_test_utils.h" +#include "content/browser/service_worker/service_worker_version.h" #include "content/browser/url_loader_factory_getter.h" #include "content/test/fake_network_url_loader_factory.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 4a508aa..ca1ed2b 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -2325,7 +2325,6 @@ CodeCacheHostInterceptor(RenderProcessHost* rph, CodeCacheHostImpl* code_cache_host_impl) : render_process_host_(rph), code_cache_host_impl_(code_cache_host_impl) { - // Intercept messages for the CodeCacheHost. // Register with the RenderProcessHost so we can cleanup properly. render_process_host_->AddObserver(this); @@ -2439,7 +2438,7 @@ RenderProcessHost* rph, CodeCacheHostImpl* code_cache_host_impl, mojo::ReceiverId receiver_id, - mojo::ReceiverSet<blink::mojom::CodeCacheHost>& receiver_set) { + mojo::UniqueReceiverSet<blink::mojom::CodeCacheHost>& receiver_set) { // Override the cache_storage context to assert that CodeCacheHostImpl // does not try to access it when given a bad origin. code_cache_host_impl->SetCacheStorageControlForTesting( @@ -2448,16 +2447,17 @@ // Create an interceptor that passes a bad origin to CodeCacheHostImpl. auto interceptor = std::make_unique<CodeCacheHostInterceptor>(rph, code_cache_host_impl); - receiver_set.SwapImplForTesting(receiver_id, interceptor.get()); - interceptors_.push_back(std::move(interceptor)); + code_cache_host_interfaces_.push_back( + receiver_set.SwapImplForTesting(receiver_id, std::move(interceptor))); } private: std::unique_ptr<CacheStorageControlForBadOrigin> cache_storage_control_; - // Track the CodeCacheHostIntercptor objects so we can delete them in - // the test destructor. - std::vector<std::unique_ptr<CodeCacheHostInterceptor>> interceptors_; + // Track the original CodeCacheHost interface objects so we can delete them + // in the test destructor. + std::vector<std::unique_ptr<blink::mojom::CodeCacheHost>> + code_cache_host_interfaces_; }; IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CodeCacheForCacheStorageBadOriginTest,
diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc index 0c724ca1..999755b 100644 --- a/content/browser/service_worker/service_worker_container_host.cc +++ b/content/browser/service_worker/service_worker_container_host.cc
@@ -140,7 +140,7 @@ } if (IsContainerForClient() && controller_) - controller_->OnControlleeDestroyed(client_uuid()); + controller_->Uncontrol(client_uuid()); // Remove |this| as an observer of ServiceWorkerRegistrations. // TODO(falken): Use base::ScopedObservation instead of this explicit call. @@ -1251,7 +1251,7 @@ } } if (previous_version) - previous_version->RemoveControllee(client_uuid()); + previous_version->Uncontrol(client_uuid()); // SetController message should be sent only for clients. DCHECK(IsContainerForClient());
diff --git a/content/browser/service_worker/service_worker_context_wrapper.h b/content/browser/service_worker/service_worker_context_wrapper.h index 0c36a253..14ab08b 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.h +++ b/content/browser/service_worker/service_worker_context_wrapper.h
@@ -13,7 +13,6 @@ #include <vector> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/observer_list.h"
diff --git a/content/browser/service_worker/service_worker_host.cc b/content/browser/service_worker/service_worker_host.cc index 77f7f20..d03b4af4 100644 --- a/content/browser/service_worker/service_worker_host.cc +++ b/content/browser/service_worker/service_worker_host.cc
@@ -53,6 +53,8 @@ ServiceWorkerVersion* version, base::WeakPtr<ServiceWorkerContextCore> context) : version_(version), + broker_(this), + broker_receiver_(&broker_), container_host_(std::make_unique<content::ServiceWorkerContainerHost>( std::move(context))), host_receiver_(container_host_.get(), std::move(host_receiver)) {
diff --git a/content/browser/service_worker/service_worker_host.h b/content/browser/service_worker/service_worker_host.h index 2bf6c46..7c87a9c 100644 --- a/content/browser/service_worker/service_worker_host.h +++ b/content/browser/service_worker/service_worker_host.h
@@ -89,9 +89,8 @@ BrowserInterfaceBrokerImpl<ServiceWorkerHost, const ServiceWorkerVersionBaseInfo&> - broker_{this}; - mojo::Receiver<blink::mojom::BrowserInterfaceBroker> broker_receiver_{ - &broker_}; + broker_; + mojo::Receiver<blink::mojom::BrowserInterfaceBroker> broker_receiver_; std::unique_ptr<ServiceWorkerContainerHost> container_host_;
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc index 1c9e03f6..79f6cca 100644 --- a/content/browser/service_worker/service_worker_version.cc +++ b/content/browser/service_worker/service_worker_version.cc
@@ -893,8 +893,7 @@ bfcached_controllee_map_.erase(client_uuid); } -void ServiceWorkerVersion::OnControlleeDestroyed( - const std::string& client_uuid) { +void ServiceWorkerVersion::Uncontrol(const std::string& client_uuid) { if (!IsBackForwardCacheEnabled()) { RemoveControllee(client_uuid); } else {
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h index f3748a2d..a20ba228 100644 --- a/content/browser/service_worker/service_worker_version.h +++ b/content/browser/service_worker/service_worker_version.h
@@ -394,9 +394,12 @@ void RestoreControlleeFromBackForwardCacheMap(const std::string& client_uuid); // Called when a back-forward cached controllee is evicted or destroyed. void RemoveControlleeFromBackForwardCacheMap(const std::string& client_uuid); - // Called when a controllee is destroyed. Remove controllee from whichever - // map it belongs to, or do nothing when it is already removed. - void OnControlleeDestroyed(const std::string& client_uuid); + // Called when this version should no longer be the controller of this client. + // Called when the controllee is destroyed or it changes controller. Removes + // controllee from whichever map it belongs to, or do nothing when it is + // already removed. This function is different from RemoveController(), which + // can only be called if the controllee is not in the back-forward cache map. + void Uncontrol(const std::string& client_uuid); // Returns true if this version has a controllee. // Note regarding BackForwardCache:
diff --git a/content/browser/speculation_rules/speculation_host_impl.cc b/content/browser/speculation_rules/speculation_host_impl.cc index 5c210f4..f6c0944 100644 --- a/content/browser/speculation_rules/speculation_host_impl.cc +++ b/content/browser/speculation_rules/speculation_host_impl.cc
@@ -4,6 +4,7 @@ #include "content/browser/speculation_rules/speculation_host_impl.h" +#include "content/browser/prerender/prerender_processor.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/content_client.h" @@ -17,7 +18,6 @@ RenderFrameHost* frame_host, mojo::PendingReceiver<blink::mojom::SpeculationHost> receiver) { // Note: Currently SpeculationHostImpl doesn't trigger prerendering. - // TODO(crbug.com/1197133): Support prerendering. // TODO(crbug.com/1190338): Allow SpeculationHostDelegate to participate in // this feature check. if (!base::FeatureList::IsEnabled( @@ -58,7 +58,48 @@ if (delegate_) delegate_->ProcessCandidates(candidates); - // TODO(crbug.com/1197133): process prerender candidates. + if (!blink::features::IsPrerender2Enabled() || candidates.empty()) + return; + + // Limit the number of started prerenders to one. If + // `prerender_processor_` is not null, it means `this` has started a + // prerender, and should ignore other prerender candidates. + // TODO(crbug.com/1197133): Cancel the started prerender and start a new + // one if the score of the new candidate is higher than the started one's. + // TODO(crbug.com/1197133): Record the cancellation reason via UMA. + if (prerender_processor_) { + return; + } + + // Find the first prerender candidate, since we limit the number of started + // prerenders to one. + // TODO(crbug.com/1197133): Find the candidate with the highest score. + // TODO(crbug.com/1176054): Support cross-origin prerendering. + // TODO(crbug.com/1197133): Record the cancellation reason of no same-origin + // candidates via UMA. + const auto prerender_filter = + [&](const blink::mojom::SpeculationCandidatePtr& it) { + return it->action == blink::mojom::SpeculationAction::kPrerender && + origin().IsSameOriginWith(url::Origin::Create(it->url)); + }; + const auto candidate_it = + std::find_if(candidates.begin(), candidates.end(), prerender_filter); + if (candidate_it == candidates.end()) + return; + + auto* rfhi = static_cast<RenderFrameHostImpl*>(render_frame_host()); + prerender_processor_ = std::make_unique<PrerenderProcessor>(*rfhi); + const blink::mojom::SpeculationCandidatePtr& candidate = *candidate_it; + + // TODO(https://crbug.com/1197133): Set up the field of size. + auto attributes = blink::mojom::PrerenderAttributes::New(); + attributes->url = candidate->url; + // TODO(https://crbug.com/1197133): Set up the referrer field appropriately. + attributes->referrer = blink::mojom::Referrer::New(); + attributes->trigger_type = + blink::mojom::PrerenderTriggerType::kSpeculationRule; + + prerender_processor_->Start(std::move(attributes)); } } // namespace content
diff --git a/content/browser/speculation_rules/speculation_host_impl.h b/content/browser/speculation_rules/speculation_host_impl.h index 2fa9fadf..3c33c87 100644 --- a/content/browser/speculation_rules/speculation_host_impl.h +++ b/content/browser/speculation_rules/speculation_host_impl.h
@@ -7,6 +7,7 @@ #include <vector> +#include "content/common/content_export.h" #include "content/public/browser/frame_service_base.h" #include "content/public/browser/speculation_host_delegate.h" #include "mojo/public/cpp/bindings/pending_receiver.h" @@ -14,10 +15,11 @@ namespace content { class RenderFrameHost; +class PrerenderProcessor; // Receiver for speculation rules from the web platform. See // third_party/blink/renderer/core/speculation_rules/README.md -class SpeculationHostImpl +class CONTENT_EXPORT SpeculationHostImpl final : public content::FrameServiceBase<blink::mojom::SpeculationHost> { public: // Creates and binds an instance of this per-frame. @@ -27,6 +29,11 @@ ~SpeculationHostImpl() override; + SpeculationHostImpl(const SpeculationHostImpl&) = delete; + SpeculationHostImpl& operator=(const SpeculationHostImpl&) = delete; + SpeculationHostImpl(SpeculationHostImpl&&) = delete; + SpeculationHostImpl& operator=(SpeculationHostImpl&&) = delete; + private: SpeculationHostImpl( RenderFrameHost* frame_host, @@ -36,6 +43,7 @@ std::vector<blink::mojom::SpeculationCandidatePtr> candidates) override; std::unique_ptr<SpeculationHostDelegate> delegate_; + std::unique_ptr<PrerenderProcessor> prerender_processor_; }; } // namespace content
diff --git a/content/browser/speculation_rules/speculation_host_impl_unittest.cc b/content/browser/speculation_rules/speculation_host_impl_unittest.cc new file mode 100644 index 0000000..8d4fa924 --- /dev/null +++ b/content/browser/speculation_rules/speculation_host_impl_unittest.cc
@@ -0,0 +1,258 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/speculation_rules/speculation_host_impl.h" + +#include "base/test/scoped_feature_list.h" +#include "content/browser/prerender/prerender_host_registry.h" +#include "content/public/common/content_client.h" +#include "content/public/test/test_browser_context.h" +#include "content/public/test/test_utils.h" +#include "content/test/test_content_browser_client.h" +#include "content/test/test_render_view_host.h" +#include "content/test/test_web_contents.h" +#include "third_party/blink/public/common/features.h" +#include "third_party/blink/public/mojom/speculation_rules/speculation_rules.mojom.h" + +namespace content { +namespace { + +class SpeculationHostImplTest : public RenderViewHostImplTestHarness { + public: + SpeculationHostImplTest() { + scoped_feature_list_.InitAndEnableFeature(blink::features::kPrerender2); + } + + void SetUp() override { + RenderViewHostImplTestHarness::SetUp(); + + browser_context_ = std::make_unique<TestBrowserContext>(); + web_contents_ = TestWebContents::Create( + browser_context_.get(), + SiteInstanceImpl::Create(browser_context_.get())); + web_contents_->NavigateAndCommit(GURL("https://example.com")); + } + + void TearDown() override { + web_contents_.reset(); + browser_context_.reset(); + RenderViewHostImplTestHarness::TearDown(); + } + + RenderFrameHostImpl* GetRenderFrameHost() { + return web_contents_->GetMainFrame(); + } + + GURL GetSameOriginUrl(const std::string& path) { + return GURL("https://example.com" + path); + } + + GURL GetCrossOriginUrl(const std::string& path) { + return GURL("https://other.example.com" + path); + } + + PrerenderHostRegistry* GetPrerenderHostRegistry() const { + return web_contents_->GetPrerenderHostRegistry(); + } + + blink::mojom::SpeculationCandidatePtr CreatePrerenderCandidate( + const GURL& url) { + auto candidate = blink::mojom::SpeculationCandidate::New(); + candidate->action = blink::mojom::SpeculationAction::kPrerender; + candidate->url = url; + return candidate; + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; + + std::unique_ptr<TestBrowserContext> browser_context_; + std::unique_ptr<TestWebContents> web_contents_; +}; + +// Tests that SpeculationHostImpl starts prerendering when it receives prerender +// speculation candidates. +TEST_F(SpeculationHostImplTest, StartPrerender) { + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const GURL kPrerenderingUrl = GetSameOriginUrl("/empty.html"); + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + candidates.push_back(CreatePrerenderCandidate(kPrerenderingUrl)); + + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + EXPECT_TRUE(registry->FindHostByUrlForTesting(kPrerenderingUrl)); +} + +// Tests that SpeculationHostImpl starts only one prerender when it receives +// more than one prerender candidates. +// TODO(crbug.com/1197133): Prerender the candidate with the highest score. +TEST_F(SpeculationHostImplTest, StartOnePrerenderOnMultipleCandidates) { + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const std::vector<GURL> prerender_urls{GetSameOriginUrl("/empty.html?1"), + GetSameOriginUrl("/empty.html?2")}; + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + for (const auto& url : prerender_urls) { + candidates.push_back(CreatePrerenderCandidate(url)); + } + + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + EXPECT_TRUE(registry->FindHostByUrlForTesting(prerender_urls[0])); + EXPECT_FALSE(registry->FindHostByUrlForTesting(prerender_urls[1])); +} + +// Tests that SpeculationHostImpl will skip the prerender candidate if it is a +// cross-origin url. +TEST_F(SpeculationHostImplTest, SkipCrossOriginPrerenderCandidates) { + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const GURL kPrerenderingUrl = GetCrossOriginUrl("/empty.html"); + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + candidates.push_back(CreatePrerenderCandidate(kPrerenderingUrl)); + + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + EXPECT_FALSE(registry->FindHostByUrlForTesting(kPrerenderingUrl)); +} + +// Tests that SpeculationHostImpl will skip a cross-origin candidate even if it +// is the first prerender candidate in the candidate list. +// TODO(crbug.com/1197133): After supporting selection by scores, test this case +// by assigning the cross-origin candidate the highest score. +TEST_F(SpeculationHostImplTest, ProcessFirstSameOriginPrerenderCandidate) { + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const GURL kFirstPrerenderingUrlCrossOrigin = + GetCrossOriginUrl("/title.html"); + const GURL kSecondPrerenderingUrlSameOrigin = + GetSameOriginUrl("/title1.html"); + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + candidates.push_back( + CreatePrerenderCandidate(kFirstPrerenderingUrlCrossOrigin)); + candidates.push_back( + CreatePrerenderCandidate(kSecondPrerenderingUrlSameOrigin)); + + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + + // The first prerender candidate is a cross-origin one, so SpeculationHostImpl + // should not prerender it. + EXPECT_FALSE( + registry->FindHostByUrlForTesting(kFirstPrerenderingUrlCrossOrigin)); + // The second element in this list is the first same-origin prerender + // candidate, so SpeculationHostImpl should prerender this candidate. + EXPECT_TRUE( + registry->FindHostByUrlForTesting(kSecondPrerenderingUrlSameOrigin)); +} + +// Tests that SpeculationHostImpl will ignore prerender candidates if it has +// started prerendering. +// TODO(crbug.com/1197133): Cancel the started prerender and start a new +// one if the score of the new candidate is higher than the started one's. +TEST_F(SpeculationHostImplTest, PrerenderOnlyOnce) { + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const auto update_prerender_candidate = [&](const GURL& url) { + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + candidates.push_back(CreatePrerenderCandidate(url)); + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + }; + + const GURL kFirstPrerenderingUrl = GetSameOriginUrl("/empty.html?1"); + update_prerender_candidate(kFirstPrerenderingUrl); + EXPECT_TRUE(registry->FindHostByUrlForTesting(kFirstPrerenderingUrl)); + + // If there is a started prerender, new prerender candidates should be + // ignored. + const GURL kSecondPrerenderingUrl = GetSameOriginUrl("/empty.html?2"); + update_prerender_candidate(kSecondPrerenderingUrl); + EXPECT_FALSE(registry->FindHostByUrlForTesting(kSecondPrerenderingUrl)); + EXPECT_TRUE(registry->FindHostByUrlForTesting(kFirstPrerenderingUrl)); +} + +class TestSpeculationHostDelegate : public SpeculationHostDelegate { + public: + TestSpeculationHostDelegate() = default; + ~TestSpeculationHostDelegate() override = default; + + // Disallows copy and move operations. + TestSpeculationHostDelegate(const TestSpeculationHostDelegate&) = delete; + TestSpeculationHostDelegate& operator=(const TestSpeculationHostDelegate&) = + delete; + + // SpeculationRulesDelegate implementation. + void ProcessCandidates( + std::vector<blink::mojom::SpeculationCandidatePtr>& candidates) override { + candidates.clear(); + } +}; + +class ScopedSpeculationHostImplContentBrowserClient + : public TestContentBrowserClient { + public: + ScopedSpeculationHostImplContentBrowserClient() { + old_browser_client_ = SetBrowserClientForTesting(this); + } + + ~ScopedSpeculationHostImplContentBrowserClient() override { + EXPECT_EQ(this, SetBrowserClientForTesting(old_browser_client_)); + } + + // ContentBrowserClient implementation. + std::unique_ptr<SpeculationHostDelegate> CreateSpeculationHostDelegate( + RenderFrameHost& render_frame_host) override { + return std::make_unique<TestSpeculationHostDelegate>(); + } + + private: + ContentBrowserClient* old_browser_client_; +}; + +// Tests that SpeculationHostDelegate can take the process candidates away and +// SpeculationHostImpl cannot handle the processed ones. +TEST_F(SpeculationHostImplTest, AllCandidatesProcessedByDelegate) { + ScopedSpeculationHostImplContentBrowserClient test_browser_client; + RenderFrameHostImpl* render_frame_host = GetRenderFrameHost(); + PrerenderHostRegistry* registry = GetPrerenderHostRegistry(); + mojo::Remote<blink::mojom::SpeculationHost> remote; + SpeculationHostImpl::Bind(render_frame_host, + remote.BindNewPipeAndPassReceiver()); + + const GURL kPrerenderingUrl = GetSameOriginUrl("/empty.html"); + std::vector<blink::mojom::SpeculationCandidatePtr> candidates; + candidates.push_back(CreatePrerenderCandidate(kPrerenderingUrl)); + + remote->UpdateSpeculationCandidates(std::move(candidates)); + remote.FlushForTesting(); + + // Since SpeculationHostDelegate has removed all candidates, + // SpeculationHostImpl cannot start prerendering for the prerender candidate. + EXPECT_FALSE(registry->FindHostByUrlForTesting(kPrerenderingUrl)); +} + +} // namespace +} // namespace content
diff --git a/content/browser/storage_partition_impl.h b/content/browser/storage_partition_impl.h index 5133113..5e92016 100644 --- a/content/browser/storage_partition_impl.h +++ b/content/browser/storage_partition_impl.h
@@ -13,7 +13,6 @@ #include "base/compiler_specific.h" #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/gtest_prod_util.h" #include "base/macros.h"
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc index e33b00e..3699174e 100644 --- a/content/browser/utility_process_host.cc +++ b/content/browser/utility_process_host.cc
@@ -256,6 +256,7 @@ switches::kForceUIDirection, switches::kIgnoreCertificateErrors, switches::kLoggingLevel, + switches::kOverrideUseSoftwareGLForHeadless, switches::kOverrideUseSoftwareGLForTests, switches::kOverrideEnabledCdmInterfaceVersion, switches::kProxyServer,
diff --git a/content/browser/worker_host/dedicated_worker_host.h b/content/browser/worker_host/dedicated_worker_host.h index 2b8ddbb..7d9994d 100644 --- a/content/browser/worker_host/dedicated_worker_host.h +++ b/content/browser/worker_host/dedicated_worker_host.h
@@ -20,6 +20,7 @@ #include "net/base/isolation_info.h" #include "services/network/public/cpp/cross_origin_embedder_policy.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/blink/public/common/service_worker/service_worker_status_code.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/mojom/idle/idle_manager.mojom-forward.h" #include "third_party/blink/public/mojom/loader/content_security_notifier.mojom.h" @@ -39,10 +40,13 @@ namespace content { +class ServiceWorkerContainerHost; +class ServiceWorkerRegistration; class DedicatedWorkerServiceImpl; class ServiceWorkerMainResourceHandle; class ServiceWorkerObjectHost; class StoragePartitionImpl; +class CrossOriginEmbedderPolicyReporter; // A host for a single dedicated worker. It deletes itself upon Mojo // disconnection from the worker in the renderer or when the RenderProcessHost
diff --git a/content/browser/worker_host/dedicated_worker_service_impl.cc b/content/browser/worker_host/dedicated_worker_service_impl.cc index 4f19f5d..de21d7b 100644 --- a/content/browser/worker_host/dedicated_worker_service_impl.cc +++ b/content/browser/worker_host/dedicated_worker_service_impl.cc
@@ -5,6 +5,7 @@ #include "content/browser/worker_host/dedicated_worker_service_impl.h" #include "content/browser/worker_host/dedicated_worker_host.h" +#include "content/public/browser/browser_thread.h" namespace content {
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index d0e5901..93d6253 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -584,7 +584,6 @@ "javatests/src/org/chromium/content/browser/remoteobjects/RemoteObjectHostImplTest.java", "javatests/src/org/chromium/content/browser/scheduler/NativePostTaskTest.java", "javatests/src/org/chromium/content/browser/scheduler/UiThreadSchedulerTest.java", - "javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java", "javatests/src/org/chromium/content/browser/webcontents/WebContentsTest.java", ]
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java index 5fac330..b432575 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java
@@ -21,11 +21,13 @@ import org.chromium.base.test.util.MinAndroidSdkLevel; import org.chromium.base.test.util.UrlUtils; import org.chromium.content_public.browser.test.util.Coordinates; +import org.chromium.content_public.browser.test.util.JavaScriptUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.common.UseZoomForDSFPolicy; import org.chromium.content_shell_apk.ContentShellActivityTestRule; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; /** * Tests for the implementation of onProvideVirtualStructure in @@ -39,10 +41,16 @@ /** * Helper to call onProvideVirtualStructure and block until the results are received. */ - private TestViewStructureInterface getViewStructureFromHtml(String htmlContent) { + private TestViewStructureInterface getViewStructureFromHtml(String htmlContent, String js) + throws TimeoutException { mActivityTestRule.launchContentShellWithUrl(UrlUtils.encodeHtmlDataUri(htmlContent)); mActivityTestRule.waitForActiveShellToBeDoneLoading(); + if (js != null) { + JavaScriptUtils.executeJavaScriptAndWaitForResult( + mActivityTestRule.getWebContents(), js); + } + final WebContentsAccessibilityImpl wcax = mActivityTestRule.getWebContentsAccessibility(); TestViewStructureInterface testViewStructure = @@ -57,6 +65,14 @@ return testViewStructure; } + /** + * Call getViewStructureFromHtml without the js parameter. + */ + private TestViewStructureInterface getViewStructureFromHtml(String htmlContent) + throws TimeoutException { + return getViewStructureFromHtml(htmlContent, null); + } + private double cssToPixel(double css) { boolean use_zoom_for_dsf = UseZoomForDSFPolicy.isUseZoomForDSFEnabled(); try { @@ -73,6 +89,19 @@ } } + private String getSelectionScript(String node1, int start, String node2, int end) { + return "var element1 = document.getElementById('" + node1 + "');" + + "var node1 = element1.childNodes.item(0);" + + "var range=document.createRange();" + + "range.setStart(node1," + start + ");" + + "var element2 = document.getElementById('" + node2 + "');" + + "var node2 = element2.childNodes.item(0);" + + "range.setEnd(node2," + end + ");" + + "var selection=window.getSelection();" + + "selection.removeAllRanges();" + + "selection.addRange(range);"; + } + /** * Test simple paragraph. */ @@ -381,4 +410,146 @@ int style = grandchild.getStyle(); Assert.assertTrue(0 != (style & ViewNode.TEXT_STYLE_BOLD)); } + + /** + * Test selection is propagated when it spans one character. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testOneCharacterSelection() throws Throwable { + final String data = "<html><body><b id='node' role='none'>foo</b></body></html>"; + final String js = getSelectionScript("node", 0, "node", 1); + TestViewStructureInterface root = getViewStructureFromHtml(data, js).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("foo", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(1, grandchild.getTextSelectionEnd()); + } + + /** + * Test selection is propagated when it spans one node. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testOneNodeSelection() throws Throwable { + final String data = "<html><body><b id='node' role='none'>foo</b></body></html>"; + final String js = getSelectionScript("node", 0, "node", 3); + TestViewStructureInterface root = getViewStructureFromHtml(data, js).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("foo", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(3, grandchild.getTextSelectionEnd()); + } + + /** + * Test selection is propagated when it spans to the beginning of the next node. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testSubsequentNodeSelection() throws Throwable { + final String data = "<html><body><b id='node1' role='none'>foo</b>" + + "<b id='node2' role='none'>bar</b></body></html>"; + final String js = getSelectionScript("node1", 1, "node2", 1); + TestViewStructureInterface root = getViewStructureFromHtml(data, js).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("foo", grandchild.getText()); + Assert.assertEquals(1, grandchild.getTextSelectionStart()); + Assert.assertEquals(3, grandchild.getTextSelectionEnd()); + grandchild = child.getChild(1); + Assert.assertEquals("bar", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(1, grandchild.getTextSelectionEnd()); + } + + /** + * Test selection is propagated across multiple nodes. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testMultiNodeSelection() throws Throwable { + final String data = "<html><body><b id='node1' role='none'>foo</b><b>middle</b>" + + "<b id='node2' role='none'>bar</b></body></html>"; + final String js = getSelectionScript("node1", 1, "node2", 1); + TestViewStructureInterface root = getViewStructureFromHtml(data, js).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("foo", grandchild.getText()); + Assert.assertEquals(1, grandchild.getTextSelectionStart()); + Assert.assertEquals(3, grandchild.getTextSelectionEnd()); + grandchild = child.getChild(1); + Assert.assertEquals("middle", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(6, grandchild.getTextSelectionEnd()); + grandchild = child.getChild(2); + Assert.assertEquals("bar", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(1, grandchild.getTextSelectionEnd()); + } + + /** + * Test selection is propagated from an HTML input element. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testRequestAccessibilitySnapshotInputSelection() throws Throwable { + final String data = "<html><body><input id='input' value='Hello, world'></body></html>"; + final String js = "var input = document.getElementById('input');" + + "input.select();" + + "input.selectionStart = 0;" + + "input.selectionEnd = 5;"; + + TestViewStructureInterface root = getViewStructureFromHtml(data, js).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("Hello, world", grandchild.getText()); + Assert.assertEquals(0, grandchild.getTextSelectionStart()); + Assert.assertEquals(5, grandchild.getTextSelectionEnd()); + } + + /** + * Test that the value is propagated from an HTML password field. + */ + @Test + @MediumTest + @MinAndroidSdkLevel(Build.VERSION_CODES.M) + @TargetApi(Build.VERSION_CODES.M) + public void testRequestAccessibilitySnapshotPasswordField() throws Throwable { + final String data = + "<html><body><input id='input' type='password' value='foo'></body></html>"; + TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0); + + Assert.assertEquals(1, root.getChildCount()); + Assert.assertEquals("", root.getText()); + TestViewStructureInterface child = root.getChild(0); + TestViewStructureInterface grandchild = child.getChild(0); + Assert.assertEquals("•••", grandchild.getText()); + } }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java index 58e7111..db65fbc 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java
@@ -30,6 +30,8 @@ private int mFgColor; private int mBgColor; private int mStyle; + private int mSelectionStart; + private int mSelectionEnd; public TestViewStructure() {} @@ -129,12 +131,12 @@ @Override public int getTextSelectionStart() { - return 0; + return mSelectionStart; } @Override public int getTextSelectionEnd() { - return 0; + return mSelectionEnd; } @Override @@ -301,7 +303,11 @@ } @Override - public void setText(CharSequence text, int selectionStart, int selectionEnd) {} + public void setText(CharSequence text, int selectionStart, int selectionEnd) { + mText = text; + mSelectionStart = selectionStart; + mSelectionEnd = selectionEnd; + } @Override public void setTextStyle(float size, int fgColor, int bgColor, int style) {
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java index 8a0d835..1ce574b 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java
@@ -62,4 +62,10 @@ /** @see android.view.ViewStructure#getText */ public CharSequence getText(); + + /** @see android.view.ViewStructure#getTextSelectionStart */ + public int getTextSelectionStart(); + + /** @see android.view.ViewStructure#getTextSelectionEnd */ + public int getTextSelectionEnd(); }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java b/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java deleted file mode 100644 index d85f7d7..0000000 --- a/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java +++ /dev/null
@@ -1,196 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.content.browser.webcontents; - -import androidx.test.filters.SmallTest; - -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.chromium.base.test.BaseJUnit4ClassRunner; -import org.chromium.base.test.util.CallbackHelper; -import org.chromium.base.test.util.UrlUtils; -import org.chromium.content_public.browser.AccessibilitySnapshotCallback; -import org.chromium.content_public.browser.AccessibilitySnapshotNode; -import org.chromium.content_public.browser.test.util.JavaScriptUtils; -import org.chromium.content_shell_apk.ContentShellActivityTestRule; - -/** - * Accessibility snapshot tests for Assist feature. - */ -@RunWith(BaseJUnit4ClassRunner.class) -public class AccessibilitySnapshotTest { - private static final double ASSERTION_DELTA = 0; - - @Rule - public ContentShellActivityTestRule mActivityTestRule = new ContentShellActivityTestRule(); - - private static class AccessibilityCallbackHelper extends CallbackHelper { - private AccessibilitySnapshotNode mRoot; - - public void notifyCalled(AccessibilitySnapshotNode root) { - mRoot = root; - super.notifyCalled(); - } - - public AccessibilitySnapshotNode getValue() { - return mRoot; - } - } - - private AccessibilitySnapshotNode receiveAccessibilitySnapshot(String data, String js) - throws Throwable { - mActivityTestRule.launchContentShellWithUrl(UrlUtils.encodeHtmlDataUri(data)); - mActivityTestRule.waitForActiveShellToBeDoneLoading(); - if (js != null) { - JavaScriptUtils.executeJavaScriptAndWaitForResult( - mActivityTestRule.getWebContents(), js); - } - - final AccessibilityCallbackHelper callbackHelper = new AccessibilityCallbackHelper(); - final AccessibilitySnapshotCallback callback = new AccessibilitySnapshotCallback() { - @Override - public void onAccessibilitySnapshot(AccessibilitySnapshotNode root) { - callbackHelper.notifyCalled(root); - } - }; - // read the callbackcount before executing the call on UI thread, since it may - // synchronously complete. - final int callbackCount = callbackHelper.getCallCount(); - mActivityTestRule.runOnUiThread(new Runnable() { - @Override - public void run() { - mActivityTestRule.getWebContents().requestAccessibilitySnapshot(callback); - } - }); - callbackHelper.waitForCallback(callbackCount); - return callbackHelper.getValue(); - } - - private String getSelectionScript(String node1, int start, String node2, int end) { - return "var element1 = document.getElementById('" + node1 + "');" - + "var node1 = element1.childNodes.item(0);" - + "var range=document.createRange();" - + "range.setStart(node1," + start + ");" - + "var element2 = document.getElementById('" + node2 + "');" - + "var node2 = element2.childNodes.item(0);" - + "range.setEnd(node2," + end + ");" - + "var selection=window.getSelection();" - + "selection.removeAllRanges();" - + "selection.addRange(range);"; - } - - @Test - @SmallTest - public void testRequestAccessibilitySnapshotOneCharacterSelection() throws Throwable { - final String data = "<html><body><b id='node' role='none'>foo</b></body></html>"; - - AccessibilitySnapshotNode root = - receiveAccessibilitySnapshot(data, getSelectionScript("node", 0, "node", 1)); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("foo", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(1, grandchild.endSelection); - } - - @Test - - @SmallTest - public void testRequestAccessibilitySnapshotOneNodeSelection() throws Throwable { - final String data = "<html><body><b id='node' role='none'>foo</b></body></html>"; - - AccessibilitySnapshotNode root = - receiveAccessibilitySnapshot(data, getSelectionScript("node", 0, "node", 3)); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("foo", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(3, grandchild.endSelection); - } - - @Test - @SmallTest - public void testRequestAccessibilitySnapshotSubsequentNodeSelection() throws Throwable { - final String data = "<html><body><b id='node1' role='none'>foo</b>" - + "<b id='node2' role='none'>bar</b></body></html>"; - - AccessibilitySnapshotNode root = - receiveAccessibilitySnapshot(data, getSelectionScript("node1", 1, "node2", 1)); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("foo", grandchild.text); - Assert.assertEquals(1, grandchild.startSelection); - Assert.assertEquals(3, grandchild.endSelection); - grandchild = child.children.get(1); - Assert.assertEquals("bar", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(1, grandchild.endSelection); - } - - @Test - @SmallTest - public void testRequestAccessibilitySnapshotMultiNodeSelection() throws Throwable { - final String data = "<html><body><b id='node1' role='none'>foo</b><b>middle</b>" - + "<b id='node2' role='none'>bar</b></body></html>"; - - AccessibilitySnapshotNode root = - receiveAccessibilitySnapshot(data, getSelectionScript("node1", 1, "node2", 1)); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("foo", grandchild.text); - Assert.assertEquals(1, grandchild.startSelection); - Assert.assertEquals(3, grandchild.endSelection); - grandchild = child.children.get(1); - Assert.assertEquals("middle", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(6, grandchild.endSelection); - grandchild = child.children.get(2); - Assert.assertEquals("bar", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(1, grandchild.endSelection); - } - - @Test - @SmallTest - public void testRequestAccessibilitySnapshotInputSelection() throws Throwable { - final String data = "<html><body><input id='input' value='Hello, world'></body></html>"; - final String js = "var input = document.getElementById('input');" - + "input.select();" - + "input.selectionStart = 0;" - + "input.selectionEnd = 5;"; - AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, js); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("Hello, world", grandchild.text); - Assert.assertEquals(0, grandchild.startSelection); - Assert.assertEquals(5, grandchild.endSelection); - } - - @Test - @SmallTest - public void testRequestAccessibilitySnapshotPasswordField() throws Throwable { - final String data = - "<html><body><input id='input' type='password' value='foo'></body></html>"; - AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null); - Assert.assertEquals(1, root.children.size()); - Assert.assertEquals("", root.text); - AccessibilitySnapshotNode child = root.children.get(0); - AccessibilitySnapshotNode grandchild = child.children.get(0); - Assert.assertEquals("•••", grandchild.text); - } -}
diff --git a/content/public/browser/bluetooth_delegate.h b/content/public/browser/bluetooth_delegate.h index 265cdb43..81a8a05d 100644 --- a/content/public/browser/bluetooth_delegate.h +++ b/content/public/browser/bluetooth_delegate.h
@@ -8,7 +8,6 @@ #include <string> #include <vector> -#include "base/containers/flat_set.h" #include "base/observer_list_types.h" #include "content/common/content_export.h" #include "content/public/browser/bluetooth_chooser.h"
diff --git a/content/public/common/cdm_info.h b/content/public/common/cdm_info.h index 0e900eb..95f9bc00 100644 --- a/content/public/common/cdm_info.h +++ b/content/public/common/cdm_info.h
@@ -8,7 +8,6 @@ #include <string> #include <vector> -#include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/token.h" #include "base/version.h"
diff --git a/content/public/test/prerender_test_util.cc b/content/public/test/prerender_test_util.cc index 90bd1d15..72191ab 100644 --- a/content/public/test/prerender_test_util.cc +++ b/content/public/test/prerender_test_util.cc
@@ -22,6 +22,18 @@ namespace test { namespace { +constexpr char kAddSpeculationRuleScript[] = R"({ + const script = document.createElement('script'); + script.type = 'speculationrules'; + script.text = `{ + "prerender": [{ + "source": "list", + "urls": [$1] + }] + }`; + document.head.appendChild(script); + })"; + PrerenderHostRegistry& GetPrerenderHostRegistry( content::WebContents* web_contents) { EXPECT_TRUE(content::BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -300,6 +312,24 @@ return host_id; } +int PrerenderTestHelper::AddSpeculationRules(const GURL& prerendering_url) { + EXPECT_TRUE(content::BrowserThread::CurrentlyOn(BrowserThread::UI)); + AddSpeculationRulesAsync(prerendering_url); + + WaitForPrerenderLoadCompletion(prerendering_url); + const int host_id = GetHostForUrl(prerendering_url); + EXPECT_NE(host_id, RenderFrameHost::kNoFrameTreeNodeId); + return host_id; +} + +void PrerenderTestHelper::AddSpeculationRulesAsync( + const GURL& prerendering_url) { + EXPECT_TRUE(content::BrowserThread::CurrentlyOn(BrowserThread::UI)); + const auto script = JsReplace(kAddSpeculationRuleScript, prerendering_url); + GetWebContents()->GetMainFrame()->ExecuteJavaScriptForTests( + base::UTF8ToUTF16(script), base::NullCallback()); +} + void PrerenderTestHelper::NavigatePrerenderedPage(int host_id, const GURL& gurl) { auto* prerender_host = GetPrerenderHostById(GetWebContents(), host_id);
diff --git a/content/public/test/prerender_test_util.h b/content/public/test/prerender_test_util.h index 0a6c6a5..464a318 100644 --- a/content/public/test/prerender_test_util.h +++ b/content/public/test/prerender_test_util.h
@@ -117,6 +117,15 @@ // add_prerender.html and waits until the completion of prerendering. int AddPrerenderWithTestUtilJS(const GURL& gurl); + // Adds <script type="speculationrules"> in the current main frame and waits + // until the completion of prerendering. Returns the id of the resulting + // prerendering host. + // + // AddSpeculationRulesAsync() is the same as AddSpeculationRules(), but does + // not wait until the completion of prerendering. + int AddSpeculationRules(const GURL& prerendering_url); + void AddSpeculationRulesAsync(const GURL& prerendering_url); + // This navigates, but does not activate, the prerendered page. void NavigatePrerenderedPage(int host_id, const GURL& gurl);
diff --git a/content/public/test/url_loader_interceptor.h b/content/public/test/url_loader_interceptor.h index d72e34f..8d8fd01 100644 --- a/content/public/test/url_loader_interceptor.h +++ b/content/public/test/url_loader_interceptor.h
@@ -45,7 +45,7 @@ // -if you need to delay when the server sends the response, use // net::test_server::ControllableHttpResponse // -otherwise, if you need full control over the net::Error and/or want to -// inspect and/or modify the C++ structs used by URLoader interface, then use +// inspect and/or modify the C++ structs used by URLLoader interface, then use // this helper class // // Notes:
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc index c68b426..7f26a40 100644 --- a/content/renderer/accessibility/render_accessibility_impl.cc +++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -458,7 +458,7 @@ ax::mojom::Action event_from_action, std::vector<ui::AXEventIntent> event_intents) { EnqueueDirtyObject(obj, ax::mojom::EventFrom::kAction, event_from_action, - event_intents); + event_intents, QueuePosition::kBack); if (subtree) serializer_->InvalidateSubtree(obj); @@ -634,13 +634,17 @@ const blink::WebAXObject& obj, ax::mojom::EventFrom event_from, ax::mojom::Action event_from_action, - std::vector<ui::AXEventIntent> event_intents) { + std::vector<ui::AXEventIntent> event_intents, + RenderAccessibilityImpl::QueuePosition queue_position) { DirtyObject* dirty_object = new DirtyObject(); dirty_object->obj = obj; dirty_object->event_from = event_from; dirty_object->event_from_action = event_from_action; dirty_object->event_intents = event_intents; - dirty_objects_.push_back(base::WrapUnique<DirtyObject>(dirty_object)); + if (queue_position == QueuePosition::kBack) + dirty_objects_.push_back(base::WrapUnique<DirtyObject>(dirty_object)); + else + dirty_objects_.push_front(base::WrapUnique<DirtyObject>(dirty_object)); } int RenderAccessibilityImpl::GetDeferredEventsDelay() { @@ -908,10 +912,21 @@ << " on node id " << event.id; } - // Now serialize all dirty objects. Keep track of IDs serialized - // so we don't have to serialize the same node twice. + // Keep track of the last object in the queue; anything appended past + // this object during this loop will be skipped until the next round. + auto last_dirty_object_to_serialize = --dirty_objects_.end(); + + // Keep track of IDs serialized so we don't serialize the same node twice. std::set<int32_t> already_serialized_ids; - while (!dirty_objects_.empty()) { + + // Serialize all dirty objects in the list at this point in time, stopping + // either after we finish |last_dirty_object_to_serialize| or when the + // queue is empty. + bool done = false; + while (!dirty_objects_.empty() && !done) { + if (dirty_objects_.begin() == last_dirty_object_to_serialize) + done = true; + std::unique_ptr<DirtyObject> current_dirty_object = std::move(dirty_objects_.front()); dirty_objects_.pop_front(); @@ -968,13 +983,18 @@ // Similarly, during Event::kTextChanged, if any Ignored, // but included in tree ancestor uses NameFrom::kContents, // they must also be re-serialized in case the name changed. + // + // Enqueue this dirty object at the front of the queue to ensure + // it's serialized now, not in a subsequent message. EnqueueDirtyObject(ancestor, current_dirty_object->event_from, current_dirty_object->event_from_action, - current_dirty_object->event_intents); + current_dirty_object->event_intents, + QueuePosition::kFront); } EnqueueDirtyObject(ancestor, current_dirty_object->event_from, current_dirty_object->event_from_action, - current_dirty_object->event_intents); + current_dirty_object->event_intents, + QueuePosition::kFront); } ui::AXTreeUpdate update;
diff --git a/content/renderer/accessibility/render_accessibility_impl.h b/content/renderer/accessibility/render_accessibility_impl.h index f19d93e..fbfbe644 100644 --- a/content/renderer/accessibility/render_accessibility_impl.h +++ b/content/renderer/accessibility/render_accessibility_impl.h
@@ -206,10 +206,12 @@ const ui::AXEvent& event) const; // Add a DirtyObject to the dirty_objects_ queue. + enum class QueuePosition { kFront, kBack }; void EnqueueDirtyObject(const blink::WebAXObject& obj, ax::mojom::EventFrom event_from, ax::mojom::Action event_from_action, - std::vector<ui::AXEventIntent> event_intents); + std::vector<ui::AXEventIntent> event_intents, + QueuePosition queue_position); // If we are calling this from a task, scheduling is allowed even if there is // a running task
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 0ae1c020..1ebe913 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1153,7 +1153,6 @@ "../browser/renderer_host/cookie_browsertest.cc", "../browser/renderer_host/embedding_token_browsertest.cc", "../browser/renderer_host/frame_tree_browsertest.cc", - "../browser/renderer_host/private_network_access_browsertest.cc", "../browser/renderer_host/input/autoscroll_browsertest.cc", "../browser/renderer_host/input/composited_scrolling_browsertest.cc", "../browser/renderer_host/input/compositor_event_ack_browsertest.cc", @@ -1182,6 +1181,7 @@ "../browser/renderer_host/panel_rotation_browsertest.cc", "../browser/renderer_host/policy_container_host_browsertest.cc", "../browser/renderer_host/policy_container_navigation_bundle_browsertest.cc", + "../browser/renderer_host/private_network_access_browsertest.cc", "../browser/renderer_host/render_document_host_browsertest.cc", "../browser/renderer_host/render_document_host_user_data_browsertest.cc", "../browser/renderer_host/render_frame_host_impl_browsertest.cc", @@ -2131,6 +2131,7 @@ "../browser/sms/sms_parser_unittest.cc", "../browser/sms/user_consent_handler_unittest.cc", "../browser/sms/webotp_service_unittest.cc", + "../browser/speculation_rules/speculation_host_impl_unittest.cc", "../browser/speech/tts_controller_unittest.cc", "../browser/startup_task_runner_unittest.cc", "../browser/storage_partition_config_unittest.cc",
diff --git a/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-auralinux.txt b/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-auralinux.txt index 5325c31d..530b875 100644 --- a/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-auralinux.txt +++ b/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-auralinux.txt
@@ -1 +1,4 @@ -PARENT-CHANGED PARENT:(role=ROLE_PANEL name='(null)') role=ROLE_LANDMARK name='(null)' ENABLED,SENSITIVE,SHOWING,VISIBLE +CHILDREN-CHANGED:ADD index:0 CHILD:(role=ROLE_LANDMARK) role=ROLE_PANEL ENABLED,SENSITIVE,SHOWING,VISIBLE +CHILDREN-CHANGED:REMOVE index:1 CHILD:(role=ROLE_LANDMARK) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE +STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT +STATE-CHANGE:DEFUNCT:TRUE role=ROLE_INVALID name='(null)' DEFUNCT \ No newline at end of file
diff --git a/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-win.txt b/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-win.txt index 9632e1cb..5a902d09 100644 --- a/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-win.txt +++ b/content/test/data/accessibility/event/subtree-reparented-via-aria-owns-expected-win.txt
@@ -1,4 +1,6 @@ +EVENT_OBJECT_HIDE on <div#search> role=ROLE_SYSTEM_GROUPING EVENT_OBJECT_REORDER on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE EVENT_OBJECT_REORDER on <div#group> role=ROLE_SYSTEM_GROUPING +EVENT_OBJECT_SHOW on <div#search> role=ROLE_SYSTEM_GROUPING IA2_EVENT_TEXT_INSERTED on <div#group> role=ROLE_SYSTEM_GROUPING new_text={'<obj>' start=0 end=1} -IA2_EVENT_TEXT_REMOVED on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE old_text={'<obj>' start=1 end=2} +IA2_EVENT_TEXT_REMOVED on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSED,FOCUSABLE old_text={'<obj>' start=1 end=2} \ No newline at end of file
diff --git a/content/test/data/accessibility/event/visibility-hidden-changed-expected-auralinux.txt b/content/test/data/accessibility/event/visibility-hidden-changed-expected-auralinux.txt index 0ded3d8..4b8a2c6 100644 --- a/content/test/data/accessibility/event/visibility-hidden-changed-expected-auralinux.txt +++ b/content/test/data/accessibility/event/visibility-hidden-changed-expected-auralinux.txt
@@ -1,6 +1,6 @@ CHILDREN-CHANGED:ADD index:0 CHILD:(role=ROLE_HEADING) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE CHILDREN-CHANGED:ADD index:1 CHILD:(role=ROLE_HEADING) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE CHILDREN-CHANGED:REMOVE index:0 CHILD:(role=ROLE_HEADING) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE +CHILDREN-CHANGED:REMOVE index:0 CHILD:(role=ROLE_HEADING) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE CHILDREN-CHANGED:REMOVE index:0 CHILD:(role=ROLE_STATIC) role=ROLE_HEADING ENABLED,SENSITIVE,SHOWING,VISIBLE -CHILDREN-CHANGED:REMOVE index:0 CHILD:(role=ROLE_STATIC) role=ROLE_HEADING ENABLED,SENSITIVE,SHOWING,VISIBLE -CHILDREN-CHANGED:REMOVE index:1 CHILD:(role=ROLE_HEADING) role=ROLE_DOCUMENT_WEB ENABLED,FOCUSABLE,FOCUSED,SENSITIVE,SHOWING,VISIBLE +CHILDREN-CHANGED:REMOVE index:0 CHILD:(role=ROLE_STATIC) role=ROLE_HEADING ENABLED,SENSITIVE,SHOWING,VISIBLE \ No newline at end of file
diff --git a/content/test/data/accessibility/html/a-name-expected-android.txt b/content/test/data/accessibility/html/a-name-expected-android.txt index 6ea68dec..4ab90d39 100644 --- a/content/test/data/accessibility/html/a-name-expected-android.txt +++ b/content/test/data/accessibility/html/a-name-expected-android.txt
@@ -1,4 +1,4 @@ android.webkit.WebView focusable focused scrollable -++android.view.View clickable name='named anchor' +++android.view.View name='named anchor' ++android.view.View role_description='link' clickable focusable link name='both a named anchor and a link' ++++android.widget.TextView name='both a named anchor and a link'
diff --git a/content/test/data/accessibility/html/a-with-before-expected-blink.txt b/content/test/data/accessibility/html/a-with-before-expected-blink.txt new file mode 100644 index 0000000..06f5a4c --- /dev/null +++ b/content/test/data/accessibility/html/a-with-before-expected-blink.txt
@@ -0,0 +1,13 @@ +rootWebArea +++genericContainer ignored +++++genericContainer +++++++staticText name='Here is a ' +++++++++inlineTextBox name='Here is a ' +++++++link linked name='link' +++++++++genericContainer ignored +++++++++++staticText linked name='[linked] ' +++++++++++++inlineTextBox name='[linked] ' +++++++++staticText linked name='link' +++++++++++inlineTextBox name='link' +++++++staticText name='.' +++++++++inlineTextBox name='.'
diff --git a/content/test/data/accessibility/html/a-with-before.html b/content/test/data/accessibility/html/a-with-before.html new file mode 100644 index 0000000..0b08001a --- /dev/null +++ b/content/test/data/accessibility/html/a-with-before.html
@@ -0,0 +1,10 @@ +<!-- +@BLINK-ALLOW:linked +--> +<!DOCTYPE html> +<html> +<style> +a::before { content: "[linked] "} +</style> +Here is a <a href="http://google.com">link</a>. +</html>
diff --git a/content/test/data/accessibility/html/in-page-links-expected-android.txt b/content/test/data/accessibility/html/in-page-links-expected-android.txt index e8f1a9a..9ab18a5d 100644 --- a/content/test/data/accessibility/html/in-page-links-expected-android.txt +++ b/content/test/data/accessibility/html/in-page-links-expected-android.txt
@@ -17,12 +17,12 @@ ++android.view.View role_description='link' clickable focusable link name='Paragraph with content' ++++android.widget.TextView name='Paragraph with content' ++android.view.View -++++android.view.View clickable +++++android.view.View ++++android.widget.TextView name='After empty anchor' ++android.view.View -++++android.view.View clickable name='Anchor with content' +++++android.view.View name='Anchor with content' ++android.view.View -++++android.view.View clickable name='Anchor with ID' +++++android.view.View name='Anchor with ID' ++android.view.View ++++android.view.View ++++android.widget.TextView name='After empty span'
diff --git a/content/test/data/accessibility/html/in-page-links-expected-blink.txt b/content/test/data/accessibility/html/in-page-links-expected-blink.txt index eb976ff..fd0f501d 100644 --- a/content/test/data/accessibility/html/in-page-links-expected-blink.txt +++ b/content/test/data/accessibility/html/in-page-links-expected-blink.txt
@@ -1,33 +1,33 @@ rootWebArea ++genericContainer ignored ++++genericContainer ignored -++++++link name='Empty anchor' inPageLinkTargetId=anchor -++++++++staticText name='Empty anchor' +++++++link name='Empty anchor' defaultActionVerb=jump inPageLinkTargetId=anchor +++++++++staticText name='Empty anchor' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Empty anchor' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' -++++++link name='Anchor with content' inPageLinkTargetId=anchor -++++++++staticText name='Anchor with content' +++++++link name='Anchor with content' defaultActionVerb=jump inPageLinkTargetId=anchor +++++++++staticText name='Anchor with content' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Anchor with content' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' -++++++link name='Anchor with ID' inPageLinkTargetId=anchor -++++++++staticText name='Anchor with ID' +++++++link name='Anchor with ID' defaultActionVerb=jump inPageLinkTargetId=anchor +++++++++staticText name='Anchor with ID' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Anchor with ID' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' -++++++link name='Empty span' inPageLinkTargetId=genericContainer -++++++++staticText name='Empty span' +++++++link name='Empty span' defaultActionVerb=jump inPageLinkTargetId=genericContainer +++++++++staticText name='Empty span' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Empty span' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' -++++++link name='Span with content' inPageLinkTargetId=genericContainer -++++++++staticText name='Span with content' +++++++link name='Span with content' defaultActionVerb=jump inPageLinkTargetId=genericContainer +++++++++staticText name='Span with content' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Span with content' ++++++staticText name=' ' ++++++++inlineTextBox name=' ' -++++++link name='Paragraph with content' inPageLinkTargetId=paragraph -++++++++staticText name='Paragraph with content' +++++++link name='Paragraph with content' defaultActionVerb=jump inPageLinkTargetId=paragraph +++++++++staticText name='Paragraph with content' defaultActionVerb=clickAncestor ++++++++++inlineTextBox name='Paragraph with content' ++++++paragraph ++++++++anchor
diff --git a/content/test/data/accessibility/html/in-page-links-expected-uia-win.txt b/content/test/data/accessibility/html/in-page-links-expected-uia-win.txt index 23a18c4..be7be40 100644 --- a/content/test/data/accessibility/html/in-page-links-expected-uia-win.txt +++ b/content/test/data/accessibility/html/in-page-links-expected-uia-win.txt
@@ -17,7 +17,7 @@ ++Hyperlink Name='Paragraph with content' ++++Text Name='Paragraph with content' IsControlElement=false ++Group IsControlElement=false -++++Hyperlink +++++Hyperlink IsControlElement=false ++++Text Name='After empty anchor' ++Group IsControlElement=false ++++Hyperlink Name='Anchor with content' @@ -32,4 +32,4 @@ ++++Group IsControlElement=false ++++++Text Name='Span with content' ++Group IsControlElement=false -++++Text Name='Paragraph with content' +++++Text Name='Paragraph with content' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/in-page-links.html b/content/test/data/accessibility/html/in-page-links.html index 80955c4..4406efdc 100644 --- a/content/test/data/accessibility/html/in-page-links.html +++ b/content/test/data/accessibility/html/in-page-links.html
@@ -1,6 +1,7 @@ <!DOCTYPE html> <!-- @BLINK-ALLOW:inPageLinkTargetId=* +@BLINK-ALLOW:defaultActionVerb=* @MAC-ALLOW:AXLinkedUIElements @MAC-DENY:AXLinkedUIElements=[] @WIN-ALLOW:LINKED
diff --git a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt index ca85cb9..74bc9fcc 100644 --- a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
@@ -97,11 +97,6 @@ [ fuchsia ] Pixel_Canvas2DTabSwitch_SoftwareCompositing [ Skip ] [ fuchsia ] Pixel_WebGLReadPixelsTabSwitch_SoftwareCompositing [ Skip ] -# Flakes on Linux, and less often flakes on Win and Mac per flake portal. -crbug.com/1166141 [ linux ] Pixel_WebGLReadPixelsTabSwitch_SoftwareCompositing [ RetryOnFailure ] -crbug.com/1166141 [ win ] Pixel_WebGLReadPixelsTabSwitch_SoftwareCompositing [ RetryOnFailure ] -crbug.com/1166141 [ mac ] Pixel_WebGLReadPixelsTabSwitch_SoftwareCompositing [ RetryOnFailure ] - # Skip tab switching tests on Android webview and Fuchsia since they don't have tabs [ android android-webview-instrumentation ] Pixel_Canvas2DTabSwitch [ Skip ] [ android android-webview-instrumentation ] Pixel_WebGLReadPixelsTabSwitch [ Skip ] @@ -146,18 +141,14 @@ # expectation below is removed. # crbug.com/575305 [ android-webview-instrumentation ] Pixel_WebGLSadCanvas [ Skip ] -crbug.com/521588 [ android ] Pixel_ScissorTestWithPreserveDrawingBuffer [ Failure ] - crbug.com/624256 [ android ] Pixel_SolidColorBackground [ Failure ] # Failing on Nexus 5; haven't investigated why yet. crbug.com/773293 [ android android-nexus-5 ] Pixel_WebGL2_BlitFramebuffer_Result_Displayed [ Skip ] crbug.com/773293 [ android android-nexus-5 ] Pixel_WebGL2_ClearBufferfv_Result_Displayed [ Skip ] -crbug.com/774809 [ mac intel ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ] - -# Failing on NVIDIA Shield TV; not sure why yet. -crbug.com/791733 [ android nvidia ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ] +crbug.com/1213674 [ mac amd passthrough ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ] +crbug.com/1213674 [ mac nvidia passthrough ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ] # TODO(kbr): temporary suppression for new test. crbug.com/575305 [ linux ] Pixel_WebGLSadCanvas [ Skip ] @@ -166,8 +157,6 @@ crbug.com/575305 [ android ] Pixel_WebGLSadCanvas [ Skip ] crbug.com/575305 [ fuchsia ] Pixel_WebGLSadCanvas [ Skip ] -crbug.com/868596 [ android android-chromium android-nexus-9 ] Pixel_OffscreenCanvasWebGLPaintAfterResize [ Failure ] - # float16 is not yet supported for accelerated canvases crbug.com/948141 Pixel_CanvasDisplaySRGBAccelerated2D [ Skip ] @@ -236,17 +225,6 @@ crbug.com/997313 [ win intel-0x5912 skia-renderer-gl ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ] crbug.com/997313 [ win intel-0x3e92 skia-renderer-gl ] Pixel_WebGL_PremultipliedAlpha_False [ Failure ] -# Flakes on Nexus 9 or NVIDIA Shield TV -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Aspect_4x3 [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_180 [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_270 [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_90 [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_MP4_Rounded_Corner [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_Video_Context_Loss_VP9 [ RetryOnFailure ] -crbug.com/1019462 [ android android-nexus-9 skia-renderer-disabled ] Pixel_WebGL2_BlitFramebuffer_Result_Displayed [ RetryOnFailure ] -crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Aspect_4x3 [ RetryOnFailure ] -crbug.com/1019462 [ android android-shield-android-tv skia-renderer-disabled ] Pixel_Video_MP4_FourColors_Rot_90 [ RetryOnFailure ] - # Times out on Pixel 4s in webview. crbug.com/1176918 [ android android-pixel-4 android-webview-instrumentation skia-renderer-gl ] Pixel_Video_BackdropFilter [ Failure ] crbug.com/1176918 [ android android-pixel-4 android-webview-instrumentation skia-renderer-gl ] Pixel_Video_Context_Loss_VP9 [ Failure ] @@ -262,9 +240,6 @@ crbug.com/1048892 [ mac nvidia ] Pixel_OffscreenCanvasIBRCWebGLHighPerfMain [ Skip ] crbug.com/1048892 [ mac nvidia ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ Skip ] -# Flakes on Linux -crbug.com/1028975 [ linux ] Pixel_PrecisionRoundedCorner [ RetryOnFailure ] - # HDR rendering with PQ color space appears to be broken on Windows RS2. # TODO(sunnyps): Revert this temporary suppression after ensuring pixel tests # always run on Windows RS3 or above. @@ -383,7 +358,9 @@ # Flakes on gpu-fyi-try-chromeos-kevin and Fuchsia x64, produces notably different image. crbug.com/1086687 [ chromeos chromeos-board-kevin ] Pixel_PrecisionRoundedCorner [ Skip ] -crbug.com/1136875 [ fuchsia ] Pixel_PrecisionRoundedCorner [ Failure ] + +# Flaky hang. +crbug.com/1136875 [ fuchsia ] Pixel_PrecisionRoundedCorner [ RetryOnFailure ] # Still fails on Nexus 5 after all other Pixel_CanvasLowLatency* pass. crbug.com/1097752 [ android android-nexus-5 ] Pixel_CanvasLowLatencyWebGLAlphaFalse [ Skip ] @@ -403,10 +380,6 @@ # Failures on Mac FYI arm64 Release (Apple DTK) crbug.com/1175753 [ mac release apple-apple-m1 ] Pixel_Video_BackdropFilter [ Skip ] -# Flakes on Mac AMD, Intel and nVidia -crbug.com/1198890 [ mac ] Pixel_CSSFilterEffects_NoOverlays [ Failure ] -crbug.com/1201977 [ mac ] Pixel_CSSFilterEffects [ Failure ] - # Long-standing flake on Kevin devices due to disappearing mailbox. crbug.com/1200504 [ chromeos chromeos-board-kevin ] Pixel_OffscreenCanvasWebGLPaintAfterResize [ RetryOnFailure ]
diff --git a/docs/ios/multiwindow_eg_tests.md b/docs/ios/multiwindow_eg_tests.md index 3916e59..09adc56d 100644 --- a/docs/ios/multiwindow_eg_tests.md +++ b/docs/ios/multiwindow_eg_tests.md
@@ -208,6 +208,41 @@ id<GREYMatcher> SettingsMenuBackButton(int window_number); ``` +## Chrome Matchers +Some chrome matchers have a version where the window number needs to be +specified. On those, the root matcher will be set and left set on return to +allow less verbosity at call site. + +``` +// Makes the toolbar visible by swiping downward, if necessary. Then taps on +// the Tools menu button. At least one tab needs to be open and visible when +// calling this method. +// Sets and Leaves the root matcher to the given window with |windowNumber|. +- (void)openToolsMenuInWindowWithNumber:(int)windowNumber; + +// Opens the settings menu by opening the tools menu, and then tapping the +// Settings button. There will be a GREYAssert if the tools menu is open when +// calling this method. +// Sets and Leaves the root matcher to the given window with |windowNumber|. +- (void)openSettingsMenuInWindowWithNumber:(int)windowNumber; +``` + +For example, the following code: + +``` + [EarlGrey setRootMatcherForSubsequentInteractions: + chrome_test_util::WindowWithNumber(windowNumber)]; + [ChromeEarlGreyUI openToolsMenu]; + [ChromeEarlGreyUI tapToolsMenuButton:HistoryButton()]; +``` + +Can be reduced to: + +``` + [ChromeEarlGreyUI openToolsMenuInWindowWithNumber:windowNumber]; + [ChromeEarlGreyUI tapToolsMenuButton:HistoryButton()]; +``` + ## Actions There are actions that cannot be done using `EarlGrey` (yet?). One of those is
diff --git a/docs/security/faq.md b/docs/security/faq.md index e649f91..428acc5 100644 --- a/docs/security/faq.md +++ b/docs/security/faq.md
@@ -637,6 +637,20 @@ strong guarantees about only Chrome being able to access its storage. See [Issue 520437](https://crbug.com/520437) to follow this migration. +<a name="TOC-If-theres-a-way-to-see-stored-passwords-without-entering-a-password--is-this-a-security-bug-"></a> +## If there's a way to see stored passwords without entering a password, is this a security bug? + +No. If an attacker has control of your login on your device, they can get to +your passwords by inspecting Chrome disk files or memory. (See +[why aren't physically-local attacks in Chrome's threat +model](#TOC-Why-aren-t-physically-local-attacks-in-Chrome-s-threat-model-)). + +On some platforms we ask for a password before revealing stored passwords, +but this is not considered a robust defense. It’s historically to stop +users inadvertently revealing their passwords on screen, for example if +they’re screen sharing. We don’t do this on all platforms because we consider +such risks greater on some than on others. + <a name="TOC-I-found-a-phishing-or-malware-site-not-blocked-by-Safe-Browsing.-Is-this-a-security-vulnerability-"></a> ## I found a phishing or malware site not blocked by Safe Browsing. Is this a security vulnerability?
diff --git a/extensions/browser/api/networking_private/OWNERS b/extensions/browser/api/networking_private/OWNERS index b321c2f..5c8bfc3 100644 --- a/extensions/browser/api/networking_private/OWNERS +++ b/extensions/browser/api/networking_private/OWNERS
@@ -1,2 +1,3 @@ +khorimoto@chromium.org stevenjb@chromium.org tbarzic@chromium.org
diff --git a/google_apis/drive/drive_api_requests.cc b/google_apis/drive/drive_api_requests.cc index 7791f8a..fce8050a 100644 --- a/google_apis/drive/drive_api_requests.cc +++ b/google_apis/drive/drive_api_requests.cc
@@ -1031,38 +1031,38 @@ base::DictionaryValue root; switch (type_) { case PERMISSION_TYPE_ANYONE: - root.SetString("type", "anyone"); + root.SetStringKey("type", "anyone"); break; case PERMISSION_TYPE_DOMAIN: - root.SetString("type", "domain"); + root.SetStringKey("type", "domain"); break; case PERMISSION_TYPE_GROUP: - root.SetString("type", "group"); + root.SetStringKey("type", "group"); break; case PERMISSION_TYPE_USER: - root.SetString("type", "user"); + root.SetStringKey("type", "user"); break; } switch (role_) { case PERMISSION_ROLE_OWNER: - root.SetString("role", "owner"); + root.SetStringKey("role", "owner"); break; case PERMISSION_ROLE_READER: - root.SetString("role", "reader"); + root.SetStringKey("role", "reader"); break; case PERMISSION_ROLE_WRITER: - root.SetString("role", "writer"); + root.SetStringKey("role", "writer"); break; case PERMISSION_ROLE_COMMENTER: - root.SetString("role", "reader"); + root.SetStringKey("role", "reader"); { - auto list = std::make_unique<base::ListValue>(); - list->AppendString("commenter"); - root.Set("additionalRoles", std::move(list)); + base::Value list(base::Value::Type::LIST); + list.Append("commenter"); + root.SetKey("additionalRoles", std::move(list)); } break; } - root.SetString("value", value_); + root.SetStringKey("value", value_); base::JSONWriter::Write(root, upload_content); return true; } @@ -1076,7 +1076,7 @@ sender, base::BindRepeating( &SingleBatchableDelegateRequest::OnUploadProgress, - // Safe to not retain as the SimpleURLoader is owned by our base + // Safe to not retain as the SimpleURLLoader is owned by our base // class and cannot outlive this instance. base::Unretained(this)), ProgressCallback()),
diff --git a/gpu/command_buffer/client/readback_buffer_shadow_tracker.h b/gpu/command_buffer/client/readback_buffer_shadow_tracker.h index af58e512..88f53dd 100644 --- a/gpu/command_buffer/client/readback_buffer_shadow_tracker.h +++ b/gpu/command_buffer/client/readback_buffer_shadow_tracker.h
@@ -7,7 +7,6 @@ #include <GLES2/gl2.h> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/memory/weak_ptr.h" namespace gpu {
diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc index 7444d80..15af5dff 100644 --- a/gpu/config/gpu_info_collector.cc +++ b/gpu/config/gpu_info_collector.cc
@@ -239,11 +239,17 @@ bool useSoftwareGLForTests = command_line->HasSwitch(switches::kOverrideUseSoftwareGLForTests); - base::StringPiece software_gl_impl_name = - gl::GetGLImplementationGLName(gl::GetLegacySoftwareGLImplementation()); - if ((implementation == gl::GetLegacySoftwareGLImplementation()) || - (useSoftwareGLForTests && (gl::GetLegacySoftwareGLImplementation() == - gl::GetSoftwareGLForTestsImplementation()))) { + bool useSoftwareGLForHeadless = + command_line->HasSwitch(switches::kOverrideUseSoftwareGLForHeadless); + gl::GLImplementationParts legacyImpl = + gl::GetLegacySoftwareGLImplementation(); + gl::GLImplementationParts swangleImpl = gl::GetSoftwareGLImplementation(); + + if ((implementation == legacyImpl) || + (useSoftwareGLForTests && + (legacyImpl == gl::GetSoftwareGLForTestsImplementation())) || + (useSoftwareGLForHeadless && + (legacyImpl == gl::GetSoftwareGLForHeadlessImplementation()))) { // If using the software GL implementation, use fake vendor and // device ids to make sure it never gets blocklisted. It allows us // to proceed with loading the blocklist which may have non-device @@ -255,13 +261,15 @@ // Also declare the driver_vendor to be <software GL> to be able to // specify exceptions based on driver_vendor==<software GL> for some // blocklist rules. - gpu_info->gpu.driver_vendor = std::string(software_gl_impl_name); + gpu_info->gpu.driver_vendor = + std::string(gl::GetGLImplementationGLName(legacyImpl)); return true; - } else if ((implementation == gl::GetSoftwareGLImplementation()) || + } else if ((implementation == swangleImpl) || (useSoftwareGLForTests && - (gl::GetSoftwareGLImplementation() == - gl::GetSoftwareGLForTestsImplementation()))) { + (swangleImpl == gl::GetSoftwareGLForTestsImplementation())) || + (useSoftwareGLForHeadless && + (swangleImpl == gl::GetSoftwareGLForHeadlessImplementation()))) { // Similarly to the above, use fake vendor and device ids // to make sure they never gets blocklisted for SwANGLE as well. gpu_info->gpu.vendor_id = 0xffff;
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 00d274f1..de85bbf0 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -167,7 +167,7 @@ name: "chromium" cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" cipd_version: "refs/heads/master" - properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"metrics_project\":\"chromium-reclient-metrics\"}" + properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"jobs\":250,\"metrics_project\":\"chromium-reclient-metrics\"}" properties_j: "$kitchen:{\"devshell\":true,\"emulate_gce\":true,\"git_auth\":true}" properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}" properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}" @@ -14207,7 +14207,7 @@ name: "chromium" cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" cipd_version: "refs/heads/master" - properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"metrics_project\":\"chromium-reclient-metrics\",\"rewrapper_env\":{\"RBE_cache_silo\":\"Linux TSan Builder (reclient)\"}}" + properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"jobs\":250,\"metrics_project\":\"chromium-reclient-metrics\",\"rewrapper_env\":{\"RBE_cache_silo\":\"Linux TSan Builder (reclient)\"}}" properties_j: "$kitchen:{\"devshell\":true,\"emulate_gce\":true,\"git_auth\":true}" properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}" properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}" @@ -16978,7 +16978,7 @@ name: "chromium" cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" cipd_version: "refs/heads/master" - properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"metrics_project\":\"chromium-reclient-metrics\"}" + properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"jobs\":250,\"metrics_project\":\"chromium-reclient-metrics\"}" properties_j: "$kitchen:{\"devshell\":true,\"emulate_gce\":true,\"git_auth\":true}" properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}" properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}" @@ -17176,7 +17176,7 @@ name: "chromium" cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" cipd_version: "refs/heads/master" - properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"metrics_project\":\"chromium-reclient-metrics\"}" + properties_j: "$build/reclient:{\"instance\":\"goma-rbe-chromium\",\"jobs\":250,\"metrics_project\":\"chromium-reclient-metrics\"}" properties_j: "$kitchen:{\"devshell\":true,\"emulate_gce\":true,\"git_auth\":true}" properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}" properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}"
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star index 320c55b9..01ba5a66 100644 --- a/infra/config/subprojects/chromium/ci.star +++ b/infra/config/subprojects/chromium/ci.star
@@ -3781,6 +3781,7 @@ max_concurrent_invocations = 1, ), goma_backend = None, + reclient_jobs = 250, reclient_instance = "goma-rbe-chromium", reclient_rewrapper_env = {"RBE_cache_silo": "Linux TSan Builder (reclient)"}, configure_kitchen = True, @@ -3912,6 +3913,7 @@ max_concurrent_invocations = 1, ), goma_backend = None, + reclient_jobs = 250, reclient_instance = "goma-rbe-chromium", configure_kitchen = True, kitchen_emulate_gce = True, @@ -3928,6 +3930,7 @@ max_concurrent_invocations = 1, ), goma_backend = None, + reclient_jobs = 250, reclient_instance = "goma-rbe-chromium", configure_kitchen = True, kitchen_emulate_gce = True, @@ -3943,6 +3946,7 @@ cq_mirrors_console_view = "mirrors", main_console_view = main_console_if_on_branch(), goma_backend = None, + reclient_jobs = 250, reclient_instance = "goma-rbe-chromium", configure_kitchen = True, kitchen_emulate_gce = True,
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index c918fb9..0042d3a 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -285,6 +285,10 @@ // Hander for the startup tasks, deferred or not. StartupTasks* _startupTasks; + + // List of closure to run as part of shutdown. The closure will be called + // in reverse order of registration. + std::vector<base::OnceClosure> _cleanupClosures; } // Handles collecting metrics on user triggered screenshots @@ -346,6 +350,8 @@ // Initializes the browser objects for the browser UI (e.g., the browser // state). - (void)startUpBrowserForegroundInitialization; +// Register a closure to be called as part of app cleanup. +- (void)registerCleanupClosure:(base::OnceClosure)closure; @end @implementation MainController @@ -565,6 +571,10 @@ self.appState.postCrashLaunch]; } +- (void)registerCleanupClosure:(base::OnceClosure)closure { + _cleanupClosures.push_back(std::move(closure)); +} + - (void)initializeBrowserState:(ChromeBrowserState*)browserState { DCHECK(!browserState->IsOffTheRecord()); search_engines::UpdateSearchEnginesIfNeeded( @@ -708,9 +718,20 @@ _extensionSearchEngineDataUpdater = nullptr; - ios::GetChromeBrowserProvider() - ->GetMailtoHandlerProvider() - ->RemoveMailtoHandling(); + if (!_cleanupClosures.empty()) { + std::vector<base::OnceClosure> cleanupClosures; + cleanupClosures.swap(_cleanupClosures); + + while (!cleanupClosures.empty()) { + base::OnceClosure closure = std::move(cleanupClosures.back()); + cleanupClosures.pop_back(); + std::move(closure).Run(); + } + + DCHECK(_cleanupClosures.empty()) + << "-registerCleanupClosure must not be called during shutdown"; + } + // _localStatePrefChangeRegistrar is observing the PrefService, which is owned // indirectly by _chromeMain (through the ChromeBrowserState). // Unregister the observer before the service is destroyed. @@ -912,6 +933,12 @@ ->GetMailtoHandlerProvider() ->PrepareMailtoHandling( strongSelf.appState.mainBrowserState); + + [strongSelf registerCleanupClosure:base::BindOnce([] { + ios::GetChromeBrowserProvider() + ->GetMailtoHandlerProvider() + ->RemoveMailtoHandling(); + })]; }]; }
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 45f13b9..2fbaea8 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2452,6 +2452,17 @@ <message name="IDS_IOS_TAB_GRID_ADD_TO_BUTTON" desc="Title of the button in the tab grid UI that when tapped, will provide the user with a menu to add selected tabs to bookmarks or to the reading list. [iOS only]"> Add To... </message> + <message name="IDS_IOS_TAB_GRID_SELECT_ALL_BUTTON" desc="Title of the button in the tab grid UI selection mode, when tapped it will mark all tabs selected."> + Select All + </message> + <message name="IDS_IOS_TAB_GRID_SELECT_TABS_TITLE" desc="Title shown in the tab grid selection mode when no tab is selected. [iOS only]"> + Select Tabs + </message> + <message name="IDS_IOS_TAB_GRID_SELECTED_TABS_TITLE" desc="Title shown in the tab grid selection mode to indicate the number of selected tabs. count refers to the number of tabs selected. According to its value, the string goes from singular to plural. [iOS only]"> + {count, plural, + =1 {{count} Tab} + other {{count} Tabs}} + </message> <message name="IDS_IOS_TAB_GRID_INCOGNITO_TABS_TITLE" desc="The accessibility label of the Incognito Tabs page in the tab grid UI. [iOS only]"> Incognito Tabs </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECTED_TABS_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECTED_TABS_TITLE.png.sha1 new file mode 100644 index 0000000..564ffe09 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECTED_TABS_TITLE.png.sha1
@@ -0,0 +1 @@ +cfc04a6ccdecacb1976603643aafbd4fe9c8d1e9 \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_ALL_BUTTON.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_ALL_BUTTON.png.sha1 new file mode 100644 index 0000000..85d69f86 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_ALL_BUTTON.png.sha1
@@ -0,0 +1 @@ +9682657bda4ea813b9b1f3d0533136509234acdb \ No newline at end of file
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_TABS_TITLE.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_TABS_TITLE.png.sha1 new file mode 100644 index 0000000..85d69f86 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_TAB_GRID_SELECT_TABS_TITLE.png.sha1
@@ -0,0 +1 @@ +9682657bda4ea813b9b1f3d0533136509234acdb \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index 2b6223c..299fc181 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">جارٍ ترجمة...</translation> <translation id="5797070761912323120">قد تستخدم Google سجلّك لتخصيص البحث والإعلانات وخدمات Google الأخرى.</translation> <translation id="5803566855766646066">هل تريد فعلاً تجاهل هذه البطاقة الجديدة؟</translation> +<translation id="5812974770859303494">إضافة إلى...</translation> <translation id="5816228676161003208">هذا يتيح لك البحث بشكلٍ أسرع باستخدام صوتك.</translation> <translation id="581659025233126501">تفعيل المزامنة</translation> <translation id="5819208479324046259">تتم إدارة المتصفِّح من خلال <ph name="MANAGER" />. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">إلغاء</translation> <translation id="8668210798914567634">تم حفظ هذه الصفحة في قائمة القراءة.</translation> <translation id="8680787084697685621">تفاصيل تسجيل الدخول إلى الحساب قديمة.</translation> +<translation id="8693663554456874301">{count,plural, =1{إغلاق علامة التبويب}zero{إغلاق علامات التبويب}two{إغلاق علامتَي التبويب}few{إغلاق علامات التبويب}many{إغلاق علامات التبويب}other{إغلاق علامات التبويب}}</translation> <translation id="8706588385081740091">كلمات المرور</translation> <translation id="8717864919010420084">نسخ الرابط</translation> <translation id="8721297211384281569">قائمة الأدوات</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index 739539e..f85e209c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">অনুবাদ কাৰ্য্য চলি আছে...</translation> <translation id="5797070761912323120">Googleএ Search, বিজ্ঞাপন আৰু অন্য Google সেৱা ব্যক্তিকৃত কৰিবলৈ আপোনাৰ ব্ৰাউজিঙৰ ইতিহাস ব্যৱহাৰ কৰিব পাৰে</translation> <translation id="5803566855766646066">আপুনি এই নতুন কাৰ্ডখন প্ৰত্যাখ্যান কৰিব বিচাৰে বুলি নিশ্চিতনে?</translation> +<translation id="5812974770859303494">ইয়াত যোগ দিয়ক...</translation> <translation id="5816228676161003208">এই সুবিধাই আপোনাক নিজৰ কণ্ঠস্বৰ ব্যৱহাৰ কৰি ক্ষিপ্ৰভাৱে সন্ধান কৰিবলৈ দিয়ে।</translation> <translation id="581659025233126501">ছিংক অন কৰক</translation> <translation id="5819208479324046259"><ph name="MANAGER" />এ পৰিচালনা কৰে। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation> @@ -763,6 +764,7 @@ <translation id="8654802032646794042">বাতিল কৰক</translation> <translation id="8668210798914567634">আপোনাৰ পঢ়াসূচীত এই পৃষ্ঠাটো ছেভ কৰা হৈছে।</translation> <translation id="8680787084697685621">একাউণ্টৰ ছাইন ইনৰ সবিশেষৰ ম্যাদ উকলিল।</translation> +<translation id="8693663554456874301">{count,plural, =1{টেব বন্ধ কৰক}one{টেববোৰ বন্ধ কৰক}other{টেববোৰ বন্ধ কৰক}}</translation> <translation id="8706588385081740091">পাছৱৰ্ডসমূহ</translation> <translation id="8717864919010420084">লিংকটো প্ৰতিলিপি কৰক</translation> <translation id="8721297211384281569">সঁজুলিৰ মেনু</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index bb1b05c..4527a42 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Wird übersetzt...</translation> <translation id="5797070761912323120">Anhand Ihres Verlaufs kann Google die Google Suche, Werbung und andere Google-Dienste personalisieren</translation> <translation id="5803566855766646066">Möchten Sie diese neue Karte wirklich verwerfen?</translation> +<translation id="5812974770859303494">Hinzufügen zu…</translation> <translation id="5816228676161003208">Per Spracheingabe können Sie noch schneller suchen.</translation> <translation id="581659025233126501">Synchronisierung aktivieren</translation> <translation id="5819208479324046259">Verwaltet von <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation> @@ -522,6 +523,7 @@ <translation id="634878792104344809">Passwörter, Verlauf und mehr auf allen Geräten synchronisieren</translation> <translation id="6362362396625799311">Keine Inkognito-Tabs</translation> <translation id="6363526231572697780">Kein Nutzername</translation> +<translation id="6366663624406569102">Abmelden und die Synchronisierung ausschalten</translation> <translation id="6374469231428023295">Erneut versuchen</translation> <translation id="6377118281273296434">Websitesicherheit</translation> <translation id="6380866119319257197">Wenn Sie Ihre Passphrase vergessen oder diese Einstellung ändern möchten, <ph name="BEGIN_LINK" />setzen Sie die Synchronisierung zurück<ph name="END_LINK" /></translation> @@ -765,6 +767,7 @@ <translation id="8654802032646794042">Abbrechen</translation> <translation id="8668210798914567634">Diese Seite wurde in Ihrer Leseliste gespeichert.</translation> <translation id="8680787084697685621">Die Anmeldeinformationen für dieses Konto sind veraltet.</translation> +<translation id="8693663554456874301">{count,plural, =1{Tab schließen}other{Tabs schließen}}</translation> <translation id="8706588385081740091">Passwörter</translation> <translation id="8717864919010420084">Link kopieren</translation> <translation id="8721297211384281569">Menü "Tools"</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 d573df7..a2201d7b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Traduciendo...</translation> <translation id="5797070761912323120">Es posible que Google use tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation> <translation id="5803566855766646066">¿Confirmas que quieres descartar esta tarjeta nueva?</translation> +<translation id="5812974770859303494">Agregar a…</translation> <translation id="5816228676161003208">Te permite realizar búsquedas más rápidas con tu voz.</translation> <translation id="581659025233126501">Activar la sincronización</translation> <translation id="5819208479324046259">Administrado por <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Cancelar</translation> <translation id="8668210798914567634">Esta página se guardó en tu lista de lectura.</translation> <translation id="8680787084697685621">Los datos de inicio de cuenta están desactualizados</translation> +<translation id="8693663554456874301">{count,plural, =1{Cerrar pestaña}other{Cerrar pestañas}}</translation> <translation id="8706588385081740091">Contraseñas</translation> <translation id="8717864919010420084">Copiar vínculo</translation> <translation id="8721297211384281569">Menú "Herramientas"</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index 372298266..7dcb17e8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Traduciendo...</translation> <translation id="5797070761912323120">Es posible que Google utilice tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation> <translation id="5803566855766646066">¿Seguro que quieres descartar esta nueva tarjeta?</translation> +<translation id="5812974770859303494">Añadir a...</translation> <translation id="5816228676161003208">Esto te permite hacer búsquedas más rápido con tu voz.</translation> <translation id="581659025233126501">Activar sincronización</translation> <translation id="5819208479324046259">Gestionado por <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Cancelar</translation> <translation id="8668210798914567634">Esta página se ha guardado en tu lista de lectura.</translation> <translation id="8680787084697685621">La información de inicio de sesión no está actualizada.</translation> +<translation id="8693663554456874301">{count,plural, =1{Cerrar pestaña}other{Cerrar pestañas}}</translation> <translation id="8706588385081740091">Contraseñas</translation> <translation id="8717864919010420084">Copiar enlace</translation> <translation id="8721297211384281569">Menú de herramientas</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index 75c0905d..bdb8c5f4f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Traduction en cours...</translation> <translation id="5797070761912323120">Google peut utiliser votre historique pour personnaliser la recherche, les annonces et d'autres services Google</translation> <translation id="5803566855766646066">Voulez-vous vraiment supprimer cette nouvelle carte ?</translation> +<translation id="5812974770859303494">Ajouter à…</translation> <translation id="5816228676161003208">Cela vous permet d'effectuer des recherches plus rapidement en utilisant la recherche vocale.</translation> <translation id="581659025233126501">Activer la synchronisation</translation> <translation id="5819208479324046259">Géré par <ph name="MANAGER" />. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> @@ -767,6 +768,7 @@ <translation id="8654802032646794042">Annuler</translation> <translation id="8668210798914567634">Cette page a été enregistrée dans votre liste de lecture.</translation> <translation id="8680787084697685621">Les informations de connexion au compte sont obsolètes.</translation> +<translation id="8693663554456874301">{count,plural, =1{Fermer l'onglet}one{Fermer l'onglet}other{Fermer les onglets}}</translation> <translation id="8706588385081740091">Mots de passe</translation> <translation id="8717864919010420084">Copier le lien</translation> <translation id="8721297211384281569">Menu "Outils"</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index b4b828c8..88cadbd6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Menerjemahkan...</translation> <translation id="5797070761912323120">Google dapat menggunakan histori Anda untuk mempersonalisasi Penelusuran, iklan, dan layanan Google lainnya</translation> <translation id="5803566855766646066">Yakin ingin menghapus kartu baru ini?</translation> +<translation id="5812974770859303494">Tambahkan ke ...</translation> <translation id="5816228676161003208">Hal ini memungkinkan Anda menelusuri lebih cepat menggunakan suara.</translation> <translation id="581659025233126501">Aktifkan Sinkronisasi</translation> <translation id="5819208479324046259">Dikelola oleh <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Batal</translation> <translation id="8668210798914567634">Halaman ini telah disimpan di Daftar Bacaan.</translation> <translation id="8680787084697685621">Detail proses masuk akun sudah usang.</translation> +<translation id="8693663554456874301">{count,plural, =1{Tutup Tab}other{Tutup Tab}}</translation> <translation id="8706588385081740091">Sandi</translation> <translation id="8717864919010420084">Salin Link</translation> <translation id="8721297211384281569">Menu Alat</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index 27a3bf2c..33f3bbde 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Traduzione in corso...</translation> <translation id="5797070761912323120">Google può utilizzare la tua cronologia per personalizzare la Ricerca, gli annunci e altri servizi Google</translation> <translation id="5803566855766646066">Vuoi eliminare questa nuova carta?</translation> +<translation id="5812974770859303494">Aggiungi a…</translation> <translation id="5816228676161003208">In questo modo puoi eseguire ricerche più veloci con la voce.</translation> <translation id="581659025233126501">Attiva la sincronizzazione</translation> <translation id="5819208479324046259">Gestito da <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Annulla</translation> <translation id="8668210798914567634">Questa pagina è stata salvata nel tuo Elenco di lettura.</translation> <translation id="8680787084697685621">I dati di accesso dell'account sono obsoleti.</translation> +<translation id="8693663554456874301">{count,plural, =1{Chiudi scheda}other{Chiudi schede}}</translation> <translation id="8706588385081740091">Password</translation> <translation id="8717864919010420084">Copia link</translation> <translation id="8721297211384281569">Menu Strumenti</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb index b78575e..7fb8c64c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">翻訳しています...</translation> <translation id="5797070761912323120">検索、広告、その他の Google サービスをカスタマイズするために、Google で履歴が使用されることがあります</translation> <translation id="5803566855766646066">この新しいカードを破棄してもよろしいですか?</translation> +<translation id="5812974770859303494">追加先…</translation> <translation id="5816228676161003208">音声を使ってより速く検索できます。</translation> <translation id="581659025233126501">同期をオンにする</translation> <translation id="5819208479324046259"><ph name="MANAGER" /> によって管理されています。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">キャンセル</translation> <translation id="8668210798914567634">このページはリーディング リストに保存されています。</translation> <translation id="8680787084697685621">アカウントのログイン情報が古くなっています。</translation> +<translation id="8693663554456874301">{count,plural, =1{タブを閉じる}other{タブを閉じる}}</translation> <translation id="8706588385081740091">パスワード</translation> <translation id="8717864919010420084">リンクをコピー</translation> <translation id="8721297211384281569">ツールメニュー</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 9a8c385..b2cc351c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -523,6 +523,7 @@ <translation id="634878792104344809">നിങ്ങളുടെ പാസ്വേഡുകളും ചരിത്രവും മറ്റും എല്ലാ ഉപകരണങ്ങളിലും സമന്വയിപ്പിക്കുക</translation> <translation id="6362362396625799311">ആൾമാറാട്ട ടാബുകളൊന്നുമില്ല</translation> <translation id="6363526231572697780">ഉപയോക്തൃനാമമില്ല</translation> +<translation id="6366663624406569102">സൈൻ ഔട്ട് ചെയ്ത് സമന്വയം ഓഫാക്കുക</translation> <translation id="6374469231428023295">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="6377118281273296434">സൈറ്റ് സുരക്ഷ</translation> <translation id="6380866119319257197">നിങ്ങൾ പാസ്ഫ്രെയ്സ് മറന്നുപോയെങ്കിലോ ഈ ക്രമീകരണം മാറ്റണമെങ്കിലോ, <ph name="BEGIN_LINK" />സമന്വയം റീസെറ്റ് ചെയ്യുക<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index 38afc830..d23fb87 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -525,6 +525,7 @@ <translation id="634878792104344809">तुमच्या सर्व डिव्हाइसवर तुमचे पासवर्ड, इतिहास आणि बरेच काही सिंक करा</translation> <translation id="6362362396625799311">कोणतेही गुप्त टॅब नाहीत</translation> <translation id="6363526231572697780">वापरकर्ता नाव नाही</translation> +<translation id="6366663624406569102">साइन आउट करा आणि सिंक बंद करा</translation> <translation id="6374469231428023295">पुन्हा प्रयत्न करा</translation> <translation id="6377118281273296434">साइट सुरक्षितता</translation> <translation id="6380866119319257197">तुमचा सांकेतिक पासफ्रेझ विसरल्यास किंवा हे सेटिंग बदलू इच्छित असल्यास, <ph name="BEGIN_LINK" />सिंक रीसेट करा<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index 3e8ad29..0c0b2f6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -454,6 +454,7 @@ <translation id="5782227691023083829">ଅନୁବାଦ ହେଉଛି...</translation> <translation id="5797070761912323120">ଆପଣ କରୁଥିବା ସର୍ଚ୍ଚ, ଦେଖୁଥିବା ବିଜ୍ଞାପନ, ଏବଂ ଅନ୍ୟାନ୍ୟ Google ସେବାକୁ ବ୍ୟକ୍ତିଗତକରଣ କରିବା ପାଇଁ Google ଆପଣଙ୍କର ଇତିବୃତ୍ତିକୁ ବ୍ୟବହାର କରିପାରେ</translation> <translation id="5803566855766646066">ଆପଣ ଏହି ନୂଆ କାର୍ଡକୁ ଖାରଜ କରିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ କି?</translation> +<translation id="5812974770859303494">ଏଥିରେ ଯୋଗ କରନ୍ତୁ...</translation> <translation id="5816228676161003208">ଏହା ଆପଣଙ୍କର ଭଏସ୍କୁ ବ୍ୟବହାର କରି ଆପଣଙ୍କୁ ଦ୍ରୁତ ସନ୍ଧାନ କରିବାକୁ ଦେଇଥାଏ।</translation> <translation id="581659025233126501">ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="5819208479324046259"><ph name="MANAGER" /> ଦ୍ୱାରା ପରିଚାଳିତ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation> @@ -520,6 +521,7 @@ <translation id="634878792104344809">ଆପଣଙ୍କର ସମସ୍ତ ଡିଭାଇସରେ ଆପଣଙ୍କ ପାସୱାର୍ଡ, ଇତିହାସ ଏବଂ ଆହୁରି ଅନେକ କିଛିକୁ ସିଙ୍କ୍ କରନ୍ତୁ</translation> <translation id="6362362396625799311">କୌଣସି ଇନ୍କଗ୍ନିଟୋ ଟାବ୍ ନାହିଁ</translation> <translation id="6363526231572697780">କୌଣସି ଉପଯୋଗକର୍ତ୍ତା ନାହାଁନ୍ତି</translation> +<translation id="6366663624406569102">ସାଇନ୍ ଆଉଟ୍ କରି ସିଙ୍କ୍ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="6374469231428023295">ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="6377118281273296434">ସାଇଟ୍ ସୁରକ୍ଷା</translation> <translation id="6380866119319257197">ଯଦି ଆପଣ ନିଜର ପାସ୍ଫ୍ରେଜ୍ ଭୁଲିଯାଇଛନ୍ତି କିମ୍ବା ଏହି ସେଟିଂ ବଦଳାବାକୁ ଚାହୁଁଛନ୍ତି, ତେବେ <ph name="BEGIN_LINK" />ସିଙ୍କ୍ ରିସେଟ୍ କରନ୍ତୁ<ph name="END_LINK" />।</translation> @@ -763,6 +765,7 @@ <translation id="8654802032646794042">ବାତିଲ୍ କରନ୍ତୁ</translation> <translation id="8668210798914567634">ଏହି ପୃଷ୍ଠାକୁ ଆପଣଙ୍କ ପଠିତ ତାଲିକାରେ ସେଭ୍ କରାଯାଇଛି।</translation> <translation id="8680787084697685621">ଆକାଉଣ୍ଟ ସାଇନ୍-ଇନ୍ ବିବରଣୀ ପୁରୁଣା ଅଟେ।</translation> +<translation id="8693663554456874301">{count,plural, =1{ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}other{ଟାବଗୁଡ଼ିକୁ ବନ୍ଦ କରନ୍ତୁ}}</translation> <translation id="8706588385081740091">ପାସୱାର୍ଡଗୁଡ଼ିକ</translation> <translation id="8717864919010420084">ଲିଙ୍କ୍ କପି କରନ୍ତୁ</translation> <translation id="8721297211384281569">ଟୁଲ୍ ମେନୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index 8f18d41..81ef356 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -454,6 +454,7 @@ <translation id="5782227691023083829">ਅਨੁਵਾਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation> <translation id="5797070761912323120">Google ਖੋਜ, ਵਿਗਿਆਪਨਾਂ ਅਤੇ ਹੋਰਾਂ Google ਸੇਵਾਵਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ</translation> <translation id="5803566855766646066">ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇਸ ਨਵੇਂ ਕਾਰਡ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> +<translation id="5812974770859303494">ਇਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ…</translation> <translation id="5816228676161003208">ਇਹ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਅਵਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਧੇਰੇ ਤੇਜ਼ੀ ਨਾਲ ਖੋਜ ਕਰਨ ਦਿੰਦਾ ਹੈ।</translation> <translation id="581659025233126501">ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੋ</translation> <translation id="5819208479324046259"><ph name="MANAGER" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /></translation> @@ -520,6 +521,7 @@ <translation id="634878792104344809">ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੇ ਪਾਸਵਰਡ, ਇਤਿਹਾਸ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਦਾ ਸਮਕਾਲੀਕਰਨ ਕਰੋ</translation> <translation id="6362362396625799311">ਕੋਈ ਇਨਕੋਗਨਿਟੋ ਟੈਬਾਂ ਨਹੀਂ</translation> <translation id="6363526231572697780">ਕੋਈ ਵਰਤੋਂਕਾਰ ਨਾਮ ਨਹੀਂ</translation> +<translation id="6366663624406569102">ਸਾਈਨ-ਆਊਟ ਕਰਕੇ ਸਮਕਾਲੀਕਰਨ ਨੂੰ ਬੰਦ ਕਰੋ</translation> <translation id="6374469231428023295">ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation> <translation id="6377118281273296434">ਸਾਈਟ ਸੁਰੱਖਿਆ</translation> <translation id="6380866119319257197">ਜੇਕਰ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਭੁੱਲ ਜਾਂਦੇ ਹੋ ਜਾਂ ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ <ph name="BEGIN_LINK" />ਸਮਕਾਲੀਕਰਨ ਰੀਸੈੱਟ ਕਰੋ<ph name="END_LINK" /></translation> @@ -763,6 +765,7 @@ <translation id="8654802032646794042">ਰੱਦ ਕਰੋ</translation> <translation id="8668210798914567634">ਇਹ ਪੰਨਾ ਤੁਹਾਡੀ ਪੜ੍ਹਨ ਸੂਚੀ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ ਹੈ।</translation> <translation id="8680787084697685621">ਖਾਤਾ ਸਾਈਨ-ਇਨ ਵੇਰਵੇ ਪੁਰਾਣੇ ਹਨ।</translation> +<translation id="8693663554456874301">{count,plural, =1{ਟੈਬ ਬੰਦ ਕਰੋ}one{ਟੈਬ ਬੰਦ ਕਰੋ}other{ਟੈਬਾਂ ਬੰਦ ਕਰੋ}}</translation> <translation id="8706588385081740091">ਪਾਸਵਰਡ</translation> <translation id="8717864919010420084">ਲਿੰਕ ਕਾਪੀ ਕਰੋ</translation> <translation id="8721297211384281569">ਟੂਲ ਮੀਨੂ</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 71e971b..9c1c0608 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Traduzindo...</translation> <translation id="5797070761912323120">O histórico será usado para personalizar a Pesquisa, anúncios e outros serviços Google.</translation> <translation id="5803566855766646066">Tem certeza de que você quer descartar este novo card?</translation> +<translation id="5812974770859303494">Adicionar a…</translation> <translation id="5816228676161003208">Isso permite que você pesquise mais rapidamente usando sua voz.</translation> <translation id="581659025233126501">Ativar a sincronização</translation> <translation id="5819208479324046259">Gerenciado por <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Cancelar</translation> <translation id="8668210798914567634">Esta página foi salva na sua lista de leitura.</translation> <translation id="8680787084697685621">Os detalhes de login da conta estão desatualizados.</translation> +<translation id="8693663554456874301">{count,plural, =1{Fechar guia}one{Fechar guia}other{Fechar guias}}</translation> <translation id="8706588385081740091">Senhas</translation> <translation id="8717864919010420084">Copiar link</translation> <translation id="8721297211384281569">Menu Ferramentas</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index 5a86b6d..d97c89a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Перевод...</translation> <translation id="5797070761912323120">Google может использовать вашу историю, чтобы персонализировать рекламу, а также Поиск и другие сервисы.</translation> <translation id="5803566855766646066">Удалить новую карту?</translation> +<translation id="5812974770859303494">Добавить…</translation> <translation id="5816228676161003208">Это нужно, чтобы использовать голосовой поиск</translation> <translation id="581659025233126501">Включить синхронизацию</translation> <translation id="5819208479324046259">Устройством управляет <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Отмена</translation> <translation id="8668210798914567634">Страница сохранена в список для чтения.</translation> <translation id="8680787084697685621">Данные для входа в аккаунт устарели.</translation> +<translation id="8693663554456874301">{count,plural, =1{Закрыть вкладку}one{Закрыть вкладки}few{Закрыть вкладки}many{Закрыть вкладки}other{Закрыть вкладки}}</translation> <translation id="8706588385081740091">Пароли</translation> <translation id="8717864919010420084">Копировать ссылку</translation> <translation id="8721297211384281569">Меню "Инструменты"</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index 4d4ae60..ca7c4e3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">மொழிபெயர்க்கிறது...</translation> <translation id="5797070761912323120">தேடல், விளம்பரங்கள் மற்றும் பிற Google சேவைகளைத் தனிப்பயனாக்க, உங்கள் வரலாற்றை Google பயன்படுத்தக்கூடும்</translation> <translation id="5803566855766646066">இந்தப் புதிய கார்டை நிராகரிக்க வேண்டுமா?</translation> +<translation id="5812974770859303494">இதில் சேர்...</translation> <translation id="5816228676161003208">இதன் மூலம் உங்கள் குரலைப் பயன்படுத்தி வேகமாகத் தேடலாம்.</translation> <translation id="581659025233126501">ஒத்திசைவை இயக்கு</translation> <translation id="5819208479324046259"><ph name="MANAGER" /> நிர்வகிக்கிறது. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation> @@ -522,6 +523,7 @@ <translation id="634878792104344809">கடவுச்சொற்கள், உலாவியில் இதுவரை பார்த்தவை போன்ற பல தகவல்களை அனைத்துச் சாதனங்களிலும் ஒத்திசைக்கலாம்</translation> <translation id="6362362396625799311">மறைநிலைத் தாவல்கள் இல்லை</translation> <translation id="6363526231572697780">பயனர்பெயர் இல்லை</translation> +<translation id="6366663624406569102">வெளியேறி, ஒத்திசைவை முடக்கு</translation> <translation id="6374469231428023295">மீண்டும் முயலவும்</translation> <translation id="6377118281273296434">தளத்தின் பாதுகாப்பு</translation> <translation id="6380866119319257197">கடவுச்சொற்றொடரை மறந்துவிட்டால் அல்லது இந்த அமைப்பை மாற்ற விரும்பினால், <ph name="BEGIN_LINK" />ஒத்திசைவை மீட்டமைக்கவும்<ph name="END_LINK" /></translation> @@ -765,6 +767,7 @@ <translation id="8654802032646794042">ரத்துசெய்</translation> <translation id="8668210798914567634">இந்தப் பக்கம் உங்கள் வாசிப்புப் பட்டியலில் சேமிக்கப்பட்டது.</translation> <translation id="8680787084697685621">கணக்கு உள்நுழைவு விவரங்கள் காலாவதியாகிவிட்டன.</translation> +<translation id="8693663554456874301">{count,plural, =1{தாவலை மூடுக}other{தாவல்களை மூடுக}}</translation> <translation id="8706588385081740091">கடவுச்சொற்கள்</translation> <translation id="8717864919010420084">இணைப்பை நகலெடு</translation> <translation id="8721297211384281569">கருவிகள் மெனு</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index cd92dce..4bac968 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -523,6 +523,7 @@ <translation id="634878792104344809">మీ పాస్వర్డ్లను, హిస్టరీని, అలాగే మరిన్నింటిని మీ అన్ని పరికరాలలోనూ సింక్ చేయండి</translation> <translation id="6362362396625799311">అజ్ఞాత ట్యాబ్లు ఏవీ తెరిచి లేవు</translation> <translation id="6363526231572697780">వినియోగదారు పేరు లేదు</translation> +<translation id="6366663624406569102">సైన్ అవుట్ చేసి, సింక్ను ఆఫ్ చేయండి</translation> <translation id="6374469231428023295">మళ్లీ ప్రయత్నించు</translation> <translation id="6377118281273296434">సైట్ భద్రత</translation> <translation id="6380866119319257197">మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే లేదా ఈ సెట్టింగ్ను మార్చాలనుకుంటే, <ph name="BEGIN_LINK" />సింక్ను రీసెట్ చేయండి<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index 05c7b90..271bfbe 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Çevriliyor...</translation> <translation id="5797070761912323120">Google; Arama, reklamlar ve diğer Google hizmetlerini kişiselleştirmek için geçmişinizi kullanabilir</translation> <translation id="5803566855766646066">Bu yeni kartı silmek istediğinizden emin misiniz?</translation> +<translation id="5812974770859303494">Ekle…</translation> <translation id="5816228676161003208">Böylece, sesinizi kullanarak daha hızlı arama yapabilirsiniz.</translation> <translation id="581659025233126501">Senkronizasyonu Aç</translation> <translation id="5819208479324046259"><ph name="MANAGER" /> tarafından yönetiliyor. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">İptal</translation> <translation id="8668210798914567634">Bu sayfa Okuma Listenize kaydedildi.</translation> <translation id="8680787084697685621">Hesap oturum açma ayrıntıları eski.</translation> +<translation id="8693663554456874301">{count,plural, =1{Sekmeyi Kapat}other{Sekmeleri Kapat}}</translation> <translation id="8706588385081740091">Şifreler</translation> <translation id="8717864919010420084">Bağlantıyı Kopyala</translation> <translation id="8721297211384281569">Araçlar Menüsü</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb index a591eea..39ca04f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">Виконується переклад сторінки...</translation> <translation id="5797070761912323120">Google може використовувати вашу історію, щоб персоналізувати Пошук, оголошення й інші сервіси Google</translation> <translation id="5803566855766646066">Відхилити цю нову картку?</translation> +<translation id="5812974770859303494">Додати в…</translation> <translation id="5816228676161003208">Ви зможете швидше шукати голосом.</translation> <translation id="581659025233126501">Увімкнути синхронізацію</translation> <translation id="5819208479324046259">Веб-переглядачем керує <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">Скасувати</translation> <translation id="8668210798914567634">Цю сторінку збережено в списку читання.</translation> <translation id="8680787084697685621">Дані для входу в обліковий запис застаріли.</translation> +<translation id="8693663554456874301">{count,plural, =1{Закрити вкладку}one{Закрити вкладки}few{Закрити вкладки}many{Закрити вкладки}other{Закрити вкладки}}</translation> <translation id="8706588385081740091">Паролі</translation> <translation id="8717864919010420084">Скопіювати посилання</translation> <translation id="8721297211384281569">Меню інструментів</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 5c3ce346..cbbb457 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">正在翻译...</translation> <translation id="5797070761912323120">Google 可能会利用您的历史记录为您提供个性化的 Google 搜索、广告和其他 Google 服务</translation> <translation id="5803566855766646066">确定要舍弃这张新信用卡吗?</translation> +<translation id="5812974770859303494">添加到…</translation> <translation id="5816228676161003208">这样,您就可以使用语音更快速地进行搜索。</translation> <translation id="581659025233126501">开启同步功能</translation> <translation id="5819208479324046259">由 <ph name="MANAGER" /> 管理。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">取消</translation> <translation id="8668210798914567634">此页面已保存到您的阅读列表。</translation> <translation id="8680787084697685621">帐号登录详细信息已过期。</translation> +<translation id="8693663554456874301">{count,plural, =1{关闭这个标签页}other{关闭这些标签页}}</translation> <translation id="8706588385081740091">密码</translation> <translation id="8717864919010420084">复制链接</translation> <translation id="8721297211384281569">工具菜单</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 cda389e..86859a01 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">正在翻譯...</translation> <translation id="5797070761912323120">Google 可能會使用您的記錄,為您提供個人化的搜尋服務、廣告和其他 Google 服務</translation> <translation id="5803566855766646066">確定要捨棄這張新的信用卡嗎?</translation> +<translation id="5812974770859303494">新增至…</translation> <translation id="5816228676161003208">這樣您便可使用語音更快速地搜尋內容。</translation> <translation id="581659025233126501">開啟同步處理功能</translation> <translation id="5819208479324046259">由 <ph name="MANAGER" /> 管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> @@ -764,6 +765,7 @@ <translation id="8654802032646794042">取消</translation> <translation id="8668210798914567634">此網頁已儲存至您的閱讀清單。</translation> <translation id="8680787084697685621">帳戶登入詳情已過期。</translation> +<translation id="8693663554456874301">{count,plural, =1{關閉單一分頁}other{關閉多個分頁}}</translation> <translation id="8706588385081740091">密碼</translation> <translation id="8717864919010420084">複製連結</translation> <translation id="8721297211384281569">工具選單</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 116fc99..2d5a6f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -456,6 +456,7 @@ <translation id="5782227691023083829">正在翻譯...</translation> <translation id="5797070761912323120">Google 可能會使用你的歷史記錄,為你提供個人化的搜尋服務、廣告內容和其他各項 Google 服務</translation> <translation id="5803566855766646066">確定要捨棄這張新的信用卡嗎?</translation> +<translation id="5812974770859303494">新增至...</translation> <translation id="5816228676161003208">可讓你使用語音搜尋功能,查詢資訊更方便。</translation> <translation id="581659025233126501">開啟同步功能</translation> <translation id="5819208479324046259">由「<ph name="MANAGER" />」管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> @@ -766,6 +767,7 @@ <translation id="8654802032646794042">取消</translation> <translation id="8668210798914567634">此網頁內容已儲存至你的閱讀清單。</translation> <translation id="8680787084697685621">帳戶登入詳細資料已過期。</translation> +<translation id="8693663554456874301">{count,plural, =1{關閉分頁}other{關閉多個分頁}}</translation> <translation id="8706588385081740091">密碼</translation> <translation id="8717864919010420084">複製連結</translation> <translation id="8721297211384281569">工具選單</translation>
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/BUILD.gn b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/BUILD.gn index 97721d3..05019059 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/BUILD.gn +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/BUILD.gn
@@ -36,7 +36,6 @@ configs += [ "//build/config/compiler:enable_arc" ] testonly = true sources = [ - "save_address_profile_infobar_banner_interaction_handler_unittest.mm", "save_address_profile_infobar_modal_interaction_handler_unittest.mm", "save_address_profile_infobar_modal_overlay_request_callback_installer_unittest.mm", ]
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h index de15485..b6b8fbf 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h
@@ -9,10 +9,6 @@ #import "ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/common/infobar_banner_interaction_handler.h" -namespace autofill { -class AutofillSaveUpdateAddressProfileDelegateIOS; -} - // Helper object that updates the model layer for interaction events with the // SaveAddressProfile infobar banner UI. class SaveAddressProfileInfobarBannerInteractionHandler @@ -22,17 +18,8 @@ ~SaveAddressProfileInfobarBannerInteractionHandler() override; // InfobarBannerInteractionHandler: - void BannerVisibilityChanged(InfoBarIOS* infobar, bool visible) override; - void ShowModalButtonTapped(InfoBarIOS* infobar, - web::WebState* web_state) override; - // The delegate's InfoBarDismissed() would be called in - // BannerVisibilityChanged(). + void BannerVisibilityChanged(InfoBarIOS* infobar, bool visible) override {} void BannerDismissedByUser(InfoBarIOS* infobar) override {} - - private: - // Returns the SaveAddressProfile delegate from |infobar|. - autofill::AutofillSaveUpdateAddressProfileDelegateIOS* GetInfobarDelegate( - InfoBarIOS* infobar); }; #endif // IOS_CHROME_BROWSER_INFOBARS_OVERLAYS_BROWSER_AGENT_INTERACTION_HANDLERS_AUTOFILL_ADDRESS_PROFILE_SAVE_ADDRESS_PROFILE_INFOBAR_BANNER_INTERACTION_HANDLER_H_
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.mm b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.mm index 2495eff..2c41a3a 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.mm
@@ -4,13 +4,8 @@ #import "ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h" -#include "base/check.h" -#include "components/autofill/core/browser/autofill_save_update_address_profile_delegate_ios.h" #include "ios/chrome/browser/infobars/infobar_ios.h" -#import "ios/chrome/browser/infobars/overlays/infobar_overlay_request_cancel_handler.h" -#import "ios/chrome/browser/infobars/overlays/infobar_overlay_request_inserter.h" #import "ios/chrome/browser/overlays/public/infobar_banner/save_address_profile_infobar_banner_overlay_request_config.h" -#include "ios/chrome/browser/overlays/public/overlay_request_queue.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -28,37 +23,3 @@ SaveAddressProfileInfobarBannerInteractionHandler:: ~SaveAddressProfileInfobarBannerInteractionHandler() = default; - -void SaveAddressProfileInfobarBannerInteractionHandler::BannerVisibilityChanged( - InfoBarIOS* infobar, - bool visible) { - if (!visible && !infobar->accepted()) { - GetInfobarDelegate(infobar)->InfoBarDismissed(); - if (!GetInfobarDelegate(infobar)->modal_was_shown()) { - // Remove the infobar to prevent showing the modal when the user has - // cancelled the banner. - infobar->RemoveSelf(); - } - } -} - -void SaveAddressProfileInfobarBannerInteractionHandler::ShowModalButtonTapped( - InfoBarIOS* infobar, - web::WebState* web_state) { - // Inform delegate that the modal is shown. - GetInfobarDelegate(infobar)->set_modal_was_shown_to_true(); - - InfobarBannerInteractionHandler::ShowModalButtonTapped(infobar, web_state); -} - -#pragma mark - Private - -autofill::AutofillSaveUpdateAddressProfileDelegateIOS* -SaveAddressProfileInfobarBannerInteractionHandler::GetInfobarDelegate( - InfoBarIOS* infobar) { - autofill::AutofillSaveUpdateAddressProfileDelegateIOS* delegate = - autofill::AutofillSaveUpdateAddressProfileDelegateIOS:: - FromInfobarDelegate(infobar->delegate()); - DCHECK(delegate); - return delegate; -}
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler_unittest.mm b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler_unittest.mm deleted file mode 100644 index f90a862..0000000 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler_unittest.mm +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_banner_interaction_handler.h" - -#include "base/guid.h" -#include "ios/chrome/browser/infobars/infobar_manager_impl.h" -#include "ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_update_address_profile_delegate_ios.h" -#import "ios/chrome/browser/infobars/overlays/infobar_overlay_request_inserter.h" -#import "ios/chrome/browser/infobars/test/fake_infobar_ios.h" -#include "ios/chrome/browser/infobars/test/mock_infobar_delegate.h" -#import "ios/chrome/browser/overlays/public/overlay_request_queue.h" -#include "testing/platform_test.h" - -#if !defined(__has_feature) || !__has_feature(objc_arc) -#error "This file requires ARC support." -#endif - -// Test fixture for SaveAddressProfileInfobarBannerInteractionHandler. -class SaveAddressProfileInfobarBannerInteractionHandlerTest - : public PlatformTest { - public: - SaveAddressProfileInfobarBannerInteractionHandlerTest() - : delegate_factory_(), - profile_(base::GenerateGUID(), "https://www.example.com/") { - infobar_ = std::make_unique<InfoBarIOS>( - InfobarType::kInfobarTypeSaveAutofillAddressProfile, - MockAutofillSaveUpdateAddressProfileDelegateIOSFactory:: - CreateMockAutofillSaveUpdateAddressProfileDelegateIOSFactory( - profile_)); - } - - MockAutofillSaveUpdateAddressProfileDelegateIOS& mock_delegate() { - return *static_cast<MockAutofillSaveUpdateAddressProfileDelegateIOS*>( - infobar_->delegate()); - } - - protected: - SaveAddressProfileInfobarBannerInteractionHandler handler_; - MockAutofillSaveUpdateAddressProfileDelegateIOSFactory delegate_factory_; - autofill::AutofillProfile profile_; - std::unique_ptr<InfoBarIOS> infobar_; -}; - -// Tests that BannerVisibilityChanged() InfobarDismissed() on the mock delegate. -TEST_F(SaveAddressProfileInfobarBannerInteractionHandlerTest, Presentation) { - EXPECT_CALL(mock_delegate(), InfoBarDismissed()); - handler_.BannerVisibilityChanged(infobar_.get(), false); -}
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_modal_interaction_handler.mm b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_modal_interaction_handler.mm index 42724646..e81b919 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_modal_interaction_handler.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/autofill_address_profile/save_address_profile_infobar_modal_interaction_handler.mm
@@ -26,9 +26,6 @@ void SaveAddressProfileInfobarModalInteractionHandler::PerformMainAction( InfoBarIOS* infobar) { infobar->set_accepted(GetInfoBarDelegate(infobar)->Accept()); - // Post save, the infobar should not be brought back from the omnibox - // icon. - infobar->RemoveSelf(); } void SaveAddressProfileInfobarModalInteractionHandler::SaveEditedProfile( @@ -41,9 +38,6 @@ GetInfoBarDelegate(infobar)->SetProfileInfo(type, data); } infobar->set_accepted(GetInfoBarDelegate(infobar)->EditAccepted()); - // On post-edit save, the infobar should not be brought back from the omnibox - // icon. - infobar->RemoveSelf(); } #pragma mark - Private
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/BUILD.gn b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/BUILD.gn index 4b3d3dd..43f95c79 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/BUILD.gn +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/BUILD.gn
@@ -28,6 +28,7 @@ "//components/autofill/core/browser", "//components/autofill/core/browser:test_support", "//components/prefs", + "//components/signin/public/identity_manager", "//ios/chrome/browser/infobars:public", "//ios/chrome/browser/infobars/overlays", "//ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers",
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.h b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.h index 64fafa3..fe020e2 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.h +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.h
@@ -30,7 +30,8 @@ upload_save_card_prompt_callback, autofill::AutofillClient::LocalSaveCardPromptCallback local_save_card_prompt_callback, - PrefService* pref_service); + PrefService* pref_service, + const AccountInfo& displayed_target_account); ~MockAutofillSaveCardInfoBarDelegateMobile() override; MOCK_METHOD3(UpdateAndAccept,
diff --git a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.mm b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.mm index e26d425..b7f7a329 100644 --- a/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.mm +++ b/ios/chrome/browser/infobars/overlays/browser_agent/interaction_handlers/test/mock_autofill_save_card_infobar_delegate_mobile.mm
@@ -11,6 +11,7 @@ #import "base/bind.h" #include "base/guid.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/signin/public/identity_manager/account_info.h" MockAutofillSaveCardInfoBarDelegateMobile:: MockAutofillSaveCardInfoBarDelegateMobile( @@ -22,7 +23,8 @@ upload_save_card_prompt_callback, autofill::AutofillClient::LocalSaveCardPromptCallback local_save_card_prompt_callback, - PrefService* pref_service) + PrefService* pref_service, + const AccountInfo& displayed_target_account) : AutofillSaveCardInfoBarDelegateMobile( upload, options, @@ -30,7 +32,8 @@ legal_message_lines, std::move(upload_save_card_prompt_callback), std::move(local_save_card_prompt_callback), - pref_service) {} + pref_service, + displayed_target_account) {} MockAutofillSaveCardInfoBarDelegateMobile:: ~MockAutofillSaveCardInfoBarDelegateMobile() = default; @@ -58,5 +61,5 @@ base::BindOnce( ^(autofill::AutofillClient::SaveCardOfferUserDecision user_decision){ }), - prefs); + prefs, AccountInfo()); }
diff --git a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.mm b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.mm index 7e8ea4d..f7ffb32 100644 --- a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.mm +++ b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.mm
@@ -39,7 +39,7 @@ const char kITunesProductIdPrefix[] = "id"; const char kITunesAppPathIdentifier[] = "app"; -const size_t kITunesUrlPathMinComponentsCount = 3; +const size_t kITunesUrlPathMinComponentsCount = 2; const size_t kITunesUrlRegionComponentDefaultIndex = 0; const size_t kITunesUrlMediaTypeComponentDefaultIndex = 1; @@ -95,7 +95,7 @@ if (!IsITunesProductUrl(url)) return false; // Valid iTunes URL structure: - // HOST/OPTIONAL_REGION_CODE/MEDIA_TYPE/MEDIA_NAME/ID?PARAMETERS + // HOST/OPTIONAL_REGION_CODE/MEDIA_TYPE/OPTIONAL_MEDIA_NAME/ID?PARAMETERS // Check the URL media type, to determine if it is supported. std::vector<std::string> path_components = base::SplitString( url.path(), "/", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
diff --git a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm index 96d8eb9..603204a1 100644 --- a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm +++ b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper_unittest.mm
@@ -136,6 +136,11 @@ /*main_frame=*/true)); EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); + EXPECT_TRUE(VerifyStoreKitLaunched(@"http://apps.apple.com/app/id123", + /*main_frame=*/true)); + expected_params = @{product_id : @"123"}; + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); + EXPECT_TRUE(VerifyStoreKitLaunched( @"http://itunes.apple.com/app/test/id123?qux&baz#foo", /*main_frame=*/true)); @@ -169,6 +174,6 @@ kITunesURLsHandlingResultHistogram, static_cast<base::HistogramBase::Sample>( ITunesUrlsStoreKitHandlingResult::kSingleAppUrlHandled), - 7); - histogram_tester_.ExpectTotalCount(kITunesURLsHandlingResultHistogram, 7); + 8); + histogram_tester_.ExpectTotalCount(kITunesURLsHandlingResultHistogram, 8); }
diff --git a/ios/chrome/browser/overlays/public/infobar_modal/BUILD.gn b/ios/chrome/browser/overlays/public/infobar_modal/BUILD.gn index d467247..8c8b57d 100644 --- a/ios/chrome/browser/overlays/public/infobar_modal/BUILD.gn +++ b/ios/chrome/browser/overlays/public/infobar_modal/BUILD.gn
@@ -37,5 +37,6 @@ "//ios/chrome/browser/passwords:infobar_delegates", "//ios/chrome/browser/ui/autofill:autofill_message", "//ios/chrome/browser/ui/autofill:autofill_ui_type", + "//ui/gfx", ] }
diff --git a/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.h b/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.h index e628930..d584af8d 100644 --- a/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.h +++ b/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.h
@@ -5,9 +5,12 @@ #ifndef IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_INFOBAR_MODAL_SAVE_CARD_INFOBAR_MODAL_OVERLAY_REQUEST_CONFIG_H_ #define IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_INFOBAR_MODAL_SAVE_CARD_INFOBAR_MODAL_OVERLAY_REQUEST_CONFIG_H_ +#import <UIKit/UIKit.h> + #include "ios/chrome/browser/overlays/public/overlay_request_config.h" #include "components/autofill/core/browser/payments/legal_message_line.h" +#include "ui/gfx/image/image.h" class InfoBarIOS; @class SaveCardMessageWithLinks; @@ -26,18 +29,20 @@ ~SaveCardModalRequestConfig() override; // The card holder name of the card. - std::u16string cardholder_name() const { return cardholder_name_; } + const std::u16string& cardholder_name() const { return cardholder_name_; } // The expiration month of the card. - std::u16string expiration_date_month() const { + const std::u16string& expiration_date_month() const { return expiration_date_month_; } // The expiration year of the card. - std::u16string expiration_date_year() const { return expiration_date_year_; } + const std::u16string& expiration_date_year() const { + return expiration_date_year_; + } // The last four digits of the card. - std::u16string card_last_four_digits() const { + const std::u16string& card_last_four_digits() const { return card_last_four_digits_; } @@ -55,6 +60,14 @@ // Whether the action is an upload or a local save. bool should_upload_credentials() const { return should_upload_credentials_; } + const std::u16string& displayed_target_account_email() const { + return displayed_target_account_email_; + } + + const gfx::Image& displayed_target_account_avatar() const { + return displayed_target_account_avatar_; + } + private: OVERLAY_USER_DATA_SETUP(SaveCardModalRequestConfig); explicit SaveCardModalRequestConfig(InfoBarIOS* infobar); @@ -78,6 +91,8 @@ NSArray<SaveCardMessageWithLinks*>* legal_message_lines_; bool current_card_saved_ = false; bool should_upload_credentials_ = false; + std::u16string displayed_target_account_email_; + gfx::Image displayed_target_account_avatar_; }; } // namespace save_card_infobar_overlays
diff --git a/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.mm b/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.mm index c2a6e02..e4ef9a7 100644 --- a/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.mm +++ b/ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.mm
@@ -34,6 +34,9 @@ legal_message_lines_ = LegalMessagesForModal(delegate); current_card_saved_ = infobar->accepted(); should_upload_credentials_ = delegate->upload(); + displayed_target_account_email_ = delegate->displayed_target_account_email(); + displayed_target_account_avatar_ = + delegate->displayed_target_account_avatar(); } SaveCardModalRequestConfig::~SaveCardModalRequestConfig() = default;
diff --git a/ios/chrome/browser/passwords/password_controller_egtest.mm b/ios/chrome/browser/passwords/password_controller_egtest.mm index 901dc01..d888d601 100644 --- a/ios/chrome/browser/passwords/password_controller_egtest.mm +++ b/ios/chrome/browser/passwords/password_controller_egtest.mm
@@ -52,7 +52,7 @@ id<GREYMatcher> PasswordInfobar(int prompt_id) { NSString* bannerLabel = - [NSString stringWithFormat:@"%@, %@", l10n_util::GetNSString(prompt_id), + [NSString stringWithFormat:@"%@,%@", l10n_util::GetNSString(prompt_id), kSavedCredentialLabel]; return grey_allOf(grey_accessibilityID(kInfobarBannerViewIdentifier), grey_accessibilityLabel(bannerLabel), nil);
diff --git a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm index 8bbea66..ef6971d 100644 --- a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm +++ b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm
@@ -252,7 +252,8 @@ std::make_unique<AutofillSaveCardInfoBarDelegateMobile>( /*upload=*/false, options, card, LegalMessageLines(), /*upload_save_card_callback=*/UploadSaveCardPromptCallback(), - /*local_save_card_callback=*/std::move(callback), GetPrefs()))); + /*local_save_card_callback=*/std::move(callback), GetPrefs(), + AccountInfo()))); } void ChromeAutofillClientIOS::ConfirmAccountNameFixFlow( @@ -292,15 +293,17 @@ UploadSaveCardPromptCallback callback) { DCHECK(options.show_prompt); - auto save_card_info_bar_delegate_mobile = + AccountInfo account_info = identity_manager_->FindExtendedAccountInfo( + identity_manager_->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin)); + infobar_manager_->AddInfoBar(CreateSaveCardInfoBarMobile( std::make_unique<AutofillSaveCardInfoBarDelegateMobile>( /*upload=*/true, options, card, legal_message_lines, /*upload_save_card_callback=*/std::move(callback), - /*local_save_card_callback=*/LocalSaveCardPromptCallback(), - GetPrefs()); - - infobar_manager_->AddInfoBar(CreateSaveCardInfoBarMobile( - std::move(save_card_info_bar_delegate_mobile))); + LocalSaveCardPromptCallback(), GetPrefs(), + base::FeatureList::IsEnabled( + autofill::features::kAutofillEnableAccountWalletStorage) + ? account_info + : AccountInfo()))); } void ChromeAutofillClientIOS::CreditCardUploadCompleted(bool card_saved) {
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.h b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.h index c4bba5a..afd2fd55 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.h +++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.h
@@ -71,6 +71,10 @@ // Navigates to the bookmark manager UI. - (void)openBookmarks; +// Navigates to the bookmark manager UI in window with number |windowNumber|. +// Sets and Leaves the root matcher to the given window. +- (void)openBookmarksInWindowWithNumber:(int)windowNumber; + // Selects MobileBookmarks to open. - (void)openMobileBookmarks;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.mm b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.mm index cbb1c92..724621b 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.mm
@@ -129,6 +129,16 @@ assertWithMatcher:grey_nil()]; } +- (void)openBookmarksInWindowWithNumber:(int)windowNumber { + // Opens the bookmark manager. + [ChromeEarlGreyUI openToolsMenuInWindowWithNumber:windowNumber]; + [ChromeEarlGreyUI tapToolsMenuButton:BookmarksMenuButton()]; + + // Assert the menu is gone. + [[EarlGrey selectElementWithMatcher:BookmarksMenuButton()] + assertWithMatcher:grey_nil()]; +} + - (void)openMobileBookmarks { [[EarlGrey selectElementWithMatcher:grey_allOf(
diff --git a/ios/chrome/browser/ui/bookmarks/bookmarks_entries_egtest.mm b/ios/chrome/browser/ui/bookmarks/bookmarks_entries_egtest.mm index 11d3c7a4..c3c6fbb 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmarks_entries_egtest.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmarks_entries_egtest.mm
@@ -1149,14 +1149,13 @@ [ChromeEarlGrey openNewWindow]; [ChromeEarlGrey waitForForegroundWindowCount:2]; - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(1)]; - [BookmarkEarlGreyUI openBookmarks]; + [BookmarkEarlGreyUI openBookmarksInWindowWithNumber:1]; [BookmarkEarlGreyUI openMobileBookmarks]; // Load url in first window and bookmark it. [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(0)]; [ChromeEarlGrey loadURL:URL1 inWindowWithNumber:0]; - [ChromeEarlGreyUI openToolsMenu]; + [ChromeEarlGreyUI openToolsMenuInWindowWithNumber:0]; [ChromeEarlGreyUI tapToolsMenuButton:AddBookmarkButton()]; // Assert it appeared in second window's list. @@ -1166,8 +1165,7 @@ assertWithMatcher:grey_notNil()]; // Open bookmark panel in first window also. - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(0)]; - [BookmarkEarlGreyUI openBookmarks]; + [BookmarkEarlGreyUI openBookmarksInWindowWithNumber:0]; [BookmarkEarlGreyUI openMobileBookmarks]; [[EarlGrey selectElementWithMatcher:TappableBookmarkNodeWithLabel(
diff --git a/ios/chrome/browser/ui/default_promo/BUILD.gn b/ios/chrome/browser/ui/default_promo/BUILD.gn index 532a9fbe..ba3aeb9 100644 --- a/ios/chrome/browser/ui/default_promo/BUILD.gn +++ b/ios/chrome/browser/ui/default_promo/BUILD.gn
@@ -90,6 +90,7 @@ configs += [ "//build/config/compiler:enable_arc" ] testonly = true sources = [ + "default_browser_promo_non_modal_scheduler_unittest.mm", "default_browser_string_util_unittest.mm", "default_browser_utils_unittest.mm", ] @@ -100,7 +101,13 @@ "//base/test:test_support", "//ios/chrome/app/strings:ios_google_chrome_strings_grit", "//ios/chrome/app/strings:ios_strings_grit", + "//ios/chrome/browser/browser_state:test_support", + "//ios/chrome/browser/main:test_support", "//ios/chrome/browser/ui:feature_flags", + "//ios/chrome/browser/ui/commands:commands", + "//ios/chrome/browser/web_state_list", + "//ios/chrome/browser/web_state_list:test_support", + "//ios/web/public/test/fakes", "//testing/gtest", "//third_party/ocmock", "//ui/base",
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm index b835d17..f2d34ff 100644 --- a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm +++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.h" #import "base/time/time.h" +#include "base/timer/timer.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/main/browser_observer_bridge.h" #import "ios/chrome/browser/overlays/public/overlay_presenter.h" @@ -29,11 +30,11 @@ // Default time interval to wait to show the promo after loading a webpage. // This should allow any initial overlays to be presented first. -const NSTimeInterval kShowPromoWebpageLoadWaitTime = 3; +const int64_t kShowPromoWebpageLoadWaitTime = 3; // Default time interval to wait to show the promo after the share action is // completed. -const NSTimeInterval kShowPromoPostShareWaitTime = 1; +const int64_t kShowPromoPostShareWaitTime = 1; // Number of times to show the promo to a user. const int kPromoShownTimesLimit = 2; @@ -63,6 +64,12 @@ // Observe the browser the web state list is tied to to deregister any // observers before the browser is destroyed. std::unique_ptr<BrowserObserverBridge> _browserObserver; + + // Timer for showing the promo after page load. + std::unique_ptr<base::OneShotTimer> _showPromoTimer; + + // Timer for dismissing the promo after it is shown. + std::unique_ptr<base::OneShotTimer> _dismissPromoTimer; } // Type of the promo being triggered, use for metrics only. @@ -71,12 +78,6 @@ // Time when a non modal promo was shown on screen, used for metrics only. @property(nonatomic) base::TimeTicks promoShownTime; -// Timer for showing the promo after page load. -@property(nonatomic, strong) NSTimer* showPromoTimer; - -// Timer for dismissing the promo after it is shown. -@property(nonatomic, strong) NSTimer* dismissPromoTimer; - // WebState that the triggering event occured in. @property(nonatomic, assign) web::WebState* webStateToListenTo; @@ -112,6 +113,10 @@ return self; } +- (void)dealloc { + self.browser = nullptr; +} + - (void)logUserPastedInOmnibox { if (self.currentPromoReason != PromoReasonNone) { return; @@ -334,11 +339,16 @@ - (void)startShowPromoTimer { DCHECK(self.currentPromoReason != PromoReasonNone); - if (!PromoCanBeDisplayed() || self.promoIsShowing || self.showPromoTimer) { + if (!PromoCanBeDisplayed()) { + self.currentPromoReason = PromoReasonNone; return; } - NSTimeInterval promoTimeInterval; + if (self.promoIsShowing || _showPromoTimer) { + return; + } + + int64_t promoTimeInterval; switch (self.currentPromoReason) { case PromoReasonNone: NOTREACHED(); @@ -355,17 +365,17 @@ break; } - self.showPromoTimer = - [NSTimer scheduledTimerWithTimeInterval:promoTimeInterval - target:self - selector:@selector(showPromoTimerFinished) - userInfo:nil - repeats:NO]; + __weak __typeof(self) weakSelf = self; + _showPromoTimer = std::make_unique<base::OneShotTimer>(); + _showPromoTimer->Start(FROM_HERE, + base::TimeDelta::FromSeconds(promoTimeInterval), + base::BindOnce(^{ + [weakSelf showPromoTimerFinished]; + })); } - (void)cancelShowPromoTimer { - [self.showPromoTimer invalidate]; - self.showPromoTimer = nil; + _showPromoTimer = nullptr; self.currentPromoReason = PromoReasonNone; } @@ -373,7 +383,7 @@ if (!PromoCanBeDisplayed() || self.promoIsShowing) { return; } - self.showPromoTimer = nil; + _showPromoTimer = nullptr; [self.handler showDefaultBrowserNonModalPromo]; self.promoIsShowing = YES; LogNonModalPromoAction(NonModalPromoAction::kAppear, self.promoTypeForMetrics, @@ -383,24 +393,25 @@ } - (void)startDismissPromoTimer { - if (self.dismissPromoTimer) { + if (_dismissPromoTimer) { return; } - self.dismissPromoTimer = [NSTimer - scheduledTimerWithTimeInterval:NonModalPromosTimeout() - target:self - selector:@selector(dismissPromoTimerFinished) - userInfo:nil - repeats:NO]; + + __weak __typeof(self) weakSelf = self; + _dismissPromoTimer = std::make_unique<base::OneShotTimer>(); + _dismissPromoTimer->Start( + FROM_HERE, base::TimeDelta::FromSeconds(NonModalPromosTimeout()), + base::BindOnce(^{ + [weakSelf dismissPromoTimerFinished]; + })); } - (void)cancelDismissPromoTimer { - [self.dismissPromoTimer invalidate]; - self.dismissPromoTimer = nil; + _dismissPromoTimer = nullptr; } - (void)dismissPromoTimerFinished { - self.dismissPromoTimer = nil; + _dismissPromoTimer = nullptr; if (self.promoIsShowing) { LogNonModalPromoAction(NonModalPromoAction::kTimeout, self.promoTypeForMetrics,
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm new file mode 100644 index 0000000..ba559933 --- /dev/null +++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm
@@ -0,0 +1,106 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.h" + +#include "base/ios/ios_util.h" +#include "base/test/task_environment.h" +#include "base/time/time.h" +#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" +#import "ios/chrome/browser/main/test_browser.h" +#import "ios/chrome/browser/ui/commands/command_dispatcher.h" +#import "ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_commands.h" +#include "ios/chrome/browser/ui/ui_feature_flags.h" +#include "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h" +#include "ios/chrome/browser/web_state_list/web_state_list.h" +#import "ios/chrome/browser/web_state_list/web_state_opener.h" +#import "ios/web/public/test/fakes/fake_web_state.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/gtest_mac.h" +#include "testing/platform_test.h" +#import "third_party/ocmock/OCMock/OCMock.h" +#import "third_party/ocmock/gtest_support.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace { + +class DefaultBrowserPromoNonModalSchedulerTest : public PlatformTest { + protected: + DefaultBrowserPromoNonModalSchedulerTest() + : web_state_list_(&web_state_list_delegate_) {} + void SetUp() override { + TestChromeBrowserState::Builder test_cbs_builder; + std::unique_ptr<TestChromeBrowserState> chrome_browser_state = + test_cbs_builder.Build(); + + browser_ = std::make_unique<TestBrowser>(chrome_browser_state.get(), + &web_state_list_); + + // Add initial web state + auto web_state = std::make_unique<web::FakeWebState>(); + test_web_state_ = web_state.get(); + web_state_list_.InsertWebState(0, std::move(web_state), + WebStateList::INSERT_ACTIVATE, + WebStateOpener()); + + ClearUserDefaults(); + } + void TearDown() override { ClearUserDefaults(); } + + // Clear NSUserDefault keys used in the class. + void ClearUserDefaults() { + NSArray<NSString*>* keys = @[ + @"userInteractedWithNonModalPromoCount", + @"lastTimeUserInteractedWithFullscreenPromo" + ]; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + for (NSString* key in keys) { + [defaults removeObjectForKey:key]; + } + } + + base::test::TaskEnvironment task_env_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + web::FakeWebState* test_web_state_; + FakeWebStateListDelegate web_state_list_delegate_; + WebStateList web_state_list_; + std::unique_ptr<Browser> browser_; +}; + +// Tests that the omnibox paste event triggers the promo to show. +TEST_F(DefaultBrowserPromoNonModalSchedulerTest, TestOmniboxPasteShowsPromo) { + // Default promo is not supported on iOS versions < 14. + if (!base::ios::IsRunningOnIOS14OrLater()) { + return; + } + + id promo_commands_handler = + OCMStrictProtocolMock(@protocol(DefaultBrowserPromoNonModalCommands)); + [browser_->GetCommandDispatcher() + startDispatchingToTarget:promo_commands_handler + forProtocol:@protocol(DefaultBrowserPromoNonModalCommands)]; + + DefaultBrowserPromoNonModalScheduler* scheduler = + [[DefaultBrowserPromoNonModalScheduler alloc] init]; + scheduler.browser = browser_.get(); + scheduler.dispatcher = browser_->GetCommandDispatcher(); + + [scheduler logUserPastedInOmnibox]; + + // Finish loading the page. + test_web_state_->SetLoading(true); + test_web_state_->OnPageLoaded(web::PageLoadCompletionStatus::SUCCESS); + test_web_state_->SetLoading(false); + + // Advance the timer by the post-load delay. This should trigger the promo. + [[promo_commands_handler expect] showDefaultBrowserNonModalPromo]; + task_env_.FastForwardBy(base::TimeDelta::FromSeconds(3)); + + [promo_commands_handler verify]; +} + +} // namespace
diff --git a/ios/chrome/browser/ui/history/history_ui_egtest.mm b/ios/chrome/browser/ui/history/history_ui_egtest.mm index 60ac3973..8f0977c 100644 --- a/ios/chrome/browser/ui/history/history_ui_egtest.mm +++ b/ios/chrome/browser/ui/history/history_ui_egtest.mm
@@ -334,6 +334,8 @@ [self openHistoryPanel]; [ChromeEarlGreyUI openAndClearBrowsingDataFromHistory]; + [ChromeEarlGrey waitForSufficientlyVisibleElementWithMatcher: + grey_accessibilityID(kHistoryTableViewIdentifier)]; [ChromeEarlGreyUI assertHistoryHasNoEntries]; } @@ -617,8 +619,7 @@ [ChromeEarlGrey openNewWindow]; [ChromeEarlGrey waitForForegroundWindowCount:2]; - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(1)]; - [self openHistoryPanel]; + [self openHistoryPanelInWindowWithNumber:1]; // Assert that three history elements are present in second window. [[EarlGrey @@ -632,8 +633,7 @@ assertWithMatcher:grey_notNil()]; // Open history panel in first window also. - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(0)]; - [self openHistoryPanel]; + [self openHistoryPanelInWindowWithNumber:0]; // Assert that three history elements are present in first window. [[EarlGrey @@ -682,4 +682,9 @@ [ChromeEarlGreyUI tapToolsMenuButton:HistoryButton()]; } +- (void)openHistoryPanelInWindowWithNumber:(int)windowNumber { + [ChromeEarlGreyUI openToolsMenuInWindowWithNumber:windowNumber]; + [ChromeEarlGreyUI tapToolsMenuButton:HistoryButton()]; +} + @end
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_save_card_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_save_card_coordinator.mm index 8e040cb..3f70169 100644 --- a/ios/chrome/browser/ui/infobars/coordinators/infobar_save_card_coordinator.mm +++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_save_card_coordinator.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/infobars/coordinators/infobar_save_card_coordinator.h" #include "base/strings/sys_string_conversions.h" +#import "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "ios/chrome/browser/infobars/infobar_controller_delegate.h" @@ -197,6 +198,13 @@ BOOL supportsEditing = self.saveCardInfoBarDelegate->upload() && !self.infobarAccepted; + // Convert gfx::Image to UIImage. The NSDictionary below doesn't support nil, + // so NSNull must be used. + const gfx::Image& avatar_gfx = + self.saveCardInfoBarDelegate->displayed_target_account_avatar(); + NSObject* avatar = + avatar_gfx.IsEmpty() ? [NSNull null] : avatar_gfx.ToUIImage(); + NSDictionary* prefs = @{ kCardholderNamePrefKey : self.cardholderName, kCardIssuerIconNamePrefKey : @@ -206,7 +214,10 @@ kExpirationYearPrefKey : self.expirationYear, kLegalMessagesPrefKey : [self legalMessagesForModal], kCurrentCardSavedPrefKey : @(self.infobarAccepted), - kSupportsEditingPrefKey : @(supportsEditing) + kSupportsEditingPrefKey : @(supportsEditing), + kDisplayedTargetAccountEmailPrefKey : base::SysUTF16ToNSString( + self.saveCardInfoBarDelegate->displayed_target_account_email()), + kDisplayedTargetAccountAvatarPrefKey : avatar, }; [self.modalConsumer setupModalViewControllerWithPrefs:prefs];
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_save_card_modal_consumer.h b/ios/chrome/browser/ui/infobars/modals/infobar_save_card_modal_consumer.h index ae59917..3e3be74 100644 --- a/ios/chrome/browser/ui/infobars/modals/infobar_save_card_modal_consumer.h +++ b/ios/chrome/browser/ui/infobars/modals/infobar_save_card_modal_consumer.h
@@ -17,6 +17,9 @@ NSString* kLegalMessagesPrefKey = @"legalMessages"; NSString* kCurrentCardSavedPrefKey = @"currentCardSaved"; NSString* kSupportsEditingPrefKey = @"supportsEditing"; +NSString* kDisplayedTargetAccountEmailPrefKey = @"displayedTargetAccountEmail"; +NSString* kDisplayedTargetAccountAvatarPrefKey = + @"displayedTargetAccountAvatar"; } // namespace // Consumer for model to push configurations to the SaveCard UI.
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm index b1c91d2..7512739 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm
@@ -327,12 +327,6 @@ // Tests that switching to closed tab opens the tab in foreground, except if it // is from NTP without history. - (void)testSwitchToClosedTab { - if (@available(iOS 13, *)) { - if ([ChromeEarlGrey isIPadIdiom]) { - // TODO(crbug.com/992480):test fails on iPad. - EARL_GREY_TEST_DISABLED(@"Test disabled on iPad."); - } - } // TODO(crbug.com/1067817): Test won't pass on iPad devices. #if !TARGET_IPHONE_SIMULATOR if ([ChromeEarlGrey isIPadIdiom]) {
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator.mm index daa23731..8b9791d6 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator.mm
@@ -53,7 +53,7 @@ withString:@"•" startingAtIndex:0]; NSString* bannerAccessibilityLabel = - [NSString stringWithFormat:@"%@, %@, %@", title, username, + [NSString stringWithFormat:@"%@,%@, %@", title, username, l10n_util::GetNSString( IDS_IOS_SETTINGS_PASSWORD_HIDDEN_LABEL)]; [self.consumer setBannerAccessibilityLabel:bannerAccessibilityLabel];
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm index d1076991..b612209 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm
@@ -63,7 +63,7 @@ NSString* subtitle = [NSString stringWithFormat:@"%@ %@", kUsername, password]; NSString* bannerAccessibilityLabel = - [NSString stringWithFormat:@"%@, %@, %@", title, kUsername, + [NSString stringWithFormat:@"%@,%@, %@", title, kUsername, l10n_util::GetNSString( IDS_IOS_SETTINGS_PASSWORD_HIDDEN_LABEL)]; EXPECT_NSEQ(bannerAccessibilityLabel, consumer.bannerAccessibilityLabel);
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator.mm index 70db47f..434a652 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator.mm
@@ -52,7 +52,7 @@ withString:@"•" startingAtIndex:0]; NSString* bannerAccessibilityLabel = - [NSString stringWithFormat:@"%@, %@, %@", title, username, + [NSString stringWithFormat:@"%@,%@, %@", title, username, l10n_util::GetNSString( IDS_IOS_SETTINGS_PASSWORD_HIDDEN_LABEL)]; [self.consumer setBannerAccessibilityLabel:bannerAccessibilityLabel];
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm index 7739abfb..b0f2c972 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm
@@ -63,7 +63,7 @@ NSString* subtitle = [NSString stringWithFormat:@"%@ %@", kUsername, password]; NSString* bannerAccessibilityLabel = - [NSString stringWithFormat:@"%@, %@, %@", title, kUsername, + [NSString stringWithFormat:@"%@,%@, %@", title, kUsername, l10n_util::GetNSString( IDS_IOS_SETTINGS_PASSWORD_HIDDEN_LABEL)]; EXPECT_NSEQ(bannerAccessibilityLabel, consumer.bannerAccessibilityLabel);
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/save_card/BUILD.gn b/ios/chrome/browser/ui/overlays/infobar_banner/save_card/BUILD.gn index 69c920fa..7f7e3dfa 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/save_card/BUILD.gn +++ b/ios/chrome/browser/ui/overlays/infobar_banner/save_card/BUILD.gn
@@ -36,6 +36,7 @@ "//components/autofill/core/browser:test_support", "//components/infobars/core", "//components/prefs", + "//components/signin/public/identity_manager", "//ios/chrome/app/strings:ios_strings_grit", "//ios/chrome/browser/infobars", "//ios/chrome/browser/infobars/test",
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/save_card/save_card_infobar_banner_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_banner/save_card/save_card_infobar_banner_overlay_mediator_unittest.mm index 9be593d..cbec7452 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/save_card/save_card_infobar_banner_overlay_mediator_unittest.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/save_card/save_card_infobar_banner_overlay_mediator_unittest.mm
@@ -13,6 +13,7 @@ #include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h" #include "components/prefs/pref_service.h" +#include "components/signin/public/identity_manager/account_info.h" #include "ios/chrome/browser/infobars/infobar_ios.h" #include "ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h" #import "ios/chrome/browser/overlays/public/infobar_banner/save_card_infobar_banner_overlay_request_config.h" @@ -60,7 +61,7 @@ ^(autofill::AutofillClient::SaveCardOfferUserDecision user_decision){ }), - prefs.get()); + prefs.get(), AccountInfo()); autofill::AutofillSaveCardInfoBarDelegateMobile* delegate = passed_delegate.get(); InfoBarIOS infobar(InfobarType::kInfobarTypeSaveCard, @@ -94,16 +95,19 @@ "https://www.example.com/"); std::unique_ptr<PrefService> prefs = autofill::test::PrefServiceForTesting(); std::unique_ptr<autofill::AutofillSaveCardInfoBarDelegateMobile> - passed_delegate = std::make_unique< - autofill::AutofillSaveCardInfoBarDelegateMobile>( - /*upload=*/true, autofill::AutofillClient::SaveCreditCardOptions(), - credit_card, autofill::LegalMessageLines(), - base::BindOnce(^( - autofill::AutofillClient::SaveCardOfferUserDecision user_decision, - const autofill::AutofillClient::UserProvidedCardDetails& - user_provided_card_details){ - }), - autofill::AutofillClient::LocalSaveCardPromptCallback(), prefs.get()); + passed_delegate = + std::make_unique<autofill::AutofillSaveCardInfoBarDelegateMobile>( + /*upload=*/true, + autofill::AutofillClient::SaveCreditCardOptions(), credit_card, + autofill::LegalMessageLines(), + base::BindOnce( + ^(autofill::AutofillClient::SaveCardOfferUserDecision + user_decision, + const autofill::AutofillClient::UserProvidedCardDetails& + user_provided_card_details){ + }), + autofill::AutofillClient::LocalSaveCardPromptCallback(), + prefs.get(), AccountInfo()); InfoBarIOS infobar(InfobarType::kInfobarTypeSaveCard, std::move(passed_delegate)); @@ -142,7 +146,7 @@ ^(autofill::AutofillClient::SaveCardOfferUserDecision user_decision){ }), - prefs.get()); + prefs.get(), AccountInfo()); InfoBarIOS infobar(InfobarType::kInfobarTypeSaveCard, std::move(passed_delegate));
diff --git a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/BUILD.gn b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/BUILD.gn index c903c27a..65f477f 100644 --- a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/BUILD.gn +++ b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/BUILD.gn
@@ -27,6 +27,7 @@ "//ios/chrome/browser/ui/overlays/infobar_modal:mediators", "//ios/chrome/browser/ui/util", "//ui/base", + "//ui/gfx", ] } @@ -42,6 +43,7 @@ "//components/autofill/core/browser:test_support", "//components/infobars/core", "//components/prefs", + "//components/signin/public/identity_manager", "//ios/chrome/browser/infobars", "//ios/chrome/browser/infobars/test", "//ios/chrome/browser/overlays",
diff --git a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator.mm b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator.mm index c7430ae1..8c4b5fd9 100644 --- a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator.mm +++ b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator.mm
@@ -13,6 +13,7 @@ #import "ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator_delegate.h" #import "ios/chrome/browser/ui/overlays/overlay_request_mediator+subclassing.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" +#include "ui/gfx/image/image.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -53,6 +54,12 @@ BOOL supportsEditing = config->should_upload_credentials() && !config->current_card_saved(); + // Convert gfx::Image to UIImage. The NSDictionary below doesn't support nil, + // so NSNull must be used. + const gfx::Image& avatar_gfx = config->displayed_target_account_avatar(); + NSObject* avatar = + avatar_gfx.IsEmpty() ? [NSNull null] : avatar_gfx.ToUIImage(); + NSDictionary* prefs = @{ kCardholderNamePrefKey : base::SysUTF16ToNSString(config->cardholder_name()), @@ -64,7 +71,10 @@ base::SysUTF16ToNSString(config->expiration_date_year()), kLegalMessagesPrefKey : config->legal_message_lines(), kCurrentCardSavedPrefKey : @(config->current_card_saved()), - kSupportsEditingPrefKey : @(supportsEditing) + kSupportsEditingPrefKey : @(supportsEditing), + kDisplayedTargetAccountEmailPrefKey : + base::SysUTF16ToNSString(config->displayed_target_account_email()), + kDisplayedTargetAccountAvatarPrefKey : avatar, }; [_consumer setupModalViewControllerWithPrefs:prefs]; }
diff --git a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator_unittest.mm index 878394a..3a8ee6a7 100644 --- a/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator_unittest.mm +++ b/ios/chrome/browser/ui/overlays/infobar_modal/save_card/save_card_infobar_modal_overlay_mediator_unittest.mm
@@ -14,6 +14,7 @@ #include "components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.h" #include "components/autofill/core/browser/payments/test_legal_message_line.h" #include "components/prefs/pref_service.h" +#include "components/signin/public/identity_manager/account_info.h" #include "ios/chrome/browser/infobars/infobar_ios.h" #include "ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_request_config.h" #import "ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_responses.h" @@ -96,7 +97,7 @@ user_provided_card_details){ }), autofill::AutofillClient::LocalSaveCardPromptCallback(), - prefs_.get()); + prefs_.get(), AccountInfo()); delegate_ = delegate.get(); infobar_ = std::make_unique<InfoBarIOS>(InfobarType::kInfobarTypeSaveCard, std::move(delegate));
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm index b3612f1b..98a073b 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm
@@ -84,6 +84,16 @@ clearBrowsingDataDialogLabel)]; } +- (void)openClearBrowsingDataDialogInWindowWithNumber:(int)windowNumber { + [ChromeEarlGreyUI openSettingsMenuInWindowWithNumber:windowNumber]; + [ChromeEarlGreyUI tapSettingsMenuButton:SettingsMenuPrivacyButton()]; + + NSString* clearBrowsingDataDialogLabel = + l10n_util::GetNSString(IDS_IOS_CLEAR_BROWSING_DATA_TITLE); + [ChromeEarlGreyUI tapPrivacyMenuButton:ButtonWithAccessibilityLabel( + clearBrowsingDataDialogLabel)]; +} + // Test that opening the clear browsing data dialog does not crash. - (void)testOpenClearBrowsingDataDialogUI { [self openClearBrowsingDataDialog]; @@ -123,14 +133,12 @@ if (![ChromeEarlGrey areMultipleWindowsSupported]) EARL_GREY_TEST_DISABLED(@"Multiple windows can't be opened."); - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(0)]; - [self openClearBrowsingDataDialog]; + [self openClearBrowsingDataDialogInWindowWithNumber:0]; [ChromeEarlGrey openNewWindow]; [ChromeEarlGrey waitForForegroundWindowCount:2]; - [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(1)]; - [self openClearBrowsingDataDialog]; + [self openClearBrowsingDataDialogInWindowWithNumber:1]; // Grab start states. [EarlGrey setRootMatcherForSubsequentInteractions:WindowWithNumber(0)];
diff --git a/ios/chrome/browser/ui/start_surface/start_surface_egtest.mm b/ios/chrome/browser/ui/start_surface/start_surface_egtest.mm index ce05d00..e1f1fe93 100644 --- a/ios/chrome/browser/ui/start_surface/start_surface_egtest.mm +++ b/ios/chrome/browser/ui/start_surface/start_surface_egtest.mm
@@ -24,6 +24,9 @@ - (AppLaunchConfiguration)appConfigurationForTestCase { AppLaunchConfiguration config; + config.additional_args.push_back( + std::string("--enable-features=StartSurface:" + "ReturnToStartSurfaceInactiveDurationInSeconds/0")); config.relaunch_policy = ForceRelaunchByCleanShutdown; return config; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.h index 6758cda..bff53b6 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.h
@@ -12,17 +12,19 @@ @class TabGridNewTabButton; // Bottom toolbar for TabGrid. The appearance of the toolbar is decided by -// screen size and current TabGrid page: +// screen size, current TabGrid page and mode: // // Horizontal-compact and vertical-regular screen size: // Small newTabButton, translucent background. -// Incognito & Regular page: [leadingButton, newTabButton, trailingButton] -// Remote page: [ trailingButton] +// Incognito & Regular page: [CloseAllButton newTabButton DoneButton] +// Remote page: [ DoneButton] +// Selection mode: [CloseTabButton shareButton AddToButton] // // Other screen size: // Large newTabButton, floating layout without UIToolbar. -// Incognito & Regular page: [ newTabButton] -// Remote page: [ ] +// Normal mode: [ newTabButton] +// Remote page: [ ] +// Selection mode: [CloseTabButton shareButton AddToButton] @interface TabGridBottomToolbar : UIView // This property together with |mode| and self.traitCollection control the items // shown in toolbar and its background color. Setting this property will also @@ -35,17 +37,23 @@ // selection mode. It will be used to update the buttons to use the correct // title (singular or plural). @property(nonatomic, assign) int selectedTabsCount; -// These components are publicly available to allow the user to set their -// contents, visibility and actions. -@property(nonatomic, strong, readonly) UIBarButtonItem* leadingButton; -@property(nonatomic, strong, readonly) UIBarButtonItem* trailingButton; // Sets target/action for tapping event on new tab button. - (void)setNewTabButtonTarget:(id)target action:(SEL)action; +// Sets target/action for tapping event on close all button. +- (void)setCloseAllButtonTarget:(id)target action:(SEL)action; +// Sets target/action for tapping event on done button. +- (void)setDoneButtonTarget:(id)target action:(SEL)action; // Set |enabled| on the new tab button. - (void)setNewTabButtonEnabled:(BOOL)enabled; // Set |enabled| on the selection mode buttons. - (void)setSelectionModeButtonsEnabled:(BOOL)enabled; +// Set |enabled| on the done button. +- (void)setDoneButtonEnabled:(BOOL)enabled; +// Set |enabled| on the closeAll button. +- (void)setCloseAllButtonEnabled:(BOOL)enabled; +// use undo or closeAll text on the close all button based on |useUndo| value. +- (void)useUndoCloseAll:(BOOL)useUndo; // Hides components and uses a black background color for tab grid transition // animation.
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.mm index 1192b85..268d8c9 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_bottom_toolbar.mm
@@ -27,6 +27,8 @@ NSLayoutConstraint* _largeNewTabButtonBottomAnchor; TabGridNewTabButton* _smallNewTabButton; TabGridNewTabButton* _largeNewTabButton; + UIBarButtonItem* _doneButton; + UIBarButtonItem* _closeAllOrUndoButton; UIBarButtonItem* _addToButton; UIBarButtonItem* _closeTabsButton; UIBarButtonItem* _shareButton; @@ -86,6 +88,8 @@ } - (void)setMode:(TabGridMode)mode { + if (_mode == mode) + return; _mode = mode; [self updateLayout]; } @@ -104,17 +108,60 @@ forControlEvents:UIControlEventTouchUpInside]; } +- (void)setCloseAllButtonTarget:(id)target action:(SEL)action { + _closeAllOrUndoButton.target = target; + _closeAllOrUndoButton.action = action; +} + +- (void)setDoneButtonTarget:(id)target action:(SEL)action { + _doneButton.target = target; + _doneButton.action = action; +} + - (void)setNewTabButtonEnabled:(BOOL)enabled { _smallNewTabButton.enabled = enabled; _largeNewTabButton.enabled = enabled; } +- (void)setDoneButtonEnabled:(BOOL)enabled { + _doneButton.enabled = enabled; +} + +- (void)setCloseAllButtonEnabled:(BOOL)enabled { + _closeAllOrUndoButton.enabled = enabled; +} + - (void)setSelectionModeButtonsEnabled:(BOOL)enabled { _addToButton.enabled = enabled; _closeTabsButton.enabled = enabled; _shareButton.enabled = enabled; } +- (void)useUndoCloseAll:(BOOL)useUndo { + _closeAllOrUndoButton.enabled = YES; + if (useUndo) { + _closeAllOrUndoButton.title = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_UNDO_CLOSE_ALL_BUTTON); + // Setting the |accessibilityIdentifier| seems to trigger layout, which + // causes an infinite loop. + if (_closeAllOrUndoButton.accessibilityIdentifier != + kTabGridUndoCloseAllButtonIdentifier) { + _closeAllOrUndoButton.accessibilityIdentifier = + kTabGridUndoCloseAllButtonIdentifier; + } + } else { + _closeAllOrUndoButton.title = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_CLOSE_ALL_BUTTON); + // Setting the |accessibilityIdentifier| seems to trigger layout, which + // causes an infinite loop. + if (_closeAllOrUndoButton.accessibilityIdentifier != + kTabGridCloseAllButtonIdentifier) { + _closeAllOrUndoButton.accessibilityIdentifier = + kTabGridCloseAllButtonIdentifier; + } + } +} + - (void)hide { _smallNewTabButton.alpha = 0.0; _largeNewTabButton.alpha = 0.0; @@ -139,12 +186,15 @@ [_toolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny]; - _leadingButton = [[UIBarButtonItem alloc] init]; - _leadingButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _closeAllOrUndoButton = [[UIBarButtonItem alloc] init]; + _closeAllOrUndoButton.tintColor = + UIColorFromRGB(kTabGridToolbarTextButtonColor); - _trailingButton = [[UIBarButtonItem alloc] init]; - _trailingButton.style = UIBarButtonItemStyleDone; - _trailingButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _doneButton = [[UIBarButtonItem alloc] init]; + _doneButton.style = UIBarButtonItemStyleDone; + _doneButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _doneButton.title = l10n_util::GetNSString(IDS_IOS_TAB_GRID_DONE_BUTTON); + _doneButton.accessibilityIdentifier = kTabGridDoneButtonIdentifier; _spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace @@ -223,14 +273,15 @@ } - (void)updateSelectionButtonsTitle { - _closeTabsButton.title = - base::SysUTF16ToNSString(l10n_util::GetPluralStringFUTF16( - IDS_IOS_TAB_GRID_CLOSE_TABS_BUTTON, _selectedTabsCount)); + _closeTabsButton.title = l10n_util::GetPluralNSStringF( + IDS_IOS_TAB_GRID_CLOSE_TABS_BUTTON, _selectedTabsCount); } - (void)updateLayout { _largeNewTabButtonBottomAnchor.constant = -kTabGridFloatingButtonVerticalInset; + UIBarButtonItem* leadingButton = _closeAllOrUndoButton; + UIBarButtonItem* trailingButton = _doneButton; if (self.mode == TabGridModeSelection) { [_toolbar setItems:@[ @@ -247,11 +298,10 @@ // For incognito/regular pages, display all 3 buttons; // For remote tabs page, only display new tab button. if (self.page == TabGridPageRemoteTabs) { - [_toolbar setItems:@[ _spaceItem, self.trailingButton ]]; + [_toolbar setItems:@[ _spaceItem, trailingButton ]]; } else { [_toolbar setItems:@[ - self.leadingButton, _spaceItem, _newTabButtonItem, _spaceItem, - self.trailingButton + leadingButton, _spaceItem, _newTabButtonItem, _spaceItem, trailingButton ]]; }
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.h b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.h index f2a8b878..e2fc1a8 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.h +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.h
@@ -7,33 +7,60 @@ #import <UIKit/UIKit.h> +#import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_paging.h" + @class TabGridPageControl; -// Top toolbar for TabGrid. In horizontal-compact and vertical-regular screen -// size, the toolbar shows 3 components, with two text buttons on each side and -// a TabGridPageControl in the middle. For other screen sizes, the toolbar only -// shows the newTabButton on the right. The toolbar always has a translucent -// background. +// Top toolbar for TabGrid. The appearance of the toolbar is decided by screen +// size, current TabGrid page and mode: +// +// Horizontal-compact and vertical-regular screen size: +// Normal mode: [ PageControl Select] +// Remote page: [ PageControl ] +// Selection mode: [SelectAll SelectedTabsCount Done] +// Other screen size: +// Normal mode: [CloseAll PageControl Select Done] +// Remote page: [ PageControl Done] +// Selection mode: [SelectAll SelectedTabsCount Done] @interface TabGridTopToolbar : UIToolbar // These components are publicly available to allow the user to set their // contents, visibility and actions. -@property(nonatomic, strong, readonly) UIBarButtonItem* leadingButton; -@property(nonatomic, strong, readonly) UIBarButtonItem* trailingButton; +@property(nonatomic, strong, readonly) UIBarButtonItem* anchorItem; @property(nonatomic, strong, readonly) TabGridPageControl* pageControl; +// This property together with |mode| control the items shown in toolbar. +@property(nonatomic, assign) TabGridPage page; +// TabGrid mode, it controls the items shown in toolbar. +@property(nonatomic, assign) TabGridMode mode; +// This property indicates the count of selected tabs when the tab grid is in +// selection mode. It will be used to update the buttons to use the correct +// title (singular or plural). +@property(nonatomic, assign) int selectedTabsCount; // Sets target/action for tapping event on new tab button. - (void)setNewTabButtonTarget:(id)target action:(SEL)action; -// Set |enabled| on the new tab button. -- (void)setNewTabButtonEnabled:(BOOL)enabled; // Sets target/action for tapping event on select tabs button. - (void)setSelectTabButtonTarget:(id)target action:(SEL)action; +// Sets target/action for tapping event on close all button. +- (void)setCloseAllButtonTarget:(id)target action:(SEL)action; +// Sets target/action for tapping event on done button. +- (void)setDoneButtonTarget:(id)target action:(SEL)action; +// Set |enabled| on the new tab button. +- (void)setNewTabButtonEnabled:(BOOL)enabled; // Set |enabled| on the select tabs button. - (void)setSelectTabsButtonEnabled:(BOOL)enabled; +// Set |enabled| on the close all button. +- (void)setCloseAllButtonEnabled:(BOOL)enabled; +// Set |enabled| on the done button. +- (void)setDoneButtonEnabled:(BOOL)enabled; +// use undo or closeAll text on the close all button based on |useUndo| value. +- (void)useUndoCloseAll:(BOOL)useUndo; + // Hides components and uses a black background color for tab grid transition // animation. - (void)hide; // Recovers the normal appearance for tab grid transition animation. - (void)show; + @end #endif // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TAB_GRID_TOP_TOOLBAR_H_
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.mm index 6ee9fce..c750a21 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_top_toolbar.mm
@@ -9,6 +9,8 @@ #import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_page_control.h" #import "ios/chrome/browser/ui/thumb_strip/thumb_strip_feature.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" +#include "ios/chrome/grit/ios_strings.h" +#include "ui/base/l10n/l10n_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -24,11 +26,106 @@ @end @implementation TabGridTopToolbar { - UIBarButtonItem* _centralItem; + UIBarButtonItem* _leadingButton; UIBarButtonItem* _spaceItem; UIBarButtonItem* _newTabButton; UIBarButtonItem* _fixedTrailingSpaceItem; UIBarButtonItem* _selectTabsButton; + UIBarButtonItem* _selectAllButton; + UIBarButtonItem* _selectedTabsItem; + UIBarButtonItem* _doneButton; + UIBarButtonItem* _closeAllOrUndoButton; + UIBarButtonItem* _pageControlItem; + UILabel* _selectedTabsLabel; +} + +- (UIBarButtonItem*)anchorItem { + return _leadingButton; +} + +- (void)setPage:(TabGridPage)page { + _page = page; + [self setItemsForTraitCollection:self.traitCollection]; +} + +- (void)setMode:(TabGridMode)mode { + if (_mode == mode) + return; + _mode = mode; + [self setItemsForTraitCollection:self.traitCollection]; +} + +- (void)setSelectedTabsCount:(int)count { + _selectedTabsCount = count; + if (_selectedTabsCount == 0) { + _selectedTabsLabel.text = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_SELECT_TABS_TITLE); + + } else { + _selectedTabsLabel.text = l10n_util::GetPluralNSStringF( + IDS_IOS_TAB_GRID_SELECTED_TABS_TITLE, _selectedTabsCount); + } +} + +- (void)setNewTabButtonTarget:(id)target action:(SEL)action { + _newTabButton.target = target; + _newTabButton.action = action; +} + +- (void)setSelectTabButtonTarget:(id)target action:(SEL)action { + _selectTabsButton.target = target; + _selectTabsButton.action = action; +} + +- (void)setDoneButtonTarget:(id)target action:(SEL)action { + _doneButton.target = target; + _doneButton.action = action; +} + +- (void)setNewTabButtonEnabled:(BOOL)enabled { + _newTabButton.enabled = enabled; +} + +- (void)setSelectTabsButtonEnabled:(BOOL)enabled { + _selectTabsButton.enabled = enabled; +} + +- (void)setCloseAllButtonTarget:(id)target action:(SEL)action { + _closeAllOrUndoButton.target = target; + _closeAllOrUndoButton.action = action; +} + +- (void)setCloseAllButtonEnabled:(BOOL)enabled { + _closeAllOrUndoButton.enabled = enabled; +} + +- (void)setDoneButtonEnabled:(BOOL)enabled { + _doneButton.enabled = enabled; +} + +- (void)useUndoCloseAll:(BOOL)useUndo { + _closeAllOrUndoButton.enabled = YES; + if (useUndo) { + _closeAllOrUndoButton.title = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_UNDO_CLOSE_ALL_BUTTON); + // Setting the |accessibilityIdentifier| seems to trigger layout, which + // causes an infinite loop. + if (_closeAllOrUndoButton.accessibilityIdentifier != + kTabGridUndoCloseAllButtonIdentifier) { + _closeAllOrUndoButton.accessibilityIdentifier = + kTabGridUndoCloseAllButtonIdentifier; + } + } else { + _closeAllOrUndoButton.title = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_CLOSE_ALL_BUTTON); + // Setting the |accessibilityIdentifier| seems to trigger layout, which + // causes an infinite loop. + if (_closeAllOrUndoButton.accessibilityIdentifier != + kTabGridCloseAllButtonIdentifier) { + _closeAllOrUndoButton.accessibilityIdentifier = + kTabGridCloseAllButtonIdentifier; + } + } } - (void)hide { @@ -41,24 +138,6 @@ self.pageControl.alpha = 1.0; } -- (void)setNewTabButtonTarget:(id)target action:(SEL)action { - _newTabButton.target = target; - _newTabButton.action = action; -} - -- (void)setNewTabButtonEnabled:(BOOL)enabled { - _newTabButton.enabled = enabled; -} - -- (void)setSelectTabButtonTarget:(id)target action:(SEL)action { - _selectTabsButton.target = target; - _selectTabsButton.action = action; -} - -- (void)setSelectTabsButtonEnabled:(BOOL)enabled { - _selectTabsButton.enabled = enabled; -} - #pragma mark - UIView - (CGSize)intrinsicContentSize { @@ -87,37 +166,64 @@ #pragma mark - Private +- (BOOL)requiresPreTrailingButtonForTraitCollection: + (UITraitCollection*)traitCollection { + return (IsTabsBulkActionsEnabled() && _mode == TabGridModeNormal && + self.page != TabGridPageRemoteTabs) || + ShowThumbStripInTraitCollection(traitCollection); +} + - (void)setItemsForTraitCollection:(UITraitCollection*)traitCollection { + UIBarButtonItem* centralItem = _pageControlItem; + UIBarButtonItem* trailingButton = _doneButton; + if (traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular && traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) { - if (IsTabsBulkActionsEnabled()) { + if (IsTabsBulkActionsEnabled() && self.page != TabGridPageRemoteTabs) { + if (_mode == TabGridModeSelection) { + centralItem = _selectedTabsItem; + _leadingButton = _selectAllButton; + } else { + trailingButton = _selectTabsButton; + _leadingButton = _spaceItem; + } [self setItems:@[ - _spaceItem, _spaceItem, _centralItem, _spaceItem, _selectTabsButton + _leadingButton, _spaceItem, centralItem, _spaceItem, trailingButton ]]; } else { - [self setItems:@[ _spaceItem, _centralItem, _spaceItem ]]; + [self setItems:@[ _spaceItem, centralItem, _spaceItem ]]; } return; } + // In Landscape normal mode trailig button is always "done". + trailingButton = _doneButton; + // In Landscape normal mode leading button is always "closeAll". + _leadingButton = _closeAllOrUndoButton; - // The new tab button is only used if the thumb strip is enabled. In other - // cases, there is a floating new tab button on the bottom. - if (ShowThumbStripInTraitCollection(traitCollection)) { + if ([self requiresPreTrailingButtonForTraitCollection:traitCollection]) { + UIBarButtonItem* preTrailingButton; + + // The new tab button is only used if the thumb strip is enabled. In other + // cases, there is a floating new tab button on the bottom. + if (ShowThumbStripInTraitCollection(traitCollection)) + preTrailingButton = _newTabButton; + else + preTrailingButton = _selectTabsButton; + [self setItems:@[ - _leadingButton, _spaceItem, _centralItem, _spaceItem, _newTabButton, - _fixedTrailingSpaceItem, _trailingButton + _leadingButton, _spaceItem, centralItem, _spaceItem, preTrailingButton, + _fixedTrailingSpaceItem, trailingButton ]]; return; } - if (IsTabsBulkActionsEnabled()) { - [self setItems:@[ - _leadingButton, _spaceItem, _centralItem, _spaceItem, _selectTabsButton, - _fixedTrailingSpaceItem, _trailingButton - ]]; - return; + + if (IsTabsBulkActionsEnabled() && _mode == TabGridModeSelection) { + centralItem = _selectedTabsItem; + _leadingButton = _selectAllButton; } + [self setItems:@[ - _leadingButton, _spaceItem, _centralItem, _spaceItem, _trailingButton + _leadingButton, _spaceItem, centralItem, _spaceItem, trailingButton ]]; } @@ -129,8 +235,15 @@ [self setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny]; - _leadingButton = [[UIBarButtonItem alloc] init]; - _leadingButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _closeAllOrUndoButton = [[UIBarButtonItem alloc] init]; + _closeAllOrUndoButton.tintColor = + UIColorFromRGB(kTabGridToolbarTextButtonColor); + [self useUndoCloseAll:NO]; + + _selectAllButton = [[UIBarButtonItem alloc] init]; + _selectAllButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _selectAllButton.title = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_SELECT_ALL_BUTTON); _selectTabsButton = [[UIBarButtonItem alloc] init]; _selectTabsButton.image = [UIImage imageNamed:@"select_tabs_toolbar_button"]; @@ -139,11 +252,22 @@ // The segmented control has an intrinsic size. _pageControl = [[TabGridPageControl alloc] init]; _pageControl.translatesAutoresizingMaskIntoConstraints = NO; - _centralItem = [[UIBarButtonItem alloc] initWithCustomView:_pageControl]; + _pageControlItem = [[UIBarButtonItem alloc] initWithCustomView:_pageControl]; - _trailingButton = [[UIBarButtonItem alloc] init]; - _trailingButton.style = UIBarButtonItemStyleDone; - _trailingButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _doneButton = [[UIBarButtonItem alloc] init]; + _doneButton.style = UIBarButtonItemStyleDone; + _doneButton.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + _doneButton.accessibilityIdentifier = kTabGridDoneButtonIdentifier; + _doneButton.title = l10n_util::GetNSString(IDS_IOS_TAB_GRID_DONE_BUTTON); + + _selectedTabsLabel = [[UILabel alloc] init]; + _selectedTabsLabel.text = + l10n_util::GetNSString(IDS_IOS_TAB_GRID_SELECT_TABS_TITLE); + _selectedTabsLabel.translatesAutoresizingMaskIntoConstraints = NO; + _selectedTabsLabel.tintColor = UIColorFromRGB(kTabGridToolbarTextButtonColor); + + _selectedTabsItem = + [[UIBarButtonItem alloc] initWithCustomView:_selectedTabsLabel]; _newTabButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm index c85e7f27..aeabc27 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm
@@ -143,8 +143,6 @@ @property(nonatomic, weak) UIView* scrollContentView; @property(nonatomic, weak) TabGridTopToolbar* topToolbar; @property(nonatomic, weak) TabGridBottomToolbar* bottomToolbar; -@property(nonatomic, weak) UIBarButtonItem* doneButton; -@property(nonatomic, weak) UIBarButtonItem* closeAllButton; @property(nonatomic, assign) BOOL undoCloseAllAvailable; // Bool informing if the confirmation action sheet is displayed. @property(nonatomic, assign) BOOL closeAllConfirmationDisplayed; @@ -1179,16 +1177,9 @@ // Sets the leadingButton title during initialization allows the actionSheet // to be correctly anchored. See: crbug.com/1140982. - topToolbar.leadingButton.title = - l10n_util::GetNSString(IDS_IOS_TAB_GRID_CLOSE_ALL_BUTTON); - topToolbar.leadingButton.target = self; - topToolbar.leadingButton.action = @selector(closeAllButtonTapped:); - topToolbar.trailingButton.title = - l10n_util::GetNSString(IDS_IOS_TAB_GRID_DONE_BUTTON); - topToolbar.trailingButton.accessibilityIdentifier = - kTabGridDoneButtonIdentifier; - topToolbar.trailingButton.target = self; - topToolbar.trailingButton.action = @selector(doneButtonTapped:); + [topToolbar setCloseAllButtonTarget:self + action:@selector(closeAllButtonTapped:)]; + [topToolbar setDoneButtonTarget:self action:@selector(doneButtonTapped:)]; [topToolbar setNewTabButtonTarget:self action:@selector(newTabButtonTapped:)]; [topToolbar setSelectTabButtonTarget:self action:@selector(selectButtonTapped:)]; @@ -1223,14 +1214,9 @@ constraintEqualToAnchor:self.view.trailingAnchor], ]]; - bottomToolbar.leadingButton.target = self; - bottomToolbar.leadingButton.action = @selector(closeAllButtonTapped:); - bottomToolbar.trailingButton.title = - l10n_util::GetNSString(IDS_IOS_TAB_GRID_DONE_BUTTON); - bottomToolbar.trailingButton.accessibilityIdentifier = - kTabGridDoneButtonIdentifier; - bottomToolbar.trailingButton.target = self; - bottomToolbar.trailingButton.action = @selector(doneButtonTapped:); + [bottomToolbar setCloseAllButtonTarget:self + action:@selector(closeAllButtonTapped:)]; + [bottomToolbar setDoneButtonTarget:self action:@selector(doneButtonTapped:)]; [bottomToolbar setNewTabButtonTarget:self action:@selector(newTabButtonTapped:)]; @@ -1285,22 +1271,15 @@ // vertically long. self.configuration = TabGridConfigurationBottomToolbar; } - switch (self.configuration) { - case TabGridConfigurationBottomToolbar: - self.doneButton = self.bottomToolbar.trailingButton; - self.closeAllButton = self.bottomToolbar.leadingButton; - break; - case TabGridConfigurationFloatingButton: - self.doneButton = self.topToolbar.trailingButton; - self.closeAllButton = self.topToolbar.leadingButton; - break; - } [self configureButtonsForActiveAndCurrentPage]; } - (void)configureButtonsForActiveAndCurrentPage { self.bottomToolbar.page = self.currentPage; + self.topToolbar.page = self.currentPage; self.bottomToolbar.mode = self.tabGridMode; + self.topToolbar.mode = self.tabGridMode; + // When current page is a remote tabs page. if (self.currentPage == TabGridPageRemoteTabs) { if (self.pageConfiguration == @@ -1322,7 +1301,8 @@ !self.regularTabsViewController)) { [self configureDoneButtonOnDisabledPage]; [self.bottomToolbar setNewTabButtonEnabled:NO]; - self.closeAllButton.enabled = NO; + [self.topToolbar setCloseAllButtonEnabled:NO]; + [self.bottomToolbar setCloseAllButtonEnabled:NO]; return; } @@ -1357,11 +1337,11 @@ BOOL incognitoTabsNeedsAuth = (self.currentPage == TabGridPageIncognitoTabs && self.incognitoTabsViewController.contentNeedsAuthentication); - - self.doneButton.enabled = - !gridViewController.gridEmpty && - self.topToolbar.pageControl.userInteractionEnabled && - !incognitoTabsNeedsAuth; + BOOL doneEnabled = !gridViewController.gridEmpty && + self.topToolbar.pageControl.userInteractionEnabled && + !incognitoTabsNeedsAuth; + [self.topToolbar setDoneButtonEnabled:doneEnabled]; + [self.bottomToolbar setDoneButtonEnabled:doneEnabled]; } // Disables the done button on bottom toolbar if a disabled tab view is @@ -1369,23 +1349,22 @@ - (void)configureDoneButtonOnDisabledPage { if (!self.closeAllConfirmationDisplayed) self.topToolbar.pageControl.userInteractionEnabled = YES; - self.doneButton.enabled = NO; + [self.bottomToolbar setDoneButtonEnabled:NO]; + [self.topToolbar setDoneButtonEnabled:NO]; } - (void)configureCloseAllButtonForCurrentPageAndUndoAvailability { - if (self.undoCloseAllAvailable && - self.currentPage == TabGridPageRegularTabs) { - // Setup closeAllButton as undo button. - self.closeAllButton.enabled = YES; - self.closeAllButton.title = - l10n_util::GetNSString(IDS_IOS_TAB_GRID_UNDO_CLOSE_ALL_BUTTON); - self.closeAllButton.accessibilityIdentifier = - kTabGridUndoCloseAllButtonIdentifier; + BOOL useUndo = + self.undoCloseAllAvailable && self.currentPage == TabGridPageRegularTabs; + [self.bottomToolbar useUndoCloseAll:useUndo]; + [self.topToolbar useUndoCloseAll:useUndo]; + if (useUndo) return; - } + // Otherwise setup as a Close All button. GridViewController* gridViewController = [self gridViewControllerForPage:self.currentPage]; + BOOL enabled = (gridViewController == nil) ? NO : !gridViewController.gridEmpty; BOOL incognitoTabsNeedsAuth = @@ -1393,16 +1372,8 @@ self.incognitoTabsViewController.contentNeedsAuthentication); enabled = enabled && !incognitoTabsNeedsAuth; - self.closeAllButton.enabled = enabled; - self.closeAllButton.title = - l10n_util::GetNSString(IDS_IOS_TAB_GRID_CLOSE_ALL_BUTTON); - // Setting the |accessibilityIdentifier| seems to trigger layout, which causes - // an infinite loop. - if (self.closeAllButton.accessibilityIdentifier != - kTabGridCloseAllButtonIdentifier) { - self.closeAllButton.accessibilityIdentifier = - kTabGridCloseAllButtonIdentifier; - } + [self.topToolbar setCloseAllButtonEnabled:enabled]; + [self.bottomToolbar setCloseAllButtonEnabled:enabled]; } // Shows the two toolbars and the floating button. Suitable for use in @@ -1795,6 +1766,17 @@ #pragma mark - Control actions - (void)doneButtonTapped:(id)sender { + // Tapping Done when in selection mode, should only return back to the normal + // mode. + if (self.tabGridMode == TabGridModeSelection) { + self.tabGridMode = TabGridModeNormal; + self.bottomToolbar.mode = self.tabGridMode; + self.topToolbar.mode = self.tabGridMode; + // Records action when user exit the selection mode. + base::RecordAction(base::UserMetricsAction("MobileTabGridSelectionDone")); + return; + } + TabGridPage newActivePage = self.currentPage; if (self.currentPage == TabGridPageRemoteTabs) { newActivePage = self.activePage; @@ -1818,16 +1800,17 @@ self.bottomToolbar.mode = self.tabGridMode; self.regularTabsViewController.mode = self.tabGridMode; self.incognitoTabsViewController.mode = self.tabGridMode; + self.topToolbar.mode = self.tabGridMode; base::RecordAction(base::UserMetricsAction("MobileTabGridSelectTabs")); } // Shows an action sheet that asks for confirmation when 'Close All' button is // tapped. - (void)closeAllButtonTappedShowConfirmation { - // Sets the action sheet anchor on the leading button of the top + // Sets the action sheet anchor on the to the anchor item of the top // toolbar in order to avoid alignment issues when changing the device // orientation to landscape in multi window mode. - UIBarButtonItem* buttonAnchor = self.topToolbar.leadingButton; + UIBarButtonItem* buttonAnchor = self.topToolbar.anchorItem; self.closeAllConfirmationDisplayed = YES; self.topToolbar.pageControl.userInteractionEnabled = NO; switch (self.currentPage) {
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_egtest.mm b/ios/chrome/browser/ui/toolbar/toolbar_egtest.mm index 6237893..02c5e89 100644 --- a/ios/chrome/browser/ui/toolbar/toolbar_egtest.mm +++ b/ios/chrome/browser/ui/toolbar/toolbar_egtest.mm
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/ios/ios_util.h" +#import "base/test/ios/wait_util.h" #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h" @@ -313,8 +314,17 @@ [ChromeEarlGreyUI focusOmniboxAndType:@"javascript:alert('Hello');\n"]; - [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Hello")] - assertWithMatcher:grey_notNil()]; + ConditionBlock condition = ^{ + NSError* error = nil; + [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Hello")] + assertWithMatcher:grey_sufficientlyVisible() + error:&error]; + return error == nil; + }; + + bool alertVisible = base::test::ios::WaitUntilConditionOrTimeout( + base::test::ios::kWaitForUIElementTimeout, condition); + GREYAssertTrue(alertVisible, @"JavaScript alert didn't appear"); } // Loads WebUI page, types JavaScript into Omnibox and verifies that alert is @@ -330,7 +340,9 @@ [ChromeEarlGrey loadURL:GURL("chrome://version")]; [ChromeEarlGreyUI focusOmniboxAndType:@"javascript:alert('Hello');\n"]; - [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(@"Hello")] + [[EarlGrey + selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"Hello"), + grey_sufficientlyVisible(), nil)] assertWithMatcher:grey_nil()]; }
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 bd811c7..ac45af54 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.h
@@ -37,11 +37,23 @@ // calling this method. - (void)openToolsMenu; +// Makes the toolbar visible by swiping downward, if necessary. Then taps on +// the Tools menu button. At least one tab needs to be open and visible when +// calling this method. +// Sets and Leaves the root matcher to the given window with |windowNumber|. +- (void)openToolsMenuInWindowWithNumber:(int)windowNumber; + // Opens the settings menu by opening the tools menu, and then tapping the // Settings button. There will be a GREYAssert if the tools menu is open when // calling this method. - (void)openSettingsMenu; +// Opens the settings menu by opening the tools menu, and then tapping the +// Settings button. There will be a GREYAssert if the tools menu is open when +// calling this method. +// Sets and Leaves the root matcher to the given window with |windowNumber|. +- (void)openSettingsMenuInWindowWithNumber:(int)windowNumber; + // Scrolls to find the button in the Tools menu with the corresponding // |buttonMatcher|, and then taps it. If |buttonMatcher| is not found, or // the Tools menu is not open when this is called there will be a GREYAssert.
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 98847558..a9e458e 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm
@@ -103,11 +103,32 @@ // to always find it. } +- (void)openToolsMenuInWindowWithNumber:(int)windowNumber { + [EarlGrey setRootMatcherForSubsequentInteractions: + chrome_test_util::WindowWithNumber(windowNumber)]; + // TODO(crbug.com/639524): Add logic to ensure the app is in the correct + // state, for example DCHECK if no tabs are displayed. + [[[EarlGrey + selectElementWithMatcher:grey_allOf(chrome_test_util::ToolsMenuButton(), + grey_sufficientlyVisible(), nil)] + usingSearchAction:grey_swipeSlowInDirection(kGREYDirectionDown) + onElementWithMatcher:chrome_test_util:: + WebStateScrollViewMatcherInWindowWithNumber( + windowNumber)] performAction:grey_tap()]; + // TODO(crbug.com/639517): Add webViewScrollView matcher so we don't have + // to always find it. +} + - (void)openSettingsMenu { [self openToolsMenu]; [self tapToolsMenuButton:SettingsMenuButton()]; } +- (void)openSettingsMenuInWindowWithNumber:(int)windowNumber { + [self openToolsMenuInWindowWithNumber:windowNumber]; + [self tapToolsMenuButton:SettingsMenuButton()]; +} + - (void)tapToolsMenuButton:(id<GREYMatcher>)buttonMatcher { ScopedDisableTimerTracking disabler; id<GREYMatcher> interactableSettingsButton =
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.h b/ios/chrome/test/earl_grey/chrome_matchers.h index 892b318b..95fac17 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers.h +++ b/ios/chrome/test/earl_grey/chrome_matchers.h
@@ -416,6 +416,10 @@ // Returns a matcher for the current WebState's scroll view. id<GREYMatcher> WebStateScrollViewMatcher(); +// Returns a matcher for the current WebState's scroll view in the given +// |window_number|. +id<GREYMatcher> WebStateScrollViewMatcherInWindowWithNumber(int window_number); + // Returns a matcher for the Clear Browsing Data button in the History UI. id<GREYMatcher> HistoryClearBrowsingDataButton();
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm index 7a265c5..19ea861 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers.mm +++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -531,6 +531,11 @@ return [ChromeMatchersAppInterface webStateScrollViewMatcher]; } +id<GREYMatcher> WebStateScrollViewMatcherInWindowWithNumber(int windowNumber) { + return [ChromeMatchersAppInterface + webStateScrollViewMatcherInWindowWithNumber:windowNumber]; +} + id<GREYMatcher> HistoryClearBrowsingDataButton() { return [ChromeMatchersAppInterface historyClearBrowsingDataButton]; }
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 9f6a0edb..1567385 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h +++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.h
@@ -409,6 +409,11 @@ // Returns a matcher for the current WebState's scroll view. + (id<GREYMatcher>)webStateScrollViewMatcher; +// Returns a matcher for the current WebState's scroll view in the given +// |windowNumber|. ++ (id<GREYMatcher>)webStateScrollViewMatcherInWindowWithNumber: + (int)windowNumber; + // Returns a matcher for the Clear Browsing Data button in the History UI. + (id<GREYMatcher>)historyClearBrowsingDataButton;
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 044ba8e..b9a453e 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_matchers_app_interface.mm
@@ -57,6 +57,7 @@ #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/app/tab_test_util.h" +#import "ios/chrome/test/app/window_test_util.h" #import "ios/testing/earl_grey/earl_grey_app.h" #import "ios/web/public/test/earl_grey/web_view_matchers.h" #include "ui/base/l10n/l10n_util.h" @@ -833,6 +834,12 @@ return web::WebViewScrollView(chrome_test_util::GetCurrentWebState()); } ++ (id<GREYMatcher>)webStateScrollViewMatcherInWindowWithNumber: + (int)windowNumber { + return web::WebViewScrollView( + chrome_test_util::GetCurrentWebStateForWindowWithNumber(windowNumber)); +} + + (id<GREYMatcher>)historyClearBrowsingDataButton { return grey_accessibilityID(kHistoryToolbarClearBrowsingButtonIdentifier); }
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 index 8e71b4d..9c349cd0 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -d474b74ea452101a666dd2f02324a211482a53bc \ No newline at end of file +8d068acc5a501f6f70db7b8b0c99c01086ad980f \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 index 7fbc7ef..6a79016 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -51825a34a9059849b02355be25e0fa30f93811cc \ No newline at end of file +c1a4e792dc37e16eb165f74eced9d2d3b9e87d7e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 index ed4ee96..d6a4f2be 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -13f36748e76defd52005e34ecba6f89001bb7aa7 \ No newline at end of file +3365221283b14bc156b04c1962ed9e2e16f5b47a \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 index 98f6422..17c8b48c 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -c5f1528c5c9b14eab6df1587e2e0ab3b8b0cc5b8 \ No newline at end of file +1b8219aa064baf9f11c8edd6a8675e0d472dfb64 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 index 31c0953..93f55d42 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -a8fddef4028c9aa1add0fcba2712f7738ec92b1f \ No newline at end of file +bb0ba1b7f104d84d079188a7a22f32decc6f1f40 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 index bf8d4b0..b49891c7 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -860a2cd6b995a0879b404d4138cf33d164c7414e \ No newline at end of file +380e65853b11416d267a89bc3e04461ab35a373c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 index e73842a2..3efa28b 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -1cf5c3da8243de30044be69b9db7f7114c78ce46 \ No newline at end of file +c1534865bc8d726edf4f081fedada8d2115c5b02 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 index 3bd6d67..8df2d67 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -3dbdbb45e7618d470f33e4fd7456bb29b7cb75e6 \ No newline at end of file +8b550929ff135939e1fd8f9ebbad0523907ef661 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 index 46e9cacc..f3d3880 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -f29af37c79c53b6c99094a539226c4b513e07937 \ No newline at end of file +6d6dcb464d4f48e8bccc5ac908c3531279956656 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 index ca46533..74f8e89 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -825e7efbeb4331a7af1a59b92081f684cc0d0807 \ No newline at end of file +0d9c21640eeaf8c9c4604712544cf3c50741152b \ No newline at end of file
diff --git a/ios/showcase/tab_grid/sc_toolbars_view_controller.mm b/ios/showcase/tab_grid/sc_toolbars_view_controller.mm index ff9e05ed..e908b977 100644 --- a/ios/showcase/tab_grid/sc_toolbars_view_controller.mm +++ b/ios/showcase/tab_grid/sc_toolbars_view_controller.mm
@@ -19,14 +19,10 @@ TabGridTopToolbar* topToolbar = [[TabGridTopToolbar alloc] init]; topToolbar.translatesAutoresizingMaskIntoConstraints = NO; - topToolbar.leadingButton.title = @"Leading"; - topToolbar.trailingButton.title = @"Trailing"; [self.view addSubview:topToolbar]; TabGridBottomToolbar* bottomToolbar = [[TabGridBottomToolbar alloc] init]; bottomToolbar.translatesAutoresizingMaskIntoConstraints = NO; - bottomToolbar.leadingButton.title = @"Leading"; - bottomToolbar.trailingButton.title = @"Trailing"; [self.view addSubview:bottomToolbar]; NSArray* constraints = @[
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc index 7c6ca90d..c27fd384 100644 --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc
@@ -186,8 +186,8 @@ // Overrides hardware secure codecs support for testing. If specified, real // platform hardware secure codecs check will be skipped. Codecs are separated -// by comma. Valid video codecs are "vp8", "vp9" and "avc1", and the only valid -// audio codec is "vorbis". For example: +// by comma. Valid video codecs are "vp8", "vp9", "avc1" and "hevc", and the +// only valid audio codec is "vorbis". For example: // --override-hardware-secure-codecs-for-testing=vp8,vp9 // --override-hardware-secure-codecs-for-testing=avc1 // CENC encryption scheme is assumed to be supported for the specified codecs. @@ -275,10 +275,10 @@ const base::Feature kMediaCastOverlayButton{"MediaCastOverlayButton", base::FEATURE_ENABLED_BY_DEFAULT}; -// Use AndroidOverlay for more cases than just player-element fullscreen? This -// requires that |kOverlayFullscreenVideo| is true, else it is ignored. -const base::Feature kUseAndroidOverlayAggressively{ - "UseAndroidOverlayAggressively", base::FEATURE_ENABLED_BY_DEFAULT}; +// Use AndroidOverlay only if required for secure video playback. This requires +// that |kOverlayFullscreenVideo| is true, else it is ignored. +const base::Feature kUseAndroidOverlayForSecureOnly{ + "UseAndroidOverlayForSecureOnly", base::FEATURE_DISABLED_BY_DEFAULT}; // If enabled, RTCVideoDecoderAdapter will wrap a DecoderStream as a video // decoder, rather than using MojoVideoDecoder. This causes the RTC external
diff --git a/media/base/media_switches.h b/media/base/media_switches.h index 69b9cfc..8da535d 100644 --- a/media/base/media_switches.h +++ b/media/base/media_switches.h
@@ -175,7 +175,7 @@ MEDIA_EXPORT extern const base::Feature kSuspendMutedAudio; MEDIA_EXPORT extern const base::Feature kSpecCompliantCanPlayThrough; MEDIA_EXPORT extern const base::Feature kUnifiedAutoplay; -MEDIA_EXPORT extern const base::Feature kUseAndroidOverlayAggressively; +MEDIA_EXPORT extern const base::Feature kUseAndroidOverlayForSecureOnly; MEDIA_EXPORT extern const base::Feature kUseDecoderStreamForWebRTC; MEDIA_EXPORT extern const base::Feature kUseFakeDeviceForMediaStream; MEDIA_EXPORT extern const base::Feature kUseMediaHistoryStore;
diff --git a/media/base/supported_types.cc b/media/base/supported_types.cc index a50314f..f55859e 100644 --- a/media/base/supported_types.cc +++ b/media/base/supported_types.cc
@@ -52,14 +52,19 @@ return false; } -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) +#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \ + (BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN)) bool IsHevcProfileSupported(VideoCodecProfile profile) { + // Only encrypted HEVC content is supported, and normally MSE.isTypeSupported + // returns false for HEVC. The kEnableClearHevcForTesting flag allows it to + // return true to enable a wider array of test scenarios to function properly. if (!base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableClearHevcForTesting)) { return false; } switch (profile) { - case HEVCPROFILE_MAIN: // fallthrough + case HEVCPROFILE_MAIN: + FALLTHROUGH; case HEVCPROFILE_MAIN10: return true; case HEVCPROFILE_MAIN_STILL_PICTURE: @@ -69,7 +74,7 @@ } return false; } -#endif // ENABLE_PLATFORM_HEVC && USE_CHROMEOS_PROTECTED_MEDIA +#endif // ENABLE_PLATFORM_HEVC && (USE_CHROMEOS_PROTECTED_MEDIA || OS_WIN) } // namespace @@ -339,7 +344,8 @@ return true; case kCodecHEVC: -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) +#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \ + (BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN)) return IsColorSpaceSupported(type.color_space) && IsHevcProfileSupported(type.profile); #else
diff --git a/media/base/watch_time_keys.h b/media/base/watch_time_keys.h index 4007bcc..b22eb6c 100644 --- a/media/base/watch_time_keys.h +++ b/media/base/watch_time_keys.h
@@ -5,7 +5,6 @@ #ifndef MEDIA_BASE_WATCH_TIME_KEYS_H_ #define MEDIA_BASE_WATCH_TIME_KEYS_H_ -#include "base/containers/flat_set.h" #include "base/strings/string_piece.h" #include "media/base/media_export.h"
diff --git a/media/blink/key_system_config_selector.cc b/media/blink/key_system_config_selector.cc index 298b74a..0acaf77d 100644 --- a/media/blink/key_system_config_selector.cc +++ b/media/blink/key_system_config_selector.cc
@@ -159,10 +159,11 @@ std::vector<std::string> codec_vector; SplitCodecs(codecs, &codec_vector); -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) - // EME HEVC is supported on CrOS under these build flags, but it is not - // supported for clear playback. Remove the HEVC codec strings to avoid asking - // IsSupported*MediaFormat() about HEVC. EME support for HEVC profiles +#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \ + (BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN)) + // EME HEVC is supported on CrOS and Windows under these build flags, but it + // is not supported for clear playback. Remove the HEVC codec strings to avoid + // asking IsSupported*MediaFormat() about HEVC. EME support for HEVC profiles // is described via KeySystemProperties::GetSupportedCodecs(). // TODO(1156282): Decouple the rest of clear vs EME codec support. if (base::ToLowerASCII(container_mime_type) == "video/mp4" && @@ -183,7 +184,7 @@ if (codec_vector.empty()) return true; } -#endif +#endif // ENABLE_PLATFORM_HEVC && (USE_CHROMEOS_PROTECTED_MEDIA || OS_WIN) // AesDecryptor decrypts the stream in the demuxer before it reaches the // decoder so check whether the media format is supported when clear.
diff --git a/media/filters/source_buffer_state.cc b/media/filters/source_buffer_state.cc index 3b4c9e16..0dad6903e 100644 --- a/media/filters/source_buffer_state.cc +++ b/media/filters/source_buffer_state.cc
@@ -9,6 +9,7 @@ #include "base/callback_helpers.h" #include "base/command_line.h" #include "base/strings/string_number_conversions.h" +#include "build/build_config.h" #include "media/base/media_switches.h" #include "media/base/media_track.h" #include "media/base/media_tracks.h" @@ -717,22 +718,22 @@ if (video_config.codec() == kCodecHEVC) { #if BUILDFLAG(ENABLE_PLATFORM_HEVC) -#if BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) - // On ChromeOS, HEVC is only supported through EME, so require the - // config to be for an encrypted track if on ChromeOS. Even so, - // conditionally allow clear HEVC on ChromeOS if cmdline has test - // override. +#if BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) + // On ChromeOS and Windows, HEVC is only supported through EME, so + // require the config to be for an encrypted track if on ChromeOS or + // Windows. Even so, conditionally allow clear HEVC on ChromeOS or + // Windows if cmdline has test override. if (video_config.encryption_scheme() == EncryptionScheme::kUnencrypted && !base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableClearHevcForTesting)) { MEDIA_LOG(ERROR, media_log_) - << "MSE playback of HEVC on ChromeOS is only supported via " - "platform decryptor, but the provided HEVC track is not " - "encrypted."; + << "MSE playback of HEVC on ChromeOS and Windows is only " + "supported via platform decryptor, but the provided HEVC " + "track is not encrypted."; return false; } -#endif // BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) +#endif // BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) #else NOTREACHED() << "MSE parser must not emit HEVC tracks on build configurations "
diff --git a/media/gpu/android/android_video_surface_chooser.h b/media/gpu/android/android_video_surface_chooser.h index 77ef846..b5e7f319 100644 --- a/media/gpu/android/android_video_surface_chooser.h +++ b/media/gpu/android/android_video_surface_chooser.h
@@ -42,10 +42,9 @@ // Are we expecting a relayout soon? bool is_expecting_relayout = false; - // If true, then we will default to promoting to overlay if it's power- - // efficient even if not otherwise required. Otherwise, we'll require other - // signals, like fs or secure, before we promote. - bool promote_aggressively = false; + // If true, then we will promote to overlay only if it's required for secure + // video playback. + bool promote_secure_only = false; // Default orientation for the video. VideoRotation video_rotation = VIDEO_ROTATION_0;
diff --git a/media/gpu/android/android_video_surface_chooser_impl.cc b/media/gpu/android/android_video_surface_chooser_impl.cc index dc562f0..4b87ad9 100644 --- a/media/gpu/android/android_video_surface_chooser_impl.cc +++ b/media/gpu/android/android_video_surface_chooser_impl.cc
@@ -53,8 +53,9 @@ // Note that we ignore |is_expecting_relayout| here, since it's transient. // We don't want to pick TextureOwner permanently for that. if (overlay_factory_ && - (current_state_.is_fullscreen || current_state_.is_secure || - current_state_.is_required) && + ((current_state_.is_fullscreen && + !current_state_.promote_secure_only) || + current_state_.is_secure || current_state_.is_required) && current_state_.video_rotation == VIDEO_ROTATION_0) { SwitchToOverlay(false); } else { @@ -87,15 +88,10 @@ // TODO(liberato): should this depend on resolution? OverlayState new_overlay_state = - current_state_.promote_aggressively ? kUsingOverlay : kUsingTextureOwner; - // Do we require a power-efficient overlay? - bool needs_power_efficient = current_state_.promote_aggressively; + current_state_.promote_secure_only ? kUsingTextureOwner : kUsingOverlay; - // In player element fullscreen, we want to use overlays if we can. Note that - // this does nothing if |promote_aggressively|, which is fine since switching - // from "want power efficient" from "don't care" is problematic. - if (current_state_.is_fullscreen) - new_overlay_state = kUsingOverlay; + // Do we require a power-efficient overlay? + bool needs_power_efficient = true; // Try to use an overlay if possible for protected content. If the compositor // won't promote, though, it's okay if we switch out. Set |is_required| in
diff --git a/media/gpu/android/android_video_surface_chooser_impl_unittest.cc b/media/gpu/android/android_video_surface_chooser_impl_unittest.cc index 9bd5f3a..920988c 100644 --- a/media/gpu/android/android_video_surface_chooser_impl_unittest.cc +++ b/media/gpu/android/android_video_surface_chooser_impl_unittest.cc
@@ -65,7 +65,7 @@ enum class IsSecure { No, Yes }; enum class IsCCPromotable { No, Yes }; enum class IsExpectingRelayout { No, Yes }; -enum class PromoteAggressively { No, Yes }; +enum class PromoteSecureOnly { No, Yes }; // Since gtest only supports ten args, combine some uncommon ones. enum class MiscFlags { None, Rotated, Persistent }; @@ -81,7 +81,7 @@ IsSecure, IsCCPromotable, IsExpectingRelayout, - PromoteAggressively, + PromoteSecureOnly, MiscFlags>; // Useful macro for instantiating tests. @@ -367,8 +367,6 @@ PowerEffcientOverlayCancelsIfNotPowerEfficient) { // If we request a power efficient overlay that later becomes not power // efficient, then the client should switch to TextureOwner. - - chooser_state_.promote_aggressively = true; MockAndroidOverlay* overlay = StartChooserAndProvideOverlay(); // Verify that this results in a power efficient overlay. If not, then we've @@ -408,7 +406,7 @@ chooser_state_.is_secure = IsYes(IsSecure, 5); chooser_state_.is_compositor_promotable = IsYes(IsCCPromotable, 6); chooser_state_.is_expecting_relayout = IsYes(IsExpectingRelayout, 7); - chooser_state_.promote_aggressively = IsYes(PromoteAggressively, 8); + chooser_state_.promote_secure_only = IsYes(PromoteSecureOnly, 8); chooser_state_.video_rotation = IsEqual(MiscFlags, 9, Rotated) ? VIDEO_ROTATION_90 : VIDEO_ROTATION_0; chooser_state_.is_persistent_video = IsEqual(MiscFlags, 9, Persistent); @@ -436,7 +434,7 @@ } } -// Unless we're promoting aggressively, we should default to TextureOwner. +// We should default to TextureOwner if we only promote secure video. INSTANTIATE_TEST_SUITE_P(NoFullscreenUsesTextureOwner, AndroidVideoSurfaceChooserImplTest, Combine(Values(ShouldUseOverlay::No), @@ -447,7 +445,7 @@ Values(IsSecure::No), Either(IsCCPromotable), Either(IsExpectingRelayout), - Values(PromoteAggressively::No), + Values(PromoteSecureOnly::Yes), AnyMisc)); INSTANTIATE_TEST_SUITE_P(FullscreenUsesOverlay, @@ -460,7 +458,7 @@ Values(IsSecure::No), Values(IsCCPromotable::Yes), Values(IsExpectingRelayout::No), - Either(PromoteAggressively), + Values(PromoteSecureOnly::No), Values(MiscFlags::None))); INSTANTIATE_TEST_SUITE_P(RequiredUsesOverlay, @@ -473,7 +471,7 @@ Either(IsSecure), Either(IsCCPromotable), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::None, MiscFlags::Persistent))); @@ -490,7 +488,7 @@ Values(IsSecure::Yes), Values(IsCCPromotable::Yes), Values(IsExpectingRelayout::No), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::None))); // For all dynamic cases, we shouldn't use an overlay if the compositor won't @@ -508,7 +506,7 @@ Either(IsSecure), Values(IsCCPromotable::No), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Either(PromoteSecureOnly), AnyMisc)); // If we're expecting a relayout, then we should never use an overlay unless @@ -523,7 +521,7 @@ Either(IsSecure), Either(IsCCPromotable), Values(IsExpectingRelayout::Yes), - Either(PromoteAggressively), + Either(PromoteSecureOnly), AnyMisc)); // "is_fullscreen" should be enough to trigger an overlay pre-M. @@ -537,7 +535,7 @@ Either(IsSecure), Either(IsCCPromotable), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Values(PromoteSecureOnly::No), Values(MiscFlags::None, MiscFlags::Persistent))); @@ -552,7 +550,7 @@ Values(IsSecure::Yes), Either(IsCCPromotable), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::None, MiscFlags::Persistent))); @@ -567,11 +565,11 @@ Either(IsSecure), Either(IsCCPromotable), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::None, MiscFlags::Persistent))); -// If we're promoting aggressively, then we should request power efficient. +// Overlay should request power efficient by default. INSTANTIATE_TEST_SUITE_P(AggressiveOverlayIsPowerEfficient, AndroidVideoSurfaceChooserImplTest, Combine(Values(ShouldUseOverlay::Yes), @@ -582,7 +580,7 @@ Values(IsSecure::No), Values(IsCCPromotable::Yes), Values(IsExpectingRelayout::No), - Values(PromoteAggressively::Yes), + Values(PromoteSecureOnly::No), Values(MiscFlags::None))); // Rotated video is unsupported for overlays in all cases. @@ -596,7 +594,7 @@ Either(IsSecure), Either(IsCCPromotable), Either(IsExpectingRelayout), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::Rotated))); // Persistent, non-required video should not use an overlay. @@ -610,7 +608,7 @@ Either(IsSecure), Values(IsCCPromotable::Yes), Values(IsExpectingRelayout::No), - Either(PromoteAggressively), + Either(PromoteSecureOnly), Values(MiscFlags::Persistent))); } // namespace media
diff --git a/media/gpu/android/media_codec_video_decoder.cc b/media/gpu/android/media_codec_video_decoder.cc index 10c7deb0..6d9059e 100644 --- a/media/gpu/android/media_codec_video_decoder.cc +++ b/media/gpu/android/media_codec_video_decoder.cc
@@ -233,7 +233,7 @@ std::move(surface_chooser), base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kForceVideoOverlays), - base::FeatureList::IsEnabled(media::kUseAndroidOverlayAggressively), + base::FeatureList::IsEnabled(media::kUseAndroidOverlayForSecureOnly), is_surface_control_enabled_), video_frame_factory_(std::move(video_frame_factory)), overlay_factory_cb_(std::move(overlay_factory_cb)),
diff --git a/media/gpu/android/surface_chooser_helper.cc b/media/gpu/android/surface_chooser_helper.cc index 36613fd..68dffb7 100644 --- a/media/gpu/android/surface_chooser_helper.cc +++ b/media/gpu/android/surface_chooser_helper.cc
@@ -32,7 +32,7 @@ SurfaceChooserHelper::SurfaceChooserHelper( std::unique_ptr<AndroidVideoSurfaceChooser> surface_chooser, bool is_overlay_required, - bool promote_aggressively, + bool promote_secure_only, bool always_use_texture_owner, std::unique_ptr<PromotionHintAggregator> promotion_hint_aggregator, const base::TickClock* tick_clock) @@ -45,7 +45,7 @@ tick_clock_(tick_clock ? tick_clock : base::DefaultTickClock::GetInstance()) { surface_chooser_state_.is_required = is_overlay_required_; - surface_chooser_state_.promote_aggressively = promote_aggressively; + surface_chooser_state_.promote_secure_only = promote_secure_only; surface_chooser_state_.always_use_texture_owner = always_use_texture_owner; }
diff --git a/media/gpu/android/surface_chooser_helper.h b/media/gpu/android/surface_chooser_helper.h index 7d35e8e2..dafa7db 100644 --- a/media/gpu/android/surface_chooser_helper.h +++ b/media/gpu/android/surface_chooser_helper.h
@@ -28,14 +28,14 @@ // |promotion_hint_aggregator| and |tick_clock| are for tests. Normally, we // create the correct default implementations ourself. // |is_overlay_required| tells us to require overlays(!). - // |promote_aggressively| causes us to use overlays whenever they're power- - // efficient, which lets us catch fullscreen-div cases. + // |promote_secure_only| causes us to use overlays only if required for secure + // video playback. // |always_use_texture_owner| forces us to always use a texture owner, // completely ignoring all other conditions. SurfaceChooserHelper( std::unique_ptr<AndroidVideoSurfaceChooser> surface_chooser, bool is_overlay_required, - bool promote_aggressively, + bool promote_secure_only, bool always_use_texture_owner, std::unique_ptr<PromotionHintAggregator> promotion_hint_aggregator = nullptr,
diff --git a/media/gpu/android/surface_chooser_helper_unittest.cc b/media/gpu/android/surface_chooser_helper_unittest.cc index adb3325..b01f632 100644 --- a/media/gpu/android/surface_chooser_helper_unittest.cc +++ b/media/gpu/android/surface_chooser_helper_unittest.cc
@@ -33,7 +33,7 @@ void TearDown() override {} void ReplaceHelper(bool is_overlay_required, - bool promote_aggressively, + bool promote_secure_only, bool always_use_texture_owner = false) { // Advance the clock so that time 0 isn't recent. tick_clock_.Advance(TimeDelta::FromSeconds(10000)); @@ -45,7 +45,7 @@ std::make_unique<MockPromotionHintAggregator>(); aggregator_ = aggregator.get(); helper_ = std::make_unique<SurfaceChooserHelper>( - std::move(chooser), is_overlay_required, promote_aggressively, + std::move(chooser), is_overlay_required, promote_secure_only, always_use_texture_owner, std::move(aggregator), &tick_clock_); } @@ -152,13 +152,13 @@ ASSERT_TRUE(chooser_->current_state_.is_required); } -TEST_F(SurfaceChooserHelperTest, SetPromoteAggressively) { +TEST_F(SurfaceChooserHelperTest, SetPromoteSecureOnly) { UpdateChooserState(); - ASSERT_FALSE(chooser_->current_state_.promote_aggressively); + ASSERT_FALSE(chooser_->current_state_.promote_secure_only); ReplaceHelper(false, true); UpdateChooserState(); - ASSERT_TRUE(chooser_->current_state_.promote_aggressively); + ASSERT_TRUE(chooser_->current_state_.promote_secure_only); } TEST_F(SurfaceChooserHelperTest, SetAlwaysUseTextureOwner) {
diff --git a/media/media_options.gni b/media/media_options.gni index a0a748a..b9376be 100644 --- a/media/media_options.gni +++ b/media/media_options.gni
@@ -53,11 +53,11 @@ proprietary_codecs && (is_chromecast || is_fuchsia || use_fuzzing_engine) # Enable HEVC/H265 demuxing. Actual decoding must be provided by the - # platform. Enabled by default for Chromecast, Chrome OS protected media and - # fuzzer builds. - enable_platform_hevc = - proprietary_codecs && - (is_chromecast || use_chromeos_protected_media || use_fuzzing_engine) + # platform. Enabled by default for Chromecast, Chrome OS protected media, + # Windows with Chrome branding and fuzzer builds. + enable_platform_hevc = proprietary_codecs && + (is_chromecast || use_chromeos_protected_media || + use_fuzzing_engine || (is_win && is_chrome_branded)) # Enable Dolby Vision demuxing. Enable by default for Chromecast. Actual # decoding must be provided by the platform. Note some Dolby Vision profiles
diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc index 9ac6e87c..1d64dca 100644 --- a/media/test/pipeline_integration_test.cc +++ b/media/test/pipeline_integration_test.cc
@@ -2561,8 +2561,18 @@ TestMediaSource source("bear-320x240-v_frag-hevc.mp4", kMp4HevcVideoOnly, kAppendWholeFile); #if BUILDFLAG(ENABLE_PLATFORM_HEVC) +#if BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) + // On ChromeOS and Windows, HEVC is only supported through EME. + // So this unencrypted track cannot be demuxed. + source.set_expected_append_result( + TestMediaSource::ExpectedAppendResult::kFailure); + EXPECT_EQ( + CHUNK_DEMUXER_ERROR_APPEND_FAILED, + StartPipelineWithMediaSource(&source, kExpectDemuxerFailure, nullptr)); +#else PipelineStatus status = StartPipelineWithMediaSource(&source); EXPECT_TRUE(status == PIPELINE_OK || status == DECODER_ERROR_NOT_SUPPORTED); +#endif // BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) #else EXPECT_EQ( DEMUXER_ERROR_COULD_NOT_OPEN, @@ -2576,8 +2586,18 @@ TestMediaSource source("bear-320x240-v_frag-hevc.mp4", kMp4Hev1VideoOnly, kAppendWholeFile); #if BUILDFLAG(ENABLE_PLATFORM_HEVC) +#if BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) + // On ChromeOS and Windows, HEVC is only supported through EME. + // So this unencrypted track cannot be demuxed. + source.set_expected_append_result( + TestMediaSource::ExpectedAppendResult::kFailure); + EXPECT_EQ( + CHUNK_DEMUXER_ERROR_APPEND_FAILED, + StartPipelineWithMediaSource(&source, kExpectDemuxerFailure, nullptr)); +#else PipelineStatus status = StartPipelineWithMediaSource(&source); EXPECT_TRUE(status == PIPELINE_OK || status == DECODER_ERROR_NOT_SUPPORTED); +#endif // BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN) #else EXPECT_EQ( DEMUXER_ERROR_COULD_NOT_OPEN,
diff --git a/mojo/public/cpp/bindings/lib/binding_state.h b/mojo/public/cpp/bindings/lib/binding_state.h index def412c3..e111ffa 100644 --- a/mojo/public/cpp/bindings/lib/binding_state.h +++ b/mojo/public/cpp/bindings/lib/binding_state.h
@@ -132,9 +132,9 @@ Interface* impl() { return ImplRefTraits::GetRawPointer(&stub_.sink()); } ImplPointerType SwapImplForTesting(ImplPointerType new_impl) { - Interface* old_impl = impl(); - stub_.set_sink(std::move(new_impl)); - return old_impl; + using std::swap; + swap(new_impl, stub_.sink()); + return new_impl; } private:
diff --git a/mojo/public/cpp/bindings/receiver.h b/mojo/public/cpp/bindings/receiver.h index cba81fb..0888f0d 100644 --- a/mojo/public/cpp/bindings/receiver.h +++ b/mojo/public/cpp/bindings/receiver.h
@@ -271,7 +271,7 @@ // Allows test code to swap the interface implementation. ImplPointerType SwapImplForTesting(ImplPointerType new_impl) { - return internal_state_.SwapImplForTesting(new_impl); + return internal_state_.SwapImplForTesting(std::move(new_impl)); } // Reports the currently dispatching message as bad and resets this receiver.
diff --git a/mojo/public/cpp/bindings/receiver_set.h b/mojo/public/cpp/bindings/receiver_set.h index 3121f58b..a6a8d36 100644 --- a/mojo/public/cpp/bindings/receiver_set.h +++ b/mojo/public/cpp/bindings/receiver_set.h
@@ -321,7 +321,7 @@ return nullptr; ReceiverEntry& entry = static_cast<ReceiverEntry&>(it->second->receiver()); - return entry.SwapImplForTesting(new_impl); + return entry.SwapImplForTesting(std::move(new_impl)); } private: @@ -355,7 +355,7 @@ void FlushForTesting() override { receiver_.FlushForTesting(); } ImplPointerType SwapImplForTesting(ImplPointerType new_impl) { - return receiver_.SwapImplForTesting(new_impl); + return receiver_.SwapImplForTesting(std::move(new_impl)); } PendingType Unbind() { return receiver_.Unbind(); }
diff --git a/net/quic/quic_connectivity_monitor.h b/net/quic/quic_connectivity_monitor.h index bc458bf..4d0aabc 100644 --- a/net/quic/quic_connectivity_monitor.h +++ b/net/quic/quic_connectivity_monitor.h
@@ -7,7 +7,6 @@ #include <set> -#include "base/containers/flat_set.h" #include "base/numerics/clamped_math.h" #include "net/base/network_change_notifier.h" #include "net/quic/quic_chromium_client_session.h"
diff --git a/remoting/base/breakpad_win.cc b/remoting/base/breakpad_win.cc index 5725be5..a50048e 100644 --- a/remoting/base/breakpad_win.cc +++ b/remoting/base/breakpad_win.cc
@@ -17,10 +17,10 @@ #include "base/atomicops.h" #include "base/check.h" +#include "base/cxx17_backports.h" #include "base/file_version_info.h" #include "base/lazy_instance.h" #include "base/notreached.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/win/current_module.h"
diff --git a/remoting/base/capabilities_unittest.cc b/remoting/base/capabilities_unittest.cc index f7c3c78..5d804b6 100644 --- a/remoting/base/capabilities_unittest.cc +++ b/remoting/base/capabilities_unittest.cc
@@ -7,7 +7,7 @@ #include <algorithm> #include <vector> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h"
diff --git a/remoting/base/rate_counter_unittest.cc b/remoting/base/rate_counter_unittest.cc index 74efd209..90795063 100644 --- a/remoting/base/rate_counter_unittest.cc +++ b/remoting/base/rate_counter_unittest.cc
@@ -5,7 +5,7 @@ #include <stddef.h> #include <stdint.h> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/test/simple_test_tick_clock.h" #include "remoting/base/rate_counter.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/remoting/base/running_samples_unittest.cc b/remoting/base/running_samples_unittest.cc index a8922648..a156559 100644 --- a/remoting/base/running_samples_unittest.cc +++ b/remoting/base/running_samples_unittest.cc
@@ -5,7 +5,7 @@ #include <stddef.h> #include <stdint.h> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "remoting/base/running_samples.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/remoting/base/weighted_samples_unittest.cc b/remoting/base/weighted_samples_unittest.cc index 9d4cd708..2229367 100644 --- a/remoting/base/weighted_samples_unittest.cc +++ b/remoting/base/weighted_samples_unittest.cc
@@ -4,7 +4,7 @@ #include "remoting/base/weighted_samples.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting {
diff --git a/remoting/client/audio/audio_player_android.cc b/remoting/client/audio/audio_player_android.cc index eac9430..a669326 100644 --- a/remoting/client/audio/audio_player_android.cc +++ b/remoting/client/audio/audio_player_android.cc
@@ -4,8 +4,8 @@ #include "remoting/client/audio/audio_player_android.h" +#include "base/cxx17_backports.h" #include "base/logging.h" -#include "base/stl_util.h" #include "build/build_config.h" namespace remoting {
diff --git a/remoting/client/client_telemetry_logger.cc b/remoting/client/client_telemetry_logger.cc index 9eedad1a..d139f8cc 100644 --- a/remoting/client/client_telemetry_logger.cc +++ b/remoting/client/client_telemetry_logger.cc
@@ -6,10 +6,10 @@ #include <memory> +#include "base/cxx17_backports.h" #include "base/format_macros.h" #include "base/logging.h" #include "base/rand_util.h" -#include "base/stl_util.h" #include "base/strings/stringprintf.h" #include "remoting/base/telemetry_log_writer.h"
diff --git a/remoting/codec/codec_test.cc b/remoting/codec/codec_test.cc index a229bc9..82a0941 100644 --- a/remoting/codec/codec_test.cc +++ b/remoting/codec/codec_test.cc
@@ -12,8 +12,8 @@ #include <utility> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/logging.h" -#include "base/stl_util.h" #include "remoting/base/util.h" #include "remoting/codec/video_decoder.h" #include "remoting/codec/video_encoder.h"
diff --git a/remoting/host/audio_silence_detector_unittest.cc b/remoting/host/audio_silence_detector_unittest.cc index 8086cc5..c898364f 100644 --- a/remoting/host/audio_silence_detector_unittest.cc +++ b/remoting/host/audio_silence_detector_unittest.cc
@@ -6,7 +6,7 @@ #include <stdint.h> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting {
diff --git a/remoting/host/audio_volume_filter_unittest.cc b/remoting/host/audio_volume_filter_unittest.cc index 684e3686..62bf7ba5 100644 --- a/remoting/host/audio_volume_filter_unittest.cc +++ b/remoting/host/audio_volume_filter_unittest.cc
@@ -4,7 +4,7 @@ #include "remoting/host/audio_volume_filter.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting {
diff --git a/remoting/host/daemon_process_win.cc b/remoting/host/daemon_process_win.cc index 9b8d76cb..257ed5a 100644 --- a/remoting/host/daemon_process_win.cc +++ b/remoting/host/daemon_process_win.cc
@@ -13,12 +13,12 @@ #include "base/base_switches.h" #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/logging.h" #include "base/memory/ref_counted.h" #include "base/process/process.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "base/win/registry.h"
diff --git a/remoting/host/desktop_resizer_mac.cc b/remoting/host/desktop_resizer_mac.cc index 0010d119..cac0864 100644 --- a/remoting/host/desktop_resizer_mac.cc +++ b/remoting/host/desktop_resizer_mac.cc
@@ -7,11 +7,11 @@ #include <Carbon/Carbon.h> #include <stdint.h> +#include "base/cxx17_backports.h" #include "base/mac/foundation_util.h" #include "base/mac/mac_util.h" #include "base/mac/scoped_cftyperef.h" #include "base/memory/ptr_util.h" -#include "base/stl_util.h" #include "remoting/base/logging.h" namespace {
diff --git a/remoting/host/desktop_session_win.cc b/remoting/host/desktop_session_win.cc index 1749555..e1180f3 100644 --- a/remoting/host/desktop_session_win.cc +++ b/remoting/host/desktop_session_win.cc
@@ -14,13 +14,13 @@ #include "base/base_switches.h" #include "base/command_line.h" +#include "base/cxx17_backports.h" #include "base/files/file_path.h" #include "base/guid.h" #include "base/logging.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/numerics/ranges.h" -#include "base/stl_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_checker.h"
diff --git a/remoting/host/disconnect_window_win.cc b/remoting/host/disconnect_window_win.cc index 68369c2..3ea3714 100644 --- a/remoting/host/disconnect_window_win.cc +++ b/remoting/host/disconnect_window_win.cc
@@ -10,10 +10,10 @@ #include "base/bind.h" #include "base/compiler_specific.h" +#include "base/cxx17_backports.h" #include "base/location.h" #include "base/logging.h" #include "base/memory/weak_ptr.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h"
diff --git a/remoting/host/host_attributes.cc b/remoting/host/host_attributes.cc index 3c48997..9bd6cff6 100644 --- a/remoting/host/host_attributes.cc +++ b/remoting/host/host_attributes.cc
@@ -10,7 +10,7 @@ #include "base/atomicops.h" #include "base/check_op.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "build/branding_buildflags.h"
diff --git a/remoting/host/it2me/it2me_native_messaging_host_allowed_origins.cc b/remoting/host/it2me/it2me_native_messaging_host_allowed_origins.cc index aa33552f8..f68295e3 100644 --- a/remoting/host/it2me/it2me_native_messaging_host_allowed_origins.cc +++ b/remoting/host/it2me/it2me_native_messaging_host_allowed_origins.cc
@@ -4,7 +4,7 @@ #include "remoting/host/it2me/it2me_native_messaging_host_allowed_origins.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" namespace remoting {
diff --git a/remoting/host/keyboard_layout_monitor_win.cc b/remoting/host/keyboard_layout_monitor_win.cc index e3831ee3..eca0c82 100644 --- a/remoting/host/keyboard_layout_monitor_win.cc +++ b/remoting/host/keyboard_layout_monitor_win.cc
@@ -14,11 +14,11 @@ #include "base/bind.h" #include "base/callback.h" #include "base/compiler_specific.h" +#include "base/cxx17_backports.h" #include "base/memory/ptr_util.h" #include "base/memory/weak_ptr.h" #include "base/no_destructor.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" #include "base/threading/sequenced_task_runner_handle.h"
diff --git a/remoting/host/linux/remoting_user_session.cc b/remoting/host/linux/remoting_user_session.cc index 6e4b58a..e62fdc0 100644 --- a/remoting/host/linux/remoting_user_session.cc +++ b/remoting/host/linux/remoting_user_session.cc
@@ -39,12 +39,12 @@ #include <utility> #include <vector> +#include "base/cxx17_backports.h" #include "base/environment.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/logging.h" #include "base/process/launch.h" -#include "base/stl_util.h" #include "base/strings/strcat.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h"
diff --git a/remoting/host/linux/unicode_to_keysym.cc b/remoting/host/linux/unicode_to_keysym.cc index 3d3ccad..40624ef0 100644 --- a/remoting/host/linux/unicode_to_keysym.cc +++ b/remoting/host/linux/unicode_to_keysym.cc
@@ -6,7 +6,7 @@ #include <algorithm> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "ui/gfx/x/keysyms/keysyms.h" namespace remoting {
diff --git a/remoting/host/linux/unicode_to_keysym_unittest.cc b/remoting/host/linux/unicode_to_keysym_unittest.cc index 86d8ed7a..01e2a79 100644 --- a/remoting/host/linux/unicode_to_keysym_unittest.cc +++ b/remoting/host/linux/unicode_to_keysym_unittest.cc
@@ -9,7 +9,7 @@ #include <algorithm> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting {
diff --git a/remoting/host/linux/x_server_clipboard.cc b/remoting/host/linux/x_server_clipboard.cc index ca7dfbd0..1542da6 100644 --- a/remoting/host/linux/x_server_clipboard.cc +++ b/remoting/host/linux/x_server_clipboard.cc
@@ -7,9 +7,9 @@ #include <limits> #include "base/callback.h" +#include "base/cxx17_backports.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" -#include "base/stl_util.h" #include "remoting/base/constants.h" #include "remoting/base/logging.h" #include "remoting/base/util.h"
diff --git a/remoting/host/security_key/security_key_socket.cc b/remoting/host/security_key/security_key_socket.cc index 715d277..aa14bdb 100644 --- a/remoting/host/security_key/security_key_socket.cc +++ b/remoting/host/security_key/security_key_socket.cc
@@ -8,7 +8,7 @@ #include <utility> #include "base/bind.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/timer/timer.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h"
diff --git a/remoting/host/setup/daemon_controller_delegate_win.cc b/remoting/host/setup/daemon_controller_delegate_win.cc index 2685638c..0936ed7 100644 --- a/remoting/host/setup/daemon_controller_delegate_win.cc +++ b/remoting/host/setup/daemon_controller_delegate_win.cc
@@ -6,13 +6,13 @@ #include <stddef.h> +#include "base/cxx17_backports.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/logging.h" #include "base/memory/ptr_util.h" -#include "base/stl_util.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h" #include "base/win/scoped_bstr.h"
diff --git a/remoting/host/setup/me2me_native_messaging_host_unittest.cc b/remoting/host/setup/me2me_native_messaging_host_unittest.cc index b6de44e..27be4a5 100644 --- a/remoting/host/setup/me2me_native_messaging_host_unittest.cc +++ b/remoting/host/setup/me2me_native_messaging_host_unittest.cc
@@ -13,11 +13,11 @@ #include "base/bind.h" #include "base/compiler_specific.h" +#include "base/cxx17_backports.h" #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" -#include "base/stl_util.h" #include "base/strings/stringize_macros.h" #include "base/test/task_environment.h" #include "base/values.h"
diff --git a/remoting/host/win/rdp_client_window.cc b/remoting/host/win/rdp_client_window.cc index b4d3959..f46ac0d 100644 --- a/remoting/host/win/rdp_client_window.cc +++ b/remoting/host/win/rdp_client_window.cc
@@ -10,10 +10,10 @@ #include <string> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/lazy_instance.h" #include "base/location.h" #include "base/logging.h" -#include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_local.h" #include "base/win/scoped_bstr.h"
diff --git a/remoting/protocol/audio_pump_unittest.cc b/remoting/protocol/audio_pump_unittest.cc index 517277a..9ab4514 100644 --- a/remoting/protocol/audio_pump_unittest.cc +++ b/remoting/protocol/audio_pump_unittest.cc
@@ -10,9 +10,9 @@ #include <utility> #include <vector> +#include "base/cxx17_backports.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" -#include "base/stl_util.h" #include "base/test/task_environment.h" #include "remoting/codec/audio_encoder.h" #include "remoting/proto/audio.pb.h"
diff --git a/remoting/protocol/capture_scheduler_unittest.cc b/remoting/protocol/capture_scheduler_unittest.cc index 215852d..a5508466 100644 --- a/remoting/protocol/capture_scheduler_unittest.cc +++ b/remoting/protocol/capture_scheduler_unittest.cc
@@ -10,8 +10,8 @@ #include <utility> #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/memory/ptr_util.h" -#include "base/stl_util.h" #include "base/test/simple_test_tick_clock.h" #include "base/test/task_environment.h" #include "base/timer/mock_timer.h"
diff --git a/remoting/protocol/jingle_messages_unittest.cc b/remoting/protocol/jingle_messages_unittest.cc index 181786b6..5190d6bd 100644 --- a/remoting/protocol/jingle_messages_unittest.cc +++ b/remoting/protocol/jingle_messages_unittest.cc
@@ -6,7 +6,7 @@ #include <stddef.h> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/string_util.h" #include "remoting/protocol/content_description.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/remoting/protocol/message_decoder_unittest.cc b/remoting/protocol/message_decoder_unittest.cc index ef8417a..c9049b0 100644 --- a/remoting/protocol/message_decoder_unittest.cc +++ b/remoting/protocol/message_decoder_unittest.cc
@@ -10,7 +10,7 @@ #include <memory> #include <string> -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "base/strings/string_number_conversions.h" #include "remoting/proto/event.pb.h" #include "remoting/proto/internal.pb.h"
diff --git a/remoting/protocol/mouse_input_filter_unittest.cc b/remoting/protocol/mouse_input_filter_unittest.cc index 93a24d5..5789b05a 100644 --- a/remoting/protocol/mouse_input_filter_unittest.cc +++ b/remoting/protocol/mouse_input_filter_unittest.cc
@@ -4,7 +4,7 @@ #include "remoting/protocol/mouse_input_filter.h" -#include "base/stl_util.h" +#include "base/cxx17_backports.h" #include "remoting/proto/event.pb.h" #include "remoting/protocol/protocol_mock_objects.h" #include "remoting/protocol/test_event_matchers.h"
diff --git a/remoting/protocol/pairing_registry.cc b/remoting/protocol/pairing_registry.cc index 18df533..1a460c31 100644 --- a/remoting/protocol/pairing_registry.cc +++ b/remoting/protocol/pairing_registry.cc
@@ -10,12 +10,12 @@ #include "base/base64.h" #include "base/bind.h" +#include "base/cxx17_backports.h" #include "base/guid.h" #include "base/json/json_string_value_serializer.h" #include "base/location.h" #include "base/logging.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h"
diff --git a/remoting/protocol/webrtc_video_track_source.cc b/remoting/protocol/webrtc_video_track_source.cc index 588bb62..071543f 100644 --- a/remoting/protocol/webrtc_video_track_source.cc +++ b/remoting/protocol/webrtc_video_track_source.cc
@@ -4,11 +4,7 @@ #include "remoting/protocol/webrtc_video_track_source.h" -#include <utility> - -#include "base/logging.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "remoting/protocol/webrtc_video_frame_adapter.h" namespace remoting { namespace protocol { @@ -44,26 +40,11 @@ void WebrtcVideoTrackSource::AddOrUpdateSink( rtc::VideoSinkInterface<webrtc::VideoFrame>* sink, const rtc::VideoSinkWants& wants) { - DCHECK(sink); - if (sink_ && (sink != sink_)) { - // The same sink can be added more than once, but there should only be 1 - // in total. - LOG(WARNING) << "More than one sink added, only the latest will be used."; - } - sink_ = sink; main_task_runner_->PostTask(FROM_HERE, add_sink_callback_); } void WebrtcVideoTrackSource::RemoveSink( - rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) { - DCHECK(sink); - if (sink != sink_) { - // This might happen if more than one sink was added. - LOG(WARNING) << "RemoveSink() called with unexpected sink."; - return; - } - sink_ = nullptr; -} + rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) {} bool WebrtcVideoTrackSource::SupportsEncodedOutput() const { return false; @@ -77,18 +58,5 @@ void WebrtcVideoTrackSource::RemoveEncodedSink( rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) {} -void WebrtcVideoTrackSource::SendCapturedFrame( - std::unique_ptr<webrtc::DesktopFrame> desktop_frame, - std::unique_ptr<WebrtcVideoEncoder::FrameStats> frame_stats) { - if (!sink_) { - LOG(WARNING) << "No sink registered, dropping frame."; - return; - } - - webrtc::VideoFrame video_frame = WebrtcVideoFrameAdapter::CreateVideoFrame( - std::move(desktop_frame), std::move(frame_stats)); - sink_->OnFrame(video_frame); -} - } // namespace protocol } // namespace remoting
diff --git a/remoting/protocol/webrtc_video_track_source.h b/remoting/protocol/webrtc_video_track_source.h index e54e44b..11b248f5 100644 --- a/remoting/protocol/webrtc_video_track_source.h +++ b/remoting/protocol/webrtc_video_track_source.h
@@ -7,12 +7,8 @@ #include "base/callback.h" #include "base/sequenced_task_runner.h" -#include "remoting/codec/webrtc_video_encoder.h" #include "third_party/webrtc/api/media_stream_interface.h" #include "third_party/webrtc/api/notifier.h" -#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" - -#include <memory> namespace remoting { namespace protocol { @@ -43,15 +39,7 @@ void RemoveEncodedSink( rtc::VideoSinkInterface<webrtc::RecordableEncodedFrame>* sink) override; - // Sends a captured frame to the sink if one was added. The |frame_stats| - // will be associated with the frame and will be attached to the output - // EncodedFrame. - void SendCapturedFrame( - std::unique_ptr<webrtc::DesktopFrame> desktop_frame, - std::unique_ptr<WebrtcVideoEncoder::FrameStats> frame_stats); - private: - rtc::VideoSinkInterface<webrtc::VideoFrame>* sink_ = nullptr; base::RepeatingClosure add_sink_callback_; scoped_refptr<base::SequencedTaskRunner> main_task_runner_; };
diff --git a/remoting/protocol/webrtc_video_track_source_unittest.cc b/remoting/protocol/webrtc_video_track_source_unittest.cc index 70dd343..122fd329 100644 --- a/remoting/protocol/webrtc_video_track_source_unittest.cc +++ b/remoting/protocol/webrtc_video_track_source_unittest.cc
@@ -4,37 +4,14 @@ #include "remoting/protocol/webrtc_video_track_source.h" -#include <memory> -#include <utility> - -#include "base/callback_helpers.h" #include "base/test/bind.h" #include "base/test/task_environment.h" -#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" -#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" #include "third_party/webrtc/rtc_base/ref_counted_object.h" -using testing::Property; -using webrtc::BasicDesktopFrame; -using webrtc::DesktopSize; -using webrtc::VideoFrame; - namespace remoting { namespace protocol { -namespace { - -class MockVideoSink : public rtc::VideoSinkInterface<VideoFrame> { - public: - ~MockVideoSink() override = default; - - MOCK_METHOD(void, OnFrame, (const VideoFrame& frame), (override)); -}; - -} // namespace - class WebrtcVideoTrackSourceTest : public testing::Test { public: WebrtcVideoTrackSourceTest() = default; @@ -42,27 +19,13 @@ protected: base::test::SingleThreadTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; - - MockVideoSink video_sink_; }; TEST_F(WebrtcVideoTrackSourceTest, AddSinkTriggersCallback) { rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source = new rtc::RefCountedObject<WebrtcVideoTrackSource>( base::MakeExpectedRunAtLeastOnceClosure(FROM_HERE)); - source->AddOrUpdateSink(&video_sink_, rtc::VideoSinkWants()); - - task_environment_.FastForwardUntilNoTasksRemain(); -} - -TEST_F(WebrtcVideoTrackSourceTest, CapturedFrameSentToAddedSink) { - auto frame = std::make_unique<BasicDesktopFrame>(DesktopSize(123, 234)); - EXPECT_CALL(video_sink_, OnFrame(Property(&VideoFrame::width, 123))); - - rtc::scoped_refptr<WebrtcVideoTrackSource> source = - new rtc::RefCountedObject<WebrtcVideoTrackSource>(base::DoNothing()); - source->AddOrUpdateSink(&video_sink_, rtc::VideoSinkWants()); - source->SendCapturedFrame(std::move(frame), nullptr); + source->AddOrUpdateSink(nullptr, rtc::VideoSinkWants()); task_environment_.FastForwardUntilNoTasksRemain(); }
diff --git a/remoting/resources/remoting_strings_ne.xtb b/remoting/resources/remoting_strings_ne.xtb index 79eb31e6da..7d446433 100644 --- a/remoting/resources/remoting_strings_ne.xtb +++ b/remoting/resources/remoting_strings_ne.xtb
@@ -93,7 +93,7 @@ <translation id="5204575267916639804">प्राय: जसो सोधिने प्रश्नहरू</translation> <translation id="5222676887888702881">साइन आउट गर्नुहोस्</translation> <translation id="5234764350956374838">खारेज गर्नुहोस्</translation> -<translation id="5308380583665731573">जडान गर्नुहोस्</translation> +<translation id="5308380583665731573">कनेक्ट गर्नुहोस्</translation> <translation id="5327248766486351172">नाम</translation> <translation id="533625276787323658">जडान गर्नका लागि केही पनि उपलब्ध छैन</translation> <translation id="5397086374758643919">Chrome रिमोट डेस्कटप होस्ट अनस्टलर</translation> @@ -103,7 +103,7 @@ <translation id="5690427481109656848">Google LLC</translation> <translation id="5708869785009007625">तपाईंको डेस्कटप अहिले <ph name="USER" /> सँग साझा गरिएको छ ।</translation> <translation id="5750083143895808682"><ph name="EMAIL_ADDRESS" /> का रूपमा साइन इन गरियो।</translation> -<translation id="579702532610384533">पुन: जडान गर्नुहोस्</translation> +<translation id="579702532610384533">पुन: कनेक्ट गर्नुहोस्</translation> <translation id="5810269635982033450">स्क्रिनले ट्र्याकप्याडको काम गर्छ</translation> <translation id="5823658491130719298">तपाईंले दूरवर्ती रूपमा पहुँच राख्न चाहनुभएको कम्प्युटरमा Chrome खोलेर <ph name="INSTALLATION_LINK" /> मा जानुहोस्</translation> <translation id="5841343754884244200">विकल्पहरू देखाउनुहोस्</translation>
diff --git a/services/audio/output_controller.h b/services/audio/output_controller.h index c9eab2e6..9da59e49 100644 --- a/services/audio/output_controller.h +++ b/services/audio/output_controller.h
@@ -14,7 +14,6 @@ #include "base/atomic_ref_count.h" #include "base/callback.h" #include "base/compiler_specific.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_piece.h"
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h index 0efe2e3..c7b2040 100644 --- a/services/network/cors/preflight_controller.h +++ b/services/network/cors/preflight_controller.h
@@ -10,7 +10,6 @@ #include "base/callback.h" #include "base/component_export.h" -#include "base/containers/flat_set.h" #include "base/containers/unique_ptr_adapters.h" #include "base/macros.h" #include "base/types/strong_alias.h"
diff --git a/services/network/ignore_errors_cert_verifier.h b/services/network/ignore_errors_cert_verifier.h index 0c7f532..0f675fc 100644 --- a/services/network/ignore_errors_cert_verifier.h +++ b/services/network/ignore_errors_cert_verifier.h
@@ -11,7 +11,6 @@ #include "base/command_line.h" #include "base/component_export.h" -#include "base/containers/flat_set.h" #include "net/base/completion_once_callback.h" #include "net/cert/cert_verifier.h" #include "services/network/public/cpp/spki_hash_set.h"
diff --git a/services/network/public/cpp/cors/cors.h b/services/network/public/cpp/cors/cors.h index 57e1a14..6e314b08 100644 --- a/services/network/public/cpp/cors/cors.h +++ b/services/network/public/cpp/cors/cors.h
@@ -9,7 +9,6 @@ #include <vector> #include "base/component_export.h" -#include "base/containers/flat_set.h" #include "net/http/http_request_headers.h" #include "services/network/public/cpp/cors/cors_error_status.h" #include "services/network/public/mojom/cors.mojom-shared.h"
diff --git a/skia/BUILD.gn b/skia/BUILD.gn index dcefed0..6a66a75 100644 --- a/skia/BUILD.gn +++ b/skia/BUILD.gn
@@ -28,7 +28,7 @@ skia_support_skottie = true declare_args() { - enable_skia_wuffs_gif = true + enable_skia_wuffs_gif = false } # Generate a buildflag header for compile-time checking of Dawn support.
diff --git a/storage/browser/quota/quota_manager_impl.h b/storage/browser/quota/quota_manager_impl.h index fe0df2c9..77eac6d 100644 --- a/storage/browser/quota/quota_manager_impl.h +++ b/storage/browser/quota/quota_manager_impl.h
@@ -19,7 +19,6 @@ #include "base/callback.h" #include "base/component_export.h" #include "base/containers/contains.h" -#include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/macros.h" #include "base/memory/ref_counted.h"
diff --git a/storage/browser/test/mock_quota_manager.h b/storage/browser/test/mock_quota_manager.h index 93779863..6f6de3d 100644 --- a/storage/browser/test/mock_quota_manager.h +++ b/storage/browser/test/mock_quota_manager.h
@@ -13,7 +13,6 @@ #include <utility> #include <vector> -#include "base/containers/flat_set.h" #include "base/macros.h" #include "storage/browser/quota/quota_client.h" #include "storage/browser/quota/quota_client_type.h"
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index bd69eb1..f3a8995 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -487,30 +487,6 @@ ] } ], - "AndroidInProductHelpToolbarButtons": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "NewTabPageButtonIphConfig", - "params": { - "availability": ">=1", - "cohortFeatureName": "ToolbarIphAndroidCohort2", - "event_trigger": "name:ntp_iph_triggered;comparator:==0;window:90;storage:90", - "event_used": "name:homepage_button_clicked;comparator:==0;window:14;storage:90", - "session_rate": "<1" - }, - "enable_features": [ - "IPH_NewTabPageHomeButton", - "ToolbarIphAndroid", - "ToolbarIphAndroidCohort2" - ] - } - ] - } - ], "AndroidInProductHelpToolbarButtons_TabSwitcher": [ { "platforms": [ @@ -527,8 +503,7 @@ "session_rate": "<1" }, "enable_features": [ - "IPH_TabSwitcherButton", - "ToolbarIphAndroidCohort1" + "IPH_TabSwitcherButton" ] } ] @@ -552,6 +527,24 @@ ] } ], + "AndroidMediaPickerVideoSupport": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "animate_thumbnails": "false" + }, + "enable_features": [ + "PhotoPickerVideoSupport" + ] + } + ] + } + ], "AndroidMediaProcessPriority": [ { "platforms": [ @@ -969,21 +962,6 @@ ] } ], - "AutofillDownstreamCvcPromptUseGooglePayLogo": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "AutofillDownstreamCvcPromptUseGooglePayLogo", - "enable_features": [ - "AutofillDownstreamCvcPromptUseGooglePayLogo" - ] - } - ] - } - ], "AutofillEnableAugmentedPhoneCountryCode": [ { "platforms": [ @@ -4109,25 +4087,6 @@ ] } ], - "IOSStartSurface": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "ShrinkLogo", - "params": { - "ReturnToStartSurfaceInactiveDurationInSeconds": "0", - "shrink_logo": "true" - }, - "enable_features": [ - "StartSurface" - ] - } - ] - } - ], "IOSUMABackgroundSessions": [ { "platforms": [ @@ -5878,21 +5837,6 @@ ] } ], - "PasswordEditingInSettingsIOS": [ - { - "platforms": [ - "ios" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "EditPasswordsInSettings" - ] - } - ] - } - ], "PaymentRequestAlwaysAllowJustInTimePaymentApp": [ { "platforms": [ @@ -6928,24 +6872,6 @@ ] } ], - "SafetyCheckWeakPasswords": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "SafetyCheckWeakPasswords" - ] - } - ] - } - ], "ScrollResamplingRollout": [ { "platforms": [ @@ -8224,6 +8150,23 @@ ] } ], + "V8WasmMemoryProtection": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux" + ], + "experiments": [ + { + "name": "EnabledPku", + "enable_features": [ + "WebAssemblyCodeProtectionPku" + ] + } + ] + } + ], "V8WasmTrapHandlerMacOSArm64": [ { "platforms": [
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy index 7fa271ca..e930aa9 100644 --- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy +++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -405,6 +405,13 @@ sb.append(' # https://crbug.com/989505\n') sb.append(' jar_excluded_patterns = ["META-INF/proguard/*"]\n') break + case 'androidx_annotation_annotation_experimental': + sb.append("""\ + | # https://crbug.com/1213876 + | deps = + | [ "//third_party/android_deps:org_jetbrains_kotlin_kotlin_stdlib_common_java" ] + |""".stripMargin()) + break case 'androidx_core_core': sb.append('\n') sb.append(' # Target has AIDL, but we do not support it yet: http://crbug.com/644439\n')
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl index ea5c928a..0552a3c9 100644 --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -509,6 +509,7 @@ ExcludeSameSiteNoneInsecure ExcludeSameSiteLax ExcludeSameSiteStrict + ExcludeInvalidSameParty type SameSiteCookieWarningReason extends string enum @@ -531,7 +532,12 @@ # information without the cookie. type SameSiteCookieIssueDetails extends object properties - AffectedCookie cookie + # If AffectedCookie is not set then rawCookieLine contains the raw + # Set-Cookie header string. This hints at a problem where the + # cookie line is syntactically or semantically malformed in a way + # that no valid cookie could be created. + optional AffectedCookie cookie + optional string rawCookieLine array of SameSiteCookieWarningReason cookieWarningReasons array of SameSiteCookieExclusionReason cookieExclusionReasons # Optionally identifies the site-for-cookies and the cookie url, which
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index b07a5850..854b08a7 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -54,6 +54,7 @@ "css/preferred_contrast.mojom", "data_transfer/data_transfer.mojom", "device/device.mojom", + "device_posture/device_posture.mojom", "devtools/console_message.mojom", "devtools/devtools_agent.mojom", "devtools/devtools_frontend.mojom",
diff --git a/third_party/blink/public/mojom/device_posture/DIR_METADATA b/third_party/blink/public/mojom/device_posture/DIR_METADATA new file mode 100644 index 0000000..7db743ccc --- /dev/null +++ b/third_party/blink/public/mojom/device_posture/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>FoldableAPIs" +}
diff --git a/third_party/blink/public/mojom/device_posture/OWNERS b/third_party/blink/public/mojom/device_posture/OWNERS new file mode 100644 index 0000000..08850f4 --- /dev/null +++ b/third_party/blink/public/mojom/device_posture/OWNERS
@@ -0,0 +1,2 @@ +per-file *.mojom=set noparent +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/device_posture/device_posture.mojom b/third_party/blink/public/mojom/device_posture/device_posture.mojom new file mode 100644 index 0000000..5ba09d6 --- /dev/null +++ b/third_party/blink/public/mojom/device_posture/device_posture.mojom
@@ -0,0 +1,15 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module blink.mojom; + +// An enum representing the posture of device, or an no type fold state. +enum DevicePostureType { + kNoFold, + kLaptop, + kFlat, + kTent, + kTablet, + kBook, +};
diff --git a/third_party/blink/public/mojom/prerender/prerender.mojom b/third_party/blink/public/mojom/prerender/prerender.mojom index d4a2268d..125562e 100644 --- a/third_party/blink/public/mojom/prerender/prerender.mojom +++ b/third_party/blink/public/mojom/prerender/prerender.mojom
@@ -14,6 +14,9 @@ // https://html.spec.whatwg.org/C/#link-type-next kLinkRelNext, + + // https://jeremyroman.github.io/alternate-loading-modes/#speculation-rules + kSpeculationRule, }; struct PrerenderAttributes {
diff --git a/third_party/blink/public/platform/modules/webrtc/DEPS b/third_party/blink/public/platform/modules/webrtc/DEPS index 4ca2134..69ac5a7 100644 --- a/third_party/blink/public/platform/modules/webrtc/DEPS +++ b/third_party/blink/public/platform/modules/webrtc/DEPS
@@ -1,3 +1,4 @@ include_rules = [ + "+base/compiler_specific.h", "+media/base", ]
diff --git a/third_party/blink/public/platform/modules/webrtc/webrtc_logging.h b/third_party/blink/public/platform/modules/webrtc/webrtc_logging.h index 9f4c162..f57f11e5 100644 --- a/third_party/blink/public/platform/modules/webrtc/webrtc_logging.h +++ b/third_party/blink/public/platform/modules/webrtc/webrtc_logging.h
@@ -5,8 +5,11 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_WEBRTC_WEBRTC_LOGGING_H_ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_WEBRTC_WEBRTC_LOGGING_H_ +#include <stdarg.h> + #include <string> +#include "base/compiler_specific.h" #include "third_party/blink/public/platform/web_common.h" namespace blink { @@ -35,10 +38,30 @@ // Otherwise it will be ignored. Note that this log may be uploaded to a // server by the embedder - no sensitive information should be logged. May be // called on any thread. -// TODO(grunell): Create a macro for adding log messages. Messages should -// probably also go to the ordinary logging stream. void BLINK_PLATFORM_EXPORT WebRtcLogMessage(const std::string& message); +// Helper methods which wraps calls to WebRtcLogMessage() using different +// printf-like inputs allowing the user to create log messages with a similar +// syntax as for printf format specifiers. These mathods use different versions +// of base::StringPrintf() internally and can also prepend the logged string +// with a |prefix| string and/or append a formated this pointer in |thiz|. + +// Example: WebRtcLog("%s({foo=%d})", "Foo", 10) <=> +// WebRtcLogMessage("Foo({foo=10})") +void BLINK_PLATFORM_EXPORT WebRtcLog(const char* format, ...) + PRINTF_FORMAT(1, 2); + +// Example: WebRtcLog(this, "%s({foo=%d})", "Foo", 10) <=> +// WebRtcLogMessage("Foo({foo=10}) [this=0x24514CB47A0]") +void BLINK_PLATFORM_EXPORT WebRtcLog(void* thiz, const char* format, ...) + PRINTF_FORMAT(2, 3); + +// Example: WebRtcLog("RTC::", this, "%s({foo=%d})", "Foo", 10) <=> +// WebRtcLogMessage("RTC::Foo({foo=10}) [this=0x24514CB47A0]") +void BLINK_PLATFORM_EXPORT WebRtcLog(const char* prefix, + void* thiz, + const char* format, + ...) PRINTF_FORMAT(3, 4); } // namespace blink #endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_WEBRTC_WEBRTC_LOGGING_H_
diff --git a/third_party/blink/public/web/web_ax_object.h b/third_party/blink/public/web/web_ax_object.h index 1e5b15d..2d67981 100644 --- a/third_party/blink/public/web/web_ax_object.h +++ b/third_party/blink/public/web/web_ax_object.h
@@ -133,7 +133,6 @@ BLINK_EXPORT void Serialize(ui::AXNodeData* node_data, ui::AXMode accessibility_mode) const; - BLINK_EXPORT bool IsAnchor() const; BLINK_EXPORT ax::mojom::CheckedState CheckedState() const; BLINK_EXPORT bool IsCheckable() const; BLINK_EXPORT bool IsClickable() const;
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index d4eb9fff..48fe3a99 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -1507,6 +1507,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_device_motion_event_rotation_rate.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_device_orientation_event.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_device_orientation_event.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_device_posture.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_device_posture.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_digital_goods_service.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_digital_goods_service.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_directory_entry.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index d5e757a..8265143 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -203,6 +203,8 @@ "//third_party/blink/renderer/modules/device_orientation/device_orientation_event_init.idl", "//third_party/blink/renderer/modules/device_orientation/window_device_motion.idl", "//third_party/blink/renderer/modules/device_orientation/window_device_orientation.idl", + "//third_party/blink/renderer/modules/device_posture/device_posture.idl", + "//third_party/blink/renderer/modules/device_posture/navigator_device_posture.idl", "//third_party/blink/renderer/modules/donottrack/navigator_do_not_track.idl", "//third_party/blink/renderer/modules/encoding/text_decode_options.idl", "//third_party/blink/renderer/modules/encoding/text_decoder.idl",
diff --git a/third_party/blink/renderer/core/css/css_style_sheet.cc b/third_party/blink/renderer/core/css/css_style_sheet.cc index ed2308f3..92739eb0 100644 --- a/third_party/blink/renderer/core/css/css_style_sheet.cc +++ b/third_party/blink/renderer/core/css/css_style_sheet.cc
@@ -143,10 +143,13 @@ owner_node_document, owner_node_document.BaseURL(), true /* origin_clean */, Referrer( - owner_node_document.GetExecutionContext() - ? owner_node_document.GetExecutionContext()->OutgoingReferrer() - : String(), // GetExecutionContext() only returns null in tests. - owner_node.GetDocument().GetReferrerPolicy()), + // Fetch requests from an inline CSS use the referrer of the owner + // document. `Referrer::ClientReferrerString()` for a fetch request + // just means "use the default referrer", which will be computed from + // the client (in this case, the owner document's ExecutionContext) + // when fetching. + Referrer::ClientReferrerString(), + network::mojom::ReferrerPolicy::kDefault), encoding); if (AdTracker::IsAdScriptExecutingInDocument(&owner_node.GetDocument())) parser_context->SetIsAdRelated();
diff --git a/third_party/blink/renderer/core/css/css_value_list.cc b/third_party/blink/renderer/core/css/css_value_list.cc index fb8bf147..0dcdf6ef 100644 --- a/third_party/blink/renderer/core/css/css_value_list.cc +++ b/third_party/blink/renderer/core/css/css_value_list.cc
@@ -106,7 +106,11 @@ for (unsigned i = 0; i < size; i++) { if (!result.IsEmpty()) result.Append(separator); - result.Append(values_[i]->CssText()); + // TODO(crbug.com/1213338): value_[i] can be null by CSSMathExpressionNode + // which is implemented by css-values-3. Until fully implement the + // css-values-4 features, we should append empty string to remove + // null-pointer exception. + result.Append(values_[i] ? values_[i]->CssText() : " "); } return result.ToString();
diff --git a/third_party/blink/renderer/core/css/resolver/element_style_resources.cc b/third_party/blink/renderer/core/css/resolver/element_style_resources.cc index 0d3f6176..fb1f9b4 100644 --- a/third_party/blink/renderer/core/css/resolver/element_style_resources.cc +++ b/third_party/blink/renderer/core/css/resolver/element_style_resources.cc
@@ -49,6 +49,7 @@ #include "third_party/blink/renderer/core/svg/svg_resource.h" #include "third_party/blink/renderer/core/svg/svg_tree_scope_resources.h" #include "third_party/blink/renderer/platform/geometry/length.h" +#include "third_party/blink/renderer/platform/loader/fetch/cross_origin_attribute_value.h" #include "third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h" @@ -168,37 +169,6 @@ background_layer.PositionY().IsFixed(); } -StyleImage* ElementStyleResources::LoadPendingImage( - ComputedStyle& style, - CSSValue& value, - FetchParameters::ImageRequestBehavior image_request_behavior, - CrossOriginAttributeValue cross_origin) { - if (auto* image_value = DynamicTo<CSSImageValue>(value)) { - return image_value->CacheImage(element_.GetDocument(), - image_request_behavior, cross_origin); - } - - if (auto* paint_value = DynamicTo<CSSPaintValue>(value)) { - auto* image = MakeGarbageCollected<StyleGeneratedImage>(*paint_value); - style.AddPaintImage(image); - return image; - } - - if (auto* image_generator_value = DynamicTo<CSSImageGeneratorValue>(value)) { - image_generator_value->LoadSubimages(element_.GetDocument()); - return MakeGarbageCollected<StyleGeneratedImage>(*image_generator_value); - } - - if (auto* image_set_value = DynamicTo<CSSImageSetValue>(value)) { - return image_set_value->CacheImage(element_.GetDocument(), - device_scale_factor_, - image_request_behavior, cross_origin); - } - - NOTREACHED(); - return nullptr; -} - static CSSValue* PendingCssValue(StyleImage* style_image) { if (auto* pending_image = DynamicTo<StylePendingImage>(style_image)) return pending_image->CssValue(); @@ -224,6 +194,39 @@ // used. If we didn't null check below we'd crash since the none actually // removed all background images. + auto LoadPendingImage = + [&](ComputedStyle& style, CSSValue& value, + FetchParameters::ImageRequestBehavior image_request_behavior = + FetchParameters::kNone, + CrossOriginAttributeValue cross_origin = + kCrossOriginAttributeNotSet) -> StyleImage* { + if (auto* image_value = DynamicTo<CSSImageValue>(value)) { + return image_value->CacheImage(element_.GetDocument(), + image_request_behavior, cross_origin); + } + + if (auto* paint_value = DynamicTo<CSSPaintValue>(value)) { + auto* image = MakeGarbageCollected<StyleGeneratedImage>(*paint_value); + style.AddPaintImage(image); + return image; + } + + if (auto* image_generator_value = + DynamicTo<CSSImageGeneratorValue>(value)) { + image_generator_value->LoadSubimages(element_.GetDocument()); + return MakeGarbageCollected<StyleGeneratedImage>(*image_generator_value); + } + + if (auto* image_set_value = DynamicTo<CSSImageSetValue>(value)) { + return image_set_value->CacheImage(element_.GetDocument(), + device_scale_factor_, + image_request_behavior, cross_origin); + } + + NOTREACHED(); + return nullptr; + }; + for (CSSPropertyID property : pending_image_properties_) { switch (property) { case CSSPropertyID::kBackgroundImage: {
diff --git a/third_party/blink/renderer/core/css/resolver/element_style_resources.h b/third_party/blink/renderer/core/css/resolver/element_style_resources.h index b76a99f..8f20a1c 100644 --- a/third_party/blink/renderer/core/css/resolver/element_style_resources.h +++ b/third_party/blink/renderer/core/css/resolver/element_style_resources.h
@@ -28,8 +28,6 @@ #include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/heap/handle.h" -#include "third_party/blink/renderer/platform/loader/fetch/cross_origin_attribute_value.h" -#include "third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h" #include "third_party/blink/renderer/platform/wtf/hash_map.h" namespace blink { @@ -78,12 +76,6 @@ void LoadPendingSVGResources(ComputedStyle&); void LoadPendingImages(ComputedStyle&); - StyleImage* LoadPendingImage( - ComputedStyle&, - CSSValue&, - FetchParameters::ImageRequestBehavior = FetchParameters::kNone, - CrossOriginAttributeValue = kCrossOriginAttributeNotSet); - Element& element_; HashSet<CSSPropertyID> pending_image_properties_; HashSet<CSSPropertyID> pending_svg_resource_properties_;
diff --git a/third_party/blink/renderer/core/layout/layout_inline_test.cc b/third_party/blink/renderer/core/layout/layout_inline_test.cc index b6e16ae..6e513c4 100644 --- a/third_party/blink/renderer/core/layout/layout_inline_test.cc +++ b/third_party/blink/renderer/core/layout/layout_inline_test.cc
@@ -9,6 +9,8 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h" +#include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h" +#include "third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h" #include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h" @@ -30,6 +32,19 @@ bool LayoutNGEnabled() const { return RuntimeEnabledFeatures::LayoutNGEnabled(); } + + bool HitTestAllPhases(LayoutObject& object, + HitTestResult& result, + const HitTestLocation& location, + const PhysicalOffset& offset) { + if (!LayoutNGEnabled() || !object.IsBox()) + return object.HitTestAllPhases(result, location, offset); + const LayoutBox& box = To<LayoutBox>(object); + DCHECK_EQ(box.PhysicalFragmentCount(), 1u); + const NGPhysicalBoxFragment& fragment = *box.GetPhysicalFragment(0); + return NGBoxFragmentPainter(fragment).HitTestAllPhases(result, location, + offset); + } }; INSTANTIATE_TEST_SUITE_P(All, ParameterizedLayoutInlineTest, testing::Bool()); @@ -177,7 +192,7 @@ LayoutObject* layout_div = div->GetLayoutObject(); HitTestResult hit_result(hit_request, location); bool hit_outcome = - layout_div->HitTestAllPhases(hit_result, location, container_offset); + HitTestAllPhases(*layout_div, hit_result, location, container_offset); EXPECT_TRUE(hit_outcome); EXPECT_EQ(div, hit_result.InnerNode()); } @@ -188,7 +203,7 @@ LayoutObject* layout_span = span->GetLayoutObject(); HitTestResult hit_result(hit_request, location); bool hit_outcome = - layout_span->HitTestAllPhases(hit_result, location, container_offset); + HitTestAllPhases(*layout_span, hit_result, location, container_offset); EXPECT_TRUE(hit_outcome); EXPECT_EQ(text, hit_result.InnerNode()); } @@ -227,7 +242,7 @@ HitTestResult hit_result(hit_request, location); bool hit_outcome = - layout_span->HitTestAllPhases(hit_result, location, container_offset); + HitTestAllPhases(*layout_span, hit_result, location, container_offset); EXPECT_TRUE(hit_outcome); EXPECT_EQ(target, hit_result.InnerNode()); @@ -247,7 +262,7 @@ HitTestResult hit_result(hit_request, location); bool hit_outcome = - layout_span->HitTestAllPhases(hit_result, location, container_offset); + HitTestAllPhases(*layout_span, hit_result, location, container_offset); EXPECT_TRUE(hit_outcome); EXPECT_EQ(target, hit_result.InnerNode()); @@ -267,7 +282,7 @@ HitTestResult hit_result(hit_request, location); bool hit_outcome = - layout_span->HitTestAllPhases(hit_result, location, container_offset); + HitTestAllPhases(*layout_span, hit_result, location, container_offset); EXPECT_TRUE(hit_outcome); EXPECT_EQ(target, hit_result.InnerNode()); @@ -301,7 +316,7 @@ HitTestLocation location(hit_location); HitTestResult hit_result(hit_request, location); LayoutObject* container = GetLayoutObjectByElementId("container"); - container->HitTestAllPhases(hit_result, location, PhysicalOffset()); + HitTestAllPhases(*container, hit_result, location, PhysicalOffset()); Element* span = GetElementById("span"); Node* text_node = span->firstChild();
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index d2279fe0..495d999a 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -1028,17 +1028,6 @@ (style->HasAutoLeftAndRight() || style->HasAutoTopAndBottom())) return false; - if (UNLIKELY(RuntimeEnabledFeatures::LayoutNGFragmentTraversalEnabled() && - object->IsLayoutNGObject())) { - // We need to rebuild the entire NG fragment spine all the way from the root - // (or at least the nearest self-painting paint layer), since we traverse - // the fragments, and not objects. Fragment painting is initiated at - // self-painting layers, but we cannot check if it's a self-painting layer - // now, because it may cease to be one during layout (an object with clipped - // overflow that no longer has content that requires it to clip). - return false; - } - if (const auto* layout_box = DynamicTo<LayoutBox>(object)) { // In general we can't relayout a flex item independently of its container; // not only is the result incorrect due to the override size that's set, it
diff --git a/third_party/blink/renderer/core/layout/line/inline_flow_box.h b/third_party/blink/renderer/core/layout/line/inline_flow_box.h index 00fd78be..655d0a2 100644 --- a/third_party/blink/renderer/core/layout/line/inline_flow_box.h +++ b/third_party/blink/renderer/core/layout/line/inline_flow_box.h
@@ -491,7 +491,7 @@ // Whether or not this line uses alphabetic or ideographic baselines by // default. - unsigned baseline_type_ : 1; // FontBaseline + unsigned baseline_type_ : 3; // FontBaseline // If the line contains any ruby runs, then this will be true. unsigned has_annotations_before_ : 1;
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc index 73b703b..22f40ba 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
@@ -205,11 +205,7 @@ (Style().RowGap() && Style().RowGap()->IsPercentOrCalc()) || row_track_collection.DependsOnAvailableSize(); - // If we have any rows, gaps which will resolve differently if we have a - // definite |grid_available_size_| re-compute the grid using the |block_size| - // calculated above. - if (grid_available_size_.block_size == kIndefiniteSize && - depends_on_block_constraints) { + if (grid_available_size_.block_size == kIndefiniteSize) { const LayoutUnit resolved_available_block_size = (block_size - BorderScrollbarPadding().BlockSum()) .ClampNegativeToZero(); @@ -217,7 +213,18 @@ grid_available_size_.block_size = grid_min_available_size_.block_size = grid_max_available_size_.block_size = resolved_available_block_size; - ComputeGrid(); + // Re-compute the row geometry now that we have the resolved available + // block-size. "align-content: space-evenly" etc, require the resolved size. + if (Style().AlignContent() != + ComputedStyleInitialValues::InitialAlignContent()) { + grid_geometry.row_geometry = ComputeSetGeometry(row_track_collection); + } + + // If we have any rows, gaps which will resolve differently if we have a + // definite |grid_available_size_| re-compute the grid using the + // |block_size| calculated above. + if (depends_on_block_constraints) + ComputeGrid(); } PlaceGridItems(grid_items, grid_geometry, block_size);
diff --git a/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text_test.cc b/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text_test.cc index 3d15596..e7c2849 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text_test.cc
@@ -5,7 +5,6 @@ #include "third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h" #include <sstream> -#include "build/build_config.h" #include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.h" @@ -15,8 +14,7 @@ class LayoutNGTextTest : public NGLayoutTest { protected: - std::string GetItemsAsString(const LayoutText& layout_text, - int num_glyphs = 0) { + std::string GetItemsAsString(const LayoutText& layout_text) { if (layout_text.NeedsCollectInlines()) return "LayoutText has NeedsCollectInlines"; if (!layout_text.HasValidInlineItems()) @@ -35,18 +33,9 @@ << data.text_content.Substring(item.StartOffset(), item.Length()) .Utf8() << "'"; - if (const auto* shape_result = item.TextShapeResult()) { - stream << ", ShapeResult=" << shape_result->StartIndex() << "+" - << shape_result->NumCharacters(); -#if defined(OS_WIN) - if (shape_result->NumCharacters() != shape_result->NumGlyphs()) - stream << " #glyphs=" << shape_result->NumGlyphs(); -#else - // Note: |num_glyphs| depends on installed font, we check only for - // Windows because most of failures are reported on Windows. - if (num_glyphs) - stream << " #glyphs=" << num_glyphs; -#endif + if (item.TextShapeResult()) { + stream << ", ShapeResult=" << item.TextShapeResult()->StartIndex() + << "+" << item.TextShapeResult()->NumCharacters(); } stream << "}" << std::endl; } @@ -59,10 +48,10 @@ Text& text = To<Text>(*GetElementById("target")->firstChild()); text.appendData(u"\u05D0\u05D1\u05BC\u05D2"); - EXPECT_EQ( - u8"*{'\u05D0\u05D1\u05BC\u05D2\u05D0\u05D1\u05BC\u05D2', " - u8"ShapeResult=0+8 #glyphs=6}\n", - GetItemsAsString(*text.GetLayoutObject(), 6)); + EXPECT_EQ(String(u"*{'\u05D0\u05D1\u05BC\u05D2\u05D0\u05D1\u05BC\u05D2', " + u"ShapeResult=0+8}\n") + .Utf8(), + GetItemsAsString(*text.GetLayoutObject())); } TEST_F(LayoutNGTextTest, SetTextWithOffsetAppendControl) { @@ -98,32 +87,6 @@ GetItemsAsString(*text.GetLayoutObject())); } -// http://crbug.com/1213235 -TEST_F(LayoutNGTextTest, SetTextWithOffsetAppendEmojiWithZWJ) { - // Compose "Woman Shrugging" - // U+1F937 Shrug (U+D83E U+0xDD37) - // U+200D ZWJ - // U+2640 Female Sign - // U+FE0F Variation Selector-16 - SetBodyInnerHTML(u"<pre id=target>🤷</pre>"); - Text& text = To<Text>(*GetElementById("target")->firstChild()); - - UpdateAllLifecyclePhasesForTest(); - text.appendData(u"\u200D"); - EXPECT_EQ(u8"*{'\U0001F937\u200D', ShapeResult=0+3 #glyphs=2}\n", - GetItemsAsString(*text.GetLayoutObject(), 2)); - - UpdateAllLifecyclePhasesForTest(); - text.appendData(u"\u2640"); - EXPECT_EQ(u8"*{'\U0001F937\u200D\u2640', ShapeResult=0+4 #glyphs=1}\n", - GetItemsAsString(*text.GetLayoutObject(), 1)); - - UpdateAllLifecyclePhasesForTest(); - text.appendData(u"\uFE0F"); - EXPECT_EQ(u8"*{'\U0001F937\u200D\u2640\uFE0F', ShapeResult=0+5 #glyphs=1}\n", - GetItemsAsString(*text.GetLayoutObject(), 1)); -} - TEST_F(LayoutNGTextTest, SetTextWithOffsetDelete) { SetBodyInnerHTML(u"<pre id=target><a>abc</a>xXYZyz<b>def</b></pre>"); Text& text = To<Text>(*GetElementById("target")->firstChild()->nextSibling());
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc index bbc34da1..24443c1 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
@@ -72,12 +72,7 @@ scaled_font.emplace(); LayoutSVGInlineText::ComputeNewScaledFontForStyle( layout_object, scaling_factor, *scaled_font); - if (scaling_factor == 1.0f) { - scaled_font = absl::nullopt; - font = &style->GetFont(); - } else { - font = &*scaled_font; - } + font = &*scaled_font; } void NGInlineBoxState::ComputeTextMetrics(const ComputedStyle& styleref,
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc index 8503c5c50..7c242786 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -738,12 +738,11 @@ DCHECK_LE(end_offset, item.end_offset_); const unsigned start_offset = item.start_offset_; // TODO(yosin): It is better to utilize OpenType |usMaxContext|. - // For font having "fi", usMaxContext = 2. - // For Emoji with ZWJ, usMaxContext = 10. (http://crbug.com/1213235) - const unsigned max_context = data_->text_content.Is8Bit() ? 2 : 10; + // For font having "fi", |usMaxContext = 2". + const unsigned max_context = 2; const unsigned skip = max_context - 1; if (!item.shape_result_ || item.shape_result_->IsAppliedSpacing() || - end_offset <= start_offset + skip) + end_offset - skip <= start_offset) return start_offset; item.shape_result_->EnsurePositionData(); // TODO(yosin): It is better to utilize OpenType |usMaxContext|.
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc index 82778af..791514e 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc
@@ -300,6 +300,8 @@ pending_generate_selector_callback_ = std::move(callback); GenerateSelector(); } else { + base::UmaHistogramEnumeration( + "SharedHighlights.LinkGenerated.StateAtRequest", state_); pending_generate_selector_callback_ = std::move(callback); DCHECK_NE(state_, kNotStarted); if (state_ == kFailure || state_ == kSuccess) {
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h index b20e8a90..dd5f1daa 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h
@@ -98,7 +98,9 @@ kFailure, // Selector is found. No further attempts are necessary. - kSuccess + kSuccess, + + kMaxValue = kSuccess }; // Generates selector for current selection.
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc index e5d632d1..e3eba16 100644 --- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc +++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -649,16 +649,30 @@ bool background_paint_in_scrolling_contents = background_paint_location & kBackgroundPaintInScrollingContents; - // Both local attachment background painted in graphics layer and normal - // attachment background painted in scrolling contents require paint - // invalidation. Fixed attachment background has been dealt with in + // Invalidate background on scroll if needed. + // Fixed attachment background has been dealt with in // frame_view->InvalidateBackgroundAttachmentFixedDescendantsOnScroll(). - auto background_layers = box->StyleRef().BackgroundLayers(); - if ((background_layers.AnyLayerHasLocalAttachmentImage() && - background_paint_in_graphics_layer) || - (background_layers.AnyLayerHasDefaultAttachmentImage() && - background_paint_in_scrolling_contents)) + const auto& background_layers = box->StyleRef().BackgroundLayers(); + if (background_layers.AnyLayerHasLocalAttachmentImage() && + background_paint_in_graphics_layer) { + // Local-attachment background image scrolls, so needs invalidation if it + // paints in non-scrolling space. box->SetBackgroundNeedsFullPaintInvalidation(); + } else if (background_layers.AnyLayerHasDefaultAttachmentImage() && + background_paint_in_scrolling_contents) { + // Normal attachment background image doesn't scroll, so needs + // invalidation if it paints in scrolling contents. + box->SetBackgroundNeedsFullPaintInvalidation(); + } else if (background_layers.AnyLayerHasLocalAttachment() && + background_layers.AnyLayerUsesContentBox() && + background_paint_in_graphics_layer && + (box->PaddingLeft() || box->PaddingTop() || + box->PaddingRight() || box->PaddingBottom())) { + // Local attachment content box background needs invalidation if there is + // padding because the content area can change on scroll (e.g. the top + // padding can disappear when the box scrolls to the bottom). + box->SetBackgroundNeedsFullPaintInvalidation(); + } } // If any scrolling content might have been clipped by a cull rect, then
diff --git a/third_party/blink/renderer/core/paint/text_decoration_info.cc b/third_party/blink/renderer/core/paint/text_decoration_info.cc index 3409e75..02ff0810 100644 --- a/third_party/blink/renderer/core/paint/text_decoration_info.cc +++ b/third_party/blink/renderer/core/paint/text_decoration_info.cc
@@ -28,7 +28,7 @@ if (style.TextUnderlinePosition() & kTextUnderlinePositionFromFont) return ResolvedUnderlinePosition::kNearAlphabeticBaselineFromFont; return ResolvedUnderlinePosition::kNearAlphabeticBaselineAuto; - case kIdeographicBaseline: + case kIdeographicBaseline: { // Compute language-appropriate default underline position. // https://drafts.csswg.org/css-text-decor-3/#default-stylesheet UScriptCode script = style.GetFontDescription().GetScript(); @@ -42,6 +42,10 @@ return ResolvedUnderlinePosition::kOver; } return ResolvedUnderlinePosition::kUnder; + } + default: + NOTREACHED(); + break; } NOTREACHED(); return ResolvedUnderlinePosition::kNearAlphabeticBaselineAuto;
diff --git a/third_party/blink/renderer/core/style/fill_layer.cc b/third_party/blink/renderer/core/style/fill_layer.cc index a8c40ab..3dd608f 100644 --- a/third_party/blink/renderer/core/style/fill_layer.cc +++ b/third_party/blink/renderer/core/style/fill_layer.cc
@@ -80,7 +80,7 @@ any_layer_uses_content_box_(false), any_layer_has_image_(false), any_layer_has_url_image_(false), - any_layer_has_local_attachment_image_(false), + any_layer_has_local_attachment_(false), any_layer_has_fixed_attachment_image_(false), any_layer_has_default_attachment_image_(false), cached_properties_computed_(false) {} @@ -118,7 +118,7 @@ any_layer_uses_content_box_(false), any_layer_has_image_(false), any_layer_has_url_image_(false), - any_layer_has_local_attachment_image_(false), + any_layer_has_local_attachment_(false), any_layer_has_fixed_attachment_image_(false), any_layer_has_default_attachment_image_(false), cached_properties_computed_(false) {} @@ -350,8 +350,7 @@ any_layer_has_image_ = !!GetImage(); any_layer_has_url_image_ = any_layer_has_image_ && GetImage()->CssValue()->MayContainUrl(); - any_layer_has_local_attachment_image_ = - any_layer_has_image_ && Attachment() == EFillAttachment::kLocal; + any_layer_has_local_attachment_ = Attachment() == EFillAttachment::kLocal; any_layer_has_fixed_attachment_image_ = any_layer_has_image_ && Attachment() == EFillAttachment::kFixed; any_layer_has_default_attachment_image_ = @@ -365,8 +364,7 @@ any_layer_uses_content_box_ |= next_->any_layer_uses_content_box_; any_layer_has_image_ |= next_->any_layer_has_image_; any_layer_has_url_image_ |= next_->any_layer_has_url_image_; - any_layer_has_local_attachment_image_ |= - next_->any_layer_has_local_attachment_image_; + any_layer_has_local_attachment_ |= next_->any_layer_has_local_attachment_; any_layer_has_fixed_attachment_image_ |= next_->any_layer_has_fixed_attachment_image_; any_layer_has_default_attachment_image_ |=
diff --git a/third_party/blink/renderer/core/style/fill_layer.h b/third_party/blink/renderer/core/style/fill_layer.h index 216cb691..2c0c24f 100644 --- a/third_party/blink/renderer/core/style/fill_layer.h +++ b/third_party/blink/renderer/core/style/fill_layer.h
@@ -235,9 +235,14 @@ ComputeCachedPropertiesIfNeeded(); return any_layer_has_url_image_; } + bool AnyLayerHasLocalAttachment() const { + ComputeCachedPropertiesIfNeeded(); + return any_layer_has_local_attachment_; + } bool AnyLayerHasLocalAttachmentImage() const { ComputeCachedPropertiesIfNeeded(); - return any_layer_has_local_attachment_image_; + // Note that this can have false-positive in rare cases. + return any_layer_has_local_attachment_ && any_layer_has_image_; } bool AnyLayerHasFixedAttachmentImage() const { ComputeCachedPropertiesIfNeeded(); @@ -343,8 +348,8 @@ mutable unsigned any_layer_has_image_ : 1; // True if any of this of subsequent layers has a url() image. mutable unsigned any_layer_has_url_image_ : 1; - // True if any of this or subsequent layers has local attachment image. - mutable unsigned any_layer_has_local_attachment_image_ : 1; + // True if any of this or subsequent layers has local attachment. + mutable unsigned any_layer_has_local_attachment_ : 1; // True if any of this or subsequent layers has fixed attachment image. mutable unsigned any_layer_has_fixed_attachment_image_ : 1; // True if any of this or subsequent layers has default attachment image.
diff --git a/third_party/blink/renderer/core/style/filter_operation.h b/third_party/blink/renderer/core/style/filter_operation.h index 9931f13f..68c606e 100644 --- a/third_party/blink/renderer/core/style/filter_operation.h +++ b/third_party/blink/renderer/core/style/filter_operation.h
@@ -443,7 +443,7 @@ template <> struct DowncastTraits<ComponentTransferFilterOperation> { static bool AllowFrom(const FilterOperation& op) { - return op.GetType() == FilterOperation::CONVOLVE_MATRIX; + return op.GetType() == FilterOperation::COMPONENT_TRANSFER; } };
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn index 1b9f3c72..b4df67c 100644 --- a/third_party/blink/renderer/modules/BUILD.gn +++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -104,6 +104,7 @@ "//third_party/blink/renderer/modules/compression", "//third_party/blink/renderer/modules/delegated_ink", "//third_party/blink/renderer/modules/device_orientation", + "//third_party/blink/renderer/modules/device_posture", "//third_party/blink/renderer/modules/document_metadata", "//third_party/blink/renderer/modules/donottrack", "//third_party/blink/renderer/modules/encoding",
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc index 283fa8c..2db61ec 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -1171,49 +1171,6 @@ return &GetLayoutObject()->GetDocument(); } -Element* AXLayoutObject::AnchorElement() const { - if (!layout_object_) - return nullptr; - - AXObjectCacheImpl& cache = AXObjectCache(); - LayoutObject* curr_layout_object; - - // Search up the layout tree for a LayoutObject with a DOM node. Defer to an - // earlier continuation, though. - for (curr_layout_object = layout_object_; - curr_layout_object && !curr_layout_object->GetNode(); - curr_layout_object = curr_layout_object->Parent()) { - auto* curr_block_flow = DynamicTo<LayoutBlockFlow>(curr_layout_object); - if (!curr_block_flow || !curr_block_flow->IsAnonymousBlock()) - continue; - - if (LayoutObject* continuation = curr_block_flow->Continuation()) - return cache.GetOrCreate(continuation)->AnchorElement(); - } - // bail if none found - if (!curr_layout_object) - return nullptr; - - // Search up the DOM tree for an anchor element. - // NOTE: this assumes that any non-image with an anchor is an - // HTMLAnchorElement - Node* node = curr_layout_object->GetNode(); - if (!node) - return nullptr; - for (Node& runner : NodeTraversal::InclusiveAncestorsOf(*node)) { - if (IsA<HTMLAnchorElement>(runner)) - return To<Element>(&runner); - - if (LayoutObject* layout_object = runner.GetLayoutObject()) { - AXObject* ax_object = cache.GetOrCreate(layout_object); - if (ax_object && ax_object->IsAnchor()) - return To<Element>(&runner); - } - } - - return nullptr; -} - void AXLayoutObject::HandleAutofillStateChanged(WebAXAutofillState state) { // Autofill state is stored in AXObjectCache. AXObjectCache().SetAutofillState(AXObjectID(), state);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h index 9b376d4..432d15f 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
@@ -37,7 +37,6 @@ namespace blink { class AXObjectCacheImpl; -class Element; class HTMLAreaElement; class IntPoint; class Node; @@ -57,7 +56,6 @@ // DOM and layout tree access. Document* GetDocument() const override; - Element* AnchorElement() const override; protected: LayoutObject* layout_object_;
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 feb0150..f1125653 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -1772,7 +1772,7 @@ } AXObject* AXNodeObject::InPageLinkTarget() const { - if (!IsAnchor() || !GetDocument()) + if (!IsLink() || !GetDocument()) return AXObject::InPageLinkTarget(); const Element* anchor = AnchorElement(); @@ -1796,6 +1796,11 @@ return AXObject::InPageLinkTarget(); // If the target is not in the accessibility tree, get the first unignored // sibling. + // TODO(accessibility) Ensure all in-page targets are unignored so that + // this extra logic becomes unnecessary. We should be able to simply call + // GetOrCreate(target) and DCHECK() that it's unignored. + // See IsInPageLinkTarget(), which includes almost all elements with an id, + // except for a few which affected tests. return AXObjectCache().FirstAccessibleObjectFromNode(target); } @@ -2454,18 +2459,8 @@ } KURL AXNodeObject::Url() const { - if (IsAnchor()) { - const Element* anchor = AnchorElement(); - - if (const auto* html_anchor = DynamicTo<HTMLAnchorElement>(anchor)) { - return html_anchor->Href(); - } - - // Some non-HTML elements, most notably SVG <a> elements, can act as - // links/anchors. - if (anchor) - return anchor->HrefURL(); - } + if (IsLink()) // <area>, <link>, <html:a> or <svg:a> + return GetElement()->HrefURL(); if (IsWebArea() && GetDocument()) return GetDocument()->Url(); @@ -4026,6 +4021,8 @@ return element; Element* anchor = AnchorElement(); + if (anchor && !anchor->IsLiveLink()) + anchor = nullptr; // Non-interactive link target like <a name>. Element* click_element = MouseButtonListener(); if (!anchor || (click_element && click_element->IsDescendantOf(anchor))) return click_element; @@ -4033,24 +4030,16 @@ } Element* AXNodeObject::AnchorElement() const { - Node* node = GetNode(); - if (!node) - return nullptr; - - AXObjectCacheImpl& cache = AXObjectCache(); - - // search up the DOM tree for an anchor element - // NOTE: this assumes that any non-image with an anchor is an - // HTMLAnchorElement - for (; node; node = node->parentNode()) { - if (IsA<HTMLAnchorElement>(*node)) - return To<Element>(node); - - if (LayoutObject* layout_object = node->GetLayoutObject()) { - AXObject* ax_object = cache.GetOrCreate(layout_object); - if (ax_object && ax_object->IsAnchor()) - return To<Element>(node); + // Search up the DOM tree for an anchor. This can be anything that has the + // linked state, such as an HTMLAnchorElement or role=link/doc-backlink. + const AXObject* current = this; + while (current) { + if (current->IsLink()) { + DCHECK(current->GetElement()) + << "An AXObject* that is a link should always have an element."; + return current->GetElement(); } + current = current->ParentObject(); } return nullptr;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc index 788dce7..8699f2d 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1627,10 +1627,6 @@ return role_; } -bool AXObject::IsAnchor() const { - return IsLink() && !IsNativeImage(); -} - bool AXObject::IsARIATextField() const { if (IsAtomicTextField()) return false; // Native role supercedes the ARIA one.
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h index a4b3745..20a7582b 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -438,7 +438,6 @@ // Check object role or purpose. ax::mojom::blink::Role RoleValue() const; - bool IsAnchor() const; // Returns true if this object is an ARIA text field, i.e. it is neither an // <input> nor a <textarea>, but it has an ARIA role of textbox, searchbox or @@ -673,6 +672,10 @@ virtual String ImageDataUrl(const IntSize& max_size) const { return g_null_atom; } + // If this element points to another element in the same page, e.g. + // <a href="#foo">, this will return the AXObject for the target. + // The object returned should be unignored. If necessary, it will return + // a descendant of the actual target. virtual AXObject* InPageLinkTarget() const { return nullptr; } virtual AccessibilityOrientation Orientation() const; virtual ax::mojom::blink::ListStyle GetListStyle() const {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_dictionary.idl b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_dictionary.idl index 6421cc3..e37fa2d9 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_dictionary.idl +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_dictionary.idl
@@ -7,4 +7,5 @@ object blur; object colorMatrix; object convolveMatrix; + object componentTransfer; };
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_operation_resolver.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_operation_resolver.cc index 119ea049..bc55c50 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_operation_resolver.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_operation_resolver.cc
@@ -116,6 +116,56 @@ kernel_size, divisor, bias, target_offset, edge_mode, preserve_alpha, kernel_matrix->values); } + +ComponentTransferFunction GetComponentTransferFunction( + const StringView& key, + const Dictionary& filter, + ExceptionState& exception_state) { + Dictionary transfer_dict; + filter.Get(key, transfer_dict); + + ComponentTransferFunction result; + result.slope = + transfer_dict.Get<IDLDouble>("slope", exception_state).value_or(1); + result.intercept = + transfer_dict.Get<IDLDouble>("intercept", exception_state).value_or(0); + result.amplitude = + transfer_dict.Get<IDLDouble>("amplitude", exception_state).value_or(1); + result.exponent = + transfer_dict.Get<IDLDouble>("exponent", exception_state).value_or(1); + result.offset = + transfer_dict.Get<IDLDouble>("offset", exception_state).value_or(0); + + absl::optional<Vector<float>> table_values = + transfer_dict.Get<IDLSequence<IDLFloat>>("tableValues", exception_state); + if (table_values) + result.table_values.AppendVector(table_values.value()); + + String type = transfer_dict.Get<IDLString>("type", exception_state) + .value_or("identity"); + if (type == "identity") + result.type = FECOMPONENTTRANSFER_TYPE_IDENTITY; + else if (type == "linear") + result.type = FECOMPONENTTRANSFER_TYPE_LINEAR; + else if (type == "gamma") + result.type = FECOMPONENTTRANSFER_TYPE_GAMMA; + else if (type == "table") + result.type = FECOMPONENTTRANSFER_TYPE_TABLE; + else if (type == "discrete") + result.type = FECOMPONENTTRANSFER_TYPE_DISCRETE; + + return result; +} + +ComponentTransferFilterOperation* ResolveComponentTransfer( + const Dictionary& dict, + ExceptionState& exception_state) { + return MakeGarbageCollected<ComponentTransferFilterOperation>( + GetComponentTransferFunction("funcR", dict, exception_state), + GetComponentTransferFunction("funcG", dict, exception_state), + GetComponentTransferFunction("funcB", dict, exception_state), + GetComponentTransferFunction("funcA", dict, exception_state)); +} } // namespace FilterOperations CanvasFilterOperationResolver::CreateFilterOperations( @@ -124,11 +174,11 @@ FilterOperations operations; for (auto filter : filters) { - v8::Local<v8::Object> v8_object; if (filter->hasBlur()) { - Dictionary blur_dict(filter->blur()); - if (auto* blur_operation = ResolveBlur(blur_dict, exception_state)) + if (auto* blur_operation = + ResolveBlur(Dictionary(filter->blur()), exception_state)) { operations.Operations().push_back(blur_operation); + } } if (filter->hasColorMatrix()) { Dictionary colormatrix_dict(filter->colorMatrix()); @@ -158,12 +208,17 @@ } } if (filter->hasConvolveMatrix()) { - Dictionary convolve_dict(filter->convolveMatrix()); - if (auto* convolve_operation = - ResolveConvolveMatrix(convolve_dict, exception_state)) { + if (auto* convolve_operation = ResolveConvolveMatrix( + Dictionary(filter->convolveMatrix()), exception_state)) { operations.Operations().push_back(convolve_operation); } } + if (filter->hasComponentTransfer()) { + if (auto* component_transfer_operation = ResolveComponentTransfer( + Dictionary(filter->componentTransfer()), exception_state)) { + operations.Operations().push_back(component_transfer_operation); + } + } } return operations;
diff --git a/third_party/blink/renderer/modules/device_posture/BUILD.gn b/third_party/blink/renderer/modules/device_posture/BUILD.gn new file mode 100644 index 0000000..7748462 --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/BUILD.gn
@@ -0,0 +1,14 @@ +# Copyright 2021 The Chromium Authors.All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//third_party/blink/renderer/modules/modules.gni") + +blink_modules_sources("device_posture") { + sources = [ + "device_posture.cc", + "device_posture.h", + "navigator_device_posture.cc", + "navigator_device_posture.h", + ] +}
diff --git a/third_party/blink/renderer/modules/device_posture/DEPS b/third_party/blink/renderer/modules/device_posture/DEPS new file mode 100644 index 0000000..d882f85ee --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/DEPS
@@ -0,0 +1,6 @@ +include_rules = [ + "-third_party/blink/renderer/modules", + "+third_party/blink/renderer/modules/device_posture", + "+third_party/blink/renderer/modules/event_target_modules.h", + "+third_party/blink/renderer/modules/modules_export.h", +]
diff --git a/third_party/blink/renderer/modules/device_posture/DIR_METADATA b/third_party/blink/renderer/modules/device_posture/DIR_METADATA new file mode 100644 index 0000000..7db743ccc --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>FoldableAPIs" +}
diff --git a/third_party/blink/renderer/modules/device_posture/README.md b/third_party/blink/renderer/modules/device_posture/README.md new file mode 100644 index 0000000..3b721a7b --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/README.md
@@ -0,0 +1,3 @@ +# DevicePosture + +This directory contains the implementation of [the DevicePosture API](https://w3c.github.io/device-posture/).
diff --git a/third_party/blink/renderer/modules/device_posture/device_posture.cc b/third_party/blink/renderer/modules/device_posture/device_posture.cc new file mode 100644 index 0000000..170273a --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/device_posture.cc
@@ -0,0 +1,58 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/device_posture/device_posture.h" + +#include "third_party/blink/renderer/core/frame/local_dom_window.h" +#include "third_party/blink/renderer/modules/event_target_modules.h" + +namespace blink { + +namespace { + +String PostureToString( + mojom::blink::DevicePostureType posture) { + switch (posture) { + case mojom::blink::DevicePostureType::kNoFold: + return "no-fold"; + case mojom::blink::DevicePostureType::kLaptop: + return "laptop"; + case mojom::blink::DevicePostureType::kFlat: + return "flat"; + case mojom::blink::DevicePostureType::kTent: + return "tent"; + case mojom::blink::DevicePostureType::kTablet: + return "tablet"; + case mojom::blink::DevicePostureType::kBook: + return "book"; + } + NOTREACHED(); + return "no-fold"; +} + +} // namespace + +DevicePosture::DevicePosture(LocalDOMWindow* window) + : ExecutionContextClient(window) {} + +DevicePosture::~DevicePosture() = default; + +String DevicePosture::type() const { + return PostureToString(posture_); +} + +ExecutionContext* DevicePosture::GetExecutionContext() const { + return ExecutionContextClient::GetExecutionContext(); +} + +const AtomicString& DevicePosture::InterfaceName() const { + return event_target_names::kDevicePosture; +} + +void DevicePosture::Trace(blink::Visitor* visitor) const { + EventTargetWithInlineData::Trace(visitor); + ExecutionContextClient::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/device_posture/device_posture.h b/third_party/blink/renderer/modules/device_posture/device_posture.h new file mode 100644 index 0000000..351c118b --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/device_posture.h
@@ -0,0 +1,45 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_DEVICE_POSTURE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_DEVICE_POSTURE_H_ + +#include "third_party/blink/public/mojom/device_posture/device_posture.mojom-blink.h" +#include "third_party/blink/renderer/core/dom/events/event_target.h" +#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" +#include "third_party/blink/renderer/modules/modules_export.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" + +namespace blink { + +class LocalDOMWindow; + +class MODULES_EXPORT DevicePosture : public EventTargetWithInlineData, + public ExecutionContextClient { + DEFINE_WRAPPERTYPEINFO(); + + public: + explicit DevicePosture(LocalDOMWindow*); + ~DevicePosture() override; + + // Web-exposed interfaces + DEFINE_ATTRIBUTE_EVENT_LISTENER(change, kChange) + String type() const; + + // EventTarget overrides. + ExecutionContext* GetExecutionContext() const override; + const AtomicString& InterfaceName() const override; + + void Trace(blink::Visitor*) const override; + + private: + // TODO(baul.eun): Retrieve infomation from browser side. + // And will process change logic. + mojom::blink::DevicePostureType posture_ = + mojom::blink::DevicePostureType::kNoFold; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_DEVICE_POSTURE_H_
diff --git a/third_party/blink/renderer/modules/device_posture/device_posture.idl b/third_party/blink/renderer/modules/device_posture/device_posture.idl new file mode 100644 index 0000000..643a0809 --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/device_posture.idl
@@ -0,0 +1,18 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +enum DevicePostureType { + "no-fold", + "laptop", + "flat", + "tent", + "tablet", + "book" +}; + +[Exposed=Window, RuntimeEnabled=DevicePosture, SecureContext] +interface DevicePosture : EventTarget { + readonly attribute DevicePostureType type; + attribute EventHandler onchange; +};
diff --git a/third_party/blink/renderer/modules/device_posture/idls.gni b/third_party/blink/renderer/modules/device_posture/idls.gni new file mode 100644 index 0000000..aa44ec46 --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/idls.gni
@@ -0,0 +1,7 @@ +# Copyright 2021 The Chromium Authors.All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +modules_idl_files = [ "device_posture.idl" ] + +modules_dependency_idl_files = [ "navigator_device_posture.idl" ]
diff --git a/third_party/blink/renderer/modules/device_posture/navigator_device_posture.cc b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.cc new file mode 100644 index 0000000..9c32eec --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.cc
@@ -0,0 +1,40 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/device_posture/navigator_device_posture.h" + +#include "third_party/blink/renderer/core/frame/local_dom_window.h" +#include "third_party/blink/renderer/core/frame/navigator.h" +#include "third_party/blink/renderer/modules/device_posture/device_posture.h" +#include "third_party/blink/renderer/platform/runtime_enabled_features.h" + +namespace blink { + +// static +const char NavigatorDevicePosture::kSupplementName[] = "NavigatorDevicePosture"; + +// static +DevicePosture* NavigatorDevicePosture::devicePosture(Navigator& navigator) { + DCHECK(RuntimeEnabledFeatures::DevicePostureEnabled()); + + NavigatorDevicePosture* supplement = + Supplement<Navigator>::From<NavigatorDevicePosture>(navigator); + if (!supplement) { + supplement = MakeGarbageCollected<NavigatorDevicePosture>(navigator); + ProvideTo(navigator, supplement); + } + return supplement->posture_; +} + +NavigatorDevicePosture::NavigatorDevicePosture(Navigator& navigator) + : Supplement<Navigator>(navigator), + posture_(MakeGarbageCollected<DevicePosture>( + GetSupplementable()->DomWindow())) {} + +void NavigatorDevicePosture::Trace(Visitor* visitor) const { + visitor->Trace(posture_); + Supplement<Navigator>::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/device_posture/navigator_device_posture.h b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.h new file mode 100644 index 0000000..af6d00a --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.h
@@ -0,0 +1,33 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_NAVIGATOR_DEVICE_POSTURE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_NAVIGATOR_DEVICE_POSTURE_H_ + +#include "third_party/blink/renderer/core/frame/navigator.h" +#include "third_party/blink/renderer/platform/heap/handle.h" +#include "third_party/blink/renderer/platform/supplementable.h" + +namespace blink { + +class DevicePosture; + +class NavigatorDevicePosture final + : public GarbageCollected<NavigatorDevicePosture>, + public Supplement<Navigator> { + public: + static const char kSupplementName[]; + static DevicePosture* devicePosture(Navigator&); + + explicit NavigatorDevicePosture(Navigator&); + + void Trace(Visitor*) const override; + + private: + Member<DevicePosture> posture_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_DEVICE_POSTURE_NAVIGATOR_DEVICE_POSTURE_H_
diff --git a/third_party/blink/renderer/modules/device_posture/navigator_device_posture.idl b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.idl new file mode 100644 index 0000000..c6e0f22 --- /dev/null +++ b/third_party/blink/renderer/modules/device_posture/navigator_device_posture.idl
@@ -0,0 +1,13 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + SecureContext, + Exposed=(Window), + SameObject, + RuntimeEnabled=DevicePosture, + ImplementedAs=NavigatorDevicePosture +] partial interface Navigator { + readonly attribute DevicePosture devicePosture; +};
diff --git a/third_party/blink/renderer/modules/event_target_modules_names.json5 b/third_party/blink/renderer/modules/event_target_modules_names.json5 index 7d8a05e2..d4d4e1e 100644 --- a/third_party/blink/renderer/modules/event_target_modules_names.json5 +++ b/third_party/blink/renderer/modules/event_target_modules_names.json5
@@ -17,6 +17,7 @@ "DelegatedInkTrail", "EyeDropper", "NavigatorManagedData", + "DevicePosture", "MediaKeySession", "FileWriter", "GPUDevice",
diff --git a/third_party/blink/renderer/modules/exported/web_ax_object.cc b/third_party/blink/renderer/modules/exported/web_ax_object.cc index 6a7e722d..38369d7 100644 --- a/third_party/blink/renderer/modules/exported/web_ax_object.cc +++ b/third_party/blink/renderer/modules/exported/web_ax_object.cc
@@ -246,13 +246,6 @@ private_->Serialize(node_data, accessibility_mode); } -bool WebAXObject::IsAnchor() const { - if (IsDetached()) - return false; - - return private_->IsAnchor(); -} - WebString WebAXObject::AutoComplete() const { if (IsDetached()) return WebString();
diff --git a/third_party/blink/renderer/modules/mediasource/media_source.cc b/third_party/blink/renderer/modules/mediasource/media_source.cc index 6f05287f..bd4e6f6 100644 --- a/third_party/blink/renderer/modules/mediasource/media_source.cc +++ b/third_party/blink/renderer/modules/mediasource/media_source.cc
@@ -544,15 +544,17 @@ // HTMLMediaElement knows it cannot play. String codecs = content_type.Parameter("codecs"); MIMETypeRegistry::SupportsType get_supports_type_result; -#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) - // Here, we special-case for HEVC on ChromeOS, which is only supported if - // encrypted. isTypeSupported(fully qualified type with hevc codec) should say - // false on such platform (except if kEnableClearHevcForTesting cmdline switch - // is used, enabling GetSupportsType success), but addSourceBuffer(same) and - // changeType(same) shouldn't fail just due to having HEVC codec. We use - // |enforce_codec_specificity| to understand if we are servicing iTS (if true) - // versus aSB (if false). If servicing aSB or cT, we'll remove any detected - // hevc codec from the codecs we use in the GetSupportsType() query. +#if BUILDFLAG(ENABLE_PLATFORM_HEVC) && \ + (BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN)) + // Here, we special-case for HEVC on ChromeOS and Windows, which is only + // supported if encrypted. isTypeSupported(fully qualified type with hevc + // codec) should say false on such platform (except if + // kEnableClearHevcForTesting cmdline switch is used, enabling GetSupportsType + // success), but addSourceBuffer(same) and changeType(same) shouldn't fail + // just due to having HEVC codec. We use |enforce_codec_specificity| to + // understand if we are servicing iTS (if true) versus aSB (if false). If + // servicing aSB or cT, we'll remove any detected hevc codec from the codecs + // we use in the GetSupportsType() query. if (!enforce_codec_specificity) { // Remove any detected HEVC codec from the query to GetSupportsType. std::string filtered_codecs; @@ -584,14 +586,14 @@ get_supports_type_result = HTMLMediaElement::GetSupportsType( ContentType(String::FromUTF8(filtered_type.c_str()))); } else { - // Even on ChromeOS with HEVC support, don't filter out HEVC codec when + // Even on platforms with HEVC support, don't filter out HEVC codec when // servicing isTypeSupported(). get_supports_type_result = HTMLMediaElement::GetSupportsType(content_type); } #else get_supports_type_result = HTMLMediaElement::GetSupportsType(content_type); #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) && - // BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) + // (BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) || defined(OS_WIN)) if (get_supports_type_result == MIMETypeRegistry::kIsNotSupported) { DVLOG(1) << __func__ << "(" << type << ", "
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni index 5d9ce54..9061022c 100644 --- a/third_party/blink/renderer/modules/modules_idl_files.gni +++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -74,6 +74,7 @@ "//third_party/blink/renderer/modules/delegated_ink/idls.gni", "//third_party/blink/renderer/modules/managed_device/idls.gni", "//third_party/blink/renderer/modules/device_orientation/idls.gni", + "//third_party/blink/renderer/modules/device_posture/idls.gni", "//third_party/blink/renderer/modules/donottrack/idls.gni", "//third_party/blink/renderer/modules/encoding/idls.gni", "//third_party/blink/renderer/modules/encryptedmedia/idls.gni",
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_contributing_source.idl b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_contributing_source.idl index 997333f..15074fe6 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_contributing_source.idl +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_contributing_source.idl
@@ -10,4 +10,6 @@ required unsigned long rtpTimestamp; // https://w3c.github.io/webrtc-extensions/#dom-rtcrtpcontributingsource-capturetimestamp [RuntimeEnabled=CaptureTimeInCsrc] DOMHighResTimeStamp captureTimestamp; + // https://w3c.github.io/webrtc-extensions/#dom-rtcrtpcontributingsource-sendercapturetimeoffset + [RuntimeEnabled=CaptureTimeInCsrc] DOMHighResTimeStamp senderCaptureTimeOffset; };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc index 9dead0c..bf483ca5 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -126,6 +126,10 @@ synchronization_source->setCaptureTimestamp( web_source->CaptureTimestamp().value()); } + if (web_source->SenderCaptureTimeOffset().has_value()) { + synchronization_source->setSenderCaptureTimeOffset( + web_source->SenderCaptureTimeOffset().value()); + } synchronization_source->setRtpTimestamp(web_source->RtpTimestamp()); synchronization_sources.push_back(synchronization_source); } @@ -164,6 +168,10 @@ contributing_source->setCaptureTimestamp( web_source->CaptureTimestamp().value()); } + if (web_source->SenderCaptureTimeOffset().has_value()) { + contributing_source->setSenderCaptureTimeOffset( + web_source->SenderCaptureTimeOffset().value()); + } contributing_source->setRtpTimestamp(web_source->RtpTimestamp()); contributing_sources.push_back(contributing_source); }
diff --git a/third_party/blink/renderer/modules/webcodecs/video_encoder.cc b/third_party/blink/renderer/modules/webcodecs/video_encoder.cc index 81c45a22..43a128d 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_encoder.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_encoder.cc
@@ -200,7 +200,8 @@ if (config->hasFramerate()) { constexpr double kMinFramerate = .0001; constexpr double kMaxFramerate = 1'000'000'000; - if (config->framerate() < kMinFramerate || + if (std::isnan(config->framerate()) || + config->framerate() < kMinFramerate || config->framerate() > kMaxFramerate) { exception_state.ThrowTypeError(String::Format( "Invalid framerate; expected range from %f to %f, received %f.",
diff --git a/third_party/blink/renderer/platform/blob/BUILD.gn b/third_party/blink/renderer/platform/blob/BUILD.gn index ff184e7..6a8743d 100644 --- a/third_party/blink/renderer/platform/blob/BUILD.gn +++ b/third_party/blink/renderer/platform/blob/BUILD.gn
@@ -19,8 +19,6 @@ } blink_platform_sources("blob") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "blob_bytes_provider.cc", "blob_bytes_provider.h",
diff --git a/third_party/blink/renderer/platform/fonts/font_baseline.h b/third_party/blink/renderer/platform/fonts/font_baseline.h index 8658a154..89b8ca2 100644 --- a/third_party/blink/renderer/platform/fonts/font_baseline.h +++ b/third_party/blink/renderer/platform/fonts/font_baseline.h
@@ -28,7 +28,31 @@ namespace blink { -enum FontBaseline { kAlphabeticBaseline, kIdeographicBaseline }; +enum FontBaseline { + // https://drafts.csswg.org/css-inline/#alphabetic-baseline + kAlphabeticBaseline, + + // https://drafts.csswg.org/css-inline/#central-baseline + kIdeographicBaseline, + + // https://drafts.csswg.org/css-inline/#text-under-baseline + kTextUnderBaseline, + + // https://drafts.csswg.org/css-inline/#ideographic-under-baseline + kIdeographicUnderBaseline, + + // https://drafts.csswg.org/css-inline/#x-middle-baseline + kXMiddleBaseline, + + // https://drafts.csswg.org/css-inline/#math-baseline + kMathBaseline, + + // https://drafts.csswg.org/css-inline/#hanging-baseline + kHangingBaseline, + + // https://drafts.csswg.org/css-inline/#text-over-baseline + kTextOverBaseline +}; } // namespace blink
diff --git a/third_party/blink/renderer/platform/heap/BUILD.gn b/third_party/blink/renderer/platform/heap/BUILD.gn index 723b7ae..aea96d0 100644 --- a/third_party/blink/renderer/platform/heap/BUILD.gn +++ b/third_party/blink/renderer/platform/heap/BUILD.gn
@@ -50,8 +50,6 @@ } blink_platform_sources("heap") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "blink_gc_memory_dump_provider.h", "collection_support/clear_collection_scope.h",
diff --git a/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md b/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md index cd86d4a..3b25fba9 100644 --- a/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md +++ b/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md
@@ -259,10 +259,10 @@ `UntracedMember<T>` represents a reference to a garbage collected object which is ignored by Oilpan. -Unlike 'Member<T>', 'UntracedMember<T>' will not keep an object alive. However, unlike 'WeakMember<T>', the reference will not be cleared (i.e. set to 'nullptr') if the referenced object dies. -Furthermore, class fields of type 'UntracedMember<T>' should not be traced by the class' tracing method. +Unlike `Member<T>`, `UntracedMember<T>` will not keep an object alive. However, unlike `WeakMember<T>`, the reference will not be cleared (i.e. set to `nullptr`) if the referenced object dies. +Furthermore, class fields of type `UntracedMember<T>` should not be traced by the class' tracing method. -Users should use 'UntracedMember<T>' when implementing [custom weakness semantics](#Custom-weak-callbacks). +Users should use `UntracedMember<T>` when implementing [custom weakness semantics](#Custom-weak-callbacks). ### Persistent, WeakPersistent, CrossThreadPersistent, CrossThreadWeakPersistent
diff --git a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc index f14f72ae..7eae8a58 100644 --- a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc +++ b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder.cc
@@ -844,11 +844,6 @@ // Turn off libavif's 'clap' (clean aperture) property validation. (We do // our own validation.) decoder_->strictFlags &= ~AVIF_STRICT_CLAP_VALID; - // Allow the PixelInformationProperty ('pixi') to be missing in AV1 image - // items. libheif v1.11.0 or older does not add the 'pixi' item property to - // AV1 image items. (This issue has been corrected in libheif v1.12.0.) See - // crbug.com/1198455. - decoder_->strictFlags &= ~AVIF_STRICT_PIXI_REQUIRED; avif_io_.destroy = nullptr; avif_io_.read = ReadFromSegmentReader;
diff --git a/third_party/blink/renderer/platform/instrumentation/BUILD.gn b/third_party/blink/renderer/platform/instrumentation/BUILD.gn index 814c58d..c3863c9e1 100644 --- a/third_party/blink/renderer/platform/instrumentation/BUILD.gn +++ b/third_party/blink/renderer/platform/instrumentation/BUILD.gn
@@ -5,8 +5,6 @@ import("//third_party/blink/renderer/platform/platform.gni") blink_platform_sources("instrumentation") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "canvas_memory_dump_provider.cc", "canvas_memory_dump_provider.h",
diff --git a/third_party/blink/renderer/platform/loader/BUILD.gn b/third_party/blink/renderer/platform/loader/BUILD.gn index c567257..6a6066c1 100644 --- a/third_party/blink/renderer/platform/loader/BUILD.gn +++ b/third_party/blink/renderer/platform/loader/BUILD.gn
@@ -12,8 +12,6 @@ } blink_platform_sources("loader") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "allowed_by_nosniff.cc", "allowed_by_nosniff.h",
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_audio_track.cc b/third_party/blink/renderer/platform/mediastream/media_stream_audio_track.cc index 13cd2570..ba3f5eda 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_audio_track.cc +++ b/third_party/blink/renderer/platform/mediastream/media_stream_audio_track.cc
@@ -20,22 +20,19 @@ namespace { -void SendLogMessage(const std::string& message) { - blink::WebRtcLogMessage("MSAT::" + message); -} +constexpr char kTag[] = "MSAT::"; } // namespace MediaStreamAudioTrack::MediaStreamAudioTrack(bool is_local_track) : MediaStreamTrackPlatform(is_local_track), is_enabled_(1) { - SendLogMessage( - base::StringPrintf("MediaStreamAudioTrack([this=%p] {is_local_track=%s})", - this, (is_local_track ? "true" : "false"))); + WebRtcLog(kTag, this, "%s({is_local_track=%s})", __func__, + (is_local_track ? "true" : "false")); } MediaStreamAudioTrack::~MediaStreamAudioTrack() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SendLogMessage(base::StringPrintf("~MediaStreamAudioTrack([this=%p])", this)); + WebRtcLog(kTag, this, "%s()", __func__); Stop(); } @@ -51,7 +48,7 @@ void MediaStreamAudioTrack::AddSink(WebMediaStreamAudioSink* sink) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SendLogMessage(base::StringPrintf("AddSink([this=%p])", this)); + WebRtcLog(kTag, this, "%s()", __func__); // If the track has already stopped, just notify the sink of this fact without // adding it. @@ -66,7 +63,7 @@ void MediaStreamAudioTrack::RemoveSink(WebMediaStreamAudioSink* sink) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SendLogMessage(base::StringPrintf("RemoveSink([this=%p])", this)); + WebRtcLog(kTag, this, "%s()", __func__); deliverer_.RemoveConsumer(sink); } @@ -76,8 +73,8 @@ void MediaStreamAudioTrack::SetEnabled(bool enabled) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SendLogMessage(base::StringPrintf("SetEnabled([this=%p] {enabled=%s})", this, - (enabled ? "true" : "false"))); + WebRtcLog(kTag, this, "%s({enabled=%s})", __func__, + (enabled ? "true" : "false")); const bool previously_enabled = !!base::subtle::NoBarrier_AtomicExchange(&is_enabled_, enabled ? 1 : 0); @@ -117,13 +114,13 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(!stop_callback.is_null()); DCHECK(stop_callback_.is_null()); - SendLogMessage(base::StringPrintf("Start([this=%p])", this)); + WebRtcLog(kTag, this, "%s()", __func__); stop_callback_ = std::move(stop_callback); } void MediaStreamAudioTrack::StopAndNotify(base::OnceClosure callback) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SendLogMessage(base::StringPrintf("StopAndNotify([this=%p])", this)); + WebRtcLog(kTag, this, "%s()", __func__); if (!stop_callback_.is_null()) std::move(stop_callback_).Run(); @@ -141,9 +138,8 @@ } void MediaStreamAudioTrack::OnSetFormat(const media::AudioParameters& params) { - SendLogMessage(base::StringPrintf("OnSetFormat([this=%p] {params: [%s]})", - this, - params.AsHumanReadableString().c_str())); + WebRtcLog(kTag, this, "%s({params: [%s]})", __func__, + params.AsHumanReadableString().c_str()); deliverer_.OnSetFormat(params); } @@ -156,8 +152,8 @@ if (!received_audio_callback_) { // Add log message with unique this pointer id to mark the audio track as // alive at the first data callback. - SendLogMessage(base::StringPrintf( - "OnData([this=%p] => (audio track is alive))", this)); + + WebRtcLog(kTag, this, "%s() => (audio track is alive))", __func__); received_audio_callback_ = true; }
diff --git a/third_party/blink/renderer/platform/network/BUILD.gn b/third_party/blink/renderer/platform/network/BUILD.gn index 163d86a9..3ec575c4 100644 --- a/third_party/blink/renderer/platform/network/BUILD.gn +++ b/third_party/blink/renderer/platform/network/BUILD.gn
@@ -22,8 +22,6 @@ } blink_platform_sources("network") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "content_security_policy_parsers.cc", "content_security_policy_parsers.h",
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.cc b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.cc index 115fa257..6d6dfd97 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.cc
@@ -63,4 +63,14 @@ source_.absolute_capture_time()->absolute_capture_timestamp); } +absl::optional<int64_t> RTCRtpSource::SenderCaptureTimeOffset() const { + if (!source_.absolute_capture_time().has_value() || + !source_.absolute_capture_time() + ->estimated_capture_clock_offset.has_value()) { + return absl::nullopt; + } + return webrtc::UQ32x32ToInt64Ms( + source_.absolute_capture_time()->estimated_capture_clock_offset.value()); +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.h b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.h index 06b69e6..a65d67d 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.h
@@ -36,6 +36,7 @@ absl::optional<double> AudioLevel() const; uint32_t RtpTimestamp() const; absl::optional<int64_t> CaptureTimestamp() const; + absl::optional<int64_t> SenderCaptureTimeOffset() const; private: const webrtc::RtpSource source_;
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source_test.cc b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source_test.cc index c9cc40ac..1c60990 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_rtp_source_test.cc
@@ -21,6 +21,8 @@ // Q32x32 formatted timestamps. constexpr uint64_t kUint64One = 1; constexpr uint64_t kQ32x32Time1000ms = kUint64One << 32; +constexpr uint64_t kQ32x32Time1250ms = kQ32x32Time1000ms | kUint64One << 30; +constexpr uint64_t kQ32x32Time1500ms = kQ32x32Time1000ms | kUint64One << 31; } // namespace @@ -62,6 +64,33 @@ /*extensions=*/{.absolute_capture_time = kAbsCaptureTime}); RTCRtpSource rtc_rtp_source(rtp_source); EXPECT_EQ(rtc_rtp_source.CaptureTimestamp(), 1000); + EXPECT_FALSE(rtc_rtp_source.SenderCaptureTimeOffset().has_value()); +} + +TEST(RtcRtpSource, AbsoluteCaptureTimeSetAndReturnedWithZeroOffset) { + constexpr webrtc::AbsoluteCaptureTime kAbsCaptureTime{ + .absolute_capture_timestamp = kQ32x32Time1250ms, + .estimated_capture_clock_offset = 0}; + webrtc::RtpSource rtp_source( + kTimestampMs, kSourceId, kSourceType, kRtpTimestamp, + /*extensions=*/{.absolute_capture_time = kAbsCaptureTime}); + RTCRtpSource rtc_rtp_source(rtp_source); + EXPECT_EQ(rtc_rtp_source.CaptureTimestamp(), 1250); + ASSERT_TRUE(rtc_rtp_source.SenderCaptureTimeOffset().has_value()); + EXPECT_EQ(rtc_rtp_source.SenderCaptureTimeOffset(), 0); +} + +TEST(RtcRtpSource, AbsoluteCaptureTimeSetAndReturnedWithPositiveOffset) { + constexpr webrtc::AbsoluteCaptureTime kAbsCaptureTime{ + .absolute_capture_timestamp = kQ32x32Time1250ms, + .estimated_capture_clock_offset = kQ32x32Time1500ms}; + webrtc::RtpSource rtp_source( + kTimestampMs, kSourceId, kSourceType, kRtpTimestamp, + /*extensions=*/{.absolute_capture_time = kAbsCaptureTime}); + RTCRtpSource rtc_rtp_source(rtp_source); + EXPECT_EQ(rtc_rtp_source.CaptureTimestamp(), 1250); + ASSERT_TRUE(rtc_rtp_source.SenderCaptureTimeOffset().has_value()); + EXPECT_EQ(rtc_rtp_source.SenderCaptureTimeOffset(), 1500); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/scheduler/BUILD.gn b/third_party/blink/renderer/platform/scheduler/BUILD.gn index c833fdc..55c0bee3e 100644 --- a/third_party/blink/renderer/platform/scheduler/BUILD.gn +++ b/third_party/blink/renderer/platform/scheduler/BUILD.gn
@@ -7,8 +7,6 @@ import("//third_party/protobuf/proto_library.gni") blink_platform_sources("scheduler") { - configs += [ "//build/config/compiler:noshadowing" ] - sources = [ "common/cancelable_closure_holder.cc", "common/cancelable_closure_holder.h",
diff --git a/third_party/blink/renderer/platform/webrtc/webrtc_logging.cc b/third_party/blink/renderer/platform/webrtc/webrtc_logging.cc index 7b34ece..5626653 100644 --- a/third_party/blink/renderer/platform/webrtc/webrtc_logging.cc +++ b/third_party/blink/renderer/platform/webrtc/webrtc_logging.cc
@@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <inttypes.h> + #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "base/logging.h" +#include "base/strings/stringprintf.h" #include "base/time/time.h" #include "third_party/webrtc_overrides/rtc_base/logging.h" @@ -31,4 +34,36 @@ g_webrtc_logging_delegate->LogMessage(message); } +void WebRtcLog(const char* format, ...) { + va_list args; + va_start(args, format); + std::string msg(base::StringPrintV(format, args)); + va_end(args); + WebRtcLogMessage(msg); +} + +void WebRtcLog(void* thiz, const char* format, ...) { + va_list args; + va_start(args, format); + std::string msg(base::StringPrintV(format, args)); + va_end(args); + base::StringAppendF(&msg, " [this=0x%" PRIXPTR "]", + reinterpret_cast<uintptr_t>(thiz)); + WebRtcLogMessage(msg); +} + +void BLINK_PLATFORM_EXPORT WebRtcLog(const char* prefix, + void* thiz, + const char* format, + ...) { + va_list args; + va_start(args, format); + std::string msg(prefix); + base::StringAppendV(&msg, format, args); + va_end(args); + base::StringAppendF(&msg, " [this=0x%" PRIXPTR "]", + reinterpret_cast<uintptr_t>(thiz)); + WebRtcLogMessage(msg); +} + } // namespace blink
diff --git a/third_party/blink/web_tests/FlagExpectations/highdpi b/third_party/blink/web_tests/FlagExpectations/highdpi index 47615b5..100834b 100644 --- a/third_party/blink/web_tests/FlagExpectations/highdpi +++ b/third_party/blink/web_tests/FlagExpectations/highdpi
@@ -438,6 +438,3 @@ crbug.com/1179570 virtual/scroll-unification/fast/forms/suggestion-picker/time-suggestion-picker-mouse-operations.html [ Timeout ] crbug.com/1179570 virtual/scroll-unification/fast/forms/suggestion-picker/week-suggestion-picker-mouse-operations.html [ Timeout ] crbug.com/1179570 virtual/wheel-event-regions/fast/events/wheel/wheelevent-in-scrolling-div.html [ Timeout ] - -# Flake: -crbug.com/1213718 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/* [ Skip ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 2d0e3168..1d820ff 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -384,6 +384,8 @@ crbug.com/997202 compositing/overflow/scaled-overflow.html [ Failure ] # Flaky subpixel AA difference (not necessarily incorrect, but flaky) crbug.com/997202 virtual/threaded-no-composited-antialiasing/animations/skew-notsequential-compositor.html [ Failure Pass ] +# Only one pixel difference (187,187,187) vs (188,188,188) occasionally. +crbug.com/1207960 [ Linux ] compositing/perspective-interest-rect.html [ Failure Pass ] crbug.com/954591 external/wpt/css/css-transforms/composited-under-rotateY-180deg.html [ Failure ] crbug.com/954591 external/wpt/css/css-transforms/composited-under-rotateY-180deg-clip.html [ Failure ] @@ -426,21 +428,6 @@ # Failures due to pointerMove building synthetic events without button information (main thread only). crbug.com/1056778 fast/scrolling/scrollbars/scrollbar-thumb-snapping.html [ Failure ] -# Awaiting implementation of FeComponentTransfer for CanvasFilter -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.worker.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.worker.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.worker.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.html [ Failure ] -crbug.com/1169216 external/wpt/html/canvas/element/manual/filters/canvas-filter-object-component-transfer.html [ Failure ] - # Most of these fail due to subpixel differences, but a couple are real failures. crbug.com/1044742 external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html [ Failure ] crbug.com/1044742 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html [ Failure ] @@ -1181,7 +1168,6 @@ crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-001.html [ Failure ] crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-002.html [ Failure ] crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-axis-height.html [ Failure ] -crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-1.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/css-styling/ignored-properties-001.html [ Failure Timeout ] crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-bold-fraktur.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-bold-italic.html [ Failure ] @@ -2526,6 +2512,10 @@ crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/protocol/rtp-clockrate.html [ Timeout ] crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html [ Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html [ Timeout ] +crbug.com/626703 [ Mac10.14 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html [ Timeout ] +crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html [ Timeout ] +crbug.com/626703 [ Mac10.14 ] virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html [ Timeout ] +crbug.com/626703 [ Mac11.0 ] virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html [ Timeout ] crbug.com/626703 external/wpt/css/css-contain/contain-html-overflow-003.html [ Failure ] crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/css-contain/contain-html-overflow-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-contain/contain-html-bg-001.html [ Failure ] @@ -3993,7 +3983,6 @@ ### Tests failing with LayoutNGGrid enabled: crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001.html [ Failure ] -crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-overflow-001.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html [ Failure ] crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html [ Failure ] @@ -4068,14 +4057,12 @@ crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/js-late-gradient-creation.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/js-late-pattern-and-object-creation.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/js-late-pattern-creation.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/modify-transferred-listitem-different-attr.html [ Failure ] +crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/modify-transferred-listitem-different-attr.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/outline-offset-text.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration.html [ Failure ] +crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text.html [ Failure ] +crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-mask-update.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-match-svg.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-pattern-update.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-pattern-update-2.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-selection-text-05-t.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-selection-update.svg [ Failure ] @@ -4083,7 +4070,6 @@ crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/transform-text-element.html [ Pass Failure ] crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/tspan-dynamic-positioning.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/use-detach.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/use-event-handler-on-use-element.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/animations/animate-text-nested-transforms.html [ Timeout ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/batik/text/smallFonts.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/batik/text/textAnchor2.svg [ Failure ] @@ -4109,7 +4095,6 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/css/text-shadow-multiple.xhtml [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/acid3-test-77.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/alignment-baseline-modes.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/broken-internal-references.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/dominant-baseline-hanging.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/dominant-baseline-modes.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/empty-mask.svg [ Failure ] @@ -4128,19 +4113,15 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/svg-root-with-opacity.html [ Pass Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-dom-01-f.svg [ Failure Crash ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-hit-test.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-linking.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-match-highlight.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-rotated-gradient.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/transformed-outlines.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/use-event-handler-on-referenced-element.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/use-events-crash.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/use-on-text.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/visibility-collapse.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/zoomed-alignment-baseline.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/zoomed-baseline-shift.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/zoomed-ex-em-font-sizes.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/zoomed-mixed-scripts.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/dom/references-in-shadow-trees.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/dom/undefined-null.html [ Pass Crash ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/dynamic-updates/SVGTextElement-dom-lengthAdjust-attr.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/dynamic-updates/SVGTextElement-dom-textLength-attr.html [ Failure ] @@ -4151,7 +4132,6 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/filters/feDisplacementMap.svg [ Pass Timeout ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/filters/filter-on-filter-for-text.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/filters/filter-on-tspan.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/foreignObject/transformed-text-invalidation.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/hittest/rotated-text.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/hittest/singular-transform-3.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/hittest/svg-pointer-events-bbox.html [ Failure ] @@ -4178,7 +4158,6 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bidi-getcharnumatpos.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bidi-getsubstringlength.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/bidi-text-query.svg [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/caret-in-svg-text.xhtml [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/columns-do-not-apply.html [ Pass Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/combining-character-queries.html [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/getcharnumatposition-multiple-fragments.html [ Failure ] @@ -4230,7 +4209,6 @@ crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/textPathBoundsBug.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/textpath-outline.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/textquery-collapsed-whitespace.html [ Failure ] -crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-repaint-rects.xhtml [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-selection-align-01-b.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-selection-align-02-b.svg [ Failure ] crbug.com/1179585 virtual/layout_ng_svg_text/svg/text/text-selection-align-03-b.svg [ Failure ] @@ -7020,3 +6998,6 @@ crbug.com/1213322 [ Mac ] external/wpt/css/css-values/minmax-percentage-serialize.html [ Pass Failure ] crbug.com/1213322 [ Mac ] external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html [ Pass Failure ] crbug.com/1213322 [ Mac ] virtual/css-calc-infinity-and-nan/external/wpt/css/css-values/minmax-percentage-serialize.html [ Pass Failure ] + +# Sheriff on 2021-05-27 +crbug.com/1213718 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/* [ Pass Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index c9c1c88..65ed9bf1 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -1048,9 +1048,9 @@ "args": ["--stable-release-mode"] }, { - "prefix": "playback_speed_button", - "bases": ["media/controls"], - "args": [ "--enable-features=PlaybackSpeedButton" ] + "prefix": "playback_speed_button", + "bases": ["media/controls"], + "args": [ "--enable-features=PlaybackSpeedButton" ] }, { "prefix": "dialogfocus-old-behavior", @@ -1058,5 +1058,10 @@ "external/wpt/html/semantics/interactive-elements/the-dialog-element" ], "args": ["--disable-features=DialogFocusNewSpecBehavior"] + }, + { + "prefix": "webrtc-extensions-senderCaptureTimeOffset", + "bases": ["external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html"], + "args": ["--force-fieldtrials=WebRTC-IncludeCaptureClockOffset/Enabled/"] } ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll-ref.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll-ref.html new file mode 100644 index 0000000..a6fd494 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll-ref.html
@@ -0,0 +1,28 @@ +<!doctype html> +<style> +.container { + width: 100px; + height: 100px; + box-sizing: border-box; + overflow: hidden; + border: 1px solid black; + display: block; +} +.content { + width: 100%; + height: 100%; + background: blue; +} +</style> +<div class="container"> + <div class="content"></div> +</div> +<div class="container" style="padding-top: 20px; padding-left: 20px"> + <div class="content"></div> +</div> +<div class="container" style="padding-right: 20px; padding-bottom: 20px"> + <div class="content"></div> +</div> +<div class="container"> + <div class="content"></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll.html new file mode 100644 index 0000000..7644c15 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/local-attachment-content-box-scroll.html
@@ -0,0 +1,54 @@ +<!doctype html> +<html class="reftest-wait"> +<title>CSS Backgrounds: local attachment content-box background scroll with padding</title> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#the-background-attachment"> +<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#the-background-clip"> +<link rel="match" href="local-attachment-content-box-scroll-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/common/rendering-utils.js"></script> +<style> +.container { + width: 100px; + height: 100px; + box-sizing: border-box; + overflow: hidden; + border: 1px solid black; + padding: 20px; + background-color: blue; + background-attachment: local; + background-clip: content-box; + display: none; +} +.content { + width: 400px; + height: 400px; +} +</style> +<div id="container1" class="container"> + <div class="content"></div> +</div> +<div id="container2" class="container"> + <div class="content"></div> +</div> +<div id="container3" class="container"> + <div class="content"></div> +</div> +<div id="container4" class="container"> + <div class="content"></div> +</div> +<script> +container1.style.display = 'block'; +container2.style.display = 'block'; +container2.scrollTo(40, 40); +container3.style.display = 'block'; +container3.scrollTo(260, 260); +container4.style.display = 'block'; +container4.scrollTo(400, 400); +waitForAtLeastOneFrame().then(() => { + container1.scrollTo(40, 40); + container2.scrollTo(0, 0); + container3.scrollTo(400, 400); + container4.scrollTo(260, 260); + takeScreenshot(); +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value.html b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value.html new file mode 100644 index 0000000..96097e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value.html
@@ -0,0 +1,12 @@ +<!doctype html> +<meta charset="utf-8"> +<link rel="help" href="https://crbug.com/1204782"> +<title>Serialize transform components must not crash when the internal CSS value is null</title> + +<script> + var v98 = new CSSUnitValue(1, "px"); + var v100 = v98.div(CSS.px(1)); + var v106 = v98.mul(v100); + var v201 = new CSSTranslate(v106, v98, v98); + v201.toString() +</script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html index a23b547..953b83f 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html
@@ -22,7 +22,7 @@ // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement function getTransformedValue(C, V) { // Get the right interval - const n = V.length - 1; + const n = V.length; const k = C == 1 ? n - 1 : Math.floor(C * n); return V[k]; }
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html index c141043..a2351cb 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-component-transfer-expected.html
@@ -2,7 +2,7 @@ <canvas id="canvas" width="500" height="100"></canvas> <svg width="0", height="0"> <defs> - <filter id="Identity" filterUnits="objectBoundingBox" + <filter color-interpolation-filters='sRGB' id="Identity" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%"> <feComponentTransfer> <feFuncR type="identity"/> @@ -11,28 +11,28 @@ <feFuncA type="identity"/> </feComponentTransfer> </filter> - <filter id="Table"> + <filter color-interpolation-filters='sRGB' id="Table"> <feComponentTransfer> - <feFuncR type="table" tableValues="0 2 0.5 0"/> + <feFuncR type="table" tableValues="0 2 0.5 1"/> <feFuncG type="table" tableValues="1 -1 5 0"/> <feFuncB type="table" tableValues="0 1 1 0"/> </feComponentTransfer> </filter> - <filter id="Discrete"> + <filter color-interpolation-filters='sRGB' id="Discrete"> <feComponentTransfer> - <feFuncR type="discrete" tableValues="0 2 0.5 0"/> + <feFuncR type="discrete" tableValues="0 2 0.5 1"/> <feFuncG type="discrete" tableValues="1 -1 5 0"/> <feFuncB type="discrete" tableValues="0 1 1 0"/> </feComponentTransfer> </filter> - <filter id="Linear"> + <filter color-interpolation-filters='sRGB' id="Linear"> <feComponentTransfer> <feFuncR type="linear" slope=".5" intercept=".25"/> <feFuncG type="linear" slope="1.5" intercept="0"/> <feFuncB type="linear" slope="-0.5" intercept=".5"/> </feComponentTransfer> </filter> - <filter id="Gamma"> + <filter color-interpolation-filters='sRGB' id="Gamma"> <feComponentTransfer> <feFuncR type="gamma" amplitude="2" exponent="5" offset="-0.5"/> <feFuncG type="gamma" amplitude="0.9" exponent="3" offset="0.3"/>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html index f8dba9bb..896a935 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix-expected.html
@@ -1,21 +1,55 @@ +<!DOCTYPE html> +<style type="text/css"> + canvas { + margin: 5px; + } +</style> <body> - <canvas id="canvas"></canvas> <svg width="0" height="0"> - <filter id="emboss"> - <feConvolveMatrix - kernelMatrix="3 0 0 - 0 0 0 - 0 0 -3"/> + <filter color-interpolation-filters='sRGB' id="justKernel"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3"/> + </filter> + <filter color-interpolation-filters='sRGB' id="preserveAlpha"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3" + preserveAlpha="true"/> + </filter> + <filter color-interpolation-filters='sRGB' id="target"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3" + targetX="2" targetY="2"/> + </filter> + <filter color-interpolation-filters='sRGB' id="divisor"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3" + divisor="3"/> + </filter> + <filter color-interpolation-filters='sRGB' id="bias"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3" + bias="0.5"/> + </filter> + <filter color-interpolation-filters='sRGB' id="edgeMode"> + <feConvolveMatrix + kernelMatrix="3 0 0 0 0 0 0 0 -3" + edgeMode="wrap"/> </filter> </svg> </body> <script type="text/javascript"> -const canvas = document.getElementById("canvas"); -const ctx = canvas.getContext("2d"); +const filters = [ + "url('#justKernel')", + "url('#preserveAlpha')", + "url('#target')", + "url('#divisor')", + "url('#bias')", + "url('#edgeMode')", +]; -function draw() { - ctx.fillRect(20, 20, 100, 100); +function draw(ctx) { + ctx.fillRect(0, 20, 120, 100); ctx.beginPath(); ctx.arc(150, 70, 50, 0, 2*Math.PI); @@ -29,10 +63,15 @@ ctx.fill(); } -ctx.fillStyle = "rgba(0,255,0,0.5)"; -draw(); -ctx.fillStyle = "rgba(255,0,255,0.5)"; -ctx.filter = "url('#emboss')"; -draw(); - +for (f of filters) { + const canvas = document.createElement("canvas"); + document.body.prepend(canvas); + const ctx = canvas.getContext("2d"); + ctx.filter = "blur(0px)"; + ctx.fillStyle = "rgba(0,255,0,0.5)"; + draw(ctx); + ctx.fillStyle = "rgba(255,0,255,0.5)"; + ctx.filter = f; + draw(ctx); +} </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html index c565107..157deec 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html
@@ -1,38 +1,59 @@ +<!DOCTYPE html> <head> <link rel="match" href="canvas-filter-object-convolve-matrix-expected.html"> + <style type="text/css"> + canvas { + margin: 5px; + } + </style> </head> <body> - <canvas id="canvas"></canvas> </body> <script> - const canvas = document.getElementById("canvas"); +function makeConvolveFilter(options) { + const KERNEL_MATRIX = [ + [3, 0, 0], + [0, 0, 0], + [0, 0, -3], + ]; + + options = Object.assign(options, {kernelMatrix: KERNEL_MATRIX}); + return new CanvasFilter({convolveMatrix: options}); +} + +const test_cases = [ + {}, + {preserveAlpha: true}, + {targetX: 2, targetY: 2}, + {divisor: 3}, + {bias: 0.5}, + {edgeMode: "wrap"} +]; + +function draw(ctx) { + ctx.fillRect(0, 20, 120, 100); + + ctx.beginPath(); + ctx.arc(150, 70, 50, 0, 2*Math.PI); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(220, 20); + ctx.lineTo(170, 120); + ctx.lineTo(270, 120); + ctx.lineTo(220, 20); + ctx.fill(); +} + +for (tc of test_cases) { + const canvas = document.createElement("canvas"); + document.body.prepend(canvas); const ctx = canvas.getContext("2d"); - - const convolveFilter = new CanvasFilter({convolveMatrix: { - kernelMatrix: [ - [3, 0, 0], - [0, 0, 0], - [0, 0, -3], - ], - }}); - - function draw() { - ctx.fillRect(20, 20, 100, 100); - - ctx.beginPath(); - ctx.arc(150, 70, 50, 0, 2*Math.PI); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(220, 20); - ctx.lineTo(170, 120); - ctx.lineTo(270, 120); - ctx.lineTo(220, 20); - ctx.fill(); - } + ctx.filter = "blur(0px)"; ctx.fillStyle = "rgba(0,255,0,0.5)"; - draw(); + draw(ctx); ctx.fillStyle = "rgba(255,0,255,0.5)"; - ctx.filter = convolveFilter; - draw(); + ctx.filter = makeConvolveFilter(tc); + draw(ctx); +} </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html index f59293e..e4e1d94 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html
@@ -23,7 +23,7 @@ // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement function getTransformedValue(C, V) { // Get the right interval - const n = V.length - 1; + const n = V.length; const k = C == 1 ? n - 1 : Math.floor(C * n); return V[k]; }
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js index 9dbbb79..75b57ff 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.worker.js
@@ -19,7 +19,7 @@ // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement function getTransformedValue(C, V) { // Get the right interval - const n = V.length - 1; + const n = V.length; const k = C == 1 ? n - 1 : Math.floor(C * n); return V[k]; }
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/filters.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/filters.yaml index a8825d4..3ba9bd6 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/filters.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/element/filters.yaml
@@ -271,7 +271,7 @@ // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement function getTransformedValue(C, V) { // Get the right interval - const n = V.length - 1; + const n = V.length; const k = C == 1 ? n - 1 : Math.floor(C * n); return V[k]; }
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/filters.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/filters.yaml index 75ff84c0..d51b7f8 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/filters.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml/offscreen/filters.yaml
@@ -244,7 +244,7 @@ // From https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement function getTransformedValue(C, V) { // Get the right interval - const n = V.length - 1; + const n = V.length; const k = C == 1 ? n - 1 : Math.floor(C * n); return V[k]; }
diff --git a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html index 11f2540..60b4ed0 100644 --- a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html +++ b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html
@@ -21,12 +21,12 @@ assert_equals(ssrcs.length, 1); if (ssrcs[0].captureTimestamp != undefined) { resolve(ssrcs[0].captureTimestamp); - return; + return true; } } - t.step_timeout(listen, 0); + return false; }; - listen(); + t.step_wait(listen, 'No abs-capture-time capture time header extension.'); }); } @@ -35,7 +35,8 @@ for (const kind of ['audio', 'video']) { promise_test(async t => { const [caller, callee] = await initiateSingleTrackCall( - t, {[kind]: true}, false, false); + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */false, + /* absCaptureTimeAnswered= */false); const receiver = callee.getReceivers()[0]; for (const ssrc of await listenForSSRCs(t, receiver)) { @@ -47,7 +48,8 @@ promise_test(async t => { const [caller, callee] = await initiateSingleTrackCall( - t, {[kind]: true}, false, false); + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */false, + /* absCaptureTimeAnswered= */false); const receiver = callee.getReceivers()[0]; for (const ssrc of await listenForSSRCs(t, receiver)) { @@ -59,7 +61,8 @@ promise_test(async t => { const [caller, callee] = await initiateSingleTrackCall( - t, {[kind]: true}, true, true); + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */true, + /* absCaptureTimeAnswered= */true); const receiver = callee.getReceivers()[0]; await listenForCaptureTimestamp(t, receiver); }, '[' + kind + '] getSynchronizationSources() should contain ' + @@ -72,7 +75,8 @@ // `callee`. promise_test(async t => { const [caller, callee] = await initiateSingleTrackCall( - t, {audio: true, video: true}, true, true); + t, /* caps= */{audio: true, video: true}, + /* absCaptureTimeOffered= */true, /* absCaptureTimeAnswered= */true); const receivers = callee.getReceivers(); assert_equals(receivers.length, 2);
diff --git a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt new file mode 100644 index 0000000..4ccdd8f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS [audio] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is not offered +PASS [audio] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is offered, but not answered +FAIL [audio] getSynchronizationSources() should contain senderCaptureTimeOffset if absolute capture time RTP header extension is negotiated assert_true: expected true got false +PASS [video] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is not offered +PASS [video] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is offered, but not answered +FAIL [video] getSynchronizationSources() should contain senderCaptureTimeOffset if absolute capture time RTP header extension is negotiated assert_true: expected true got false +FAIL Audio and video RTCRtpSynchronizationSource.senderCaptureTimeOffset must be zero assert_equals: expected (number) 0 but got (undefined) undefined +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html new file mode 100644 index 0000000..63ad9bf --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset.html
@@ -0,0 +1,92 @@ +<!doctype html> +<meta charset=utf-8> +<!-- This file contains a test that waits for 2 seconds. --> +<meta name="timeout" content="long"> +<title>senderCaptureTimeOffset attribute in RTCRtpSynchronizationSource</title> +<div><video id="remote" width="124" height="124" autoplay></video></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/webrtc/RTCPeerConnection-helper.js"></script> +<script src="/webrtc/RTCStats-helper.js"></script> +<script src="/webrtc-extensions/RTCRtpSynchronizationSource-helper.js"></script> +<script> +'use strict'; + +function listenForSenderCaptureTimeOffset(t, receiver) { + return new Promise((resolve) => { + function listen() { + const ssrcs = receiver.getSynchronizationSources(); + assert_true(ssrcs != undefined); + if (ssrcs.length > 0) { + assert_equals(ssrcs.length, 1); + if (ssrcs[0].captureTimestamp != undefined) { + resolve(ssrcs[0].senderCaptureTimeOffset); + return true; + } + } + return false; + }; + t.step_wait(listen, 'No abs-capture-time capture time header extension.'); + }); +} + +// Passes if `getSynchronizationSources()` contains `senderCaptureTimeOffset` if +// and only if expected. +for (const kind of ['audio', 'video']) { + promise_test(async t => { + const [caller, callee] = await initiateSingleTrackCall( + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */false, + /* absCaptureTimeAnswered= */false); + const receiver = callee.getReceivers()[0]; + + for (const ssrc of await listenForSSRCs(t, receiver)) { + assert_equals(typeof ssrc.senderCaptureTimeOffset, 'undefined'); + } + }, '[' + kind + '] getSynchronizationSources() should not contain ' + + 'senderCaptureTimeOffset if absolute capture time RTP header extension ' + + 'is not offered'); + + promise_test(async t => { + const [caller, callee] = await initiateSingleTrackCall( + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */false, + /* absCaptureTimeAnswered= */false); + const receiver = callee.getReceivers()[0]; + + for (const ssrc of await listenForSSRCs(t, receiver)) { + assert_equals(typeof ssrc.senderCaptureTimeOffset, 'undefined'); + } + }, '[' + kind + '] getSynchronizationSources() should not contain ' + + 'senderCaptureTimeOffset if absolute capture time RTP header extension ' + + 'is offered, but not answered'); + + promise_test(async t => { + const [caller, callee] = await initiateSingleTrackCall( + t, /* caps= */{[kind]: true}, /* absCaptureTimeOffered= */true, + /* absCaptureTimeAnswered= */true); + const receiver = callee.getReceivers()[0]; + let senderCaptureTimeOffset = await listenForSenderCaptureTimeOffset( + t, receiver); + assert_true(senderCaptureTimeOffset != undefined); + }, '[' + kind + '] getSynchronizationSources() should contain ' + + 'senderCaptureTimeOffset if absolute capture time RTP header extension ' + + 'is negotiated'); +} + +// Passes if `senderCaptureTimeOffset` is zero, which is expected since the test +// creates a local peer connection between `caller` and `callee`. +promise_test(async t => { + const [caller, callee] = await initiateSingleTrackCall( + t, /* caps= */{audio: true, video: true}, + /* absCaptureTimeOffered= */true, /* absCaptureTimeAnswered= */true); + const receivers = callee.getReceivers(); + assert_equals(receivers.length, 2); + + for (let i = 0; i < 2; ++i) { + let senderCaptureTimeOffset = await listenForSenderCaptureTimeOffset( + t, receivers[i]); + assert_equals(senderCaptureTimeOffset, 0); + } +}, 'Audio and video RTCRtpSynchronizationSource.senderCaptureTimeOffset must ' + + 'be zero'); + +</script>
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt index f66de02..77bd13b1 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is navigated. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". @@ -41,6 +41,8 @@ PASS window.cached_navigator_connection.onchange is null PASS window.cached_navigator_connection.ontypechange is null PASS window.cached_navigator_connection.saveData is false +PASS window.cached_navigator_devicePosture.onchange is null +PASS window.cached_navigator_devicePosture.type is 'no-fold' PASS window.cached_navigator_hid.onconnect is null PASS window.cached_navigator_hid.ondisconnect is null PASS window.cached_navigator_managed.onmanagedconfigurationchange is null
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt index 0fd61dc3..15f84a3 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". @@ -41,6 +41,8 @@ PASS window.cached_navigator_connection.onchange is null PASS window.cached_navigator_connection.ontypechange is null PASS window.cached_navigator_connection.saveData is false +PASS window.cached_navigator_devicePosture.onchange is null +PASS window.cached_navigator_devicePosture.type is 'no-fold' PASS window.cached_navigator_hid.onconnect is null PASS window.cached_navigator_hid.ondisconnect is null PASS window.cached_navigator_managed.onmanagedconfigurationchange is null
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt index 708b3331..d1ec601 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". @@ -41,6 +41,8 @@ PASS window.cached_navigator_connection.onchange is null PASS window.cached_navigator_connection.ontypechange is null PASS window.cached_navigator_connection.saveData is false +PASS window.cached_navigator_devicePosture.onchange is null +PASS window.cached_navigator_devicePosture.type is 'no-fold' PASS window.cached_navigator_hid.onconnect is null PASS window.cached_navigator_hid.ondisconnect is null PASS window.cached_navigator_managed.onmanagedconfigurationchange is null
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt index a70a3b08..e740586 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is navigated. Test should not crash and properties read from the cached DOMWindow should be identical to properties through the 'current' DOMWindow. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". @@ -39,6 +39,8 @@ PASS oldChildWindow.navigator.connection.saveData is newChildWindow.navigator.connection.saveData PASS oldChildWindow.navigator.cookieEnabled is newChildWindow.navigator.cookieEnabled PASS oldChildWindow.navigator.deviceMemory is newChildWindow.navigator.deviceMemory +PASS oldChildWindow.navigator.devicePosture.onchange is newChildWindow.navigator.devicePosture.onchange +PASS oldChildWindow.navigator.devicePosture.type is newChildWindow.navigator.devicePosture.type PASS oldChildWindow.navigator.doNotTrack is newChildWindow.navigator.doNotTrack PASS oldChildWindow.navigator.hardwareConcurrency is newChildWindow.navigator.hardwareConcurrency PASS oldChildWindow.navigator.hid.onconnect is newChildWindow.navigator.hid.onconnect
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt index 5a86c2f..de01636b 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt index 344f3c6..fbea8e7 100644 --- a/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/dom/Window/resources/window-property-collector.js b/third_party/blink/web_tests/fast/dom/Window/resources/window-property-collector.js index 071f605..449a986 100644 --- a/third_party/blink/web_tests/fast/dom/Window/resources/window-property-collector.js +++ b/third_party/blink/web_tests/fast/dom/Window/resources/window-property-collector.js
@@ -118,6 +118,9 @@ case "navigator.vendor": expected = "window." + propertyPath; break; + case "navigator.devicePosture.type": + expected = "'no-fold'"; + break; case "navigator.mediaSession.playbackState": expected = "'none'"; break;
diff --git a/third_party/blink/web_tests/http/tests/images/gif-animated-partial-load-expected.png b/third_party/blink/web_tests/http/tests/images/gif-animated-partial-load-expected.png index 0e8289cc..23d531b 100644 --- a/third_party/blink/web_tests/http/tests/images/gif-animated-partial-load-expected.png +++ b/third_party/blink/web_tests/http/tests/images/gif-animated-partial-load-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid-expected.txt new file mode 100644 index 0000000..58ad288 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid-expected.txt
@@ -0,0 +1,35 @@ +Verifies that Set-Cookie lines with invalid SameParty attribute usage file an issue. + +Issue reported: { + code : SameSiteCookieIssue + details : { + sameSiteCookieIssueDetails : { + cookieExclusionReasons : [ + [0] : ExcludeInvalidSameParty + ] + cookieUrl : https://cookie.test:8443/inspector-protocol/network/resources/set-cookie.php?cookie=name%3Dvalue%3B%20SameSite%3DStrict%3B%20SameParty%3B%20Secure + cookieWarningReasons : [ + ] + operation : SetCookie + rawCookieLine : name=value; SameSite=Strict; SameParty; Secure + siteForCookies : https://cookie.test/ + } + } +} +Issue reported: { + code : SameSiteCookieIssue + details : { + sameSiteCookieIssueDetails : { + cookieExclusionReasons : [ + [0] : ExcludeInvalidSameParty + ] + cookieUrl : https://cookie.test:8443/inspector-protocol/network/resources/set-cookie.php?cookie=name%3Dvalue%3B%20SameParty + cookieWarningReasons : [ + ] + operation : SetCookie + rawCookieLine : name=value; SameParty + siteForCookies : https://cookie.test/ + } + } +} +
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid.js b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid.js new file mode 100644 index 0000000..f809594 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/same-party-issue-invalid.js
@@ -0,0 +1,27 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(async function(testRunner) { + const {session, dp} = await testRunner.startBlank( + `Verifies that Set-Cookie lines with invalid SameParty attribute usage file an issue.\n`); + + const firstPartyUrl = 'https://cookie.test:8443/inspector-protocol/network/resources/hello-world.html'; + await session.navigate(firstPartyUrl); + + await dp.Audits.enable(); + await fetchWithSetCookieResponse('name=value; SameSite=Strict; SameParty; Secure'); + await fetchWithSetCookieResponse('name=value; SameParty'); + + testRunner.completeTest(); + + async function fetchWithSetCookieResponse(cookieLine) { + const setCookieUrl = 'https://cookie.test:8443/inspector-protocol/network/resources/set-cookie.php?cookie=' + + encodeURIComponent(cookieLine); + + const issuePromise = dp.Audits.onceIssueAdded(); + await session.evaluate(`fetch('${setCookieUrl}', {method: 'POST', credentials: 'include'})`); + const issue = await issuePromise; + testRunner.log(issue.params.issue, "Issue reported: ", ['requestId']); + } +})
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/network/resources/set-cookie.php b/third_party/blink/web_tests/http/tests/inspector-protocol/network/resources/set-cookie.php index e9c4569..17e6538e 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/network/resources/set-cookie.php +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/network/resources/set-cookie.php
@@ -2,3 +2,4 @@ header("set-cookie: " . $_GET["cookie"]); echo "set-cookie: " . $_GET["cookie"]; ?> +<!DOCTYPE html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/platform/linux/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/linux/svg/text/current-text-position-initial-expected.png index 74232274..f95b192 100644 --- a/third_party/blink/web_tests/platform/linux/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/linux/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png index c34b3a70..c003c54 100644 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png index adbcba6..c0b71318 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/current-text-position-initial-expected.png index 983f542..f5e9e6ba 100644 --- a/third_party/blink/web_tests/platform/mac/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/mac/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/custom/text-linking-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/custom/text-linking-expected.png new file mode 100644 index 0000000..b8f1576 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/custom/text-linking-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/caret-in-svg-text-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/caret-in-svg-text-expected.txt new file mode 100644 index 0000000..0ca694a --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/caret-in-svg-text-expected.txt
@@ -0,0 +1,7 @@ +Sheriff Woody +שדגש + +Failure. Was: 20,16,0,18, expected: 20,566,0,18 +Failure. Was: 113,16,0,18, expected: 114,566,0,18 +Failure. Was: 20,36,0,18, expected: 58,546,0,18 +Failure. Was: 57,36,0,18, expected: 20,546,0,18
diff --git a/third_party/blink/web_tests/platform/win/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/win/svg/text/current-text-position-initial-expected.png index 8694311..b3a8d8d 100644 --- a/third_party/blink/web_tests/platform/win/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/win/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png index 4ed1caf..a28e9ccf 100644 --- a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png +++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/current-text-position-initial-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/svg/text/current-text-position-initial.html b/third_party/blink/web_tests/svg/text/current-text-position-initial.html index 405cb46b..9540c42 100644 --- a/third_party/blink/web_tests/svg/text/current-text-position-initial.html +++ b/third_party/blink/web_tests/svg/text/current-text-position-initial.html
@@ -3,29 +3,37 @@ body { margin: 0; } </style> -<svg xmlns="http://www.w3.org/2000/svg" width="384" height="256" viewBox="0 0 384 256"> -<g transform="translate(192,128)"> +<svg xmlns="http://www.w3.org/2000/svg" width="384" height="64" viewBox="0 0 384 64"> +<g transform="translate(192,32)"> <text font-size="20px">LTR horizonal</text> <circle cx="0" cy="0" r="4" fill="red" /> </g> </svg> -<svg xmlns="http://www.w3.org/2000/svg" width="384" height="256" viewBox="0 0 384 256"> -<g transform="translate(192,128)"> +<svg xmlns="http://www.w3.org/2000/svg" width="384" height="64" viewBox="0 0 384 64"> +<g transform="translate(192,32)"> <text font-size="20px" direction="rtl">سلام RTL horizonal</text> <circle cx="0" cy="0" r="4" fill="red" /> </g> </svg> -<svg xmlns="http://www.w3.org/2000/svg" width="384" height="256" viewBox="0 0 384 256"> -<g transform="translate(192,128)"> +<svg xmlns="http://www.w3.org/2000/svg" width="384" height="64" viewBox="0 0 384 64" style="zoom:2"> +<g transform="translate(96,32)"> +<text font-size="20px" text-rendering="geometricPrecision">LTR geometricPrecision</text> +<circle cx="0" cy="0" r="4" fill="red" /> +</g> +</svg> +<br> + +<svg xmlns="http://www.w3.org/2000/svg" width="64" height="256" viewBox="0 0 64 256"> +<g transform="translate(32, 28)"> <text font-size="20px" writing-mode="tb">LTR vertical</text> <circle cx="0" cy="0" r="4" fill="red" /> </g> </svg> -<svg xmlns="http://www.w3.org/2000/svg" width="384" height="256" viewBox="0 0 384 256"> -<g transform="translate(192,128)"> +<svg xmlns="http://www.w3.org/2000/svg" width="64" height="256" viewBox="0 0 64 256"> +<g transform="translate(32,128)"> <text font-size="20px" direction="rtl" writing-mode="tb">سلام RTL vertical</text> <circle cx="0" cy="0" r="4" fill="red" /> </g>
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt index 8c0151859..600b33b 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is navigated. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt index 2687dfd..9d79d99 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt index cebe457..7a49e43 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt index b3eb008..11c8aa3 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is navigated. Test should not crash and properties read from the cached DOMWindow should be identical to properties through the 'current' DOMWindow. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt index e805961..c87133e9 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt index 5ddfc7c78..0b840d7 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 148: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. +CONSOLE WARNING: line 151: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/README.md b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/README.md new file mode 100644 index 0000000..ff19f39 --- /dev/null +++ b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/README.md
@@ -0,0 +1 @@ +This suite runs tests with `--force-fieldtrials=WebRTC-IncludeCaptureClockOffset/Enabled/`.
diff --git a/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/README.txt b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/README.txt new file mode 100644 index 0000000..ff19f39 --- /dev/null +++ b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/README.txt
@@ -0,0 +1 @@ +This suite runs tests with `--force-fieldtrials=WebRTC-IncludeCaptureClockOffset/Enabled/`.
diff --git a/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt new file mode 100644 index 0000000..6ed864d --- /dev/null +++ b/third_party/blink/web_tests/virtual/webrtc-extensions-senderCaptureTimeOffset/external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-senderCaptureTimeOffset-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS [audio] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is not offered +PASS [audio] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is offered, but not answered +PASS [audio] getSynchronizationSources() should contain senderCaptureTimeOffset if absolute capture time RTP header extension is negotiated +PASS [video] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is not offered +PASS [video] getSynchronizationSources() should not contain senderCaptureTimeOffset if absolute capture time RTP header extension is offered, but not answered +PASS [video] getSynchronizationSources() should contain senderCaptureTimeOffset if absolute capture time RTP header extension is negotiated +PASS Audio and video RTCRtpSynchronizationSource.senderCaptureTimeOffset must be zero +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt index 14c56bd..c5cf3d3 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -1695,6 +1695,12 @@ getter beta getter gamma method constructor +interface DevicePosture : EventTarget + attribute @@toStringTag + getter onchange + getter type + method constructor + setter onchange interface Document : Node attribute @@toStringTag attribute @@unscopables @@ -5674,6 +5680,7 @@ getter cookieEnabled getter credentials getter deviceMemory + getter devicePosture getter doNotTrack getter geolocation getter hardwareConcurrency
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/register-service-worker.https.html b/third_party/blink/web_tests/wpt_internal/prerender/register-service-worker.https.html new file mode 100644 index 0000000..05ff5c1 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/register-service-worker.https.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>Registration of a new service worker in a prerendered page</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +<body> +<script> +const PAGE_URL = 'resources/register-service-worker.html'; + +// To make sure the service worker registered by the prerendered page starts up, +// this test sends messages as the following sequence: +// prerendered page => service worker => prerendered page => main page. +promise_test(async t => { + const bc = new BroadcastChannel('prerender-channel'); + t.add_cleanup(_ => bc.close()); + + const gotMessage = new Promise(resolve => { + bc.addEventListener('message', e => { + resolve(e.data); + }, { + once: true + }); + }); + + startPrerendering(PAGE_URL); + + const result = await gotMessage; + assert_equals(result, 'postmessage to client'); +}, 'New service worker should be registered in a prerendered page'); + +</script> +</body>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/register-service-worker.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/register-service-worker.html new file mode 100644 index 0000000..2a63775 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/register-service-worker.html
@@ -0,0 +1,40 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +<body> +<script> +const SCOPE = './'; +const WORKER_URL = './postmessage-to-client-worker.js'; + +// This page tests behavior of a service worker before activation, so it should +// never be activated. +document.onprerenderingchange = () => assert_not_reached(); + +async function unregisterServiceWorker(scope) { + const registration = await navigator.serviceWorker.getRegistration(scope); + if (!registration) + return; + return registration.unregister(); +} + +async function registerServiceWorker() { + assert_true(document.prerendering); + + await unregisterServiceWorker(SCOPE); + const registration = + await navigator.serviceWorker.register(WORKER_URL, {scope: SCOPE}); + + const message = await new Promise(resolve => { + navigator.serviceWorker.onmessage = resolve; + get_newest_worker(registration).postMessage('invoke onmessage handler'); + }); + await registration.unregister(); + + const bc = new BroadcastChannel('prerender-channel'); + bc.postMessage(message.data); + bc.close(); +} + +registerServiceWorker(); +</script> +</body>
diff --git a/third_party/wuffs/config.gni b/third_party/wuffs/config.gni index 40bc975d..05680920 100644 --- a/third_party/wuffs/config.gni +++ b/third_party/wuffs/config.gni
@@ -3,5 +3,5 @@ # found in the LICENSE file. declare_args() { - use_wuffs_gif_parser = true + use_wuffs_gif_parser = false }
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 939b07b..9aa0d04d 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -15845,6 +15845,15 @@ </description> </action> +<action name="MobileTabGridSelectionDone"> + <owner>mrefaat@chromium.org</owner> + <owner>michaeldo@chromium.org</owner> + <description> + User in the iOS tab grid used the Done button to exit selection mode and + return to regular or incognito tabs panel. + </description> +</action> + <action name="MobileTabGridSelectRegularPanel"> <owner>edchin@chromium.org</owner> <owner>marq@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 96855d8..563a858 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -23785,6 +23785,21 @@ <int value="1" label="Reused lock"/> </enum> +<enum name="EnterpriseFilesystemUploadAttemptCount"> + <int value="0" label="File not renamed"/> + <int value="1" label="Renamed with suffix (1)"/> + <int value="2" label="Renamed with suffix (2)"/> + <int value="3" label="Renamed with suffix (3)"/> + <int value="4" label="Renamed with suffix (4)"/> + <int value="5" label="Renamed with suffix (5)"/> + <int value="6" label="Renamed with suffix (6)"/> + <int value="7" label="Renamed with suffix (7)"/> + <int value="8" label="Renamed with suffix (8)"/> + <int value="9" label="Renamed with suffix (9)"/> + <int value="1000" label="TimestampBasedName"/> + <int value="2000" label="Abandoned upload"/> +</enum> + <enum name="EnterpriseInitialEnrollmentRequirement"> <obsolete> Removed in M91 since the data is not monitored. @@ -44002,6 +44017,15 @@ <int value="2" label="Generation failed (shared text)"/> </enum> +<enum name="LinkGenerationState"> + <int value="0" label="kNotStarted: Link generation is not strated."/> + <int value="1" + label="kNeedsNewCandidate: New candidate selector is being generated."/> + <int value="2" label="kTestCandidate: Candidate selector is being tested."/> + <int value="3" label="kFailure: Link generation completed with failure."/> + <int value="4" label="kSuccess: Link generation completed with success."/> +</enum> + <enum name="LinkMonitorFailureType"> <int value="0" label="Local MAC Address Not Found"/> <int value="1" label="Client Startup Failure"/> @@ -44009,6 +44033,12 @@ <int value="3" label="Failure Threshold Reached"/> </enum> +<enum name="LinkToTextDiagnoseStatus"> + <int value="0" label="Show sharing hub is requested for highlighted text"/> + <int value="1" label="Selector is requested for highlighted text"/> + <int value="2" label="Selector is received for highlighted text"/> +</enum> + <enum name="LinkToTextShouldOfferResult"> <int value="0" label="Success"/> <int value="1" label="Rejected in JavaScript (deprecated)"/>
diff --git a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS index ac34fb6e..84747c0 100644 --- a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS +++ b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
@@ -1,4 +1,5 @@ ajuma@chromium.org +alcooper@chromium.org alexilin@chromium.org altimin@chromium.org anise@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/android/histograms.xml b/tools/metrics/histograms/histograms_xml/android/histograms.xml index 8d026c60..52052e57c 100644 --- a/tools/metrics/histograms/histograms_xml/android/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/android/histograms.xml
@@ -2625,7 +2625,7 @@ <histogram name="Android.WebView.AndroidX.ApiCall" enum="AndroidXWebkitApiCall" expires_after="2022-01-31"> - <owner>laisminchillo@chromium.org</owner> + <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Records calls to WebView APIs from AndroidX. Some AndroidX-originating calls @@ -2694,15 +2694,15 @@ <histogram name="Android.WebView.ClearProxyOverride" units="units" expires_after="2021-08-01"> - <owner>laisminchillo@chromium.org</owner> + <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary>Records ClearProxyOverride calls.</summary> </histogram> <histogram name="Android.WebView.ComponentUpdater.CPSDirectorySize" units="KB" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Size on disk taken by the ComponentsProviderService serving directory. This @@ -2712,8 +2712,8 @@ <histogram name="Android.WebView.ComponentUpdater.CUSDirectorySize" units="KB" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Size on disk taken by the AwComponentUpdateService directory. This is logged @@ -2723,8 +2723,8 @@ <histogram name="Android.WebView.ComponentUpdater.GetFilesDuration" units="ms" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Duration of ComponentsProviderService getFilesForComponent request. This @@ -2735,8 +2735,8 @@ <histogram name="Android.WebView.ComponentUpdater.GetFilesResult" enum="WebViewComponentUpdaterGetFilesResult" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Logs the result of ComponentsProviderService getFilesForComponent request. @@ -2747,8 +2747,8 @@ <histogram name="Android.WebView.ComponentUpdater.UnexpectedExit" enum="Boolean" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Whether AwComponentUpdateService quit unexpectedly on the previous run. This @@ -2759,8 +2759,8 @@ <histogram name="Android.WebView.ComponentUpdater.UpdateJobDuration" units="ms" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Duration of AwComponentUpdateService update job. This job is responsible for @@ -2770,8 +2770,8 @@ <histogram name="Android.WebView.ComponentUpdater.UpdateJobFilesChanged" units="count" expires_after="2021-10-08"> - <owner>laisminchillo@chromium.org</owner> <owner>nator@chromium.org</owner> + <owner>hazems@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> How many components were updated by AwComponentUpdateService update job. @@ -3228,7 +3228,7 @@ <histogram name="Android.WebView.SetProxyOverride.BypassRules" enum="BooleanPresent" expires_after="2021-08-01"> - <owner>laisminchillo@chromium.org</owner> + <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Records whether bypass rules were present in SetProxyOverride calls. @@ -3237,7 +3237,7 @@ <histogram name="Android.WebView.SetProxyOverride.ProxySchemeFilterType" enum="AndroidWebViewProxySchemeFilterType" expires_after="2021-08-01"> - <owner>laisminchillo@chromium.org</owner> + <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary> Records the type of scheme filter in SetProxyOverride calls. @@ -3246,7 +3246,7 @@ <histogram name="Android.WebView.SetProxyOverride.ProxyUrlType" enum="AndroidWebViewProxyUrlType" expires_after="2021-08-01"> - <owner>laisminchillo@chromium.org</owner> + <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary>Records the type of url in SetProxyOverride calls.</summary> </histogram> @@ -3388,7 +3388,6 @@ <histogram name="Android.WebView.SupportLibrary.ClientIsCompat" enum="WebViewClientTypeEnum" expires_after="2021-11-13"> - <owner>laisminchillo@chromium.org</owner> <owner>ntfschr@chromium.org</owner> <owner>src/android_webview/OWNERS</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/content/histograms.xml b/tools/metrics/histograms/histograms_xml/content/histograms.xml index 1eb1f0b..da5ba13 100644 --- a/tools/metrics/histograms/histograms_xml/content/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/content/histograms.xml
@@ -1299,6 +1299,15 @@ </summary> </histogram> +<histogram name="ContentSuggestions.Feed.UploadVisibilityLog" enum="Boolean" + expires_after="2022-06-01"> + <owner>freedjm@google.com</owner> + <owner>feed@chromium.org</owner> + <summary> + Android: Reports whether the visibility log was uploaded successfully. + </summary> +</histogram> + <histogram name="ContentSuggestions.Feed.UserActions" enum="FeedUserActionType" expires_after="2022-03-01"> <owner>harringtond@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/enterprise/histograms.xml b/tools/metrics/histograms/histograms_xml/enterprise/histograms.xml index 6bd1a7b8..d1bdf70 100644 --- a/tools/metrics/histograms/histograms_xml/enterprise/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/enterprise/histograms.xml
@@ -1003,6 +1003,21 @@ </summary> </histogram> +<histogram name="Enterprise.FileSystem.Uniquifier" + enum="EnterpriseFilesystemUploadAttemptCount" expires_after="2021-11-18"> + <owner>rogerta@google.com</owner> + <owner>alicego@google.com</owner> + <owner>xanth@google.com</owner> + <summary> + The number of alternate filenames tried to avoid a filename collision when + uploading to the cloud storage provider. If there is a collision filenames + of the form "filename (%d).ext" are used for + "filename.ext", and after 10 retries we fallback to a timestamp + based name "filename - YYYY-MM-ddTHHMMss.SSS UTC+HHmm.ext", and + abandon if that fails. + </summary> +</histogram> + <histogram name="Enterprise.FirstRun.AppRestrictionLoadTime" units="ms" expires_after="2021-11-07"> <owner>wenyufu@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index cce10e4..4116e108 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -14377,6 +14377,16 @@ </summary> </histogram> +<histogram name="SharedHighlights.LinkGenerated.StateAtRequest" + enum="LinkGenerationState" expires_after="2021-11-12"> + <owner>gayane@chromium.org</owner> + <owner>chrome-shared-highlighting@google.com</owner> + <summary> + Records the state of the link generation when link to text request is + received from the browser process. + </summary> +</histogram> + <histogram name="SharedHighlights.LinkGenerated.TimeToGenerate" units="ms" expires_after="2021-12-31"> <owner>gayane@chromium.org</owner> @@ -14404,6 +14414,16 @@ </token> </histogram> +<histogram name="SharedHighlights.LinkToTextDiagnoseStatus" + enum="LinkToTextDiagnoseStatus" expires_after="2021-11-12"> + <owner>gayane@chromium.org</owner> + <owner>chrome-shared-highlighting@google.com</owner> + <summary> + Records the status of link to text flow on Android for diagnostic purposes. + Intended to be temporary for debug purposes. + </summary> +</histogram> + <histogram name="SharedMemory.MapBlockedForSecurity" enum="BooleanBlocked" expires_after="M85"> <owner>dcheng@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/web_audio/histograms.xml b/tools/metrics/histograms/histograms_xml/web_audio/histograms.xml index 332079b..b855351 100644 --- a/tools/metrics/histograms/histograms_xml/web_audio/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/web_audio/histograms.xml
@@ -97,7 +97,7 @@ </histogram> <histogram name="WebAudio.AudioContext.MaxChannelsAvailable" units="units" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary> @@ -186,7 +186,7 @@ </histogram> <histogram name="WebAudio.BiquadFilter.Type" enum="BiquadFilterType" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary> @@ -208,7 +208,7 @@ </histogram> <histogram name="WebAudio.IIRFilterNode.Order" units="units" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary> @@ -219,7 +219,7 @@ </histogram> <histogram name="WebAudio.OfflineAudioContext.ChannelCount" units="units" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <obsolete> Removed 2021-01-12. See crbug.com/1165240. </obsolete> @@ -261,7 +261,7 @@ </histogram> <histogram name="WebAudio.PannerNode.PanningModel" enum="PanningModelType" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary> @@ -274,7 +274,7 @@ </histogram> <histogram name="WebAudio.PushPullFIFO.UnderflowGlitches" enum="Boolean" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary> @@ -285,7 +285,7 @@ </histogram> <histogram name="WebAudio.PushPullFIFO.UnderflowPercentage" units="%" - expires_after="2021-07-06"> + expires_after="2022-01-06"> <owner>rtoy@chromium.org</owner> <owner>hongchan@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/xr/DIR_METADATA b/tools/metrics/histograms/histograms_xml/xr/DIR_METADATA new file mode 100644 index 0000000..8177548 --- /dev/null +++ b/tools/metrics/histograms/histograms_xml/xr/DIR_METADATA
@@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>XR" +}
diff --git a/tools/metrics/histograms/histograms_xml/xr/OWNERS b/tools/metrics/histograms/histograms_xml/xr/OWNERS new file mode 100644 index 0000000..c9016a5 --- /dev/null +++ b/tools/metrics/histograms/histograms_xml/xr/OWNERS
@@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +alcooper@chromium.org
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 04f27d6..77b1240 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -9,8 +9,8 @@ "remote_path": "perfetto_binaries/trace_processor_shell/mac/bae8193de6c017394901163b7817157342914679/trace_processor_shell" }, "linux": { - "hash": "e05c613f05fbfeefb3d15bb7ae4f545d50eb6f77", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/be406c7d16b36e0186d394f47b1bf006d5b1d8a7/trace_processor_shell" + "hash": "22bcd98570a99e8d88cb774ebb3e3f87978633a0", + "remote_path": "perfetto_binaries/trace_processor_shell/linux/cf7190e64d16e2207bf95d0a6b6a4486552db940/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/aura/client/aura_constants.cc b/ui/aura/client/aura_constants.cc index e63df4e1..e68b57bf 100644 --- a/ui/aura/client/aura_constants.cc +++ b/ui/aura/client/aura_constants.cc
@@ -28,6 +28,7 @@ DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, aura::client::FocusClient*) DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, aura::Window*) DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, std::vector<aura::Window*>*) +DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(AURA_EXPORT, ui::MenuType) namespace aura { namespace client { @@ -52,6 +53,9 @@ DEFINE_UI_CLASS_PROPERTY_KEY(bool, kDrawAttentionKey, false) DEFINE_UI_CLASS_PROPERTY_KEY(FocusClient*, kFocusClientKey, nullptr) DEFINE_UI_CLASS_PROPERTY_KEY(Window*, kHostWindowKey, nullptr) +DEFINE_UI_CLASS_PROPERTY_KEY(ui::MenuType, + kMenuType, + ui::MenuType::kRootContextMenu) DEFINE_UI_CLASS_PROPERTY_KEY(Window*, kChildModalParentKey, nullptr) DEFINE_UI_CLASS_PROPERTY_KEY(ui::ModalType, kModalKey, ui::MODAL_TYPE_NONE) DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kNameKey, nullptr)
diff --git a/ui/aura/client/aura_constants.h b/ui/aura/client/aura_constants.h index 7c48650..dad4482 100644 --- a/ui/aura/client/aura_constants.h +++ b/ui/aura/client/aura_constants.h
@@ -94,6 +94,10 @@ // WebContentsViews find the windows that should constrain NPAPI plugins. AURA_EXPORT extern const WindowProperty<Window*>* const kHostWindowKey; +// A property key to store menu type of the window. Valid only for the menu +// windows. +AURA_EXPORT extern const WindowProperty<ui::MenuType>* const kMenuType; + // The modal parent of a child modal window. AURA_EXPORT extern const WindowProperty<Window*>* const kChildModalParentKey;
diff --git a/ui/base/ui_base_types.h b/ui/base/ui_base_types.h index a74baa1..2d03f53 100644 --- a/ui/base/ui_base_types.h +++ b/ui/base/ui_base_types.h
@@ -94,6 +94,19 @@ MENU_SOURCE_TYPE_LAST = MENU_SOURCE_ADJUST_SELECTION_RESET }; +// Menu types that are used to position menu windows correctly. +enum class MenuType { + // A context menu opened either via a right click or a long tap. + kRootContextMenu = 0, + + // A root non-context menu. Example: The three dot menu. + kRootMenu, + + // A child menu opened by clicking on a nested menu entry of either + // |kRootContextMenu| or |kRootParentMenu|. + kChildMenu, +}; + COMPONENT_EXPORT(UI_BASE) MenuSourceType GetMenuSourceTypeForEvent(const ui::Event& event);
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb index afc42e0..f581e76 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -489,7 +489,7 @@ <translation id="60357267506638014">QWERTY txekiarra</translation> <translation id="604001903249547235">Hodeiko babeskopia</translation> <translation id="6040143037577758943">Itxi</translation> -<translation id="6074825444536523002">Google inprimakia</translation> +<translation id="6074825444536523002">Google-ko inprimakia</translation> <translation id="6079871810119356840">Hungariarra, QWERTY teklatuarekin</translation> <translation id="6096979789310008754">Garbitu da bilaketa-testua. Fitxategi eta karpeta guztiak daude ikusgai.</translation> <translation id="610101264611565198"><ph name="FILE_NAME" /> <ph name="FOLDER_NAME" /> karpetara eramaten</translation>
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc index 3a1baf0d..edca129 100644 --- a/ui/gl/gl_implementation.cc +++ b/ui/gl/gl_implementation.cc
@@ -182,6 +182,15 @@ } GLImplementationParts GetSoftwareGLForTestsImplementation() { +#if defined(OS_WIN) || \ + (defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(USE_OZONE)) + return GetSoftwareGLImplementation(); +#else + return GetLegacySoftwareGLImplementation(); +#endif +} + +GLImplementationParts GetSoftwareGLForHeadlessImplementation() { return GetLegacySoftwareGLImplementation(); }
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h index 054d2c29..08baf798 100644 --- a/ui/gl/gl_implementation.h +++ b/ui/gl/gl_implementation.h
@@ -135,6 +135,7 @@ GL_EXPORT GLImplementationParts GetLegacySoftwareGLImplementation(); GL_EXPORT GLImplementationParts GetSoftwareGLImplementation(); GL_EXPORT GLImplementationParts GetSoftwareGLForTestsImplementation(); +GL_EXPORT GLImplementationParts GetSoftwareGLForHeadlessImplementation(); // Set the software GL implementation on the provided command line GL_EXPORT void SetSoftwareGLCommandLineSwitches(base::CommandLine* command_line,
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc index f7928a8a..930755b 100644 --- a/ui/gl/gl_surface_egl.cc +++ b/ui/gl/gl_surface_egl.cc
@@ -794,15 +794,16 @@ bool supports_angle_metal, const base::CommandLine* command_line, std::vector<DisplayType>* init_displays) { - bool usingSoftwareGLForTests = - command_line->HasSwitch(switches::kOverrideUseSoftwareGLForTests); + bool usingSoftwareGL = + command_line->HasSwitch(switches::kOverrideUseSoftwareGLForTests) || + command_line->HasSwitch(switches::kOverrideUseSoftwareGLForHeadless); bool isSwANGLE = GetGLImplementationParts() == GetSoftwareGLImplementation(); // SwiftShader does not use the platform extensions // Note: Do not use SwiftShader if we've explicitly selected SwANGLE if (command_line->GetSwitchValueASCII(switches::kUseGL) == kGLImplementationSwiftShaderForWebGLName && - !(usingSoftwareGLForTests && isSwANGLE)) { + !(usingSoftwareGL && isSwANGLE)) { AddInitDisplay(init_displays, SWIFT_SHADER); return; }
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc index e32ad70e..6e4dd559 100644 --- a/ui/gl/gl_switches.cc +++ b/ui/gl/gl_switches.cc
@@ -132,10 +132,14 @@ // the GL output will not be correct but tests will run faster. const char kDisableGLDrawingForTests[] = "disable-gl-drawing-for-tests"; -// Forces the use of software GL instead of hardware gpu. +// Forces the use of software GL instead of hardware gpu for tests. const char kOverrideUseSoftwareGLForTests[] = "override-use-software-gl-for-tests"; +// Forces the use of software GL instead of hardware gpu for headless. +const char kOverrideUseSoftwareGLForHeadless[] = + "override-use-software-gl-for-headless"; + // Disables specified comma separated GL Extensions if found. const char kDisableGLExtensions[] = "disable-gl-extensions";
diff --git a/ui/gl/gl_switches.h b/ui/gl/gl_switches.h index 36c44d1..f023b36 100644 --- a/ui/gl/gl_switches.h +++ b/ui/gl/gl_switches.h
@@ -86,6 +86,9 @@ GL_EXPORT extern const char kDisableGLDrawingForTests[]; GL_EXPORT extern const char kOverrideUseSoftwareGLForTests[]; +// This flag is used when not enabling GPU hardware in headless mode +GL_EXPORT extern const char kOverrideUseSoftwareGLForHeadless[]; + GL_EXPORT extern const char* const kGLSwitchesCopiedFromGpuProcessHost[]; GL_EXPORT extern const int kGLSwitchesCopiedFromGpuProcessHostNumSwitches;
diff --git a/ui/gl/init/gl_factory.cc b/ui/gl/init/gl_factory.cc index be2f5b9..fb7bd81 100644 --- a/ui/gl/init/gl_factory.cc +++ b/ui/gl/init/gl_factory.cc
@@ -83,7 +83,9 @@ UMA_HISTOGRAM_ENUMERATION("GPU.PreferredGLImplementation", impl.gl); *fallback_to_software_gl = false; - if (cmd->HasSwitch(switches::kOverrideUseSoftwareGLForTests)) { + if (cmd->HasSwitch(switches::kOverrideUseSoftwareGLForHeadless)) { + impl = GetSoftwareGLForHeadlessImplementation(); + } else if (cmd->HasSwitch(switches::kOverrideUseSoftwareGLForTests)) { impl = GetSoftwareGLForTestsImplementation(); } else if (cmd->HasSwitch(switches::kUseGL)) { if (requested_implementation_gl_name == "any") {
diff --git a/ui/ozone/platform/wayland/DEPS b/ui/ozone/platform/wayland/DEPS index 2bb7f78..ea0ca3d0 100644 --- a/ui/ozone/platform/wayland/DEPS +++ b/ui/ozone/platform/wayland/DEPS
@@ -1,13 +1,5 @@ include_rules = [ - "+ui/base/buildflags.h", # Doesn't bring in all of ui/base. - "+ui/base/hit_test.h", # UI hit test doesn't bring in all of ui/base. - "+ui/base/ui_base_features.h", "+mojo/public", "+third_party/wayland", - "+ui/base/clipboard/clipboard_constants.h", - "+ui/base/dragdrop/drag_drop_types.h", - "+ui/base/dragdrop/mojom", - "+ui/base/clipboard/file_info.h", - "+ui/base/dragdrop/os_exchange_data.h", - "+ui/base/dragdrop/os_exchange_data_provider_non_backed.h", + "+ui/base", ]
diff --git a/ui/ozone/platform/wayland/host/shell_object_factory.cc b/ui/ozone/platform/wayland/host/shell_object_factory.cc index ed7842b..86bddd8 100644 --- a/ui/ozone/platform/wayland/host/shell_object_factory.cc +++ b/ui/ozone/platform/wayland/host/shell_object_factory.cc
@@ -47,7 +47,7 @@ std::unique_ptr<ShellPopupWrapper> ShellObjectFactory::CreateShellPopupWrapper( WaylandConnection* connection, WaylandWindow* wayland_window, - const gfx::Rect& bounds) { + const ShellPopupParams& params) { if (connection->shell()) { auto surface = std::make_unique<XDGSurfaceWrapperImpl>(wayland_window, connection); @@ -56,7 +56,7 @@ auto popup = std::make_unique<XDGPopupWrapperImpl>(std::move(surface), wayland_window); - return popup->Initialize(connection, bounds) ? std::move(popup) : nullptr; + return popup->Initialize(connection, params) ? std::move(popup) : nullptr; } else if (connection->shell_v6()) { auto surface = std::make_unique<ZXDGSurfaceV6WrapperImpl>(wayland_window, connection); @@ -65,7 +65,7 @@ auto popup = std::make_unique<ZXDGPopupV6WrapperImpl>(std::move(surface), wayland_window); - return popup->Initialize(connection, bounds) ? std::move(popup) : nullptr; + return popup->Initialize(connection, params) ? std::move(popup) : nullptr; } LOG(WARNING) << "Shell protocol is not available."; return nullptr;
diff --git a/ui/ozone/platform/wayland/host/shell_object_factory.h b/ui/ozone/platform/wayland/host/shell_object_factory.h index da3472a..a3860ca8 100644 --- a/ui/ozone/platform/wayland/host/shell_object_factory.h +++ b/ui/ozone/platform/wayland/host/shell_object_factory.h
@@ -7,13 +7,10 @@ #include <memory> -namespace gfx { -class Rect; -} - namespace ui { class ShellToplevelWrapper; +struct ShellPopupParams; class ShellPopupWrapper; class WaylandConnection; class WaylandWindow; @@ -36,7 +33,7 @@ std::unique_ptr<ShellPopupWrapper> CreateShellPopupWrapper( WaylandConnection* connection, WaylandWindow* wayland_window, - const gfx::Rect& bounds); + const ShellPopupParams& params); }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/shell_popup_wrapper.cc b/ui/ozone/platform/wayland/host/shell_popup_wrapper.cc index 32a28c7b..bc811be0d 100644 --- a/ui/ozone/platform/wayland/host/shell_popup_wrapper.cc +++ b/ui/ozone/platform/wayland/host/shell_popup_wrapper.cc
@@ -17,25 +17,25 @@ constexpr uint32_t kAnchorDefaultHeight = 1; constexpr uint32_t kAnchorHeightParentMenu = 30; -gfx::Rect GetAnchorRect(PopupType menu_type, +gfx::Rect GetAnchorRect(MenuType menu_type, const gfx::Rect& menu_bounds, const gfx::Rect& parent_window_bounds) { gfx::Rect anchor_rect; switch (menu_type) { - case PopupType::TYPE_NORMAL: - // Place anchor for normal popups normally. + case MenuType::kRootContextMenu: + // Place anchor for context menus normally. anchor_rect = gfx::Rect(menu_bounds.x(), menu_bounds.y(), kAnchorDefaultWidth, kAnchorDefaultHeight); break; - case PopupType::TYPE_3DOT_PARENT_MENU: - // The anchor for a parent 3-dot menu windows is positioned slightly above - // the specified bounds to ensure flipped window along y-axis won't hide - // 3-dot menu button. + case MenuType::kRootMenu: + // The anchor for parent menu windows is positioned slightly above the + // specified bounds to ensure flipped window along y-axis won't hide 3-dot + // menu button. anchor_rect = gfx::Rect(menu_bounds.x() - kAnchorDefaultWidth, menu_bounds.y() - kAnchorHeightParentMenu, kAnchorDefaultWidth, kAnchorHeightParentMenu); break; - case PopupType::TYPE_3DOT_CHILD_MENU: + case MenuType::kChildMenu: // The child menu's anchor must meet the following requirements: at some // point, the Wayland compositor can flip it along x-axis. To make sure // it's positioned correctly, place it closer to the beginning of the @@ -75,24 +75,21 @@ } } break; - case PopupType::TYPE_UNKNOWN: - NOTREACHED() << "Unsupported popup type"; - break; } return anchor_rect; } -WlAnchor GetAnchor(PopupType menu_type, const gfx::Rect& bounds) { +WlAnchor GetAnchor(MenuType menu_type, const gfx::Rect& bounds) { WlAnchor anchor = WlAnchor::None; switch (menu_type) { - case PopupType::TYPE_NORMAL: + case MenuType::kRootContextMenu: anchor = WlAnchor::TopLeft; break; - case PopupType::TYPE_3DOT_PARENT_MENU: + case MenuType::kRootMenu: anchor = WlAnchor::BottomRight; break; - case PopupType::TYPE_3DOT_CHILD_MENU: + case MenuType::kChildMenu: // Chromium may want to manually position a child menu on the left side of // its parent menu. Thus, react accordingly. Positive x means the child is // located on the right side of the parent and negative - on the left @@ -102,24 +99,21 @@ else anchor = WlAnchor::TopLeft; break; - case PopupType::TYPE_UNKNOWN: - NOTREACHED() << "Unsupported menu type"; - break; } return anchor; } -WlGravity GetGravity(PopupType menu_type, const gfx::Rect& bounds) { +WlGravity GetGravity(MenuType menu_type, const gfx::Rect& bounds) { WlGravity gravity = WlGravity::None; switch (menu_type) { - case PopupType::TYPE_NORMAL: + case MenuType::kRootContextMenu: gravity = WlGravity::BottomRight; break; - case PopupType::TYPE_3DOT_PARENT_MENU: + case MenuType::kRootMenu: gravity = WlGravity::BottomRight; break; - case PopupType::TYPE_3DOT_CHILD_MENU: + case MenuType::kChildMenu: // Chromium may want to manually position a child menu on the left side of // its parent menu. Thus, react accordingly. Positive x means the child is // located on the right side of the parent and negative - on the left @@ -129,58 +123,35 @@ else gravity = WlGravity::BottomLeft; break; - case PopupType::TYPE_UNKNOWN: - NOTREACHED() << "Unsupported menu type"; - break; } return gravity; } -WlConstraintAdjustment GetConstraintAdjustment(PopupType menu_type) { +WlConstraintAdjustment GetConstraintAdjustment(MenuType menu_type) { WlConstraintAdjustment constraint = WlConstraintAdjustment::None; switch (menu_type) { - case PopupType::TYPE_NORMAL: + case MenuType::kRootContextMenu: constraint = WlConstraintAdjustment::SlideX | WlConstraintAdjustment::SlideY | WlConstraintAdjustment::FlipY | WlConstraintAdjustment::ResizeY; break; - case PopupType::TYPE_3DOT_PARENT_MENU: + case MenuType::kRootMenu: constraint = WlConstraintAdjustment::SlideX | WlConstraintAdjustment::FlipY | WlConstraintAdjustment::ResizeY; break; - case PopupType::TYPE_3DOT_CHILD_MENU: + case MenuType::kChildMenu: constraint = WlConstraintAdjustment::SlideY | WlConstraintAdjustment::FlipX | WlConstraintAdjustment::ResizeY; break; - case PopupType::TYPE_UNKNOWN: - NOTREACHED() << "Unsupported menu type"; - break; } return constraint; } -PopupType ShellPopupWrapper::GetPopupTypeForPositioner( - PlatformWindowType type, - int last_pointer_button_pressed, - WaylandWindow* parent_window) const { - bool is_right_click_menu = - last_pointer_button_pressed & EF_RIGHT_MOUSE_BUTTON; - - // Different types of menu require different anchors, constraint adjustments, - // gravity and etc. - if (is_right_click_menu || type == PlatformWindowType::kTooltip) - return PopupType::TYPE_NORMAL; - else if (!parent_window->AsWaylandPopup()) - return PopupType::TYPE_3DOT_PARENT_MENU; - else - return PopupType::TYPE_3DOT_CHILD_MENU; -} - bool ShellPopupWrapper::CanGrabPopup(WaylandConnection* connection) const { // When drag process starts, as described the protocol - // https://goo.gl/1Mskq3, the client must have an active implicit grab. If
diff --git a/ui/ozone/platform/wayland/host/shell_popup_wrapper.h b/ui/ozone/platform/wayland/host/shell_popup_wrapper.h index 4535a5ed..57f6bc3 100644 --- a/ui/ozone/platform/wayland/host/shell_popup_wrapper.h +++ b/ui/ozone/platform/wayland/host/shell_popup_wrapper.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_SHELL_POPUP_WRAPPER_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_SHELL_POPUP_WRAPPER_H_ +#include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/platform_window/platform_window_init_properties.h" @@ -12,14 +13,6 @@ namespace ui { class WaylandConnection; -class WaylandWindow; - -enum class PopupType { - TYPE_NORMAL, - TYPE_3DOT_PARENT_MENU, - TYPE_3DOT_CHILD_MENU, - TYPE_UNKNOWN, -}; enum class WlAnchor { None, @@ -55,6 +48,11 @@ ResizeY = 32, }; +struct ShellPopupParams { + gfx::Rect bounds; + MenuType menu_type = MenuType::kRootContextMenu; +}; + inline WlConstraintAdjustment operator|(WlConstraintAdjustment a, WlConstraintAdjustment b) { return static_cast<WlConstraintAdjustment>(static_cast<uint32_t>(a) | @@ -74,24 +72,20 @@ // Initializes the popup surface. virtual bool Initialize(WaylandConnection* connection, - const gfx::Rect& bounds) = 0; + const ShellPopupParams& params) = 0; // Sends acknowledge configure event back to wayland. virtual void AckConfigure(uint32_t serial) = 0; - // Returns popup type for |type|. - PopupType GetPopupTypeForPositioner(PlatformWindowType type, - int last_pointer_button_pressed, - WaylandWindow* parent_window) const; bool CanGrabPopup(WaylandConnection* connection) const; }; -gfx::Rect GetAnchorRect(PopupType menu_type, +gfx::Rect GetAnchorRect(MenuType menu_type, const gfx::Rect& menu_bounds, const gfx::Rect& parent_window_bounds); -WlAnchor GetAnchor(PopupType menu_type, const gfx::Rect& bounds); -WlGravity GetGravity(PopupType menu_type, const gfx::Rect& bounds); -WlConstraintAdjustment GetConstraintAdjustment(PopupType menu_type); +WlAnchor GetAnchor(MenuType menu_type, const gfx::Rect& bounds); +WlGravity GetGravity(MenuType menu_type, const gfx::Rect& bounds); +WlConstraintAdjustment GetConstraintAdjustment(MenuType menu_type); } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_popup.cc b/ui/ozone/platform/wayland/host/wayland_popup.cc index dfdd706c..1ae4426 100644 --- a/ui/ozone/platform/wayland/host/wayland_popup.cc +++ b/ui/ozone/platform/wayland/host/wayland_popup.cc
@@ -44,9 +44,13 @@ const auto bounds_dip = wl::TranslateWindowBoundsToParentDIP(this, parent_window()); + ShellPopupParams params; + params.bounds = bounds_dip; + params.menu_type = + delegate()->GetMenuType().value_or(MenuType::kRootContextMenu); + ShellObjectFactory factory; - shell_popup_ = - factory.CreateShellPopupWrapper(connection(), this, bounds_dip); + shell_popup_ = factory.CreateShellPopupWrapper(connection(), this, params); if (!shell_popup_) { LOG(ERROR) << "Failed to create Wayland shell popup"; return false;
diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc index 42ac8f7..2e358d1 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
@@ -1161,6 +1161,8 @@ TEST_P(WaylandWindowTest, CanCreateMenuWindow) { MockPlatformWindowDelegate menu_window_delegate; + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); // SetPointerFocus(true) requires a WaylandPointer. wl_seat_send_capabilities( @@ -1204,6 +1206,8 @@ gfx::AcceleratedWidget menu_window_widget; EXPECT_CALL(menu_window_delegate, OnAcceleratedWidgetAvailable(_)) .WillOnce(SaveArg<0>(&menu_window_widget)); + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, widget_, gfx::Rect(0, 0, 10, 10), @@ -1225,6 +1229,8 @@ TEST_P(WaylandWindowTest, DispatchesLocatedEventsToCapturedWindow) { MockPlatformWindowDelegate menu_window_delegate; + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, widget_, gfx::Rect(10, 10, 10, 10), &menu_window_delegate); @@ -1295,6 +1301,8 @@ // If nested menu window is added, the events are still correctly translated // to the captured window. MockPlatformWindowDelegate nested_menu_window_delegate; + EXPECT_CALL(nested_menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> nested_menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, menu_window->GetWidget(), @@ -1337,6 +1345,8 @@ TEST_P(WaylandWindowTest, DispatchesLocatedEventsToCapturedWindowInTheSameStack) { MockPlatformWindowDelegate menu_window_delegate; + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, widget_, gfx::Rect(30, 40, 20, 50), &menu_window_delegate); @@ -1408,6 +1418,8 @@ TEST_P(WaylandWindowTest, DispatchesKeyboardEventToToplevelWindow) { MockPlatformWindowDelegate menu_window_delegate; + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, widget_, gfx::Rect(10, 10, 10, 10), &menu_window_delegate); @@ -1458,6 +1470,8 @@ gfx::AcceleratedWidget menu_window_widget; EXPECT_CALL(menu_window_delegate, OnAcceleratedWidgetAvailable(_)) .WillOnce(SaveArg<0>(&menu_window_widget)); + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, widget_, gfx::Rect(0, 0, 10, 10), @@ -1467,6 +1481,8 @@ Sync(); MockPlatformWindowDelegate nested_menu_window_delegate; + EXPECT_CALL(nested_menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); std::unique_ptr<WaylandWindow> nested_menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, menu_window_widget, @@ -2010,6 +2026,8 @@ // Case 1: the top menu window is positioned normally. MockPlatformWindowDelegate menu_window_delegate; + EXPECT_CALL(menu_window_delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootMenu)); gfx::Rect menu_window_bounds(gfx::Point(440, 76), menu_window_positioner.size); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( @@ -2030,6 +2048,8 @@ // Case 2: the nested menu window is positioned normally. MockPlatformWindowDelegate nested_menu_window_delegate; + EXPECT_CALL(nested_menu_window_delegate, GetMenuType()) + .WillRepeatedly(Return(MenuType::kChildMenu)); gfx::Rect nested_menu_window_bounds(gfx::Point(723, 156), nested_menu_window_positioner.size); std::unique_ptr<WaylandWindow> nested_menu_window = @@ -2198,6 +2218,8 @@ TEST_P(WaylandWindowTest, WaylandPopupSimpleParent) { VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); // WaylandPopup must ignore the parent provided by aura and should always // use focused window instead. gfx::Rect wayland_popup_bounds(gfx::Point(15, 15), gfx::Size(10, 10)); @@ -2229,6 +2251,7 @@ TEST_P(WaylandWindowTest, NestedMenuWindows) { VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()).WillOnce(Return(MenuType::kRootMenu)); gfx::Rect menu_window_bounds(gfx::Rect(4, 20, 8, 20)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), menu_window_bounds, @@ -2237,6 +2260,7 @@ VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()).WillOnce(Return(MenuType::kChildMenu)); gfx::Rect nested_menu_bounds(gfx::Rect(10, 30, 40, 20)); std::unique_ptr<WaylandWindow> nested_menu_window = CreateWaylandWindowWithParams(PlatformWindowType::kMenu, @@ -2266,6 +2290,8 @@ TEST_P(WaylandWindowTest, NestedMenuWindows1) { VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); gfx::Rect menu_window_bounds(gfx::Rect(6, 20, 8, 20)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), menu_window_bounds, @@ -2303,6 +2329,7 @@ TEST_P(WaylandWindowTest, NestedMenuWindows2) { VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()).WillOnce(Return(MenuType::kRootMenu)); gfx::Rect menu_window_bounds(gfx::Rect(10, 20, 40, 20)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), menu_window_bounds, @@ -2311,6 +2338,7 @@ VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()).WillOnce(Return(MenuType::kChildMenu)); gfx::Rect nested_menu_bounds(gfx::Rect(5, 30, 21, 20)); std::unique_ptr<WaylandWindow> nested_menu_window = CreateWaylandWindowWithParams(PlatformWindowType::kMenu, @@ -2340,6 +2368,8 @@ TEST_P(WaylandWindowTest, NestedMenuWindows3) { VerifyAndClearExpectations(); + EXPECT_CALL(delegate_, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); gfx::Rect menu_window_bounds(gfx::Rect(10, 20, 20, 20)); std::unique_ptr<WaylandWindow> menu_window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), menu_window_bounds, @@ -2477,6 +2507,8 @@ TEST_P(WaylandWindowTest, DestroysCreatesPopupsOnHideShow) { MockPlatformWindowDelegate delegate; + EXPECT_CALL(delegate, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); auto window = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), gfx::Rect(0, 0, 50, 50), &delegate); @@ -2688,6 +2720,8 @@ // Create a popup window and verify the client used correct serial. MockPlatformWindowDelegate delegate; + EXPECT_CALL(delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); auto popup = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), gfx::Rect(0, 0, 50, 50), &delegate); @@ -2732,6 +2766,8 @@ // Create a popup window and verify the client used correct serial. MockPlatformWindowDelegate delegate; + EXPECT_CALL(delegate, GetMenuType()) + .WillRepeatedly(Return(MenuType::kRootContextMenu)); auto popup = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), gfx::Rect(0, 0, 50, 50), &delegate); @@ -2807,6 +2843,8 @@ TEST_P(WaylandWindowTest, DoesNotGrabPopupIfNoSeat) { // Create a popup window and verify the grab serial is not set. MockPlatformWindowDelegate delegate; + EXPECT_CALL(delegate, GetMenuType()) + .WillOnce(Return(MenuType::kRootContextMenu)); auto popup = CreateWaylandWindowWithParams( PlatformWindowType::kMenu, window_->GetWidget(), gfx::Rect(0, 0, 50, 50), &delegate);
diff --git a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc index 0e5faf3..caae9a4 100644 --- a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc +++ b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc
@@ -112,7 +112,7 @@ XDGPopupWrapperImpl::~XDGPopupWrapperImpl() = default; bool XDGPopupWrapperImpl::Initialize(WaylandConnection* connection, - const gfx::Rect& bounds) { + const ShellPopupParams& params) { if (!connection->shell() && !connection->shell_v6()) { NOTREACHED() << "Wrong shell protocol"; return false; @@ -136,21 +136,21 @@ if (!xdg_surface_wrapper_ || !parent_xdg_surface) return false; - auto new_bounds = bounds; + auto new_params = params; // Wayland doesn't allow empty bounds. If a zero or negative size is set, the // invalid_input error is raised. Thus, use the least possible one. // WaylandPopup will update its bounds upon the following configure event. - if (new_bounds.IsEmpty()) - new_bounds.set_size({1, 1}); + if (params.bounds.IsEmpty()) + new_params.bounds.set_size({1, 1}); if (connection->shell()) - return InitializeStable(connection, new_bounds, parent_xdg_surface); + return InitializeStable(connection, new_params, parent_xdg_surface); return false; } bool XDGPopupWrapperImpl::InitializeStable( WaylandConnection* connection, - const gfx::Rect& bounds, + const ShellPopupParams& params, XDGSurfaceWrapperImpl* parent_xdg_surface) { static const struct xdg_popup_listener xdg_popup_listener = { &XDGPopupWrapperImpl::Configure, @@ -158,7 +158,7 @@ }; struct xdg_positioner* positioner = - CreatePositioner(connection, wayland_window_->parent_window(), bounds); + CreatePositioner(connection, wayland_window_->parent_window(), params); if (!positioner) return false; @@ -187,36 +187,33 @@ struct xdg_positioner* XDGPopupWrapperImpl::CreatePositioner( WaylandConnection* connection, WaylandWindow* parent_window, - const gfx::Rect& bounds) { + const ShellPopupParams& params) { struct xdg_positioner* positioner; positioner = xdg_wm_base_create_positioner(connection->shell()); if (!positioner) return nullptr; - auto menu_type = GetPopupTypeForPositioner( - wayland_window_->type(), - connection->event_source()->last_pointer_button_pressed(), parent_window); - // The parent we got must be the topmost in the stack of the same family // windows. DCHECK_EQ(parent_window->GetTopMostChildWindow(), parent_window); // Place anchor to the end of the possible position. gfx::Rect anchor_rect = GetAnchorRect( - menu_type, bounds, + params.menu_type, params.bounds, gfx::ScaleToRoundedRect(parent_window->GetBounds(), 1.0 / parent_window->buffer_scale())); xdg_positioner_set_anchor_rect(positioner, anchor_rect.x(), anchor_rect.y(), anchor_rect.width(), anchor_rect.height()); - xdg_positioner_set_size(positioner, bounds.width(), bounds.height()); - xdg_positioner_set_anchor(positioner, - TranslateAnchor(GetAnchor(menu_type, bounds))); - xdg_positioner_set_gravity(positioner, - TranslateGravity(GetGravity(menu_type, bounds))); + xdg_positioner_set_size(positioner, params.bounds.width(), + params.bounds.height()); + xdg_positioner_set_anchor( + positioner, TranslateAnchor(GetAnchor(params.menu_type, params.bounds))); + xdg_positioner_set_gravity(positioner, TranslateGravity(GetGravity( + params.menu_type, params.bounds))); xdg_positioner_set_constraint_adjustment( positioner, - TranslateContraintAdjustment(GetConstraintAdjustment(menu_type))); + TranslateContraintAdjustment(GetConstraintAdjustment(params.menu_type))); return positioner; }
diff --git a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h index 0ffd6674..a17ed71 100644 --- a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h
@@ -25,16 +25,16 @@ // XDGPopupWrapper: bool Initialize(WaylandConnection* connection, - const gfx::Rect& bounds) override; + const ShellPopupParams& params) override; void AckConfigure(uint32_t serial) override; private: bool InitializeStable(WaylandConnection* connection, - const gfx::Rect& bounds, + const ShellPopupParams& params, XDGSurfaceWrapperImpl* parent_xdg_surface_wrapper); struct xdg_positioner* CreatePositioner(WaylandConnection* connection, WaylandWindow* parent_window, - const gfx::Rect& bounds); + const ShellPopupParams& params); // xdg_popup_listener static void Configure(void* data,
diff --git a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.cc b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.cc index 393d03e..b21774f 100644 --- a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.cc +++ b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.cc
@@ -113,7 +113,7 @@ ZXDGPopupV6WrapperImpl::~ZXDGPopupV6WrapperImpl() = default; bool ZXDGPopupV6WrapperImpl::Initialize(WaylandConnection* connection, - const gfx::Rect& bounds) { + const ShellPopupParams& params) { if (!connection->shell() && !connection->shell_v6()) { NOTREACHED() << "Wrong shell protocol"; return false; @@ -137,22 +137,22 @@ if (!zxdg_surface_v6_wrapper_ || !parent_xdg_surface) return false; - auto new_bounds = bounds; + auto new_params = params; // Wayland doesn't allow empty bounds. If a zero or negative size is set, the // invalid_input error is raised. Thus, use the least possible one. // WaylandPopup will update its bounds upon the following configure event. - if (new_bounds.IsEmpty()) - new_bounds.set_size({1, 1}); + if (new_params.bounds.IsEmpty()) + new_params.bounds.set_size({1, 1}); if (connection->shell_v6()) - return InitializeV6(connection, new_bounds, parent_xdg_surface); + return InitializeV6(connection, new_params, parent_xdg_surface); return false; } bool ZXDGPopupV6WrapperImpl::InitializeV6( WaylandConnection* connection, - const gfx::Rect& bounds, + const ShellPopupParams& params, ZXDGSurfaceV6WrapperImpl* parent_xdg_surface) { static const struct zxdg_popup_v6_listener zxdg_popup_v6_listener = { &ZXDGPopupV6WrapperImpl::Configure, @@ -160,7 +160,7 @@ }; zxdg_positioner_v6* positioner = - CreatePositioner(connection, wayland_window_->parent_window(), bounds); + CreatePositioner(connection, wayland_window_->parent_window(), params); if (!positioner) return false; @@ -191,37 +191,35 @@ zxdg_positioner_v6* ZXDGPopupV6WrapperImpl::CreatePositioner( WaylandConnection* connection, WaylandWindow* parent_window, - const gfx::Rect& bounds) { + const ShellPopupParams& params) { struct zxdg_positioner_v6* positioner; positioner = zxdg_shell_v6_create_positioner(connection->shell_v6()); if (!positioner) return nullptr; - auto menu_type = GetPopupTypeForPositioner( - wayland_window_->type(), - connection->event_source()->last_pointer_button_pressed(), parent_window); - // The parent we got must be the topmost in the stack of the same family // windows. DCHECK_EQ(parent_window->GetTopMostChildWindow(), parent_window); // Place anchor to the end of the possible position. gfx::Rect anchor_rect = GetAnchorRect( - menu_type, bounds, + params.menu_type, params.bounds, gfx::ScaleToRoundedRect(parent_window->GetBounds(), 1.0 / parent_window->buffer_scale())); zxdg_positioner_v6_set_anchor_rect(positioner, anchor_rect.x(), anchor_rect.y(), anchor_rect.width(), anchor_rect.height()); - zxdg_positioner_v6_set_size(positioner, bounds.width(), bounds.height()); - zxdg_positioner_v6_set_anchor(positioner, - TranslateAnchor(GetAnchor(menu_type, bounds))); + zxdg_positioner_v6_set_size(positioner, params.bounds.width(), + params.bounds.height()); + zxdg_positioner_v6_set_anchor( + positioner, TranslateAnchor(GetAnchor(params.menu_type, params.bounds))); zxdg_positioner_v6_set_gravity( - positioner, TranslateGravity(GetGravity(menu_type, bounds))); + positioner, + TranslateGravity(GetGravity(params.menu_type, params.bounds))); zxdg_positioner_v6_set_constraint_adjustment( positioner, - TranslateConstraintAdjustment(GetConstraintAdjustment(menu_type))); + TranslateConstraintAdjustment(GetConstraintAdjustment(params.menu_type))); return positioner; }
diff --git a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h index 4c32a1e..2ee20e8 100644 --- a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h
@@ -25,16 +25,16 @@ // XDGPopupWrapper: bool Initialize(WaylandConnection* connection, - const gfx::Rect& bounds) override; + const ShellPopupParams& params) override; void AckConfigure(uint32_t serial) override; private: bool InitializeV6(WaylandConnection* connection, - const gfx::Rect& bounds, + const ShellPopupParams& params, ZXDGSurfaceV6WrapperImpl* parent_zxdg_surface_v6_wrapper); struct zxdg_positioner_v6* CreatePositioner(WaylandConnection* connection, WaylandWindow* parent_window, - const gfx::Rect& bounds); + const ShellPopupParams& bounds); // zxdg_popup_v6_listener static void Configure(void* data,
diff --git a/ui/ozone/public/platform_keyboard_hook.h b/ui/ozone/public/platform_keyboard_hook.h index e584c1d..6fee745 100644 --- a/ui/ozone/public/platform_keyboard_hook.h +++ b/ui/ozone/public/platform_keyboard_hook.h
@@ -7,7 +7,6 @@ #include "base/callback.h" #include "base/component_export.h" -#include "base/containers/flat_set.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace ui {
diff --git a/ui/ozone/test/mock_platform_window_delegate.h b/ui/ozone/test/mock_platform_window_delegate.h index 398c14c..93c52c2 100644 --- a/ui/ozone/test/mock_platform_window_delegate.h +++ b/ui/ozone/test/mock_platform_window_delegate.h
@@ -32,6 +32,7 @@ MOCK_METHOD1(OnActivationChanged, void(bool active)); MOCK_METHOD0(GetMinimumSizeForWindow, absl::optional<gfx::Size>()); MOCK_METHOD0(GetMaximumSizeForWindow, absl::optional<gfx::Size>()); + MOCK_METHOD0(GetMenuType, absl::optional<MenuType>()); MOCK_METHOD0(OnMouseEnter, void()); private:
diff --git a/ui/platform_window/platform_window_delegate.cc b/ui/platform_window/platform_window_delegate.cc index 31ba483..ac749bf 100644 --- a/ui/platform_window/platform_window_delegate.cc +++ b/ui/platform_window/platform_window_delegate.cc
@@ -34,4 +34,8 @@ void PlatformWindowDelegate::OnSurfaceFrameLockingChanged(bool lock) {} +absl::optional<MenuType> PlatformWindowDelegate::GetMenuType() { + return absl::nullopt; +} + } // namespace ui
diff --git a/ui/platform_window/platform_window_delegate.h b/ui/platform_window/platform_window_delegate.h index e3bd3f97..361f00d 100644 --- a/ui/platform_window/platform_window_delegate.h +++ b/ui/platform_window/platform_window_delegate.h
@@ -8,6 +8,7 @@ #include "base/component_export.h" #include "build/build_config.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/native_widget_types.h" @@ -108,6 +109,9 @@ // with lacros-chrome. virtual void OnSurfaceFrameLockingChanged(bool lock); + // Returns a menu type of the window. Valid only for the menu windows. + virtual absl::optional<MenuType> GetMenuType(); + // Called when the location of mouse pointer entered the window. This is // different from ui::ET_MOUSE_ENTERED which may not be generated when mouse // is captured either by implicitly or explicitly.
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index e9edd19..f28e1f4 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc
@@ -21,6 +21,7 @@ #include "ui/base/dragdrop/drag_drop_types.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom.h" #include "ui/base/dragdrop/os_exchange_data.h" +#include "ui/base/ui_base_types.h" #include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/events/event_utils.h" @@ -2137,8 +2138,20 @@ } if (show) { - item->GetSubmenu()->ShowAt(owner_, bounds, do_capture, - native_view_for_gestures_); + MenuHost::InitParams params; + params.parent = owner_; + params.bounds = bounds; + params.do_capture = do_capture; + params.native_view_for_gestures = native_view_for_gestures_; + + if (item->GetParentMenuItem()) { + params.menu_type = ui::MenuType::kChildMenu; + } else if (state_.context_menu) { + params.menu_type = ui::MenuType::kRootContextMenu; + } else { + params.menu_type = ui::MenuType::kRootMenu; + } + item->GetSubmenu()->ShowAt(params); // Figure out if the mouse is under the menu; if so, remember the mouse // location so we can ignore the first mouse move event(s) with that
diff --git a/ui/views/controls/menu/menu_controller.h b/ui/views/controls/menu/menu_controller.h index d61f489..490a285 100644 --- a/ui/views/controls/menu/menu_controller.h +++ b/ui/views/controls/menu/menu_controller.h
@@ -14,6 +14,7 @@ #include <vector> #include "base/compiler_specific.h" +#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/timer/timer.h"
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc index edf2bec..e54c4f40 100644 --- a/ui/views/controls/menu/menu_controller_unittest.cc +++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -42,6 +42,7 @@ #include "ui/views/widget/widget_utils.h" #if defined(USE_AURA) +#include "ui/aura/client/aura_constants.h" #include "ui/aura/client/drag_drop_client.h" #include "ui/aura/client/drag_drop_client_observer.h" #include "ui/aura/null_window_targeter.h" @@ -612,7 +613,11 @@ SubmenuView* sub_menu = parent_item->GetSubmenu(); parent_item->SetBoundsRect(parent_bounds); - sub_menu->ShowAt(owner(), parent_item->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = parent_item->bounds(); + params.do_capture = false; + sub_menu->ShowAt(params); gfx::Rect final_bounds = CalculateBubbleMenuBounds(options, item); final_bounds.Inset(border_and_shadow_insets); sub_menu->Close(); @@ -780,7 +785,11 @@ button->SetFocusBehavior(View::FocusBehavior::ALWAYS); item_view->AddChildView(button); } - menu_item()->GetSubmenu()->ShowAt(owner(), menu_item()->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = menu_item()->bounds(); + params.do_capture = false; + menu_item()->GetSubmenu()->ShowAt(params); return item_view; } @@ -1667,7 +1676,11 @@ // the MenuHost does not crash as the drag completes. TEST_F(MenuControllerTest, AsynchronousDragHostDeleted) { SubmenuView* submenu = menu_item()->GetSubmenu(); - submenu->ShowAt(owner(), menu_item()->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = menu_item()->bounds(); + params.do_capture = false; + submenu->ShowAt(params); MenuHost* host = GetMenuHost(submenu); MenuHostOnDragWillStart(host); submenu->Close(); @@ -1680,7 +1693,11 @@ // access a destroyed MenuController. This test should not cause a crash. TEST_F(MenuControllerTest, HostReceivesInputBeforeDestruction) { SubmenuView* submenu = menu_item()->GetSubmenu(); - submenu->ShowAt(owner(), menu_item()->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = menu_item()->bounds(); + params.do_capture = false; + submenu->ShowAt(params); gfx::Point location(submenu->bounds().bottom_right()); location.Offset(1, 1); @@ -1724,7 +1741,11 @@ controller->Run(owner(), nullptr, item, gfx::Rect(), MenuAnchorPosition::kBottomCenter, false, false); SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), gfx::Rect(0, 0, 100, 100), true); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 100, 100); + params.do_capture = true; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_left().x(), sub_menu->bounds().bottom_left().y() + 10); @@ -1775,8 +1796,12 @@ MenuAnchorPosition::kBottomCenter, false, false, child_window.get()); SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), gfx::Rect(0, 0, 100, 100), true, - child_window.get()); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = false; + params.native_view_for_gestures = child_window.get(); + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_left().x(), sub_menu->bounds().bottom_left().y() + 10); @@ -1825,7 +1850,11 @@ // Show a sub menu and touch outside of it. MenuItemView* item = menu_item(); SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), item->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = false; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_right()); location.Offset(1, 1); ui::TouchEvent touch_event( @@ -1869,7 +1898,11 @@ // Show a sub menu to target with a pointer selection. However have the event // occur outside of the bounds of the entire menu. SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), item->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = false; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_right()); location.Offset(1, 1); ui::MouseEvent event(ui::ET_MOUSE_PRESSED, location, location, @@ -1901,7 +1934,11 @@ // outside of the bounds of the entire menu. MenuItemView* item = menu_item(); SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), item->bounds(), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = false; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_right()); location.Offset(1, 1); ui::TouchEvent event(ui::ET_TOUCH_PRESSED, location, ui::EventTimeForNow(), @@ -1936,7 +1973,11 @@ // Show a sub menu to target with a pointer selection. However have the event // occur outside of the bounds of the entire menu. SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), item->bounds(), true); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = true; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().bottom_right()); location.Offset(1, 1); ui::MouseEvent event(ui::ET_MOUSE_PRESSED, location, location, @@ -1972,7 +2013,11 @@ // Show a sub menu to target with a tap event. SubmenuView* sub_menu = item->GetSubmenu(); - sub_menu->ShowAt(owner(), gfx::Rect(0, 0, 100, 100), true); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 100, 100); + params.do_capture = true; + sub_menu->ShowAt(params); gfx::Point location(sub_menu->bounds().CenterPoint()); ui::GestureEvent event(location.x(), location.y(), 0, ui::EventTimeForNow(), @@ -2413,7 +2458,11 @@ base_menu->SetBounds(0, 0, 200, 200); SubmenuView* base_submenu = base_menu->GetSubmenu(); base_submenu->SetBounds(0, 0, 200, 200); - base_submenu->ShowAt(owner(), gfx::Rect(0, 0, 200, 200), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 200, 200); + params.do_capture = false; + base_submenu->ShowAt(params); GetMenuHost(base_submenu) ->SetContentsView(base_submenu->GetScrollViewContainer()); @@ -2430,7 +2479,10 @@ base_submenu->AddChildView(sub_menu_item.get()); SubmenuView* sub_menu_view = sub_menu_item->GetSubmenu(); sub_menu_view->SetBounds(0, 50, 50, 50); - sub_menu_view->ShowAt(owner(), gfx::Rect(0, 50, 50, 50), false); + params.parent = owner(); + params.bounds = gfx::Rect(0, 50, 50, 50); + params.do_capture = false; + sub_menu_view->ShowAt(params); GetMenuHost(sub_menu_view) ->SetContentsView(sub_menu_view->GetScrollViewContainer()); @@ -2454,7 +2506,10 @@ SubmenuView* nested_menu_submenu = nested_menu_item_1->GetSubmenu(); nested_menu_submenu->SetBounds(0, 0, 100, 100); - nested_menu_submenu->ShowAt(owner(), gfx::Rect(0, 0, 100, 100), false); + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 100, 100); + params.do_capture = false; + nested_menu_submenu->ShowAt(params); GetMenuHost(nested_menu_submenu) ->SetContentsView(nested_menu_submenu->GetScrollViewContainer()); @@ -2519,7 +2574,11 @@ std::unique_ptr<View> drag_view = std::make_unique<View>(); drag_view->SetBoundsRect(gfx::Rect(0, 500, 100, 100)); - sub_menu->ShowAt(owner(), gfx::Rect(0, 0, 100, 100), false); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 100, 100); + params.do_capture = false; + sub_menu->ShowAt(params); gfx::Point press_location(drag_view->bounds().CenterPoint()); gfx::Point drag_location(first_item->bounds().CenterPoint()); gfx::Point release_location(200, 50); @@ -2551,6 +2610,81 @@ ProcessMouseReleased(sub_menu, release_event); } +// Tests that |MenuHost::InitParams| are correctly forwarded to the created +// |aura::Window|. +TEST_F(MenuControllerTest, AuraWindowIsInitializedWithMenuHostInitParams) { + SubmenuView* sub_menu = menu_item()->GetSubmenu(); + + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = gfx::Rect(0, 0, 100, 100); + params.do_capture = false; + params.menu_type = ui::MenuType::kRootMenu; + sub_menu->ShowAt(params); + + aura::Window* window = sub_menu->GetWidget()->GetNativeWindow(); + EXPECT_EQ(ui::MenuType::kRootMenu, + window->GetProperty(aura::client::kMenuType)); +} + +// Tests that |aura::Window| has the correct properties when a context menu is +// shown. +TEST_F(MenuControllerTest, ContextMenuInitializesAuraWindowWhenShown) { + SubmenuView* sub_menu = menu_item()->GetSubmenu(); + + // Checking that context menu properties are calculated correctly. + menu_controller()->Run(owner(), nullptr, menu_item(), menu_item()->bounds(), + MenuAnchorPosition::kTopLeft, true, false); + OpenMenu(menu_item()); + + aura::Window* window = sub_menu->GetWidget()->GetNativeWindow(); + EXPECT_EQ(ui::MenuType::kRootContextMenu, + window->GetProperty(aura::client::kMenuType)); + + // Checking that child menu properties are calculated correctly. + MenuItemView* const child_menu = menu_item()->GetSubmenu()->GetMenuItemAt(0); + child_menu->CreateSubmenu(); + ASSERT_NE(nullptr, child_menu->GetParentMenuItem()); + menu_controller()->Run(owner(), nullptr, child_menu, child_menu->bounds(), + MenuAnchorPosition::kTopRight, false, false); + OpenMenu(child_menu); + + ASSERT_NE(nullptr, child_menu->GetWidget()); + window = child_menu->GetSubmenu()->GetWidget()->GetNativeWindow(); + + EXPECT_EQ(ui::MenuType::kChildMenu, + window->GetProperty(aura::client::kMenuType)); +} + +// Tests that |aura::Window| has the correct properties when a root or a child +// menu is shown. +TEST_F(MenuControllerTest, RootAndChildMenusInitializeAuraWindowWhenShown) { + SubmenuView* sub_menu = menu_item()->GetSubmenu(); + + // Checking that root menu properties are calculated correctly. + menu_controller()->Run(owner(), nullptr, menu_item(), menu_item()->bounds(), + MenuAnchorPosition::kTopLeft, false, false); + OpenMenu(menu_item()); + + aura::Window* window = sub_menu->GetWidget()->GetNativeWindow(); + EXPECT_EQ(ui::MenuType::kRootMenu, + window->GetProperty(aura::client::kMenuType)); + + // Checking that child menu properties are calculated correctly. + MenuItemView* const child_menu = menu_item()->GetSubmenu()->GetMenuItemAt(0); + child_menu->CreateSubmenu(); + ASSERT_NE(nullptr, child_menu->GetParentMenuItem()); + menu_controller()->Run(owner(), nullptr, child_menu, child_menu->bounds(), + MenuAnchorPosition::kTopRight, false, false); + OpenMenu(child_menu); + + ASSERT_NE(nullptr, child_menu->GetWidget()); + window = child_menu->GetSubmenu()->GetWidget()->GetNativeWindow(); + + EXPECT_EQ(ui::MenuType::kChildMenu, + window->GetProperty(aura::client::kMenuType)); +} + #endif // defined(USE_AURA) // Tests that having the MenuController deleted during OnMousePressed does not @@ -2571,7 +2705,11 @@ controller->Run(owner(), nullptr, item.get(), item->bounds(), MenuAnchorPosition::kTopLeft, false, false); - sub_menu->ShowAt(owner(), item->bounds(), true); + MenuHost::InitParams params; + params.parent = owner(); + params.bounds = item->bounds(); + params.do_capture = true; + sub_menu->ShowAt(params); // Simulate a mouse press in the middle of the |closing_widget|. gfx::Point location(canceling_view->bounds().CenterPoint());
diff --git a/ui/views/controls/menu/menu_host.cc b/ui/views/controls/menu/menu_host.cc index f1332232..06f683d 100644 --- a/ui/views/controls/menu/menu_host.cc +++ b/ui/views/controls/menu/menu_host.cc
@@ -24,7 +24,8 @@ #include "ui/views/widget/native_widget_private.h" #include "ui/views/widget/widget.h" -#if !defined(OS_MAC) +#if defined(USE_AURA) +#include "ui/aura/client/aura_constants.h" #include "ui/aura/window.h" #endif @@ -32,7 +33,7 @@ namespace internal { -#if !defined(OS_MAC) +#if defined(USE_AURA) // This class adds itself as the pre target handler for the |window| // passed in. It currently handles touch events and forwards them to the // controller. Reason for this approach is views does not get raw touch @@ -79,7 +80,7 @@ DISALLOW_COPY_AND_ASSIGN(PreMenuEventDispatchHandler); }; -#endif // OS_MAC +#endif // USE_AURA void TransferGesture(ui::GestureRecognizer* gesture_recognizer, gfx::NativeView source, @@ -112,11 +113,7 @@ CHECK(!IsInObserverList()); } -void MenuHost::InitMenuHost(Widget* parent, - const gfx::Rect& bounds, - View* contents_view, - bool do_capture, - gfx::NativeView native_view_for_gestures) { +void MenuHost::InitMenuHost(const InitParams& init_params) { TRACE_EVENT0("views", "MenuHost::InitMenuHost"); Widget::InitParams params(Widget::InitParams::TYPE_MENU); const MenuController* menu_controller = @@ -130,12 +127,18 @@ params.opacity = (bubble_border || rounded_border) ? Widget::InitParams::WindowOpacity::kTranslucent : Widget::InitParams::WindowOpacity::kOpaque; - params.parent = parent ? parent->GetNativeView() : gfx::kNullNativeView; - params.bounds = bounds; + params.parent = init_params.parent ? init_params.parent->GetNativeView() + : gfx::kNullNativeView; + params.bounds = init_params.bounds; + +#if defined(USE_AURA) + params.init_properties_container.SetProperty(aura::client::kMenuType, + init_params.menu_type); +#endif // If MenuHost has no parent widget, it needs to be marked // Activatable, so that calling Show in ShowMenuHost will // get keyboard focus. - if (parent == nullptr) + if (init_params.parent == nullptr) params.activatable = Widget::InitParams::Activatable::kYes; #if defined(OS_WIN) // On Windows use the software compositor to ensure that we don't block @@ -145,21 +148,21 @@ #endif Init(std::move(params)); -#if !defined(OS_MAC) +#if defined(USE_AURA) pre_dispatch_handler_ = std::make_unique<internal::PreMenuEventDispatchHandler>( menu_controller, submenu_, GetNativeView()); #endif DCHECK(!owner_); - owner_ = parent; + owner_ = init_params.parent; if (owner_) owner_->AddObserver(this); - native_view_for_gestures_ = native_view_for_gestures; + native_view_for_gestures_ = init_params.native_view_for_gestures; - SetContentsView(contents_view); - ShowMenuHost(do_capture); + SetContentsView(init_params.contents_view); + ShowMenuHost(init_params.do_capture); } bool MenuHost::IsMenuHostVisible() { @@ -215,7 +218,7 @@ HideMenuHost(); destroying_ = true; static_cast<MenuHostRootView*>(GetRootView())->ClearSubmenu(); -#if !defined(OS_MAC) +#if defined(USE_AURA) pre_dispatch_handler_.reset(); #endif Close();
diff --git a/ui/views/controls/menu/menu_host.h b/ui/views/controls/menu/menu_host.h index 18408265..b6f0bfc 100644 --- a/ui/views/controls/menu/menu_host.h +++ b/ui/views/controls/menu/menu_host.h
@@ -10,6 +10,7 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "build/build_config.h" +#include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_observer.h" @@ -40,16 +41,21 @@ // to the MenuHost. class MenuHost : public Widget, public WidgetObserver { public: + struct InitParams { + Widget* parent = nullptr; + gfx::Rect bounds; + View* contents_view = nullptr; + bool do_capture = false; + gfx::NativeView native_view_for_gestures; + ui::MenuType menu_type = ui::MenuType::kRootContextMenu; + }; + explicit MenuHost(SubmenuView* submenu); ~MenuHost() override; // Initializes and shows the MenuHost. - // WARNING: |parent| may be NULL. - void InitMenuHost(Widget* parent, - const gfx::Rect& bounds, - View* contents_view, - bool do_capture, - gfx::NativeView native_view_for_gestures); + // WARNING: |init_params.parent| may be NULL. + void InitMenuHost(const InitParams& init_params); // Returns true if the menu host is visible. bool IsMenuHostVisible();
diff --git a/ui/views/controls/menu/menu_runner.h b/ui/views/controls/menu/menu_runner.h index 16b23f5..621e3c6 100644 --- a/ui/views/controls/menu/menu_runner.h +++ b/ui/views/controls/menu/menu_runner.h
@@ -11,7 +11,6 @@ #include "base/callback.h" #include "base/compiler_specific.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "ui/base/ui_base_types.h" #include "ui/gfx/native_widget_types.h"
diff --git a/ui/views/controls/menu/menu_runner_impl.h b/ui/views/controls/menu/menu_runner_impl.h index 0357de2..cbb37dd 100644 --- a/ui/views/controls/menu/menu_runner_impl.h +++ b/ui/views/controls/menu/menu_runner_impl.h
@@ -11,7 +11,6 @@ #include <set> #include "base/compiler_specific.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h"
diff --git a/ui/views/controls/menu/menu_runner_impl_interface.h b/ui/views/controls/menu/menu_runner_impl_interface.h index 73bb1795..54c95d8 100644 --- a/ui/views/controls/menu/menu_runner_impl_interface.h +++ b/ui/views/controls/menu/menu_runner_impl_interface.h
@@ -8,7 +8,6 @@ #include <stdint.h> #include "base/callback_forward.h" -#include "base/containers/flat_set.h" #include "ui/views/controls/menu/menu_runner.h" namespace views {
diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc index bd268333..202970a 100644 --- a/ui/views/controls/menu/submenu_view.cc +++ b/ui/views/controls/menu/submenu_view.cc
@@ -384,13 +384,10 @@ return host_ && host_->IsMenuHostVisible(); } -void SubmenuView::ShowAt(Widget* parent, - const gfx::Rect& bounds, - bool do_capture, - gfx::NativeView native_view_for_gestures) { +void SubmenuView::ShowAt(const MenuHost::InitParams& init_params) { if (host_) { - host_->SetMenuHostBounds(bounds); - host_->ShowMenuHost(do_capture); + host_->SetMenuHostBounds(init_params.bounds); + host_->ShowMenuHost(init_params.do_capture); } else { host_ = new MenuHost(this); // Force construction of the scroll view container. @@ -398,8 +395,10 @@ // Force a layout since our preferred size may not have changed but our // content may have. InvalidateLayout(); - host_->InitMenuHost(parent, bounds, scroll_view_container_, do_capture, - native_view_for_gestures); + + MenuHost::InitParams new_init_params = init_params; + new_init_params.contents_view = scroll_view_container_; + host_->InitMenuHost(new_init_params); } // Only fire kMenuStart for the top level menu, not for each submenu.
diff --git a/ui/views/controls/menu/submenu_view.h b/ui/views/controls/menu/submenu_view.h index d19c3a3..496568a 100644 --- a/ui/views/controls/menu/submenu_view.h +++ b/ui/views/controls/menu/submenu_view.h
@@ -14,13 +14,13 @@ #include "base/macros.h" #include "ui/views/animation/scroll_animator.h" #include "ui/views/controls/menu/menu_delegate.h" +#include "ui/views/controls/menu/menu_host.h" #include "ui/views/controls/prefix_delegate.h" #include "ui/views/controls/prefix_selector.h" #include "ui/views/view.h" namespace views { -class MenuHost; class MenuItemView; class MenuScrollViewContainer; @@ -107,12 +107,9 @@ // Returns true if the menu is showing. virtual bool IsShowing() const; - // Shows the menu at the specified location. Coordinates are in screen - // coordinates. max_width gives the max width the view should be. - void ShowAt(Widget* parent, - const gfx::Rect& bounds, - bool do_capture, - gfx::NativeView native_view_for_gestures = nullptr); + // Shows the menu using the specified |init_params|. |init_params.bounds| are + // in screen coordinates. + void ShowAt(const MenuHost::InitParams& init_params); // Resets the bounds of the submenu to |bounds|. void Reposition(const gfx::Rect& bounds);
diff --git a/ui/views/examples/dialog_example.cc b/ui/views/examples/dialog_example.cc index e3a1dab..6e783f3 100644 --- a/ui/views/examples/dialog_example.cc +++ b/ui/views/examples/dialog_example.cc
@@ -93,14 +93,11 @@ class DialogExample::Dialog : public Delegate<DialogDelegateView> { public: - explicit Dialog(DialogExample* parent) : Delegate(parent) {} - - // WidgetDelegate: - bool CanResize() const override { + explicit Dialog(DialogExample* parent) : Delegate(parent) { // Mac supports resizing of modal dialogs (parent or window-modal). On other // platforms this will be weird unless the modal type is "none", but helps // test layout. - return true; + SetCanResize(true); } private:
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc index a250b7781..7cd172c 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
@@ -810,6 +810,10 @@ return window_mask; } +absl::optional<ui::MenuType> DesktopWindowTreeHostPlatform::GetMenuType() { + return GetContentWindow()->GetProperty(aura::client::kMenuType); +} + void DesktopWindowTreeHostPlatform::OnWorkspaceChanged() { OnHostWorkspaceChanged(); }
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h index b904b4f4..26cc91cc 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
@@ -126,6 +126,7 @@ absl::optional<gfx::Size> GetMinimumSizeForWindow() override; absl::optional<gfx::Size> GetMaximumSizeForWindow() override; SkPath GetWindowMaskForWindowShapeInPixels() override; + absl::optional<ui::MenuType> GetMenuType() override; // ui::WorkspaceExtensionDelegate: void OnWorkspaceChanged() override;
diff --git a/ui/views/widget/widget_delegate.h b/ui/views/widget/widget_delegate.h index a53c810..f40543d 100644 --- a/ui/views/widget/widget_delegate.h +++ b/ui/views/widget/widget_delegate.h
@@ -163,7 +163,7 @@ virtual DialogDelegate* AsDialogDelegate(); // Returns true if the window can be resized. - virtual bool CanResize() const; + bool CanResize() const; // Returns true if the window can be maximized. virtual bool CanMaximize() const;
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn index 5850a20..7e91df13 100644 --- a/ui/webui/resources/BUILD.gn +++ b/ui/webui/resources/BUILD.gn
@@ -141,15 +141,21 @@ "cr_elements/cr_container_shadow_behavior.m.d.ts", "cr_elements/cr_dialog/cr_dialog.m.d.ts", "cr_elements/cr_drawer/cr_drawer.d.ts", + "cr_elements/cr_expand_button/cr_expand_button.m.d.ts", "cr_elements/cr_icon_button/cr_icon_button.m.d.ts", "cr_elements/cr_input/cr_input.m.d.ts", "cr_elements/cr_lazy_render/cr_lazy_render.m.d.ts", + "cr_elements/cr_radio_button/cr_radio_button_behavior.m.d.ts", + "cr_elements/cr_radio_button/cr_radio_button.m.d.ts", + "cr_elements/cr_radio_group/cr_radio_group.m.d.ts", "cr_elements/cr_search_field/cr_search_field_behavior.d.ts", "cr_elements/cr_toast/cr_toast_manager.m.d.ts", "cr_elements/cr_toast/cr_toast.m.d.ts", + "cr_elements/cr_toggle/cr_toggle.m.d.ts", "cr_elements/cr_toolbar/cr_toolbar_search_field.d.ts", "cr_elements/cr_view_manager/cr_view_manager.d.ts", "cr_elements/find_shortcut_behavior.d.ts", + "cr_elements/policy/cr_tooltip_icon.m.d.ts", "js/cr/ui/focus_row_behavior.m.d.ts", "js/i18n_behavior.m.d.ts", "js/promise_resolver.m.d.ts", @@ -182,11 +188,14 @@ definitions += [ # Auto-generated .d.ts files. "$root_dir/cr_elements/action_link_css.m.d.ts", + "$root_dir/cr_elements/cr_actionable_row_style.m.d.ts", "$root_dir/cr_elements/cr_grid/cr_grid.d.ts", "$root_dir/cr_elements/cr_icons_css.m.d.ts", "$root_dir/cr_elements/cr_input/cr_input_style_css.m.d.ts", + "$root_dir/cr_elements/cr_link_row/cr_link_row.d.ts", "$root_dir/cr_elements/cr_menu_selector/cr_menu_selector.d.ts", "$root_dir/cr_elements/cr_page_host_style_css.d.ts", + "$root_dir/cr_elements/cr_radio_button/cr_radio_button_style_css.m.d.ts", "$root_dir/cr_elements/cr_splitter/cr_splitter.d.ts", "$root_dir/cr_elements/cr_toolbar/cr_toolbar.d.ts", "$root_dir/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.d.ts", @@ -199,6 +208,7 @@ "$root_dir/js/assert.m.d.ts", "$root_dir/js/cr/event_target.m.d.ts", "$root_dir/js/cr.m.d.ts", + "$root_dir/js/cr/ui/drag_wrapper.d.ts", "$root_dir/js/cr/ui/focus_grid.m.d.ts", "$root_dir/js/cr/ui/focus_outline_manager.m.d.ts", "$root_dir/js/cr/ui/focus_row.m.d.ts", @@ -228,12 +238,17 @@ out_dir = preprocessed_folder js_files = [ "cr_elements/action_link_css.m.js", + "cr_elements/cr_actionable_row_style.m.js", "cr_elements/cr_grid/cr_grid.js", "cr_elements/cr_icons_css.m.js", "cr_elements/cr_input/cr_input_style_css.m.js", + "cr_elements/cr_link_row/cr_link_row.js", "cr_elements/cr_menu_selector/cr_menu_selector.js", "cr_elements/cr_page_host_style_css.js", + "cr_elements/cr_radio_button/cr_radio_button_style_css.m.js", + "cr_elements/cr_search_field/cr_search_field.js", "cr_elements/cr_splitter/cr_splitter.js", + "cr_elements/cr_tabs/cr_tabs.js", "cr_elements/cr_toolbar/cr_toolbar.js", "cr_elements/cr_toolbar/cr_toolbar_selection_overlay.js", "cr_elements/hidden_style_css.m.js", @@ -243,17 +258,18 @@ "cr_elements/shared_vars_css.m.js", "js/action_link.js", "js/assert.m.js", - "js/cr.m.js", "js/cr/event_target.m.js", + "js/cr.m.js", + "js/cr/ui/drag_wrapper.js", "js/cr/ui/focus_grid.m.js", "js/cr/ui/focus_outline_manager.m.js", - "js/cr/ui/store.m.js", - "js/cr/ui/store_client.m.js", "js/cr/ui/focus_row.m.js", + "js/cr/ui/store_client.m.js", + "js/cr/ui/store.m.js", "js/event_tracker.m.js", + "js/icon.m.js", "js/load_time_data.m.js", "js/parse_html_subset.m.js", - "js/icon.m.js", "js/util.m.js", ]
diff --git a/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.m.d.ts b/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.m.d.ts new file mode 100644 index 0000000..c3322d2 --- /dev/null +++ b/ui/webui/resources/cr_elements/cr_expand_button/cr_expand_button.m.d.ts
@@ -0,0 +1,22 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {LegacyElementMixin} from 'chrome://resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; + +interface CrExpandButtonElement extends LegacyElementMixin, HTMLElement { + expanded: boolean; + disabled: boolean; + ariaLabel: string|null|undefined; + tabIndex: number; + noink: boolean; + focus(): void; +} + +export {CrExpandButtonElement}; + +declare global { + interface HTMLElementTagNameMap { + 'cr-expand-button': CrExpandButtonElement; + } +}
diff --git a/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button.m.d.ts b/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button.m.d.ts new file mode 100644 index 0000000..851bd21 --- /dev/null +++ b/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button.m.d.ts
@@ -0,0 +1,17 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {LegacyElementMixin} from 'chrome://resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; +import {CrRadioButtonBehavior} from './cr_radio_button_behavior.m.js'; + +interface CrRadioButtonElement extends LegacyElementMixin, + CrRadioButtonBehavior, HTMLElement {} + +export {CrRadioButtonElement}; + +declare global { + interface HTMLElementTagNameMap { + 'cr-radio-button': CrRadioButtonElement; + } +}
diff --git a/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button_behavior.m.d.ts b/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button_behavior.m.d.ts new file mode 100644 index 0000000..4903518 --- /dev/null +++ b/ui/webui/resources/cr_elements/cr_radio_button/cr_radio_button_behavior.m.d.ts
@@ -0,0 +1,17 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +export interface CrRadioButtonBehaviorInterface { + checked: boolean; + disabled: boolean; + focusable: boolean; + label: string; + name: string; +} + +export {CrRadioButtonBehavior}; + +interface CrRadioButtonBehavior extends CrRadioButtonBehaviorInterface {} + +declare const CrRadioButtonBehavior: object;
diff --git a/ui/webui/resources/cr_elements/cr_radio_group/cr_radio_group.m.d.ts b/ui/webui/resources/cr_elements/cr_radio_group/cr_radio_group.m.d.ts new file mode 100644 index 0000000..ae5836f --- /dev/null +++ b/ui/webui/resources/cr_elements/cr_radio_group/cr_radio_group.m.d.ts
@@ -0,0 +1,19 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {LegacyElementMixin} from 'chrome://resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; + +interface CrRadioGroupElement extends LegacyElementMixin, HTMLElement { + disabled: boolean; + selected: string; + selectableElements: string; +} + +export {CrRadioGroupElement}; + +declare global { + interface HTMLElementTagNameMap { + 'cr-radio-group': CrRadioGroupElement; + } +}
diff --git a/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.m.d.ts b/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.m.d.ts new file mode 100644 index 0000000..650f62c --- /dev/null +++ b/ui/webui/resources/cr_elements/cr_toggle/cr_toggle.m.d.ts
@@ -0,0 +1,19 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {LegacyElementMixin} from 'chrome://resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; + +interface CrToggleElement extends LegacyElementMixin, HTMLElement { + checked: boolean; + dark: boolean; + disabled: boolean; +} + +export {CrToggleElement}; + +declare global { + interface HTMLElementTagNameMap { + 'cr-toggle': CrToggleElement; + } +}
diff --git a/ui/webui/resources/cr_elements/policy/cr_tooltip_icon.m.d.ts b/ui/webui/resources/cr_elements/policy/cr_tooltip_icon.m.d.ts new file mode 100644 index 0000000..ab0c1f1b --- /dev/null +++ b/ui/webui/resources/cr_elements/policy/cr_tooltip_icon.m.d.ts
@@ -0,0 +1,21 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {LegacyElementMixin} from 'chrome://resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js'; + +interface CrTooltipIconElement extends LegacyElementMixin, HTMLElement { + iconAriaLabel: string; + iconClass: string; + tooltipTex: string; + tooltipPosition: string; + getFocusableElement(): Element; +} + +export {CrTooltipIconElement}; + +declare global { + interface HTMLElementTagNameMap { + 'cr-tooltip-icon': CrTooltipIconElement; + } +}
diff --git a/weblayer/app/content_main_delegate_impl.cc b/weblayer/app/content_main_delegate_impl.cc index 01513b8..8f855b7 100644 --- a/weblayer/app/content_main_delegate_impl.cc +++ b/weblayer/app/content_main_delegate_impl.cc
@@ -162,7 +162,16 @@ // This also turns off Push messaging. cl->AppendSwitch(::switches::kDisableNotifications); - std::vector<base::Feature> enabled_features = {}; + std::vector<base::Feature> enabled_features = { +#if defined(OS_ANDROID) + // Overlay promotion requires some guarantees we don't have on WebLayer + // (e.g. ensuring fullscreen, no movement of the parent view). Given that + // we're unsure about the benefits when used embedded in a parent app, we + // will only promote to overlays if needed for secure videos. + media::kUseAndroidOverlayForSecureOnly, +#endif + }; + std::vector<base::Feature> disabled_features = { // TODO(crbug.com/1177948): enable WebAR. ::features::kWebXr,