diff --git a/DEPS b/DEPS index 2b736a3..4dc7e9f 100644 --- a/DEPS +++ b/DEPS
@@ -269,15 +269,15 @@ # 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': '8d3d0bcd4b2c469d8f5272d42916d8a0554950a3', + 'skia_revision': 'e1df5b2115b302a0cabeb1f117119a42a962079c', # 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': '1113f167eb55e26dae1217b6e8c9dab5490dd1dc', + 'v8_revision': '15839b80b06f986b4a638a26656cee97646e9071', # 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': '486ae89e43a391ee2648826f34f41c26a9b8b570', + 'angle_revision': '5b623dd4b871c37590f4aaaa07dacf8b736ab7c7', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -292,7 +292,7 @@ # # Note this revision should be updated with # third_party/boringssl/roll_boringssl.py, not roll-dep. - 'boringssl_revision': '735a86834c375c0fc153e32127d7594a7573c924', + 'boringssl_revision': '227ff6e6425283b83594a91a1aa81cc78f1a88df', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. @@ -348,7 +348,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': '46d6a82d340cea57300a89db7dfb1f5c8af80a45', + 'devtools_frontend_revision': 'b6327d5184fe4304683b3fd756f0d7bcaf497fb0', # 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. @@ -384,11 +384,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'b2004907a3543edf4c670449718cd6f547974383', + 'dawn_revision': '6a8cfd4153c5d47b8dc3293f504b1254b6bbef19', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': 'bfb48274c6328b6e0e23dff12b2626e582adbd2f', + 'quiche_revision': '327663d2cc0a59e75d6af13992dc734b49d209de', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -432,7 +432,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. - 'libunwind_revision': '3d54d41c27afba1e3a83303c1bc005d303d40eb6', + 'libunwind_revision': '3e0d3ec5851c065a401dfe1bb5161da6a1edb192', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -567,7 +567,7 @@ 'src/third_party/apache-linux': { 'packages': [ { - 'package': 'infra/3pp/tools/httpd-php/${{platform}}', + 'package': 'infra/3pp/tools/httpd-php/linux-amd64', 'version': 'version:2@httpd2.4.38.php7.3.31.chromium.3', }, ], @@ -914,7 +914,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'N11h90BOkwT_ErtH-6ZmLb5ptpWC7xllgXt3TDEphj0C', + 'version': '9EARqDo1HNj2IE6F5pbKWOUSN2acBpBu04AW3SP7qAEC', }, ], 'condition': 'checkout_android', @@ -1507,7 +1507,7 @@ }, 'src/third_party/openh264/src': - Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + 'b52786888ddce9d6bc06b7825ba9bffc65924e0c', + Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + 'fac04ceb3e966f613ed17e98178e9d690280bba6', 'src/third_party/openscreen/src': Var('chromium_git') + '/openscreen' + '@' + 'a10f9dc128676d53d29981ad9c0d0fbc5e0bd322', @@ -1527,7 +1527,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'fbdedcfb33db2b18f8679550a31e2a062f466dab', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '1de2530cbbe478a28578869e82d2bee70db0396c', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1663,7 +1663,7 @@ 'condition': 'checkout_android', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@3e76ffe3d4b39f7ec38581712dbde5c2e63ef0fb', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@b768d03422eaba0e33c6ed6aaf12f04e5ec0ea2b', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'ebe84bec02c041d28f902da0214bf442743fc907', @@ -1699,10 +1699,10 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'cf04aebdf9b53bb2853f22a81465688daf879ec6', 'src/third_party/webgpu-cts/src': - Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '0a1288f5e8262e900169795d742082bbc9d6ee22', + Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '09bcde2fd4ba4c265001a6cb394447f6a4f27671', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'f783b938fa1cf9daafb9641652f677a33c506b2d', + Var('webrtc_git') + '/src.git' + '@' + '9e5aeb9d92981818f1ed6dd9719df2edf0e373f0', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1775,7 +1775,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@a1d13526ebd16a86b129f5c2f2cb67e5d001340d', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e82224de6bc39a4ce9ed47ccb0b719ddc585ecaf', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/nonembedded/component_updater/aw_component_update_service.h b/android_webview/nonembedded/component_updater/aw_component_update_service.h index 114c2af..0722b68 100644 --- a/android_webview/nonembedded/component_updater/aw_component_update_service.h +++ b/android_webview/nonembedded/component_updater/aw_component_update_service.h
@@ -41,9 +41,9 @@ public: static AwComponentUpdateService* GetInstance(); - // Callback used for updating components, with an int that represents how + // Callback used for updating components, with an int32_t that represents how // many components were actually updated. - using UpdateCallback = base::OnceCallback<void(int)>; + using UpdateCallback = base::OnceCallback<void(int32_t)>; void StartComponentUpdateService(UpdateCallback finished_callback, bool on_demand_update); @@ -103,7 +103,7 @@ update_client::Error error); // Counts how many components were updated, for UMA logging. - int components_updated_count_ = 0; + int32_t components_updated_count_ = 0; base::WeakPtrFactory<AwComponentUpdateService> weak_ptr_factory_{this}; };
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index ad86fcf..32b9bfa 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -301,6 +301,7 @@ <translation id="2834813915651407382">በቅርቡ የተከፈተ</translation> <translation id="2841907151129139818">ወደ የጡባዊ ሁነታ ተቀይሯል</translation> <translation id="2844169650293029770">USB-C መሣሪያ (የግራ ጎን የፊት ወደብ)</translation> +<translation id="2848120746144143659">ሙሉ ገጽ ዕይታን ለመቅረጽ አስገባን ይጫኑ</translation> <translation id="2849936225196189499">ዋነኛ</translation> <translation id="2860184359326882502">ምርጥ ተዛማጅ</translation> <translation id="2865888419503095837">የአውታረ መረብ መረጃ</translation> @@ -479,6 +480,7 @@ <translation id="3846575436967432996">ምንም የአውታረ መረብ መረጃ አይገኝም</translation> <translation id="385051799172605136">ተመለስ</translation> <translation id="385300504083504382">መጀመሪያ</translation> +<translation id="3861651314799684201">ሙሉ ገጽ ዕይታ ለመቅዳት አስገባን ይጫኑ</translation> <translation id="3886872229787704059">ዛሬ የተከፈተ</translation> <translation id="3891340733213178823">ዘግተው ለመውጣት Ctrl+Shift+Qን ሁለቴ ይጫኑ።</translation> <translation id="3893630138897523026">ChromeVox (የሚነገር ግብረመልስ)</translation> @@ -810,6 +812,7 @@ <translation id="595202126637698455">አፈጻጸም መከታተያ ነቅቷል</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">ክትትል የሚደረግበት ተጠቃሚ</translation> +<translation id="5976112937189445008">መስኮት ለመቅዳት አስገባን ይጫኑ</translation> <translation id="5977415296283489383">ጆሮ ማዳጀጫ</translation> <translation id="5978382165065462689">የማያ ገጽዎን ቁጥጥር በርቀት እርዳታ በኩል በማጋራት ላይ።</translation> <translation id="5980301590375426705">ከእንግዳ ውጣ</translation> @@ -1196,6 +1199,7 @@ <translation id="8364673525741149932">የመደርደሪያ ፓርቲን ቀያይር። <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">በየፊደሉ ወደፊት</translation> <translation id="8371991222807690464">የተቀጥላ ክፍል አፈጻጸም በእንግዳ ሁኔታ ውስጥ ውስን ሊሆን ይችላል።</translation> +<translation id="8374601332003098278">ከፊል ገጽ ዕይታን ለመቅረጽ አስገባን ይጫኑ</translation> <translation id="8375916635258623388">ይህ <ph name="DEVICE_NAME" /> እና የእርስዎ ስልክ በራስ-ሰር ይገናኛሉ</translation> <translation id="8380784334203145311">ደህና አመሹ፣</translation> <translation id="8382715499079447151">የእይታ ጥበቃ</translation> @@ -1248,6 +1252,7 @@ <translation id="8653151467777939995">የማሳወቂያ ቅንብሮችን አሳይ። ማሳወቂያዎች በርተዋል</translation> <translation id="8660331759611631213">የ71 ካሬ ሥር</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />፣ የሲግናል ጥንካሬ <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">ከፊል ቅጽበታዊ ገጽ እይታን ለመቅረጽ አስገባን ይጫኑ</translation> <translation id="8664753092453405566">የአውታረ መረብ ዝርዝርን አሳይ። <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">መሣሪያዎን ለማዋቀር <ph name="NAME" />ን ይክፈቱ</translation> <translation id="8676770494376880701">አነስተኛ ኃይል ያለው ባትሪ መሙያ ተገናኝቷል</translation> @@ -1289,6 +1294,7 @@ <translation id="8909138438987180327">ባትሪ <ph name="PERCENTAGE" /> መቶኛ ላይ።</translation> <translation id="8921554779039049422">ኤች+</translation> <translation id="8921624153894383499">የGoogle ረዳቱ ይህን ቋንቋ አይናገርም።</translation> +<translation id="8924458948354692166">የመስኮት ቅጽበታዊ ገጽ እይታን ለመቅረጽ አስገባን ይጫኑ</translation> <translation id="8926951137623668982">መደርደሪያ ሁልጊዜ ይደበቃል</translation> <translation id="8936501819958976551">ቦዝኗል</translation> <translation id="8938800817013097409">USB-C መሣሪያ (የቀኝ ወደብ ከኋላ በኩል)</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index 7b7cbda..432b69ea 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -137,6 +137,7 @@ <translation id="1719094688023114093">ميزة "النسخ النصي التلقائي" مفعَّلة.</translation> <translation id="1720011244392820496">تفعيل ميزة "مزامنة Wi-Fi"</translation> <translation id="1736898441010944794">سيظهر "<ph name="NAME" />" للأجهزة التي تتضمّن بلوتوث.</translation> +<translation id="174102739345480129">أداة التحديد غير مفعَّلة.</translation> <translation id="1743570585616704562">لم يتم التعرف عليها</translation> <translation id="1746730358044914197">يتم إعداد طرق الإدخال بواسطة المشرف.</translation> <translation id="1747827819627189109">تم تفعيل لوحة المفاتيح على الشاشة</translation> @@ -565,6 +566,7 @@ <translation id="4379531060876907730">هذه هي أدوات قلم الشاشة</translation> <translation id="4389184120735010762">لقد ضغطت على اختصار لوحة المفاتيح للمُكبِّر الذي تم إرساؤه. هل ترغب في تفعيله؟</translation> <translation id="439598569299422042">التنزيل متوقّف مؤقتًا، <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">يتعذّر حفظ التسجيل الرقمي للشاشة</translation> <translation id="4405151984121254935">نوع الجهاز الملحق المتصل غير متوافق.</translation> <translation id="4406883609789734330">النسخ النصي التلقائي</translation> <translation id="4412944820643904175">ميزة <ph name="FEATURE_NAME" /> غير مُفعَّلة.</translation> @@ -671,6 +673,7 @@ <ph name="NOTIFICATION_2" />، <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">الجملة التالية</translation> +<translation id="5016558321564993266">حالة إيقاف/تفعيل أداة التحديد: <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">انتهى الوقت</translation> <translation id="5033299697334913360">انقر في أي مكان لالتقاط صورة لوضع ملء الشاشة.</translation> <translation id="5035236842988137213">الجهاز <ph name="DEVICE_NAME" /> متصل بهاتف جديد</translation> @@ -700,6 +703,7 @@ <translation id="5222676887888702881">تسجيل الخروج</translation> <translation id="5234764350956374838">تجاهل</translation> <translation id="523505283826916779">إعدادات إمكانية الدخول</translation> +<translation id="5245201184978705914">يتعذّر إنشاء النص المحوَّل إلى صوت.</translation> <translation id="5253783950165989294">تم الربط بجهاز يحمل الاسم <ph name="DEVICE_NAME" />، مستوى شحن البطارية <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="5260676007519551770">مكتب 4</translation> <translation id="5283099933536931082">لديك إشعار من <ph name="APP_ITEM_TITLE" />.</translation> @@ -734,6 +738,7 @@ <translation id="5433020815079095860">إدخال الصوت</translation> <translation id="544691375626129091">تمت إضافة كل المستخدمين المتوفرين لهذه الجلسة.</translation> <translation id="54609108002486618">تتم إدارته</translation> +<translation id="5460938382730614333">أداة التحديد مفعَّلة.</translation> <translation id="5465662442746197494">هل تريد المساعدة؟</translation> <translation id="547979256943495781">الرف على يسار الشاشة</translation> <translation id="5491186829646618080">تتوفّر تحديثات للبرامج الثابتة</translation> @@ -775,6 +780,7 @@ <translation id="5745612484876805746">تفعيل ميزة "الإضاءة الليلية" تلقائيًا عند غروب الشمس</translation> <translation id="5750765938512549687">تم إيقاف البلوتوث</translation> <translation id="5760866832697883462">توصيل جهاز <ph name="NAME" /></translation> +<translation id="5762420912707163638">حالة إيقاف/تفعيل أداة التحديد: <ph name="STATE_TEXT" />. يمكنك استخدام لوحة اللمس أو شاشة تعمل باللمس أو قلم الشاشة للرسم على الشاشة.</translation> <translation id="576341972084747908">تنزيل الملف <ph name="FILENAME" /> الضار</translation> <translation id="5763928712329149804">الوضع Shelf Party غير مفعَّل.</translation> <translation id="576453121877257266">ميزة "الإضاءة الليلية" مفعّلة.</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 2ac7fcb..60cfdd1 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Canlı Altyazı aktivdir.</translation> <translation id="1720011244392820496">Wi-Fi Sinxronlaşdırmasını aktiv edin</translation> <translation id="1736898441010944794">"<ph name="NAME" />" Bluetooth cihazlarına görünür.</translation> +<translation id="174102739345480129">Marker deaktivdir.</translation> <translation id="1743570585616704562">Tanınmır</translation> <translation id="1746730358044914197">Daxiletmə üsulları administrator tərəfindən konfiqurasiya edilir.</translation> <translation id="1747827819627189109">Ekrandakı klaviaturanı aktiv edin</translation> @@ -566,6 +567,7 @@ <translation id="4379531060876907730">Fırça alətləriniz</translation> <translation id="4389184120735010762">Daxili böyüdücü üçün klaviatura qısayoluna basdınız. Onu aktiv etmək istəyirsiniz?</translation> <translation id="439598569299422042">Durdurulub, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Enkran yayımını yadda saxlamaq olmur</translation> <translation id="4405151984121254935">Qoşulmuş əlavə qurğu növü dəstəklənmir</translation> <translation id="4406883609789734330">Avtomatik subtitrlər</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> deaktivdir.</translation> @@ -672,6 +674,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Növbəti cümlə</translation> +<translation id="5016558321564993266">Markeri dəyişin. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Vaxt bitdi</translation> <translation id="5033299697334913360">Tam ekranı çəkmək üçün istənilən yerə klikləyin</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> yeni telefona qoşuldu</translation> @@ -701,6 +704,7 @@ <translation id="5222676887888702881">Hesabdan çıxın</translation> <translation id="5234764350956374838">Kənarlaşdırın</translation> <translation id="523505283826916779">Əlçatımlılıq ayarları</translation> +<translation id="5245201184978705914">Transkript yaratmaq olmur</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> adlı cihaza qoşulub, enerji: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">Masa 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> diqqətinizi tələb edir.</translation> @@ -735,6 +739,7 @@ <translation id="5433020815079095860">Audio daxiletməsi</translation> <translation id="544691375626129091">Bütün əlçatımlı istifadəçilər bu sessiyaya əlavə edilib.</translation> <translation id="54609108002486618">İdarə edilən</translation> +<translation id="5460938382730614333">Marker aktivdir.</translation> <translation id="5465662442746197494">Kömək lazımdır?</translation> <translation id="547979256943495781">Rəf sağdadır</translation> <translation id="5491186829646618080">Proqram güncəlləmələri əlçatandır</translation> @@ -776,6 +781,7 @@ <translation id="5745612484876805746">Gecə İşığı gün batanda avtomatik aktiv edilir</translation> <translation id="5750765938512549687">Bluetooth deaktivdir</translation> <translation id="5760866832697883462"><ph name="NAME" /> cihazınızı qoşun</translation> +<translation id="5762420912707163638">Markeri dəyişin. <ph name="STATE_TEXT" /> Ekranda çəkmək üçün trekped, sensor ekran və ya qələmdən istifadə edin.</translation> <translation id="576341972084747908"><ph name="FILENAME" /> endirilməsi təhlükəlidir</translation> <translation id="5763928712329149804">Shelf Party rejimi deaktivdir.</translation> <translation id="576453121877257266">Gecə İşığı aktivdir.</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index 7f55daff..329d36e 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Nedavno otvoreno</translation> <translation id="2841907151129139818">Promijenjeno u način rada za tablet</translation> <translation id="2844169650293029770">USB-C uređaj (prednji priključak na lijevoj strani)</translation> +<translation id="2848120746144143659">Pritisnite Enter za snimanje snimke cijelog zaslona</translation> <translation id="2849936225196189499">Kritična</translation> <translation id="2860184359326882502">Najbolje podudaranje</translation> <translation id="2865888419503095837">Informacije o mreži</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Informacije o mreži nisu dostupne</translation> <translation id="385051799172605136">Nazad</translation> <translation id="385300504083504382">Početak</translation> +<translation id="3861651314799684201">Pritisnite Enter za snimanje cijelog zaslona</translation> <translation id="3886872229787704059">Otvoreno danas</translation> <translation id="3891340733213178823">Dvaput pritisnite Ctrl + Shift + Q da se odjavite.</translation> <translation id="3893630138897523026">ChromeVox (govorne povratne informacije)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Praćenje performansi je omogućeno</translation> <translation id="5955304353782037793">apl</translation> <translation id="5958529069007801266">Korisnik pod nadzorom</translation> +<translation id="5976112937189445008">Pritisnite Enter za snimanje prozora</translation> <translation id="5977415296283489383">Slušalica</translation> <translation id="5978382165065462689">Dijeljenje kontrole nad vašim ekranom putem pomoći na daljinu.</translation> <translation id="5980301590375426705">Napusti sesiju gosta</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Uključite Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Slovo unaprijed</translation> <translation id="8371991222807690464">Performanse perifernog uređaja mogu biti ograničene u Načinu rada za gosta</translation> +<translation id="8374601332003098278">Pritisnite Enter za snimanje djelomičnog zaslona</translation> <translation id="8375916635258623388">Uređaj <ph name="DEVICE_NAME" /> i vaš telefon će se povezati automatski</translation> <translation id="8380784334203145311">Laku noć,</translation> <translation id="8382715499079447151">Zaštita pregleda</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Prikaz postavki obavještenja. Obavještenja su uključena</translation> <translation id="8660331759611631213">Kvadratni korijen od 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Pritisnite Enter za snimanje djelomične snimke zaslona</translation> <translation id="8664753092453405566">Prikaz popisa mreža. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Otvorite aplikaciju <ph name="NAME" /> da postavite uređaj</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Baterija je na <ph name="PERCENTAGE" /> posto.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google asistent ne govori taj jezik.</translation> +<translation id="8924458948354692166">Pritisnite Enter za snimanje prozora</translation> <translation id="8926951137623668982">Polica je uvijek sakrivena</translation> <translation id="8936501819958976551">deaktivirano</translation> <translation id="8938800817013097409">USB-C uređaj (desni priključak na stražnjoj strani)</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index 29fbbe9..7ac4bd2 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">La funció Subtítols instantanis està activada.</translation> <translation id="1720011244392820496">Activa Sincronització Wi-Fi</translation> <translation id="1736898441010944794"><ph name="NAME" /> és visible per als dispositius Bluetooth.</translation> +<translation id="174102739345480129">El marcador està desactivat.</translation> <translation id="1743570585616704562">No s'ha reconegut</translation> <translation id="1746730358044914197">Els mètodes d'introducció estan configurats per l'administrador.</translation> <translation id="1747827819627189109">Teclat en pantalla activat</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Aquestes són les eines del llapis òptic</translation> <translation id="4389184120735010762">Has premut la tecla de drecera de la lupa acoblada. Vols activar-la?</translation> <translation id="439598569299422042">En pausa, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">La captura de pantalla de vídeo no es pot desar</translation> <translation id="4405151984121254935">El tipus de perifèric connectat no és compatible</translation> <translation id="4406883609789734330">Subtítols instantanis</translation> <translation id="4412944820643904175">La funció <ph name="FEATURE_NAME" /> està desactivada.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Frase següent</translation> +<translation id="5016558321564993266">Commuta el marcador. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">S'ha acabat el temps</translation> <translation id="5033299697334913360">Fes clic en qualsevol lloc per capturar la pantalla completa</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> s'ha connectat a un altre telèfon</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Tanca la sessió</translation> <translation id="5234764350956374838">Ignora</translation> <translation id="523505283826916779">Configuració d'accessibilitat</translation> +<translation id="5245201184978705914">No es pot generar una transcripció</translation> <translation id="5253783950165989294">Connectat a un dispositiu anomenat <ph name="DEVICE_NAME" />, <ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="5260676007519551770">Escriptori 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> sol·licita la teva atenció.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Entrada d'àudio</translation> <translation id="544691375626129091">Ja s'han afegit tots els usuaris disponibles a aquesta sessió.</translation> <translation id="54609108002486618">Gestionat</translation> +<translation id="5460938382730614333">El marcador està activat.</translation> <translation id="5465662442746197494">Necessiteu ajuda?</translation> <translation id="547979256943495781">El prestatge és a la dreta</translation> <translation id="5491186829646618080">Hi ha actualitzacions de microprogramari disponibles</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">La funció Llum nocturna s'activa automàticament al vespre</translation> <translation id="5750765938512549687">El Bluetooth està desactivat</translation> <translation id="5760866832697883462">Connecta el dispositiu <ph name="NAME" /></translation> +<translation id="5762420912707163638">Commuta el marcador. <ph name="STATE_TEXT" /> Utilitza el ratolí tàctil, la pantalla tàctil o el llapis òptic per dibuixar a la pantalla.</translation> <translation id="576341972084747908">Baixa el fitxer perillós <ph name="FILENAME" /></translation> <translation id="5763928712329149804">L'opció Grup de prestatges està desactivada.</translation> <translation id="576453121877257266">La funció Llum nocturna està activada.</translation>
diff --git a/ash/strings/ash_strings_cy.xtb b/ash/strings/ash_strings_cy.xtb index 1e3e2b6..912f1c6 100644 --- a/ash/strings/ash_strings_cy.xtb +++ b/ash/strings/ash_strings_cy.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Agorwyd yn ddiweddar</translation> <translation id="2841907151129139818">Wedi newid i'r modd llechen</translation> <translation id="2844169650293029770">Dyfais USB-C (porth chwith ar y blaen)</translation> +<translation id="2848120746144143659">Pwyswch Enter i dynnu sgrinlun sgrîn lawn</translation> <translation id="2849936225196189499">Critigol</translation> <translation id="2860184359326882502">Y Canlyniad Mwyaf Perthnasol</translation> <translation id="2865888419503095837">Gwybodaeth am y rhwydwaith</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Nid oes unrhyw wybodaeth rhwydwaith ar gael</translation> <translation id="385051799172605136">Nôl</translation> <translation id="385300504083504382">Y dechrau</translation> +<translation id="3861651314799684201">Pwyswch Enter i recordio'r sgrîn lawn</translation> <translation id="3886872229787704059">Agorwyd heddiw</translation> <translation id="3891340733213178823">Pwyswch Ctrl+Shift+Q ddwywaith i allgofnodi.</translation> <translation id="3893630138897523026">ChromeVox (adborth ar lafar)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Mae olrhain perfformiad wedi'i alluogi</translation> <translation id="5955304353782037793">ap</translation> <translation id="5958529069007801266">Defnyddiwr dan oruchwyliaeth</translation> +<translation id="5976112937189445008">Pwyswch Enter i recordio'r ffenestr</translation> <translation id="5977415296283489383">Clustffon</translation> <translation id="5978382165065462689">Rhannu rheolaeth o'ch sgrîn drwy Gymorth o Bell.</translation> <translation id="5980301590375426705">Gadael gwestai</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Toglo'r modd Parti Silff. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Ymlaen wrth y llythyren</translation> <translation id="8371991222807690464">Mae'n bosib y bydd perfformiad y perifferol yn gyfyngedig yn y modd Gwestai</translation> +<translation id="8374601332003098278">Pwyswch Enter i recordio'r sgrîn yn rhannol</translation> <translation id="8375916635258623388">Bydd y <ph name="DEVICE_NAME" /> hwn a'ch ffôn yn cysylltu'n awtomatig</translation> <translation id="8380784334203145311">Nos da,</translation> <translation id="8382715499079447151">Wrthi'n gweld amddiffyniad</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Dangos gosodiadau hysbysiadau. Mae hysbysiadau wedi'u troi ymlaen</translation> <translation id="8660331759611631213">Isradd 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, Cryfder Signal <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Pwyswch Enter i dynnu sgrinlun rhannol</translation> <translation id="8664753092453405566">Dangos rhestr rhwydwaith. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Agorwch <ph name="NAME" /> i osod eich dyfais</translation> <translation id="8676770494376880701">Mae gwefrydd pŵer isel wedi'i gysylltu</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Mae <ph name="PERCENTAGE" /> y cant o'r batri'n weddill.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Nid yw Google Assistant yn siarad yr iaith hon.</translation> +<translation id="8924458948354692166">Pwyswch Enter i dynnu sgrinlun ffenestr</translation> <translation id="8926951137623668982">Silff yn cael ei guddio bob amser</translation> <translation id="8936501819958976551">wedi dadweithredu</translation> <translation id="8938800817013097409">Dyfais USB-C (porth de yn y cefn)</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 49f64384..7efa7cfb 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Livetekstning er aktiveret.</translation> <translation id="1720011244392820496">Aktivér Wi-Fi-synkronisering</translation> <translation id="1736898441010944794">"<ph name="NAME" />" kan ses af Bluetooth-enheder.</translation> +<translation id="174102739345480129">Tuschen er deaktiveret.</translation> <translation id="1743570585616704562">Ikke genkendt</translation> <translation id="1746730358044914197">Indtastningsmetoder konfigureres af din administrator.</translation> <translation id="1747827819627189109">Skærmtastaturet er aktiveret</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Dette er dine styluspenværktøjer</translation> <translation id="4389184120735010762">Du trykkede på tastaturgenvejen for det fastgjorte lupvindue. Vil du aktivere indstillingen?</translation> <translation id="439598569299422042">Sat på pause, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Dit screencast kan ikke gemmes</translation> <translation id="4405151984121254935">Den tilsluttede tilbehørstype understøttes ikke</translation> <translation id="4406883609789734330">Livetekstning</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> er deaktiveret.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Næste sætning</translation> +<translation id="5016558321564993266">Slå tusch til/fra. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Tiden er gået</translation> <translation id="5033299697334913360">Klik et vilkårligt sted for at tage et billede af hele skærmen</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> har oprettet forbindelse til en ny telefon</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Log ud</translation> <translation id="5234764350956374838">Luk</translation> <translation id="523505283826916779">Indstillinger for hjælpefunktioner</translation> +<translation id="5245201184978705914">Det er ikke muligt at generere en transskription</translation> <translation id="5253783950165989294">Forbundet til en enhed ved navn <ph name="DEVICE_NAME" />, <ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="5260676007519551770">Skrivebord 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> kræver din opmærksomhed.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Lydinput</translation> <translation id="544691375626129091">Alle tilgængelige brugere er allerede blevet føjet til denne session.</translation> <translation id="54609108002486618">Administreret</translation> +<translation id="5460938382730614333">Tuschen er aktiveret.</translation> <translation id="5465662442746197494">Har du brug for hjælp?</translation> <translation id="547979256943495781">Hylden er til højre</translation> <translation id="5491186829646618080">Der er nye firmwareopdateringer</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Nattelys aktiveres automatisk ved solopgang</translation> <translation id="5750765938512549687">Bluetooth er slået fra</translation> <translation id="5760866832697883462">Tilslut dine <ph name="NAME" /></translation> +<translation id="5762420912707163638">Slå tusch til/fra. <ph name="STATE_TEXT" /> Brug touchplade, touchskærm eller styluspen til at tegne på skærmen.</translation> <translation id="576341972084747908">Downloader skadelig <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Shelf Party er deaktiveret.</translation> <translation id="576453121877257266">Nattelys er slået til.</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index 69809d7..c9373e4 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -301,6 +301,7 @@ <translation id="2834813915651407382">Kürzlich geöffnet</translation> <translation id="2841907151129139818">Zum Tabletmodus gewechselt</translation> <translation id="2844169650293029770">USB-C-Gerät (Port vorne links)</translation> +<translation id="2848120746144143659">Eingabetaste drücken, um einen Screenshot vom ganzen Bildschirm aufzunehmen</translation> <translation id="2849936225196189499">Kritisch</translation> <translation id="2860184359326882502">Beste Ergebnisse</translation> <translation id="2865888419503095837">Netzwerkinformationen</translation> @@ -479,6 +480,7 @@ <translation id="3846575436967432996">Keine Netzwerkinformationen verfügbar</translation> <translation id="385051799172605136">Zurück</translation> <translation id="385300504083504382">Anfang</translation> +<translation id="3861651314799684201">Eingabetaste drücken, um den ganzen Bildschirm aufzuzeichnen</translation> <translation id="3886872229787704059">Heute geöffnet</translation> <translation id="3891340733213178823">Drücke zum Abmelden zweimal Strg + Umschalttaste + Q.</translation> <translation id="3893630138897523026">ChromeVox (gesprochenes Feedback)</translation> @@ -810,6 +812,7 @@ <translation id="595202126637698455">Leistungsnachverfolgung aktiviert</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Betreuter Nutzer</translation> +<translation id="5976112937189445008">Eingabetaste drücken, um Fenster aufzuzeichnen</translation> <translation id="5977415296283489383">Kopfhörer</translation> <translation id="5978382165065462689">Du teilst dir die Bildschirmsteuerung per Remote-Unterstützung.</translation> <translation id="5980301590375426705">Gastsitzung beenden</translation> @@ -1195,6 +1198,7 @@ <translation id="8364673525741149932">Shelf Party ein-/ausschalten. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Weiter um einen Buchstaben</translation> <translation id="8371991222807690464">Die Leistung von Peripheriegeräten kann im Gastmodus eingeschränkt sein</translation> +<translation id="8374601332003098278">Eingabetaste drücken, um einen Teil des Bildschirms aufzuzeichnen</translation> <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> und dein Smartphone werden automatisch miteinander verbunden</translation> <translation id="8380784334203145311">Gute Nacht,</translation> <translation id="8382715499079447151">Spionageschutz</translation> @@ -1247,6 +1251,7 @@ <translation id="8653151467777939995">Benachrichtigungseinstellungen anzeigen. Benachrichtigungen sind aktiviert.</translation> <translation id="8660331759611631213">Quadratwurzel aus 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, Signalstärke bei <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Eingabetaste drücken, um einen Bildschirmausschnitt aufzunehmen</translation> <translation id="8664753092453405566">Netzwerkliste anzeigen. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727"><ph name="NAME" /> öffnen, um das Gerät einzurichten</translation> <translation id="8676770494376880701">Leistungsschwaches Ladegerät angeschlossen</translation> @@ -1288,6 +1293,7 @@ <translation id="8909138438987180327">Akkustand: <ph name="PERCENTAGE" />.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google Assistant spricht diese Sprache nicht.</translation> +<translation id="8924458948354692166">Eingabetaste drücken, um einen Screenshot eines Fensters aufzunehmen</translation> <translation id="8926951137623668982">Ablage immer ausgeblendet</translation> <translation id="8936501819958976551">deaktiviert</translation> <translation id="8938800817013097409">USB-C-Gerät (rechter Port hinten)</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index c9e1e25d..7fb2f1b 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Ανοίχτηκαν πρόσφατα</translation> <translation id="2841907151129139818">Έγινε εναλλαγή σε λειτουργία tablet.</translation> <translation id="2844169650293029770">Συσκευή USB-C (αριστερή μπροστινή θύρα)</translation> +<translation id="2848120746144143659">Πατήστε Enter για λήψη στιγμιότυπου πλήρους οθόνης</translation> <translation id="2849936225196189499">Κρίσιμη</translation> <translation id="2860184359326882502">Βέλτιστη αντιστοίχιση</translation> <translation id="2865888419503095837">Πληροφορίες δικτύου</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Δεν υπάρχουν διαθέσιμες πληροφορίες δικτύου</translation> <translation id="385051799172605136">Πίσω</translation> <translation id="385300504083504382">Αρχή</translation> +<translation id="3861651314799684201">Press Enter για εγγραφή πλήρους οθόνης</translation> <translation id="3886872229787704059">Ανοίχτηκαν σήμερα</translation> <translation id="3891340733213178823">Πατήστε Ctrl + Shift + Q δύο φορές για να αποσυνδεθείτε.</translation> <translation id="3893630138897523026">ChromeVox (προφορικά σχόλια)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Η παρακολούθηση απόδοσης έχει ενεργοποιηθεί</translation> <translation id="5955304353782037793">εφαρμογή</translation> <translation id="5958529069007801266">Εποπτευόμενος χρήστης</translation> +<translation id="5976112937189445008">Πατήστε Enter για εγγραφή παραθύρου</translation> <translation id="5977415296283489383">Ακουστικά</translation> <translation id="5978382165065462689">Κοινόχρηστος έλεγχος της οθόνης σας μέσω της απομακρυσμένης βοήθειας.</translation> <translation id="5980301590375426705">Έξοδος επισκέπτη</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Εναλλαγή Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Προώθηση ανά γράμμα</translation> <translation id="8371991222807690464">Η απόδοση των περιφερειακών ενδέχεται να περιορίζεται στη Λειτουργία επισκέπτη</translation> +<translation id="8374601332003098278">Πατήστε Enter για εγγραφή μέρους της οθόνης</translation> <translation id="8375916635258623388">Η συσκευή <ph name="DEVICE_NAME" /> και το τηλέφωνό σας θα συνδεθούν αυτόματα</translation> <translation id="8380784334203145311">Καληνύχτα,</translation> <translation id="8382715499079447151">Προστασία προβολής</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Εμφάνιση ρυθμίσεων ειδοποιήσεων. Οι ειδοποιήσεις είναι ενεργοποιημένες.</translation> <translation id="8660331759611631213">Τετραγωνική ρίζα του 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, ισχύς σήματος <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Πατήστε Enter για λήψη μερικού στιγμιότυπου οθόνης</translation> <translation id="8664753092453405566">Εμφάνιση λίστας δικτύων. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Ανοίξτε το <ph name="NAME" /> για να ρυθμίσετε τη συσκευή σας</translation> <translation id="8676770494376880701">Ο συνδεδεμένος φορτιστής παρέχει χαμηλή ισχύ</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Η μπαταρία βρίσκεται στο <ph name="PERCENTAGE" /> τοις εκατό.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Ο Βοηθός Google δεν είναι διαθέσιμος σε αυτήν τη γλώσσα.</translation> +<translation id="8924458948354692166">Πατήστε Enter για λήψη στιγμιότυπου οθόνης παραθύρου</translation> <translation id="8926951137623668982">Το ράφι θα αποκρύπτεται πάντα</translation> <translation id="8936501819958976551">απενεργοποιημένο</translation> <translation id="8938800817013097409">Συσκευή USB-C (πίσω δεξιά θύρα)</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index ebf7254..850082c 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">Window <ph name="WINDOW_TITLE" /> assigned to all desks</translation> <translation id="1750088060796401187">Only <ph name="MAX_DESK_LIMIT" /> desks allowed. Remove a desk to open a new one.</translation> <translation id="1756833229520115364">Couldn’t save template. Too many windows or tabs.</translation> +<translation id="1757857692711134412">Off until sunset</translation> <translation id="1761222317188459878">Toggle network connection. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">The <ph name="LAUNCHER_KEY_NAME" /> + full stop keyboard shortcut has changed. To use the insert key, press the <ph name="LAUNCHER_KEY_NAME" /> key + shift + backspace.</translation> <translation id="1770726142253415363">Moved to row <ph name="ROW_NUMBER" />, column <ph name="COLUMN_NUMBER" />.</translation> @@ -508,6 +509,7 @@ <translation id="3995138139523574647">USB-C device (right-hand-side back port)</translation> <translation id="40062176907008878">Handwriting</translation> <translation id="4017989525502048489">Laser pointer</translation> +<translation id="401993194061514265">Marker unavailable. Re-open Screencast.</translation> <translation id="4021716437419160885">Scroll down</translation> <translation id="4028481283645788203">Password required for more security</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -522,6 +524,7 @@ <translation id="412298498316631026">window</translation> <translation id="4123259114412175274">To unlock your Chromebook, make sure that your phone's Bluetooth is on</translation> <translation id="4129129681837227511">To see notifications on your lock screen, unlock to change the setting</translation> +<translation id="4136724716305260864">On until sunrise</translation> <translation id="4146833061457621061">Play music</translation> <translation id="4165275524535002941">Cable may not support displays</translation> <translation id="4177913004758410636">{0,plural, =1{Update device within a day}other{Update device within # days}}</translation> @@ -574,6 +577,7 @@ <translation id="4421231901400348175">Sharing control of your screen with <ph name="HELPER_NAME" /> via Remote Assistance.</translation> <translation id="4424159417645388645">Desk 5</translation> <translation id="4430019312045809116">volume</translation> +<translation id="4435022394553622295">View your phone's notifications and apps on your <ph name="DEVICE_TYPE" /></translation> <translation id="4441283832827406317">Apps are sorted by name</translation> <translation id="4445159312344259901">Sign in to unlock</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 important notification}other{# important notifications}}</translation> @@ -634,6 +638,7 @@ <translation id="4734965478015604180">Horizontal</translation> <translation id="4735498845456076464">The <ph name="LAUNCHER_KEY_NAME" /> + number keyboard shortcut has changed. To use function keys, press the <ph name="LAUNCHER_KEY_NAME" /> key + a key on the top row.</translation> <translation id="473775607612524610">Update</translation> +<translation id="4752784485658729358">Only six saved desks allowed. Remove a desk to save a new one.</translation> <translation id="4759238208242260848">Downloads</translation> <translation id="4774338217796918551">Come back tomorrow at <ph name="COME_BACK_TIME" />.</translation> <translation id="4776917500594043016">Password for <ph name="USER_EMAIL_ADDRESS" /></translation> @@ -701,6 +706,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 other notification}other{# other notifications}}</translation> <translation id="5207949376430453814">Highlight text caret</translation> <translation id="5208059991603368177">On</translation> +<translation id="5216991270656129561">Off until <ph name="TIME" /></translation> <translation id="5222676887888702881">Sign out</translation> <translation id="5234764350956374838">Dismiss</translation> <translation id="523505283826916779">Accessibility settings</translation> @@ -750,6 +756,7 @@ <translation id="553675580533261935">Exiting session</translation> <translation id="5537725057119320332">Cast</translation> <translation id="554893713779400387">Toggle dictation</translation> +<translation id="5560420195677022218">View your phone's apps on your <ph name="DEVICE_TYPE" /></translation> <translation id="556042886152191864">Button</translation> <translation id="5571066253365925590">Bluetooth enabled</translation> <translation id="557563299383177668">Next paragraph</translation> @@ -968,6 +975,7 @@ <translation id="6884665277231944629">Go back to today</translation> <translation id="6886172995547742638">Your <ph name="DEVICE_TYPE" /> may experience lower performance. Use a certified <ph name="PREFERRED_MINIMUM_POWER" />W or higher USB-C power adaptor.</translation> <translation id="688631446150864480">Press the Down arrow key to switch windows</translation> +<translation id="6891721121089053234">View your phone's recent photos, media and apps on your <ph name="DEVICE_TYPE" /></translation> <translation id="6896758677409633944">Copy</translation> <translation id="6901883536534621389">Try gestures to navigate</translation> <translation id="6919251195245069855">Couldn’t recognise your smart card. Try again.</translation> @@ -1096,6 +1104,7 @@ <translation id="7684531502177797067">Camera input set to <ph name="CAMERA_NAME" />.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Add new mobile network</translation> +<translation id="7720400844887872976">On until <ph name="TIME" /></translation> <translation id="7720410380936703141">TRY AGAIN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}other{# notifications}}</translation> <translation id="7724603315864178912">Cut</translation> @@ -1178,6 +1187,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> This setting is managed by your administrator.</translation> <translation id="8155628902202578800">Open info dialogue for <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Using <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">View your phone's recent photos, media, notifications and apps on your <ph name="DEVICE_TYPE" /></translation> <translation id="8192202700944119416">Notifications are hidden.</translation> <translation id="8196787716797768628">Use gestures to quickly switch between apps and interact with your Chromebook in tablet mode.</translation> <translation id="8200772114523450471">Resume</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 127f7bea..9428ddf2 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">El Subtitulado instantáneo está activado.</translation> <translation id="1720011244392820496">Activa la Sincronización Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" visible para dispositivos Bluetooth.</translation> +<translation id="174102739345480129">El marcador está desactivado.</translation> <translation id="1743570585616704562">No se reconoció</translation> <translation id="1746730358044914197">Tu administrador configura los métodos de entrada.</translation> <translation id="1747827819627189109">Teclado en pantalla habilitado</translation> @@ -565,6 +566,7 @@ <translation id="4379531060876907730">Estas son las herramientas de la pluma stylus</translation> <translation id="4389184120735010762">Presionaste la combinación de teclas para activar la lupa con vista acoplada. ¿Quieres activarla?</translation> <translation id="439598569299422042">Pausado: <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">No se pudo guardar la presentación en pantalla</translation> <translation id="4405151984121254935">El tipo de periférico conectado no es compatible.</translation> <translation id="4406883609789734330">Subtitulado instantáneo</translation> <translation id="4412944820643904175">La función <ph name="FEATURE_NAME" /> está desactivada.</translation> @@ -671,6 +673,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Oración siguiente</translation> +<translation id="5016558321564993266">Activar o desactivar el marcador. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Se acabó el tiempo</translation> <translation id="5033299697334913360">Haz clic en cualquier parte para capturar la pantalla completa</translation> <translation id="5035236842988137213">Se conectó el dispositivo <ph name="DEVICE_NAME" /> a un teléfono nuevo</translation> @@ -700,6 +703,7 @@ <translation id="5222676887888702881">Salir</translation> <translation id="5234764350956374838">Descartar</translation> <translation id="523505283826916779">Configuración de accesibilidad</translation> +<translation id="5245201184978705914">No se puede generar una transcripción</translation> <translation id="5253783950165989294">Se estableció la conexión con un dispositivo llamado <ph name="DEVICE_NAME" />, <ph name="BATTERY_PERCENTAGE" />% de batería</translation> <translation id="5260676007519551770">Escritorio 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> requiere tu atención.</translation> @@ -734,6 +738,7 @@ <translation id="5433020815079095860">Entrada de audio</translation> <translation id="544691375626129091">Todos los usuarios disponibles ya se agregaron a esta sesión.</translation> <translation id="54609108002486618">Gestionado</translation> +<translation id="5460938382730614333">El marcador está activado.</translation> <translation id="5465662442746197494">¿Necesitas ayuda?</translation> <translation id="547979256943495781">Biblioteca a la derecha</translation> <translation id="5491186829646618080">Hay actualizaciones de firmware disponibles</translation> @@ -775,6 +780,7 @@ <translation id="5745612484876805746">Se activa la Luz nocturna automáticamente al atardecer</translation> <translation id="5750765938512549687">Se desactivó la conexión Bluetooth</translation> <translation id="5760866832697883462">Conecta tu <ph name="NAME" /></translation> +<translation id="5762420912707163638">Cómo activar o desactivar el marcador. <ph name="STATE_TEXT" /> Utiliza el panel táctil, la pantalla táctil o la pluma stylus para dibujar en la pantalla.</translation> <translation id="576341972084747908">Descarga peligrosa: <ph name="FILENAME" /></translation> <translation id="5763928712329149804">El modo Grupo de barras está desactivado.</translation> <translation id="576453121877257266">La luz nocturna está activada.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index d9d93a7..e361e0b6 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Reaalajas subtiitrid on sisse lülitatud.</translation> <translation id="1720011244392820496">Lülitage WiFi sünkroonimine sisse</translation> <translation id="1736898441010944794">„<ph name="NAME" />“ on Bluetooth-seadmetele nähtav.</translation> +<translation id="174102739345480129">Marker on välja lülitatud.</translation> <translation id="1743570585616704562">Ei tuvastatud</translation> <translation id="1746730358044914197">Sisestusmeetodid seadistab teie administraator.</translation> <translation id="1747827819627189109">Ekraanil kuvatav klaviatuur on lubatud</translation> @@ -303,6 +304,7 @@ <translation id="2834813915651407382">Hiljuti avatud</translation> <translation id="2841907151129139818">Lülitati tahvelarvutirežiimile</translation> <translation id="2844169650293029770">C-tüüpi USB-seade (eesmine vasakpoolne port)</translation> +<translation id="2848120746144143659">Vajutage täisekraani jäädvustamiseks sisestusklahvi</translation> <translation id="2849936225196189499">Kriitiline</translation> <translation id="2860184359326882502">Parim vaste</translation> <translation id="2865888419503095837">Võrguteave</translation> @@ -482,6 +484,7 @@ <translation id="3846575436967432996">Võrguteave ei ole saadaval</translation> <translation id="385051799172605136">Tagasi</translation> <translation id="385300504083504382">Algus</translation> +<translation id="3861651314799684201">Vajutage täisekraani salvestamiseks sisestusklahvi</translation> <translation id="3886872229787704059">Täna avatud</translation> <translation id="3891340733213178823">Väljalogimiseks vajutage kaks korda klahvikombinatsiooni Ctrl + tõstuklahv + Q.</translation> <translation id="3893630138897523026">ChromeVox (kõnena esitatud tagasiside)</translation> @@ -565,6 +568,7 @@ <translation id="4379531060876907730">Need on teie elektronpliiatsi tööriistad</translation> <translation id="4389184120735010762">Vajutasite dokitud luubi otseteed. Kas soovite luubi sisse lülitada?</translation> <translation id="439598569299422042">Pausil, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Ei saa ekraaniülekannet salvestada</translation> <translation id="4405151984121254935">Ühendatud välisseadme tüüpi ei toetata</translation> <translation id="4406883609789734330">Reaalajas subtiitrid</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> on väljas.</translation> @@ -671,6 +675,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Järgmine lause</translation> +<translation id="5016558321564993266">Markeri sisse-/väljalülitamine. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Aeg on läbi</translation> <translation id="5033299697334913360">Täisekraani jäädvustamiseks klõpsake ekraanikuval kus tahes</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> ühendati uue telefoniga</translation> @@ -700,6 +705,7 @@ <translation id="5222676887888702881">Logi välja</translation> <translation id="5234764350956374838">Loobu</translation> <translation id="523505283826916779">Juurdepääsuseaded</translation> +<translation id="5245201184978705914">Ei saa transkriptsiooni luua</translation> <translation id="5253783950165989294">Ühendatud seadmega <ph name="DEVICE_NAME" /> (akutase <ph name="BATTERY_PERCENTAGE" />%)</translation> <translation id="5260676007519551770">Töölaud 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> vajab teie tähelepanu.</translation> @@ -734,6 +740,7 @@ <translation id="5433020815079095860">Helisisend</translation> <translation id="544691375626129091">Kõik saadaval kasutajad on sellesse seanssi juba lisatud.</translation> <translation id="54609108002486618">Hallatud</translation> +<translation id="5460938382730614333">Marker on sisse lülitatud.</translation> <translation id="5465662442746197494">Kas vajate abi?</translation> <translation id="547979256943495781">Riiul asub paremal</translation> <translation id="5491186829646618080">Saadaval on püsivaravärskendused</translation> @@ -775,6 +782,7 @@ <translation id="5745612484876805746">Öövalgus lülitub päikeseloojangul automaatselt sisse</translation> <translation id="5750765938512549687">Bluetooth on välja lülitatud</translation> <translation id="5760866832697883462">Ühendage oma <ph name="NAME" /></translation> +<translation id="5762420912707163638">Markeri sisse-/väljalülitamine. <ph name="STATE_TEXT" /> Kasutage ekraanikuvale joonistamiseks puuteplaati, puuteekraani või elektronpliiatsit.</translation> <translation id="576341972084747908">Ohtliku faili <ph name="FILENAME" /> allalaadimine</translation> <translation id="5763928712329149804">Shelf Party on välja lülitatud.</translation> <translation id="576453121877257266">Öövalgus on sees.</translation> @@ -808,6 +816,7 @@ <translation id="595202126637698455">Toimivuse jälgimine on lubatud</translation> <translation id="5955304353782037793">rak</translation> <translation id="5958529069007801266">Valvatav kasutaja</translation> +<translation id="5976112937189445008">Vajutage akna salvestamiseks sisestusklahvi</translation> <translation id="5977415296283489383">Kõrvaklapid</translation> <translation id="5978382165065462689">Ekraani juhtimise jagamine kaugabi kaudu.</translation> <translation id="5980301590375426705">Välju kül. seansist</translation> @@ -1194,6 +1203,7 @@ <translation id="8364673525741149932">Režiimi Shelf Party sisse- ja väljalülitamine. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Tähe võrra edasi</translation> <translation id="8371991222807690464">Välisseadme jõudlus võib külalisrežiimis olla piiratud</translation> +<translation id="8374601332003098278">Vajutage osalise ekraanikuva salvestamiseks sisestusklahvi</translation> <translation id="8375916635258623388">See <ph name="DEVICE_NAME" /> ja teie telefon ühendatakse automaatselt</translation> <translation id="8380784334203145311">Head ööd!</translation> <translation id="8382715499079447151">Vaatamiskaitse</translation> @@ -1246,6 +1256,7 @@ <translation id="8653151467777939995">Kuvab märguandeseaded. Märguanded on sisse lülitatud</translation> <translation id="8660331759611631213">Ruutjuur 71-st</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, signaalitugevus <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Vajutage osalise ekraanipildi jäädvustamiseks sisestusklahvi</translation> <translation id="8664753092453405566">Kuvab võrkude loendi. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Avage <ph name="NAME" />, et oma seade seadistada</translation> <translation id="8676770494376880701">Väikese energiakuluga laadija on ühendatud</translation> @@ -1287,6 +1298,7 @@ <translation id="8909138438987180327">Aku laetuse tase on <ph name="PERCENTAGE" /> protsenti.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google'i assistent ei räägi selles keeles.</translation> +<translation id="8924458948354692166">Vajutage akna ekraanipildi jäädvustamiseks sisestusklahvi</translation> <translation id="8926951137623668982">Riiul on alati peidetud</translation> <translation id="8936501819958976551">inaktiveeritud</translation> <translation id="8938800817013097409">C-tüüpi USB-seade (parempoolne port taga)</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index c23d50f1..ef13f88 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">اخیراً باز شده است</translation> <translation id="2841907151129139818">به حالت رایانه لوحی رفتهاید</translation> <translation id="2844169650293029770">دستگاه USB-C (درگاه جلوی سمت چپ)</translation> +<translation id="2848120746144143659">برای ضبط نماگرفت از تمام صفحه، کلید «ورود» را فشار دهید</translation> <translation id="2849936225196189499">مهم</translation> <translation id="2860184359326882502">بهترین مورد منطبق</translation> <translation id="2865888419503095837">اطلاعات شبکه</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">اطلاعات شبکه در دسترس نیست</translation> <translation id="385051799172605136">بازگشت</translation> <translation id="385300504083504382">آغاز</translation> +<translation id="3861651314799684201">برای ضبط تمام صفحه، کلید «ورود» را فشار دهید</translation> <translation id="3886872229787704059">امروز باز شده است</translation> <translation id="3891340733213178823">برای خروج از سیستم Ctrl+Shift+Q را دو بار فشار دهید.</translation> <translation id="3893630138897523026">ChromeVox (بازخورد گفتاری)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">ردیابی عملکرد فعال شد</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">کاربر نظارتشده</translation> +<translation id="5976112937189445008">برای ضبط پنجره، کلید «ورود» را فشار دهید</translation> <translation id="5977415296283489383">هدفون</translation> <translation id="5978382165065462689">همرسانی کنترل صفحهتان از طریق راهنمایی ازراهدور.</translation> <translation id="5980301590375426705">خروج از مهمان</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">روشن/ خاموش کردن «گروه قفسهها». <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">جلو رفتن حرفبهحرف</translation> <translation id="8371991222807690464">ممکن است در «حالت مهمان» عملکرد لوازم جانبی محدود باشد</translation> +<translation id="8374601332003098278">برای ضبط بخشی از صفحه، کلید «ورود» را فشار دهید</translation> <translation id="8375916635258623388">این <ph name="DEVICE_NAME" /> و تلفنتان بهطور خودکار متصل میشوند</translation> <translation id="8380784334203145311">شببهخیر،</translation> <translation id="8382715499079447151">محافظت دربرابر مشاهده</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">نمایش تنظیمات اعلان. اعلانها روشن است</translation> <translation id="8660331759611631213">Square root of 71 (جذر ۷۱)</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">برای ضبط نماگرفت از یک بخش صفحه، کلید «ورود» را فشار دهید</translation> <translation id="8664753092453405566">نمایش فهرست شبکه. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">برای راهاندازی دستگاه، <ph name="NAME" /> را باز کنید</translation> <translation id="8676770494376880701">شارژر برق متصل شده ضعیف است</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">شارژ باتری <ph name="PERCENTAGE" /> درصد است.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">«دستیار Google» به این زبان صحبت نمیکند.</translation> +<translation id="8924458948354692166">برای ضبط نماگرفت از پنجره، کلید «ورود» را فشار دهید</translation> <translation id="8926951137623668982">قفسه همیشه پنهان میشود</translation> <translation id="8936501819958976551">غیرفعال</translation> <translation id="8938800817013097409">دستگاه USB-C (درگاه عقب سمت راست)</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index 290ba78..783639fc 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -135,6 +135,7 @@ <translation id="1719094688023114093">Livetekstitys on päällä.</translation> <translation id="1720011244392820496">Laita Wi-Fin synkronointi päälle</translation> <translation id="1736898441010944794">"<ph name="NAME" />" näkyy Bluetooth-laitteille.</translation> +<translation id="174102739345480129">Piirtotyökalu ei ole päällä.</translation> <translation id="1743570585616704562">Ei tunnistettu</translation> <translation id="1746730358044914197">Järjestelmänvalvoja on määrittänyt syöttötavat.</translation> <translation id="1747827819627189109">Ruutunäppäimistö otettiin käyttöön</translation> @@ -563,6 +564,7 @@ <translation id="4379531060876907730">Tässä ovat näyttökynätyökalusi</translation> <translation id="4389184120735010762">Painoit kiinnitetyn suurennuksen pikanäppäintä. Haluatko ottaa sen käyttöön?</translation> <translation id="439598569299422042">Keskeytetty, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Ruutukaappausvideota ei voi tallentaa</translation> <translation id="4405151984121254935">Yhdistettyä lisälaitetyyppiä ei tueta</translation> <translation id="4406883609789734330">Livetekstitys</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ei ole päällä.</translation> @@ -669,6 +671,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Seuraava lause</translation> +<translation id="5016558321564993266">Piirtotyökalu päälle tai pois päältä. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Aika on lopussa</translation> <translation id="5033299697334913360">Ota koko ruudun kuvakaappaus klikkaamalla minne tahansa</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> yhdistetty uuteen puhelimeen</translation> @@ -698,6 +701,7 @@ <translation id="5222676887888702881">Kirjaudu ulos</translation> <translation id="5234764350956374838">Hylkää</translation> <translation id="523505283826916779">Esteettömyysasetukset</translation> +<translation id="5245201184978705914">Transkriptiota ei voi luoda</translation> <translation id="5253783950165989294">Yhdistetty laitteeseen nimeltä <ph name="DEVICE_NAME" />, <ph name="BATTERY_PERCENTAGE" /> % virtaa</translation> <translation id="5260676007519551770">Pöytä 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> pyytää huomiotasi.</translation> @@ -732,6 +736,7 @@ <translation id="5433020815079095860">Äänitulo</translation> <translation id="544691375626129091">Kaikki käytettävissä olevat käyttäjät on jo lisätty tähän istuntoon.</translation> <translation id="54609108002486618">Ylläpidetty</translation> +<translation id="5460938382730614333">Piirtotyökalu on päällä.</translation> <translation id="5465662442746197494">Tarvitsetko apua?</translation> <translation id="547979256943495781">Hylly oikealla</translation> <translation id="5491186829646618080">Laiteohjelmiston päivityksiä saatavilla</translation> @@ -773,6 +778,7 @@ <translation id="5745612484876805746">Yövalo käynnistyy automaattisesti, kun aurinko laskee</translation> <translation id="5750765938512549687">Bluetooth on pois päältä</translation> <translation id="5760866832697883462">Yhdistä <ph name="NAME" /></translation> +<translation id="5762420912707163638">Piirtotyökalu päälle tai pois päältä. <ph name="STATE_TEXT" /> Piirrä näytölle ohjauslevyn, kosketusnäytön tai näyttökynän avulla.</translation> <translation id="576341972084747908">Lataa vaarallinen <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Hyllyryhmä on pois päältä.</translation> <translation id="576453121877257266">Yövalo on päällä.</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 433f08c1..6d98fcc 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Binuksan kamakailan</translation> <translation id="2841907151129139818">Lumipat sa tablet mode</translation> <translation id="2844169650293029770">USB-C device (port sa kaliwang bahagi sa harap)</translation> +<translation id="2848120746144143659">Pindutin ang enter para mag-capture screenshot ng full screen</translation> <translation id="2849936225196189499">Kritikal</translation> <translation id="2860184359326882502">Pinakatumutugma</translation> <translation id="2865888419503095837">Impormasyon ng network</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Walang available na impormasyon sa network</translation> <translation id="385051799172605136">Bumalik</translation> <translation id="385300504083504382">Simula</translation> +<translation id="3861651314799684201">Pindutin ang enter para mag-record nang full screen</translation> <translation id="3886872229787704059">Binuksan ngayon</translation> <translation id="3891340733213178823">Pindutin ang Ctrl+Shift+Q nang dalawang beses upang mag-sign out.</translation> <translation id="3893630138897523026">ChromeVox (pasalitang feedback)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Naka-enable ang pagte-trace sa pagganap</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Pinangangasiwaang user</translation> +<translation id="5976112937189445008">Pindutin ang enter para i-record ang window</translation> <translation id="5977415296283489383">Headphone</translation> <translation id="5978382165065462689">Pagbabahagi ng kontrol sa iyong screen sa pamamagitan ng Remote Assistance.</translation> <translation id="5980301590375426705">Lumabas</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">I-toggle ang Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Sumulong nang paisa-isang titik</translation> <translation id="8371991222807690464">Posibleng maging limitado ang performance ng peripheral sa Guest mode</translation> +<translation id="8374601332003098278">Pindutin ang enter para mag-record ng bahagyang screen</translation> <translation id="8375916635258623388">Awtomatikong kokonekta ang <ph name="DEVICE_NAME" /> na ito at ang iyong telepono</translation> <translation id="8380784334203145311">Magandang gabi,</translation> <translation id="8382715499079447151">Proteksyon sa pagtingin</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Ipakita ang mga setting ng notification. Naka-on ang mga notification</translation> <translation id="8660331759611631213">Square root ng 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, Lakas ng Signal <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Pindutin ang enter para mag-capture ng bahagyang screenshot</translation> <translation id="8664753092453405566">Ipakita ang listahan ng network. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Buksan ang <ph name="NAME" /> para i-set up ang iyong device</translation> <translation id="8676770494376880701">Nakakabit ang low-power charger</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Nasa <ph name="PERCENTAGE" /> porsyento ang baterya.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Hindi nagsasalita ng ganitong wika ang Google Assistant.</translation> +<translation id="8924458948354692166">Pindutin ang enter para i-capture ang screenshot ng window</translation> <translation id="8926951137623668982">Palaging nakatago ang shelf</translation> <translation id="8936501819958976551">na-deactivate</translation> <translation id="8938800817013097409">USB-C device (kanang port sa likod)</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index 3cb496f3..8a506b2 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">La transcription instantanée est activée.</translation> <translation id="1720011244392820496">Activer la synchronisation Wi-Fi</translation> <translation id="1736898441010944794">« <ph name="NAME" /> » visible par les appareils Bluetooth.</translation> +<translation id="174102739345480129">Le marqueur est désactivé.</translation> <translation id="1743570585616704562">Doigt non reconnu</translation> <translation id="1746730358044914197">Les méthodes d'entrée sont configurées par votre administrateur.</translation> <translation id="1747827819627189109">Clavier à l'écran activé</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Voici vos outils de stylet</translation> <translation id="4389184120735010762">Vous avez appuyé sur le raccourci-clavier de loupe en mode ancré. Voulez-vous l'activer?</translation> <translation id="439598569299422042">Téléchargement interrompu, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Impossible d'enregistrer la vidéocapture d'écran</translation> <translation id="4405151984121254935">Le périphérique connecté n'est pas pris en charge</translation> <translation id="4406883609789734330">Transcription instantanée</translation> <translation id="4412944820643904175">La fonctionnalité <ph name="FEATURE_NAME" /> est désactivée.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Phrase suivante</translation> +<translation id="5016558321564993266">Basculez le marqueur. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Le temps est écoulé</translation> <translation id="5033299697334913360">Cliquez n'importe où pour capturer la totalité de l'écran</translation> <translation id="5035236842988137213">L'appareil <ph name="DEVICE_NAME" /> est connecté à un nouveau téléphone</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Déconnexion</translation> <translation id="5234764350956374838">Fermer</translation> <translation id="523505283826916779">Paramètres d'accessibilité</translation> +<translation id="5245201184978705914">Impossible de générer la transcription</translation> <translation id="5253783950165989294">Connecté à un appareil nommé <ph name="DEVICE_NAME" />, dont le niveau de pile est à<ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="5260676007519551770">Bureau 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> demande votre attention.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Entrée audio</translation> <translation id="544691375626129091">Tous les utilisateurs disponibles ont déjà été ajoutés à cette session.</translation> <translation id="54609108002486618">Géré</translation> +<translation id="5460938382730614333">Le marqueur est activé.</translation> <translation id="5465662442746197494">Besoin d'aide?</translation> <translation id="547979256943495781">Étagère à droite</translation> <translation id="5491186829646618080">Des mises à jour du micrologiciel sont disponibles</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">La fonction Éclairage nocturne s'active automatiquement au coucher du soleil</translation> <translation id="5750765938512549687">Le Bluetooth est désactivé</translation> <translation id="5760866832697883462">Connectez votre <ph name="NAME" /></translation> +<translation id="5762420912707163638">Basculez le marqueur. <ph name="STATE_TEXT" /> Utilisez le pavé tactile, l'écran tactile ou le stylet pour dessiner à l'écran.</translation> <translation id="576341972084747908">Téléchargement du fichier dangereux <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Le mode Shelf Party est désactivé.</translation> <translation id="576453121877257266">Le mode Éclairage nocturne est activé.</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index b0d5edb4..fce8894 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Sous-titres instantanés activés.</translation> <translation id="1720011244392820496">Activer Sync Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" est visible par les appareils Bluetooth.</translation> +<translation id="174102739345480129">Le repère est désactivé.</translation> <translation id="1743570585616704562">Non reconnu</translation> <translation id="1746730358044914197">Les modes de saisie sont configurés par votre administrateur.</translation> <translation id="1747827819627189109">Clavier à l'écran activé</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Voici vos outils de stylet</translation> <translation id="4389184120735010762">Vous avez appuyé sur le raccourci clavier de la loupe ancrée. Voulez-vous l'activer ?</translation> <translation id="439598569299422042">Suspendu, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Impossible d'enregistrer l'enregistrement d'écran</translation> <translation id="4405151984121254935">Le périphérique connecté n'est pas compatible</translation> <translation id="4406883609789734330">Sous-titres instantanés</translation> <translation id="4412944820643904175">La fonctionnalité <ph name="FEATURE_NAME" /> est désactivée.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Phrase suivante</translation> +<translation id="5016558321564993266">Activer/Désactiver le repère. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Temps écoulé</translation> <translation id="5033299697334913360">Cliquez n'importe où pour effectuer une capture en plein écran</translation> <translation id="5035236842988137213">L'appareil <ph name="DEVICE_NAME" /> est associé à un nouveau téléphone</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Déconnexion</translation> <translation id="5234764350956374838">Ignorer</translation> <translation id="523505283826916779">Paramètres d'accessibilité</translation> +<translation id="5245201184978705914">Impossible de générer la transcription</translation> <translation id="5253783950165989294">Connecté à un appareil nommé "<ph name="DEVICE_NAME" />", batterie à <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="5260676007519551770">Bureau 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> requiert votre attention.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Entrée audio</translation> <translation id="544691375626129091">Tous les utilisateurs disponibles ont déjà été ajoutés à cette session.</translation> <translation id="54609108002486618">Géré</translation> +<translation id="5460938382730614333">Le repère est activé.</translation> <translation id="5465662442746197494">Besoin d'aide ?</translation> <translation id="547979256943495781">Étagère à droite</translation> <translation id="5491186829646618080">Mises à jour du micrologiciel disponibles</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">La fonctionnalité Éclairage nocturne est activée automatiquement au coucher du soleil</translation> <translation id="5750765938512549687">Bluetooth désactivé</translation> <translation id="5760866832697883462">Branchez "<ph name="NAME" />"</translation> +<translation id="5762420912707163638">Activer/Désactiver le repère. <ph name="STATE_TEXT" /> Utilisez le pavé tactile, l'écran tactile ou le stylet pour dessiner à l'écran.</translation> <translation id="576341972084747908">Téléchargement du fichier dangereux <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Shelf Party est désactivé.</translation> <translation id="576453121877257266">Éclairage nocturne activé.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index f1bf2f03..84b0d16 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">A función Subtítulos instantáneos está activada.</translation> <translation id="1720011244392820496">Activar Sincronización wifi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" detectable por dispositivos Bluetooth.</translation> +<translation id="174102739345480129">O marcador está desactivado.</translation> <translation id="1743570585616704562">Non se recoñece</translation> <translation id="1746730358044914197">O teu administrador configura os métodos de entrada.</translation> <translation id="1747827819627189109">Teclado en pantalla activado</translation> @@ -565,6 +566,7 @@ <translation id="4379531060876907730">Estas son as túas ferramentas de lapis óptico</translation> <translation id="4389184120735010762">Premiches o atallo de teclado para a lupa ancorada. Queres activala?</translation> <translation id="439598569299422042">En pausa, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Non se puido gardar a gravación da pantalla</translation> <translation id="4405151984121254935">O tipo de periférico conectado non é compatible</translation> <translation id="4406883609789734330">Subtítulos instantáneos</translation> <translation id="4412944820643904175">A función <ph name="FEATURE_NAME" /> está desactivada.</translation> @@ -671,6 +673,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Frase seguinte</translation> +<translation id="5016558321564993266">Activar/Desactivar marcador. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Rematou o tempo</translation> <translation id="5033299697334913360">Fai clic en calquera parte para facer unha captura a pantalla completa</translation> <translation id="5035236842988137213">O <ph name="DEVICE_NAME" /> está conectado a un novo teléfono</translation> @@ -700,6 +703,7 @@ <translation id="5222676887888702881">Pechar sesión</translation> <translation id="5234764350956374838">Rexeitar</translation> <translation id="523505283826916779">Configuración de accesibilidade</translation> +<translation id="5245201184978705914">Non se puido xerar a transcrición</translation> <translation id="5253783950165989294">Conexión establecida cun dispositivo chamado "<ph name="DEVICE_NAME" />"; <ph name="BATTERY_PERCENTAGE" /> % de batería</translation> <translation id="5260676007519551770">Escritorio 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> require a túa atención.</translation> @@ -734,6 +738,7 @@ <translation id="5433020815079095860">Entrada de audio</translation> <translation id="544691375626129091">Xa se engadiron todos os usuarios dispoñibles a esta sesión.</translation> <translation id="54609108002486618">Dispositivo xestionado</translation> +<translation id="5460938382730614333">O marcador está activado.</translation> <translation id="5465662442746197494">Precisas axuda?</translation> <translation id="547979256943495781">O estante está na parte dereita</translation> <translation id="5491186829646618080">Hai actualizacións de firmware dispoñibles</translation> @@ -775,6 +780,7 @@ <translation id="5745612484876805746">A opción Luz nocturna activarase automaticamente ao anoitecer</translation> <translation id="5750765938512549687">O Bluetooth está desactivado</translation> <translation id="5760866832697883462">Conecta o dispositivo (<ph name="NAME" />)</translation> +<translation id="5762420912707163638">Activar/Desactivar marcador. <ph name="STATE_TEXT" /> Usa o panel táctil, a pantalla táctil ou o lapis óptico para debuxar na pantalla.</translation> <translation id="576341972084747908">Descarga de ficheiro perigoso <ph name="FILENAME" /></translation> <translation id="5763928712329149804">O modo Grupo de andeis está desactivado.</translation> <translation id="576453121877257266">A función Luz nocturna está activada.</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index 8e6482be..1602316 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">इसे हाल ही में खोला गया था</translation> <translation id="2841907151129139818">टैबलेट मोड पर स्विच किया गया</translation> <translation id="2844169650293029770">USB-C डिवाइस (बायां सामने वाला पोर्ट)</translation> +<translation id="2848120746144143659">पूरी स्क्रीन का स्क्रीनशॉट लेने के लिए, Enter दबाएं</translation> <translation id="2849936225196189499">महत्वपूर्ण</translation> <translation id="2860184359326882502">सबसे ज़्यादा मिलते-जुलते नतीजे</translation> <translation id="2865888419503095837">नेटवर्क जानकारी</translation> @@ -483,6 +484,7 @@ <translation id="3846575436967432996">कोई नेटवर्क जानकारी उपलब्ध नहीं</translation> <translation id="385051799172605136">वापस जाएं</translation> <translation id="385300504083504382">टेक्स्ट की शुरुआत में जाएं</translation> +<translation id="3861651314799684201">पूरी स्क्रीन को रिकॉर्ड करने के लिए, Enter दबाएं</translation> <translation id="3886872229787704059">इसे आज खोला गया था</translation> <translation id="3891340733213178823">साइन आउट करने के लिए दो बार Ctrl+Shift+Q दबाएं.</translation> <translation id="3893630138897523026">ChromeVox (बोला गया फ़ीडबैक)</translation> @@ -814,6 +816,7 @@ <translation id="595202126637698455">निष्पादन ट्रेसिंग सक्षम है</translation> <translation id="5955304353782037793">ऐप्लिकेशन</translation> <translation id="5958529069007801266">निगरानी में रखा गया उपयोगकर्ता</translation> +<translation id="5976112937189445008">विंडो को रिकॉर्ड करने के लिए, Enter दबाएं</translation> <translation id="5977415296283489383">हेडफ़ोन</translation> <translation id="5978382165065462689">आपकी स्क्रीन का नियंत्रण दूरस्थ सहायका के द्वारा शेयर किया जा रहा है.</translation> <translation id="5980301590375426705">मेहमान मोड से निकलें</translation> @@ -1200,6 +1203,7 @@ <translation id="8364673525741149932">शेल्फ़ पार्टी मोड को टॉगल करें. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">एक वर्ण आगे जाएं</translation> <translation id="8371991222807690464">हो सकता है कि मेहमान मोड में आपके सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) पूरी तरह काम न कर पाएं</translation> +<translation id="8374601332003098278">स्क्रीन के किसी खास हिस्से को रिकॉर्ड करने के लिए, Enter दबाएं</translation> <translation id="8375916635258623388">यह <ph name="DEVICE_NAME" /> और आपका फ़ोन, अपने आप कनेक्ट हो जाएंगे</translation> <translation id="8380784334203145311">गुड नाइट,</translation> <translation id="8382715499079447151">व्यूइंग प्रोटेक्शन</translation> @@ -1252,6 +1256,7 @@ <translation id="8653151467777939995">सूचना सेटिंग दिखाएं. सूचनाएं चालू हैं</translation> <translation id="8660331759611631213">71 का वर्गमूल बताओ</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, सिग्नल की क्षमता <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">स्क्रीन के किसी खास हिस्से का स्क्रीनशॉट लेने के लिए, Enter दबाएं</translation> <translation id="8664753092453405566">नेटवर्क सूची दिखाएं. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">अपना डिवाइस सेट अप करने के लिए <ph name="NAME" /> खोलें</translation> <translation id="8676770494376880701">कम-शक्ति वाला चार्जर</translation> @@ -1293,6 +1298,7 @@ <translation id="8909138438987180327"><ph name="PERCENTAGE" /> बैटरी बची है.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google Assistant सेवा इस भाषा में उपलब्ध नहीं है.</translation> +<translation id="8924458948354692166">विंडो का स्क्रीनशॉट लेने के लिए, Enter दबाएं</translation> <translation id="8926951137623668982">शेल्फ़ को हमेशा के लिए छिपाकर रखा गया है</translation> <translation id="8936501819958976551">बंद की गई</translation> <translation id="8938800817013097409">USB-C डिवाइस (पीछे की ओर दायां पोर्ट)</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index 74888dc..89c8d8e 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Nedavno otvoreno</translation> <translation id="2841907151129139818">Prebačeno na način tableta</translation> <translation id="2844169650293029770">USB-C uređaj (prednji lijevi priključak)</translation> +<translation id="2848120746144143659">Pritisnite Enter za snimanje snimke cijelog zaslona</translation> <translation id="2849936225196189499">Kritično</translation> <translation id="2860184359326882502">Najbolje podudaranje</translation> <translation id="2865888419503095837">Podaci o mreži</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Informacije o mreži nisu dostupne</translation> <translation id="385051799172605136">Natrag</translation> <translation id="385300504083504382">Početak</translation> +<translation id="3861651314799684201">Pritisnite Enter za snimanje cijelog zaslona</translation> <translation id="3886872229787704059">Otvoreno danas</translation> <translation id="3891340733213178823">Pritisnite Ctrl + Shift + Q dvaput da biste se odjavili.</translation> <translation id="3893630138897523026">ChromeVox (govorne povratne informacije)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Omogućeno je praćenje izvedbe</translation> <translation id="5955304353782037793">apl</translation> <translation id="5958529069007801266">Nadzirani korisnik</translation> +<translation id="5976112937189445008">Pritisnite Enter za snimanje prozora</translation> <translation id="5977415296283489383">Slušalice</translation> <translation id="5978382165065462689">Dijelite kontrolu nad zaslonom putem Daljinske pomoći.</translation> <translation id="5980301590375426705">Zatvori sesiju gosta</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Prebacite Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Slovo unaprijed</translation> <translation id="8371991222807690464">Rad perifernog uređaja može biti ograničen u načinu rada za goste</translation> +<translation id="8374601332003098278">Pritisnite Enter za snimanje djelomičnog zaslona</translation> <translation id="8375916635258623388">Ovaj uređaj <ph name="DEVICE_NAME" /> i vaš telefon povezat će se automatski</translation> <translation id="8380784334203145311">Laku noć</translation> <translation id="8382715499079447151">Zaštita prikaza</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Prikaz postavki obavijesti. Obavijesti su uključene</translation> <translation id="8660331759611631213">Kvadratni korijen od 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Pritisnite Enter za snimanje djelomične snimke zaslona</translation> <translation id="8664753092453405566">Prikaz popisa mreža. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Otvorite <ph name="NAME" /> da biste postavili uređaj</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Baterija je na <ph name="PERCENTAGE" /> posto.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google asistent ne govori taj jezik.</translation> +<translation id="8924458948354692166">Pritisnite Enter za snimanje prozora</translation> <translation id="8926951137623668982">Polica je uvijek skrivena</translation> <translation id="8936501819958976551">deaktivirano</translation> <translation id="8938800817013097409">USB-C uređaj (desni priključak sa stražnje strane)</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index c2fc762..a8b94c3 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">Az ablak (<ph name="WINDOW_TITLE" />) minden asztalhoz hozzá van rendelve</translation> <translation id="1750088060796401187">Csak <ph name="MAX_DESK_LIMIT" /> asztal engedélyezett. Távolítsa el valamelyik asztalt, ha újat kíván nyitni.</translation> <translation id="1756833229520115364">Nem sikerült a sablon mentése. Túl sok ablak vagy lap van megnyitva.</translation> +<translation id="1757857692711134412">Kikapcsolva napnyugtáig</translation> <translation id="1761222317188459878">Hálózati kapcsolat ki- és bekapcsolása. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">A(z) <ph name="LAUNCHER_KEY_NAME" /> + pont billentyűkombináció módosult. A Beillesztés billentyű használatához nyomja le a(z) <ph name="LAUNCHER_KEY_NAME" /> + Shift + Backspace billentyűkombinációt.</translation> <translation id="1770726142253415363">Áthelyezve ide: <ph name="ROW_NUMBER" />. sor, <ph name="COLUMN_NUMBER" />. oszlop.</translation> @@ -304,6 +305,7 @@ <translation id="2834813915651407382">Nemrégiben nyitotta meg</translation> <translation id="2841907151129139818">Visszaváltott táblagép módra</translation> <translation id="2844169650293029770">C típusú USB-vel kompatibilis eszköz (bal első port)</translation> +<translation id="2848120746144143659">Nyomja le az Entert, ha a teljes képernyő tartalmáról szeretne képernyőképet készíteni</translation> <translation id="2849936225196189499">Fontos</translation> <translation id="2860184359326882502">Legjobb találat</translation> <translation id="2865888419503095837">Hálózatinformáció</translation> @@ -483,6 +485,7 @@ <translation id="3846575436967432996">Nem áll rendelkezésre hálózati információ</translation> <translation id="385051799172605136">Vissza</translation> <translation id="385300504083504382">A legelejére</translation> +<translation id="3861651314799684201">Nyomja le az Entert a teljes képernyő tartalmának rögzítéséhez</translation> <translation id="3886872229787704059">Ma nyitotta meg</translation> <translation id="3891340733213178823">Nyomja meg a Ctrl+Shift+Q billentyűkombinációt kétszer a kijelentkezéshez.</translation> <translation id="3893630138897523026">ChromeVox (beszélt visszajelzés)</translation> @@ -507,6 +510,7 @@ <translation id="3995138139523574647">C típusú USB-vel kompatibilis eszköz (jobb hátsó port)</translation> <translation id="40062176907008878">Kézírás</translation> <translation id="4017989525502048489">Lézermutató</translation> +<translation id="401993194061514265">A jelölő nem áll rendelkezésre. Nyissa meg újra a Screencastot.</translation> <translation id="4021716437419160885">Görgetés lefelé</translation> <translation id="4028481283645788203">A nagyobb biztonság érdekében jelszó szükséges</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -521,6 +525,7 @@ <translation id="412298498316631026">ablak</translation> <translation id="4123259114412175274">A Chromebook zárolásának feloldása előtt győződjön meg arról, hogy be van kapcsolva a Bluetooth a telefonon.</translation> <translation id="4129129681837227511">Ha szeretné látni az értesítéseket a lezárási képernyőn, oldja fel a képernyő zárolását a beállítás módosításához</translation> +<translation id="4136724716305260864">Bekapcsolva napkeltéig</translation> <translation id="4146833061457621061">Zenelejátszás</translation> <translation id="4165275524535002941">Előfordulhat, hogy a kábel nem támogatja a kijelzőket</translation> <translation id="4177913004758410636">{0,plural, =1{1 napon belül frissítse az eszközt}other{# napon belül frissítse az eszközt}}</translation> @@ -573,6 +578,7 @@ <translation id="4421231901400348175">A képernyő irányításának megosztása <ph name="HELPER_NAME" /> segítővel a Távsegítség szolgáltatás keretein belül.</translation> <translation id="4424159417645388645">5. asztal</translation> <translation id="4430019312045809116">Hangerő</translation> +<translation id="4435022394553622295">Telefonja értesítéseinek és alkalmazásainak megtekintése az Ön <ph name="DEVICE_TYPE" /> eszközén</translation> <translation id="4441283832827406317">Az alkalmazások név szerint rendezettek</translation> <translation id="4445159312344259901">Jelentkezzen be a feloldáshoz</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 fontos értesítés}other{# fontos értesítés}}</translation> @@ -700,6 +706,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 egyéb értesítés}other{# egyéb értesítés}}</translation> <translation id="5207949376430453814">Szövegbeszúrási pont kiemelése</translation> <translation id="5208059991603368177">Be</translation> +<translation id="5216991270656129561">Kikapcsolva eddig: <ph name="TIME" /></translation> <translation id="5222676887888702881">Kijelentkezés</translation> <translation id="5234764350956374838">Elvetés</translation> <translation id="523505283826916779">Kisegítő beállítások</translation> @@ -749,6 +756,7 @@ <translation id="553675580533261935">Kilépés a munkamenetből</translation> <translation id="5537725057119320332">Küldés</translation> <translation id="554893713779400387">Diktálás váltása</translation> +<translation id="5560420195677022218">Telefonja alkalmazásainak megtekintése az Ön <ph name="DEVICE_TYPE" /> eszközén</translation> <translation id="556042886152191864">Gomb</translation> <translation id="5571066253365925590">Bluetooth engedélyezve</translation> <translation id="557563299383177668">Következő bekezdés</translation> @@ -814,6 +822,7 @@ <translation id="595202126637698455">Teljesítménykövetés engedélyezve</translation> <translation id="5955304353782037793">alk</translation> <translation id="5958529069007801266">Felügyelt felhasználó</translation> +<translation id="5976112937189445008">Nyomja le az Entert az ablak tartalmának rögzítéséhez</translation> <translation id="5977415296283489383">Fülhallgató</translation> <translation id="5978382165065462689">A képernyő irányításának megosztása a Távsegítség szolgáltatás keretein belül.</translation> <translation id="5980301590375426705">Kilépés vendégként</translation> @@ -966,6 +975,7 @@ <translation id="6884665277231944629">Vissza a mai napra</translation> <translation id="6886172995547742638">A(z) <ph name="DEVICE_TYPE" /> eszközön a teljesítmény csökkenése észlelhető. Használjon tanúsítvánnyal rendelkező, <ph name="PREFERRED_MINIMUM_POWER" /> W-os vagy nagyobb teljesítményű USB-C tápcsatlakozót.</translation> <translation id="688631446150864480">Ablakváltáshoz nyomja le a lefelé mutató nyilat</translation> +<translation id="6891721121089053234">A telefonján található friss fotók, médiatartalmak és alkalmazások megtekintése az Ön <ph name="DEVICE_TYPE" /> eszközén</translation> <translation id="6896758677409633944">Másolás</translation> <translation id="6901883536534621389">Kézmozdulatok kipróbálása a navigáláshoz</translation> <translation id="6919251195245069855">A rendszer nem ismerte fel az intelligens kártyáját. Próbálja újra.</translation> @@ -1094,6 +1104,7 @@ <translation id="7684531502177797067">Kamerás bevitel a következőre állítva: <ph name="CAMERA_NAME" />.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Új mobilhálózat hozzáadása</translation> +<translation id="7720400844887872976">Bekapcsolva eddig: <ph name="TIME" /></translation> <translation id="7720410380936703141">ÚJRA</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 értesítés}other{# értesítés}}</translation> <translation id="7724603315864178912">Kivágás</translation> @@ -1176,6 +1187,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> Ezt a beállítást a rendszergazdája kezeli.</translation> <translation id="8155628902202578800">Információs párbeszédpanel, <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835"><ph name="LOCALE_NAME" /> nyelv használata</translation> +<translation id="8183592608247778598">A telefonján található friss fotók, médiatartalmak, értesítések és alkalmazások megtekintése az Ön <ph name="DEVICE_TYPE" /> eszközén</translation> <translation id="8192202700944119416">Az értesítések el vannak rejtve.</translation> <translation id="8196787716797768628">Kézmozdulatokkal gyorsan válthat az alkalmazások között, és táblagép módban is használhatja Chromebookját.</translation> <translation id="8200772114523450471">Folytatás</translation> @@ -1200,6 +1212,7 @@ <translation id="8364673525741149932">A Shelf Party mód be- és kikapcsolása. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Előrelépés betűnként</translation> <translation id="8371991222807690464">A perifériás teljesítmény korlátozott lehet vendég módban.</translation> +<translation id="8374601332003098278">Nyomja le az Entert, ha a képernyő egy adott részéről szeretne felvételt készíteni</translation> <translation id="8375916635258623388">A(z) <ph name="DEVICE_NAME" /> eszköz és a telefon automatikusan csatlakozik majd egymáshoz</translation> <translation id="8380784334203145311">Jó éjszakát!</translation> <translation id="8382715499079447151">Megtekintési védelem</translation> @@ -1252,6 +1265,7 @@ <translation id="8653151467777939995">Az értesítési beállítások megjelenítése. Az értesítések be vannak kapcsolva</translation> <translation id="8660331759611631213">71 négyzetgyöke</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, jelerősség: <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Nyomja le az Entert részleges képernyőkép rögzítéséhez</translation> <translation id="8664753092453405566">A hálózatok listájának megjelenítése. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Nyissa meg a(z) <ph name="NAME" /> alkalmazást az eszköz beállításához</translation> <translation id="8676770494376880701">Kis teljesítményű töltő csatlakoztatva</translation> @@ -1293,6 +1307,7 @@ <translation id="8909138438987180327">Az akkumulátor töltöttsége <ph name="PERCENTAGE" /> százalék.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">A Google Segéd nem beszél ezen a nyelven.</translation> +<translation id="8924458948354692166">Nyomja le az Entert, ha az ablak tartalmáról szeretne képernyőképet készíteni</translation> <translation id="8926951137623668982">A polc mindig rejtve lesz</translation> <translation id="8936501819958976551">deaktiválva</translation> <translation id="8938800817013097409">C típusú USB-vel kompatibilis eszköz (jobb hátsó port)</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index 20ce0f9d..8499c4f 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -133,6 +133,7 @@ <translation id="1719094688023114093">La funzionalità Sottotitoli in tempo reale è attiva.</translation> <translation id="1720011244392820496">Attiva Sync Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" visibile ai dispositivi Bluetooth.</translation> +<translation id="174102739345480129">Evidenziatore OFF.</translation> <translation id="1743570585616704562">Non riconosciuta</translation> <translation id="1746730358044914197">I metodi di immissione vengono configurati dall'amministratore.</translation> <translation id="1747827819627189109">Tastiera sullo schermo attiva</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Ecco gli strumenti per il tuo stilo</translation> <translation id="4389184120735010762">Hai premuto la scorciatoia da tastiera per la lente d'ingrandimento ancorata. Vuoi attivarla?</translation> <translation id="439598569299422042">In pausa, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Impossibile salvare lo screencast</translation> <translation id="4405151984121254935">Il tipo periferico connesso non è supportato</translation> <translation id="4406883609789734330">Sottotitoli in tempo reale</translation> <translation id="4412944820643904175">La funzionalità <ph name="FEATURE_NAME" /> è disattivata.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Frase successiva</translation> +<translation id="5016558321564993266">Attiva/disattiva evidenziatore. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Tempo scaduto</translation> <translation id="5033299697334913360">Fai clic su un punto qualsiasi per acquisire l'intera schermata</translation> <translation id="5035236842988137213">Il dispositivo <ph name="DEVICE_NAME" /> si è connesso a un nuovo telefono</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Esci</translation> <translation id="5234764350956374838">Ignora</translation> <translation id="523505283826916779">Impostazioni di accessibilità</translation> +<translation id="5245201184978705914">Impossibile generare la trascrizione</translation> <translation id="5253783950165989294">Connessione stabilita con un dispositivo di nome <ph name="DEVICE_NAME" />; batteria <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">Scrivania 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> richiede la tua attenzione.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Ingresso audio</translation> <translation id="544691375626129091">A questa sessione sono già stati aggiunti tutti gli utenti disponibili.</translation> <translation id="54609108002486618">Gestito</translation> +<translation id="5460938382730614333">Evidenziatore ON.</translation> <translation id="5465662442746197494">Hai bisogno di assistenza?</translation> <translation id="547979256943495781">Barra delle app a destra</translation> <translation id="5491186829646618080">Aggiornamenti firmware disponibili</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">La funzione Luminosità notturna viene attivata automaticamente al tramonto</translation> <translation id="5750765938512549687">Bluetooth non attivo.</translation> <translation id="5760866832697883462">Connetti <ph name="NAME" /></translation> +<translation id="5762420912707163638">Attiva/disattiva evidenziatore. <ph name="STATE_TEXT" /> Usa il trackpad, il touchscreen o lo stilo per disegnare sullo schermo.</translation> <translation id="576341972084747908">Download di <ph name="FILENAME" /> (pericoloso) in corso…</translation> <translation id="5763928712329149804">Modalità Shelf Party non attiva.</translation> <translation id="576453121877257266">Luminosità notturna attiva.</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 6016901d..d40b7ca 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">自動字幕起こしはオンになっています。</translation> <translation id="1720011244392820496">Wi-Fi 同期をオンにする</translation> <translation id="1736898441010944794">Bluetooth デバイスに「<ph name="NAME" />」が表示されます。</translation> +<translation id="174102739345480129">マーカーはオフになっています。</translation> <translation id="1743570585616704562">認識されませんでした</translation> <translation id="1746730358044914197">入力方法は管理者によって設定されています。</translation> <translation id="1747827819627189109">画面キーボードが有効です</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">タッチペン ツール</translation> <translation id="4389184120735010762">ドッキング拡大鏡のキーボード ショートカットを押しました。この機能をオンにしますか?</translation> <translation id="439598569299422042">一時停止中、<ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">スクリーンキャストを保存できません</translation> <translation id="4405151984121254935">接続されている周辺機器のタイプはサポートされていません</translation> <translation id="4406883609789734330">自動字幕起こし</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> はオフになっています。</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />、 <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">次の文</translation> +<translation id="5016558321564993266">マーカーを切り替えます。<ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">時間切れです</translation> <translation id="5033299697334913360">全画面をキャプチャするには任意の場所をクリックしてください</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> が新しいスマートフォンに接続されました</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">ログアウト</translation> <translation id="5234764350956374838">閉じる</translation> <translation id="523505283826916779">ユーザー補助機能の設定</translation> +<translation id="5245201184978705914">文字起こしを生成できません</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> という名前のデバイスに接続しています、電池残量 <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">デスク 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> から通知が届いています。</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">音声入力</translation> <translation id="544691375626129091">該当するすべてのユーザーをこのセッションに追加済みです。</translation> <translation id="54609108002486618">管理対象</translation> +<translation id="5460938382730614333">マーカーはオンになっています。</translation> <translation id="5465662442746197494">不明点がある場合</translation> <translation id="547979256943495781">シェルフは右側にあります</translation> <translation id="5491186829646618080">利用可能なファームウェアのアップデートがあります</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">夜間モードは日の入り時刻に自動的にオンになります</translation> <translation id="5750765938512549687">Bluetooth はオフです</translation> <translation id="5760866832697883462"><ph name="NAME" /> を接続</translation> +<translation id="5762420912707163638">マーカーを切り替えます。<ph name="STATE_TEXT" />トラックパッド、タッチスクリーン、またはタッチペンを使用して画面に描画できます。</translation> <translation id="576341972084747908">危険な <ph name="FILENAME" /> をダウンロードしています</translation> <translation id="5763928712329149804">シェルフ グループはオフです。</translation> <translation id="576453121877257266">夜間モードはオンです。</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 7727cff..3839a1e 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Live Caption қосулы.</translation> <translation id="1720011244392820496">Wi-Fi деректерін синхрондауды қосу</translation> <translation id="1736898441010944794">"<ph name="NAME" />" Bluetooth құрылғыларына көрінеді.</translation> +<translation id="174102739345480129">Белгілегіш өшірулі.</translation> <translation id="1743570585616704562">Анықталмады</translation> <translation id="1746730358044914197">Енгізу әдістерін әкімші конфигурациялайды.</translation> <translation id="1747827819627189109">Экрандық пернетақта қосылды</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Стилус құралдары</translation> <translation id="4389184120735010762">Бекітілген ұлғайтқышқа арналған пернелер тіркесімін бастыңыз. Оны қосқыңыз келе ме?</translation> <translation id="439598569299422042">Кідіртілді, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Cкринкастты сақтау мүмкін емес.</translation> <translation id="4405151984121254935">Жалғанған перифериялық құрылғы түріне қолдау көрсетілмейді.</translation> <translation id="4406883609789734330">Live Caption</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> өшірулі.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Келесі сөйлем</translation> +<translation id="5016558321564993266">Ауыстырғыш белгілегіші. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Уақыт бітті</translation> <translation id="5033299697334913360">Толық экранды түсіру үшін кез келген жерді басыңыз.</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> жаңа телефонға жалғанды</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Шығу</translation> <translation id="5234764350956374838">Жабу</translation> <translation id="523505283826916779">Арнайы мүмкіндіктер параметрлері</translation> +<translation id="5245201184978705914">Транскриптіні құру мүмкін емес</translation> <translation id="5253783950165989294">"<ph name="DEVICE_NAME" />" деп аталатын, батарея заряды <ph name="BATTERY_PERCENTAGE" />% құрылғыға қосылды.</translation> <translation id="5260676007519551770">4-ші жұмыс үстелі</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> қолданбасы назар аударуыңызды сұрайды.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Аудио кіріс</translation> <translation id="544691375626129091">Барлық қолжетімді пайдаланушылар әлдеқашан осы сеансқа қосылған.</translation> <translation id="54609108002486618">Басқарылады</translation> +<translation id="5460938382730614333">Белгілегіш қосулы.</translation> <translation id="5465662442746197494">Көмек керек пе?</translation> <translation id="547979256943495781">Оң жақтағы сөре</translation> <translation id="5491186829646618080">Микробағдарламаның жаңа нұсқасы қолжетімді</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Күн батқанда, Night Light режимі автоматты түрде іске қосылады</translation> <translation id="5750765938512549687">Bluetooth өшірулі</translation> <translation id="5760866832697883462"><ph name="NAME" /> құрылғысын жалғаңыз</translation> +<translation id="5762420912707163638">Ауыстырғыш белгілегіші. <ph name="STATE_TEXT" /> Экранда сурет салу үшін сенсорлық тақтаны, сенсорлық экранды және стилусты пайдаланыңыз.</translation> <translation id="576341972084747908">Қауіпті <ph name="FILENAME" /> файлы жүктеп алынуда</translation> <translation id="5763928712329149804">Shelf Party режимі өшірулі.</translation> <translation id="576453121877257266">"Түнгі жарық" функциясы қосулы.</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index 1cc5f6a1..52fe9a4 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">ವಿಂಡೋ <ph name="WINDOW_TITLE" /> ಅನ್ನು ಎಲ್ಲಾ ಡೆಸ್ಕ್ಗಳಿಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ</translation> <translation id="1750088060796401187">ಕೇವಲ <ph name="MAX_DESK_LIMIT" /> ಡೆಸ್ಕ್ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ. ಡೆಸ್ಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ ಹಾಗೂ ಹೊಸದನ್ನು ತೆರೆಯಿರಿ.</translation> <translation id="1756833229520115364">ಟೆಂಪ್ಲೇಟ್ ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಹಲವಾರು ವಿಂಡೋಗಳು ಅಥವಾ ಟ್ಯಾಬ್ಗಳು ತೆರೆದುಕೊಂಡಿವೆ.</translation> +<translation id="1757857692711134412">ಸೂರ್ಯಾಸ್ತದವರೆಗೆ ಆಫ್</translation> <translation id="1761222317188459878">ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಟಾಗಲ್ ಮಾಡಿ. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705"><ph name="LAUNCHER_KEY_NAME" /> + ಪಿರಿಯಡ್ ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಬದಲಿಸಲಾಗಿದೆ. ಇನ್ಸರ್ಟ್ ಕೀ ಬಳಸಲು, <ph name="LAUNCHER_KEY_NAME" /> ಕೀ + ಶಿಫ್ಟ್ + ಬ್ಯಾಕ್ಸ್ಪೇಸ್.</translation> <translation id="1770726142253415363"><ph name="ROW_NUMBER" /> ಸಾಲು, <ph name="COLUMN_NUMBER" /> ಕಾಲಮ್ಗೆ ಸರಿಸಲಾಗಿದೆ.</translation> @@ -304,6 +305,7 @@ <translation id="2834813915651407382">ಇತ್ತೀಚೆಗೆ ತೆರೆದಿದ್ದೀರಿ</translation> <translation id="2841907151129139818">ಟ್ಯಾಬ್ಲೆಟ್ ಮೋಡ್ಗೆ ಬದಲಿಸಲಾಗಿದೆ</translation> <translation id="2844169650293029770">USB-C ಸಾಧನ (ಎಡ ಭಾಗದ ಮುಂದಿನ ಪೋರ್ಟ್)</translation> +<translation id="2848120746144143659">ಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸೆರೆಹಿಡಿಯಲು Enter ಒತ್ತಿರಿ</translation> <translation id="2849936225196189499">ಗಂಭೀರ</translation> <translation id="2860184359326882502">ಅತ್ಯುತ್ತಮ ಹೊಂದಾಣಿಕೆ</translation> <translation id="2865888419503095837">ನೆಟ್ವರ್ಕ್ ಮಾಹಿತಿ</translation> @@ -482,6 +484,7 @@ <translation id="3846575436967432996">ನೆಟ್ವರ್ಕ್ ಮಾಹಿತಿ ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="385051799172605136">ಹಿಂದೆ</translation> <translation id="385300504083504382">ಪ್ರಾರಂಭ</translation> +<translation id="3861651314799684201">ಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು Enter ಒತ್ತಿರಿ</translation> <translation id="3886872229787704059">ಇಂದು ತೆರೆಯಲಾಗಿದೆ</translation> <translation id="3891340733213178823">ಸೈನ್ ಔಟ್ ಮಾಡಲು Ctrl+Shift+Q ಅನ್ನು ಎರಡುಬಾರಿ ಒತ್ತಿರಿ.</translation> <translation id="3893630138897523026">ChromeVox (ಮಾತಿನ ಪ್ರತಿಕ್ರಿಯೆ)</translation> @@ -506,6 +509,7 @@ <translation id="3995138139523574647">USB-C ಸಾಧನ (ಬಲ ಭಾಗದ ಹಿಂದಿನ ಪೋರ್ಟ್)</translation> <translation id="40062176907008878">ಕೈಬರಹ</translation> <translation id="4017989525502048489">ಲೇಸರ್ ಪಾಯಿಂಟರ್</translation> +<translation id="401993194061514265">ಮಾರ್ಕರ್ ಲಭ್ಯವಿಲ್ಲ. ಸ್ಕ್ರೀನ್ಕ್ಯಾಸ್ಟ್ ಅನ್ನು ಮರುತೆರೆಯಿರಿ.</translation> <translation id="4021716437419160885">ಕೆಳಗೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ</translation> <translation id="4028481283645788203">ಹೆಚ್ಚಿನ ಭದ್ರತೆಗಾಗಿ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -520,6 +524,7 @@ <translation id="412298498316631026">ವಿಂಡೋ</translation> <translation id="4123259114412175274">ನಿಮ್ಮ Chromebook ಅನ್ಲಾಕ್ ಮಾಡಲು, ನಿಮ್ಮ ಫೋನ್ನ ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ</translation> <translation id="4129129681837227511">ನಿಮ್ಮ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ನೋಡಲು, ಸೆಟ್ಟಿಂಗ್ ಬದಲಾಯಿಸಲು ಅನ್ಲಾಕ್ ಮಾಡಿ</translation> +<translation id="4136724716305260864">ಸೂರ್ಯೋದಯದವರೆಗೆ ಆನ್</translation> <translation id="4146833061457621061">ಸಂಗೀತ ಪ್ಲೇ ಮಾಡಿ</translation> <translation id="4165275524535002941">ಡಿಸ್ಪ್ಲೇಗಳನ್ನು ಕೇಬಲ್ ಬೆಂಬಲಿಸದಿರಬಹುದು</translation> <translation id="4177913004758410636">{0,plural, =1{ಒಂದು ದಿನದೊಳಗೆ ಸಾಧನವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ}one{# ದಿನಗಳೊಳಗೆ ಸಾಧನವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ}other{# ದಿನಗಳೊಳಗೆ ಸಾಧನವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ}}</translation> @@ -572,6 +577,7 @@ <translation id="4421231901400348175">ರಿಮೋಟ್ ಸಹಾಯದ ಮೂಲಕ <ph name="HELPER_NAME" /> ಜೊತೆಗೆ ನಿಮ್ಮ ಪರದೆಯ ನಿಯಂತ್ರಣವನ್ನು ಹಂಚಲಾಗುತ್ತಿದೆ.</translation> <translation id="4424159417645388645">ಡೆಸ್ಕ್ 5</translation> <translation id="4430019312045809116">ವಾಲ್ಯೂಮ್</translation> +<translation id="4435022394553622295">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್ನ ಅಧಿಸೂಚನೆಗಳು ಮತ್ತು ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="4441283832827406317">ಆ್ಯಪ್ಗಳನ್ನು ಹೆಸರಿನ ಪ್ರಕಾರವಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ</translation> <translation id="4445159312344259901">ಅನ್ಲಾಕ್ ಮಾಡಲು ಸೈನ್ ಇನ್ ಮಾಡಿ</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 ಪ್ರಮುಖ ಅಧಿಸೂಚನೆ}one{# ಪ್ರಮುಖ ಅಧಿಸೂಚನೆಗಳು}other{# ಪ್ರಮುಖ ಅಧಿಸೂಚನೆಗಳು}}</translation> @@ -699,6 +705,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{ಇತರ 1 ಅಧಿಸೂಚನೆ}one{ಇತರ # ಅಧಿಸೂಚನೆಗಳು}other{ಇತರ # ಅಧಿಸೂಚನೆಗಳು}}</translation> <translation id="5207949376430453814">ಪಠ್ಯದಲ್ಲಿ ಕೆರೆಟ್ ಅನ್ನು ಎದ್ದುಗಾಣಿಸಿ</translation> <translation id="5208059991603368177">ಆನ್ ಮಾಡಿ</translation> +<translation id="5216991270656129561"><ph name="TIME" /> ವರೆಗೆ ಆಫ್ ಆಗಿರುತ್ತದೆ</translation> <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation> <translation id="5234764350956374838">ವಜಾಗೊಳಿಸಿ</translation> <translation id="523505283826916779">ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> @@ -748,6 +755,7 @@ <translation id="553675580533261935">ಸೆಷನ್ ನಿರ್ಗಮಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="5537725057119320332">ಪಾತ್ರವರ್ಗ</translation> <translation id="554893713779400387">ಡಿಕ್ಟೇಶನ್ ಟಾಗಲ್ ಮಾಡಿ</translation> +<translation id="5560420195677022218">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್ನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation> <translation id="556042886152191864">ಬಟನ್</translation> <translation id="5571066253365925590">ಬ್ಲೂಟೂತ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="557563299383177668">ಮುಂದಿನ ಪ್ಯಾರಾಗ್ರಾಫ್</translation> @@ -813,6 +821,7 @@ <translation id="595202126637698455">ಕಾರ್ಯಕ್ಷಮತೆ ಟ್ರೇಸಿಂಗ್ ಸಕ್ರಿಯಗೊಂಡಿದೆ</translation> <translation id="5955304353782037793">ಅಪ್ಲಿಕೇಶನ್</translation> <translation id="5958529069007801266">ಮೇಲ್ವಿಚಾರಣೆಗೊಳಪಟ್ಟ ಬಳಕೆದಾರರು</translation> +<translation id="5976112937189445008">ವಿಂಡೋವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು Enter ಅನ್ನು ಒತ್ತಿರಿ</translation> <translation id="5977415296283489383">ಹೆಡ್ಫೋನ್</translation> <translation id="5978382165065462689">ರಿಮೋಟ್ ಸಹಾಯಕದ ಮೂಲಕ ನಿಮ್ಮ ಪರದೆಯ ಹಂಚಿಕೆಯ ನಿಯಂತ್ರಣ</translation> <translation id="5980301590375426705">ಅತಿಥಿ ನಿಂದ ನಿರ್ಗಮಿಸಿ</translation> @@ -966,6 +975,7 @@ <translation id="6884665277231944629">ಈ ದಿನಕ್ಕೆ ಹಿಂತಿರುಗಿ</translation> <translation id="6886172995547742638">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನ ಕಾರ್ಯಕ್ಷಮತೆಯು ಕಡಿಮೆಯಾಗಬಹುದು. ಪ್ರಮಾಣೀಕೃತ <ph name="PREFERRED_MINIMUM_POWER" />W ಅಥವಾ ಹೆಚ್ಚುವರಿ USB-C ಪವರ್ ಅಡಾಪ್ಟರ್ ಬಳಸಿ.</translation> <translation id="688631446150864480">ವಿಂಡೋಗಳನ್ನು ಬದಲಾಯಿಸಲು ಡೌನ್ ಆ್ಯರೋ ಕೀ ಅನ್ನು ಒತ್ತಿ</translation> +<translation id="6891721121089053234">ನಿಮ್ಮ ಫೋನ್ನ ಇತ್ತೀಚಿನ ಫೋಟೋಗಳು, ಮೀಡಿಯಾ ಮತ್ತು ಆ್ಯಪ್ಗಳನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ</translation> <translation id="6896758677409633944">ನಕಲಿಸು</translation> <translation id="6901883536534621389">ನ್ಯಾವಿಗೇಟ್ ಮಾಡಲು ಗೆಸ್ಚರ್ಗಳನ್ನು ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ</translation> <translation id="6919251195245069855">ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್ ಅನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> @@ -1094,6 +1104,7 @@ <translation id="7684531502177797067">ಕ್ಯಾಮರಾ ಇನ್ಪುಟ್ ಅನ್ನು <ph name="CAMERA_NAME" /> ಗೆ ಸೆಟ್ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">ಹೊಸ ಸೆಲ್ಯುಲಾರ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಸೇರಿಸಿ</translation> +<translation id="7720400844887872976"><ph name="TIME" /> ವರೆಗೆ ಆನ್ ಆಗಿರುತ್ತದೆ</translation> <translation id="7720410380936703141">ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ಅಧಿಸೂಚನೆ}one{# ಅಧಿಸೂಚನೆಗಳು}other{# ಅಧಿಸೂಚನೆಗಳು}}</translation> <translation id="7724603315864178912">ಕತ್ತರಿಸು</translation> @@ -1176,6 +1187,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿರ್ವಹಿಸುತ್ತಾರೆ.</translation> <translation id="8155628902202578800"><ph name="USER_EMAIL_ADDRESS" /> ಗೆ ಸಂಬಂಧಿಸಿದ ಮಾಹಿತಿ ಡೈಲಾಗ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="8167567890448493835"><ph name="LOCALE_NAME" /> ಬಳಸಲಾಗುತ್ತಿದೆ</translation> +<translation id="8183592608247778598">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್ನ ಇತ್ತೀಚಿನ ಫೋಟೋಗಳು, ಮೀಡಿಯಾ, ಅಧಿಸೂಚನೆಗಳು ಮತ್ತು ಆ್ಯಪ್ಗಳಲ್ಲಿ ವೀಕ್ಷಿಸಿ</translation> <translation id="8192202700944119416">ಅಧಿಸೂಚನೆಗಳು ಮರೆಯಾಗಿವೆ.</translation> <translation id="8196787716797768628">ಟ್ಯಾಬ್ಲೆಟ್ ಮೋಡ್ನಲ್ಲಿ, ಆ್ಯಪ್ಗಳ ನಡುವೆ ತ್ವರಿತವಾಗಿ ಬದಲಿಸಲು ಮತ್ತು ನಿಮ್ಮ Chromebook ಜೊತೆಗೆ ಸಂವಾದ ನಡೆಸಲು ಗೆಸ್ಚರ್ಗಳನ್ನು ಬಳಸಿ.</translation> <translation id="8200772114523450471">ಪುನರಾರಂಭಿಸು</translation> @@ -1200,6 +1212,7 @@ <translation id="8364673525741149932">ಶೆಲ್ಫ್ ಪಾರ್ಟಿಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">ಅಕ್ಷರದ ಮೂಲಕ ಫಾರ್ವರ್ಡ್ ಮಾಡಿ</translation> <translation id="8371991222807690464">ಅತಿಥಿ ಮೋಡ್ನಲ್ಲಿ ಬಾಹ್ಯ ಸಾಧನದ ಕಾರ್ಯಕ್ಷಮತೆಯು ಸೀಮಿತವಾಗಿರಬಹುದು</translation> +<translation id="8374601332003098278">ಭಾಗಶಃ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು Enter ಒತ್ತಿರಿ</translation> <translation id="8375916635258623388">ಈ <ph name="DEVICE_NAME" /> ಸಾಧನ ಮತ್ತು ನಿಮ್ಮ ಫೋನ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತವೆ</translation> <translation id="8380784334203145311">ಶುಭ ರಾತ್ರಿ,</translation> <translation id="8382715499079447151">ವೀಕ್ಷಣೆ ಸುರಕ್ಷತೆ</translation> @@ -1252,6 +1265,7 @@ <translation id="8653151467777939995">ಅಧಿಸೂಚನೆ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೋರಿಸಿ. ಅಧಿಸೂಚನೆಗಳು ಆನ್ ಆಗಿವೆ</translation> <translation id="8660331759611631213">71 ರ ವರ್ಗಮೂಲ</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">ಭಾಗಶಃ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸೆರೆಹಿಡಿಯಲು Enter ಅನ್ನು ಒತ್ತಿರಿ</translation> <translation id="8664753092453405566">ನೆಟ್ವರ್ಕ್ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಸೆಟಪ್ ಮಾಡಲು <ph name="NAME" /> ಅನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="8676770494376880701">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ</translation> @@ -1293,6 +1307,7 @@ <translation id="8909138438987180327">ಬ್ಯಾಟರಿ <ph name="PERCENTAGE" /> ಪ್ರತಿಶತ ಇದೆ.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google ಸಹಾಯಕವು ಈ ಭಾಷೆಯನ್ನು ಮಾತನಾಡುವುದಿಲ್ಲ.</translation> +<translation id="8924458948354692166">ವಿಂಡೋ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸೆರೆಹಿಡಿಯಲು Enter ಒತ್ತಿರಿ</translation> <translation id="8926951137623668982">ಶೆಲ್ಫ್ ಯಾವಾಗಲೂ ಮರೆಯಾಗಿದೆ</translation> <translation id="8936501819958976551">ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="8938800817013097409">USB-C ಸಾಧನ (ಹಿಂಭಾಗದಲ್ಲಿನ ಬಲ ಪೋರ್ಟ್)</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index 5cc8f41..1e3c976 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">ຄຳບັນຍາຍສົດເປີດຢູ່.</translation> <translation id="1720011244392820496">ເປີດ Wi-Fi Sync</translation> <translation id="1736898441010944794">"<ph name="NAME" />" ຈະສະແດງໃຫ້ອຸປະກອນ Bluetooth ເຫັນ.</translation> +<translation id="174102739345480129">ຕົວໝາຍປິດຢູ່.</translation> <translation id="1743570585616704562">ບໍ່ຮັບຮູ້</translation> <translation id="1746730358044914197">ວິທີການປ້ອນຂໍ້ມູນຖືກກຳນົດຄ່າໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ.</translation> <translation id="1747827819627189109">ແປ້ນພິມເທິງໜ້າຈໍເປີດໃຊ້ງານແລ້ວ</translation> @@ -303,6 +304,7 @@ <translation id="2834813915651407382">ເປີດຫຼ້າສຸດ</translation> <translation id="2841907151129139818">ປ່ຽນເປັນໂໝດແທັບເລັດແລ້ວ</translation> <translation id="2844169650293029770">ອຸປະກອນ USB-C (ຜອດດ້ານໜ້າ-ຊ້າຍ)</translation> +<translation id="2848120746144143659">ກົດ enter ເພື່ອບັນທຶກຮູບໜ້າຈໍແບບເຕັມຈໍ</translation> <translation id="2849936225196189499">ສໍາຄັນ</translation> <translation id="2860184359326882502">ກົງກັນທີ່ສຸດ</translation> <translation id="2865888419503095837">ຂໍ້ມູນເຄືອຂ່າຍ</translation> @@ -481,6 +483,7 @@ <translation id="3846575436967432996">ບໍ່ມີຂໍ້ມູນເຄືອຂ່າຍຢູ່</translation> <translation id="385051799172605136">ກັບຄືນ</translation> <translation id="385300504083504382">ການເລີ່ມຕົ້ນ</translation> +<translation id="3861651314799684201">ກົດ enter ເພື່ອບັນທຶກເຕັມຈໍ</translation> <translation id="3886872229787704059">ເປີດມື້ນີ້</translation> <translation id="3891340733213178823">ກົດ Ctrl+Shift+Q ສອງຄັ້ງເພື່ອອອກຈາກລະບົບ.</translation> <translation id="3893630138897523026">ChromeVox (ຄໍາຄິດເຫັນທີ່ເວົ້າມາ)</translation> @@ -564,6 +567,7 @@ <translation id="4379531060876907730">ສິ່ງເຫຼົ່ານີ້ແມ່ນເຄື່ອງມືປາກກາຂອງທ່ານ</translation> <translation id="4389184120735010762">ທ່ານໄດ້ກົດປຸ່ມລັດແປ້ນພິມສຳລັບແວ່ນຂະຫຍາຍທີ່ຕັ້ງໄວ້ແລ້ວ. ທ່ານຕ້ອງການເປີດມັນບໍ?</translation> <translation id="439598569299422042">ຢຸດຊົ່ວຄາວແລ້ວ, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">ບໍ່ສາມາດບັນທຶກ screencast ໄດ້</translation> <translation id="4405151984121254935">ບໍ່ຮອງຮັບປະເພດອຸປະກອນຕໍ່ພ່ວງທີ່ເຊື່ອມຕໍ່</translation> <translation id="4406883609789734330">ຄຳບັນຍາຍສົດ</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ປິດຢູ່.</translation> @@ -670,6 +674,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">ປະໂຫຍດຕໍ່ໄປ</translation> +<translation id="5016558321564993266">ສະຫຼັບຕົວໝາຍ. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">ໝົດເວລາແລ້ວ</translation> <translation id="5033299697334913360">ຄລິກບ່ອນໃດກໍໄດ້ເພື່ອຖ່າຍຮູບແບບເຕັມຈໍ</translation> <translation id="5035236842988137213">ເຊື່ອມຕໍ່ <ph name="DEVICE_NAME" />ກັບໂທລະສັບໃໝ່ແລ້ວ</translation> @@ -699,6 +704,7 @@ <translation id="5222676887888702881">ອອກຈາກລະບົບ</translation> <translation id="5234764350956374838">ປ່ອຍໄປ</translation> <translation id="523505283826916779">ການຕັ້ງຄ່າການເຂົ້າເຖິງ</translation> +<translation id="5245201184978705914">ບໍ່ສາມາດສ້າງການຖອດຂໍ້ຄວາມຈາກສຽງໄດ້</translation> <translation id="5253783950165989294">ເຊື່ອມຕໍ່ຫາອຸປະກອນຊື່ <ph name="DEVICE_NAME" /> ແລ້ວ, ແບັດເຕີຣີ <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">ໂຕະ 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> ຂໍໃຫ້ທ່ານດຳເນີນການ.</translation> @@ -733,6 +739,7 @@ <translation id="5433020815079095860">ອິນພຸດສຽງ</translation> <translation id="544691375626129091">ຜູ້ໃຊ້ທີ່ມີຢູ່ຄົນອື່ນຖືກເອົາເພີ່ມເຂົ້າພາກນີ້ແລ້ວ.</translation> <translation id="54609108002486618">ຖືກຈັດການ</translation> +<translation id="5460938382730614333">ເປີດໃຊ້ຕົວໝາຍແລ້ວ.</translation> <translation id="5465662442746197494">ຕ້ອງການຄວາມຊ່ວຍເຫຼືອບໍ?</translation> <translation id="547979256943495781">ຊັ້ນວາງຢູ່ເບື້ອງຂວາ</translation> <translation id="5491186829646618080">ມີອັບເດດເຟີມແວໃໝ່</translation> @@ -774,6 +781,7 @@ <translation id="5745612484876805746">ແສງກາງຄືນເປີດໂດຍອັດຕະໂນມັດເມື່ອຕາເວັນຕົກ</translation> <translation id="5750765938512549687">Bluetooth ປິດຢູ່</translation> <translation id="5760866832697883462">ເຊື່ອມຕໍ່ <ph name="NAME" /> ຂອງທ່ານ</translation> +<translation id="5762420912707163638">ສະຫຼັບຕົວໝາຍ. <ph name="STATE_TEXT" /> ໃຊ້ແທຣັກແຜດ, ໜ້າຈໍສຳຜັດ ຫຼື ປາກກາເພື່ອແຕ້ມຢູ່ໜ້າຈໍ.</translation> <translation id="576341972084747908">ດາວໂຫຼດ <ph name="FILENAME" /> ທີ່ເປັນອັນຕະລາຍ</translation> <translation id="5763928712329149804">ປິດ Shelf Party ແລ້ວ.</translation> <translation id="576453121877257266">ແສງກາງຄືນເປີດຢູ່.</translation> @@ -807,6 +815,7 @@ <translation id="595202126637698455">ການຕິດຕາມການປະຕິບັດເປີດໃຊ້ງານແລ້ວ</translation> <translation id="5955304353782037793">ແອັບ</translation> <translation id="5958529069007801266">ຜູ້ໃຊ້ທີ່ມີການຄວບຄຸມດູແລ</translation> +<translation id="5976112937189445008">ກົດ enter ເພື່ອບັນທຶກໜ້າຈໍ</translation> <translation id="5977415296283489383">ຫູຟັງ</translation> <translation id="5978382165065462689">ການແບ່ງປັນການຄວບຄຸມໜ້າຈໍຂອງທ່ານຜ່ານຕົວຊ່ວຍທາງໄກ.</translation> <translation id="5980301590375426705">ອອກຈາກແຂກ</translation> @@ -1193,6 +1202,7 @@ <translation id="8364673525741149932">ສະຫຼັບ Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">ໄປໜ້າເທື່ອລະຕົວໜັງສື</translation> <translation id="8371991222807690464">ປະສິດທິພາບຂອງອຸປະກອນຕໍ່ພ່ວງອາດຖືກຈຳກັດໃນໂໝດແຂກ</translation> +<translation id="8374601332003098278">ກົດ enter ເພື່ອບັນທຶກໜ້າຈໍບາງສ່ວນ</translation> <translation id="8375916635258623388"><ph name="DEVICE_NAME" />ນີ້ ແລະ ໂທລະສັບຂອງທ່ານຈະເຊື່ອມຕໍ່ໂດຍອັດຕະໂນມັດ</translation> <translation id="8380784334203145311">ຝັນດີ,</translation> <translation id="8382715499079447151">ການປົກປ້ອງການເບິ່ງ</translation> @@ -1245,6 +1255,7 @@ <translation id="8653151467777939995">ສະແດງການຕັ້ງຄ່າການແຈ້ງເຕືອນ. ການແຈ້ງເຕືອນເປີດຢູ່</translation> <translation id="8660331759611631213">ຮາກຂັ້ນສອງຂອງ 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, ຄວາມແຮງສັນຍານ <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">ກົດ enter ເພື່ອບັນທຶກຮູບໜ້າຈໍບາງສ່ວນ</translation> <translation id="8664753092453405566">ສະແດງລາຍການເຄືອຂ່າຍ. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">ເປີດ <ph name="NAME" /> ເພື່ອຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ</translation> <translation id="8676770494376880701">ເຄື່ອງສາກແບບໃຊ້ໄຟຕໍ່າເຊື່ອມຕໍ່ແລ້ວ</translation> @@ -1286,6 +1297,7 @@ <translation id="8909138438987180327">ແບັດເຕີຣີຢູ່ທີ່ <ph name="PERCENTAGE" /> ເປີເຊັນ.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">ຜູ້ຊ່ວຍ Google ເວົ້າພາສານີ້ບໍ່ໄດ້.</translation> +<translation id="8924458948354692166">ກົດ enter ເພື່ອບັນທຶກຮູບໜ້າຈໍຂອງໜ້າຈໍ</translation> <translation id="8926951137623668982">ເຊື່ອງຊັ້ນວາງທຸກເທື່ອ</translation> <translation id="8936501819958976551">ປິດນຳໃຊ້ແລ້ວ</translation> <translation id="8938800817013097409">ອຸປະກອນ USB-C (ຜອດດ້ານຂວາຢູ່ເບື້ອງຫຼັງ)</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index 51ed638..ea1daa5f 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Subtitri reāllaikā ir ieslēgti.</translation> <translation id="1720011244392820496">Wi-Fi sinhronizācijas ieslēgšana</translation> <translation id="1736898441010944794">Bluetooth ierīces var uztvert šo ierīci: <ph name="NAME" />.</translation> +<translation id="174102739345480129">Marķieris ir izslēgts.</translation> <translation id="1743570585616704562">Nav atpazīts</translation> <translation id="1746730358044914197">Administrators konfigurē ievades metodes.</translation> <translation id="1747827819627189109">Ekrāna tastatūra iespējota</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Šie ir jūsu skārienekrāna pildspalvas rīki</translation> <translation id="4389184120735010762">Jūs nospiedāt dokotās lupas īsinājumtaustiņu. Vai vēlaties to ieslēgt?</translation> <translation id="439598569299422042">Apturēta, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Nevar saglabāt ekrānierakstu</translation> <translation id="4405151984121254935">Pievienotās perifērās ierīces veids netiek atbalstīts.</translation> <translation id="4406883609789734330">Subtitri reāllaikā</translation> <translation id="4412944820643904175">Funkcija <ph name="FEATURE_NAME" /> ir izslēgta.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Nākamais teikums</translation> +<translation id="5016558321564993266">Pārslēdziet marķieri. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Izmantošanas laiks beidzies</translation> <translation id="5033299697334913360">Noklikšķiniet jebkurā vietā, lai tvertu visu ekrānu.</translation> <translation id="5035236842988137213">Ierīce <ph name="DEVICE_NAME" /> ir savienota ar jaunu tālruni</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Izrakstīties</translation> <translation id="5234764350956374838">Nerādīt</translation> <translation id="523505283826916779">Pieejamības iestatījumi</translation> +<translation id="5245201184978705914">Nevar ģenerēt transkripciju.</translation> <translation id="5253783950165989294">Izveidots savienojums ar ierīci “<ph name="DEVICE_NAME" />”, akumulatora uzlādes līmenis: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">4. galds</translation> <translation id="5283099933536931082">Lietotne <ph name="APP_ITEM_TITLE" /> aicina pievērst tai uzmanību.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Audio ievade</translation> <translation id="544691375626129091">Visi pieejamie lietotāji jau ir pievienoti šai sesijai.</translation> <translation id="54609108002486618">Pārvaldītais</translation> +<translation id="5460938382730614333">Marķieris ir ieslēgts.</translation> <translation id="5465662442746197494">Vai nepieciešama palīdzība?</translation> <translation id="547979256943495781">Plaukts tiek rādīts labajā pusē</translation> <translation id="5491186829646618080">Pieejami aparātprogrammatūras atjauninājumi</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Nakts režīms tiek automātiski ieslēgts saulrietā.</translation> <translation id="5750765938512549687">Bluetooth ir izslēgts</translation> <translation id="5760866832697883462">Savienojuma izveide ar ierīci (<ph name="NAME" />)</translation> +<translation id="5762420912707163638">Pārslēdziet marķieri. <ph name="STATE_TEXT" /> Izmantojiet skārienpaliktni, skārienekrānu vai skārienekrāna pildspalvu, lai zīmētu ekrānā.</translation> <translation id="576341972084747908">Notiek bīstama faila <ph name="FILENAME" /> lejupielāde</translation> <translation id="5763928712329149804">Režīms Shelf Party ir izslēgts.</translation> <translation id="576453121877257266">Nakts režīms ir ieslēgts.</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index d76a3b71..b334703 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">Прозорецот <ph name="WINDOW_TITLE" /> им е доделен на сите работни површини</translation> <translation id="1750088060796401187">Дозволени се само <ph name="MAX_DESK_LIMIT" /> работни површини. Отстранете работна површина за да отворите нова.</translation> <translation id="1756833229520115364">Не можеше да се зачува шаблон. Премногу прозорци или картички.</translation> +<translation id="1757857692711134412">Исклучено до зајдисонце</translation> <translation id="1761222317188459878">Вклучи/исклучи мрежна врска. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">Кратенката од тастатура <ph name="LAUNCHER_KEY_NAME" /> + Точка се промени. За да го користите копчето Insert, притиснете го копчето <ph name="LAUNCHER_KEY_NAME" /> + Shift + Backspace.</translation> <translation id="1770726142253415363">Преместена на ред <ph name="ROW_NUMBER" />, колона <ph name="COLUMN_NUMBER" />.</translation> @@ -509,6 +510,7 @@ <translation id="3995138139523574647">USB-Ц уред (задна порта од десна страна)</translation> <translation id="40062176907008878">Ракописно</translation> <translation id="4017989525502048489">Ласерски покажувач</translation> +<translation id="401993194061514265">Означувачот не е достапен. Отворете ја повторно Screencast.</translation> <translation id="4021716437419160885">Оди надолу</translation> <translation id="4028481283645788203">Потребна е лозинка за поголема безбедност</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -523,6 +525,7 @@ <translation id="412298498316631026">прозорец</translation> <translation id="4123259114412175274">За да го отклучите вашиот Chromebook, уверете се дека Bluetooth на телефонот е вклучен</translation> <translation id="4129129681837227511">За да гледате известувања на заклучениот екран, отклучете за да ја промените поставката</translation> +<translation id="4136724716305260864">Вклучено до изгрејсонце</translation> <translation id="4146833061457621061">Пушти музика</translation> <translation id="4165275524535002941">Кабелот не поддржува екрани</translation> <translation id="4177913004758410636">{0,plural, =1{Ажурирајте го уредот во рок од еден ден}one{Ажурирајте го уредот во рок од # ден}other{Ажурирајте го уредот во рок од # дена}}</translation> @@ -575,6 +578,7 @@ <translation id="4421231901400348175">Споделување контрола на вашиот екран со <ph name="HELPER_NAME" /> преку далечинска помош.</translation> <translation id="4424159417645388645">Работна површина 5</translation> <translation id="4430019312045809116">Гласност</translation> +<translation id="4435022394553622295">Прегледувајте ги известувањата и апликациите од телефонот на вашиот <ph name="DEVICE_TYPE" /></translation> <translation id="4441283832827406317">Апликациите се подредени по име</translation> <translation id="4445159312344259901">Најавете се за да отклучите</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 важно известување}one{# важно известување}other{# важни известувања}}</translation> @@ -702,6 +706,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 друго известување}one{# друго известување}other{# други известувања}}</translation> <translation id="5207949376430453814">Нагласи го каретот за текст</translation> <translation id="5208059991603368177">Вклучено</translation> +<translation id="5216991270656129561">Исклучено до <ph name="TIME" /></translation> <translation id="5222676887888702881">Одјави се</translation> <translation id="5234764350956374838">Отфрли</translation> <translation id="523505283826916779">Поставки за пристапност</translation> @@ -751,6 +756,7 @@ <translation id="553675580533261935">Излегува од сесијата</translation> <translation id="5537725057119320332">Емитувај</translation> <translation id="554893713779400387">Вклучи/исклучи диктат</translation> +<translation id="5560420195677022218">Прегледувајте ги апликациите од телефонот на вашиот <ph name="DEVICE_TYPE" /></translation> <translation id="556042886152191864">Копче</translation> <translation id="5571066253365925590">Bluetooth е овозможен</translation> <translation id="557563299383177668">Следен пасус</translation> @@ -969,6 +975,7 @@ <translation id="6884665277231944629">Вратете се на денешниот датум</translation> <translation id="6886172995547742638">Перформансите на вашиот <ph name="DEVICE_TYPE" /> може да бидат послаби. Користете сертифициран адаптер за напојување USB-C од <ph name="PREFERRED_MINIMUM_POWER" /> W или повеќе.</translation> <translation id="688631446150864480">Притискајте го копчето со стрелка надолу за да се префрлате меѓу прозорците</translation> +<translation id="6891721121089053234">Прегледувајте ги неодамнешните фотографии, аудиовизуелни содржини и апликации од телефонот на вашиот <ph name="DEVICE_TYPE" /></translation> <translation id="6896758677409633944">Копирај</translation> <translation id="6901883536534621389">Обидете се со движења за навигација</translation> <translation id="6919251195245069855">Не можевме да ја препознаеме вашата паметна картичка. Обидете се повторно.</translation> @@ -1097,6 +1104,7 @@ <translation id="7684531502177797067">Влезот на камерата е поставен на <ph name="CAMERA_NAME" />.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Додајте нова мобилна мрежа</translation> +<translation id="7720400844887872976">Вклучено до <ph name="TIME" /></translation> <translation id="7720410380936703141">ОБИДЕТЕ СЕ ПОВТОРНО</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известување}one{# известување}other{# известувања}}</translation> <translation id="7724603315864178912">Исечи</translation> @@ -1179,6 +1187,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> Администраторот управува со поставкава.</translation> <translation id="8155628902202578800">Отвори го дијалогот со податоци за <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Се користи <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">Прегледувајте ги неодамнешните фотографии, аудиовизуелни содржини, известувања и апликации од телефонот на вашиот <ph name="DEVICE_TYPE" />.</translation> <translation id="8192202700944119416">Известувањата се скриени.</translation> <translation id="8196787716797768628">Користете движења за брзо префрлање помеѓу апликациите и за да комуницирате со вашиот Chromebook во режим на таблет.</translation> <translation id="8200772114523450471">Продолжи</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index f776d15..7f8f15c 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">വിൻഡോ <ph name="WINDOW_TITLE" /> എല്ലാ ഡെസ്ക്കുകളിലേക്കും അസൈൻ ചെയ്തു</translation> <translation id="1750088060796401187"><ph name="MAX_DESK_LIMIT" /> ഡെസ്കുകൾ മാത്രമേ അനുവദിക്കൂ. പുതിയൊരെണ്ണം തുറക്കാൻ ഒരു ഡെസ്ക് നീക്കം ചെയ്യുക.</translation> <translation id="1756833229520115364">ടെംപ്ലേറ്റ് സംരക്ഷിക്കാനാകുന്നില്ല. നിരവധി വിൻഡോകളും ടാബുകളും.</translation> +<translation id="1757857692711134412">സൂര്യാസ്തമയം വരെ ഓഫാണ്</translation> <translation id="1761222317188459878">നെറ്റ്വർക്ക് കണക്ഷൻ മാറ്റുക. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705"><ph name="LAUNCHER_KEY_NAME" /> + പീരിയഡ് കീബോർഡ് കുറുക്കുവഴി മാറിയിട്ടുണ്ട്. Insert കീ ഉപയോഗിക്കാൻ, <ph name="LAUNCHER_KEY_NAME" /> കീ+ Shift + Backspace അമർത്തുക.</translation> <translation id="1770726142253415363"><ph name="ROW_NUMBER" />-ാം വരിയിലെ <ph name="COLUMN_NUMBER" />-ാം കോളത്തിലേക്ക് നീക്കി.</translation> @@ -508,6 +509,7 @@ <translation id="3995138139523574647">USB-C ഉപകരണം (വലതുവശത്ത് പിന്നിലെ പോർട്ട്)</translation> <translation id="40062176907008878">കൈയ്യെഴുത്ത്</translation> <translation id="4017989525502048489">ലേസർ പോയിന്റർ</translation> +<translation id="401993194061514265">മാർക്കർ ലഭ്യമല്ല. സ്ക്രീൻകാസ്റ്റ് വീണ്ടും തുറക്കുക.</translation> <translation id="4021716437419160885">താഴേയ്ക്ക് സ്ക്രോൾ ചെയ്യുക</translation> <translation id="4028481283645788203">കൂടുതൽ സുരക്ഷയ്ക്ക് പാസ്വേഡ് ആവശ്യമാണ്</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -522,6 +524,7 @@ <translation id="412298498316631026">വിൻഡോ</translation> <translation id="4123259114412175274">നിങ്ങളുടെ Chromebook അൺലോക്ക് ചെയ്യാൻ നിങ്ങളുടെ ഫോണിന്റെ Bluetooth ഓണാണെന്ന് ഉറപ്പാക്കുക</translation> <translation id="4129129681837227511">നിങ്ങളുടെ ലോക്ക് സ്ക്രീനിൽ അറിയിപ്പുകൾ കാണാൻ, ക്രമീകരണം മാറ്റാനായി അൺലോക്ക് ചെയ്യുക</translation> +<translation id="4136724716305260864">സൂര്യോദയം വരെ ഓണാണ്</translation> <translation id="4146833061457621061">സംഗീതം പ്ലേ ചെയ്യുക</translation> <translation id="4165275524535002941">കേബിൾ, ഡിസ്പ്ലേകളെ പിന്തുണച്ചേക്കില്ല</translation> <translation id="4177913004758410636">{0,plural, =1{ഒരു ദിവസത്തിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}other{# ദിവസത്തിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}}</translation> @@ -574,6 +577,7 @@ <translation id="4421231901400348175"><ph name="HELPER_NAME" /> ഉപയോഗിച്ച് നിങ്ങളുടെ വിദൂര സഹായി മുഖേന സ്ക്രീനിന്റെ നിയന്ത്രണം പങ്കിടുക.</translation> <translation id="4424159417645388645">ഡെസ്ക് 5</translation> <translation id="4430019312045809116">അളവ്</translation> +<translation id="4435022394553622295"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിൽ നിങ്ങളുടെ ഫോണിലെ അറിയിപ്പുകളും ആപ്പുകളും കാണുക</translation> <translation id="4441283832827406317">പേര് അനുസരിച്ച് ആപ്പുകൾ അടുക്കിയിരിക്കുന്നു</translation> <translation id="4445159312344259901">അൺലോക്കുചെയ്യാൻ സൈൻ ഇൻ ചെയ്യൂ</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{പ്രധാനപ്പെട്ട ഒരു അറിയിപ്പ്}other{പ്രധാനപ്പെട്ട # അറിയിപ്പുകൾ}}</translation> @@ -701,6 +705,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{മറ്റൊരു അറിയിപ്പ്}other{മറ്റ് # അറിയിപ്പുകൾ}}</translation> <translation id="5207949376430453814">ടെക്സ്റ്റ് കാരറ്റ് ഹൈലൈറ്റ് ചെയ്യുക</translation> <translation id="5208059991603368177">ഓണാണ്</translation> +<translation id="5216991270656129561"><ph name="TIME" /> വരെ ഓഫാണ്</translation> <translation id="5222676887888702881">സൈൻ ഔട്ട് ചെയ്യുക</translation> <translation id="5234764350956374838">ഡിസ്മിസ്സ് ചെയ്യുക</translation> <translation id="523505283826916779">ഉപയോഗസഹായി ക്രമീകരണങ്ങൾ</translation> @@ -750,6 +755,7 @@ <translation id="553675580533261935">സെഷനിൽ നിന്ന് പുറത്തുകടക്കുന്നു</translation> <translation id="5537725057119320332">കാസ്റ്റ്</translation> <translation id="554893713779400387">പറഞ്ഞ് കൊടുക്കൽ മാറ്റുക</translation> +<translation id="5560420195677022218"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിൽ നിങ്ങളുടെ ഫോണിലെ ആപ്പുകൾ കാണുക</translation> <translation id="556042886152191864">ബട്ടൺ</translation> <translation id="5571066253365925590">Bluetooth പ്രവർത്തനക്ഷമമാക്കി</translation> <translation id="557563299383177668">അടുത്ത ഖണ്ഡിക</translation> @@ -968,6 +974,7 @@ <translation id="6884665277231944629">ഇന്നത്തെ തീയതിയിലേക്ക് മടങ്ങുക</translation> <translation id="6886172995547742638">നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> ഉപകരണം കുറഞ്ഞ പ്രകടനം കാഴ്ച വച്ചേക്കാം. സർട്ടിഫൈ ചെയ്ത <ph name="PREFERRED_MINIMUM_POWER" />W അല്ലെങ്കിൽ USB-C പവർ അഡാപ്റ്റർ ഉപയോഗിക്കുക.</translation> <translation id="688631446150864480">വിന്ഡോകോൾക്കിടയിൽ മാറാൻ താഴേക്കുള്ള അമ്പടയാള കീ അമർത്തുക</translation> +<translation id="6891721121089053234"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിൽ നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും ആപ്പുകളും കാണുക</translation> <translation id="6896758677409633944">പകര്ത്തുക</translation> <translation id="6901883536534621389">നാവിഗേറ്റ് ചെയ്യാൻ ജെസ്ച്ചറുകളുടെ ഉപയോഗിക്കുക</translation> <translation id="6919251195245069855">നിങ്ങളുടെ സ്മാർട്ട് കാർഡ് തിരിച്ചറിയാൻ കഴിഞ്ഞില്ല. വീണ്ടും ശ്രമിക്കൂ.</translation> @@ -1096,6 +1103,7 @@ <translation id="7684531502177797067">ക്യാമറാ ഇൻപുട്ട് ആയി <ph name="CAMERA_NAME" /> സജ്ജീകരിച്ചു.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">പുതിയ സെല്ലുലാർ നെറ്റ്വർക്ക് ചേർക്കുക</translation> +<translation id="7720400844887872976"><ph name="TIME" /> വരെ ഓണാണ്</translation> <translation id="7720410380936703141">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ഒരു അറിയിപ്പ്}other{# അറിയിപ്പുകൾ}}</translation> <translation id="7724603315864178912">മുറിക്കുക</translation> @@ -1178,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> ഈ ക്രമീകരണം മാനേജ് ചെയ്യുന്നത് നിങ്ങളുടെ അഡ്മിനാണ്.</translation> <translation id="8155628902202578800"><ph name="USER_EMAIL_ADDRESS" /> എന്നതിനുള്ള വിവരങ്ങളുടെ ഡയലോഗ് തുറക്കുക</translation> <translation id="8167567890448493835"><ph name="LOCALE_NAME" /> ഉപയോഗിക്കുന്നു</translation> +<translation id="8183592608247778598"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിൽ നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും അറിയിപ്പുകളും ആപ്പുകളും കാണുക</translation> <translation id="8192202700944119416">അറിയിപ്പുകൾ അദൃശ്യമാക്കിയിരിക്കുന്നു.</translation> <translation id="8196787716797768628">ആപ്പുകൾക്കിടയിൽ വേഗത്തിൽ മാറാനും ടാബ്ലെറ്റ് മോഡിൽ നിങ്ങളുടെ Chromebook-മായി സംവദിക്കാനും വിരൽചലനങ്ങൾ ഉപയോഗിക്കുക.</translation> <translation id="8200772114523450471">പുനരാരംഭിക്കുക</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 6e969938..fe656a20 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">लाइव्ह कॅप्शन सुरू आहे.</translation> <translation id="1720011244392820496">वाय-फाय सिंक सुरू करा</translation> <translation id="1736898441010944794">ब्लूटूथ डिव्हाइसना "<ph name="NAME" />" दृश्यमान आहे.</translation> +<translation id="174102739345480129">मार्कर बंद आहे.</translation> <translation id="1743570585616704562">ओळखले नाही</translation> <translation id="1746730358044914197">तुमच्या ॲडमिनिस्ट्रेटरद्वारे कॉंफिगर केलेल्या इनपुट पद्धती.</translation> <translation id="1747827819627189109">ऑन-स्क्रीन कीबोर्ड सक्षम</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">ही तुमची स्टायलस टूल आहेत</translation> <translation id="4389184120735010762">तुम्ही डॉक मॅग्निफायरसाठी कीबोर्ड शॉर्टकट दाबला आहे. तुम्हाला ते सुरू करायचे आहे का?</translation> <translation id="439598569299422042">थांबवले, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">स्क्रीनकास्ट सेव्ह करता आले नाही</translation> <translation id="4405151984121254935">कनेक्ट केलेल्या पेरिफेरल प्रकाराला सपोर्ट नाही</translation> <translation id="4406883609789734330">लाइव्ह कॅप्शन</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> बंद आहे.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">पुढील वाक्य</translation> +<translation id="5016558321564993266">मार्कर टॉगल करा. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">वेळ संपली</translation> <translation id="5033299697334913360">फुल स्क्रीन कॅप्चर करण्यासाठी कुठेही क्लिक करा</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> नवीन फोनशी कनेक्ट केले</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">साइन आउट करा</translation> <translation id="5234764350956374838">डिसमिस करा</translation> <translation id="523505283826916779">ॲक्सेसिबिलिटी सेटिंग्ज</translation> +<translation id="5245201184978705914">ट्रान्स्क्रिप्ट जनरेट करू शकत नाही</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> नावाच्या डिव्हाइसशी कनेक्ट केले, बॅटरी<ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">डेस्क ४</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> तुम्हाला लक्ष देण्याची विनंती करते.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">ऑडिओ इनपुट</translation> <translation id="544691375626129091">सर्व उपलब्ध वापरकर्ते आधीपासून या सेशनवर जोडले गेले आहेत.</translation> <translation id="54609108002486618">व्यवस्थापित</translation> +<translation id="5460938382730614333">मार्कर सुरू आहे.</translation> <translation id="5465662442746197494">मदत हवी आहे?</translation> <translation id="547979256943495781">शेल्फ उजवीकडे आहे</translation> <translation id="5491186829646618080">फर्मवेअर अपडेट उपलब्ध आहेत</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">रात्रीचा प्रकाश सूर्यास्ताच्या वेळी आपोआप सुरू होतो</translation> <translation id="5750765938512549687">ब्लूटूथ बंद आहे</translation> <translation id="5760866832697883462">तुमचे <ph name="NAME" /> कनेक्ट करा</translation> +<translation id="5762420912707163638">मार्कर टॉगल करा. <ph name="STATE_TEXT" /> स्क्रीनवर ड्रॉ करण्यासाठी ट्रॅकपॅड, टचस्क्रीन किंवा स्टायलस वापरा.</translation> <translation id="576341972084747908">धोकादायक <ph name="FILENAME" /> डाउनलोड करा</translation> <translation id="5763928712329149804">शेल्फ पार्टी बंद आहे.</translation> <translation id="576453121877257266">रात्रीचा प्रकाश सुरू आहे.</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 06dc34a..24b2ff30 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">'တိုက်ရိုက်စာတန်း' ကို ဖွင့်ထားသည်။</translation> <translation id="1720011244392820496">'Wi-Fi စင့်ခ်' ဖွင့်ခြင်း</translation> <translation id="1736898441010944794">"<ph name="NAME" />" ကို ဘလူးတုသ်သုံးစက်များက မြင်နိုင်သည်။</translation> +<translation id="174102739345480129">ညွှန်မှတ် ပိတ်ထားသည်။</translation> <translation id="1743570585616704562">မသိပါ</translation> <translation id="1746730358044914197">ထည့်သွင်းရန်နည်းလမ်းများကို သင်၏ စီမံခန့်ခွဲသူက စီစဉ်သတ်မှတ်ထားခြင်းဖြစ်သည်။</translation> <translation id="1747827819627189109">မျက်နှာပြင် ပေါ်က ကီးဘုတ် ဖွင့်ထား</translation> @@ -566,6 +567,7 @@ <translation id="4379531060876907730">ဤအရာများသည် သင်၏ စတိုင်လပ်စ်ကိရိယာများ ဖြစ်သည်</translation> <translation id="4389184120735010762">တပ်ဆင်ထားသည့် မှန်ဘီလူးအတွက် ကီးဘုတ်ဖြတ်လမ်းလင့်ခ်ကို သင်နှိပ်လိုက်ပါသည်။ ၎င်းကို ဖွင့်လိုပါသလား။</translation> <translation id="439598569299422042">ခဏရပ်ထားသည်၊ <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">ဖန်သားပြင် ထုတ်လွှင့်ခြင်းကို သိမ်း၍မရပါ</translation> <translation id="4405151984121254935">တပ်ဆင်ထားသည့် ချိတ်ဆက်ပစ္စည်းအမျိုးအစားကို ပံ့ပိုးမထားပါ</translation> <translation id="4406883609789734330">တိုက်ရိုက်စာတန်း</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ပိတ်ထားသည်။</translation> @@ -672,6 +674,7 @@ <ph name="NOTIFICATION_2" />၊ <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">နောက် ဝါကျ</translation> +<translation id="5016558321564993266">ညွှန်မှတ် ပြောင်းရန်ခလုတ်။ <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">အချိန်စေ့ပါပြီ</translation> <translation id="5033299697334913360">ဖန်သားပြင်အပြည့် ရိုက်ယူရန် မည်သည့်နေရာကိုမဆို နှိပ်ပါ</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> က ဖုန်းအသစ်သို့ ချိတ်ဆက်ထားသည်</translation> @@ -701,6 +704,7 @@ <translation id="5222676887888702881">ထွက်ခွာရန်</translation> <translation id="5234764350956374838">ပယ်ရန်</translation> <translation id="523505283826916779">ရယူသုံးနိုင်မှု ဆက်တင်များ</translation> +<translation id="5245201184978705914">စာသားမှတ်တမ်း ထုတ်ယူ၍မရပါ</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> စက်သို့ ချိတ်ဆက်ထားသည်၊ ဘက်ထရီအား <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">စာရေးခုံ ၄</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> တွင် ကြည့်စရာရှိသည်။</translation> @@ -735,6 +739,7 @@ <translation id="5433020815079095860">အသံ အဝင်</translation> <translation id="544691375626129091">အသုံးပြုနိုင်သူ အားလုံးအား ဤ ကဏ္ဍသို့ ပေါင်းထည့်ပြီး ဖြစ်၏။</translation> <translation id="54609108002486618">ကြီးကြပ်ထားသည်</translation> +<translation id="5460938382730614333">ညွှန်မှတ် ဖွင့်ထားသည်။</translation> <translation id="5465662442746197494">အကူအညီ လိုပါသလား?</translation> <translation id="547979256943495781">စင်ကို ညာဘက် ရွှေ့လိုက်ပါပြီ</translation> <translation id="5491186829646618080">ဖာမ်းဝဲအပ်ဒိတ်များ ရနိုင်ပါပြီ</translation> @@ -776,6 +781,7 @@ <translation id="5745612484876805746">နေဝင်ချိန်တွင် 'ညအလင်းရောင်' အလိုအလျောက် ပွင့်လာပါမည်</translation> <translation id="5750765938512549687">ဘလူးတုသ်ကို ပိတ်ထားသည်</translation> <translation id="5760866832697883462">သင့် <ph name="NAME" /> နှင့် ချိတ်ဆက်ရန်</translation> +<translation id="5762420912707163638">ညွှန်မှတ် ပြောင်းရန်ခလုတ်။ <ph name="STATE_TEXT" /> ဖန်သားပြင်ပေါ်တွင် ပုံဆွဲရန် တာ့ချ်ပက်၊ တို့ထိမျက်နှာပြင် (သို့) စတိုင်လပ်စ် သုံးနိုင်သည်။</translation> <translation id="576341972084747908">အန္တရာယ်ရှိသော <ph name="FILENAME" /> ကို ဒေါင်းလုဒ်လုပ်ခြင်း</translation> <translation id="5763928712329149804">Shelf Party ပိတ်ထားသည်။</translation> <translation id="576453121877257266">'ညအလင်းရောင်' ဖွင့်ထားသည်။</translation> @@ -1025,7 +1031,7 @@ <translation id="731589979057211264">Shelf Party ဖွင့်ထားသည်။</translation> <translation id="7319740667687257810">Launcher၊ တစ်စိတ်တစ်ပိုင်း မြင်ကွင်း</translation> <translation id="7346909386216857016">OK</translation> -<translation id="7348093485538360975">မျက်နှာပြင်ပေါ်ရှိ လက်ကွက်</translation> +<translation id="7348093485538360975">ဖန်သားပြင်လက်ကွက်</translation> <translation id="735745346212279324">VPN ချိတ်ဆက်မှု ဖြတ်ခဲ့</translation> <translation id="7360036564632145207">ချိတ်ဆက်ပစ္စည်းများ ဆက်တင်အတွက် ဒေတာသုံးခွင့်အကာအကွယ်ကို ပြောင်းခြင်းက စွမ်းဆောင်ရည် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်</translation> <translation id="7371404428569700291">ဝင်းဒိုးကို ရိုက်ကူးရန်</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb index 961b2bd..ac2eaad5 100644 --- a/ash/strings/ash_strings_ne.xtb +++ b/ash/strings/ash_strings_ne.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">सबै डेस्कमा "<ph name="WINDOW_TITLE" />" विन्डो असाइन गरिएको छ।</translation> <translation id="1750088060796401187">बढीमा <ph name="MAX_DESK_LIMIT" /> वटा डेस्क मात्र खोल्न मिल्छ। तपाईं नयाँ डेस्क खोल्न चाहनुहुन्छ भने कुनै डेस्क हटाउनुहोस्।</translation> <translation id="1756833229520115364">टेम्प्लेट सेभ गर्न सकिएन। अत्यन्त धेरै विन्डो वा ट्याबहरू सेभ गरिएका छन्।</translation> +<translation id="1757857692711134412">सूर्यास्त नहुँदासम्म अफ रहने छ</translation> <translation id="1761222317188459878">नेटवर्क जडान टगल गर्नुहोस्। <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705"><ph name="LAUNCHER_KEY_NAME" /> + पिरियड किबोर्ड सर्टकट परिवर्तन गरिएको छ। Insert की प्रयोग गर्न <ph name="LAUNCHER_KEY_NAME" /> की + Shift + Backspace थिच्नुहोस्।</translation> <translation id="1770726142253415363">यो एप सारेर रो <ph name="ROW_NUMBER" />, कलम <ph name="COLUMN_NUMBER" /> मा लगिएको छ।</translation> @@ -508,6 +509,7 @@ <translation id="3995138139523574647">USB-C यन्त्र (दायाँ भागको पछाडिको पोर्ट)</translation> <translation id="40062176907008878">हस्तलेखन</translation> <translation id="4017989525502048489">लेजर प्वाइन्टर</translation> +<translation id="401993194061514265">मार्कर उपलब्ध छैन। स्क्रिनकास्ट पुनः खोल्नुहोस्।</translation> <translation id="4021716437419160885">तलतिर स्क्रोल गर्नुहोस्</translation> <translation id="4028481283645788203">थप सुरक्षाका लागि पासवर्ड चाहिन्छ</translation> <translation id="4032485810211612751"><ph name="HOURS" /> : <ph name="MINUTES" /> : <ph name="SECONDS" /></translation> @@ -522,6 +524,7 @@ <translation id="412298498316631026">विन्डो</translation> <translation id="4123259114412175274">तपाईं आफ्नो Chromebook अनलक गर्न चाहनुहुन्छ भने आफ्नो फोनको ब्लुटुथ अन छ भन्ने कुरा सुनिश्चित गर्नुहोस्</translation> <translation id="4129129681837227511">आफ्नो लक स्क्रिनमा सूचनाहरू हेर्नका लागि सेटिङहरू परिवर्तन गर्न अनलक गर्नुहोस्</translation> +<translation id="4136724716305260864">सूर्योदय नहुँदासम्म अन रहने छ</translation> <translation id="4146833061457621061">सङ्गीत प्ले गर्नुहोस्</translation> <translation id="4165275524535002941">यो केबल डिस्प्लेहरूमा जोड्न मिल्दैन</translation> <translation id="4177913004758410636">{0,plural, =1{एक दिनभित्र डिभाइस रिस्टार्ट गर्नुहोस्}other{# दिनभित्र डिभाइस रिस्टार्ट गर्नुहोस्}}</translation> @@ -574,6 +577,7 @@ <translation id="4421231901400348175">रिमोट सहायता मार्फत <ph name="HELPER_NAME" /> सँग तपाईँको स्क्रिनको नियन्त्रण साझेदारी गर्दै।</translation> <translation id="4424159417645388645">डेस्क ५</translation> <translation id="4430019312045809116">आयतन</translation> +<translation id="4435022394553622295">आफ्नो फोनमा प्राप्त भएका सूचना र फोनमा भएका एपहरू <ph name="DEVICE_TYPE" /> मा हेर्नुहोस्</translation> <translation id="4441283832827406317">एपहरू नामअनुसार क्रमबद्ध गरिन्छन्</translation> <translation id="4445159312344259901">अनलक गर्न साइन इन गर्नुहोस्</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{एउटा महत्त्वपूर्ण सूचना}other{# वटा महत्त्वपूर्ण सूचना}}</translation> @@ -701,6 +705,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{अन्य १ सूचना}other{अन्य # वटा सूचना}}</translation> <translation id="5207949376430453814">पाठको क्योरटलाई हाइलाइट</translation> <translation id="5208059991603368177">अन छ</translation> +<translation id="5216991270656129561"><ph name="TIME" /> सम्म अफ रहने छ</translation> <translation id="5222676887888702881">साइन आउट गर्नुहोस्</translation> <translation id="5234764350956374838">खारेज गर्नुहोस्</translation> <translation id="523505283826916779">पहुँचक्षमता सेटिङहरू</translation> @@ -750,6 +755,7 @@ <translation id="553675580533261935">सत्रबाट बाहिर जाँदै</translation> <translation id="5537725057119320332">कास्ट गर्नु</translation> <translation id="554893713779400387">श्रुतिलेखन सुविधा टगल गर्नुहोस्</translation> +<translation id="5560420195677022218">आफ्नो फोनमा भएका एपहरू <ph name="DEVICE_TYPE" /> मा हेर्नुहोस्</translation> <translation id="556042886152191864">बटन</translation> <translation id="5571066253365925590">ब्लुटूथ सक्षम भयो</translation> <translation id="557563299383177668">अर्को अनुच्छेद</translation> @@ -968,6 +974,7 @@ <translation id="6884665277231944629">आजको मितिमा फर्कनुहोस्</translation> <translation id="6886172995547742638">तपाईंको <ph name="DEVICE_TYPE" /> को कार्यक्षमता घट्न सक्छ। <ph name="PREFERRED_MINIMUM_POWER" />W वा सोभन्दा बढी क्षमताको आधिकारिक USB-C पावर एड्याप्टर प्रयोग गर्नुहोस्।</translation> <translation id="688631446150864480">एउटा विन्डोबाट अर्को विन्डोमा जान डाउन एरो की थिच्नुहोस्</translation> +<translation id="6891721121089053234">आफ्नो फोनमा भएका हालसालैका फोटो, मिडिया तथा एपहरू <ph name="DEVICE_TYPE" /> मा हेर्नुहोस्</translation> <translation id="6896758677409633944">प्रतिलिपि गर्नुहोस्</translation> <translation id="6901883536534621389">नेभिगेट गर्न जेस्चर प्रयोग गरी हेर्नुहोस्</translation> <translation id="6919251195245069855">तपाईंको स्मार्ट कार्ड पहिचान गर्न सकिएन। फेरि प्रयास गर्नुहोस्।</translation> @@ -1096,6 +1103,7 @@ <translation id="7684531502177797067"><ph name="CAMERA_NAME" /> लाई क्यामेरा इनपुटका रूपमा सेट गरियो।</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">नयाँ मोबाइल नेटवर्क हाल्नुहोस्</translation> +<translation id="7720400844887872976"><ph name="TIME" /> सम्म अन रहने छ</translation> <translation id="7720410380936703141">फेरि प्रयास गर्नुहोस्</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{१ सूचना}other{# सूचनाहरू}}</translation> <translation id="7724603315864178912">काट्नुहोस्</translation> @@ -1178,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> तपाईंका प्रशासक यो सेटिङ मिलाउनुहुन्छ।</translation> <translation id="8155628902202578800"><ph name="USER_EMAIL_ADDRESS" /> को जानकारीको डायलग खोल्नुहोस्</translation> <translation id="8167567890448493835"><ph name="LOCALE_NAME" /> प्रयोग गर्दै</translation> +<translation id="8183592608247778598">आफ्नो फोनमा भएका हालसालैका फोटो, मिडिया, सूचना तथा एपहरू <ph name="DEVICE_TYPE" /> मा हेर्नुहोस्</translation> <translation id="8192202700944119416">सूचनाहरू लुकाइन्छन्।</translation> <translation id="8196787716797768628">एउटा अनुप्रयोगबाट तुरुन्तै अर्को एपमा जान र आफ्नो Chromebook ट्याब्लेट मोडमा प्रयोग गर्न इसाराहरूको प्रयोग गर्नुहोस्।</translation> <translation id="8200772114523450471">रिजुमी</translation> @@ -1328,7 +1337,7 @@ <translation id="9085962983642906571">तपाईंको डिभाइस बिजुलीको स्रोतमा जोडिएकै भए तापनि उक्त डिभाइसको ब्याट्रीको आयु बढाउन ब्याट्री केही समयका लागि ८०% चार्ज गरेर राखिएको छ।</translation> <translation id="9089416786594320554">आगत विधिहरू</translation> <translation id="9091626656156419976">हटाइएको प्रदर्शन <ph name="DISPLAY_NAME" /></translation> -<translation id="9098969848082897657">फोन मौन राख्नुहोस्</translation> +<translation id="9098969848082897657">फोन साइलेन्ट राख्नुहोस्</translation> <translation id="9099154003160514616">Lacros को अपडेट उपलब्ध छ</translation> <translation id="9100887602489003640">प्रोफाइल थपिँदै छ। केही मिनेट पर्खनुहोस्।</translation> <translation id="9105450214093926548">Lacros ब्राउजर चलिरहेका बेला अर्का प्रयोगकर्ताले साइन इन गर्न मिल्दैन। कृपया Lacros मा अर्को ब्राउजर प्रोफाइल प्रयोग गर्नुहोस् वा Lacros बन्द गरी फेरि प्रयास गर्नुहोस्।</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index e53a924..f1fbb6e 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -301,6 +301,7 @@ <translation id="2834813915651407382">Recent geopend</translation> <translation id="2841907151129139818">Overgeschakeld naar tabletmodus</translation> <translation id="2844169650293029770">USB-C-apparaat (poort links aan de voorkant)</translation> +<translation id="2848120746144143659">Druk op Enter om een screenshot van het volledige scherm te maken</translation> <translation id="2849936225196189499">Kritiek</translation> <translation id="2860184359326882502">Beste resultaat</translation> <translation id="2865888419503095837">Netwerkinfo</translation> @@ -479,6 +480,7 @@ <translation id="3846575436967432996">Geen netwerkinformatie beschikbaar</translation> <translation id="385051799172605136">Terug</translation> <translation id="385300504083504382">Begin</translation> +<translation id="3861651314799684201">Druk op Enter om het volledige scherm op te nemen</translation> <translation id="3886872229787704059">Vandaag geopend</translation> <translation id="3891340733213178823">Druk twee keer op Ctrl+Shift+Q om uit te loggen.</translation> <translation id="3893630138897523026">ChromeVox (gesproken feedback)</translation> @@ -810,6 +812,7 @@ <translation id="595202126637698455">Bijhouden van prestaties staat aan</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Gelimiteerde gebruiker</translation> +<translation id="5976112937189445008">Druk op Enter om het venster op te nemen</translation> <translation id="5977415296283489383">Hoofdtelefoon</translation> <translation id="5978382165065462689">De controle over je scherm delen via externe support.</translation> <translation id="5980301590375426705">Gastsessie sluiten</translation> @@ -1195,6 +1198,7 @@ <translation id="8364673525741149932">Shelf Party aan-/uitzetten. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Vooruit per letter</translation> <translation id="8371991222807690464">De prestaties van randapparaten kunnen beperkt zijn in de gastmodus</translation> +<translation id="8374601332003098278">Druk op Enter om het scherm gedeeltelijk op te nemen</translation> <translation id="8375916635258623388">Deze <ph name="DEVICE_NAME" /> en je telefoon maken automatisch verbinding</translation> <translation id="8380784334203145311">Goedenacht,</translation> <translation id="8382715499079447151">Weergavebeveiliging</translation> @@ -1247,6 +1251,7 @@ <translation id="8653151467777939995">Instellingen voor meldingen bekijken. Meldingen staan aan</translation> <translation id="8660331759611631213">Vierkantswortel van 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, signaalsterkte <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Druk op Enter om een gedeeltelijk screenshot te maken</translation> <translation id="8664753092453405566">Netwerklijst bekijken. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Open <ph name="NAME" /> om je apparaat in te stellen</translation> <translation id="8676770494376880701">Laag-vermogen-lader aangesloten</translation> @@ -1288,6 +1293,7 @@ <translation id="8909138438987180327">Batterij op <ph name="PERCENTAGE" /> procent.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">De Google Assistent spreekt deze taal niet.</translation> +<translation id="8924458948354692166">Druk op Enter om een screenshot van het venster te maken</translation> <translation id="8926951137623668982">Plank altijd verborgen</translation> <translation id="8936501819958976551">gedeactiveerd</translation> <translation id="8938800817013097409">USB-C-apparaat (poort rechts aan de achterkant)</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index 9804cdf5..0ac4c51 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">Vinduet <ph name="WINDOW_TITLE" /> er tilordnet alle skrivebord</translation> <translation id="1750088060796401187">Kun <ph name="MAX_DESK_LIMIT" /> skrivebord er tillatt. Fjern et skrivebord for å åpne et nytt.</translation> <translation id="1756833229520115364">Kunne ikke lagre malen. For mange vinduer eller faner.</translation> +<translation id="1757857692711134412">Avslått til solnedgang</translation> <translation id="1761222317188459878">Slå av eller på nettverkstilkobling. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">Hurtigtasten <ph name="LAUNCHER_KEY_NAME" /> + punktum er endret. For å bruke Insert-tasten, trykk på <ph name="LAUNCHER_KEY_NAME" />-tasten + Shift + tilbaketasten.</translation> <translation id="1770726142253415363">Flyttet til rad <ph name="ROW_NUMBER" />, kolonne <ph name="COLUMN_NUMBER" />.</translation> @@ -508,6 +509,7 @@ <translation id="3995138139523574647">USB-C-enhet (porten bak på høyre side)</translation> <translation id="40062176907008878">Håndskrift</translation> <translation id="4017989525502048489">Laserpeker</translation> +<translation id="401993194061514265">Merkepennen er ikke tilgjengelig. Åpne Screencast på nytt.</translation> <translation id="4021716437419160885">Rull ned</translation> <translation id="4028481283645788203">Passord kreves for mer sikkerhet</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -522,6 +524,7 @@ <translation id="412298498316631026">vindu</translation> <translation id="4123259114412175274">For å låse opp Chromebooken, sørg for at Bluetooth er påslått på telefonen</translation> <translation id="4129129681837227511">For å se varsler på låseskjermen, lås opp for å endre innstillingen</translation> +<translation id="4136724716305260864">Påslått til soloppgang</translation> <translation id="4146833061457621061">Spill av musikk</translation> <translation id="4165275524535002941">Kabelen støtter kanskje ikke skjermer</translation> <translation id="4177913004758410636">{0,plural, =1{Oppdater enheten innen en dag}other{Oppdater enheten innen # dager}}</translation> @@ -574,6 +577,7 @@ <translation id="4421231901400348175">Deler kontroll av skjermen med <ph name="HELPER_NAME" /> via fjernhjelp.</translation> <translation id="4424159417645388645">Skrivebord 5</translation> <translation id="4430019312045809116">Volum</translation> +<translation id="4435022394553622295">Se varsler og apper fra telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="4441283832827406317">Appene er sortert etter navn</translation> <translation id="4445159312344259901">Logg inn for å låse opp</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 viktig varsel}other{# viktige varsler}}</translation> @@ -701,6 +705,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 annet varsel}other{# andre varsler}}</translation> <translation id="5207949376430453814">Fremhev tekstinnsettingspunktet</translation> <translation id="5208059991603368177">På</translation> +<translation id="5216991270656129561">Avslått til <ph name="TIME" /></translation> <translation id="5222676887888702881">Logg av</translation> <translation id="5234764350956374838">Lukk</translation> <translation id="523505283826916779">Tilgjengelighetsinnstillinger</translation> @@ -750,6 +755,7 @@ <translation id="553675580533261935">Avslutning av økten</translation> <translation id="5537725057119320332">Cast</translation> <translation id="554893713779400387">Slå av/på diktering</translation> +<translation id="5560420195677022218">Se apper fra telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="556042886152191864">Knapp</translation> <translation id="5571066253365925590">Bluetooth er aktivert</translation> <translation id="557563299383177668">Neste avsnitt</translation> @@ -968,6 +974,7 @@ <translation id="6884665277231944629">Gå tilbake til i dag</translation> <translation id="6886172995547742638">Ytelsen til <ph name="DEVICE_TYPE" /> kan svekkes. Bruk en sertifisert USB-C-strømadapter på <ph name="PREFERRED_MINIMUM_POWER" /> W eller mer.</translation> <translation id="688631446150864480">Trykk på nedoverpiltasten for å bytte vindu</translation> +<translation id="6891721121089053234">Se nylige bilder, medier og apper fra telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="6896758677409633944">Kopiér</translation> <translation id="6901883536534621389">Prøv å navigere med bevegelser</translation> <translation id="6919251195245069855">Smartkortet ditt ble ikke gjenkjent. Prøv på nytt.</translation> @@ -1096,6 +1103,7 @@ <translation id="7684531502177797067">Kamerakilden er satt til <ph name="CAMERA_NAME" />.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Legg til nytt mobilnettverk</translation> +<translation id="7720400844887872976">Påslått til <ph name="TIME" /></translation> <translation id="7720410380936703141">PRØV PÅ NYTT</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 varsel}other{# varsler}}</translation> <translation id="7724603315864178912">Klipp ut</translation> @@ -1178,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> Denne innstillingen administreres av administratoren.</translation> <translation id="8155628902202578800">Åpne dialogboksen for informasjon om <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Bruker <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">Se nylige bilder, medier, varsler og apper fra telefonen din på <ph name="DEVICE_TYPE" /></translation> <translation id="8192202700944119416">Varsler er skjult.</translation> <translation id="8196787716797768628">Bruk bevegelser til å bytte raskt mellom apper og samhandle med Chromebook i nettbrettmodus.</translation> <translation id="8200772114523450471">Fortsett</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 53f8f4c..5191c9b 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ ଚାଲୁ ଅଛି।</translation> <translation id="1720011244392820496">ୱାଇ-ଫାଇ ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="1736898441010944794">ବ୍ଲୁଟୁଥ ଡିଭାଇସଗୁଡ଼ିକରେ "<ph name="NAME" />" ଦେଖାଯାଏ।</translation> +<translation id="174102739345480129">ମାର୍କର ବନ୍ଦ ଅଛି।</translation> <translation id="1743570585616704562">ଚିହ୍ନଟ ହେଲାନାହିଁ</translation> <translation id="1746730358044914197">ଇନ୍ପୁଟ୍ ପଦ୍ଧତିକୁ ଆପଣଙ୍କ ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ଵାରା କନ୍ଫିଗର୍ କରାଯାଇଛି।</translation> <translation id="1747827819627189109">ଅନ୍ ସ୍କ୍ରିନ୍ କୀ'ବୋର୍ଡକୁ ସକ୍ଷମ କରାଯାଇଛି</translation> @@ -566,6 +567,7 @@ <translation id="4379531060876907730">ଏଗୁଡ଼ିକ ଆପଣଙ୍କର ଷ୍ଟାଇଲସ୍ ଟୁଲ୍ ଅଟେ</translation> <translation id="4389184120735010762">ଆପଣ ଡକ୍ ହୋଇଥିବା ମ୍ୟାଗ୍ନିଫାୟର୍ ପାଇଁ କୀବୋର୍ଡ ସର୍ଟକଟ୍ ଦବାଇଛନ୍ତି। ଆପଣ କ’ଣ ଏହାକୁ ଚାଲୁ କରିବାକୁ ଚାହୁଁଛନ୍ତି?</translation> <translation id="439598569299422042">ବିରତ କରାଯାଇଛି, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">ସ୍କ୍ରିନକାଷ୍ଟକୁ ସେଭ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="4405151984121254935">ସଂଯୋଗ କରାଯାଇଥିବା ପେରିଫେରାଲର ପ୍ରକାର ସମର୍ଥିତ ନୁହେଁ</translation> <translation id="4406883609789734330">ଲାଇଭ୍ କ୍ୟାପସନ୍</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ବନ୍ଦ ଅଛି।</translation> @@ -672,6 +674,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">ପରବର୍ତ୍ତୀ ବାକ୍ୟ</translation> +<translation id="5016558321564993266">ମାର୍କରକୁ ଟୋଗଲ କରନ୍ତୁ। <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">ସମୟ ଶେଷ ହୋଇଛି</translation> <translation id="5033299697334913360">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ କ୍ୟାପଚର୍ କରିବାକୁ ସ୍କ୍ରିନର ଯେ କୌଣସି ସ୍ଥାନରେ କ୍ଲିକ୍ କରନ୍ତୁ</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> ଏକ ନୂଆ ଫୋନ୍ ସହ ସଂଯୁକ୍ତ ହୋଇଛି</translation> @@ -701,6 +704,7 @@ <translation id="5222676887888702881">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ</translation> <translation id="5234764350956374838">ଖାରଜ କରନ୍ତୁ</translation> <translation id="523505283826916779">ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସ୍</translation> +<translation id="5245201184978705914">ଟ୍ରାନ୍ସକ୍ରିପ୍ଟ ତିଆରି କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> ନାମକ ଏକ ଡିଭାଇସ୍ ସହ ସଂଯୋଗ କରାଯାଇଛି, ବ୍ୟାଟେରୀରେ <ph name="BATTERY_PERCENTAGE" />% ଚାର୍ଜ ଅଛି</translation> <translation id="5260676007519551770">ଡେସ୍କ 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> ଆପଣଙ୍କୁ ଧ୍ୟାନ ଦେବା ପାଇଁ ଅନୁରୋଧ କରୁଛି।</translation> @@ -735,6 +739,7 @@ <translation id="5433020815079095860">ଅଡିଓ ଇନପୁଟ</translation> <translation id="544691375626129091">ଏହି ଅବଧିରେ ସମସ୍ତ ଉପଲବ୍ଧ ଥିବା ଉପଯୋଗକର୍ତ୍ତା ପୂର୍ବରୁ ଯୋଗ କରାଯାଇଛନ୍ତି</translation> <translation id="54609108002486618">ପରିଚାଳିତ ହେଉଛି</translation> +<translation id="5460938382730614333">ମାର୍କର ଚାଲୁ ଅଛି।</translation> <translation id="5465662442746197494">ସାହାଯ୍ୟ ଦରକାର?</translation> <translation id="547979256943495781">ଡାହାଣପଟେ ସେଲ୍ଫ ଅଛି</translation> <translation id="5491186829646618080">ଫାର୍ମୱେର ଅପଡେଟଗୁଡ଼ିକ ଉପଲବ୍ଧ ଅଛି</translation> @@ -776,6 +781,7 @@ <translation id="5745612484876805746">ସୂର୍ଯ୍ୟାସ୍ତ ପରେ ନାଇଟ୍ ଲାଇଟ୍ ସ୍ୱଚାଳିତ ଭାବେ ଚାଲୁ ହୋଇଥାଏ</translation> <translation id="5750765938512549687">ବ୍ଲୁଟୁଥ୍ ବନ୍ଦ ଅଛି</translation> <translation id="5760866832697883462">ଆପଣଙ୍କ <ph name="NAME" />କୁ କନେକ୍ଟ କରନ୍ତୁ</translation> +<translation id="5762420912707163638">ମାର୍କରକୁ ଟୋଗଲ କରନ୍ତୁ। <ph name="STATE_TEXT" /> ସ୍କ୍ରିନରେ ଡ୍ର କରିବାକୁ ଟ୍ରାକପ୍ୟାଡ, ଟଚସ୍କ୍ରିନ କିମ୍ବା ଷ୍ଟାଇଲସ ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="576341972084747908">ବିପଦଜନକ <ph name="FILENAME" />କୁ ଡାଉନଲୋଡ କରନ୍ତୁ</translation> <translation id="5763928712329149804">ସେଲ୍ଫ ପାର୍ଟି ବନ୍ଦ ଅଛି।</translation> <translation id="576453121877257266">ନାଇଟ୍ ଲାଇଟ୍ ଚାଲୁ ଅଛି।</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index c3ebee5..5e294aa 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">ਹਾਲ ਹੀ ਵਿੱਚ ਖੋਲ੍ਹੀ ਗਈ</translation> <translation id="2841907151129139818">ਟੈਬਲੈੱਟ ਮੋਡ 'ਤੇ ਸਵਿੱਚ ਕੀਤਾ ਗਿਆ</translation> <translation id="2844169650293029770">USB-C ਡੀਵਾਈਸ (ਖੱਬੇ ਪਾਸੇ ਅੱਗੇ ਦਾ ਪੋਰਟ)</translation> +<translation id="2848120746144143659">ਪੂਰੀ ਸਕ੍ਰੀਨ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਕੈਪਚਰ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="2849936225196189499">ਆਲੋਚਨਾਤਮਿਕ</translation> <translation id="2860184359326882502">ਬਿਹਤਰੀਨ ਮਿਲਾਨ</translation> <translation id="2865888419503095837">ਨੈੱਟਵਰਕ ਜਾਣਕਾਰੀ</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">ਕੋਈ ਵੀ ਨੈੱਟਵਰਕ ਜਾਣਕਾਰੀ ਉਪਲਬਧ ਨਹੀਂ</translation> <translation id="385051799172605136">ਪਿੱਛੇ</translation> <translation id="385300504083504382">ਸ਼ੁਰੂਆਤ</translation> +<translation id="3861651314799684201">ਪੂਰੀ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="3886872229787704059">ਅੱਜ ਖੋਲ੍ਹੀ ਗਈ</translation> <translation id="3891340733213178823">ਸਾਈਨ-ਆਊਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ Ctrl+Shift+Q ਦਬਾਓ।</translation> <translation id="3893630138897523026">ChromeVox (ਬੋਲੀ ਪ੍ਰਤੀਕਰਮ)</translation> @@ -814,6 +816,7 @@ <translation id="595202126637698455">ਪ੍ਰਦਰਸ਼ਨ ਟ੍ਰੇਸਿੰਗ ਸਮਰਥਿਤ</translation> <translation id="5955304353782037793">ਐਪ</translation> <translation id="5958529069007801266">ਨਿਗਰਾਨੀ ਕੀਤੇ ਵਰਤੋਂਕਾਰ</translation> +<translation id="5976112937189445008">ਵਿੰਡੋ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="5977415296283489383">ਹੈਡਫੋਨ</translation> <translation id="5978382165065462689">ਰਿਮੋਟ ਸਹਾਇਤਾ ਰਾਹੀਂ ਨਾਲ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਦਾ ਨਿਯੰਤਰਣ ਸ਼ੇਅਰ ਕਰ ਰਿਹਾ ਹੈ।</translation> <translation id="5980301590375426705">ਮਹਿਮਾਨ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation> @@ -1200,6 +1203,7 @@ <translation id="8364673525741149932">ਸ਼ੈਲਫ ਪਾਰਟੀ ਨੂੰ ਟੌਗਲ ਕਰੋ। <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">ਇੱਕ ਅੱਖਰ ਅੱਗੇ ਜਾਓ</translation> <translation id="8371991222807690464">ਮਹਿਮਾਨ ਮੋਡ ਵਿੱਚ ਪੈਰੀਫੈਰਲ ਕਾਰਗੁਜ਼ਾਰੀ ਸੀਮਤ ਹੋ ਸਕਦੀ ਹੈ</translation> +<translation id="8374601332003098278">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="8375916635258623388">ਇਹ <ph name="DEVICE_NAME" /> ਅਤੇ ਤੁਹਾਡਾ ਫ਼ੋਨ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਕਨੈਕਟ ਹੋ ਜਾਣਗੇ</translation> <translation id="8380784334203145311">ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ,</translation> <translation id="8382715499079447151">ਦੇਖਣ ਸੰਬੰਧੀ ਸੁਰੱਖਿਆ</translation> @@ -1252,6 +1256,7 @@ <translation id="8653151467777939995">ਸੂਚਨਾ ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ। ਸੂਚਨਾਵਾਂ ਚਾਲੂ ਹਨ</translation> <translation id="8660331759611631213">71 ਦਾ ਵਰਗ ਮੂਲ</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨਸ਼ਾਟ ਕੈਪਚਰ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="8664753092453405566">ਨੈੱਟਵਰਕ ਸੂਚੀ ਦਿਖਾਓ। <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">ਆਪਣੇ ਡੀਵਾਈਸ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ <ph name="NAME" /> ਖੋਲ੍ਹੋ</translation> <translation id="8676770494376880701">ਘੱਟ-ਪਾਵਰ ਦਾ ਚਾਰਜਰ ਕਨੈਕਟ ਕੀਤਾ</translation> @@ -1293,6 +1298,7 @@ <translation id="8909138438987180327">ਬੈਟਰੀ <ph name="PERCENTAGE" /> ਫ਼ੀਸਦ ਹੈ।</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google Assistant ਇਹ ਭਾਸ਼ਾ ਨਹੀਂ ਬੋਲਦੀ।</translation> +<translation id="8924458948354692166">ਵਿੰਡੋ ਸਕ੍ਰੀਨਸ਼ਾਟ ਕੈਪਚਰ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="8926951137623668982">ਸ਼ੈਲਫ਼ ਹਮੇਸ਼ਾਂ ਲੁਕੀ ਰਹਿੰਦੀ ਹੈ</translation> <translation id="8936501819958976551">ਅਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਗਿਆ</translation> <translation id="8938800817013097409">USB-C ਡੀਵਾਈਸ (ਪਿੱਛੇ ਸੱਜਾ ਪੋਰਟ)</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index eac3bca2..1c622f93 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -136,12 +136,14 @@ <translation id="1719094688023114093">O recurso Legenda instantânea está ativado.</translation> <translation id="1720011244392820496">Ativar o Sincronizar Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" visível para dispositivos Bluetooth.</translation> +<translation id="174102739345480129">O marcador está desativado.</translation> <translation id="1743570585616704562">Não reconhecida</translation> <translation id="1746730358044914197">Os métodos de entrada são configurados pelo administrador.</translation> <translation id="1747827819627189109">Teclado na tela ativado</translation> <translation id="1749109475624620922">Janela <ph name="WINDOW_TITLE" /> atribuída a todos os espaços de trabalho</translation> <translation id="1750088060796401187">São permitidos apenas <ph name="MAX_DESK_LIMIT" /> espaços de trabalho. Remova um deles para abrir outro novo.</translation> <translation id="1756833229520115364">Não foi possível salvar o modelo. Excesso de janelas ou guias.</translation> +<translation id="1757857692711134412">Desativado até o pôr do sol</translation> <translation id="1761222317188459878">Alternar conexão de rede. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">O atalho de teclado <ph name="LAUNCHER_KEY_NAME" /> + ponto final mudou. Para usar a tecla Insert, pressione <ph name="LAUNCHER_KEY_NAME" /> + Shift + Backspace.</translation> <translation id="1770726142253415363">Movido para a linha <ph name="ROW_NUMBER" />, coluna <ph name="COLUMN_NUMBER" />.</translation> @@ -507,6 +509,7 @@ <translation id="3995138139523574647">Dispositivo USB-C (porta traseira da direita)</translation> <translation id="40062176907008878">Escrita à mão</translation> <translation id="4017989525502048489">Apontador laser</translation> +<translation id="401993194061514265">Marcador indisponível; Abra o Screencast novamente.</translation> <translation id="4021716437419160885">Rolar para baixo</translation> <translation id="4028481283645788203">A senha é necessária para aumentar a segurança</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -521,6 +524,7 @@ <translation id="412298498316631026">da janela</translation> <translation id="4123259114412175274">Para desbloquear o Chromebook, verifique se o Bluetooth do seu smartphone está ligado</translation> <translation id="4129129681837227511">Para ver as notificações na sua tela de bloqueio, desbloqueie a tela e altere a configuração</translation> +<translation id="4136724716305260864">Ativado até o amanhecer</translation> <translation id="4146833061457621061">Ouvir música</translation> <translation id="4165275524535002941">Talvez o cabo não transmita sinal de vídeo</translation> <translation id="4177913004758410636">{0,plural, =1{Atualize o dispositivo em 1 dia}one{Atualize o dispositivo em # dia}other{Atualize o dispositivo em # dias}}</translation> @@ -566,12 +570,14 @@ <translation id="4379531060876907730">Estas são suas ferramentas da stylus</translation> <translation id="4389184120735010762">Você pressionou o atalho de teclado para a lupa em área fixa. Gostaria de ativá-la?</translation> <translation id="439598569299422042">Pausado, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Falha ao salvar screencast</translation> <translation id="4405151984121254935">O tipo do periférico conectado não é compatível</translation> <translation id="4406883609789734330">Legenda instantânea</translation> <translation id="4412944820643904175">O recurso <ph name="FEATURE_NAME" /> está desativado.</translation> <translation id="4421231901400348175">Compartilhando o controle da sua tela com <ph name="HELPER_NAME" /> via Assistência remota.</translation> <translation id="4424159417645388645">Espaço de trabalho 5</translation> <translation id="4430019312045809116">Volume</translation> +<translation id="4435022394553622295">Veja notificações e apps do seu smartphone no <ph name="DEVICE_TYPE" /></translation> <translation id="4441283832827406317">Os apps estão ordenados por nome</translation> <translation id="4445159312344259901">Faça login para desbloquear</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 notificação importante}one{# notificação importante}other{# notificações importantes}}</translation> @@ -672,6 +678,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Próxima frase</translation> +<translation id="5016558321564993266">Alterne o marcador. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Tempo esgotado</translation> <translation id="5033299697334913360">Clique em qualquer lugar para capturar a tela cheia</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> conectado a um novo smartphone</translation> @@ -698,9 +705,11 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{Mais 1 notificação}one{Mais # notificação}other{Mais # notificações}}</translation> <translation id="5207949376430453814">Destacar cursor de texto</translation> <translation id="5208059991603368177">Ativado</translation> +<translation id="5216991270656129561">Desativado até <ph name="TIME" /></translation> <translation id="5222676887888702881">Sair</translation> <translation id="5234764350956374838">Dispensar</translation> <translation id="523505283826916779">Configurações de acessibilidade</translation> +<translation id="5245201184978705914">Falha ao gerar transcrição</translation> <translation id="5253783950165989294">Conectado a um dispositivo chamado <ph name="DEVICE_NAME" />. <ph name="BATTERY_PERCENTAGE" />% de bateria</translation> <translation id="5260676007519551770">Espaço de trabalho 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> precisa de atenção.</translation> @@ -735,6 +744,7 @@ <translation id="5433020815079095860">Entrada de áudio</translation> <translation id="544691375626129091">Todos os usuários disponíveis já foram adicionados a esta sessão.</translation> <translation id="54609108002486618">Gerenciado</translation> +<translation id="5460938382730614333">O marcador está ativado.</translation> <translation id="5465662442746197494">Precisa de ajuda?</translation> <translation id="547979256943495781">Estante à direita</translation> <translation id="5491186829646618080">Atualizações de firmware disponíveis</translation> @@ -745,6 +755,7 @@ <translation id="553675580533261935">Saindo da sessão</translation> <translation id="5537725057119320332">Transmitir</translation> <translation id="554893713779400387">Alternar para o ditado</translation> +<translation id="5560420195677022218">Veja os apps do smartphone no seu <ph name="DEVICE_TYPE" /></translation> <translation id="556042886152191864">Botão</translation> <translation id="5571066253365925590">Bluetooth ativado</translation> <translation id="557563299383177668">Próximo parágrafo</translation> @@ -776,6 +787,7 @@ <translation id="5745612484876805746">O Modo noturno será ativado automaticamente ao pôr do sol</translation> <translation id="5750765938512549687">Bluetooth desativado</translation> <translation id="5760866832697883462">Conecte seu dispositivo <ph name="NAME" /></translation> +<translation id="5762420912707163638">Ativar ou desativar o marcador. <ph name="STATE_TEXT" /> Use o trackpad, a tela touchscreen ou a stylus para desenhar na tela.</translation> <translation id="576341972084747908">Fazendo o download do arquivo perigoso <ph name="FILENAME" /></translation> <translation id="5763928712329149804">O modo Grupo de estantes está desativado.</translation> <translation id="576453121877257266">O Modo noturno está ativado.</translation> @@ -962,6 +974,7 @@ <translation id="6884665277231944629">Voltar para hoje</translation> <translation id="6886172995547742638">Seu <ph name="DEVICE_TYPE" /> pode ter baixo desempenho. Use um adaptador de energia USB-C certificado de <ph name="PREFERRED_MINIMUM_POWER" /> W ou mais.</translation> <translation id="688631446150864480">Pressione a seta para baixo para mudar de janela</translation> +<translation id="6891721121089053234">Veja as fotos, mídias e apps recentes do seu smartphone no <ph name="DEVICE_TYPE" /></translation> <translation id="6896758677409633944">Copiar</translation> <translation id="6901883536534621389">Tente navegar usando gestos</translation> <translation id="6919251195245069855">Não foi possível reconhecer seu cartão inteligente. Tente novamente.</translation> @@ -1090,6 +1103,7 @@ <translation id="7684531502177797067">Entrada de câmera definida como <ph name="CAMERA_NAME" />.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Adicionar nova rede celular</translation> +<translation id="7720400844887872976">Ativado até <ph name="TIME" /></translation> <translation id="7720410380936703141">TENTAR NOVAMENTE</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificação}one{# notificação}other{# notificações}}</translation> <translation id="7724603315864178912">Recortar</translation> @@ -1172,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> Essas configurações são gerenciadas pelo administrador.</translation> <translation id="8155628902202578800">Abrir a caixa de diálogo de informações da conta <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Usando <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">Veja fotos, mídias, notificações e apps recentes do seu smartphone no <ph name="DEVICE_TYPE" /></translation> <translation id="8192202700944119416">As notificações estão ocultas.</translation> <translation id="8196787716797768628">Use os gestos para alternar rapidamente entre apps e interagir com o Chromebook no modo tablet.</translation> <translation id="8200772114523450471">Retomar</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb index f24834d..f4881a3f 100644 --- a/ash/strings/ash_strings_pt-PT.xtb +++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Aberto recentemente</translation> <translation id="2841907151129139818">Mudou para o modo de tablet</translation> <translation id="2844169650293029770">Dispositivo USB-C (porta frontal do lado esquerdo)</translation> +<translation id="2848120746144143659">Prima Enter para fazer uma captura de ecrã inteiro</translation> <translation id="2849936225196189499">Crítica</translation> <translation id="2860184359326882502">Melhor correspondência</translation> <translation id="2865888419503095837">Informações da rede</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Não existem informações de rede disponíveis</translation> <translation id="385051799172605136">Anterior</translation> <translation id="385300504083504382">Início</translation> +<translation id="3861651314799684201">Prima Enter para gravar o ecrã inteiro</translation> <translation id="3886872229787704059">Aberto hoje</translation> <translation id="3891340733213178823">Prima Ctrl+Shift+Q duas vezes para terminar sessão.</translation> <translation id="3893630138897523026">ChromeVox (respostas faladas)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Rastreio do desempenho ativado</translation> <translation id="5955304353782037793">aplicação</translation> <translation id="5958529069007801266">Utilizador supervisionado</translation> +<translation id="5976112937189445008">Prima Enter para gravar a janela</translation> <translation id="5977415296283489383">Auscultador</translation> <translation id="5978382165065462689">A partilhar o controlo do seu ecrã através da Assistência remota.</translation> <translation id="5980301590375426705">Sair sess. de conv.</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Ative/desative o Shelf Party. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Avançar por letra</translation> <translation id="8371991222807690464">O desempenho periférico pode estar limitado no Modo convidado.</translation> +<translation id="8374601332003098278">Prima Enter para gravar o ecrã parcial</translation> <translation id="8375916635258623388">Este <ph name="DEVICE_NAME" /> e o telemóvel serão associados automaticamente.</translation> <translation id="8380784334203145311">Boa noite,</translation> <translation id="8382715499079447151">Proteção da visualização</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Mostrar definições de notificação. As notificações estão ativadas</translation> <translation id="8660331759611631213">Raiz quadrada de 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, intensidade do sinal: <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Prima Enter para fazer uma captura de ecrã parcial</translation> <translation id="8664753092453405566">Mostrar lista de redes. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Abra <ph name="NAME" /> para configurar o dispositivo</translation> <translation id="8676770494376880701">Carregador de baixo consumo ligado</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">A bateria está a <ph name="PERCENTAGE" /> por cento.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">O Assistente Google não fala este idioma.</translation> +<translation id="8924458948354692166">Prima Enter para fazer uma captura de ecrã da janela</translation> <translation id="8926951137623668982">Prateleira sempre oculta</translation> <translation id="8936501819958976551">desativada</translation> <translation id="8938800817013097409">Dispositivo USB-C (porta traseira direita)</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index 442ec55..c9db323 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Автоматические субтитры включены</translation> <translation id="1720011244392820496">Включить синхронизацию Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />": видно устройствам Bluetooth.</translation> +<translation id="174102739345480129">отключен.</translation> <translation id="1743570585616704562">Не распознано</translation> <translation id="1746730358044914197">Способы ввода настраиваются администратором</translation> <translation id="1747827819627189109">Экранная клавиатура включена</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Инструменты для работы со стилусом</translation> <translation id="4389184120735010762">Вы нажали сочетание клавиш для включения закрепленной лупы. Выполнить это действие?</translation> <translation id="439598569299422042">Приостановлено, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Не удалось сохранить скринкаст</translation> <translation id="4405151984121254935">Подключенное периферийное устройство этого типа не поддерживается.</translation> <translation id="4406883609789734330">Автоматические субтитры</translation> <translation id="4412944820643904175">Функция "<ph name="FEATURE_NAME" />" отключена</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">К следующему предложению</translation> +<translation id="5016558321564993266">Статус фломастера: <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Время вышло</translation> <translation id="5033299697334913360">Чтобы снять экран полностью, нажмите в любом его месте</translation> <translation id="5035236842988137213">Устройство <ph name="DEVICE_NAME" /> подключено к новому телефону</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Выйти</translation> <translation id="5234764350956374838">Закрыть</translation> <translation id="523505283826916779">Настройки специальных возможностей</translation> +<translation id="5245201184978705914">Не удается создать расшифровку.</translation> <translation id="5253783950165989294">Установлено подключение к устройству "<ph name="DEVICE_NAME" />", заряд батареи – <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="5260676007519551770">Рабочий стол 4</translation> <translation id="5283099933536931082">Приложение "<ph name="APP_ITEM_TITLE" />" требует вашего внимания.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Ввод аудио</translation> <translation id="544691375626129091">В этот сеанс уже добавлены все доступные пользователи.</translation> <translation id="54609108002486618">Автоматическое управление</translation> +<translation id="5460938382730614333">включен.</translation> <translation id="5465662442746197494">Справка</translation> <translation id="547979256943495781">Временное хранилище расположено справа</translation> <translation id="5491186829646618080">Доступны обновления</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Ночная подсветка включается автоматически на закате</translation> <translation id="5750765938512549687">Bluetooth выключен</translation> <translation id="5760866832697883462">Подключите <ph name="NAME" /></translation> +<translation id="5762420912707163638">Статус фломастера: <ph name="STATE_TEXT" /> В зависимости от типа экрана для рисования можно использовать сенсорную панель, палец или стилус.</translation> <translation id="576341972084747908">Скачивание опасного файла <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Режим отключен.</translation> <translation id="576453121877257266">Ночная подсветка включена</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index ac028a9..65bea00 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -143,6 +143,7 @@ <translation id="1749109475624620922">Okno <ph name="WINDOW_TITLE" /> bolo pridelené všetkým plochám</translation> <translation id="1750088060796401187">Povolený je iba tento počet plôch: <ph name="MAX_DESK_LIMIT" />. Ak chcete otvoriť novú plochu, odstráňte jednu z nich.</translation> <translation id="1756833229520115364">Šablónu sa nepodarilo uložiť. Príliš veľa okien alebo kariet.</translation> +<translation id="1757857692711134412">Vypnutý do západu slnka</translation> <translation id="1761222317188459878">Prepnúť sieťové pripojenie. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">Klávesová skratka <ph name="LAUNCHER_KEY_NAME" /> + bodka bola zmenená. Ak chcete použiť kláves Insert, stlačte klávesy <ph name="LAUNCHER_KEY_NAME" /> + Shift + backspace.</translation> <translation id="1770726142253415363">Presunuté do <ph name="ROW_NUMBER" />. riadka a <ph name="COLUMN_NUMBER" />. stĺpca.</translation> @@ -508,6 +509,7 @@ <translation id="3995138139523574647">zariadenia USB-C (port vpravo vzadu)</translation> <translation id="40062176907008878">Napísať ručne</translation> <translation id="4017989525502048489">Laserový ukazovateľ</translation> +<translation id="401993194061514265">Značka nie je k dispozícii. Znova otvorte Screencast.</translation> <translation id="4021716437419160885">Posunúť nadol</translation> <translation id="4028481283645788203">Na zaistenie vyššieho zabezpečenia musíte zadať heslo</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -522,6 +524,7 @@ <translation id="412298498316631026">okno</translation> <translation id="4123259114412175274">Ak chcete odomknúť svoj Chromebook, uistite sa, že máte v telefóne zapnuté rozhranie Bluetooth</translation> <translation id="4129129681837227511">Ak chcete, aby sa na uzamknutej obrazovke zobrazovali upozornenia, odomknite zariadenie a zmeňte nastavenie</translation> +<translation id="4136724716305260864">Zapnutý do východu slnka</translation> <translation id="4146833061457621061">Prehrať hudbu</translation> <translation id="4165275524535002941">Kábel nemusí podporovať obrazovky</translation> <translation id="4177913004758410636">{0,plural, =1{Aktualizujte zariadenie do jedného dňa}few{Aktualizujte zariadenie # dní}many{Aktualizujte zariadenie # dňa}other{Aktualizujte zariadenie # dní}}</translation> @@ -574,6 +577,7 @@ <translation id="4421231901400348175">Ovládanie obrazovky sa prostredníctvom Vzdialenej pomoci zdieľa s používateľom <ph name="HELPER_NAME" />.</translation> <translation id="4424159417645388645">5. plocha</translation> <translation id="4430019312045809116">Hlasitosť</translation> +<translation id="4435022394553622295">Zobrazujte si upozornenia a aplikácie svojho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation> <translation id="4441283832827406317">Aplikácie sú zoradené podľa názvu</translation> <translation id="4445159312344259901">Odomknite prihlásením</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 dôležité upozornenie}few{# dôležité upozornenia}many{# important notifications}other{# dôležitých upozornení}}</translation> @@ -701,6 +705,7 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 ďalšie upozornenie}few{# ďalšie upozornenia}many{# other notifications}other{# ďalších upozornení}}</translation> <translation id="5207949376430453814">Zvýrazniť textový kurzor</translation> <translation id="5208059991603368177">Zapnutý</translation> +<translation id="5216991270656129561">Vypnutý do <ph name="TIME" /></translation> <translation id="5222676887888702881">Odhlásiť sa</translation> <translation id="5234764350956374838">Ignorovať</translation> <translation id="523505283826916779">Nastavenia zjednodušenia prístupu</translation> @@ -750,6 +755,7 @@ <translation id="553675580533261935">Ukončuje sa relácia</translation> <translation id="5537725057119320332">Prenášať</translation> <translation id="554893713779400387">Prepnúť diktovanie</translation> +<translation id="5560420195677022218">Zobrazujte si upozornenia svojho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation> <translation id="556042886152191864">Tlačidlo</translation> <translation id="5571066253365925590">Rozhranie Bluetooth je povolené</translation> <translation id="557563299383177668">Ďalší odsek</translation> @@ -968,6 +974,7 @@ <translation id="6884665277231944629">Prejsť späť na dnešok</translation> <translation id="6886172995547742638">Vaše zariadenie <ph name="DEVICE_TYPE" /> môže mať nižší výkon. Používajte nabíjačku s portom USB-C, ktorá má certifikovaný výkon minimálne <ph name="PREFERRED_MINIMUM_POWER" /> W</translation> <translation id="688631446150864480">Ak chcete prepnúť okná, stlačte kláves so šípkou nadol</translation> +<translation id="6891721121089053234">Zobrazujte si najnovšie fotky, médiá a aplikácie svojho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation> <translation id="6896758677409633944">Kopírovať</translation> <translation id="6901883536534621389">Skúste prechádzanie gestami</translation> <translation id="6919251195245069855">Inteligentnú kartu sa nepodarilo rozpoznať. Skúste to znova.</translation> @@ -1096,6 +1103,7 @@ <translation id="7684531502177797067">Pre kameru <ph name="CAMERA_NAME" /> je nastavený vstup.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Pridať novú mobilnú sieť</translation> +<translation id="7720400844887872976">Zapnutý do <ph name="TIME" /></translation> <translation id="7720410380936703141">SKÚSIŤ ZNOVA</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 upozornenie}few{# upozornenia}many{# notifications}other{# upozornení}}</translation> <translation id="7724603315864178912">Vystrihnúť</translation> @@ -1178,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> Toto nastavenie ovláda váš správca.</translation> <translation id="8155628902202578800">Otvoriť dialógové okno informácií o používateľovi <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Práve sa používa <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">Zobrazujte si najnovšie fotky, médiá, upozornenia a aplikácie svojho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation> <translation id="8192202700944119416">Upozornenia sú skryté.</translation> <translation id="8196787716797768628">Gestami môžete rýchlo prepínať medzi aplikáciami a používať Chromebook v režime tabletu.</translation> <translation id="8200772114523450471">Pokračovať</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index bc1a050c..3165bb1 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -136,12 +136,14 @@ <translation id="1719094688023114093">Samodejni podnapisi so vklopljeni.</translation> <translation id="1720011244392820496">Vklop sinhronizacije poverilnic za Wi-Fi</translation> <translation id="1736898441010944794">Naprava »<ph name="NAME" />« je vidna napravam Bluetooth.</translation> +<translation id="174102739345480129">Označevalnik je izklopljen.</translation> <translation id="1743570585616704562">Ni prepoznano</translation> <translation id="1746730358044914197">Načine vnosa konfigurira skrbnik.</translation> <translation id="1747827819627189109">Zaslonska tipkovnica omogočena</translation> <translation id="1749109475624620922">Okno <ph name="WINDOW_TITLE" /> je dodeljeno vsem namizjem.</translation> <translation id="1750088060796401187">Dovoljenih je samo toliko namizij: <ph name="MAX_DESK_LIMIT" />. Odstranite namizje, če želite odpreti novega.</translation> <translation id="1756833229520115364">Predloge ni bilo mogoče shraniti. Preveč je oken ali zavihkov.</translation> +<translation id="1757857692711134412">Izklopljeno do sončnega zahoda</translation> <translation id="1761222317188459878">Preklop omrežne povezave. <ph name="STATE_TEXT" /></translation> <translation id="1768366657309696705">Bližnjica na tipkovnici <ph name="LAUNCHER_KEY_NAME" /> + pika je spremenjena. Če želite uporabiti tipko za vstavljanje, pritisnite tipko <ph name="LAUNCHER_KEY_NAME" /> + Shift + vračalko.</translation> <translation id="1770726142253415363">Premaknjeno na <ph name="ROW_NUMBER" />. vrstico, <ph name="COLUMN_NUMBER" />. stolpec.</translation> @@ -507,6 +509,7 @@ <translation id="3995138139523574647">Naprava USB-C (vrata desno zadaj)</translation> <translation id="40062176907008878">Rokopis</translation> <translation id="4017989525502048489">Laserski kazalnik</translation> +<translation id="401993194061514265">Označevalnik ni na voljo. Znova odprite aplikacijo Snemanje zaslona.</translation> <translation id="4021716437419160885">Pomik navzdol</translation> <translation id="4028481283645788203">Zaradi večje varnosti je obvezno geslo</translation> <translation id="4032485810211612751"><ph name="HOURS" />:<ph name="MINUTES" />:<ph name="SECONDS" /></translation> @@ -521,6 +524,7 @@ <translation id="412298498316631026">okno</translation> <translation id="4123259114412175274">Če želite odkleniti Chromebook, mora biti vklopljen Bluetooth v telefonu.</translation> <translation id="4129129681837227511">Če si želite ogledati obvestila na zaklenjenem zaslonu, ga odklenite in spremenite nastavitev</translation> +<translation id="4136724716305260864">Vklopljeno do sončnega vzhoda</translation> <translation id="4146833061457621061">Predvajaj glasbo</translation> <translation id="4165275524535002941">Kabel morda ne podpira zaslonov</translation> <translation id="4177913004758410636">{0,plural, =1{Napravo posodobite v enem dnevu}one{Napravo posodobite v # dnevu}two{Napravo posodobite v # dneh}few{Napravo posodobite v # dnevih}other{Napravo posodobite v # dnevih}}</translation> @@ -566,12 +570,14 @@ <translation id="4379531060876907730">To so vaša orodja pisala</translation> <translation id="4389184120735010762">Pritisnili ste bližnjično tipko za zasidrano lupo. Ali jo želite vklopiti?</translation> <translation id="439598569299422042">Začasno zaustavljeno, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Snemanja zaslona ni mogoče shraniti</translation> <translation id="4405151984121254935">Vrsta povezane zunanje naprave ni podprta.</translation> <translation id="4406883609789734330">Samodejni podnapisi</translation> <translation id="4412944820643904175">Funkcija <ph name="FEATURE_NAME" /> je izklopljena.</translation> <translation id="4421231901400348175">Deljenje nadzora nad zaslonom z osebo <ph name="HELPER_NAME" /> prek pomoči na daljavo.</translation> <translation id="4424159417645388645">Namizje 5</translation> <translation id="4430019312045809116">Glasnost</translation> +<translation id="4435022394553622295">Oglejte si obvestila in aplikacije telefona v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="4441283832827406317">Aplikacije so razvrščene po imenu</translation> <translation id="4445159312344259901">Prijavite se za odklepanje</translation> <translation id="4449692009715125625">{NUM_NOTIFICATIONS,plural, =1{1 pomembno obvestilo}one{# pomembno obvestilo}two{# pomembni obvestili}few{# pomembna obvestila}other{# pomembnih obvestil}}</translation> @@ -672,6 +678,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Naslednji stavek</translation> +<translation id="5016558321564993266">Preklopite označevalnik. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Dovoljeni čas je potekel</translation> <translation id="5033299697334913360">Kliknite kjer koli za posnetek celotnega zaslona.</translation> <translation id="5035236842988137213">Naprava <ph name="DEVICE_NAME" /> je povezana z novim telefonom</translation> @@ -698,9 +705,11 @@ <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{1 drugo obvestilo}one{# drugo obvestilo}two{# drugi obvestili}few{# druga obvestila}other{# drugih obvestil}}</translation> <translation id="5207949376430453814">Označitev kazalke v besedilu</translation> <translation id="5208059991603368177">Vklopljeno</translation> +<translation id="5216991270656129561">Izklopljeno do <ph name="TIME" /></translation> <translation id="5222676887888702881">Odjava</translation> <translation id="5234764350956374838">Opusti</translation> <translation id="523505283826916779">Nastavitve funkcij za ljudi s posebnimi potrebami</translation> +<translation id="5245201184978705914">Prepisa ni mogoče ustvariti</translation> <translation id="5253783950165989294">Vzpostavljena je povezava z napravo <ph name="DEVICE_NAME" />, napolnjenost baterije: <ph name="BATTERY_PERCENTAGE" /> %</translation> <translation id="5260676007519551770">Namizje 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> potrebuje vašo pozornost.</translation> @@ -735,6 +744,7 @@ <translation id="5433020815079095860">Zvočni vhod</translation> <translation id="544691375626129091">Vsi razpoložljivi uporabniki so že bili dodani tej seji.</translation> <translation id="54609108002486618">Upravljan</translation> +<translation id="5460938382730614333">Označevalnik je vklopljen.</translation> <translation id="5465662442746197494">Potrebujete pomoč?</translation> <translation id="547979256943495781">Polica na desni</translation> <translation id="5491186829646618080">Na voljo so posodobitve vdelane programske opreme</translation> @@ -745,6 +755,7 @@ <translation id="553675580533261935">Odjava iz seje</translation> <translation id="5537725057119320332">Predvajanje</translation> <translation id="554893713779400387">Preklop narekovanja</translation> +<translation id="5560420195677022218">Oglejte si aplikacije telefona v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="556042886152191864">Gumb</translation> <translation id="5571066253365925590">Bluetooth omogočen</translation> <translation id="557563299383177668">Naslednji odstavek</translation> @@ -776,6 +787,7 @@ <translation id="5745612484876805746">Nočna svetloba se samodejno vklopi ob sončnem zahodu</translation> <translation id="5750765938512549687">Bluetooth je izklopljen</translation> <translation id="5760866832697883462">Povežite napravo <ph name="NAME" /></translation> +<translation id="5762420912707163638">Preklopite označevalnik. <ph name="STATE_TEXT" /> Uporabite sledilno ploščico, zaslon na dotik ali pisalo za risanje po zaslonu.</translation> <translation id="576341972084747908">Nevaren prenos <ph name="FILENAME" /></translation> <translation id="5763928712329149804">Shelf Party je izklopljen.</translation> <translation id="576453121877257266">Nočna svetloba je vklopljena.</translation> @@ -962,6 +974,7 @@ <translation id="6884665277231944629">Nazaj na današnji dan</translation> <translation id="6886172995547742638">Naprava <ph name="DEVICE_TYPE" /> morda deluje slabše. Uporabite potrjen napajalnik USB-C z močjo <ph name="PREFERRED_MINIMUM_POWER" /> W ali več.</translation> <translation id="688631446150864480">Za preklapljanje med okni pritisnite tipko s puščico dol</translation> +<translation id="6891721121089053234">Oglejte si nedavne fotografije, predstavnost in aplikacije telefona v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="6896758677409633944">Kopiraj</translation> <translation id="6901883536534621389">Poskusite se premikati s potezami</translation> <translation id="6919251195245069855">Pametne kartice ni bilo mogoče prepoznati. Poskusite znova.</translation> @@ -1090,6 +1103,7 @@ <translation id="7684531502177797067">Vnos s fotoaparatom je nastavljen za »<ph name="CAMERA_NAME" />«.</translation> <translation id="7705524343798198388">VPN</translation> <translation id="7714767791242455379">Dodaj novo mobilno omrežje</translation> +<translation id="7720400844887872976">Vklopljeno do <ph name="TIME" /></translation> <translation id="7720410380936703141">POSKUSI ZNOVA</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obvestilo}one{# obvestilo}two{# obvestili}few{# obvestila}other{# obvestil}}</translation> <translation id="7724603315864178912">Izreži</translation> @@ -1172,6 +1186,7 @@ <translation id="8155007568264258537"><ph name="FEATURE_NAME" /> To nastavitev upravlja skrbnik.</translation> <translation id="8155628902202578800">Odpri pogovorno okno z informacijami o uporabniku <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="8167567890448493835">Uporaba jezika <ph name="LOCALE_NAME" /></translation> +<translation id="8183592608247778598">Oglejte si nedavne fotografije, predstavnost, obvestila in aplikacije telefona v napravi <ph name="DEVICE_TYPE" />.</translation> <translation id="8192202700944119416">Obvestila so skrita.</translation> <translation id="8196787716797768628">S potezami hitro preklapljajte med aplikacijami in uporabljajte Chromebook v načinu tabličnega računalnika.</translation> <translation id="8200772114523450471">Nadaljuj</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 7cf7fdb..75e75d5 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">"Titrat në çast" janë aktivë.</translation> <translation id="1720011244392820496">Aktivizo "Sinkronizimin e Wi-Fi"</translation> <translation id="1736898441010944794">"<ph name="NAME" />" i dukshëm për pajisjet me Bluetooth.</translation> +<translation id="174102739345480129">Treguesi është joaktiv.</translation> <translation id="1743570585616704562">Nuk njihet</translation> <translation id="1746730358044914197">Metodat e hyrjes konfigurohen nga administratori yt.</translation> <translation id="1747827819627189109">Tastiera në ekran u aktivizua</translation> @@ -303,6 +304,7 @@ <translation id="2834813915651407382">Hapur së fundi</translation> <translation id="2841907151129139818">Kaloi në modalitetin e tabletit</translation> <translation id="2844169650293029770">Pajisja USB-C (porta e përparme, majtas)</translation> +<translation id="2848120746144143659">Shtyp "Enter" për të nxjerrë pamjen e ekranit në ekran të plotë</translation> <translation id="2849936225196189499">Vendimtar</translation> <translation id="2860184359326882502">Përputhja më e mirë</translation> <translation id="2865888419503095837">Informacioni i rrjetit</translation> @@ -481,6 +483,7 @@ <translation id="3846575436967432996">Nuk mundësohen informacione mbi rrjetin</translation> <translation id="385051799172605136">Prapa</translation> <translation id="385300504083504382">Fillimi</translation> +<translation id="3861651314799684201">Shtyp "Enter" për të regjistruar ekranin e plotë</translation> <translation id="3886872229787704059">Hapur sot</translation> <translation id="3891340733213178823">Shtyp Ctrl+Shift+Q për të dalë nga llogaria.</translation> <translation id="3893630138897523026">ChromeVox (komente të thëna me gojë)</translation> @@ -564,6 +567,7 @@ <translation id="4379531060876907730">Këto janë veglat e tua të stilolapsit</translation> <translation id="4389184120735010762">Ke shtypur shkurtoren e tastierës për zmadhuesin me puthitje. Dëshiron ta aktivizosh?</translation> <translation id="439598569299422042">Në pauzë, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Transmetimi i ekranit nuk mund të ruhet</translation> <translation id="4405151984121254935">Lloji i pajisjes së lidhur periferike nuk mbështetet</translation> <translation id="4406883609789734330">Titra në çast</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> është joaktive.</translation> @@ -670,6 +674,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Fjalia tjetër</translation> +<translation id="5016558321564993266">Ndrysho treguesin. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Koha mbaroi</translation> <translation id="5033299697334913360">Kliko diku për të regjistruar ekranin e plotë</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> u lidh me një telefon të ri</translation> @@ -699,6 +704,7 @@ <translation id="5222676887888702881">Dil</translation> <translation id="5234764350956374838">Hiq</translation> <translation id="523505283826916779">Cilësimet e qasjes</translation> +<translation id="5245201184978705914">Transkripti nuk mund të krijohet</translation> <translation id="5253783950165989294">U lidh me një pajisje me emrin "<ph name="DEVICE_NAME" />". Niveli i baterisë <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">Tavolina e punës 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> kërkon vëmendjen tënde.</translation> @@ -733,6 +739,7 @@ <translation id="5433020815079095860">Hyrja e audios</translation> <translation id="544691375626129091">Të gjithë përdoruesit e gatshëm janë shtuar tashmë te ky sesion.</translation> <translation id="54609108002486618">E menaxhuar</translation> +<translation id="5460938382730614333">Shënuesi është aktiv.</translation> <translation id="5465662442746197494">Ke nevojë për ndihmë?</translation> <translation id="547979256943495781">Rafti në të djathtë</translation> <translation id="5491186829646618080">Ofrohen përditësime të firmuerit</translation> @@ -774,6 +781,7 @@ <translation id="5745612484876805746">"Drita e natës" aktivizohet automatikisht kur perëndon dielli</translation> <translation id="5750765938512549687">Bluetooth-i është joaktiv</translation> <translation id="5760866832697883462">Lidh <ph name="NAME" /></translation> +<translation id="5762420912707163638">Aktivizo/çaktivizo shënuesin. <ph name="STATE_TEXT" /> Përdor bllokun e prekjes, ekranin me prekje ose stilolapsin për të vizatuar në ekran.</translation> <translation id="576341972084747908">Shkarko <ph name="FILENAME" /> me rrezik</translation> <translation id="5763928712329149804">"Grupi i rafteve" është joaktiv.</translation> <translation id="576453121877257266">"Drita e natës" është aktive.</translation> @@ -807,6 +815,7 @@ <translation id="595202126637698455">Gjurmimi i rendimentit u aktivizua</translation> <translation id="5955304353782037793">aplikacion</translation> <translation id="5958529069007801266">Përdorues i mbikëqyrur</translation> +<translation id="5976112937189445008">Shtyp "Enter" për të regjistruar një video për dritaren</translation> <translation id="5977415296283489383">Kufjet</translation> <translation id="5978382165065462689">Po ndan kontrollin e ekranit përmes "Ndihmës në distancë".</translation> <translation id="5980301590375426705">Dil si vizitor</translation> @@ -1193,6 +1202,7 @@ <translation id="8364673525741149932">Aktivizo/çaktivizo "Grupin e rafteve". <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Përpara një shkronjë</translation> <translation id="8371991222807690464">Performanca e pajisjes periferike mund të jetë e kufizuar në modalitetin "vizitor"</translation> +<translation id="8374601332003098278">Shtyp "Enter" për të regjistruar një pjesë të ekranit</translation> <translation id="8375916635258623388">Kjo pajisje <ph name="DEVICE_NAME" /> dhe telefoni yt do të lidhen automatikisht</translation> <translation id="8380784334203145311">Natën e mirë,</translation> <translation id="8382715499079447151">Mbrojtja e shikimit</translation> @@ -1245,6 +1255,7 @@ <translation id="8653151467777939995">Shfaq cilësimet e njoftimeve. Njoftimet janë aktive</translation> <translation id="8660331759611631213">Rrënja katrore e 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, fuqia e sinjalit <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Shtyp "Enter" për të nxjerrë një pamje të pjesshme të ekranit</translation> <translation id="8664753092453405566">Shfaq listën e njoftimeve. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Hap <ph name="NAME" /> për të konfiguruar pajisjen tënde</translation> <translation id="8676770494376880701">Është lidhur karikues me fuqi të ulët</translation> @@ -1286,6 +1297,7 @@ <translation id="8909138438987180327">Bateria është në <ph name="PERCENTAGE" /> për qind.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">"Asistenti i Google" nuk e flet këtë gjuhë.</translation> +<translation id="8924458948354692166">Shtyp "Enter" për të nxjerrë pamjen e ekranit për dritaren</translation> <translation id="8926951137623668982">Rafti gjithmonë i fshehur</translation> <translation id="8936501819958976551">çaktivizuar</translation> <translation id="8938800817013097409">Pajisja USB-C (porta djathtas, prapa)</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb index cd752a5..6077b47 100644 --- a/ash/strings/ash_strings_sr-Latn.xtb +++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Nedavno otvarano</translation> <translation id="2841907151129139818">Prešli ste u režim tableta</translation> <translation id="2844169650293029770">Uređaj sa USB priključkom tipa C (levi prednji port)</translation> +<translation id="2848120746144143659">Pritisnite Enter da biste napravili snimak celog ekrana</translation> <translation id="2849936225196189499">Od presudne važnosti</translation> <translation id="2860184359326882502">Najbolje podudaranje</translation> <translation id="2865888419503095837">Informacije o mreži</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Nisu dostupne informacije o mreži</translation> <translation id="385051799172605136">Nazad</translation> <translation id="385300504083504382">Početak</translation> +<translation id="3861651314799684201">Pritisnite Enter da biste snimili ceo ekran</translation> <translation id="3886872229787704059">Otvarano danas</translation> <translation id="3891340733213178823">Dvaput pritisnite Ctrl+Shift+Q da biste se odjavili.</translation> <translation id="3893630138897523026">ChromeVox (govorne povratne informacije)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Praćenje učinka je omogućeno</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Korisnik pod nadzorom</translation> +<translation id="5976112937189445008">Pritisnite Enter da biste snimili prozor</translation> <translation id="5977415296283489383">Slušalice</translation> <translation id="5978382165065462689">Delite kontrolu nad ekranom preko Daljinske pomoći.</translation> <translation id="5980301590375426705">Zatvori kao gost</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Uključite/isključite Žurku na polici. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Slovo unapred</translation> <translation id="8371991222807690464">Učinak perifernog uređaja je možda ograničen u režimu gosta</translation> +<translation id="8374601332003098278">Pritisnite Enter da biste snimili deo ekrana</translation> <translation id="8375916635258623388">Ovaj <ph name="DEVICE_NAME" /> i telefon će se automatski povezati</translation> <translation id="8380784334203145311">Laku noć,</translation> <translation id="8382715499079447151">Zaštita od pregleda</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Pregledajte podešavanja obaveštenja. Obaveštenja su uključena</translation> <translation id="8660331759611631213">Kvadratni koren broja 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Pritisnite Enter da biste napravili delimičan snimak ekrana</translation> <translation id="8664753092453405566">Pregledajte listu mreža. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Otvorite <ph name="NAME" /> da biste podesili uređaj</translation> <translation id="8676770494376880701">Povezan je punjač male snage</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Baterija je na <ph name="PERCENTAGE" />%.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google pomoćnik ne govori ovaj jezik.</translation> +<translation id="8924458948354692166">Pritisnite Enter da biste napravili snimak ekrana prozora</translation> <translation id="8926951137623668982">Polica je uvek sakrivena</translation> <translation id="8936501819958976551">deaktivirano</translation> <translation id="8938800817013097409">Uređaj sa USB priključkom tipa C (zadnji desni port)</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index 70b4ced1..e37f192 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Недавно отварано</translation> <translation id="2841907151129139818">Прешли сте у режим таблета</translation> <translation id="2844169650293029770">Уређај са USB прикључком типа C (леви предњи порт)</translation> +<translation id="2848120746144143659">Притисните Enter да бисте направили снимак целог екрана</translation> <translation id="2849936225196189499">Од пресудне важности</translation> <translation id="2860184359326882502">Најбоље подударање</translation> <translation id="2865888419503095837">Информације о мрежи</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Нису доступне информације о мрежи</translation> <translation id="385051799172605136">Назад</translation> <translation id="385300504083504382">Почетак</translation> +<translation id="3861651314799684201">Притисните Enter да бисте снимили цео екран</translation> <translation id="3886872229787704059">Отварано данас</translation> <translation id="3891340733213178823">Двапут притисните Ctrl+Shift+Q да бисте се одјавили.</translation> <translation id="3893630138897523026">ChromeVox (говорне повратне информације)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Праћење учинка је омогућено</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Корисник под надзором</translation> +<translation id="5976112937189445008">Притисните Enter да бисте снимили прозор</translation> <translation id="5977415296283489383">Слушалице</translation> <translation id="5978382165065462689">Делите контролу над екраном преко Даљинске помоћи.</translation> <translation id="5980301590375426705">Затвори као гост</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Укључите/искључите Журку на полици. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Слово унапред</translation> <translation id="8371991222807690464">Учинак периферног уређаја је можда ограничен у режиму госта</translation> +<translation id="8374601332003098278">Притисните Enter да бисте снимили део екрана</translation> <translation id="8375916635258623388">Овај <ph name="DEVICE_NAME" /> и телефон ће се аутоматски повезати</translation> <translation id="8380784334203145311">Лаку ноћ,</translation> <translation id="8382715499079447151">Заштита од прегледа</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Прегледајте подешавања обавештења. Обавештења су укључена</translation> <translation id="8660331759611631213">Квадратни корен броја 71</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, јачина сигнала <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Притисните Enter да бисте направили делимичан снимак екрана</translation> <translation id="8664753092453405566">Прегледајте листу мрежа. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Отворите <ph name="NAME" /> да бисте подесили уређај</translation> <translation id="8676770494376880701">Повезан је пуњач мале снаге</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Батерија је на <ph name="PERCENTAGE" />%.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google помоћник не говори овај језик.</translation> +<translation id="8924458948354692166">Притисните Enter да бисте направили снимак екрана прозора</translation> <translation id="8926951137623668982">Полица је увек сакривена</translation> <translation id="8936501819958976551">деактивирано</translation> <translation id="8938800817013097409">Уређај са USB прикључком типа C (задњи десни порт)</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index 10a7a306..b132abd 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Live Caption är aktiverat.</translation> <translation id="1720011244392820496">Aktivera wifi-synkronisering</translation> <translation id="1736898441010944794"><ph name="NAME" /> är synlig för Bluetooth-enheter.</translation> +<translation id="174102739345480129">Märkpennan är inaktiverad.</translation> <translation id="1743570585616704562">Identifierades inte</translation> <translation id="1746730358044914197">Inmatningsmetoderna konfigureras av administratören.</translation> <translation id="1747827819627189109">Skärmen på tangentbordet har aktiverats</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Här är dina verktyg för e-penna</translation> <translation id="4389184120735010762">Du tryckte på kortkommandot för dockad skärmförstoring. Vill du aktivera funktionen?</translation> <translation id="439598569299422042">Pausad, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Det gick inte att spara screencast</translation> <translation id="4405151984121254935">Typen av kringutrustning som är ansluten stöds inte</translation> <translation id="4406883609789734330">Live Caption</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> är av.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Nästa mening</translation> +<translation id="5016558321564993266">Aktivera och inaktivera märkpennan. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Tiden är slut</translation> <translation id="5033299697334913360">Klicka var som helst för att ta en bild av hela skärmen</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> har anslutits till en ny mobil</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Logga ut</translation> <translation id="5234764350956374838">Stäng</translation> <translation id="523505283826916779">Inställningar för tillgänglighet</translation> +<translation id="5245201184978705914">Det gick inte att generera transkription</translation> <translation id="5253783950165989294">Ansluten till enheten <ph name="DEVICE_NAME" />, <ph name="BATTERY_PERCENTAGE" /> % batteri</translation> <translation id="5260676007519551770">Skrivbord 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> begär din uppmärksamhet.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Ljudingång</translation> <translation id="544691375626129091">Alla tillgängliga användare har redan lagts till i den här sessionen.</translation> <translation id="54609108002486618">Hanterade</translation> +<translation id="5460938382730614333">Märkpennan är aktiverad.</translation> <translation id="5465662442746197494">Behöver du hjälp?</translation> <translation id="547979256943495781">Hyllan till höger</translation> <translation id="5491186829646618080">Det finns firmware-uppdateringar</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Nattljus aktiveras automatiskt när solen går ned</translation> <translation id="5750765938512549687">Bluetooth är inaktiverat</translation> <translation id="5760866832697883462">Anslut <ph name="NAME" /></translation> +<translation id="5762420912707163638">Aktivera och inaktivera märkpennan. <ph name="STATE_TEXT" /> Använd styrplattan, pekskärmen eller e-pennan för att rita på skärmen.</translation> <translation id="576341972084747908">Den skadliga filen <ph name="FILENAME" /> laddas ned</translation> <translation id="5763928712329149804">Shelf Party är av.</translation> <translation id="576453121877257266">Nattljus är aktiverat.</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 33e128b..36e4965e 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Kipengele cha Manukuu Papo Hapo kimewashwa.</translation> <translation id="1720011244392820496">Washa kipengele cha Usawazishaji Wi-Fi</translation> <translation id="1736898441010944794">"<ph name="NAME" />" linaonekana kwenye vifaa vyenye Bluetooth.</translation> +<translation id="174102739345480129">Kitia alama kimezimwa.</translation> <translation id="1743570585616704562">Haikutambua alama ya kidole</translation> <translation id="1746730358044914197">Mbinu za kuingiza data zimewekwa na msimamizi wako.</translation> <translation id="1747827819627189109">Kibodi ya skrini imewashwa</translation> @@ -564,6 +565,7 @@ <translation id="4379531060876907730">Hizi ni zana zako za stylus</translation> <translation id="4389184120735010762">Umebofya mikato ya kibodi ya kikuzaji kilichoambatishwa. Ungependa kukiwasha?</translation> <translation id="439598569299422042">Umesitishwa, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Imeshindwa kuhifadhi kionyesha skrini</translation> <translation id="4405151984121254935">Aina ya kifaa ulichounganisha haiwezi kutumika</translation> <translation id="4406883609789734330">Manukuu Papo Hapo</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> kimezimwa.</translation> @@ -670,6 +672,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Sentensi inayofuata</translation> +<translation id="5016558321564993266">Geuza kitia alama. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Muda wa kutumia kifaa umeisha</translation> <translation id="5033299697334913360">Bofya popote ili unase skrini nzima</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> imeunganishwa kwenye simu mpya</translation> @@ -699,6 +702,7 @@ <translation id="5222676887888702881">Ondoka</translation> <translation id="5234764350956374838">Ondoa</translation> <translation id="523505283826916779">Mipangilio ya ufikiaji</translation> +<translation id="5245201184978705914">Imeshindwa kuzalisha manukuu</translation> <translation id="5253783950165989294">Imeunganishwa kwenye kifaa kiitwacho <ph name="DEVICE_NAME" />, chaji ya betri ni <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">Eneokazi la 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> inakuomba ushughulikie jambo fulani.</translation> @@ -733,6 +737,7 @@ <translation id="5433020815079095860">Vifaa vya kuingiza sauti</translation> <translation id="544691375626129091">Tayari watumiaji wanaopatikana wameongezwa kwenye kikao hiki.</translation> <translation id="54609108002486618">Imedhibitiwa</translation> +<translation id="5460938382730614333">Kitia alama kimewashwa.</translation> <translation id="5465662442746197494">Je, unahitaji usaidizi?</translation> <translation id="547979256943495781">Rafu iko upande wa kulia</translation> <translation id="5491186829646618080">Masasisho ya programu dhibiti yanapatikana</translation> @@ -774,6 +779,7 @@ <translation id="5745612484876805746">Kipengele cha Mwanga wa Usiku kitawaka kiotomatiki wakati wa machweo</translation> <translation id="5750765938512549687">Bluetooth imezimwa</translation> <translation id="5760866832697883462">Unganisha <ph name="NAME" /> yako</translation> +<translation id="5762420912707163638">Geuza kitia alama. <ph name="STATE_TEXT" /> Tumia padi ya kusogeza, skrini ya kugusa au stylus ili uchore kwenye skrini.</translation> <translation id="576341972084747908">Pakua <ph name="FILENAME" /> hatari</translation> <translation id="5763928712329149804">Hali ya Shelf Party imezimwa.</translation> <translation id="576453121877257266">Umewasha Mwanga wa Usiku.</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 6f34bdd..f77fcda 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">சமீபத்தில் திறக்கப்பட்டது</translation> <translation id="2841907151129139818">டேப்லெட் பயன்முறைக்கு மாற்றப்பட்டது</translation> <translation id="2844169650293029770">USB-C சாதனம் (இடது பக்கம் முன்னே இருக்கும் போர்ட்)</translation> +<translation id="2848120746144143659">முழுத்திரையை ஸ்கிரீன்ஷாட் எடுக்க Enter பட்டனை அழுத்தவும்</translation> <translation id="2849936225196189499">சிக்கலான</translation> <translation id="2860184359326882502">சிறப்பாகப் பொருந்துபவை</translation> <translation id="2865888419503095837">நெட்வொர்க் தகவல்</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">நெட்வொர்க் தகவல் எதுவும் இல்லை</translation> <translation id="385051799172605136">திரும்பு</translation> <translation id="385300504083504382">தொடக்கம்</translation> +<translation id="3861651314799684201">முழுத்திரையை ரெக்கார்டு செய்ய Enter பட்டனை அழுத்தவும்</translation> <translation id="3886872229787704059">இன்று திறக்கப்பட்டது</translation> <translation id="3891340733213178823">வெளியேற Ctrl+Shift+Q ஐ இருமுறை அழுத்தவும்.</translation> <translation id="3893630138897523026">ChromeVox (பேச்சுவடிவ கருத்து)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">செயல்திறனைத் தடமறிதல் இயக்கப்பட்டுள்ளது</translation> <translation id="5955304353782037793">ஆப்ஸ்</translation> <translation id="5958529069007801266">மேற்பார்வையிடப்படும் பயனர்</translation> +<translation id="5976112937189445008">சாளரத்தை ரெக்கார்டு செய்ய Enter பட்டனை அழுத்தவும்</translation> <translation id="5977415296283489383">ஹெட்ஃபோன்</translation> <translation id="5978382165065462689">தொலைநிலை உதவி மூலம் உங்கள் திரையின் கட்டுப்பாட்டைப் பகிர்கிறது.</translation> <translation id="5980301590375426705">விருந்தினரிலிருந்து வெளியேறவும்</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">'ஷெல்ஃப் பார்ட்டி' பயன்முறையை இயக்கும்/முடக்கும். <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">எழுத்து வாரியாக முன்செல்</translation> <translation id="8371991222807690464">கெஸ்ட் பயன்முறையில் சாதனத்தின் செயல்திறன் குறைக்கப்பட்டிருக்கலாம்</translation> +<translation id="8374601332003098278">பகுதியளவு திரையை ரெக்கார்டு செய்ய Enter பட்டனை அழுத்தவும்</translation> <translation id="8375916635258623388">இந்த <ph name="DEVICE_NAME" /> உம் உங்கள் ஃபோனும் தானாக இணைக்கப்படும்</translation> <translation id="8380784334203145311">இரவு வணக்கம்,</translation> <translation id="8382715499079447151">பார்ப்பதற்கான கட்டுப்பாடு</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">அறிவிப்பு அமைப்புகளைக் காண்பிக்கும். அறிவிப்புகள் இயக்கப்பட்டுள்ளன</translation> <translation id="8660331759611631213">71ன் வர்க்கமூலம்</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, சிக்னல் வலிமை: <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">பகுதியளவு ஸ்கிரீன்ஷாட் எடுக்க Enter பட்டனை அழுத்தவும்</translation> <translation id="8664753092453405566">நெட்வொர்க் பட்டியலைக் காண்பிக்கும். <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">உங்கள் சாதனைத்தை அமைக்க <ph name="NAME" /> ஐத் திறக்கவும்</translation> <translation id="8676770494376880701">குறைந்த சக்தியிலான சார்ஜர் இணைக்கப்பட்டுள்ளது</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">பேட்டரி: <ph name="PERCENTAGE" /> சதவீதம்.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google அசிஸ்டண்ட், இந்த மொழியை ஆதரிக்கவில்லை.</translation> +<translation id="8924458948354692166">சாளரத்தை ஸ்கிரீன்ஷாட் எடுக்க Enter பட்டனை அழுத்தவும்</translation> <translation id="8926951137623668982">ஷெல்ஃப் எப்போதும் மறைக்கப்படும்</translation> <translation id="8936501819958976551">முடக்கப்பட்டது</translation> <translation id="8938800817013097409">USB-C சாதனம் (பின்பக்கம் உள்ள வலது போர்ட்)</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index 24cc524..65204cb 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -255,7 +255,7 @@ <translation id="2484513351006226581">కీబోర్డ్ లేఅవుట్ను మార్చడానికి <ph name="KEYBOARD_SHORTCUT" />ని నొక్కండి.</translation> <translation id="2501920221385095727">స్టిక్కీ కీలు</translation> <translation id="2509468283778169019">CAPS LOCK ఆన్లో ఉంది</translation> -<translation id="2542089167727451762">మీ ప్రొఫైల్ చిత్రాన్ని నొక్కండి</translation> +<translation id="2542089167727451762">మీ ప్రొఫైల్ ఫోటోను నొక్కండి</translation> <translation id="255671100581129685">Google అసిస్టెంట్ పబ్లిక్ సెషన్లో అందుబాటులో లేదు.</translation> <translation id="256712445991462162">డాక్ చేసిన మాగ్నిఫైయర్</translation> <translation id="2570734079541893434">సెట్టింగ్లను మేనేజ్ చేయండి</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index 41a22fd..b0f36359 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">Canlı Altyazı açık.</translation> <translation id="1720011244392820496">Wi-Fi Senkronizasyonu aç</translation> <translation id="1736898441010944794">"<ph name="NAME" />", Bluetooth cihazlara görünür durumda.</translation> +<translation id="174102739345480129">İşaretçi kapalı.</translation> <translation id="1743570585616704562">Tanınmadı</translation> <translation id="1746730358044914197">Giriş yöntemleri, yöneticiniz tarafından yapılandırılır.</translation> <translation id="1747827819627189109">Dokunmatik klavye etkin</translation> @@ -303,6 +304,7 @@ <translation id="2834813915651407382">Yakın zamanda açıldı</translation> <translation id="2841907151129139818">Tablet moduna geçildi</translation> <translation id="2844169650293029770">USB-C cihaz (sol ön bağlantı noktası)</translation> +<translation id="2848120746144143659">Tam ekran görüntüsü almak için enter tuşuna basın</translation> <translation id="2849936225196189499">Önemli</translation> <translation id="2860184359326882502">En İyi Eşleşme</translation> <translation id="2865888419503095837">Ağ bilgisi</translation> @@ -481,6 +483,7 @@ <translation id="3846575436967432996">Hiçbir ağ bilgisi yok</translation> <translation id="385051799172605136">Geri</translation> <translation id="385300504083504382">Başlangıç</translation> +<translation id="3861651314799684201">Tam ekran kaydı için enter tuşuna basın</translation> <translation id="3886872229787704059">Bugün açıldı</translation> <translation id="3891340733213178823">Oturumu kapatmak için Ctrl+ÜstKrktr+Q tuşlarına iki defa basın.</translation> <translation id="3893630138897523026">ChromeVox (sesli geri bildirim)</translation> @@ -564,6 +567,7 @@ <translation id="4379531060876907730">Bunlar ekran kalemi araçlarınızdır</translation> <translation id="4389184120735010762">Yerleştirilmiş büyüteç klavye kısayoluna bastınız. Bu özelliği açmak istiyor musunuz?</translation> <translation id="439598569299422042">Duraklatıldı, <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">Ekran video kaydı kaydedilemiyor</translation> <translation id="4405151984121254935">Bağlı çevre birimi türü desteklenmiyor</translation> <translation id="4406883609789734330">Canlı Altyazı</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> özelliği kapalı.</translation> @@ -670,6 +674,7 @@ <ph name="NOTIFICATION_2" />, <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">Sonraki cümle</translation> +<translation id="5016558321564993266">İşaretçiyi açın/kapatın. <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">Süre doldu</translation> <translation id="5033299697334913360">Tam ekran görüntüsünü yakalamak için herhangi bir yeri tıklayın</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" />, yeni bir telefona bağlandı</translation> @@ -699,6 +704,7 @@ <translation id="5222676887888702881">Çıkış</translation> <translation id="5234764350956374838">Kapat</translation> <translation id="523505283826916779">Erişilebilirlik ayarları</translation> +<translation id="5245201184978705914">Transkript oluşturulamıyor</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> adlı cihaza bağlanıldı, pil %<ph name="BATTERY_PERCENTAGE" /></translation> <translation id="5260676007519551770">Çalışma Masası 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" />, ilgilenmenizi gerektiriyor.</translation> @@ -733,6 +739,7 @@ <translation id="5433020815079095860">Ses girişi</translation> <translation id="544691375626129091">Mevcut tüm kullanıcılar zaten bu oturuma eklenmiş.</translation> <translation id="54609108002486618">Yönetilen</translation> +<translation id="5460938382730614333">İşaretçi açık.</translation> <translation id="5465662442746197494">Yardıma mı ihtiyacınız var?</translation> <translation id="547979256943495781">Raf, ekranın sağ tarafında</translation> <translation id="5491186829646618080">Donanım yazılımı güncellemeleri mevcut</translation> @@ -774,6 +781,7 @@ <translation id="5745612484876805746">Gece Işığı güneş battığında otomatik olarak açılır</translation> <translation id="5750765938512549687">Bluetooth kapalı</translation> <translation id="5760866832697883462"><ph name="NAME" /> cihazınızı bağlayın</translation> +<translation id="5762420912707163638">İşaretçiyi açın/kapatın. <ph name="STATE_TEXT" /> Ekranda çizim yapmak için dokunmatik yüzeyi, dokunmatik ekranı veya ekran kalemini kullanın.</translation> <translation id="576341972084747908">Tehlikeli <ph name="FILENAME" /> dosyasını indir</translation> <translation id="5763928712329149804">Shelf Party kapalı.</translation> <translation id="576453121877257266">Gece Işığı açık.</translation> @@ -807,6 +815,7 @@ <translation id="595202126637698455">Performans izleme etkin</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Denetlenen kullanıcı</translation> +<translation id="5976112937189445008">Pencereyi kaydetmek için enter tuşuna basın</translation> <translation id="5977415296283489383">Kulaklık</translation> <translation id="5978382165065462689">Ekranınızın kontrolü Uzaktan Yardım kullanılarak paylaşılıyor.</translation> <translation id="5980301590375426705">Misafir oturumundan çık</translation> @@ -1193,6 +1202,7 @@ <translation id="8364673525741149932">Shelf Party'yi aç/kapat. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Harf bazında ilerle</translation> <translation id="8371991222807690464">Çevre biriminin performansı, Misafir modunda sınırlı olabilir</translation> +<translation id="8374601332003098278">Kısmi ekran kaydı için enter tuşuna basın</translation> <translation id="8375916635258623388">Bu <ph name="DEVICE_NAME" /> ve telefonunuz otomatik olarak bağlanacaktır</translation> <translation id="8380784334203145311">İyi geceler,</translation> <translation id="8382715499079447151">Görüntüleme koruması</translation> @@ -1245,6 +1255,7 @@ <translation id="8653151467777939995">Bildirim ayarlarını göster. Bildirimler açık</translation> <translation id="8660331759611631213">71'in karekökü</translation> <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, <ph name="SIGNAL_STRENGTH" /> Sinyal Gücü</translation> +<translation id="8664282223139913403">Kısmi ekran görüntüsü almak için enter tuşuna basın</translation> <translation id="8664753092453405566">Ağ listesini göster. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Cihazınızı kurmak için <ph name="NAME" /> uygulamasını açın</translation> <translation id="8676770494376880701">Düşük güçlü şarj cihazı bağlandı</translation> @@ -1286,6 +1297,7 @@ <translation id="8909138438987180327">Pil yüzde <ph name="PERCENTAGE" /> dolu.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google Asistan bu dili konuşmuyor.</translation> +<translation id="8924458948354692166">Pencere ekran görüntüsü almak için enter tuşuna basın</translation> <translation id="8926951137623668982">Raf her zaman gizleniyor</translation> <translation id="8936501819958976551">devre dışı</translation> <translation id="8938800817013097409">USB-C cihaz (arkadaki sağ bağlantı noktası)</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index b08aacc..7ddc6d5 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -136,6 +136,7 @@ <translation id="1719094688023114093">لائیو کیپشن آن ہے۔</translation> <translation id="1720011244392820496">Wi-Fi سِنک آن کریں</translation> <translation id="1736898441010944794">"<ph name="NAME" />" بلوٹوتھ آلات کے لیے مرئی ہے۔</translation> +<translation id="174102739345480129">مارکر آف ہے۔</translation> <translation id="1743570585616704562">تسلیم شدہ نہیں ہے</translation> <translation id="1746730358044914197">ان پٹ کے طریقے آپ کے منتظم کے ذریعے کنفیگر کئے جاتے ہیں۔</translation> <translation id="1747827819627189109">آن اسکرین کی بورڈ فعال ہے</translation> @@ -566,6 +567,7 @@ <translation id="4379531060876907730">یہ آپ کے اسٹائلس ٹولز ہیں</translation> <translation id="4389184120735010762">آپ نے ڈاک کردہ مکبّر کیلئے کی بورڈ شارٹ کٹ دبایا ہے۔ کیا آپ اسے آن کرنا چاہتے ہیں؟</translation> <translation id="439598569299422042">موقوف ہو گیا، <ph name="SIZE_INFO" /></translation> +<translation id="440113666232554208">اسکرین کاسٹ کو محفوظ نہیں کیا جا سکتا</translation> <translation id="4405151984121254935">منسلک پیریفرل کی قسم تعاون یافتہ نہیں ہے</translation> <translation id="4406883609789734330">لائیو کیپشن</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> آف ہے۔</translation> @@ -672,6 +674,7 @@ <ph name="NOTIFICATION_2" />، <ph name="NUM_OTHER_NOTIFICATION" /></translation> <translation id="5003993274120026347">اگلا جملہ</translation> +<translation id="5016558321564993266">مارکر ٹوگل کریں۔ <ph name="STATE_TEXT" /></translation> <translation id="5030687792513154421">وقت ختم ہو گیا</translation> <translation id="5033299697334913360">فُل اسکرین کیپچر کرنے کیلئے کہیں بھی کلک کریں</translation> <translation id="5035236842988137213"><ph name="DEVICE_NAME" /> نئے فون سے منسلک ہو گیا</translation> @@ -701,6 +704,7 @@ <translation id="5222676887888702881">سائن آؤٹ</translation> <translation id="5234764350956374838">برخاست کریں</translation> <translation id="523505283826916779">ایکسیسبیلٹی کی ترتیبات</translation> +<translation id="5245201184978705914">ٹرانسکرپٹ کو تیار نہیں کیا جا سکتا</translation> <translation id="5253783950165989294"><ph name="DEVICE_NAME" /> نام والے آلے سے منسلک، <ph name="BATTERY_PERCENTAGE" /> فیصد بیٹری ہے</translation> <translation id="5260676007519551770">ڈیسک 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> کو آپ کی توجہ درکار ہے۔</translation> @@ -735,6 +739,7 @@ <translation id="5433020815079095860">آڈیو ان پٹ</translation> <translation id="544691375626129091">سبھی دستیاب صارفین کو پہلے ہی اس سیشن میں شامل کر دیا گیا ہے۔</translation> <translation id="54609108002486618">نظم کردہ</translation> +<translation id="5460938382730614333">مارکر آن ہے۔</translation> <translation id="5465662442746197494">مدد درکار ہے؟</translation> <translation id="547979256943495781">شیلف دائیں ہے</translation> <translation id="5491186829646618080">فرم ویئر اپ ڈیٹس دستیاب ہیں</translation> @@ -776,6 +781,7 @@ <translation id="5745612484876805746">غروب آفتاب کے وقت نائٹ لائٹ خودکار طور پر آن ہو جاتی ہے</translation> <translation id="5750765938512549687">بلوٹوتھ آف ہے</translation> <translation id="5760866832697883462">اپنا <ph name="NAME" /> منسلک کریں</translation> +<translation id="5762420912707163638">مارکر ٹوگل کریں۔ <ph name="STATE_TEXT" /> اسکرین پر ڈرا کرنے کے لیے ٹریک پیڈ، ٹچ اسکرین یا اسٹائلس کا استعمال کریں۔</translation> <translation id="576341972084747908">خطرناک <ph name="FILENAME" /> ڈاؤن لوڈ کریں</translation> <translation id="5763928712329149804">شیلف پارٹی آف ہے۔</translation> <translation id="576453121877257266">نائٹ لائٹ آن ہے۔</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 44bafd75..a55d9eb 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Yaqinda ochilgan</translation> <translation id="2841907151129139818">Planshet rejimiga almashildi</translation> <translation id="2844169650293029770">USB-C qurilma (chap tomondagi old port)</translation> +<translation id="2848120746144143659">Butun ekranni rasmga olish uchun Enter tugmasini bosing</translation> <translation id="2849936225196189499">Jiddiy</translation> <translation id="2860184359326882502">Eng mosi</translation> <translation id="2865888419503095837">Tarmoq ma’lumoti</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Tarmoqqa oid ma’lumot mavjud emas</translation> <translation id="385051799172605136">Orqaga</translation> <translation id="385300504083504382">Boshi</translation> +<translation id="3861651314799684201">Butun ekranni yozib olish uchun Enter tugmasini bosing</translation> <translation id="3886872229787704059">Bugun ochilgan</translation> <translation id="3891340733213178823">Chiqish uchun “Control+Shift+Q” tugmalarini ikki marta bosing.</translation> <translation id="3893630138897523026">ChromeVox (ovozli ta’rif)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Unumdorlik kuzatuvi yoniq</translation> <translation id="5955304353782037793">app</translation> <translation id="5958529069007801266">Boshqariladigan profil</translation> +<translation id="5976112937189445008">Oynani yozib olish uchun Enter tugmasini bosing</translation> <translation id="5977415296283489383">Quloqchin</translation> <translation id="5978382165065462689">Ekraningiz boshqaruvini masofaviy yordamchi orqali ulashish.</translation> <translation id="5980301590375426705">Chiqish (mehmon)</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Shelf Party tugmasi. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Bitta harf oldinga</translation> <translation id="8371991222807690464">Mehmon rejimida tashqi qurilmalar samaradorligi cheklanishi mumkin</translation> +<translation id="8374601332003098278">Ekranning bir qismini yozib olish uchun Enter tugmasini bosing</translation> <translation id="8375916635258623388">Bu <ph name="DEVICE_NAME" /> telefonga avtomatik ulanadi</translation> <translation id="8380784334203145311">Xayrli tun,</translation> <translation id="8382715499079447151">Xavfsiz koʻrish</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Bildirishnoma sozlamalarini ochish. Bildirishnomalar yoniq</translation> <translation id="8660331759611631213">71 sonining kvadrat ildizi</translation> <translation id="8663756353922886599">Himoya: <ph name="CONNECTION_STATUS" />, Signal darajasi: <ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Qismni rasmga olish uchun Enter tugmasini bosing</translation> <translation id="8664753092453405566">Tarmoq ro‘yxatini ochish. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Qurilmani sozlash uchun <ph name="NAME" /> ilovasini oching</translation> <translation id="8676770494376880701">Kam quvvatli zaryadlash vositasi</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Batareya quvvati: <ph name="PERCENTAGE" />%.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Google Assistent hozircha bu tilda gapirmaydi.</translation> +<translation id="8924458948354692166">Oynani rasmga olish uchun Enter tugmasini bosing</translation> <translation id="8926951137623668982">Javon doim berk</translation> <translation id="8936501819958976551">faolsizlantirildi</translation> <translation id="8938800817013097409">USB-C qurilma (orqa tomondagi o‘ng port)</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index fe2366ad..b2a5ef5 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -136,7 +136,7 @@ <translation id="1719094688023114093">「即時字幕」功能已開啟。</translation> <translation id="1720011244392820496">開啟 Wi-Fi Sync</translation> <translation id="1736898441010944794">「<ph name="NAME" />」可供藍牙裝置搜尋。</translation> -<translation id="174102739345480129">標記功能已關閉。</translation> +<translation id="174102739345480129">標記已關閉。</translation> <translation id="1743570585616704562">無法識別</translation> <translation id="1746730358044914197">您的管理員已設定輸入方法。</translation> <translation id="1747827819627189109">屏幕鍵盤已啟用</translation> @@ -565,7 +565,7 @@ <translation id="4379531060876907730">這是您的觸控筆工具</translation> <translation id="4389184120735010762">您已按下固定放大鏡的鍵盤快速鍵。確定要旋轉螢幕嗎?</translation> <translation id="439598569299422042">已暫停,下載進度:<ph name="SIZE_INFO" /></translation> -<translation id="440113666232554208">無法儲存螢幕側錄內容</translation> +<translation id="440113666232554208">無法儲存螢幕錄影</translation> <translation id="4405151984121254935">不支援已連接的周邊裝置類型</translation> <translation id="4406883609789734330">即時字幕</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" />功能已關閉。</translation> @@ -701,7 +701,7 @@ <translation id="5222676887888702881">登出</translation> <translation id="5234764350956374838">關閉</translation> <translation id="523505283826916779">協助工具設定</translation> -<translation id="5245201184978705914">無法產生轉錄稿</translation> +<translation id="5245201184978705914">無法產生轉錄文字</translation> <translation id="5253783950165989294">已連接名為「<ph name="DEVICE_NAME" />」的裝置,電量為 <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="5260676007519551770">桌面 4</translation> <translation id="5283099933536931082">「<ph name="APP_ITEM_TITLE" />」有新嘅要求需要你處理。</translation> @@ -736,7 +736,7 @@ <translation id="5433020815079095860">音訊輸入</translation> <translation id="544691375626129091">現有使用者已全部加入這個工作階段。</translation> <translation id="54609108002486618">受管理</translation> -<translation id="5460938382730614333">標記功能已開啟。</translation> +<translation id="5460938382730614333">標記已開啟。</translation> <translation id="5465662442746197494">需要協助嗎?</translation> <translation id="547979256943495781">捷徑列喺螢幕右邊</translation> <translation id="5491186829646618080">有可用的韌體更新</translation> @@ -778,7 +778,7 @@ <translation id="5745612484876805746">「夜燈模式」會在日落時自動開啟</translation> <translation id="5750765938512549687">藍牙已關閉</translation> <translation id="5760866832697883462">連接 <ph name="NAME" /></translation> -<translation id="5762420912707163638">切換標記。<ph name="STATE_TEXT" /> 你可以使用觸控板、觸控螢幕或觸控筆在螢幕上繪圖。</translation> +<translation id="5762420912707163638">轉換標記。<ph name="STATE_TEXT" />你可以用觸控板、觸控螢幕或者觸控筆喺螢幕上面繪圖。</translation> <translation id="576341972084747908">下載危險檔案 <ph name="FILENAME" /></translation> <translation id="5763928712329149804">「捷徑列群組」已關閉。</translation> <translation id="576453121877257266">「夜燈模式」已開啟。</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 4aaa4fdc0..b25efe77 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -304,6 +304,7 @@ <translation id="2834813915651407382">Kuvulwe kamuva nje</translation> <translation id="2841907151129139818">Ishintshele kumodi yethebulethi</translation> <translation id="2844169650293029770">Idivayisi ye-USB-C (imbobo ephambili yohlangothi lwesinxele)</translation> +<translation id="2848120746144143659">Cindezela u-enter ukuze uthathe isithombe-skrini sesikrini esigcwele</translation> <translation id="2849936225196189499">Bucayi</translation> <translation id="2860184359326882502">Okufana kahle</translation> <translation id="2865888419503095837">Ulwazi lwenethiwekhi</translation> @@ -482,6 +483,7 @@ <translation id="3846575436967432996">Alukho ulwazi lwenethiwekhi olutholakalayo</translation> <translation id="385051799172605136">Emuva</translation> <translation id="385300504083504382">Ekuqaleni</translation> +<translation id="3861651314799684201">Cindezela u-enter ukuze urekhode isikrini esigcwele</translation> <translation id="3886872229787704059">Kuvulwe namuhla</translation> <translation id="3891340733213178823">Cindezela u-Ctrl+Shift+Q kabili ukuze uphume ngemvume.</translation> <translation id="3893630138897523026">I-ChromeVox (impendulo ekhulunywayo)</translation> @@ -813,6 +815,7 @@ <translation id="595202126637698455">Ukulandelela ukusebenza kunikwe amandla</translation> <translation id="5955304353782037793">uhlelo lokusebenza</translation> <translation id="5958529069007801266">Umsebenzisi ogadiwe</translation> +<translation id="5976112937189445008">Cindezela u-enter ukuze urekhode iwindi</translation> <translation id="5977415296283489383">Amahedfoni</translation> <translation id="5978382165065462689">Ukulawula ukwabelana kwesikrini sakho nge-Remote Assistance.</translation> <translation id="5980301590375426705">Phuma kusihambeli</translation> @@ -1199,6 +1202,7 @@ <translation id="8364673525741149932">Guqula Ishelufu Leqembu. <ph name="STATE_TEXT" /></translation> <translation id="8371779926711439835">Phambili ngohlamvu</translation> <translation id="8371991222807690464">Ukusebenza komngcele kungakhawulelwa Kumodi Yesivakashi</translation> +<translation id="8374601332003098278">Cindezela u-enter ukuze urekhode ingxenye yesikrini</translation> <translation id="8375916635258623388">Le <ph name="DEVICE_NAME" /> kanye nefoni yakho zizoxhumeka ngokuzenzakalela</translation> <translation id="8380784334203145311">Ulale kahle,</translation> <translation id="8382715499079447151">Isivikelo sokubuka</translation> @@ -1251,6 +1255,7 @@ <translation id="8653151467777939995">Bonisa izilungiselelo zesaziso. Izaziso zivuliwe</translation> <translation id="8660331759611631213">I-Square root sokungu-71</translation> <translation id="8663756353922886599">I-<ph name="CONNECTION_STATUS" />, amandla esignali angu-<ph name="SIGNAL_STRENGTH" /></translation> +<translation id="8664282223139913403">Cindezela u-enter ukuze uthathe ingxenye yesithombe-skrini</translation> <translation id="8664753092453405566">Bonisa uhlu lwenethiwekhi. <ph name="STATE_TEXT" /></translation> <translation id="8666856788528804727">Vula i-<ph name="NAME" /> ukuze usethe idivayisi yakho</translation> <translation id="8676770494376880701">Ishaja yamandla amancane ixhunyiwe</translation> @@ -1292,6 +1297,7 @@ <translation id="8909138438987180327">Ibhethri ku-<ph name="PERCENTAGE" /> amaphesenti.</translation> <translation id="8921554779039049422">H+</translation> <translation id="8921624153894383499">Umsizi we-Google akakhulumi lolu limi.</translation> +<translation id="8924458948354692166">Cindezela u-enter ukuze uthathe isithombe-skrini sewindi</translation> <translation id="8926951137623668982">Ishelufu lihlala lifihliwe</translation> <translation id="8936501819958976551">kwenziwe kwangasebenzi</translation> <translation id="8938800817013097409">Idivayisi ye-USB-C (imbobo engakwesokudla ngemuva)</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb index 9f414db..53645c7d 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">ሰዓት ቆጣሪ ጠፍቷል</translation> <translation id="3448774564454087943">ቪዲዮ በጣም አጭር ስለሆነ አልተቀመጠም</translation> <translation id="346539236881580388">ዳግም አንሳ</translation> +<translation id="3511295087439225876">የድምፀ-ከል አዝራር በርቷል</translation> <translation id="3517926952904427380">የቁም ፎቶን ማንሳት አልተቻለም</translation> <translation id="3566302376254083266">ወደ ላይ-ግራ አቅጣጫ በመንቀሳቀስ ላይ</translation> <translation id="3569311554794739032">እርግጠኛ ነዎት <ph name="FILE" />ን ማስወገድ ይፈልጋሉ?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">አረጋግጥ</translation> <translation id="8145038249676204903">ፎቶ ለማንሳት ይቀይሩ</translation> <translation id="8167081290930651932">እንደ ፎቶ አስቀምጥ</translation> +<translation id="8236532224592646488">የድምፀ-ከል አዝራር ጠፍቷል</translation> <translation id="8239780215768881278">የቪዲዮ ቅፅበተ ፎቶን ያንሱ</translation> <translation id="8261506727792406068">ሰርዝ</translation> <translation id="8425673304802773841">ወደ ታች አጋድል</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb index 40ebdbe..64948ae 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ar.xtb
@@ -119,6 +119,7 @@ إذا كان تعليقك بخصوص جودة صورة أو فيديو، يُرجى إرفاق نموذج لصورة أو فيديو ووصف المشكلة. على سبيل المثال، الصورة داكنة للغاية أو لا يتم التركيز على الهدف.</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> ميغابكسل</translation> <translation id="6527303717912515753">مشاركة</translation> +<translation id="6617916774429601017">عرض كل درجات الدقة</translation> <translation id="6631515515009660915">المرآة غير مفعلّة</translation> <translation id="6652737148136672975">حرِّك موضع الزاوية باستخدام مفاتيح الأسهم.</translation> <translation id="667999046851023355">مستند</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb index febd628..cbb588b 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb
@@ -117,6 +117,7 @@ Rəyiniz şəkil və ya video keyfiyyəti ilə bağlıdırsa, nümunə foto və ya video əlavə edərək problemi təsvir edin. (Məsələn, foto çox qaranlıqdır və ya subyekt fokusda deyil.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> meqa piksel</translation> <translation id="6527303717912515753">Paylaşın</translation> +<translation id="6617916774429601017">Bütün ayırdetmə dəqiqliklərini göstərin</translation> <translation id="6631515515009660915">Əksetmə deaktivdir</translation> <translation id="6652737148136672975">Ox düymələri ilə küncləri hərəkət etdirin</translation> <translation id="667999046851023355">Sənəd</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb index ceafeb9d..a7f2878 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Tajmer je isključen</translation> <translation id="3448774564454087943">Videozapis nije sačuvan jer je prekratak</translation> <translation id="346539236881580388">Ponovo snimi</translation> +<translation id="3511295087439225876">Gumb za isključivanje zvuka je uključen</translation> <translation id="3517926952904427380">Snimanje uspravne fotografije nije uspjelo</translation> <translation id="3566302376254083266">Pomjeranje prema gornjem lijevom uglu</translation> <translation id="3569311554794739032">Želite li zaista ukloniti fajl <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Potvrdi</translation> <translation id="8145038249676204903">Prebaci na snimanje fotografija</translation> <translation id="8167081290930651932">Sačuvaj kao fotografiju</translation> +<translation id="8236532224592646488">Gumb za isključivanje zvuka je isključen</translation> <translation id="8239780215768881278">Snimi pregled videozapisa</translation> <translation id="8261506727792406068">Izbriši</translation> <translation id="8425673304802773841">Nagni dolje</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb index 2fd3908..e43e1f1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
@@ -118,6 +118,7 @@ Si els teus suggeriments fan referència a la qualitat d'imatge o de vídeo, adjunta una foto o un vídeo de mostra i descriu quin problema hi ha. Per exemple, la foto és massa fosca o el motiu central no està enfocat.</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapíxels</translation> <translation id="6527303717912515753">Comparteix</translation> +<translation id="6617916774429601017">Mostra totes les resolucions</translation> <translation id="6631515515009660915">Mirall desactivat</translation> <translation id="6652737148136672975">Mou la posició de l'extrem amb les tecles de fletxa</translation> <translation id="667999046851023355">Document</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb index c89a79e4..d50aac9 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Mae'r amserydd wedi'i ddiffodd</translation> <translation id="3448774564454087943">Nid yw'r fideo wedi'i gadw gan ei fod yn rhy fyr</translation> <translation id="346539236881580388">Tynnu'r llun eto</translation> +<translation id="3511295087439225876">Botwm distewi wedi'i droi ymlaen</translation> <translation id="3517926952904427380">Ni ellir tynnu llun portread</translation> <translation id="3566302376254083266">Yn symud i'r cyfeiriad chwith uchaf</translation> <translation id="3569311554794739032">Ydych chi wir eisiau tynnu <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Cadarnhau</translation> <translation id="8145038249676204903">Newid i dynnu llun</translation> <translation id="8167081290930651932">Cadw fel Llun</translation> +<translation id="8236532224592646488">Botwm distewi wedi'i ddiffodd</translation> <translation id="8239780215768881278">Tynnu llun o'r fideo</translation> <translation id="8261506727792406068">Dileu</translation> <translation id="8425673304802773841">Gogwyddo i lawr</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb index 7231785..61bacb1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
@@ -119,6 +119,7 @@ Hvis din feedback omhandler billed- eller videokvalitet, bedes du vedhæfte et billede eller en video af problemet og beskrive, hvad der er galt (f.eks. billedet er for mørkt, eller motivet er ikke i fokus).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapixels</translation> <translation id="6527303717912515753">Del</translation> +<translation id="6617916774429601017">Vis alle opløsninger</translation> <translation id="6631515515009660915">Slå spejl fra</translation> <translation id="6652737148136672975">Flyt hjørnets placering ved hjælp af piletasterne</translation> <translation id="667999046851023355">Dokument</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb index ccf5999f..619374e 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Timer deaktivieren</translation> <translation id="3448774564454087943">Das Video ist zu kurz und wird nicht gespeichert</translation> <translation id="346539236881580388">Neu aufnehmen</translation> +<translation id="3511295087439225876">Schaltfläche „Stummschalten“ aktiviert</translation> <translation id="3517926952904427380">Es konnte kein Foto im Hochformat aufgenommen werden</translation> <translation id="3566302376254083266">Wird nach oben links verschoben</translation> <translation id="3569311554794739032">Möchtest du "<ph name="FILE" />" wirklich entfernen?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Bestätigen</translation> <translation id="8145038249676204903">Zu Fotomodus wechseln</translation> <translation id="8167081290930651932">Als Foto speichern</translation> +<translation id="8236532224592646488">Schaltfläche „Stummschalten“ deaktiviert</translation> <translation id="8239780215768881278">Video-Momentaufnahme erstellen</translation> <translation id="8261506727792406068">Löschen</translation> <translation id="8425673304802773841">Nach unten neigen</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb index c6811b80..c536a43c 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Χρονόμετρο ανενεργό</translation> <translation id="3448774564454087943">Το βίντεο δεν αποθηκεύτηκε επειδή είναι πολύ σύντομο</translation> <translation id="346539236881580388">Νέα λήψη</translation> +<translation id="3511295087439225876">Το κουμπί σίγασης είναι ενεργοποιημένο</translation> <translation id="3517926952904427380">Δεν είναι δυνατή η λήψη φωτογραφίας πορτραίτου.</translation> <translation id="3566302376254083266">Μετακινείται με κατεύθυνση προς τα επάνω και αριστερά</translation> <translation id="3569311554794739032">Είστε βέβαιοι ότι θέλετε να καταργήσετε το αρχείο <ph name="FILE" />;</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Επιβεβαίωση</translation> <translation id="8145038249676204903">Μετάβαση στη λειτουργία λήψης φωτογραφίας</translation> <translation id="8167081290930651932">Αποθήκευση ως φωτογραφίας</translation> +<translation id="8236532224592646488">Το κουμπί σίγασης είναι απενεργοποιημένο</translation> <translation id="8239780215768881278">Λήψη στιγμιότυπου βίντεο</translation> <translation id="8261506727792406068">Διαγραφή</translation> <translation id="8425673304802773841">Κλίση προς τα κάτω</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb index a46d8644..35a6533 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Video settings</translation> <translation id="2144806332417375165">Custom video parameters</translation> <translation id="2175927920773552910">QR code</translation> +<translation id="2244252133441425811">Enable video FPS picker</translation> <translation id="2271433936731426666">Enable full-sized video snapshot</translation> <translation id="229579744168541441">Export to disk</translation> <translation id="2320741269052147773">Pan left</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb index 42b0909..07c6b187 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_es-419.xtb
@@ -118,6 +118,7 @@ Si tus comentarios están relacionados con la calidad de imagen o video, adjunta una foto o video de muestra y describe el problema (p. ej., la foto sale demasiado oscura o fuera de foco).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" /> × <ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapíxel</translation> <translation id="6527303717912515753">Compartir</translation> +<translation id="6617916774429601017">Mostrar todas las resoluciones</translation> <translation id="6631515515009660915">Desactivar el modo espejo</translation> <translation id="6652737148136672975">Mueve la posición de las esquinas con las teclas de flechas</translation> <translation id="667999046851023355">Documento</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb index 60c3ba1..258e369 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Taimer on välja lülitatud</translation> <translation id="3448774564454087943">Videot ei salvestatud, sest see on liiga lühike</translation> <translation id="346539236881580388">Tee uuesti</translation> +<translation id="3511295087439225876">Vaigistuse nupp on sisse lülitatud</translation> <translation id="3517926952904427380">Vertikaalpaigutuses fotot ei saa jäädvustada</translation> <translation id="3566302376254083266">Liigub vasakule üles</translation> <translation id="3569311554794739032">Kas soovite faili <ph name="FILE" /> kindlasti eemaldada?</translation> @@ -118,6 +119,7 @@ Kui teie tagasiside on seotud pildi- või videokvaliteediga, lisage manusena näidisfoto või -video ja kirjeldage, mis on valesti. (Näiteks foto on liiga tume või objekt pole teravustatud.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" /> × <ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapikslit</translation> <translation id="6527303717912515753">Jaga</translation> +<translation id="6617916774429601017">Kuva kõik eraldusvõimed</translation> <translation id="6631515515009660915">Peegeldamine on välja lülitatud</translation> <translation id="6652737148136672975">Nurga asendi teisaldamine nooleklahvidega</translation> <translation id="667999046851023355">Dokument</translation> @@ -151,6 +153,7 @@ <translation id="8131740175452115882">Kinnita</translation> <translation id="8145038249676204903">Vaheta foto jäädvustamise režiimile</translation> <translation id="8167081290930651932">Salvesta fotona</translation> +<translation id="8236532224592646488">Vaigistuse nupp on välja lülitatud</translation> <translation id="8239780215768881278">Jäädvusta video hetktõmmis</translation> <translation id="8261506727792406068">Kustuta</translation> <translation id="8425673304802773841">Kalluta alla</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb index 586c25a..dd5af6d 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">زمانسنج خاموش</translation> <translation id="3448774564454087943">ویدیو ذخیره نمیشود چون خیلی کوتاه است</translation> <translation id="346539236881580388">عکس گرفتن مجدد</translation> +<translation id="3511295087439225876">دکمه صامت کردن روشن است</translation> <translation id="3517926952904427380">عکس عمودی ممکن نیست</translation> <translation id="3566302376254083266">درحال انتقال بهسمت چپ بالا</translation> <translation id="3569311554794739032">واقعاً میخواهید <ph name="FILE" /> را بردارید؟</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">تأیید</translation> <translation id="8145038249676204903">رفتن به حالت عکسبرداری</translation> <translation id="8167081290930651932">ذخیره بهعنوان عکس</translation> +<translation id="8236532224592646488">دکمه صامت کردن خاموش است</translation> <translation id="8239780215768881278">گرفتن عکس آنی ویدیو</translation> <translation id="8261506727792406068">حذف</translation> <translation id="8425673304802773841">پایین کشیدن</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb index 8c62c3d..80a7de9 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb
@@ -118,6 +118,7 @@ Jos palautteesi koskee kuvan tai videon laatua, liitä mukaan esimerkkikuva tai ‑video ja kuvaile ongelmaa (esim. kuva on liian tumma, tai sitä ei ole tarkennettu kohteeseen).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapikseliä</translation> <translation id="6527303717912515753">Jaa</translation> +<translation id="6617916774429601017">Näytä kaikki resoluutiot</translation> <translation id="6631515515009660915">Peili pois päältä</translation> <translation id="6652737148136672975">Siirrä kulmaa nuolinäppäimillä</translation> <translation id="667999046851023355">Dokumentti</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb index 6930104e2..9efa330 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Naka-off ang timer</translation> <translation id="3448774564454087943">Hindi na-save ang video dahil masyado itong maikli</translation> <translation id="346539236881580388">Kunan ulit</translation> +<translation id="3511295087439225876">Naka-on ang mute button</translation> <translation id="3517926952904427380">Hindi makakuha ng portrait na larawan</translation> <translation id="3566302376254083266">Gumagalaw pakaliwa at pataas</translation> <translation id="3569311554794739032">Gusto mo ba talagang alisin ang <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Kumpirmahin</translation> <translation id="8145038249676204903">Lumipat sa pagkuha ng larawan</translation> <translation id="8167081290930651932">I-save bilang Larawan</translation> +<translation id="8236532224592646488">Naka-off ang mute button</translation> <translation id="8239780215768881278">Kumuha ng video snapshot</translation> <translation id="8261506727792406068">I-delete</translation> <translation id="8425673304802773841">I-tilt pababa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb index 22ea389..97e1cf8 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr-CA.xtb
@@ -118,6 +118,7 @@ Si vos commentaires portaient sur la qualité de l'image ou de la vidéo, veuillez joindre un échantillon de photo ou de vidéo et décrire la situation. (Par exemple, la photo est trop sombre ou la mise au point du sujet est floue.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> à <ph name="WIDTH" /> x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> mégapixels</translation> <translation id="6527303717912515753">Partager</translation> +<translation id="6617916774429601017">Afficher toutes les résolutions</translation> <translation id="6631515515009660915">Miroir désactivé</translation> <translation id="6652737148136672975">Déplacez la position du coin au moyen des touches fléchées</translation> <translation id="667999046851023355">Document</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb index 86d7621..5b7f16a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fr.xtb
@@ -118,6 +118,7 @@ S'ils concernent la qualité de l'image ou de la vidéo, veuillez joindre un exemple de photo ou de vidéo et décrire le problème. (Par exemple, la photo est trop sombre ou le sujet n'est pas net.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" /> × <ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> mégapixels</translation> <translation id="6527303717912515753">Partager</translation> +<translation id="6617916774429601017">Afficher toutes les résolutions</translation> <translation id="6631515515009660915">Miroir désactivé</translation> <translation id="6652737148136672975">Déplacer les angles avec les touches fléchées</translation> <translation id="667999046851023355">Document</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb index e177694..ccb88fa 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_gl.xtb
@@ -118,6 +118,7 @@ Se está relacionado coa calidade da imaxe ou do vídeo, anexa unha foto ou un vídeo de mostra e indica cal é o problema (por exemplo, a foto está demasiado escura ou desenfocada).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapíxeles</translation> <translation id="6527303717912515753">Compartir</translation> +<translation id="6617916774429601017">Mostrar todas as resolucións</translation> <translation id="6631515515009660915">Espello desactivado</translation> <translation id="6652737148136672975">Move a posición da esquina coas teclas das frechas</translation> <translation id="667999046851023355">Documento</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb index f9e35ae..97986f5 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">टाइमर बंद करें</translation> <translation id="3448774564454087943">वीडियो बहुत छोटा होने की वजह से सेव नहीं किया गया है</translation> <translation id="346539236881580388">फिर से लें</translation> +<translation id="3511295087439225876">'म्यूट करें' बटन चालू कर दिया गया है</translation> <translation id="3517926952904427380">पोर्ट्रेट फ़ोटो नहीं ली जा सकी</translation> <translation id="3566302376254083266">सबसे ऊपर बाईं ओर जा रहा है</translation> <translation id="3569311554794739032">क्या आप वाकई <ph name="FILE" /> को हटाना चाहते हैं?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">पुष्टि करें</translation> <translation id="8145038249676204903">फ़ोटो खींचने वाले मोड पर जाएं</translation> <translation id="8167081290930651932">फ़ोटो फ़ॉर्मैट में सेव करें</translation> +<translation id="8236532224592646488">'म्यूट करें' बटन बंद कर दिया गया है</translation> <translation id="8239780215768881278">वीडियो के स्नैपशॉट लें</translation> <translation id="8261506727792406068">मिटाएं</translation> <translation id="8425673304802773841">नीचे झुकाएं</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb index f340629..3ed8e36 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hr.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Isključi odbrojavanje</translation> <translation id="3448774564454087943">Videozapis nije spremljen jer je prekratak</translation> <translation id="346539236881580388">Snimi ponovo</translation> +<translation id="3511295087439225876">Gumb za isključivanje zvuka je uključen</translation> <translation id="3517926952904427380">Snimanje portretne fotografije nije uspjelo</translation> <translation id="3566302376254083266">Kreće se prema gore ulijevo</translation> <translation id="3569311554794739032">Želite li doista ukloniti datoteku <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Potvrdi</translation> <translation id="8145038249676204903">Prijeđi na snimanje fotografije</translation> <translation id="8167081290930651932">Spremi kao fotografiju</translation> +<translation id="8236532224592646488">Gumb za isključivanje zvuka je isključen</translation> <translation id="8239780215768881278">Napravite videosnimku</translation> <translation id="8261506727792406068">Izbriši</translation> <translation id="8425673304802773841">Nagni dolje</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb index 229545e..d6bb5f8 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Videobeállítások</translation> <translation id="2144806332417375165">Egyedi videóparaméterek</translation> <translation id="2175927920773552910">QR-kód</translation> +<translation id="2244252133441425811">FPS-választó engedélyezése a videóknál</translation> <translation id="2271433936731426666">Teljes méretű videó-pillanatkép engedélyezése</translation> <translation id="229579744168541441">Exportálás lemezre</translation> <translation id="2320741269052147773">Pásztázás balra</translation> @@ -61,6 +62,7 @@ <translation id="3411958449466169012">Időzítés ki</translation> <translation id="3448774564454087943">A videót nem mentette a rendszer, mert túl rövid</translation> <translation id="346539236881580388">Új kép készítése</translation> +<translation id="3511295087439225876">Némítás gomb bekapcsolva</translation> <translation id="3517926952904427380">Nem sikerült álló fényképet készíteni</translation> <translation id="3566302376254083266">Mozgatás a bal felső sarok irányába</translation> <translation id="3569311554794739032">Biztosan eltávolítja a következő fájlt: <ph name="FILE" />?</translation> @@ -152,6 +154,7 @@ <translation id="8131740175452115882">Megerősítés</translation> <translation id="8145038249676204903">Váltás fotókészítésre</translation> <translation id="8167081290930651932">Mentés fotóként</translation> +<translation id="8236532224592646488">Némítás gomb kikapcsolva</translation> <translation id="8239780215768881278">Pillanatkép készítése a videóból</translation> <translation id="8261506727792406068">Törlés</translation> <translation id="8425673304802773841">Billentés lefelé</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb index dba3430..6577749 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb
@@ -119,6 +119,7 @@ Se il feedback riguarda la qualità di immagini o video, allega una foto o un video di esempio e descrivi il problema (ad esempio, la foto è troppo scura o il soggetto non è a fuoco).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation> <translation id="6527303717912515753">Condividi</translation> +<translation id="6617916774429601017">Mostra tutte le risoluzioni</translation> <translation id="6631515515009660915">Specchio off</translation> <translation id="6652737148136672975">Sposta l'angolo del documento con i tasti Freccia</translation> <translation id="667999046851023355">Documento</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb index 57bc648..6be0725 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
@@ -118,6 +118,7 @@ 画質に関するフィードバックの場合は、サンプルの写真や動画を添付し、問題の内容を詳しくご説明ください(写真が暗すぎる、ピントが合わないなど)。</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />×<ph name="HEIGHT" />)<ph name="MEGAPIXEL" /> メガピクセル</translation> <translation id="6527303717912515753">共有</translation> +<translation id="6617916774429601017">すべての解像度を表示</translation> <translation id="6631515515009660915">ミラーをオフにする</translation> <translation id="6652737148136672975">矢印キーで角の位置を移動します</translation> <translation id="667999046851023355">ドキュメント</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb index d954103..472d024b 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kk.xtb
@@ -118,6 +118,7 @@ Егер пікір сурет не бейне сапасы туралы болса, үлгі ретінде суретті не бейнені жіберіп, не дұрыс емес екенін (мысалы, фотосурет тым күңгірт немесе нысан фокусқа алынбаған) көрсетіңіз.</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> мегапиксел</translation> <translation id="6527303717912515753">Бөлісу</translation> +<translation id="6617916774429601017">Барлық ажыратымдылықтарды көрсету</translation> <translation id="6631515515009660915">Айна көрінісін өшіру</translation> <translation id="6652737148136672975">Бұрышты бағыт пернелерімен жылжытыңыз.</translation> <translation id="667999046851023355">Құжат</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb index 736f5de..c1baf4f 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">ವೀಡಿಯೊ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="2144806332417375165">ಕಸ್ಟಮ್ ವೀಡಿಯೊ ಪ್ಯಾರಾಮೀಟರ್ಗಳು</translation> <translation id="2175927920773552910">QR ಕೋಡ್</translation> +<translation id="2244252133441425811">ವೀಡಿಯೊ FPS ಪಿಕರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="2271433936731426666">ಪೂರ್ಣ ಗಾತ್ರದ ವೀಡಿಯೊ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="229579744168541441">ಡಿಸ್ಕ್ಗೆ ರಫ್ತು ಮಾಡಿ</translation> <translation id="2320741269052147773">ಎಡಕ್ಕೆ ಪ್ಯಾನ್ ಮಾಡಿ</translation> @@ -61,6 +62,7 @@ <translation id="3411958449466169012">ಟೈಮರ್ ಆಫ್ ಮಾಡಿ</translation> <translation id="3448774564454087943">ವೀಡಿಯೊ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿರುವ ಕಾರಣ ಉಳಿಸಲಾಗಿಲ್ಲ</translation> <translation id="346539236881580388">ರೀಟೇಕ್</translation> +<translation id="3511295087439225876">ಮ್ಯೂಟ್ ಬಟನ್ ಆನ್ ಆಗಿದೆ</translation> <translation id="3517926952904427380">ಪೋರ್ಟ್ರೇಟ್ ಫೋಟೋ ತೆಗೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="3566302376254083266">ಮೇಲೆ ಎಡ ದಿಕ್ಕಿನಲ್ಲಿ ಚಲಿಸುತ್ತಿದೆ</translation> <translation id="3569311554794739032">ನೀವು ನಿಜವಾಗಿಯೂ <ph name="FILE" /> ತೆಗೆದುಹಾಕಲು ಬಯಸುವಿರಾ?</translation> @@ -152,6 +154,7 @@ <translation id="8131740175452115882">ದೃಢೀಕರಿಸು</translation> <translation id="8145038249676204903">ಫೋಟೋ ತೆಗೆದುಕೊಳ್ಳಿ ಮೋಡ್ಗೆ ಬದಲಿಸಿ</translation> <translation id="8167081290930651932">ಫೋಟೋ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಉಳಿಸಿ</translation> +<translation id="8236532224592646488">ಮ್ಯೂಟ್ ಬಟನ್ ಆಫ್ ಆಗಿದೆ</translation> <translation id="8239780215768881278">ವೀಡಿಯೊ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಿ</translation> <translation id="8261506727792406068">ಅಳಿಸಿ</translation> <translation id="8425673304802773841">ಕೆಳಗೆ ಟಿಲ್ಟ್ ಮಾಡಿ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb index be79a39..f2b2b6ced 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">ປິດນັບຖອຍຫຼັງ</translation> <translation id="3448774564454087943">ບໍ່ໄດ້ບັນທຶກວິດີໂອເນື່ອງຈາກມັນສັ້ນເກີນໄປ</translation> <translation id="346539236881580388">ຖ່າຍໃໝ່</translation> +<translation id="3511295087439225876">ປຸ່ມປິດສຽງເປີດຢູ່</translation> <translation id="3517926952904427380">ບໍ່ສາມາດຖ່າຍຮູບບຸກຄົນໄດ້</translation> <translation id="3566302376254083266">ກຳລັງຍ້າຍໄປທາງຊ້າຍເທິງ</translation> <translation id="3569311554794739032">ທ່ານຕ້ອງການລຶບ <ph name="FILE" /> ອອກແທ້ບໍ?</translation> @@ -118,6 +119,7 @@ ຖ້າຄຳຕິຊົມຂອງທ່ານກ່ຽວກັບຄຸນນະພາບຮູບ ຫຼື ວິດີໂອ, ກະລຸນາແນບຮູບ ຫຼື ວິດີໂອຕົວຢ່າງມານຳ ແລະ ໃຫ້ລາຍລະອຽດວ່າມີຫຍັງຜິດພາດ. (ຕົວຢ່າງ: ຮູບມືດເກີນໄປ ຫຼື ຮູບເປົ້າໝາຍບໍ່ຢູ່ໃນໂຟກັສ.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> ເມກະພິກເຊວ</translation> <translation id="6527303717912515753">ແຊຣ໌</translation> +<translation id="6617916774429601017">ສະແດງຄວາມລະອຽດທັງໝົດ</translation> <translation id="6631515515009660915">ປິດການສະທ້ອນແລ້ວ</translation> <translation id="6652737148136672975">ຍ້າຍຕຳແໜ່ງມຸມດ້ວຍປຸ່ມລູກສອນ</translation> <translation id="667999046851023355">ເອກະສານ</translation> @@ -151,6 +153,7 @@ <translation id="8131740175452115882">ຢືນຢັນ</translation> <translation id="8145038249676204903">ປ່ຽນເປັນຖ່າຍຮູບ</translation> <translation id="8167081290930651932">ບັນທຶກເປັນຮູບພາບ</translation> +<translation id="8236532224592646488">ປຸ່ມປິດສຽງປິດຢູ່</translation> <translation id="8239780215768881278">ຖ່າຍພາບວິດີໂອໄວ</translation> <translation id="8261506727792406068">ລຶບ</translation> <translation id="8425673304802773841">ອຽງລົງ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb index ba1cdb7..c53a2bc6 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lv.xtb
@@ -118,6 +118,7 @@ Ja atsauksme ir par attēlu vai videoklipu kvalitāti, lūdzu, pievienojiet fotoattēla vai videoklipa paraugu un aprakstiet problēmu. (Piemēram, norādiet, ja fotoattēls ir pārāk tumšs vai fotografējamā persona vai priekšmets nav fokusā.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> — <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapikseļi</translation> <translation id="6527303717912515753">Kopīgot</translation> +<translation id="6617916774429601017">Rādīt visus risinājumus</translation> <translation id="6631515515009660915">Spogulis izslēgts</translation> <translation id="6652737148136672975">Pārvietojiet stūra pozīciju, izmantojot bulttaustiņus</translation> <translation id="667999046851023355">Dokuments</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb index 47b3f12..f2ea0f7 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Поставки за видео</translation> <translation id="2144806332417375165">Приспособени видеопараметри</translation> <translation id="2175927920773552910">QR-код</translation> +<translation id="2244252133441425811">Овозможете избирач на FPS за видео</translation> <translation id="2271433936731426666">Овозможете слика на состојбата на видеото со целосна големина</translation> <translation id="229579744168541441">Извези на диск</translation> <translation id="2320741269052147773">Движење надесно</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb index 7df4f38..3a2d3971 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">വീഡിയോ ക്രമീകരണം</translation> <translation id="2144806332417375165">ഇഷ്ടാനുസൃത വീഡിയോ പാരാമീറ്ററുകൾ</translation> <translation id="2175927920773552910">QR കോഡ്</translation> +<translation id="2244252133441425811">വീഡിയോ FPS പിക്കർ പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="2271433936731426666">പൂർണ്ണ വലുപ്പമുള്ള വീഡിയോ സ്നാപ്ഷോട്ട് പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="229579744168541441">ഡിസ്ക്കിലേക്ക് എക്സ്പോർട്ട് ചെയ്യുക</translation> <translation id="2320741269052147773">ഇടത്തേക്ക് പാൻ ചെയ്യുക</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb index 98a1250..74cfd77 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
@@ -118,6 +118,7 @@ तुमचा फीडबॅक इमेज किंवा व्हिडिओच्या गुणवत्तेबाबत असल्यास, कृपया एखादा फोटो किंवा व्हिडिओ नमुना म्हणून अटॅच करा आणि समस्येचे वर्णन करा. (उदाहरणार्थ, फोटो खूपच गडद आहे किंवा ज्या गोष्टीचा फोटो घ्यायचा त्यावर फोकस नाही)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> मेगा पिक्सेल</translation> <translation id="6527303717912515753">शेअर करा</translation> +<translation id="6617916774429601017">सर्व रेझोल्यूशन दाखवा</translation> <translation id="6631515515009660915">मिरर करणे बंद करा</translation> <translation id="6652737148136672975">ॲरो की वापरून कोपऱ्यातील स्थान हलवा</translation> <translation id="667999046851023355">दस्तऐवज</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb index 3a35702..bb46e48 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
@@ -119,6 +119,7 @@ သင့်အကြံပြုချက်သည် ရုပ်ပုံ (သို့) ဗီဒီယိုအရည်အသွေးနှင့် ပတ်သက်ပါက နမူနာဓာတ်ပုံ (သို့) ဗီဒီယိုကို ပူးတွဲပေးပြီး ဘာမှားနေသည်ကို ဖော်ပြပါ။ (ဥပမာ ဓာတ်ပုံ အလွန်မှောင်နေသည် (သို့) အရာဝတ္ထု ဆုံချက်မပြတ်ပါ။)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> မီဂါပစ်ဆယ်</translation> <translation id="6527303717912515753">မျှဝေရန်</translation> +<translation id="6617916774429601017">ပုံရိပ်ပြတ်သားကိန်းအားလုံး ပြပါ</translation> <translation id="6631515515009660915">မှန်ပိတ်ရန်</translation> <translation id="6652737148136672975">ထောင့်နေရာသို့ မြားကီးများဖြင့် ရွှေ့နိုင်သည်</translation> <translation id="667999046851023355">စာတမ်း</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb index d566f3c..6d16808 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">भिडियोसम्बन्धी सेटिङ</translation> <translation id="2144806332417375165">भिडियोसम्बन्धी आफू अनुकूल प्यारामिटरहरू</translation> <translation id="2175927920773552910">QR कोड</translation> +<translation id="2244252133441425811">भिडियोको FPS पिकर अन गर्नुहोस्</translation> <translation id="2271433936731426666">पूर्ण आकारको भिडियो स्न्यापसट अन गरियोस्</translation> <translation id="229579744168541441">निर्यात गरी डिस्कमा पठाउनुहोस्</translation> <translation id="2320741269052147773">बायाँतिर प्यान गर्नुहोस्</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb index 5c15aba8..05ca6f8 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Timer uit</translation> <translation id="3448774564454087943">De video is niet opgeslagen omdat deze te kort is</translation> <translation id="346539236881580388">Opnieuw maken</translation> +<translation id="3511295087439225876">Knop Geluid uit staat aan</translation> <translation id="3517926952904427380">Kan geen portretfoto maken</translation> <translation id="3566302376254083266">Beweegt naar linksboven</translation> <translation id="3569311554794739032">Weet je zeker dat je <ph name="FILE" /> wilt verwijderen?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Bevestigen</translation> <translation id="8145038249676204903">Naar foto maken</translation> <translation id="8167081290930651932">Opslaan als foto</translation> +<translation id="8236532224592646488">Knop Geluid uit staat uit</translation> <translation id="8239780215768881278">Videomomentopname maken</translation> <translation id="8261506727792406068">Verwijderen</translation> <translation id="8425673304802773841">Naar beneden kantelen</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb index 9e84f77..25ec0e16 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Videoinnstillinger</translation> <translation id="2144806332417375165">Egendefinerte videoparametre</translation> <translation id="2175927920773552910">QR-kode</translation> +<translation id="2244252133441425811">Slå på velger for videobilder per sekund</translation> <translation id="2271433936731426666">Slå på full størrelse for øyeblikksbilder fra videoer</translation> <translation id="229579744168541441">Eksportér til disk</translation> <translation id="2320741269052147773">Panorer til venstre</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb index ee75989..51cb7e1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_or.xtb
@@ -119,6 +119,7 @@ ଯଦି ଆପଣଙ୍କ ମତାମତ ଛବି କିମ୍ବା ଭିଡିଓର ଗୁଣବତ୍ତା ବିଷୟରେ ହୋଇଥାଏ, ତେବେ ଦୟାକରି ଏକ ନମୁନା ଫଟୋ କିମ୍ବା ଭିଡିଓ ଆଟାଚ୍ କରନ୍ତୁ ଏବଂ କଣ ସମସ୍ୟା ହୋଇଛି ତାହା ବର୍ଣ୍ଣନା କରନ୍ତୁ। (ଉଦାହରଣ ସ୍ୱରୂପ, ଫଟୋଟି ଅତ୍ୟଧିକ ଗାଢ଼ା ଅଛି କିମ୍ବା ଫଟୋ ନିଆଯାଉଥିବା ବସ୍ତୁଟି ଉପରେ ଫୋକସ୍ କରାଯାଇ ନାହିଁ।)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> ମେଗା ପିକ୍ସେଲ୍</translation> <translation id="6527303717912515753">ସେୟାର୍ କରନ୍ତୁ</translation> +<translation id="6617916774429601017">ସମସ୍ତ ରିଜୋଲ୍ୟୁସନ ଦେଖାନ୍ତୁ</translation> <translation id="6631515515009660915">ମିରର ବନ୍ଦ ଅଛି</translation> <translation id="6652737148136672975">ତୀର କୀ ସାହାଯ୍ୟରେ କୋଣ ସ୍ଥାନକୁ ମୁଭ କରନ୍ତୁ</translation> <translation id="667999046851023355">ଡକ୍ୟୁମେଣ୍ଟ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb index 17eecc8e..8d07344ae 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pa.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">ਟਾਈਮਰ ਬੰਦ ਹੈ</translation> <translation id="3448774564454087943">ਵੀਡੀਓ ਬਹੁਤ ਛੋਟਾ ਹੋਣ ਕਰਕੇ ਇਸਨੂੰ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ</translation> <translation id="346539236881580388">ਫ਼ੋਟੋ ਦੁਬਾਰਾ ਖਿੱਚੋ</translation> +<translation id="3511295087439225876">ਮਿਊਟ ਬਟਨ ਚਾਲੂ ਹੈ</translation> <translation id="3517926952904427380">ਪੋਰਟਰੇਟ ਫ਼ੋਟੋ ਖਿੱਚੀ ਨਹੀਂ ਜਾ ਸਕੀ</translation> <translation id="3566302376254083266">ਇਹ ਉੱਪਰ-ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="3569311554794739032">ਕੀ ਤੁਸੀਂ ਪੱਕਾ <ph name="FILE" /> ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="8145038249676204903">'ਫ਼ੋਟੋ ਖਿੱਚੋ' ਮੋਡ 'ਤੇ ਜਾਓ</translation> <translation id="8167081290930651932">ਫ਼ੋਟੋ ਵਜੋਂ ਰੱਖਿਅਤ ਕਰੋ</translation> +<translation id="8236532224592646488">ਮਿਊਟ ਬਟਨ ਬੰਦ ਹੈ</translation> <translation id="8239780215768881278">ਵੀਡੀਓ ਸਨੈਪਸ਼ਾਟ ਲਓ</translation> <translation id="8261506727792406068">ਮਿਟਾਓ</translation> <translation id="8425673304802773841">ਹੇਠਾਂ ਵੱਲ ਝੁਕਾਓ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb index d87afb34..67383f1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-BR.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Configurações de vídeo</translation> <translation id="2144806332417375165">Parâmetros de vídeo personalizados</translation> <translation id="2175927920773552910">Código QR</translation> +<translation id="2244252133441425811">Ativar o seletor de QPS de vídeo</translation> <translation id="2271433936731426666">Ativar a síntese do desempenho do vídeo no tamanho original</translation> <translation id="229579744168541441">Exportar para o disco</translation> <translation id="2320741269052147773">Movimentar para a esquerda</translation> @@ -119,6 +120,7 @@ Caso seu feedback seja sobre a qualidade da imagem ou do vídeo, adicione uma foto ou um vídeo de amostra e descreva o problema. Por exemplo, a foto está escura demais ou não está focando.</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation> <translation id="6527303717912515753">Compartilhar</translation> +<translation id="6617916774429601017">Mostrar todas as resoluções</translation> <translation id="6631515515009660915">Espelhamento desativado</translation> <translation id="6652737148136672975">Mova os cantos com as teclas de seta</translation> <translation id="667999046851023355">Documento</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb index 7911dea..450550a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Temporizador desativado</translation> <translation id="3448774564454087943">O vídeo não foi guardado, uma vez que é demasiado curto</translation> <translation id="346539236881580388">Repetir</translation> +<translation id="3511295087439225876">Botão desativar som ativado</translation> <translation id="3517926952904427380">Não é possível tirar foto de retrato</translation> <translation id="3566302376254083266">A mover para o canto superior esquerdo</translation> <translation id="3569311554794739032">Tem a certeza de que pretende remover <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Confirmar</translation> <translation id="8145038249676204903">Mudar para tirar foto</translation> <translation id="8167081290930651932">Guardar como foto</translation> +<translation id="8236532224592646488">Botão desativar som desativado</translation> <translation id="8239780215768881278">Tirar um instantâneo de vídeo</translation> <translation id="8261506727792406068">Eliminar</translation> <translation id="8425673304802773841">Inclinar para baixo</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb index 0b0b0d5..6e9eb77 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ru.xtb
@@ -118,6 +118,7 @@ Если ваш отзыв касается качества фото или видео, прикрепите файл с примером проблемы (например, слишком темный или размытый снимок).</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> Мп</translation> <translation id="6527303717912515753">Поделиться</translation> +<translation id="6617916774429601017">Показать все разрешения</translation> <translation id="6631515515009660915">Зеркальный режим отключен</translation> <translation id="6652737148136672975">Переместите угол с помощью клавиш со стрелками</translation> <translation id="667999046851023355">Документ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb index 77b132f..dccffae 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sk.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Nastavenia videí</translation> <translation id="2144806332417375165">Vlastné parametre videa</translation> <translation id="2175927920773552910">QR kód</translation> +<translation id="2244252133441425811">Povoliť výber počtu sním./s videa</translation> <translation id="2271433936731426666">Povoliť prehľad stavu videa v plnej veľkosti</translation> <translation id="229579744168541441">Exportovať na disk</translation> <translation id="2320741269052147773">Posunúť doľava</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb index 6c8bccd8..81a0ccc2 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
@@ -32,6 +32,7 @@ <translation id="2134029355740465625">Nastavitve videa</translation> <translation id="2144806332417375165">Parametri videoposnetkov po meri</translation> <translation id="2175927920773552910">Koda QR</translation> +<translation id="2244252133441425811">Omogoči izbirnik števila sličic na sekundo za video</translation> <translation id="2271433936731426666">Omogoči povzetek videoposnetka v polni velikosti</translation> <translation id="229579744168541441">Izvoz na disk</translation> <translation id="2320741269052147773">Premakni v levo</translation> @@ -119,6 +120,7 @@ Če so povratne informacije glede kakovosti slike ali videoposnetka, priložite vzorec fotografije ali videoposnetka ter opišite, kaj je narobe. (Primer: Fotografija je pretemna ali motiv ni izostren.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" /> : <ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" /> x <ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> mio. slikovnih pik</translation> <translation id="6527303717912515753">Skupna raba</translation> +<translation id="6617916774429601017">Prikaz vseh ločljivosti</translation> <translation id="6631515515009660915">Zrcaljenje izklopljeno</translation> <translation id="6652737148136672975">Premik položaja kota s puščičnimi tipkami.</translation> <translation id="667999046851023355">Dokument</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb index 559df22..638b6b9 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sq.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Çaktivizo kohëmatësin</translation> <translation id="3448774564454087943">Videoja nuk është ruajtur duke qenë se është shumë e shkurtër</translation> <translation id="346539236881580388">Nxirr përsëri</translation> +<translation id="3511295087439225876">Butoni i heqjes së zërit është aktiv</translation> <translation id="3517926952904427380">Nuk mund të nxjerrësh një fotografi portret</translation> <translation id="3566302376254083266">Po zhvendoset majtas për lart</translation> <translation id="3569311554794739032">Vërtet dëshiron të heqësh <ph name="FILE" />?</translation> @@ -118,6 +119,7 @@ Nëse komentet e tua janë për cilësinë e imazhit ose të videos, bashkëngjit një fotografi ose video shembull dhe përshkruaj problemin. (Për shembull, fotografia është shumë e errët ose subjekti nuk është në fokus.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksel</translation> <translation id="6527303717912515753">Ndaj</translation> +<translation id="6617916774429601017">Shfaq të gjitha rezolucionet</translation> <translation id="6631515515009660915">Çaktivizo pasqyrën</translation> <translation id="6652737148136672975">Zhvendos pozicionin e këndit me tastet e shigjetave</translation> <translation id="667999046851023355">Dokument</translation> @@ -151,6 +153,7 @@ <translation id="8131740175452115882">Konfirmo</translation> <translation id="8145038249676204903">Kalo te nxjerrja e fotografive</translation> <translation id="8167081290930651932">Ruaje si fotografi</translation> +<translation id="8236532224592646488">Butoni i heqjes së zërit është joaktiv</translation> <translation id="8239780215768881278">Shkrep një pamje të çastit të videos</translation> <translation id="8261506727792406068">Fshi</translation> <translation id="8425673304802773841">Ano për poshtë</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb index ae9ba20..87945040 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Isključi tajmer</translation> <translation id="3448774564454087943">Video nije sačuvan jer je prekratak</translation> <translation id="346539236881580388">Ponovo snimi</translation> +<translation id="3511295087439225876">Dugme za prekid zvuka je uključeno</translation> <translation id="3517926952904427380">Snimanje uspravne slike nije uspelo</translation> <translation id="3566302376254083266">Kreće se ulevo nagore</translation> <translation id="3569311554794739032">Želite li stvarno da uklonite datoteku <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Potvrdi</translation> <translation id="8145038249676204903">Pređi na režim za snimanje slika</translation> <translation id="8167081290930651932">Sačuvaj kao sliku</translation> +<translation id="8236532224592646488">Dugme za prekid zvuka je isključeno</translation> <translation id="8239780215768881278">Napravite video-snimak</translation> <translation id="8261506727792406068">Izbriši</translation> <translation id="8425673304802773841">Naginjanje nadole</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb index 45e1544..c117dff2 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Искључи тајмер</translation> <translation id="3448774564454087943">Видео није сачуван јер је прекратак</translation> <translation id="346539236881580388">Поново сними</translation> +<translation id="3511295087439225876">Дугме за прекид звука је укључено</translation> <translation id="3517926952904427380">Снимање усправне слике није успело</translation> <translation id="3566302376254083266">Креће се улево нагоре</translation> <translation id="3569311554794739032">Желите ли стварно да уклоните датотеку <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Потврди</translation> <translation id="8145038249676204903">Пређи на режим за снимање слика</translation> <translation id="8167081290930651932">Сачувај као слику</translation> +<translation id="8236532224592646488">Дугме за прекид звука је искључено</translation> <translation id="8239780215768881278">Направите видео-снимак</translation> <translation id="8261506727792406068">Избриши</translation> <translation id="8425673304802773841">Нагињање надоле</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb index 54663a7..ab0a4aca 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb
@@ -118,6 +118,7 @@ Om din feedback handlar om bild- eller videokvalitet bifogar du en exempelbild eller exempelvideo och beskriver problemet. (Till exempel: fotot är för mörkt eller motivet är inte i fokus.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> – <ph name="WIDTH" /> x <ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapixel</translation> <translation id="6527303717912515753">Dela</translation> +<translation id="6617916774429601017">Visa alla upplösningar</translation> <translation id="6631515515009660915">Spegling av</translation> <translation id="6652737148136672975">Flytta hörnet med hjälp av pilknapparna</translation> <translation id="667999046851023355">Dokument</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb index b6f61e7..6bef189 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sw.xtb
@@ -118,6 +118,7 @@ Iwapo maoni yako yanahusu ubora wa picha au video, tafadhali ambatisha mfano wa picha au video kisha uelezee tatizo lililopo. (Kwa mfano, hakuna mwangaza wa kutosha kwenye picha au kinachopigwa picha hakijaangaziwa vizuri.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) megapikseli <ph name="MEGAPIXEL" /></translation> <translation id="6527303717912515753">Shiriki</translation> +<translation id="6617916774429601017">Onyesha hali zote za ubora</translation> <translation id="6631515515009660915">Zima kipengele cha kuakisi</translation> <translation id="6652737148136672975">Sogeza sehemu za pembeni kwa kutumia vitufe vya vishale</translation> <translation id="667999046851023355">Hati</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb index 1ed0ddb5..ff0c91a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">டைமரை முடக்கு</translation> <translation id="3448774564454087943">மிகவும் சிறியதாக உள்ளதால் வீடியோ சேமிக்கப்படவில்லை</translation> <translation id="346539236881580388">மீண்டும் எடு</translation> +<translation id="3511295087439225876">ஒலியடக்கும் பட்டன் இயக்கப்பட்டது</translation> <translation id="3517926952904427380">படத்தை நீளவாக்கில் எடுக்க முடியவில்லை</translation> <translation id="3566302376254083266">மேல் இடதுபுறம் நகர்கிறது</translation> <translation id="3569311554794739032"><ph name="FILE" /> ஃபைலை நிச்சயமாக அகற்ற விரும்புகிறீர்களா?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">உறுதிப்படுத்து</translation> <translation id="8145038249676204903">படமெடுக்கும் பயன்முறைக்கு மாறு</translation> <translation id="8167081290930651932">படமாகச் சேமி</translation> +<translation id="8236532224592646488">ஒலியடக்கும் பட்டன் முடக்கப்பட்டது</translation> <translation id="8239780215768881278">வீடியோ ஸ்னாப்ஷாட்டை எடு</translation> <translation id="8261506727792406068">நீக்கு</translation> <translation id="8425673304802773841">கீழே சாய்க்கவும்</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb index 5de8b82a..63e5da1c 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Zamanlayıcı kapalı</translation> <translation id="3448774564454087943">Video çok kısa olduğu için kaydedilmedi</translation> <translation id="346539236881580388">Tekrar çek</translation> +<translation id="3511295087439225876">Mikrofonu kapatma düğmesi açık</translation> <translation id="3517926952904427380">Portre fotoğrafı çekilemiyor</translation> <translation id="3566302376254083266">Sol üste doğru hareket ediyor</translation> <translation id="3569311554794739032"><ph name="FILE" /> dosyasını kaldırmak istediğinizden emin misiniz?</translation> @@ -118,6 +119,7 @@ Geri bildiriminiz resim ya da video kalitesi ile ilgiliyse lütfen örnek bir fotoğraf veya video ekleyip sorunun ne olduğunu açıklayın. (Örneğin, fotoğraf çok karanlık veya özne net değil.)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> megapiksel</translation> <translation id="6527303717912515753">Paylaş</translation> +<translation id="6617916774429601017">Tüm çözünürlükleri göster</translation> <translation id="6631515515009660915">Yansıtma kapalı</translation> <translation id="6652737148136672975">Köşe konumunu ok tuşlarıyla taşıyın</translation> <translation id="667999046851023355">Doküman</translation> @@ -151,6 +153,7 @@ <translation id="8131740175452115882">Onayla</translation> <translation id="8145038249676204903">Fotoğraf çekme moduna geç</translation> <translation id="8167081290930651932">Fotoğraf olarak kaydet</translation> +<translation id="8236532224592646488">Mikrofonu kapatma düğmesi kapalı</translation> <translation id="8239780215768881278">Video anlık görüntüsü yakala</translation> <translation id="8261506727792406068">Sil</translation> <translation id="8425673304802773841">Yatır</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb index 7fa9a59..3535762 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb
@@ -119,6 +119,7 @@ اگر آپ کے تاثرات تصویر یا ویڈیو کے معیار کے بارے میں ہیں تو براہ کرم نمونہ کی تصویر یا ویڈیو منسلک کریں اور وضاحت کریں کہ کیا غلط ہے۔ (مثال کے طور پر، تصویر بہت گہری ہے یا مضمون فوکس میں نہیں ہے۔)</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> میگا پکسل</translation> <translation id="6527303717912515753">اشتراک کریں</translation> +<translation id="6617916774429601017">تمام ریزولیوشن دکھائیں</translation> <translation id="6631515515009660915">دو طرفہ مطابقت پذیر بنانے کو آف کریں</translation> <translation id="6652737148136672975">تیر والی کلیدوں کے ذریعے کونے کی پوزیشن کو منتقل کریں</translation> <translation id="667999046851023355">دستاویز</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb index b654e992..83cb3d3 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Taymersiz</translation> <translation id="3448774564454087943">Video juda qisqaligi uchun saqlanmadi</translation> <translation id="346539236881580388">Qaytadan</translation> +<translation id="3511295087439225876">Ovozsiz qilish tugmasi yoniq</translation> <translation id="3517926952904427380">Portret rejimida suratga olinmadi</translation> <translation id="3566302376254083266">Tepaga va chapga surish</translation> <translation id="3569311554794739032"><ph name="FILE" /> olib tashlansinmi?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Tasdiqlash</translation> <translation id="8145038249676204903">Suratga olish rejimi</translation> <translation id="8167081290930651932">Rasm sifatida saqlash</translation> +<translation id="8236532224592646488">Ovozsiz qilish tugmasi oʻchiq</translation> <translation id="8239780215768881278">Video lavha olish</translation> <translation id="8261506727792406068">O‘chirish</translation> <translation id="8425673304802773841">Pastga qiyalang</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb index 107eaa7..262efdf 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb
@@ -118,7 +118,7 @@ 如果您的意見和圖片或影片品質有關,請附上範例相片或影片並說明問題 (例如相片太暗或無法聚焦)。</translation> <translation id="6420689864531458495">(<ph name="ASPECT_RATIO_WIDTH" />:<ph name="ASPECT_RATIO_HEIGHT" /> - <ph name="WIDTH" />x<ph name="HEIGHT" />) <ph name="MEGAPIXEL" /> 百萬像素</translation> <translation id="6527303717912515753">分享</translation> -<translation id="6617916774429601017">顯示所有解析度</translation> +<translation id="6617916774429601017">顯示所有解像度</translation> <translation id="6631515515009660915">閂鏡像</translation> <translation id="6652737148136672975">用方向鍵嚟移動角落成位置</translation> <translation id="667999046851023355">文件</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb index 1d47aa1..64f04ff 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb
@@ -61,6 +61,7 @@ <translation id="3411958449466169012">Isibali sikhathi sivaliwe</translation> <translation id="3448774564454087943">Ividiyo ayilondoloziwe ngoba imfushane kakhulu</translation> <translation id="346539236881580388">Thatha futhi</translation> +<translation id="3511295087439225876">Inkinobho yokuthula ivuliwe</translation> <translation id="3517926952904427380">Ayikwazi ukuthatha isithombe sokuma ngobude</translation> <translation id="3566302376254083266">Ihambela ngasohlangothini lwesobunxele phezulu</translation> <translation id="3569311554794739032">Ufuna ngempela ukukhipha <ph name="FILE" />?</translation> @@ -152,6 +153,7 @@ <translation id="8131740175452115882">Qinisekisa</translation> <translation id="8145038249676204903">Shintshela ekuthatheni isithombe</translation> <translation id="8167081290930651932">Londoloza Njengesithombe</translation> +<translation id="8236532224592646488">Inkinobho yokuthula ivaliwe</translation> <translation id="8239780215768881278">Thatha isifinyezo sevidiyo</translation> <translation id="8261506727792406068">Susa</translation> <translation id="8425673304802773841">Yisa phansi</translation>
diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc index 74767d1..096be568 100644 --- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc +++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
@@ -143,7 +143,7 @@ class MainPartitionConstructor { public: - static base::ThreadSafePartitionRoot* New(void* buffer) { + static partition_alloc::ThreadSafePartitionRoot* New(void* buffer) { constexpr base::PartitionOptions::ThreadCache thread_cache = #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) // Additional partitions may be created in ConfigurePartitions(). Since @@ -157,7 +157,7 @@ // and only one is supported at a time. base::PartitionOptions::ThreadCache::kDisabled; #endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) - auto* new_root = new (buffer) base::ThreadSafePartitionRoot({ + auto* new_root = new (buffer) partition_alloc::ThreadSafePartitionRoot({ base::PartitionOptions::AlignedAlloc::kAllowed, thread_cache, base::PartitionOptions::Quarantine::kAllowed, @@ -170,30 +170,32 @@ } }; -LeakySingleton<base::ThreadSafePartitionRoot, MainPartitionConstructor> g_root - CONSTINIT = {}; -base::ThreadSafePartitionRoot* Allocator() { +LeakySingleton<partition_alloc::ThreadSafePartitionRoot, + MainPartitionConstructor> + g_root CONSTINIT = {}; +partition_alloc::ThreadSafePartitionRoot* Allocator() { return g_root.Get(); } // Original g_root_ if it was replaced by ConfigurePartitions(). -std::atomic<base::ThreadSafePartitionRoot*> g_original_root(nullptr); +std::atomic<partition_alloc::ThreadSafePartitionRoot*> g_original_root(nullptr); class AlignedPartitionConstructor { public: - static base::ThreadSafePartitionRoot* New(void* buffer) { + static partition_alloc::ThreadSafePartitionRoot* New(void* buffer) { return g_root.Get(); } }; -LeakySingleton<base::ThreadSafePartitionRoot, AlignedPartitionConstructor> +LeakySingleton<partition_alloc::ThreadSafePartitionRoot, + AlignedPartitionConstructor> g_aligned_root CONSTINIT = {}; -base::ThreadSafePartitionRoot* OriginalAllocator() { +partition_alloc::ThreadSafePartitionRoot* OriginalAllocator() { return g_original_root.load(std::memory_order_relaxed); } -base::ThreadSafePartitionRoot* AlignedAllocator() { +partition_alloc::ThreadSafePartitionRoot* AlignedAllocator() { return g_aligned_root.Get(); } @@ -356,7 +358,7 @@ } else { // size == 0 and address != null means just "free(address)". if (address) - base::ThreadSafePartitionRoot::FreeNoHooks(address); + partition_alloc::ThreadSafePartitionRoot::FreeNoHooks(address); } // The original memory block (specified by address) is unchanged if ENOMEM. if (!new_ptr) @@ -364,11 +366,12 @@ // TODO(tasak): Need to compare the new alignment with the address' alignment. // If the two alignments are not the same, need to return nullptr with EINVAL. if (address) { - size_t usage = base::ThreadSafePartitionRoot::GetUsableSize(address); + size_t usage = + partition_alloc::ThreadSafePartitionRoot::GetUsableSize(address); size_t copy_size = usage > size ? size : usage; memcpy(new_ptr, address, copy_size); - base::ThreadSafePartitionRoot::FreeNoHooks(address); + partition_alloc::ThreadSafePartitionRoot::FreeNoHooks(address); } return new_ptr; } @@ -429,7 +432,7 @@ } #endif - base::ThreadSafePartitionRoot::FreeNoHooks(object); + partition_alloc::ThreadSafePartitionRoot::FreeNoHooks(object); } #if BUILDFLAG(IS_APPLE) @@ -446,7 +449,7 @@ ScopedDisallowAllocations guard{}; // TODO(lizeb): Optimize PartitionAlloc to use the size information. This is // still useful though, as we avoid double-checking that the address is owned. - base::ThreadSafePartitionRoot::FreeNoHooks(address); + partition_alloc::ThreadSafePartitionRoot::FreeNoHooks(address); } #endif // BUILDFLAG(IS_APPLE) @@ -468,7 +471,8 @@ #endif // BUILDFLAG(IS_APPLE) // TODO(lizeb): Returns incorrect values for aligned allocations. - const size_t size = base::ThreadSafePartitionRoot::GetUsableSize(address); + const size_t size = + partition_alloc::ThreadSafePartitionRoot::GetUsableSize(address); #if BUILDFLAG(IS_APPLE) // The object pointed to by `address` is allocated by the PartitionAlloc. // So, this function must not return zero so that the malloc zone dispatcher @@ -546,13 +550,13 @@ } } -alignas(base::ThreadSafePartitionRoot) uint8_t +alignas(partition_alloc::ThreadSafePartitionRoot) uint8_t g_allocator_buffer_for_new_main_partition[sizeof( - base::ThreadSafePartitionRoot)]; + partition_alloc::ThreadSafePartitionRoot)]; -alignas(base::ThreadSafePartitionRoot) uint8_t +alignas(partition_alloc::ThreadSafePartitionRoot) uint8_t g_allocator_buffer_for_aligned_alloc_partition[sizeof( - base::ThreadSafePartitionRoot)]; + partition_alloc::ThreadSafePartitionRoot)]; void ConfigurePartitions( EnableBrp enable_brp, @@ -586,7 +590,7 @@ } PA_DCHECK(!enable_brp); PA_DCHECK(!use_dedicated_aligned_partition); - PA_DCHECK(!current_root->flags.with_thread_cache); + PA_DCHECK(!current_root->with_thread_cache); return; } @@ -603,7 +607,7 @@ base::PartitionOptions::UseConfigurablePool::kNo, }); - base::ThreadSafePartitionRoot* new_aligned_root; + partition_alloc::ThreadSafePartitionRoot* new_aligned_root; if (use_dedicated_aligned_partition) { // TODO(bartekn): Use the original root instead of creating a new one. It'd // result in one less partition, but come at a cost of commingling types.
diff --git a/base/allocator/partition_allocator/BUILD.gn b/base/allocator/partition_allocator/BUILD.gn index 1d85c4f7..0349db52 100644 --- a/base/allocator/partition_allocator/BUILD.gn +++ b/base/allocator/partition_allocator/BUILD.gn
@@ -80,6 +80,7 @@ "partition_alloc_base/cxx17_backports.h", "partition_alloc_base/debug/alias.cc", "partition_alloc_base/debug/alias.h", + "partition_alloc_base/gtest_prod_util.h", "partition_alloc_base/logging.cc", "partition_alloc_base/logging.h", "partition_alloc_base/migration_adapter.h",
diff --git a/base/allocator/partition_allocator/DEPS b/base/allocator/partition_allocator/DEPS index f985006..cbed504 100644 --- a/base/allocator/partition_allocator/DEPS +++ b/base/allocator/partition_allocator/DEPS
@@ -15,7 +15,6 @@ "+base/dcheck_is_on.h", "+base/debug/proc_maps_linux.h", "+base/fuchsia/fuchsia_logging.h", - "+base/gtest_prod_util.h", "+base/immediate_crash.h", "+base/lazy_instance.h", "+base/location.h", @@ -43,6 +42,7 @@ "+build/chromecast_buildflags.h", "+testing/gmock/include/gmock/gmock.h", "+testing/gtest/include/gtest/gtest.h", + "+testing/gtest/include/gtest/gtest_prod.h", "+testing/perf/perf_result_reporter.h", "+third_party/lss/linux_syscall_support.h", ]
diff --git a/base/allocator/partition_allocator/extended_api.cc b/base/allocator/partition_allocator/extended_api.cc index 444c371f..8b12add1 100644 --- a/base/allocator/partition_allocator/extended_api.cc +++ b/base/allocator/partition_allocator/extended_api.cc
@@ -17,11 +17,11 @@ void DisableThreadCacheForRootIfEnabled(ThreadSafePartitionRoot* root) { // Some platforms don't have a thread cache, or it could already have been // disabled. - if (!root || !root->flags.with_thread_cache) + if (!root || !root->with_thread_cache) return; ThreadCacheRegistry::Instance().PurgeAll(); - root->flags.with_thread_cache = false; + root->with_thread_cache = false; // Doesn't destroy the thread cache object(s). For background threads, they // will be collected (and free cached memory) at thread destruction // time. For the main thread, we leak it. @@ -31,7 +31,7 @@ ThreadSafePartitionRoot* root) { if (!root) return; - root->flags.with_thread_cache = true; + root->with_thread_cache = true; } #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
diff --git a/base/allocator/partition_allocator/partition_alloc_base/gtest_prod_util.h b/base/allocator/partition_allocator/partition_alloc_base/gtest_prod_util.h new file mode 100644 index 0000000..e193ceb --- /dev/null +++ b/base/allocator/partition_allocator/partition_alloc_base/gtest_prod_util.h
@@ -0,0 +1,66 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_ALLOC_BASE_GTEST_PROD_UTIL_H_ +#define BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_ALLOC_BASE_GTEST_PROD_UTIL_H_ + +#include "testing/gtest/include/gtest/gtest_prod.h" // nogncheck + +// This is a wrapper for gtest's FRIEND_TEST macro that friends +// test with all possible prefixes. This is very helpful when changing the test +// prefix, because the friend declarations don't need to be updated. +// +// Example usage: +// +// class MyClass { +// private: +// void MyMethod(); +// PA_FRIEND_TEST_ALL_PREFIXES(MyClassTest, MyMethod); +// }; +#define PA_FRIEND_TEST_ALL_PREFIXES(test_case_name, test_name) \ + FRIEND_TEST(test_case_name, test_name); \ + FRIEND_TEST(test_case_name, DISABLED_##test_name); \ + FRIEND_TEST(test_case_name, FLAKY_##test_name) + +// C++ compilers will refuse to compile the following code: +// +// namespace foo { +// class MyClass { +// private: +// PA_FRIEND_TEST_ALL_PREFIXES(MyClassTest, TestMethod); +// bool private_var; +// }; +// } // namespace foo +// +// class MyClassTest::TestMethod() { +// foo::MyClass foo_class; +// foo_class.private_var = true; +// } +// +// Unless you forward declare MyClassTest::TestMethod outside of namespace foo. +// Use PA_FORWARD_DECLARE_TEST to do so for all possible prefixes. +// +// Example usage: +// +// PA_FORWARD_DECLARE_TEST(MyClassTest, TestMethod); +// +// namespace foo { +// class MyClass { +// private: +// PA_FRIEND_TEST_ALL_PREFIXES(::MyClassTest, TestMethod); // NOTE use of :: +// bool private_var; +// }; +// } // namespace foo +// +// class MyClassTest::TestMethod() { +// foo::MyClass foo_class; +// foo_class.private_var = true; +// } + +#define PA_FORWARD_DECLARE_TEST(test_case_name, test_name) \ + class test_case_name##_##test_name##_Test; \ + class test_case_name##_##DISABLED_##test_name##_Test; \ + class test_case_name##_##FLAKY_##test_name##_Test + +#endif // BASE_ALLOCATOR_PARTITION_ALLOCATOR_PARTITION_ALLOC_BASE_GTEST_PROD_UTIL_H_
diff --git a/base/allocator/partition_allocator/partition_alloc_base/rand_util.h b/base/allocator/partition_allocator/partition_alloc_base/rand_util.h index 9671091..90fe77d 100644 --- a/base/allocator/partition_allocator/partition_alloc_base/rand_util.h +++ b/base/allocator/partition_allocator/partition_alloc_base/rand_util.h
@@ -8,9 +8,9 @@ #include <stddef.h> #include <stdint.h> +#include "base/allocator/partition_allocator/partition_alloc_base/gtest_prod_util.h" #include "base/allocator/partition_allocator/partition_alloc_base/migration_adapter.h" #include "base/base_export.h" -#include "base/gtest_prod_util.h" #include "build/build_config.h" namespace partition_alloc { @@ -81,12 +81,13 @@ // free() time. friend class ::partition_alloc::RandomGenerator; - FRIEND_TEST_ALL_PREFIXES(PartitionAllocBaseRandUtilTest, - InsecureRandomGeneratorProducesBothValuesOfAllBits); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocBaseRandUtilTest, - InsecureRandomGeneratorChiSquared); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocBaseRandUtilTest, - InsecureRandomGeneratorRandDouble); + PA_FRIEND_TEST_ALL_PREFIXES( + PartitionAllocBaseRandUtilTest, + InsecureRandomGeneratorProducesBothValuesOfAllBits); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocBaseRandUtilTest, + InsecureRandomGeneratorChiSquared); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocBaseRandUtilTest, + InsecureRandomGeneratorRandDouble); }; } // namespace partition_alloc::internal::base
diff --git a/base/allocator/partition_allocator/partition_alloc_forward.h b/base/allocator/partition_allocator/partition_alloc_forward.h index d848c6e..58301032 100644 --- a/base/allocator/partition_allocator/partition_alloc_forward.h +++ b/base/allocator/partition_allocator/partition_alloc_forward.h
@@ -66,7 +66,6 @@ // the migration to the new namespaces gets done. using ::partition_alloc::PartitionRoot; using ::partition_alloc::PartitionStatsDumper; -using ::partition_alloc::ThreadSafePartitionRoot; } // namespace base
diff --git a/base/allocator/partition_allocator/partition_lock_unittest.cc b/base/allocator/partition_allocator/partition_lock_unittest.cc index a2242fa..f43d9d38 100644 --- a/base/allocator/partition_allocator/partition_lock_unittest.cc +++ b/base/allocator/partition_allocator/partition_lock_unittest.cc
@@ -8,7 +8,6 @@ #include "base/bind.h" #include "base/callback.h" #include "base/test/bind.h" -#include "base/test/gtest_util.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" #include "build/build_config.h"
diff --git a/base/allocator/partition_allocator/partition_page.h b/base/allocator/partition_allocator/partition_page.h index 9a5c339..7bb6be1 100644 --- a/base/allocator/partition_allocator/partition_page.h +++ b/base/allocator/partition_allocator/partition_page.h
@@ -117,9 +117,8 @@ // booted out of the active list. If there are no suitable active slot spans // found, an empty or decommitted slot spans (if one exists) will be pulled // from the empty/decommitted list on to the active list. -#pragma pack(push, 1) template <bool thread_safe> -struct SlotSpanMetadata { +struct __attribute__((packed)) SlotSpanMetadata { private: PartitionFreelistEntry* freelist_head = nullptr; @@ -303,7 +302,6 @@ empty_cache_index_(0), unused2_(0) {} }; -#pragma pack(pop) static_assert(sizeof(SlotSpanMetadata<ThreadSafe>) <= kPageMetadataSize, "SlotSpanMetadata must fit into a Page Metadata slot."); @@ -326,12 +324,11 @@ // first page of a slot span, describes that slot span. If a slot span spans // more than 1 page, the page metadata may contain rudimentary additional // information. -// "Pack" the union so that common page metadata still fits within -// kPageMetadataSize. (SlotSpanMetadata is also "packed".) -#pragma pack(push, 1) template <bool thread_safe> -struct PartitionPage { - union { +struct __attribute__((packed)) PartitionPage { + // "Pack" the union so that common page metadata still fits within + // kPageMetadataSize. (SlotSpanMetadata is also "packed".) + union __attribute__((packed)) { SlotSpanMetadata<thread_safe> slot_span_metadata; SubsequentPageMetadata subsequent_page_metadata; @@ -369,7 +366,7 @@ ALWAYS_INLINE static PartitionPage* FromAddr(uintptr_t address); }; -#pragma pack(pop) + static_assert(sizeof(PartitionPage<ThreadSafe>) == kPageMetadataSize, "PartitionPage must be able to fit in a metadata slot"); @@ -620,7 +617,7 @@ PA_DCHECK((::partition_alloc::internal::UnmaskPtr(object_addr) - ::partition_alloc::internal::UnmaskPtr(slot_span_start)) % slot_span->bucket->slot_size == - root->flags.extras_offset); + root->extras_offset); #endif // DCHECK_IS_ON() return slot_span; } @@ -640,10 +637,10 @@ auto* root = PartitionRoot<thread_safe>::FromSlotSpan(slot_span); uintptr_t shift_from_slot_start = (address - slot_span_start) % slot_span->bucket->slot_size; - PA_DCHECK(shift_from_slot_start >= root->flags.extras_offset); + PA_DCHECK(shift_from_slot_start >= root->extras_offset); // Use <= to allow an address immediately past the object. PA_DCHECK(shift_from_slot_start <= - root->flags.extras_offset + slot_span->GetUsableSize(root)); + root->extras_offset + slot_span->GetUsableSize(root)); #endif // DCHECK_IS_ON() return slot_span; }
diff --git a/base/allocator/partition_allocator/partition_root.cc b/base/allocator/partition_allocator/partition_root.cc index 97e11e811..c15402c 100644 --- a/base/allocator/partition_allocator/partition_root.cc +++ b/base/allocator/partition_allocator/partition_root.cc
@@ -631,7 +631,7 @@ // We need to destruct the thread cache before we unreserve any of the super // pages below, which we currently are not doing. So, we should only call // this function on PartitionRoots without a thread cache. - PA_CHECK(!flags.with_thread_cache); + PA_CHECK(!with_thread_cache); auto pool_handle = ChoosePool(); auto* curr = first_extent; while (curr != nullptr) { @@ -674,24 +674,24 @@ internal::PartitionAddressSpace::Init(); #endif - flags.allow_aligned_alloc = + allow_aligned_alloc = opts.aligned_alloc == PartitionOptions::AlignedAlloc::kAllowed; - flags.allow_cookie = opts.cookie == PartitionOptions::Cookie::kAllowed; + allow_cookie = opts.cookie == PartitionOptions::Cookie::kAllowed; #if BUILDFLAG(USE_BACKUP_REF_PTR) - flags.brp_enabled_ = + brp_enabled_ = opts.backup_ref_ptr == PartitionOptions::BackupRefPtr::kEnabled; #else PA_CHECK(opts.backup_ref_ptr == PartitionOptions::BackupRefPtr::kDisabled); #endif - flags.use_configurable_pool = + use_configurable_pool = (opts.use_configurable_pool == PartitionOptions::UseConfigurablePool::kIfAvailable) && IsConfigurablePoolAvailable(); - PA_DCHECK(!flags.use_configurable_pool || IsConfigurablePoolAvailable()); + PA_DCHECK(!use_configurable_pool || IsConfigurablePoolAvailable()); // brp_enabled_() is not supported in the configurable pool because // BRP requires objects to be in a different Pool. - PA_CHECK(!(flags.use_configurable_pool && brp_enabled())); + PA_CHECK(!(use_configurable_pool && brp_enabled())); // Ref-count messes up alignment needed for AlignedAlloc, making this // option incompatible. However, except in the @@ -701,28 +701,28 @@ #endif #if defined(PA_EXTRAS_REQUIRED) - flags.extras_size = 0; - flags.extras_offset = 0; + extras_size = 0; + extras_offset = 0; - if (flags.allow_cookie) { - flags.extras_size += internal::kPartitionCookieSizeAdjustment; + if (allow_cookie) { + extras_size += internal::kPartitionCookieSizeAdjustment; } if (brp_enabled()) { // TODO(tasak): In the PUT_REF_COUNT_IN_PREVIOUS_SLOT case, ref-count is // stored out-of-line for single-slot slot spans, so no need to // add/subtract its size in this case. - flags.extras_size += internal::kPartitionRefCountSizeAdjustment; - flags.extras_offset += internal::kPartitionRefCountOffsetAdjustment; + extras_size += internal::kPartitionRefCountSizeAdjustment; + extras_offset += internal::kPartitionRefCountOffsetAdjustment; } #endif // defined(PA_EXTRAS_REQUIRED) // Re-confirm the above PA_CHECKs, by making sure there are no // pre-allocation extras when AlignedAlloc is allowed. Post-allocation // extras are ok. - PA_CHECK(!flags.allow_aligned_alloc || !flags.extras_offset); + PA_CHECK(!allow_aligned_alloc || !extras_offset); - flags.quarantine_mode = + quarantine_mode = #if defined(PA_ALLOW_PCSCAN) (opts.quarantine == PartitionOptions::Quarantine::kDisallowed ? QuarantineMode::kAlwaysDisabled @@ -763,10 +763,10 @@ with_thread_cache = false; #else ThreadCache::EnsureThreadSpecificDataInitialized(); - flags.with_thread_cache = + with_thread_cache = (opts.thread_cache == PartitionOptions::ThreadCache::kEnabled); - if (flags.with_thread_cache) + if (with_thread_cache) ThreadCache::Init(this); #endif // !defined(PA_THREAD_CACHE_SUPPORTED) @@ -786,7 +786,7 @@ template <bool thread_safe> PartitionRoot<thread_safe>::~PartitionRoot() { #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) - PA_CHECK(!flags.with_thread_cache) + PA_CHECK(!with_thread_cache) << "Must not destroy a partition with a thread cache"; #endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) @@ -800,7 +800,7 @@ void PartitionRoot<thread_safe>::EnableThreadCacheIfSupported() { #if defined(PA_THREAD_CACHE_SUPPORTED) ::partition_alloc::internal::ScopedGuard guard{lock_}; - PA_CHECK(!flags.with_thread_cache); + PA_CHECK(!with_thread_cache); // By the time we get there, there may be multiple threads created in the // process. Since `with_thread_cache` is accessed without a lock, it can // become visible to another thread before the effects of @@ -815,7 +815,7 @@ PA_CHECK(before == 0); ThreadCache::Init(this); thread_caches_being_constructed_.fetch_sub(1, std::memory_order_release); - flags.with_thread_cache = true; + with_thread_cache = true; #endif // defined(PA_THREAD_CACHE_SUPPORTED) } @@ -916,7 +916,7 @@ #if DCHECK_IS_ON() // Write a new trailing cookie. - if (flags.allow_cookie) { + if (allow_cookie) { auto* object = reinterpret_cast<unsigned char*>(SlotStartToObject(slot_start)); internal::PartitionCookieWriteValue(object + @@ -965,7 +965,7 @@ #if DCHECK_IS_ON() // Write a new trailing cookie only when it is possible to keep track // raw size (otherwise we wouldn't know where to look for it later). - if (flags.allow_cookie) { + if (allow_cookie) { internal::PartitionCookieWriteValue( reinterpret_cast<unsigned char*>(address) + slot_span->GetUsableSize(this)); @@ -1204,7 +1204,7 @@ stats.total_active_bytes += direct_mapped_allocations_total_size; stats.total_active_count += num_direct_mapped_allocations; - stats.has_thread_cache = flags.with_thread_cache; + stats.has_thread_cache = with_thread_cache; if (stats.has_thread_cache) { ThreadCacheRegistry::Instance().DumpStats( true, &stats.current_thread_cache_stats); @@ -1241,9 +1241,9 @@ template <bool thread_safe> void PartitionRoot<thread_safe>::DeleteForTesting( PartitionRoot* partition_root) { - if (partition_root->flags.with_thread_cache) { + if (partition_root->with_thread_cache) { ThreadCache::SwapForTesting(nullptr); - partition_root->flags.with_thread_cache = false; + partition_root->with_thread_cache = false; } delete partition_root;
diff --git a/base/allocator/partition_allocator/partition_root.h b/base/allocator/partition_allocator/partition_root.h index f099676d..78057659 100644 --- a/base/allocator/partition_allocator/partition_root.h +++ b/base/allocator/partition_allocator/partition_root.h
@@ -219,42 +219,42 @@ kEnabled, }; - // Flags accessed on fast paths. - // - // Careful! PartitionAlloc's performance is sensitive to its layout. Please - // put the fast-path objects in the struct below, and the other ones after - // the union.. - struct Flags { - // Defines whether objects should be quarantined for this root. - QuarantineMode quarantine_mode; - - // Defines whether the root should be scanned. - ScanMode scan_mode; - - bool with_thread_cache = false; - bool with_denser_bucket_distribution = false; - - bool allow_aligned_alloc; - bool allow_cookie; -#if BUILDFLAG(USE_BACKUP_REF_PTR) - bool brp_enabled_; -#endif - bool use_configurable_pool; - -#if defined(PA_EXTRAS_REQUIRED) - uint32_t extras_size; - uint32_t extras_offset; -#else - // Teach the compiler that code can be optimized in builds that use no - // extras. - static inline constexpr uint32_t extras_size = 0; - static inline constexpr uint32_t extras_offset = 0; -#endif // defined(PA_EXTRAS_REQUIRED) - }; +#if !defined(PA_EXTRAS_REQUIRED) + // Teach the compiler that code can be optimized in builds that use no + // extras. + static inline constexpr uint32_t extras_size = 0; + static inline constexpr uint32_t extras_offset = 0; +#endif // !defined(PA_EXTRAS_REQUIRED) // Read-mostly flags. union { - Flags flags; + // Flags accessed on fast paths. + // + // Careful! PartitionAlloc's performance is sensitive to its layout. Please + // put the fast-path objects in the struct below, and the other ones after + // the union.. + struct { + // Defines whether objects should be quarantined for this root. + QuarantineMode quarantine_mode; + + // Defines whether the root should be scanned. + ScanMode scan_mode; + + bool with_thread_cache = false; + bool with_denser_bucket_distribution = false; + + bool allow_aligned_alloc; + bool allow_cookie; +#if BUILDFLAG(USE_BACKUP_REF_PTR) + bool brp_enabled_; +#endif + bool use_configurable_pool; + +#if defined(PA_EXTRAS_REQUIRED) + uint32_t extras_size; + uint32_t extras_offset; +#endif // defined(PA_EXTRAS_REQUIRED) + }; // The flags above are accessed for all (de)allocations, and are mostly // read-only. They should not share a cacheline with the data below, which @@ -343,8 +343,8 @@ #endif // defined(PA_USE_MTE_CHECKED_PTR_WITH_64_BITS_POINTERS) PartitionRoot() - : flags{.quarantine_mode = QuarantineMode::kAlwaysDisabled, - .scan_mode = ScanMode::kDisabled} {} + : quarantine_mode(QuarantineMode::kAlwaysDisabled), + scan_mode(ScanMode::kDisabled) {} explicit PartitionRoot(PartitionOptions opts) { Init(opts); } ~PartitionRoot(); @@ -532,18 +532,18 @@ // guaranteed to have a bucket under the new distribution when they are // eventually deallocated. We do not need synchronization here or below. void SwitchToDenserBucketDistribution() { - flags.with_denser_bucket_distribution = true; + with_denser_bucket_distribution = true; } // Switching back to the less dense bucket distribution is ok during tests. // At worst, we end up with deallocations that are sent to a bucket that we // cannot allocate from, which will not cause problems besides wasting // memory. void ResetBucketDistributionForTesting() { - flags.with_denser_bucket_distribution = false; + with_denser_bucket_distribution = false; } ThreadCache* thread_cache_for_testing() const { - return flags.with_thread_cache ? ThreadCache::Get() : nullptr; + return with_thread_cache ? ThreadCache::Get() : nullptr; } size_t get_total_size_of_committed_pages() const { return total_size_of_committed_pages.load(std::memory_order_relaxed); @@ -565,7 +565,7 @@ } internal::pool_handle ChoosePool() const { - if (flags.use_configurable_pool) { + if (use_configurable_pool) { return internal::GetConfigurablePool(); } #if BUILDFLAG(USE_BACKUP_REF_PTR) @@ -576,15 +576,15 @@ } ALWAYS_INLINE bool IsQuarantineAllowed() const { - return flags.quarantine_mode != QuarantineMode::kAlwaysDisabled; + return quarantine_mode != QuarantineMode::kAlwaysDisabled; } ALWAYS_INLINE bool IsQuarantineEnabled() const { - return flags.quarantine_mode == QuarantineMode::kEnabled; + return quarantine_mode == QuarantineMode::kEnabled; } ALWAYS_INLINE bool ShouldQuarantine(void* object) const { - if (UNLIKELY(flags.quarantine_mode != QuarantineMode::kEnabled)) + if (UNLIKELY(quarantine_mode != QuarantineMode::kEnabled)) return false; #if defined(PA_HAS_MEMORY_TAGGING) if (UNLIKELY(quarantine_always_for_testing)) @@ -604,8 +604,8 @@ ALWAYS_INLINE bool IsScanEnabled() const { // Enabled scan implies enabled quarantine. - PA_DCHECK(flags.scan_mode != ScanMode::kEnabled || IsQuarantineEnabled()); - return flags.scan_mode == ScanMode::kEnabled; + PA_DCHECK(scan_mode != ScanMode::kEnabled || IsQuarantineEnabled()); + return scan_mode == ScanMode::kEnabled; } static PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t @@ -674,8 +674,8 @@ // needed. ALWAYS_INLINE size_t AdjustSizeForExtrasAdd(size_t size) const { size = AdjustSize0IfNeeded(size); - PA_DCHECK(size + flags.extras_size >= size); - return size + flags.extras_size; + PA_DCHECK(size + extras_size >= size); + return size + extras_size; } // Adjusts the size by subtracing extras. Doesn't include the 0->1 adjustment, @@ -683,18 +683,18 @@ // AdjustSizeForExtrasSubtract either expect the adjustment to be included, or // are indifferent. ALWAYS_INLINE size_t AdjustSizeForExtrasSubtract(size_t size) const { - return size - flags.extras_size; + return size - extras_size; } ALWAYS_INLINE void* SlotStartToObject(uintptr_t slot_start) const { // TODO(bartekn): Move MTE tagging here. // TODO(bartekn): Check that |slot_start| is indeed a slot start. - return reinterpret_cast<void*>(slot_start + flags.extras_offset); + return reinterpret_cast<void*>(slot_start + extras_offset); } ALWAYS_INLINE uintptr_t ObjectToSlotStart(void* object) const { // TODO(bartekn): Move MTE untagging here. - return reinterpret_cast<uintptr_t>(object) - flags.extras_offset; + return reinterpret_cast<uintptr_t>(object) - extras_offset; // TODO(bartekn): Check that the result is indeed a slot start. } @@ -714,14 +714,14 @@ bool brp_enabled() const { #if BUILDFLAG(USE_BACKUP_REF_PTR) - return flags.brp_enabled_; + return brp_enabled_; #else return false; #endif } ALWAYS_INLINE bool uses_configurable_pool() const { - return flags.use_configurable_pool; + return use_configurable_pool; } // To make tests deterministic, it is necessary to uncap the amount of memory @@ -1212,7 +1212,7 @@ // AllocWithFlagsNoHooks(). #if DCHECK_IS_ON() - if (flags.allow_cookie) { + if (allow_cookie) { // Verify the cookie after the allocated region. // If this assert fires, you probably corrupted memory. internal::PartitionCookieCheckValue( @@ -1360,8 +1360,7 @@ // // LIKELY: performance-sensitive partitions have a thread cache, direct-mapped // allocations are uncommon. - if (LIKELY(flags.with_thread_cache && - !IsDirectMappedBucket(slot_span->bucket))) { + if (LIKELY(with_thread_cache && !IsDirectMappedBucket(slot_span->bucket))) { size_t bucket_index = slot_span->bucket - this->buckets; auto* thread_cache = ThreadCache::Get(); if (LIKELY(ThreadCache::IsValid(thread_cache) && @@ -1671,7 +1670,7 @@ // underneath us (between calls to |SizeToBucketIndex| during the same call), // which would result in an inconsistent state. uint16_t bucket_index = - SizeToBucketIndex(raw_size, this->flags.with_denser_bucket_distribution); + SizeToBucketIndex(raw_size, with_denser_bucket_distribution); size_t usable_size; bool is_already_zeroed = false; uintptr_t slot_start = 0; @@ -1689,7 +1688,7 @@ // thread cache will not be able to satisfy it. // // LIKELY: performance-sensitive partitions use the thread cache. - if (LIKELY(this->flags.with_thread_cache && + if (LIKELY(with_thread_cache && slot_span_alignment <= internal::PartitionPageSize())) { auto* tcache = ThreadCache::Get(); // LIKELY: Typically always true, except for the very first allocation of @@ -1783,7 +1782,7 @@ #if DCHECK_IS_ON() // Add the cookie after the allocation. - if (this->flags.allow_cookie) { + if (allow_cookie) { internal::PartitionCookieWriteValue(static_cast<unsigned char*>(object) + usable_size); } @@ -1872,8 +1871,8 @@ // allocation from the beginning of the slot, thus messing up alignment. // Extras after the allocation are acceptable, but they have to be taken into // account in the request size calculation to avoid crbug.com/1185484. - PA_DCHECK(this->flags.allow_aligned_alloc); - PA_DCHECK(!this->flags.extras_offset); + PA_DCHECK(allow_aligned_alloc); + PA_DCHECK(!extras_offset); // This is mandated by |posix_memalign()|, so should never fire. PA_CHECK(partition_alloc::internal::base::bits::IsPowerOfTwo(alignment)); // Catch unsupported alignment requests early. @@ -1969,7 +1968,7 @@ PA_DCHECK(PartitionRoot<thread_safe>::initialized); size = AdjustSizeForExtrasAdd(size); auto& bucket = - bucket_at(SizeToBucketIndex(size, flags.with_denser_bucket_distribution)); + bucket_at(SizeToBucketIndex(size, with_denser_bucket_distribution)); PA_DCHECK(!bucket.slot_size || bucket.slot_size >= size); PA_DCHECK(!(bucket.slot_size % internal::kSmallestBucket));
diff --git a/base/allocator/partition_allocator/starscan/pcscan_internal.cc b/base/allocator/partition_allocator/starscan/pcscan_internal.cc index 3b7be4e..9309f55e8 100644 --- a/base/allocator/partition_allocator/starscan/pcscan_internal.cc +++ b/base/allocator/partition_allocator/starscan/pcscan_internal.cc
@@ -1440,8 +1440,8 @@ return; PA_CHECK(!root->IsQuarantineEnabled()); super_pages = GetSuperPagesAndCommitStateBitmaps(*root); - root->flags.scan_mode = Root::ScanMode::kEnabled; - root->flags.quarantine_mode = Root::QuarantineMode::kEnabled; + root->scan_mode = Root::ScanMode::kEnabled; + root->quarantine_mode = Root::QuarantineMode::kEnabled; } std::lock_guard<std::mutex> lock(roots_mutex_); PA_DCHECK(!scannable_roots_.count(root)); @@ -1462,7 +1462,7 @@ if (root->IsQuarantineEnabled()) return; super_pages = GetSuperPagesAndCommitStateBitmaps(*root); - root->flags.quarantine_mode = Root::QuarantineMode::kEnabled; + root->quarantine_mode = Root::QuarantineMode::kEnabled; } std::lock_guard<std::mutex> lock(roots_mutex_); PA_DCHECK(!nonscannable_roots_.count(root)); @@ -1582,12 +1582,12 @@ // Set all roots as non-scannable and non-quarantinable. for (auto& pair : scannable_roots_) { Root* root = pair.first; - root->flags.scan_mode = Root::ScanMode::kDisabled; - root->flags.quarantine_mode = Root::QuarantineMode::kDisabledByDefault; + root->scan_mode = Root::ScanMode::kDisabled; + root->quarantine_mode = Root::QuarantineMode::kDisabledByDefault; } for (auto& pair : nonscannable_roots_) { Root* root = pair.first; - root->flags.quarantine_mode = Root::QuarantineMode::kDisabledByDefault; + root->quarantine_mode = Root::QuarantineMode::kDisabledByDefault; } // Make sure to destroy maps so that on the following ReinitForTesting() call // the maps don't attempt to destroy the backing.
diff --git a/base/allocator/partition_allocator/starscan/pcscan_unittest.cc b/base/allocator/partition_allocator/starscan/pcscan_unittest.cc index 7e68ff9..92b83da 100644 --- a/base/allocator/partition_allocator/starscan/pcscan_unittest.cc +++ b/base/allocator/partition_allocator/starscan/pcscan_unittest.cc
@@ -127,8 +127,8 @@ CHECK_EQ(0u, root.get_total_size_of_committed_pages()); const size_t raw_size = root.AdjustSizeForExtrasAdd(object_size); - const size_t bucket_index = root.SizeToBucketIndex( - raw_size, root.flags.with_denser_bucket_distribution); + const size_t bucket_index = + root.SizeToBucketIndex(raw_size, root.with_denser_bucket_distribution); ThreadSafePartitionRoot::Bucket& bucket = root.buckets[bucket_index]; const size_t num_slots = (bucket.get_bytes_per_span()) / bucket.slot_size;
diff --git a/base/allocator/partition_allocator/thread_cache.cc b/base/allocator/partition_allocator/thread_cache.cc index eca37a32..bb44fe1 100644 --- a/base/allocator/partition_allocator/thread_cache.cc +++ b/base/allocator/partition_allocator/thread_cache.cc
@@ -61,7 +61,7 @@ // mitigated inside the thread cache (since getting to it requires querying // TLS), but the PartitionRoot associated wih the thread cache can be made to // not use the thread cache anymore. - g_thread_cache_root.load(std::memory_order_relaxed)->flags.with_thread_cache = + g_thread_cache_root.load(std::memory_order_relaxed)->with_thread_cache = false; } #endif @@ -446,9 +446,9 @@ size_t usable_size; bool already_zeroed; - auto* bucket = root->buckets + - PartitionRoot<internal::ThreadSafe>::SizeToBucketIndex( - raw_size, root->flags.with_denser_bucket_distribution); + auto* bucket = + root->buckets + PartitionRoot<internal::ThreadSafe>::SizeToBucketIndex( + raw_size, root->with_denser_bucket_distribution); uintptr_t buffer = root->RawAlloc(bucket, AllocFlags::kZeroFill, raw_size, internal::PartitionPageSize(), &usable_size, &already_zeroed);
diff --git a/base/allocator/partition_allocator/thread_cache.h b/base/allocator/partition_allocator/thread_cache.h index 47c8507a..3c388aa 100644 --- a/base/allocator/partition_allocator/thread_cache.h +++ b/base/allocator/partition_allocator/thread_cache.h
@@ -10,6 +10,7 @@ #include <limits> #include <memory> +#include "base/allocator/partition_allocator/partition_alloc_base/gtest_prod_util.h" #include "base/allocator/partition_allocator/partition_alloc_config.h" #include "base/allocator/partition_allocator/partition_alloc_forward.h" #include "base/allocator/partition_allocator/partition_bucket_lookup.h" @@ -20,7 +21,6 @@ #include "base/base_export.h" #include "base/compiler_specific.h" #include "base/dcheck_is_on.h" -#include "base/gtest_prod_util.h" #include "base/time/time.h" #include "build/build_config.h" @@ -418,26 +418,29 @@ friend class ThreadCacheRegistry; friend class PartitionAllocThreadCacheTest; friend class tools::ThreadCacheInspector; - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, Simple); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - MultipleObjectsCachedPerBucket); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - LargeAllocationsAreNotCached); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, MultipleThreadCaches); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, RecordStats); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, ThreadCacheRegistry); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - MultipleThreadCachesAccounting); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - DynamicCountPerBucket); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - DynamicCountPerBucketClamping); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - DynamicCountPerBucketMultipleThreads); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, DynamicSizeThreshold); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, - DynamicSizeThresholdPurge); - FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, ClearFromTail); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, Simple); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + MultipleObjectsCachedPerBucket); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + LargeAllocationsAreNotCached); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + MultipleThreadCaches); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, RecordStats); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + ThreadCacheRegistry); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + MultipleThreadCachesAccounting); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + DynamicCountPerBucket); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + DynamicCountPerBucketClamping); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + DynamicCountPerBucketMultipleThreads); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + DynamicSizeThreshold); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, + DynamicSizeThresholdPurge); + PA_FRIEND_TEST_ALL_PREFIXES(PartitionAllocThreadCacheTest, ClearFromTail); }; ALWAYS_INLINE bool ThreadCache::MaybePutInCache(uintptr_t slot_start, @@ -506,13 +509,12 @@ } PA_DCHECK(bucket.count != 0); - internal::PartitionFreelistEntry* result = bucket.freelist_head; + auto* result = bucket.freelist_head; // Passes the bucket size to |GetNext()|, so that in case of freelist // corruption, we know the bucket size that lead to the crash, helping to // narrow down the search for culprit. |bucket| was touched just now, so this // does not introduce another cache miss. - internal::PartitionFreelistEntry* next = - result->GetNextForThreadCache<true>(bucket.slot_size); + auto* next = result->GetNextForThreadCache<true>(bucket.slot_size); PA_DCHECK(result != next); bucket.count--; PA_DCHECK(bucket.count != 0 || !next);
diff --git a/base/android/callback_android.cc b/base/android/callback_android.cc index 1a41ad5..244cd9eb 100644 --- a/base/android/callback_android.cc +++ b/base/android/callback_android.cc
@@ -23,7 +23,7 @@ static_cast<jboolean>(arg)); } -void RunIntCallbackAndroid(const JavaRef<jobject>& callback, int arg) { +void RunIntCallbackAndroid(const JavaRef<jobject>& callback, int32_t arg) { Java_Helper_onIntResultFromNative(AttachCurrentThread(), callback, arg); }
diff --git a/base/android/callback_android.h b/base/android/callback_android.h index 048b8ed..3c02f08f 100644 --- a/base/android/callback_android.h +++ b/base/android/callback_android.h
@@ -25,7 +25,7 @@ bool arg); void BASE_EXPORT RunIntCallbackAndroid(const JavaRef<jobject>& callback, - int arg); + int32_t arg); void BASE_EXPORT RunLongCallbackAndroid(const JavaRef<jobject>& callback, int64_t arg);
diff --git a/base/bits.h b/base/bits.h index c22a8cd..f71bc3f 100644 --- a/base/bits.h +++ b/base/bits.h
@@ -25,8 +25,6 @@ namespace bits { // Returns true iff |value| is a power of 2. -// -// TODO(pkasting): When C++20 is available, replace with std::has_single_bit(). template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>> constexpr bool IsPowerOfTwo(T value) { // From "Hacker's Delight": Section 2.1 Manipulating Rightmost Bits. @@ -81,9 +79,6 @@ // // Prefer the clang path on Windows, as _BitScanReverse() and friends are not // constexpr. -// -// TODO(pkasting): When C++20 is available, replace with std::countl_zero() and -// similar. #if defined(COMPILER_MSVC) && !defined(__clang__) template <typename T, unsigned bits = sizeof(T) * 8> @@ -158,9 +153,13 @@ #endif } -// Used in place of "constexpr" below for things which are conditionally -// constexpr depending on whether the functions above are constexpr. -#define BASE_BITOPS_CONSTEXPR +ALWAYS_INLINE uint32_t CountLeadingZeroBits32(uint32_t x) { + return CountLeadingZeroBits(x); +} + +ALWAYS_INLINE uint64_t CountLeadingZeroBits64(uint64_t x) { + return CountLeadingZeroBits(x); +} #elif defined(COMPILER_GCC) || defined(__clang__) @@ -192,38 +191,29 @@ : bits; } -#define BASE_BITOPS_CONSTEXPR constexpr +ALWAYS_INLINE constexpr uint32_t CountLeadingZeroBits32(uint32_t x) { + return CountLeadingZeroBits(x); +} + +ALWAYS_INLINE constexpr uint64_t CountLeadingZeroBits64(uint64_t x) { + return CountLeadingZeroBits(x); +} #endif -ALWAYS_INLINE BASE_BITOPS_CONSTEXPR uint32_t -CountLeadingZeroBits32(uint32_t x) { +ALWAYS_INLINE constexpr size_t CountLeadingZeroBitsSizeT(size_t x) { return CountLeadingZeroBits(x); } -ALWAYS_INLINE BASE_BITOPS_CONSTEXPR uint64_t -CountLeadingZeroBits64(uint64_t x) { - return CountLeadingZeroBits(x); -} - -ALWAYS_INLINE BASE_BITOPS_CONSTEXPR size_t CountLeadingZeroBitsSizeT(size_t x) { - return CountLeadingZeroBits(x); -} - -ALWAYS_INLINE BASE_BITOPS_CONSTEXPR size_t -CountTrailingZeroBitsSizeT(size_t x) { +ALWAYS_INLINE constexpr size_t CountTrailingZeroBitsSizeT(size_t x) { return CountTrailingZeroBits(x); } -#undef BASE_BITOPS_CONSTEXPR - // Returns the integer i such as 2^i <= n < 2^(i+1). // // There is a common `BitLength` function, which returns the number of bits // required to represent a value. Rather than implement that function, // use `Log2Floor` and add 1 to the result. -// -// TODO(pkasting): When C++20 is available, replace with std::bit_xxx(). constexpr int Log2Floor(uint32_t n) { return 31 - CountLeadingZeroBits(n); }
diff --git a/base/compiler_specific.h b/base/compiler_specific.h index bb43ab3..1ee8074 100644 --- a/base/compiler_specific.h +++ b/base/compiler_specific.h
@@ -24,13 +24,6 @@ #define HAS_CPP_ATTRIBUTE(x) 0 #endif -// A wrapper around `__has_attribute`, similar to HAS_CPP_ATTRIBUTE. -#if defined(__has_attribute) -#define HAS_ATTRIBUTE(x) __has_attribute(x) -#else -#define HAS_ATTRIBUTE(x) 0 -#endif - // A wrapper around `__has_builtin`, similar to HAS_CPP_ATTRIBUTE. #if defined(__has_builtin) #define HAS_BUILTIN(x) __has_builtin(x) @@ -65,7 +58,7 @@ // prevent code folding, see NO_CODE_FOLDING() in base/debug/alias.h. // Use like: // void NOT_TAIL_CALLED FooBar(); -#if defined(__clang__) && HAS_ATTRIBUTE(not_tail_called) +#if defined(__clang__) && __has_attribute(not_tail_called) #define NOT_TAIL_CALLED __attribute__((not_tail_called)) #else #define NOT_TAIL_CALLED @@ -133,9 +126,11 @@ // __attribute__((format(wprintf, format_param, dots_param))) // Sanitizers annotations. -#if HAS_ATTRIBUTE(no_sanitize) +#if defined(__has_attribute) +#if __has_attribute(no_sanitize) #define NO_SANITIZE(what) __attribute__((no_sanitize(what))) #endif +#endif #if !defined(NO_SANITIZE) #define NO_SANITIZE(what) #endif @@ -243,7 +238,7 @@ #endif #endif -#if defined(__clang__) && HAS_ATTRIBUTE(uninitialized) +#if defined(__clang__) && __has_attribute(uninitialized) // Attribute "uninitialized" disables -ftrivial-auto-var-init=pattern for // the specified variable. // Library-wide alternative is @@ -290,9 +285,13 @@ // In some cases it's desirable to remove this, e.g. on hot functions, or if // we have purposely changed the reference canary. #if defined(COMPILER_GCC) || defined(__clang__) -#if HAS_ATTRIBUTE(__no_stack_protector__) +#if defined(__has_attribute) +#if __has_attribute(__no_stack_protector__) #define NO_STACK_PROTECTOR __attribute__((__no_stack_protector__)) -#else +#else // __has_attribute(__no_stack_protector__) +#define NO_STACK_PROTECTOR __attribute__((__optimize__("-fno-stack-protector"))) +#endif +#else // defined(__has_attribute) #define NO_STACK_PROTECTOR __attribute__((__optimize__("-fno-stack-protector"))) #endif #else @@ -329,7 +328,7 @@ #endif // defined(__clang_analyzer__) // Use nomerge attribute to disable optimization of merging multiple same calls. -#if defined(__clang__) && HAS_ATTRIBUTE(nomerge) +#if defined(__clang__) && __has_attribute(nomerge) #define NOMERGE [[clang::nomerge]] #else #define NOMERGE @@ -356,7 +355,7 @@ // See also: // https://clang.llvm.org/docs/AttributeReference.html#trivial-abi // https://libcxx.llvm.org/docs/DesignDocs/UniquePtrTrivialAbi.html -#if defined(__clang__) && HAS_ATTRIBUTE(trivial_abi) +#if defined(__clang__) && __has_attribute(trivial_abi) #define TRIVIAL_ABI [[clang::trivial_abi]] #else #define TRIVIAL_ABI @@ -365,7 +364,7 @@ // Marks a member function as reinitializing a moved-from variable. // See also // https://clang.llvm.org/extra/clang-tidy/checks/bugprone-use-after-move.html#reinitialization -#if defined(__clang__) && HAS_ATTRIBUTE(reinitializes) +#if defined(__clang__) && __has_attribute(reinitializes) #define REINITIALIZES_AFTER_MOVE [[clang::reinitializes]] #else #define REINITIALIZES_AFTER_MOVE @@ -374,9 +373,11 @@ // Requires constant initialization. See constinit in C++20. Allows to rely on a // variable being initialized before execution, and not requiring a global // constructor. -#if HAS_ATTRIBUTE(require_constant_initialization) +#if defined(__has_attribute) +#if __has_attribute(require_constant_initialization) #define CONSTINIT __attribute__((require_constant_initialization)) #endif +#endif #if !defined(CONSTINIT) #define CONSTINIT #endif
diff --git a/base/observer_list.h b/base/observer_list.h index 3270e31..939addb 100644 --- a/base/observer_list.h +++ b/base/observer_list.h
@@ -260,7 +260,7 @@ live_iterators_.head()->value()->Invalidate(); if (check_empty) { Compact(); - DCHECK(observers_.empty()) << GetObserversCreationStackString(); + DCHECK(observers_.empty()) << "\n" << GetObserversCreationStackString(); } }
diff --git a/base/sys_byteorder.h b/base/sys_byteorder.h index df3b1e5..5516be7 100644 --- a/base/sys_byteorder.h +++ b/base/sys_byteorder.h
@@ -19,20 +19,10 @@ #include <stdlib.h> #endif -#if defined(COMPILER_MSVC) && !defined(__clang__) -// TODO(pkasting): See -// https://developercommunity.visualstudio.com/t/Mark-some-built-in-functions-as-constexp/362558 -// https://developercommunity.visualstudio.com/t/constexpr-byte-swapping-optimization/983963 -#define BASE_BYTESWAPS_CONSTEXPR -#else -#define BASE_BYTESWAPS_CONSTEXPR constexpr -#endif - namespace base { // Returns a value with all bytes in |x| swapped, i.e. reverses the endianness. -// TODO(pkasting): Once C++23 is available, replace with std::byteswap. -inline BASE_BYTESWAPS_CONSTEXPR uint16_t ByteSwap(uint16_t x) { +inline uint16_t ByteSwap(uint16_t x) { #if defined(COMPILER_MSVC) && !defined(__clang__) return _byteswap_ushort(x); #else @@ -40,7 +30,7 @@ #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint32_t ByteSwap(uint32_t x) { +inline constexpr uint32_t ByteSwap(uint32_t x) { #if defined(COMPILER_MSVC) && !defined(__clang__) return _byteswap_ulong(x); #else @@ -48,7 +38,7 @@ #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint64_t ByteSwap(uint64_t x) { +inline constexpr uint64_t ByteSwap(uint64_t x) { // Per build/build_config.h, clang masquerades as MSVC on Windows. If we are // actually using clang, we can rely on the builtin. // @@ -63,7 +53,7 @@ #endif } -inline BASE_BYTESWAPS_CONSTEXPR uintptr_t ByteSwapUintPtrT(uintptr_t x) { +inline constexpr uintptr_t ByteSwapUintPtrT(uintptr_t x) { // We do it this way because some build configurations are ILP32 even when // defined(ARCH_CPU_64_BITS). Unfortunately, we can't use sizeof in #ifs. But, // because these conditionals are constexprs, the irrelevant branches will @@ -78,21 +68,21 @@ // Converts the bytes in |x| from host order (endianness) to little endian, and // returns the result. -inline BASE_BYTESWAPS_CONSTEXPR uint16_t ByteSwapToLE16(uint16_t x) { +inline uint16_t ByteSwapToLE16(uint16_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return x; #else return ByteSwap(x); #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint32_t ByteSwapToLE32(uint32_t x) { +inline uint32_t ByteSwapToLE32(uint32_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return x; #else return ByteSwap(x); #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint64_t ByteSwapToLE64(uint64_t x) { +inline uint64_t ByteSwapToLE64(uint64_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return x; #else @@ -102,21 +92,21 @@ // Converts the bytes in |x| from network to host order (endianness), and // returns the result. -inline BASE_BYTESWAPS_CONSTEXPR uint16_t NetToHost16(uint16_t x) { +inline uint16_t NetToHost16(uint16_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else return x; #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint32_t NetToHost32(uint32_t x) { +inline uint32_t NetToHost32(uint32_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else return x; #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint64_t NetToHost64(uint64_t x) { +inline uint64_t NetToHost64(uint64_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else @@ -126,21 +116,21 @@ // Converts the bytes in |x| from host to network order (endianness), and // returns the result. -inline BASE_BYTESWAPS_CONSTEXPR uint16_t HostToNet16(uint16_t x) { +inline uint16_t HostToNet16(uint16_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else return x; #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint32_t HostToNet32(uint32_t x) { +inline uint32_t HostToNet32(uint32_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else return x; #endif } -inline BASE_BYTESWAPS_CONSTEXPR uint64_t HostToNet64(uint64_t x) { +inline uint64_t HostToNet64(uint64_t x) { #if defined(ARCH_CPU_LITTLE_ENDIAN) return ByteSwap(x); #else @@ -150,6 +140,4 @@ } // namespace base -#undef BASE_BYTESWAPS_CONSTEXPR - #endif // BASE_SYS_BYTEORDER_H_
diff --git a/base/win/windows_version.cc b/base/win/windows_version.cc index dafeb24..dd6aa98 100644 --- a/base/win/windows_version.cc +++ b/base/win/windows_version.cc
@@ -26,7 +26,7 @@ #endif #if !defined(NTDDI_WIN10_FE) -#error Windows 10.0.20348.0 SDK or higher required. +#error Windows 10.0.20348.0SDK or higher required. #endif namespace base {
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 7685dcc..eeab1ad8 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -11647,106 +11647,6 @@ EXPECT_NE(viz::kInvalidResourceId, id1); } -class FrameSinkClient : public TestLayerTreeFrameSinkClient { - public: - explicit FrameSinkClient( - scoped_refptr<viz::ContextProvider> display_context_provider) - : display_context_provider_(std::move(display_context_provider)) {} - - std::unique_ptr<viz::DisplayCompositorMemoryAndTaskController> - CreateDisplayController() override { - // In this implementation, no output surface has a real gpu thread, and - // there is no overlay support. - return nullptr; - } - std::unique_ptr<viz::SkiaOutputSurface> CreateSkiaOutputSurface( - viz::DisplayCompositorMemoryAndTaskController*) override { - return viz::FakeSkiaOutputSurface::Create3d( - std::move(display_context_provider_)); - } - - std::unique_ptr<viz::OutputSurface> CreateSoftwareOutputSurface() override { - NOTREACHED(); - return nullptr; - } - - void DisplayReceivedLocalSurfaceId( - const viz::LocalSurfaceId& local_surface_id) override {} - void DisplayReceivedCompositorFrame( - const viz::CompositorFrame& frame) override {} - void DisplayWillDrawAndSwap( - bool will_draw_and_swap, - viz::AggregatedRenderPassList* render_passes) override {} - void DisplayDidDrawAndSwap() override {} - - private: - scoped_refptr<viz::ContextProvider> display_context_provider_; -}; - -using LayerTreeHostImplTestWithRenderer = LayerTreeHostImplTest; - -TEST_F(LayerTreeHostImplTestWithRenderer, ShutdownReleasesContext) { - viz::DebugRendererSettings debug_settings; - - scoped_refptr<viz::TestContextProvider> context_provider = - viz::TestContextProvider::Create(); - FrameSinkClient test_client(context_provider); - - constexpr bool synchronous_composite = true; - constexpr bool disable_display_vsync = false; - constexpr double refresh_rate = 60.0; - std::unique_ptr<TaskRunnerProvider> task_runner_provider = - TaskRunnerProvider::Create(base::ThreadTaskRunnerHandle::Get(), nullptr); - auto layer_tree_frame_sink = std::make_unique<TestLayerTreeFrameSink>( - context_provider, viz::TestContextProvider::CreateWorker(), nullptr, - viz::RendererSettings(), &debug_settings, task_runner_provider.get(), - synchronous_composite, disable_display_vsync, refresh_rate); - layer_tree_frame_sink->SetClient(&test_client); - - CreateHostImpl(DefaultSettings(), std::move(layer_tree_frame_sink)); - - LayerImpl* root = SetupDefaultRootLayer(gfx::Size(10, 10)); - struct Helper { - std::unique_ptr<viz::CopyOutputResult> unprocessed_result; - void OnResult(base::OnceClosure finished, - std::unique_ptr<viz::CopyOutputResult> result) { - unprocessed_result = std::move(result); - std::move(finished).Run(); - } - } helper; - - GetEffectNode(root)->has_copy_request = true; - base::RunLoop copy_request_run_loop; - GetPropertyTrees(root)->effect_tree_mutable().AddCopyRequest( - root->effect_tree_index(), - std::make_unique<viz::CopyOutputRequest>( - viz::CopyOutputRequest::ResultFormat::RGBA, - viz::CopyOutputRequest::ResultDestination::kNativeTextures, - base::BindOnce(&Helper::OnResult, base::Unretained(&helper), - copy_request_run_loop.QuitClosure()))); - DrawFrame(); - - auto* sii = context_provider->SharedImageInterface(); - // The CopyOutputResult has a ref on the viz::ContextProvider and a shared - // image allocated. - copy_request_run_loop.Run(); - EXPECT_TRUE(helper.unprocessed_result); - EXPECT_FALSE(context_provider->HasOneRef()); - EXPECT_EQ(1u, sii->shared_image_count()); - - host_impl_->ReleaseLayerTreeFrameSink(); - host_impl_ = nullptr; - - // The texture release callback that was given to the CopyOutputResult has - // been canceled, and the shared image deleted. - EXPECT_TRUE(context_provider->HasOneRef()); - EXPECT_EQ(0u, sii->shared_image_count()); - - // When resetting the CopyOutputResult, it will run its texture release - // callback. This should not cause a crash, etc. - helper.unprocessed_result.reset(); -} - // This tests the case where hit testing only on scrollable layers returns a // layer that's outside the scroll chain of the first hit test *any* layer. See // LayerTreeHostImpl::IsInitialScrollHitTestReliable for details.
diff --git a/cc/trees/layer_tree_host_pixeltest_filters.cc b/cc/trees/layer_tree_host_pixeltest_filters.cc index 75640ed..e4b55f0fe 100644 --- a/cc/trees/layer_tree_host_pixeltest_filters.cc +++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
@@ -149,6 +149,11 @@ } TEST_P(LayerTreeHostFiltersPixelTest, BackdropFilterBlurRadius) { +#if defined(MEMORY_SANITIZER) + if (renderer_type() == viz::RendererType::kSkiaVk) { + GTEST_SKIP() << "TODO(crbug.com/1324336): Uninitialized data error"; + } +#endif if (use_software_renderer()) { // TODO(989238): Software renderer does not support/implement // kClamp_TileMode. @@ -241,6 +246,11 @@ } TEST_P(LayerTreeHostFiltersPixelTest, BackdropFilterBlurOutsets) { +#if defined(MEMORY_SANITIZER) + if (renderer_type() == viz::RendererType::kSkiaVk) { + GTEST_SKIP() << "TODO(crbug.com/1324336): Uninitialized data error"; + } +#endif scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( gfx::Rect(200, 200), SK_ColorWHITE);
diff --git a/chrome/VERSION b/chrome/VERSION index 314f166..1963593b 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=103 MINOR=0 -BUILD=5057 +BUILD=5058 PATCH=0
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni index da0a7e0..0221dab9 100644 --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni
@@ -414,6 +414,7 @@ "java/res/drawable/ic_open_in_browser.xml", "java/res/drawable/ic_person_add_40dp.xml", "java/res/drawable/ic_reading_list_folder_24dp.xml", + "java/res/drawable/ic_recent_tabs_bulk_24dp.xml", "java/res/drawable/ic_select_window.xml", "java/res/drawable/ic_signout_40dp.xml", "java/res/drawable/ic_site_timer.xml",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 98d076b13..c6cd9473 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -48,6 +48,7 @@ "java/src/org/chromium/chrome/browser/SynchronousInitializationActivity.java", "java/src/org/chromium/chrome/browser/TabUsageTracker.java", "java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java", + "java/src/org/chromium/chrome/browser/UndoRefocusHelper.java", "java/src/org/chromium/chrome/browser/WarmupManager.java", "java/src/org/chromium/chrome/browser/WebContentsFactory.java", "java/src/org/chromium/chrome/browser/ZoomController.java", @@ -797,6 +798,7 @@ "java/src/org/chromium/chrome/browser/ntp/NewTabPageScrollView.java", "java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java", "java/src/org/chromium/chrome/browser/ntp/NewTabPageUtils.java", + "java/src/org/chromium/chrome/browser/ntp/RecentTabCountDrawable.java", "java/src/org/chromium/chrome/browser/ntp/RecentTabsExpandableListView.java", "java/src/org/chromium/chrome/browser/ntp/RecentTabsGroupView.java", "java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java",
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni index e62deb5..f6d9ca2 100644 --- a/chrome/android/chrome_junit_test_java_sources.gni +++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -10,6 +10,7 @@ "junit/src/org/chromium/chrome/browser/PowerBroadcastReceiverTest.java", "junit/src/org/chromium/chrome/browser/ShadowIdleHandlerAwareMessageQueue.java", "junit/src/org/chromium/chrome/browser/ShortcutHelperTest.java", + "junit/src/org/chromium/chrome/browser/UndoRefocusHelperTest.java", "junit/src/org/chromium/chrome/browser/about_settings/AboutSettingsBridgeTest.java", "junit/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateUnitTest.java", "junit/src/org/chromium/chrome/browser/app/download/home/FileDeletionQueueTest.java", @@ -65,6 +66,7 @@ "junit/src/org/chromium/chrome/browser/compositor/layouts/StaticLayoutUnitTest.java", "junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java", "junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TabUsageTrackerTest.java", + "junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TestTabModel.java", "junit/src/org/chromium/chrome/browser/content_capture/ContentCaptureHistoryDeletionObserverTest.java", "junit/src/org/chromium/chrome/browser/contextmenu/ContextMenuCoordinatorTest.java", "junit/src/org/chromium/chrome/browser/contextmenu/ContextMenuHeaderMediatorTest.java",
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java index f0c7a088..ac3afee2 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
@@ -13,6 +13,8 @@ import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.isEnabled; +import static androidx.test.espresso.matcher.ViewMatchers.withClassName; import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription; import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility; import static androidx.test.espresso.matcher.ViewMatchers.withId; @@ -35,6 +37,7 @@ import android.support.test.InstrumentationRegistry; import android.view.View; +import android.widget.RadioButton; import android.widget.TextView; import androidx.test.espresso.matcher.ViewMatchers.Visibility; @@ -64,8 +67,10 @@ import org.chromium.components.autofill_assistant.AssistantStaticDependencies; import org.chromium.components.autofill_assistant.R; import org.chromium.components.autofill_assistant.generic_ui.AssistantValue; +import org.chromium.components.autofill_assistant.user_data.AssistantChoiceList; import org.chromium.components.autofill_assistant.user_data.AssistantCollectUserDataCoordinator; import org.chromium.components.autofill_assistant.user_data.AssistantCollectUserDataModel; +import org.chromium.components.autofill_assistant.user_data.AssistantCollectUserDataModel.LoginChoiceModel; import org.chromium.components.autofill_assistant.user_data.AssistantContactField; import org.chromium.components.autofill_assistant.user_data.AssistantLoginChoice; import org.chromium.components.autofill_assistant.user_data.AssistantTermsAndConditionsState; @@ -606,7 +611,7 @@ model.set(AssistantCollectUserDataModel.VISIBLE, true); model.set(AssistantCollectUserDataModel.REQUEST_LOGIN_CHOICE, true); model.set(AssistantCollectUserDataModel.SELECTED_LOGIN, - new AssistantCollectUserDataModel.LoginChoiceModel(new AssistantLoginChoice( + new LoginChoiceModel(new AssistantLoginChoice( "id", "Guest", "Description of guest checkout", "", 0, null, ""))); }); @@ -615,6 +620,9 @@ isDescendantOfA(is(viewHolder.mContactSection)))) .check(matches(not(isDisplayed()))); onView(allOf(withId(R.id.section_title_add_button), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(not(isDisplayed()))); + onView(allOf(withId(R.id.section_title_add_button), isDescendantOfA(is(viewHolder.mPaymentSection)))) .check(matches(not(isDisplayed()))); onView(allOf(withId(R.id.section_title_add_button), @@ -629,6 +637,9 @@ isDescendantOfA(is(viewHolder.mContactSection)))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE))); onView(allOf(withTagValue(is(VERTICAL_EXPANDER_CHEVRON)), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(withEffectiveVisibility(Visibility.VISIBLE))); + onView(allOf(withTagValue(is(VERTICAL_EXPANDER_CHEVRON)), isDescendantOfA(is(viewHolder.mPaymentSection)))) .check(matches(withEffectiveVisibility(Visibility.VISIBLE))); onView(allOf(withTagValue(is(VERTICAL_EXPANDER_CHEVRON)), @@ -653,6 +664,9 @@ testContact("maggie@simpson.com", "Maggie Simpson\nmaggie@simpson.com", viewHolder.mContactSection.getCollapsedView(), viewHolder.mContactList.getItem(0), /* isComplete = */ true); + testContact("555 123-4567", "555 123-4567", + viewHolder.mPhoneNumberSection.getCollapsedView(), + viewHolder.mPhoneNumberList.getItem(0), /* isComplete= */ true); testPaymentMethod("1111", "Jon Doe", "12/2050", viewHolder.mPaymentSection.getCollapsedView(), viewHolder.mPaymentMethodList.getItem(0)); @@ -668,6 +682,7 @@ // does not trigger a notification. assertThat(delegate.mPaymentInstrument, is(nullValue())); assertThat(delegate.mContact, is(nullValue())); + assertThat(delegate.mPhoneNumber, is(nullValue())); assertThat(delegate.mShippingAddress, is(nullValue())); assertThat(delegate.mTermsStatus, is(AssistantTermsAndConditionsState.NOT_SELECTED)); assertThat(delegate.mLoginChoice, is(nullValue())); @@ -691,11 +706,145 @@ // Check delegate status. Setting items again will not send a notification to the delegate. assertThat(delegate.mPaymentInstrument, is(nullValue())); assertThat(delegate.mContact, is(nullValue())); + assertThat(delegate.mPhoneNumber, is(nullValue())); assertThat(delegate.mShippingAddress, is(nullValue())); assertThat(delegate.mTermsStatus, is(AssistantTermsAndConditionsState.NOT_SELECTED)); assertThat(delegate.mLoginChoice, is(nullValue())); } + /** + * Test that disabling the CollectUserData UI properly disables all the required elements. + */ + @Test + @MediumTest + public void testDisabledState() throws Exception { + PersonalDataManager.AutofillProfile profileJohn = new PersonalDataManager.AutofillProfile( + /* guid= */ "john", "https://www.example.com", /* honorificPrefix= */ "", + "John Doe", + /* companyName= */ "", "123 Main", "California", "Los Angeles", + /* dependentLocality= */ "", "90210", /* sortingCode= */ "", "US", "555 123-4567", + "johndoe@google.com", /* languageCode= */ ""); + PersonalDataManager.CreditCard creditCardJohn = + new PersonalDataManager.CreditCard(/* guid= */ "john", "https://example.com", + /* isLocal= */ true, /* isCached= */ true, "John Doe", "4111111111111111", + "1111", "12", "2050", "visa", R.drawable.visa_card, + /* billingAddressId= */ "john", /* serverId= */ ""); + + AssistantCollectUserDataModel model = createCollectUserDataModel(); + AssistantCollectUserDataCoordinator coordinator = createCollectUserDataCoordinator(model); + AutofillAssistantCollectUserDataTestHelper.MockDelegate delegate = + new AutofillAssistantCollectUserDataTestHelper.MockDelegate(); + AutofillAssistantCollectUserDataTestHelper + .ViewHolder viewHolder = TestThreadUtils.runOnUiThreadBlocking( + () -> new AutofillAssistantCollectUserDataTestHelper.ViewHolder(coordinator)); + + // Disable the UI. + TestThreadUtils.runOnUiThreadBlocking( + () -> model.set(AssistantCollectUserDataModel.ENABLE_UI_INTERACTIONS, false)); + + // Request all PR sections but leave them empty. + TestThreadUtils.runOnUiThreadBlocking(() -> { + model.set(AssistantCollectUserDataModel.WEB_CONTENTS, mTestRule.getWebContents()); + model.set(AssistantCollectUserDataModel.DELEGATE, delegate); + model.set(AssistantCollectUserDataModel.REQUEST_NAME, true); + model.set(AssistantCollectUserDataModel.CONTACT_SUMMARY_DESCRIPTION_OPTIONS, + mDefaultContactSummaryOptions); + model.set(AssistantCollectUserDataModel.CONTACT_FULL_DESCRIPTION_OPTIONS, + mDefaultContactFullOptions); + model.set(AssistantCollectUserDataModel.REQUEST_PHONE_NUMBER_SEPARATELY, true); + model.set(AssistantCollectUserDataModel.REQUEST_PAYMENT, true); + model.set(AssistantCollectUserDataModel.REQUEST_SHIPPING_ADDRESS, true); + model.set(AssistantCollectUserDataModel.REQUEST_LOGIN_CHOICE, true); + }); + + // Empty sections should have their title add button disabled. + onView(allOf(withId(R.id.section_title_add_button), + isDescendantOfA(is(viewHolder.mContactSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withId(R.id.section_title_add_button), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withId(R.id.section_title_add_button), + isDescendantOfA(is(viewHolder.mPaymentSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withId(R.id.section_title_add_button), + isDescendantOfA(is(viewHolder.mShippingSection)))) + .check(matches(not(isEnabled()))); + onView(is(viewHolder.mLoginsSection)).check(matches(not(isDisplayed()))); + + // Fill all PR sections. + TestThreadUtils.runOnUiThreadBlocking(() -> { + List<ContactModel> contacts = new ArrayList<>(); + contacts.add(new ContactModel(createDummyContact(profileJohn))); + model.set(AssistantCollectUserDataModel.AVAILABLE_CONTACTS, contacts); + model.set(AssistantCollectUserDataModel.SELECTED_CONTACT_DETAILS, contacts.get(0)); + model.set(AssistantCollectUserDataModel.AVAILABLE_PHONE_NUMBERS, contacts); + model.set(AssistantCollectUserDataModel.SELECTED_PHONE_NUMBER, contacts.get(0)); + List<AddressModel> addresses = new ArrayList<>(); + addresses.add(new AddressModel(createDummyAddress(profileJohn), + /* fullDescription= */ "John", /* summaryDescription= */ "John")); + model.set(AssistantCollectUserDataModel.AVAILABLE_SHIPPING_ADDRESSES, addresses); + model.set(AssistantCollectUserDataModel.SELECTED_SHIPPING_ADDRESS, addresses.get(0)); + List<PaymentInstrumentModel> instruments = new ArrayList<>(); + instruments.add(new PaymentInstrumentModel( + AssistantCollectUserDataModel.createAssistantPaymentInstrument( + createDummyCreditCard(creditCardJohn), + createDummyAddress(profileJohn)))); + model.set(AssistantCollectUserDataModel.AVAILABLE_PAYMENT_INSTRUMENTS, instruments); + model.set( + AssistantCollectUserDataModel.SELECTED_PAYMENT_INSTRUMENT, instruments.get(0)); + model.set(AssistantCollectUserDataModel.VISIBLE, true); + List<AssistantLoginChoice> logins = new ArrayList<>(); + logins.add(new AssistantLoginChoice(/* identifier= */ "john", /* label= */ "John Doe", + /* sublabel= */ "", /* sublabelAccessibilityHint= */ "", /* priority= */ 0, + /* infoPopup= */ null, /* editButtonContentDescription= */ "")); + model.set(AssistantCollectUserDataModel.AVAILABLE_LOGINS, logins); + model.set(AssistantCollectUserDataModel.SELECTED_LOGIN, + new LoginChoiceModel(logins.get(0))); + }); + + // Radio buttons, edit icons and the add button should be disabled. + onView(allOf(withClassName(is(RadioButton.class.getName())), + isDescendantOfA(is(viewHolder.mContactSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.EDIT_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mContactSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.ADD_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mContactSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withClassName(is(RadioButton.class.getName())), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.EDIT_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.ADD_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mPhoneNumberSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withClassName(is(RadioButton.class.getName())), + isDescendantOfA(is(viewHolder.mShippingSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.EDIT_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mShippingSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.ADD_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mShippingSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withClassName(is(RadioButton.class.getName())), + isDescendantOfA(is(viewHolder.mPaymentSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.EDIT_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mPaymentSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withTagValue(is(AssistantChoiceList.ADD_BUTTON_TAG)), + isDescendantOfA(is(viewHolder.mPaymentSection)))) + .check(matches(not(isEnabled()))); + onView(allOf(withClassName(is(RadioButton.class.getName())), + isDescendantOfA(is(viewHolder.mLoginsSection)))) + .check(matches(not(isEnabled()))); + } + /** Tests custom summary options for the contact details section. */ @Test @MediumTest
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherMediator.java index 7667151..1269246 100644 --- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherMediator.java +++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherMediator.java
@@ -86,7 +86,8 @@ mSelectedTabDidNotChangedAfterShown = false; updateSelectedTab(tab); - if (type == TabSelectionType.FROM_CLOSE || mShouldIgnoreNextSelect) { + if (type == TabSelectionType.FROM_CLOSE || type == TabSelectionType.FROM_UNDO + || mShouldIgnoreNextSelect) { mShouldIgnoreNextSelect = false; return; }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java index 977ffd6..8478f5d2 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
@@ -288,7 +288,8 @@ if (!mTabModelSelector.isTabStateInitialized()) { return; } - if (type == TabSelectionType.FROM_CLOSE || mShouldIgnoreNextSelect) { + if (type == TabSelectionType.FROM_CLOSE || mShouldIgnoreNextSelect + || type == TabSelectionType.FROM_UNDO) { mShouldIgnoreNextSelect = false; return; }
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java index 2187bebc..5a2db328 100644 --- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java +++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java
@@ -519,6 +519,21 @@ } @Test + public void doesNotHideWhenSelectedTabChangedDueToUndoTabClosure() { + doReturn(true).when(mTabModelSelector).isTabStateInitialized(); + initAndAssertAllProperties(); + mMediator.showOverview(true); + assertThat(mModel.get(TabListContainerProperties.IS_VISIBLE), equalTo(true)); + + doReturn(true).when(mTab3).isClosing(); + mTabModelObserverCaptor.getValue().didSelectTab(mTab1, TabSelectionType.FROM_UNDO, TAB3_ID); + verify(mLayout, never()).onTabSelecting(anyLong(), anyInt()); + + mTabModelObserverCaptor.getValue().didSelectTab(mTab1, TabSelectionType.FROM_USER, TAB3_ID); + verify(mLayout).onTabSelecting(anyLong(), eq(TAB1_ID)); + } + + @Test public void doesNotHideWhenSelectedTabChangedDueToModelChange() { doReturn(true).when(mTabModelSelector).isTabStateInitialized(); initAndAssertAllProperties();
diff --git a/chrome/android/java/res/drawable/ic_recent_tabs_bulk_24dp.xml b/chrome/android/java/res/drawable/ic_recent_tabs_bulk_24dp.xml new file mode 100644 index 0000000..8460448 --- /dev/null +++ b/chrome/android/java/res/drawable/ic_recent_tabs_bulk_24dp.xml
@@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2022 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. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="@macro/default_icon_color"> + <path + android:pathData="M18,5H10C7.2386,5 5,7.2386 5,10V18C5,20.7614 7.2386,23 10,23H18C20.7614,23 23,20.7614 23,18V10C23,7.2386 20.7614,5 18,5ZM7,10C7,8.3432 8.3432,7 10,7H18C19.6569,7 21,8.3432 21,10V18C21,19.6569 19.6569,21 18,21H10C8.3432,21 7,19.6569 7,18V10Z" + android:fillColor="@android:color/white" + android:fillType="evenOdd"/> + <path + android:pathData="M6,1H14C15.6358,1 17.0882,1.7855 18.0004,3H6C4.3432,3 3,4.3432 3,6V18.0004C1.7855,17.0882 1,15.6358 1,14V6C1,3.2386 3.2386,1 6,1Z" + android:fillColor="@android:color/white"/> +</vector>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index b4402d9d..d71d6a66 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -248,6 +248,7 @@ <dimen name="recent_tabs_show_history_item_size">60dp</dimen> <dimen name="recent_tabs_foreign_session_group_item_height">64dp</dimen> <dimen name="recent_tabs_default_group_item_height">48dp</dimen> + <dimen name="recent_tabs_count_text_size">11dp</dimen> <!-- Bookmarks dimensions --> <dimen name="bookmark_folder_item_left">16dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index b2e641b7..6ce5af3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1747,6 +1747,7 @@ mInactivityTracker = new ChromeInactivityTracker( ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF); TabUsageTracker.initialize(this.getLifecycleDispatcher(), tabModelSelector); + UndoRefocusHelper.initialize(tabModelSelector, getLayoutManagerSupplier(), isTablet()); assert getActivityTabStartupMetricsTracker() != null; boolean shouldShowOverviewPageOnStart = shouldShowOverviewPageOnStart();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java new file mode 100644 index 0000000..8f7d2a2 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java
@@ -0,0 +1,246 @@ +// Copyright 2022 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; + +import androidx.annotation.VisibleForTesting; + +import org.chromium.base.Callback; +import org.chromium.base.metrics.RecordUserAction; +import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; +import org.chromium.chrome.browser.flags.CachedFeatureFlags; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.layouts.LayoutStateProvider; +import org.chromium.chrome.browser.layouts.LayoutType; +import org.chromium.chrome.browser.lifecycle.DestroyObserver; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabSelectionType; +import org.chromium.chrome.browser.tabmodel.TabModel; +import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver; +import org.chromium.chrome.browser.tabmodel.TabModelUtils; + +import java.util.HashSet; +import java.util.Set; + +/** + * Refocus on previously selected tab if the selected tab closure was undone. + */ +public class UndoRefocusHelper implements DestroyObserver { + private final Set<Integer> mTabsClosedFromTabStrip; + private final TabModelSelector mModelSelector; + private final ObservableSupplier<LayoutManagerImpl> mLayoutManagerObservableSupplier; + + private LayoutManagerImpl mLayoutManager; + private LayoutStateProvider.LayoutStateObserver mLayoutStateObserver; + private TabModelSelectorTabModelObserver mTabModelSelectorTabModelObserver; + private Integer mSelectedTabIdWhenTabClosed; + private Boolean mClosedAllTabs; + private boolean mTabSwitcherActive; + private Callback<LayoutManagerImpl> mLayoutManagerSupplierCallback; + private boolean mIsTablet; + + /** + * This method is used to create and initialize the UndoRefocusHelper. + * @param modelSelector TabModelSelector used to subscribe to TabModelSelectorTabModelObserver + * to capture when tabs are being closed or the closure is being undone. + * @param layoutManagerObservableSupplier This supplies the LayoutManager implementation to + * observe the layout state when it's available. + * @param isTablet Whether the current device is a tablet. + */ + public static void initialize(TabModelSelector modelSelector, + ObservableSupplier<LayoutManagerImpl> layoutManagerObservableSupplier, + boolean isTablet) { + if (!CachedFeatureFlags.isEnabled(ChromeFeatureList.TAB_STRIP_IMPROVEMENTS)) return; + + new UndoRefocusHelper(modelSelector, layoutManagerObservableSupplier, isTablet); + } + + @VisibleForTesting + protected UndoRefocusHelper(TabModelSelector modelSelector, + ObservableSupplier<LayoutManagerImpl> layoutManagerObservableSupplier, + boolean isTablet) { + mLayoutManagerObservableSupplier = layoutManagerObservableSupplier; + mModelSelector = modelSelector; + mTabsClosedFromTabStrip = new HashSet<>(); + mTabSwitcherActive = false; + mIsTablet = isTablet; + + observeTabModel(); + observeLayoutState(); + } + + @Override + public void onDestroy() { + mTabModelSelectorTabModelObserver.destroy(); + mLayoutManagerObservableSupplier.removeObserver(mLayoutManagerSupplierCallback); + mLayoutManager.removeObserver(mLayoutStateObserver); + } + + private void observeTabModel() { + mTabModelSelectorTabModelObserver = new TabModelSelectorTabModelObserver(mModelSelector) { + @Override + public void willCloseTab(Tab tab, boolean animate) { + // TODO(crbug.com/1324405) Extract common logic between this method and + // willCloseAllTabs into a helper method. + if (mClosedAllTabs != null || tab.isIncognito()) return; + + int tabId = tab.getId(); + TabModel model = mModelSelector.getModel(false); + + if (!mTabSwitcherActive && mIsTablet) { + mTabsClosedFromTabStrip.add(tabId); + } + + int selTabIndex = model.index(); + if (selTabIndex > -1 && selTabIndex < model.getCount()) { + Tab selectedTab = model.getTabAt(selTabIndex); + if (selectedTab != null && tabId == selectedTab.getId()) { + mSelectedTabIdWhenTabClosed = tabId; + } + } + } + + @Override + public void didSelectTab(Tab tab, int type, int lastId) { + // Undoing a selected tab closure, after manually switching tabs shouldn't switch + // focus to the reopened tab. + if (type == TabSelectionType.FROM_USER || type == TabSelectionType.FROM_OMNIBOX + || type == TabSelectionType.FROM_NEW) { + resetSelectionsForUndo(); + } + } + + @Override + public void willCloseAllTabs(boolean incognito) { + if (!incognito) { + TabModel model = mModelSelector.getCurrentModel(); + int selTabIndex = model.index(); + mClosedAllTabs = true; + if (selTabIndex > -1 && selTabIndex < model.getCount()) { + Tab tab = model.getTabAt(selTabIndex); + if (tab != null) { + mSelectedTabIdWhenTabClosed = tab.getId(); + if (!mTabSwitcherActive && mIsTablet) { + mTabsClosedFromTabStrip.add(tab.getId()); + } + } + } + } + } + + @Override + public void tabClosureUndone(Tab tab) { + if (mClosedAllTabs != null) return; + int id = tab.getId(); + recordClosureCancellation(id); + if (mSelectedTabIdWhenTabClosed != null && mSelectedTabIdWhenTabClosed == id) { + selectPreviouslySelectedTab(); + } + } + + @Override + public void allTabsClosureUndone() { + if (mSelectedTabIdWhenTabClosed != null) { + recordClosureCancellation(mSelectedTabIdWhenTabClosed); + selectPreviouslySelectedTab(); + } + + resetSelectionsForUndo(); + mTabsClosedFromTabStrip.clear(); + } + + @Override + public void tabClosureCommitted(Tab tab) { + if (!tab.isIncognito()) { + resetSelectionsForUndo(); + mTabsClosedFromTabStrip.clear(); + } + } + + @Override + public void allTabsClosureCommitted(boolean isIncognito) { + if (!isIncognito) { + resetSelectionsForUndo(); + mTabsClosedFromTabStrip.clear(); + } + } + + private void recordClosureCancellation(int id) { + // Only record the action if the tab was previously closed from the tab strip. + if (mTabsClosedFromTabStrip.contains(id)) { + RecordUserAction.record("TabletTabStrip.UndoCloseTab"); + mTabsClosedFromTabStrip.remove(id); + } + } + }; + } + + private void observeLayoutState() { + mLayoutManagerSupplierCallback = this::onLayoutManagerAvailable; + mLayoutManagerObservableSupplier.addObserver(mLayoutManagerSupplierCallback); + } + + private void onLayoutManagerAvailable(LayoutManagerImpl layoutManager) { + mLayoutManager = layoutManager; + mLayoutStateObserver = new LayoutStateProvider.LayoutStateObserver() { + @Override + public void onFinishedShowing(int layoutType) { + if (layoutType != LayoutType.TAB_SWITCHER) return; + mTabSwitcherActive = true; + } + + @Override + public void onFinishedHiding(int layoutType) { + if (layoutType != LayoutType.TAB_SWITCHER) return; + mTabSwitcherActive = false; + } + }; + + mLayoutManager.addObserver(mLayoutStateObserver); + } + + /** + * If a tab closure is undone, this selects tab if it was previously selected. + */ + private void selectPreviouslySelectedTab() { + TabModel model = mModelSelector.getCurrentModel(); + if (model == null || mSelectedTabIdWhenTabClosed == null) return; + + int prevSelectedIndex = TabModelUtils.getTabIndexById(model, mSelectedTabIdWhenTabClosed); + + TabModelUtils.setIndex(model, prevSelectedIndex, false, TabSelectionType.FROM_UNDO); + resetSelectionsForUndo(); + } + + /** + * After a tab closure has been committed or user manually selects a different tab, these values + * are reset so the next undo closure action does not reselect the reopened tab. + */ + private void resetSelectionsForUndo() { + mSelectedTabIdWhenTabClosed = null; + mClosedAllTabs = null; + } + + @VisibleForTesting + public TabModelSelectorTabModelObserver getTabModelSelectorTabModelObserverForTests() { + return mTabModelSelectorTabModelObserver; + } + + @VisibleForTesting + public Callback<LayoutManagerImpl> getLayoutManagerSupplierCallbackForTests() { + return mLayoutManagerSupplierCallback; + } + + @VisibleForTesting + public void setTabSwitcherVisibilityForTests(boolean tabSwitcherActive) { + this.mTabSwitcherActive = tabSwitcherActive; + } + + @VisibleForTesting + public void setLayoutManagerForTesting(LayoutManagerImpl layoutManager) { + this.mLayoutManager = layoutManager; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java index e216677..55c69b67 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java
@@ -245,11 +245,15 @@ */ public void requestNotificationPermission( Origin origin, PermissionCallback permissionCallback) { + String channelName = ContextUtils.getApplicationContext().getResources().getString( + R.string.notification_category_group_general); connectAndExecute(origin.uri(), new ExecutionCallback() { @Override public void onConnected(Origin origin, Connection service) throws RemoteException { + Bundle commandArgs = new Bundle(); + commandArgs.putString(ARG_NOTIFICATION_CHANNEL_NAME, channelName); Bundle commandResult = service.sendExtraCommand( - COMMAND_GET_NOTIFICATION_PERMISSION_REQUEST_PENDING_INTENT, Bundle.EMPTY, + COMMAND_GET_NOTIFICATION_PERMISSION_REQUEST_PENDING_INTENT, commandArgs, /*callback=*/null); PendingIntent pendingIntent = commandResult.getParcelable( KEY_NOTIFICATION_PERMISSION_REQUEST_PENDING_INTENT);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java index 5577a8e..68d0e79 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -51,9 +51,7 @@ import org.chromium.ui.base.LocalizationUtils; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; /** * This class handles managing the positions and behavior of all tabs in a tab strip. It is @@ -178,11 +176,6 @@ private Context mContext; - // Id of the selected tab that was closed. - private Integer mSelectedTabIdWhenTabClosed; - private Boolean mClosedAllTabs; - private final Set<Integer> mTabsClosedFromTabStrip; - /** * Creates an instance of the {@link StripLayoutHelper}. * @param context The current Android {@link Context}. @@ -196,7 +189,6 @@ LayoutRenderHost renderHost, boolean incognito, CompositorButton modelSelectorButton) { mTabOverlapWidth = TAB_OVERLAP_WIDTH_DP; mNewTabButtonWidth = NEW_TAB_BUTTON_WIDTH_DP; - mTabsClosedFromTabStrip = new HashSet<>(); mModelSelectorButton = modelSelectorButton; mRightMargin = LocalizationUtils.isLayoutRtl() ? 0 : mNewTabButtonWidth; @@ -580,24 +572,13 @@ /** * Called when all tabs are closed at once. */ - public void willCloseAllTabs(boolean tabSwitcherActive) { - if (!mIncognito) { - int selTabIndex = mModel.index(); - mClosedAllTabs = true; - if (selTabIndex > -1 && selTabIndex < mModel.getCount()) { - Tab tab = mModel.getTabAt(selTabIndex); - if (tab != null) { - mSelectedTabIdWhenTabClosed = tab.getId(); - if (!tabSwitcherActive) mTabsClosedFromTabStrip.add(tab.getId()); - } - } - } + public void willCloseAllTabs() { computeAndUpdateTabOrders(true); mUpdateHost.requestUpdate(); } /** - * Called when a tab close has been undone and the tab has been restored. This also reselects + * Called when a tab close has been undone and the tab has been restored. This also re-selects * the last tab the user was on before the tab was closed. * @param time The current time of the app in ms. * @param id The id of the Tab. @@ -605,20 +586,6 @@ public void tabClosureCancelled(long time, int id) { final boolean selected = TabModelUtils.getCurrentTabId(mModel) == id; tabCreated(time, id, Tab.INVALID_TAB_ID, selected); - if (mSelectedTabIdWhenTabClosed != null && mSelectedTabIdWhenTabClosed == id) { - TabModelUtils.setIndex(mModel, - TabModelUtils.getTabIndexById(mModel, mSelectedTabIdWhenTabClosed), false); - resetSelectionsForUndo(); - } - if (mTabsClosedFromTabStrip.contains(id)) { - RecordUserAction.record("TabletTabStrip.UndoCloseTab"); - mTabsClosedFromTabStrip.remove(id); - } - } - - protected void tabClosureCommited() { - resetSelectionsForUndo(); - mTabsClosedFromTabStrip.clear(); } /** @@ -1058,9 +1025,6 @@ clickedTab.getCloseButton().handleClick(time); } else { RecordUserAction.record("MobileTabSwitched.TabletTabStrip"); - // Undoing a selected tab closure, after manually switching tabs shouldn't switch focus - // to the reopened tab. - resetSelectionsForUndo(); recordTabSwitchTimeHistogram(); clickedTab.handleClick(time); } @@ -1761,39 +1725,6 @@ if (requestUpdate) mUpdateHost.requestUpdate(); } - /** - * When a tab is being closed, this keeps track of whether it was selected or not. If the tab - * closure is undone, that helps us decide whether to select it or not. - * @param tabId Id of the tab that will be closed. - * @param tabSwitcherActive If the tab switcher interface is showing. This is used to identify - * the tabs closed from the tab strip for metrics. - */ - protected void willCloseTab(int tabId, boolean tabSwitcherActive) { - // If all tabs are closed, return early as this method gets called multiple times and the - // mModel.index() value is inaccurate. allTabsClosed() method handles that case. - if (mClosedAllTabs != null) return; - if (!tabSwitcherActive) { - mTabsClosedFromTabStrip.add(tabId); - } - - int selTabIndex = mModel.index(); - if (selTabIndex > -1 && selTabIndex < mModel.getCount()) { - Tab tab = mModel.getTabAt(selTabIndex); - if (tab != null && tabId == tab.getId()) { - mSelectedTabIdWhenTabClosed = tabId; - } - } - } - - /** - * After a tab closure has been committed or user manually selects a different tab, these values - * should be reset so the next undo closure action does not reselect the reopened tab. - */ - private void resetSelectionsForUndo() { - mSelectedTabIdWhenTabClosed = null; - mClosedAllTabs = null; - } - @SuppressLint("HandlerLeak") private class StripTabEventHandler extends Handler { @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java index 12cf54b..340bbb7f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -95,7 +95,6 @@ private Context mContext; private final StripScrim mStripScrim; private boolean mBrowserScrimShowing; - private boolean mTabSwitcherActive; private ValueAnimator mScrimFadeAnimation; private TabStripSceneLayer mTabStripTreeProvider; @@ -190,18 +189,6 @@ } @Override - public void onFinishedShowing(int layoutType) { - if (layoutType != LayoutType.TAB_SWITCHER) return; - mTabSwitcherActive = true; - } - - @Override - public void onFinishedHiding(int layoutType) { - if (layoutType != LayoutType.TAB_SWITCHER) return; - mTabSwitcherActive = false; - } - - @Override public void onStartedHiding( @LayoutType int layoutType, boolean showToolbar, boolean delayAnimation) { if (layoutType != LayoutType.TAB_SWITCHER) return; @@ -570,7 +557,6 @@ if (mLayerTitleCacheSupplier.hasValue()) { mLayerTitleCacheSupplier.get().remove(tab.getId()); } - getStripLayoutHelper(tab.isIncognito()).tabClosureCommited(); } @Override @@ -586,25 +572,16 @@ } @Override - public void willCloseTab(Tab tab, boolean animate) { - if (!tab.isIncognito()) { - getStripLayoutHelper(tab.isIncognito()) - .willCloseTab(tab.getId(), mTabSwitcherActive); - } - } - - @Override public void willCloseAllTabs(boolean incognito) { - getStripLayoutHelper(incognito).willCloseAllTabs(mTabSwitcherActive); + getStripLayoutHelper(incognito).willCloseAllTabs(); updateModelSwitcherButton(); } @Override - public void allTabsClosureCommitted() { + public void allTabsClosureCommitted(boolean incognito) { if (mLayerTitleCacheSupplier.hasValue()) { mLayerTitleCacheSupplier.get().clearExcept(Tab.INVALID_TAB_ID); } - getStripLayoutHelper(false).tabClosureCommited(); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabCountDrawable.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabCountDrawable.java new file mode 100644 index 0000000..091d454 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabCountDrawable.java
@@ -0,0 +1,143 @@ +// Copyright 2022 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.ntp; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.Canvas; +import android.graphics.Paint.Align; +import android.graphics.PixelFormat; +import android.graphics.PorterDuff; +import android.graphics.Rect; +import android.graphics.Typeface; +import android.graphics.drawable.DrawableWrapper; +import android.text.TextPaint; + +import androidx.appcompat.content.res.AppCompatResources; + +import org.chromium.chrome.R; +import org.chromium.ui.UiUtils; + +import java.util.Locale; + +/** + * Class for drawing a tab count icon on the Recent Tabs Page for bulk tab closures. + * + * Loosely based on {@link TabSwitcherDrawable} and modified to handle an SVG asset. + */ +public class RecentTabCountDrawable extends DrawableWrapper { + // Avoid allocations during draw by pre-allocating a rect. + private final Rect mTextBounds = new Rect(); + private final TextPaint mTextPaint; + private ColorStateList mTint; + + private int mTabCount; + + /** + * Creates a recent tab count icon. A stacked squircle with a number inside for a count. + * @param context The context for getting resources. + */ + public RecentTabCountDrawable(Context context) { + super(UiUtils.getTintedDrawable(context, R.drawable.ic_recent_tabs_bulk_24dp, + R.color.default_icon_color_tint_list)); + + mTextPaint = new TextPaint(); + setTint(AppCompatResources.getColorStateList( + context, R.color.default_icon_color_tint_list)); + + mTextPaint.setAntiAlias(true); + mTextPaint.setTextAlign(Align.CENTER); + mTextPaint.setTypeface(Typeface.create("sans-serif-condensed", Typeface.BOLD)); + mTextPaint.setColor(getColorForState()); + mTextPaint.setTextSize( + context.getResources().getDimension(R.dimen.recent_tabs_count_text_size)); + } + + /** + * Update the count value inside the icon. + * @param tabCount the number to display in the icon. + */ + public void updateTabCount(int tabCount) { + if (tabCount == mTabCount) return; + mTabCount = tabCount; + invalidateSelf(); + } + + public void setTint(ColorStateList tint) { + if (mTint == tint) return; + mTint = tint; + updateTintColor(); + super.setTint(getColorForState()); + if (mTextPaint != null) mTextPaint.setColor(getColorForState()); + } + + // DrawableWrapper implementation. + @Override + public void setTint(int tint) { + setTint(ColorStateList.valueOf(tint)); + } + + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + + // Add text string. + String textString = getTabCountString(); + if (!textString.isEmpty()) { + mTextPaint.getTextBounds(textString, 0, textString.length(), mTextBounds); + Rect bounds = super.getBounds(); + // Constants are based on X/Y position in the icon from the redlines the UX designer + // provided. + final int textX = bounds.left + Math.round(0.583f * bounds.width()); + final int textY = bounds.top + Math.round(14.0f / 24.0f * bounds.height()) + + (mTextBounds.bottom - mTextBounds.top) / 2 - mTextBounds.bottom; + + canvas.drawText(textString, textX, textY, mTextPaint); + } + } + + @Override + protected boolean onStateChange(int[] state) { + boolean ret = updateTintColor(); + if (ret) mTextPaint.setColor(getColorForState()); + return ret || super.onStateChange(state); + } + + @Override + public boolean isStateful() { + return true; + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSLUCENT; + } + + @Override + public void setAlpha(int alpha) { + super.setAlpha(alpha); + mTextPaint.setAlpha(alpha); + } + + private boolean updateTintColor() { + if (mTint == null) return false; + setColorFilter(getColorForState(), PorterDuff.Mode.SRC_IN); + return true; + } + + private String getTabCountString() { + if (mTabCount <= 0) { + return ""; + } else if (mTabCount > 99) { + return ":D"; + } else { + return String.format(Locale.getDefault(), "%d", mTabCount); + } + } + + private int getColorForState() { + return mTint.getColorForState(getState(), 0); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java index c5e5583..9854eb7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsRowAdapter.java
@@ -32,12 +32,10 @@ import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionTab; import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionWindow; import org.chromium.chrome.browser.signin.SyncPromoView; -import org.chromium.chrome.browser.toolbar.TabSwitcherDrawable; import org.chromium.chrome.browser.ui.favicon.FaviconHelper.DefaultFaviconHelper; import org.chromium.chrome.browser.ui.favicon.FaviconHelper.FaviconImageCallback; import org.chromium.chrome.browser.ui.favicon.FaviconUtils; import org.chromium.chrome.browser.ui.signin.SigninPromoController.SyncPromoState; -import org.chromium.chrome.browser.ui.theme.BrandedColorScheme; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.RoundedIconGenerator; import org.chromium.components.embedder_support.util.UrlUtilities; @@ -561,24 +559,30 @@ String groupTitle = recentlyClosedGroup.getTitle(); if (TextUtils.isEmpty(groupTitle)) { viewHolder.textView.setText(mActivity.getResources().getString( - R.string.recent_tabs_group_closure_without_title)); + R.string.recent_tabs_group_closure_without_title, tabCount)); } else { viewHolder.textView.setText(mActivity.getResources().getString( R.string.recent_tabs_group_closure_with_title, groupTitle)); } } if (entry instanceof RecentlyClosedBulkEvent) { - tabCount = ((RecentlyClosedBulkEvent) entry).getTabs().size(); + RecentlyClosedBulkEvent recentlyClosedBulkEvent = + (RecentlyClosedBulkEvent) entry; + tabCount = recentlyClosedBulkEvent.getTabs().size(); viewHolder.textView.setText(mActivity.getResources().getString( R.string.recent_tabs_bulk_closure, tabCount)); } - String dateString = - DateFormat.getDateInstance(DateFormat.LONG, getPreferredLocale()) - .format(entry.getDate()); - viewHolder.domainView.setText(dateString); - viewHolder.domainView.setVisibility(View.VISIBLE); + // Entries without dates have a time of 0. TabRestoreService may not save timestamps + // between restarts. + if (entry.getDate().getTime() != 0L) { + String dateString = + DateFormat.getDateInstance(DateFormat.LONG, getPreferredLocale()) + .format(entry.getDate()); + viewHolder.domainView.setText(dateString); + viewHolder.domainView.setVisibility(View.VISIBLE); + } loadTabCount(viewHolder, tabCount); } else { RecentlyClosedTab tab = (RecentlyClosedTab) entry; @@ -765,9 +769,8 @@ } private void loadTabCount(final ViewHolder viewHolder, int tabCount) { - TabSwitcherDrawable image = TabSwitcherDrawable.createTabSwitcherDrawable( - mActivity, BrandedColorScheme.APP_DEFAULT); - image.updateForTabCount(tabCount, false); + RecentTabCountDrawable image = new RecentTabCountDrawable(mActivity); + image.updateTabCount(tabCount); viewHolder.imageView.setImageDrawable(image); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManager.java index d2de13bb..e50544baa 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManager.java
@@ -37,6 +37,11 @@ public void finalizeClosure(Tab tab); /** + * Notify observers about completion of undo action to restore all tabs. + */ + public void notifyAllTabsClosureUndone(); + + /** * Request to notify observers that {@code tabs} will be closed. * @param tabs The list of tabs to close together. */ @@ -321,6 +326,13 @@ } /** + * Notify observers about completion of undo action to restore all tabs. + */ + public void notifyAllTabsClosureUndone() { + mDelegate.notifyAllTabsClosureUndone(); + } + + /** * Commits all tab closures in the order in which {@link #addTabClosureEvent(List<Tab>)} was * called. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java index a0abb1f..cd0f748 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
@@ -106,7 +106,8 @@ // tab, otherwise just set mIndex but don't kick off everything that // happens when calling setIndex(). if (activeModel) { - TabModelUtils.setIndex(TabModelImpl.this, insertIndex, false); + TabModelUtils.setIndex(TabModelImpl.this, insertIndex, false, + TabSelectionType.FROM_UNDO); } else { mIndex = insertIndex; } @@ -121,6 +122,13 @@ } @Override + public void notifyAllTabsClosureUndone() { + for (TabModelObserver obs : mObservers) { + obs.allTabsClosureUndone(); + } + } + + @Override public void notifyDidCloseTabs(List<Tab> tabs) { TabModelImpl.this.notifyDidCloseTabs(tabs); } @@ -371,7 +379,14 @@ mPendingTabClosureManager.commitAllTabClosures(); - for (TabModelObserver obs : mObservers) obs.allTabsClosureCommitted(); + for (TabModelObserver obs : mObservers) obs.allTabsClosureCommitted(isIncognito()); + } + + @Override + public void notifyAllTabsClosureUndone() { + if (!supportsPendingClosures()) return; + + mPendingTabClosureManager.notifyAllTabsClosureUndone(); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java index 7c3b4d9..6bf0a781 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge.java
@@ -119,7 +119,7 @@ } @Override - public final void allTabsClosureCommitted() { + public final void allTabsClosureCommitted(boolean isIncognito) { assert mNativeTabModelObserverJniBridge != 0; TabModelObserverJniBridgeJni.get().allTabsClosureCommitted( mNativeTabModelObserverJniBridge, TabModelObserverJniBridge.this);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java index 93e40b1..57fd7a1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java
@@ -147,7 +147,7 @@ } @Override - public void allTabsClosureCommitted() { + public void allTabsClosureCommitted(boolean isIncognito) { if (disableUndo(false)) return; mSnackbarManagable.getSnackbarManager().dismissSnackbars(UndoBarController.this); } @@ -236,9 +236,15 @@ for (Tab tab : (List<Tab>) actionData) { cancelTabClosure(tab.getId()); } + notifyAllTabsClosureUndone(); } } + private void notifyAllTabsClosureUndone() { + TabModel model = mTabModelSelector.getCurrentModel(); + if (model != null) model.notifyAllTabsClosureUndone(); + } + private void cancelTabClosure(int tabId) { TabModel model = mTabModelSelector.getModelForTabId(tabId); if (model != null) model.cancelTabClosure(tabId);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java index f675e3b..51d35d8 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java
@@ -289,8 +289,8 @@ */ public static PendingIntent addActionButtonToIntent( Intent intent, Bitmap icon, String description, int id) { - PendingIntent pi = PendingIntent.getBroadcast( - InstrumentationRegistry.getTargetContext(), 0, new Intent(), 0); + PendingIntent pi = PendingIntent.getBroadcast(InstrumentationRegistry.getTargetContext(), 0, + new Intent(), IntentUtils.getPendingIntentMutabilityFlag(true)); intent.putExtra(CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE, makeToolbarItemBundle(icon, description, pi, id)); return pi;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/RecentTabsPageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/RecentTabsPageTest.java index 2f7e115..eea1da3 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/RecentTabsPageTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/RecentTabsPageTest.java
@@ -132,10 +132,10 @@ } @Test - @MediumTest - @Feature({"RecentTabsPage"}) + @LargeTest + @Feature({"RecentTabsPage", "RenderTest"}) @EnableFeatures({ChromeFeatureList.BULK_TAB_RESTORE}) - public void testRecentlyClosedGroup_WithTitle() throws ExecutionException { + public void testRecentlyClosedGroup_WithTitle() throws Exception { mPage = loadRecentTabsPage(); // Set a recently closed group and confirm a view is rendered for it. final RecentlyClosedGroup group = new RecentlyClosedGroup(2, 0, "Group Title"); @@ -151,6 +151,8 @@ }); final View view = waitForView(groupString); + mRenderTestRule.render(mPage.getView(), "recently_closed_group_with_title"); + final int groupIdx = !DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) ? 0 : 1; TestThreadUtils.runOnUiThreadBlocking( () -> { mPage.onChildClick(null, null, groupIdx, 0, 0); }); @@ -164,25 +166,28 @@ } @Test - @MediumTest - @Feature({"RecentTabsPage"}) + @LargeTest + @Feature({"RecentTabsPage", "RenderTest"}) @EnableFeatures({ChromeFeatureList.BULK_TAB_RESTORE}) - public void testRecentlyClosedGroup_WithoutTitle() throws ExecutionException { + public void testRecentlyClosedGroup_WithoutTitle() throws Exception { mPage = loadRecentTabsPage(); + long time = 904881600000L; // Set a recently closed group and confirm a view is rendered for it. - final RecentlyClosedGroup group = new RecentlyClosedGroup(2, 0, null); + final RecentlyClosedGroup group = new RecentlyClosedGroup(2, time, null); group.getTabs().add(new RecentlyClosedTab( - 0, 0, "Tab Title 0", new GURL("https://www.example.com/url/0"), "group1")); + 0, time, "Tab Title 0", new GURL("https://www.example.com/url/0"), "group1")); group.getTabs().add(new RecentlyClosedTab( - 1, 0, "Tab Title 1", new GURL("https://www.example.com/url/1"), "group1")); + 1, time, "Tab Title 1", new GURL("https://www.example.com/url/1"), "group1")); setRecentlyClosedEntries(Collections.singletonList(group)); Assert.assertEquals(1, mManager.getRecentlyClosedEntries(1).size()); final String groupString = TestThreadUtils.runOnUiThreadBlockingNoException(() -> { return mActivity.getResources().getString( - R.string.recent_tabs_group_closure_without_title); + R.string.recent_tabs_group_closure_without_title, group.getTabs().size()); }); final View view = waitForView(groupString); + mRenderTestRule.render(mPage.getView(), "recently_closed_group_without_title"); + final int groupIdx = !DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) ? 0 : 1; TestThreadUtils.runOnUiThreadBlocking( () -> { mPage.onChildClick(null, null, groupIdx, 0, 0); }); @@ -196,20 +201,21 @@ } @Test - @MediumTest - @Feature({"RecentTabsPage"}) + @LargeTest + @Feature({"RecentTabsPage", "RenderTest"}) @EnableFeatures({ChromeFeatureList.BULK_TAB_RESTORE}) - public void testRecentlyClosedBulkEvent() throws ExecutionException { + public void testRecentlyClosedBulkEvent() throws Exception { mPage = loadRecentTabsPage(); + long time = 904881600000L; // Set a recently closed bulk event and confirm a view is rendered for it. - final RecentlyClosedBulkEvent event = new RecentlyClosedBulkEvent(3, 0); + final RecentlyClosedBulkEvent event = new RecentlyClosedBulkEvent(3, time); event.getGroupIdToTitleMap().put("group1", "Group 1 Title"); event.getTabs().add(new RecentlyClosedTab( - 0, 0, "Tab Title 0", new GURL("https://www.example.com/url/0"), "group1")); + 0, time, "Tab Title 0", new GURL("https://www.example.com/url/0"), "group1")); event.getTabs().add(new RecentlyClosedTab( - 1, 0, "Tab Title 1", new GURL("https://www.example.com/url/1"), "group1")); + 1, time, "Tab Title 1", new GURL("https://www.example.com/url/1"), "group1")); event.getTabs().add(new RecentlyClosedTab( - 2, 0, "Tab Title 2", new GURL("https://www.example.com/url/2"), null)); + 2, time, "Tab Title 2", new GURL("https://www.example.com/url/2"), null)); setRecentlyClosedEntries(Collections.singletonList(event)); Assert.assertEquals(1, mManager.getRecentlyClosedEntries(1).size()); final int size = event.getTabs().size(); @@ -218,6 +224,8 @@ }); final View view = waitForView(eventString); + mRenderTestRule.render(mPage.getView(), "recently_closed_bulk_event"); + final int groupIdx = !DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) ? 0 : 1; TestThreadUtils.runOnUiThreadBlocking( () -> { mPage.onChildClick(null, null, groupIdx, 0, 0); });
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/UndoRefocusHelperTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/UndoRefocusHelperTest.java new file mode 100644 index 0000000..b3c3ff1 --- /dev/null +++ b/chrome/android/junit/src/org/chromium/chrome/browser/UndoRefocusHelperTest.java
@@ -0,0 +1,334 @@ +// Copyright 2022 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; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +import org.chromium.base.Callback; +import org.chromium.base.metrics.UmaRecorder; +import org.chromium.base.metrics.UmaRecorderHolder; +import org.chromium.base.metrics.test.ShadowRecordHistogram; +import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; +import org.chromium.chrome.browser.compositor.overlays.strip.TestTabModel; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabSelectionType; +import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver; +import org.chromium.chrome.test.util.browser.Features; + +import java.util.List; +import java.util.concurrent.TimeoutException; + +/** + * Test suite to verify that the TabUsageTracker correctly records the number of tabs used and the + * percentage of tabs used. + */ +@RunWith(BaseRobolectricTestRunner.class) +@Features.EnableFeatures(ChromeFeatureList.TAB_STRIP_IMPROVEMENTS) +@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class}) +public class UndoRefocusHelperTest { + @Mock + TabModelSelector mTabModelSelector; + @Mock + ObservableSupplier<LayoutManagerImpl> mLayoutManagerObservableSupplier; + @Mock + private UmaRecorder mUmaRecorder; + + private static final String UNDO_CLOSE_TAB_USER_ACTION = "TabletTabStrip.UndoCloseTab"; + private final TestTabModel mModel = new TestTabModel(); + + private UndoRefocusHelper mUndoRefocusHelper; + + @Before + public void setUp() throws TimeoutException { + MockitoAnnotations.initMocks(this); + UmaRecorderHolder.setNonNativeDelegate(mUmaRecorder); + Mockito.when(mTabModelSelector.getCurrentModel()).thenReturn(mModel); + Mockito.when(mTabModelSelector.getModel(false)).thenReturn(mModel); + + mUndoRefocusHelper = + new UndoRefocusHelper(mTabModelSelector, mLayoutManagerObservableSupplier, true); + } + + private void initializeTabModel(int selectedIndex) { + for (int i = 0; i < 5; i++) { + mModel.addTab("Tab" + i); + } + + mModel.setIndex(selectedIndex); + } + + @After + public void tearDown() {} + + @Test + @Feature("Tab Strip Improvements") + public void testUndoTabClose_SelectedTab_ReselectsTab() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + + // Act: Close fourth tab (selected) and undo closed tab. + Tab tab = getMockedTab(3); + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + // When the fourth tab is closed, the third one should be selected. + mModel.setIndex(2); + // Undo 4th tab closure. + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: Fourth tab is selected after undo. + assertEquals(3, mModel.index()); + } + + @Test + @Feature("Tab Strip Improvements") + public void testUndoTabClose_UnSelectedTab_DoesNotSelectTab() { + // Arrange: Initialize tabs with third tab selected. + initializeTabModel(2); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + + // Act: Close fourth tab (not selected) and undo closed tab. + Tab tab = getMockedTab(3); + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + // When the fourth tab is closed, the third one should be selected. + mModel.setIndex(2); + // Undo 4th tab closure. + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: Fourth tab is not selected after undo. + assertNotEquals(3, mModel.index()); + } + + @Test + @Feature("Tab Strip Improvements") + public void testUndoAllTabsClose_ReselectsSelectedTab() { + // Arrange: Start with fourth tab as selected index. + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + + // Act: Close all tabs and undo closure. + tabModelSelectorTabModelObserver.willCloseAllTabs(false); + cancelAllTabClosure(tabModelSelectorTabModelObserver); + // Finalize closure cancellation completion. + tabModelSelectorTabModelObserver.allTabsClosureUndone(); + + // Assert: Fourth tab is selected after undo. + assertEquals(3, mModel.index()); + } + + @Test + @Feature("Tab Strip Improvements") + public void testUndoAllTabsClosed_ThenUndoSingleTabClose_ReselectsTab() { + // Arrange: Start with fourth tab as selected index. + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + + // Act: Close all tabs and undo closure. + tabModelSelectorTabModelObserver.willCloseAllTabs(false); + cancelAllTabClosure(tabModelSelectorTabModelObserver); + // Finalize closure cancellation completion. + tabModelSelectorTabModelObserver.allTabsClosureUndone(); + + // Assert: Fourth tab is selected after undo. + assertEquals(3, mModel.index()); + + // Act 2: Close just the fourth tab and undo. + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + // After fourth tab is closed, the third one should be selected. + mModel.setIndex(2); + // Undo tab closure. + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: Third tab is selected after undo. + assertEquals(3, mModel.index()); + } + + @Test + @Feature("Tab Strip Improvements") + public void testUndoSingleTabClose_ThenUndoAllTabsClosed_ReselectsTab() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + + // Act 1: Close just the fourth tab and undo. + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + // After fourth tab is closed, the third one should be selected. + mModel.setIndex(2); + // Undo tab closure. + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: Fourth tab is selected after undo. + assertEquals(3, mModel.index()); + + // Act 2: Close all tabs and undo closure + tabModelSelectorTabModelObserver.willCloseAllTabs(false); + cancelAllTabClosure(tabModelSelectorTabModelObserver); + // Finalize closure cancellation completion. + tabModelSelectorTabModelObserver.allTabsClosureUndone(); + + // Assert: Fourth tab is selected after undo. + assertEquals(mModel.index(), 3); + } + + @Test + @Feature("Tab Strip Improvements") + public void testUndoSingleTabClose_AfterManualTabReselection_DoesNotReselectTab() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + Tab secondTab = getMockedTab(1); + + // Act 1: Close just the fourth tab and undo. + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + // After fourth tab is closed, the third one should be selected. + mModel.setIndex(2); + + // User manually selects the second tab before undoing the tab closure. + mockClickTab(secondTab, tabModelSelectorTabModelObserver, tab.getId()); + // Undo tab closure. + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: Second tab is still selected after undo. + assertEquals(1, mModel.index()); + } + + @Test + public void testUndoTabClose_TabStrip_RecordsUserAction() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + + // Act: Close tab and undo closed tab. + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: User action is recorded. + Mockito.verify(mUmaRecorder) + .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), Mockito.anyLong()); + } + + @Test + public void testUndoTabClose_TabSwitcher_DoesNotRecordUserAction() { + // Arrange: Start with fourth tab as selected index and tab switcher showing. + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + mUndoRefocusHelper.setTabSwitcherVisibilityForTests(true); + + // Act: Close tab and undo closed tab. + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: User action is not recorded. + Mockito.verify(mUmaRecorder, Mockito.never()) + .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), Mockito.anyLong()); + } + + @Test + public void testUndoTabClose_TabSwitcherAndTabStrip_RecordsUserAction() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + Tab tab = getMockedTab(3); + Tab secondTab = getMockedTab(3); + + // Act: Close 2 tabs and undo, one with tab switcher open. + mUndoRefocusHelper.setTabSwitcherVisibilityForTests(true); + tabModelSelectorTabModelObserver.willCloseTab(tab, false); + mUndoRefocusHelper.setTabSwitcherVisibilityForTests(false); + tabModelSelectorTabModelObserver.willCloseTab(secondTab, false); + + tabModelSelectorTabModelObserver.tabClosureUndone(secondTab); + tabModelSelectorTabModelObserver.tabClosureUndone(tab); + + // Assert: User action is recorded exactly once. + Mockito.verify(mUmaRecorder, Mockito.times(1)) + .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), Mockito.anyLong()); + } + + @Test + public void testUndoAllTabClose_RecordsSingleUserAction() { + // Arrange: Start with fourth tab as selected index + initializeTabModel(3); + TabModelSelectorTabModelObserver tabModelSelectorTabModelObserver = + mUndoRefocusHelper.getTabModelSelectorTabModelObserverForTests(); + + // Act: Close all tabs and undo. + tabModelSelectorTabModelObserver.willCloseAllTabs(false); + cancelAllTabClosure(tabModelSelectorTabModelObserver); + tabModelSelectorTabModelObserver.allTabsClosureUndone(); + + // Assert: User action is recorded exactly once. + Mockito.verify(mUmaRecorder, Mockito.times(1)) + .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), Mockito.anyLong()); + } + + @Test + @SmallTest + public void testOnDestroy() { + LayoutManagerImpl layoutManager = Mockito.mock(LayoutManagerImpl.class); + mUndoRefocusHelper.setLayoutManagerForTesting(layoutManager); + + // Act + mUndoRefocusHelper.onDestroy(); + + // Assert + Callback<LayoutManagerImpl> supplierCallback = + mUndoRefocusHelper.getLayoutManagerSupplierCallbackForTests(); + Mockito.verify(mLayoutManagerObservableSupplier).removeObserver(supplierCallback); + Mockito.verify(mTabModelSelector).removeObserver(Mockito.any()); + Mockito.verify(layoutManager).removeObserver(Mockito.any()); + } + + private Tab getMockedTab(int id) { + Tab tab1 = Mockito.mock(Tab.class); + Mockito.when(tab1.isIncognito()).thenReturn(false); + Mockito.when(tab1.getId()).thenReturn(id); + + return tab1; + } + + private void cancelAllTabClosure(TabModelSelectorTabModelObserver modelSelectorModelObserver) { + List<Tab> tabs = mModel.getAllTabs(); + for (int i = 0; i < tabs.size(); i++) { + modelSelectorModelObserver.tabClosureUndone(tabs.get(i)); + } + } + + private void mockClickTab( + Tab tab, TabModelSelectorTabModelObserver modelSelectorModelObserver, int prevId) { + mModel.setIndex(tab.getId()); + modelSelectorModelObserver.didSelectTab(tab, TabSelectionType.FROM_USER, prevId); + } +}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java index 5ed576e7..5fda5ae0 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
@@ -6,12 +6,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; @@ -29,8 +25,6 @@ import org.robolectric.Robolectric; import org.robolectric.annotation.Config; -import org.chromium.base.metrics.UmaRecorder; -import org.chromium.base.metrics.UmaRecorderHolder; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.Feature; import org.chromium.chrome.R; @@ -39,10 +33,6 @@ import org.chromium.chrome.browser.compositor.layouts.components.CompositorButton; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.layouts.components.VirtualView; -import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.browser.tab.TabImpl; -import org.chromium.chrome.browser.tab.TabSelectionType; -import org.chromium.chrome.browser.tabmodel.EmptyTabModel; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.test.util.browser.Features; import org.chromium.ui.base.LocalizationUtils; @@ -57,12 +47,12 @@ public class StripLayoutHelperTest { @Rule public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor(); - @Mock private LayoutUpdateHost mUpdateHost; - @Mock private LayoutRenderHost mRenderHost; + @Mock + private LayoutUpdateHost mUpdateHost; + @Mock + private LayoutRenderHost mRenderHost; @Mock private CompositorButton mModelSelectorBtn; - @Mock - private UmaRecorder mUmaRecorder; private Activity mActivity; private TestTabModel mModel = new TestTabModel(); @@ -74,7 +64,6 @@ private static final String IDENTIFIER_SELECTED = "Selected Tab"; private static final String INCOGNITO_IDENTIFIER = "Incognito Tab"; private static final String INCOGNITO_IDENTIFIER_SELECTED = "Selected Incognito Tab"; - private static final String UNDO_CLOSE_TAB_USER_ACTION = "TabletTabStrip.UndoCloseTab"; private static final float SCREEN_WIDTH = 800.f; private static final float SCREEN_HEIGHT = 1600.f; private static final float TAB_WIDTH_1 = 140.f; @@ -92,7 +81,6 @@ @Before public void beforeTest() { MockitoAnnotations.initMocks(this); - UmaRecorderHolder.setNonNativeDelegate(mUmaRecorder); when(mModelSelectorBtn.isVisible()).thenReturn(true); mActivity = Robolectric.buildActivity(Activity.class).setup().get(); @@ -185,7 +173,7 @@ mModel.closeAllTabs(); // Notify strip of tab closure - mStripLayoutHelper.willCloseAllTabs(false); + mStripLayoutHelper.willCloseAllTabs(); // Verify strip has no tabs. assertTrue(mStripLayoutHelper.getStripLayoutTabs().length == 0); @@ -540,204 +528,6 @@ assertEquals(mStripLayoutHelper.getExpandDurationForTesting(), 450); } - @Test - @Feature("Tab Strip Improvements") - public void testUndoTabClose_SelectedTab_ReselectsTab() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - - // Act: Close fourth tab (selected) and undo closed tab. - mStripLayoutHelper.willCloseTab(3, false); - // When the third tab is closed, the second one should be selected. - mModel.setIndex(2); - // Undo 4th tab closure. - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: Fourth tab is selected after undo. - assertEquals(mModel.index(), 3); - } - - @Test - @Feature("Tab Strip Improvements") - public void testUndoTabClose_UnSelectedTab_DoesNotSelectTab() { - // Arrange: Initialize tabs with third tab selected. - initializeTest(true, true, 2); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act: Close fourth tab (not selected) and undo closed tab. - mStripLayoutHelper.willCloseTab(3, false); - // Undo 4th tab closure. - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: Fourth tab is not selected after undo. - assertNotEquals(mModel.index(), 3); - } - - @Test - @Feature("Tab Strip Improvements") - public void testUndoAllTabsClose_ReselectsSelectedTab() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act: Close all tabs and undo closure - mStripLayoutHelper.willCloseAllTabs(false); - // Undo closure. - cancelAllTabClosure(tabs); - - // Assert: Fourth tab is selected after undo. - assertEquals(3, mModel.index()); - } - - @Test - @Feature("Tab Strip Improvements") - public void testUndoAllTabsClosed_ThenUndoSingleTabClose_ReselectsTab() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act: Close all tabs and undo closure - mStripLayoutHelper.willCloseAllTabs(false); - // Undo closure. - cancelAllTabClosure(tabs); - - // Assert: Fourth tab is selected after undo. - assertEquals(mModel.index(), 3); - - // Act 2: Close just the fourth tab and undo. - mStripLayoutHelper.willCloseTab(3, false); - // After fourth tab is closed, the third one should be selected. - mModel.setIndex(2); - // Undo tab closure. - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: Third tab is selected after undo. - assertEquals(3, mModel.index()); - } - - @Test - @Feature("Tab Strip Improvements") - public void testUndoSingleTabClose_ThenUndoAllTabsClosed_ReselectsTab() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act 1: Close just the fourth tab and undo. - mStripLayoutHelper.willCloseTab(3, false); - // After fourth tab is closed, the third one should be selected. - mModel.setIndex(2); - // Undo tab closure. - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: Fourth tab is selected after undo. - assertEquals(3, mModel.index()); - - // Act 2: Close all tabs and undo closure - mStripLayoutHelper.willCloseAllTabs(false); - // Undo closure. - cancelAllTabClosure(tabs); - - // Assert: Fourth tab is selected after undo. - assertEquals(mModel.index(), 3); - } - - @Test - @Feature("Tab Strip Improvements") - public void testUndoSingleTabClose_AfterManualTabReselection_DoesNotReselectTab() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - when(tabs[1].isVisible()).thenReturn(true); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act 1: Close just the fourth tab, click on the second tab, and undo. - mStripLayoutHelper.willCloseTab(3, false); - // After fourth tab is closed, the third one should be automatically selected. - mModel.setIndex(2); - // User manually selects the second tab before undoing the tab closure. - mockClickOnTab(1); - // Undo tab closure. - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: Second tab is still selected after undo. - assertEquals(1, mModel.index()); - } - - @Test - public void testUndoTabClose_TabStrip_RecordsUserAction() { - initializeTest(true, true, 3); - - // Act: Close tab and undo closed tab. - mStripLayoutHelper.willCloseTab(3, false); - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: User action is recorded. - verify(mUmaRecorder).recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), anyLong()); - } - - @Test - public void testUndoTabClose_TabSwitcher_DoesNotRecordUserAction() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - - // Act: Close tab and undo closed tab. - mStripLayoutHelper.willCloseTab(3, true); - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: User action is not recorded. - verify(mUmaRecorder, Mockito.never()) - .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), anyLong()); - } - - @Test - public void testUndoTabClose_TabSwitcherAndTabStrip_RecordsUserAction() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, true, 3); - - // Act: Close tab and undo closed tab. - mStripLayoutHelper.willCloseTab(3, true); - mStripLayoutHelper.willCloseTab(2, false); - - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 2); - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, 3); - - // Assert: User action is not recorded. - verify(mUmaRecorder, times(1)) - .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), anyLong()); - } - - @Test - public void testUndoAllTabClose_RecordsSingleUserAction() { - // Arrange: Initialize tabs with fourth tab selected. - initializeTest(true, false, 3); - StripLayoutTab[] tabs = getMockedStripLayoutTabs(TAB_WIDTH_2, 150.f, 5); - mStripLayoutHelper.setStripLayoutTabsForTest(tabs); - - // Act: Close all tabs and undo. - mStripLayoutHelper.willCloseAllTabs(false); - cancelAllTabClosure(tabs); - - // Assert: User action is recorded exactly once. - verify(mUmaRecorder, times(1)) - .recordUserAction(Mockito.eq(UNDO_CLOSE_TAB_USER_ACTION), anyLong()); - } - - private void mockClickOnTab(int index) { - mModel.setIndex(index); - mStripLayoutHelper.tabSelected(TIMESTAMP, 1, 2); - mStripLayoutHelper.click(TIMESTAMP, 160, 100, false, -1); - } - - private void cancelAllTabClosure(StripLayoutTab[] tabs) { - for (StripLayoutTab tab : tabs) { - mStripLayoutHelper.tabClosureCancelled(TIMESTAMP, tab.getId()); - } - } - private void initializeTest(boolean rtl, boolean incognito, int tabIndex, int numTabs) { mStripLayoutHelper = createStripLayoutHelper(rtl, incognito); mIncognito = incognito; @@ -833,50 +623,4 @@ when(tab.getDrawX()).thenReturn(mDrawX); return tab; } - - private static class TestTabModel extends EmptyTabModel { - private final List<Tab> mMockTabs = new ArrayList<>(); - private int mMaxId = -1; - private int mIndex; - - public void addTab(final String title) { - mMaxId++; - final TabImpl mockTab = mock(TabImpl.class); - final int tabId = mMaxId; - when(mockTab.getId()).thenReturn(tabId); - when(mockTab.getTitle()).thenReturn(title); - mMockTabs.add(mockTab); - } - - @Override - public Tab getTabAt(int id) { - return mMockTabs.get(id); - } - - @Override - public int getCount() { - return mMockTabs.size(); - } - - @Override - public int index() { - return mIndex; - } - - @Override - public void closeAllTabs() { - mMockTabs.clear(); - mMaxId = -1; - mIndex = 0; - } - - public void setIndex(int index) { - mIndex = index; - } - - @Override - public void setIndex(int i, @TabSelectionType int type, boolean skipLoadingTab) { - mIndex = i; - } - } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TestTabModel.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TestTabModel.java new file mode 100644 index 0000000..71ad0fa --- /dev/null +++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/TestTabModel.java
@@ -0,0 +1,67 @@ +// Copyright 2022 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.compositor.overlays.strip; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabImpl; +import org.chromium.chrome.browser.tab.TabSelectionType; +import org.chromium.chrome.browser.tabmodel.EmptyTabModel; + +import java.util.ArrayList; +import java.util.List; + +/** Simple mock of TabModel used for tests. */ +public class TestTabModel extends EmptyTabModel { + private final List<Tab> mMockTabs = new ArrayList<>(); + private int mMaxId = -1; + private int mIndex; + + public void addTab(final String title) { + mMaxId++; + final TabImpl mockTab = mock(TabImpl.class); + final int tabId = mMaxId; + when(mockTab.getId()).thenReturn(tabId); + when(mockTab.getTitle()).thenReturn(title); + mMockTabs.add(mockTab); + } + + @Override + public Tab getTabAt(int id) { + return mMockTabs.get(id); + } + + @Override + public int getCount() { + return mMockTabs.size(); + } + + @Override + public int index() { + return mIndex; + } + + @Override + public void closeAllTabs() { + mMockTabs.clear(); + mMaxId = -1; + mIndex = 0; + } + + public void setIndex(int index) { + mIndex = index; + } + + @Override + public void setIndex(int i, @TabSelectionType int type, boolean skipLoadingTab) { + mIndex = i; + } + + public List<Tab> getAllTabs() { + return mMockTabs; + } +} \ No newline at end of file
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManagerTest.java index 5b6b288..f0b3b264 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManagerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/PendingTabClosureManagerTest.java
@@ -101,6 +101,9 @@ public void finalizeClosure(Tab tab) {} @Override + public void notifyAllTabsClosureUndone() {} + + @Override public void notifyDidCloseTabs(List<Tab> tabs) {} }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/UndoTabModelUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/UndoTabModelUnitTest.java index f01d8293..bc0ce20 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/UndoTabModelUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/tabmodel/UndoTabModelUnitTest.java
@@ -270,6 +270,7 @@ private void cancelAllTabClosures(final TabModel model, final Tab[] expectedToClose) throws TimeoutException { final CallbackHelper tabClosureUndoneHelper = new CallbackHelper(); + final CallbackHelper allTabClosureCancellationCompletedHelper = new CallbackHelper(); for (int i = 0; i < expectedToClose.length; i++) { Tab tab = expectedToClose[i]; @@ -284,6 +285,11 @@ public void tabClosureUndone(Tab currentTab) { tabClosureUndoneHelper.notifyCalled(); } + + @Override + public void allTabsClosureUndone() { + allTabClosureCancellationCompletedHelper.notifyCalled(); + } }); } @@ -291,8 +297,10 @@ Tab tab = expectedToClose[i]; model.cancelTabClosure(tab.getId()); } + model.notifyAllTabsClosureUndone(); tabClosureUndoneHelper.waitForCallback(0, expectedToClose.length); + allTabClosureCancellationCompletedHelper.waitForCallback(0, 1); for (int i = 0; i < expectedToClose.length; i++) { final Tab tab = expectedToClose[i];
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index ba7a319..8ffc117 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -1953,14 +1953,10 @@ desc="Message shown in the download shelf when Chrome recommends uploading the file for additional scanning"> <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph> may be dangerous. Send to Google Advanced Protection for scanning? </message> - <message name="IDS_PROMPT_DEEP_SCANNING" + <message name="IDS_PROMPT_DEEP_SCANNING" desc="Message shown in the download shelf for all Advanced Protection and Enhanced Safe Browsing users when Chrome recommends uploading the file for additional scanning."> <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph> may be dangerous. Send to Google for scanning? </message> - <message name="IDS_PROMPT_INCOGNITO_WARNING" - desc="Message shown in the download shelf when Incognito Download warning is displayed"> - Download <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph>? Anyone using the device can see it. - </message> <message name="IDS_BLOCK_REASON_UNCOMMON_DOWNLOAD" desc="Message shown to the user on chrome://downloads page to explain that this download is blocked because it is uncommon."> This file is not commonly downloaded and may be dangerous. @@ -1977,10 +1973,6 @@ desc="Message shown to the user on chrome://downloads page to explain that this download is blocked because it is mixed-content."> This file can't be downloaded securely </message> - <message name="IDS_INCOGNITO_DOWNLOAD_WARNING" - desc="Message shown to the user on chrome://downloads page to explain that downloaded file will stay after incognito session will end"> - This file will be stored on the device and everyone will be able to see it. - </message> <message name="IDS_BLOCK_REASON_DEEP_SCANNING" desc="Message shown on chrome://downloads when a download is being scanned"> This file is being scanned. @@ -2079,10 +2071,6 @@ desc="Text for the button used to validate the installation of an extension."> Continue </message> - <message name="IDS_DOWNLOAD_ANYWAY" - desc="Text for the button used to acknowledge incognito download warning"> - Download Anyway - </message> <message name="IDS_DISCARD_DOWNLOAD" desc="Text for the button used to stop a dangerous download."> Discard @@ -5637,9 +5625,18 @@ <message name="IDS_PASSWORD_GENERATION_SUGGESTION" desc="Text shown next to a generated password describing it as a suggestion."> Use suggested password </message> - <message name="IDS_PASSWORD_GENERATION_SUGGESTION_GPM" desc="Text shown next to a generated password describing it as a suggestion."> + + <if expr="not use_titlecase"> + <message name="IDS_PASSWORD_GENERATION_SUGGESTION_GPM" desc="Text shown next to a generated password describing it as a suggestion."> Use strong password - </message> + </message> + </if> + <if expr="use_titlecase"> + <message name="IDS_PASSWORD_GENERATION_SUGGESTION_GPM" desc="In Title Case: Text shown next to a generated password describing it as a suggestion."> + Use Strong Password + </message> + </if> + <message name="IDS_PASSWORD_GENERATION_EDITING_SUGGESTION" desc="Notification text next to the generated password assuring the user that the password has been saved."> Saved password </message> @@ -7412,14 +7409,23 @@ <message name="IDS_PASSWORD_MANAGER_SAFE_STATE_BODY_MESSAGE_GOOGLE_PASSWORD_MANAGER" desc="The content of the bubble notifying that there are more problems to fix after the user changed a compromised password."> Successfully changed the compromised password. -Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph>. +Check your passwords anytime in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph>. </message> <message name="IDS_PASSWORD_MANAGER_SAFE_STATE_SETTINGS" meaning="The hyperlink text referring to Chrome settings. It replaces the placeholder in 'Check your passwords anytime in $1' string"> Settings </message> - <message name="IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON" desc="Button text to check left compromised passwords."> - Check remaining passwords - </message> + + <if expr="not use_titlecase"> + <message name="IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON" desc="Button text to check left compromised passwords."> + Check remaining passwords + </message> + </if> + <if expr="use_titlecase"> + <message name="IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON" desc="Button text to check left compromised passwords."> + Check Remaining Passwords + </message> + </if> + <message name="IDS_PASSWORD_MANAGER_SAVE_BUTTON" desc="Save button text for password manager"> Save </message>
diff --git a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_ANYWAY.png.sha1 b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_ANYWAY.png.sha1 deleted file mode 100644 index f63cb47..0000000 --- a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_ANYWAY.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -274c75c335ace002ff1a8108c2b959fc39cef3a3 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_INCOGNITO_DOWNLOAD_WARNING.png.sha1 b/chrome/app/generated_resources_grd/IDS_INCOGNITO_DOWNLOAD_WARNING.png.sha1 deleted file mode 100644 index 16ea4b7..0000000 --- a/chrome/app/generated_resources_grd/IDS_INCOGNITO_DOWNLOAD_WARNING.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -b0a941fc105a1a75e8b532558aaf1c8f6b29318c \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON.png.sha1 index 760e598..40b6d3f 100644 --- a/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON.png.sha1 +++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_CHECK_REMAINING_BUTTON.png.sha1
@@ -1 +1 @@ -2ad79d19948e49c7d7db16cd9a15939c16207a64 \ No newline at end of file +fa78767c484bcd0c4ddaeb2097f043faa78c7d7e \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_SAFE_STATE_BODY_MESSAGE_GOOGLE_PASSWORD_MANAGER.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_SAFE_STATE_BODY_MESSAGE_GOOGLE_PASSWORD_MANAGER.png.sha1 index caa94e1d3..8624ea25 100644 --- a/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_SAFE_STATE_BODY_MESSAGE_GOOGLE_PASSWORD_MANAGER.png.sha1 +++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_MANAGER_SAFE_STATE_BODY_MESSAGE_GOOGLE_PASSWORD_MANAGER.png.sha1
@@ -1 +1 @@ -04b49748c2a4627394c9612ea7f863f01c566d6a \ No newline at end of file +2bb36df5834f7b1aa2a9cc22f4a0014056870643 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PROMPT_INCOGNITO_WARNING.png.sha1 b/chrome/app/generated_resources_grd/IDS_PROMPT_INCOGNITO_WARNING.png.sha1 deleted file mode 100644 index f63cb47..0000000 --- a/chrome/app/generated_resources_grd/IDS_PROMPT_INCOGNITO_WARNING.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -274c75c335ace002ff1a8108c2b959fc39cef3a3 \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index edb6b15..8294679 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -4353,7 +4353,7 @@ <translation id="5225324770654022472">Wys programkortpad</translation> <translation id="52254442782792731">Huidige sigbaarheidinstelling is nog nie gestel nie</translation> <translation id="5225463052809312700">Skakel kamera aan</translation> -<translation id="5227679487546032910">Verstek- groenblou avatar</translation> +<translation id="5227679487546032910">Verstek- blougroen avatar</translation> <translation id="5228579091201413441">Aktiveer sinkronisering</translation> <translation id="5230516054153933099">Venster</translation> <translation id="5233019165164992427">NaCl-ontfoutpoort</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 1c36c073..bbfa024 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -422,6 +422,7 @@ <translation id="1415708812149920388">የቅንጥብ ሰሌዳ መዳረሻ ተከልክሏል</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (የቅጥያ መታወቂያ «<ph name="EXTENSION_ID" />») በዚህ የክፍለ-ጊዜ አይነት ላይ አይፈቀድም።</translation> <translation id="1418552618736477642">ማሳወቂያዎች እና መተግበሪያዎች</translation> +<translation id="1418882096915998312">የድርጅት ምዝገባው በሂደት ላይ ነው</translation> <translation id="1418954524306642206">የእርስዎን አታሚ PPD ለመጥቀስ አሰሳ ያድርጉ</translation> <translation id="1420834118113404499">የማህደረመረጃ ፈቃዶች</translation> <translation id="1420920093772172268">ማጣመርን ለመፈቀድ <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -3415,6 +3416,7 @@ <translation id="4275830172053184480">መሣሪያዎን ዳግም ያስጀምሩ</translation> <translation id="4277434192562187284">የXML ውቅረት ምንጭ</translation> <translation id="4278390842282768270">ተፈቅዷል</translation> +<translation id="4278498748067682896">መሣሪያው በኪዮስክ ወይም በምልክት ሁነታ ላይ ብቻ እንዲሰራ የሚያስችል የኪዮስክ እና የምልክት ማሻሻያ ይጠቀማሉ። ተጠቃሚዎች ወደ መሣሪያው እንዲገቡ ከፈለጉ እባክዎ ይመለሱ እና የChrome የንግድ ድርጅት ማሻሸያን በመጠቀም ይመዝገቡ።</translation> <translation id="4279129444466079448">በዚህ መሣሪያ ላይ እስከ <ph name="PROFILE_LIMIT" /> ኢሲም መገለጫዎች ድረስ መጫን ይችላሉ። ሌላ መገለጫ ለማከል በመጀመሪያ አሁን ያለውን መገለጫ ያስወግዱ።</translation> <translation id="4280325816108262082">መሣሪያው ሲጠፋ ወይም ስራ ላይ በማይውልበት ጊዜ በራስ-ሰር ግንኙነቱ ይቋረጣል</translation> <translation id="4281844954008187215">የአግልግሎት ውል</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 7c8df83..da89f8b 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -962,6 +962,7 @@ <translation id="1892341345406963517">مرحبًا <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">لغات أخرى</translation> <translation id="1895658205118569222">إيقاف التشغيل</translation> +<translation id="1897120393475391208">ننصحك باستخدام كلمة مرور قوية.</translation> <translation id="1900305421498694955">يمكن أن تتطلب التطبيقات من Google Play إذن الوصول الكامل إلى نظام الملفات لقراءة الملفات وكتابتها على أجهزة التخزين الخارجية. تظهر الملفات والمجلدات التي تم إنشاؤها على الجهاز لأيّ شخص يستخدم محرك الأقراص الخارجي. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> <translation id="1901303067676059328">تح&ديد الكلّ</translation> <translation id="1901396183631570154">تعذَّر حفظ كلمات المرور هذه على Chrome في حسابك على Google. ولا يزال بإمكانك حفظها على هذا الجهاز.</translation> @@ -6555,6 +6556,7 @@ <translation id="7444970023873202833">يمكنك الاطّلاع على المزيد من ذكرياتك في "صور Google".</translation> <translation id="7444983668544353857">إيقاف <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">يمكنك تثبيت التطبيقات تلقائيًا.</translation> +<translation id="7449381494541372002">جارٍ البدء…</translation> <translation id="7449752890690775568">هل تريد إزالة كلمة المرور؟</translation> <translation id="7450761244949417357">سيتم الفتح في <ph name="ALTERNATIVE_BROWSER_NAME" /> الآن.</translation> <translation id="7452166281927983300">التحذيرات التي تم إغلاقها (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index bdd5587f..35710e7e 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -957,6 +957,7 @@ <translation id="1892341345406963517">Salam <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Digər dillərdə</translation> <translation id="1895658205118569222">Söndürün</translation> +<translation id="1897120393475391208">Güclü paroldan istifadə edin</translation> <translation id="1900305421498694955">Google Play tətbiqləri xarici yaddaş cihazlarında faylları oxumaq və yazmaq üçün bütün fayl sisteminə giriş istəyə bilər. Cihazda yaradılan fayl və qovluqları xarici diskdən istifadə edən hər kəs görə bilər. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Hamısını seçin</translation> <translation id="1901396183631570154">Chrome bu parolları Google Hesabınızda saxlaya bilmədi. Onları bu cihazda saxlaya bilərsiniz.</translation> @@ -6541,6 +6542,7 @@ <translation id="7444970023873202833">Google Fotoda daha çox xatirənizə baxın</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> deaktiv edin</translation> <translation id="7448430327655618736">Tətbiqləri avtomatik quraşdırın</translation> +<translation id="7449381494541372002">başlayır…</translation> <translation id="7449752890690775568">Parol silinsin?</translation> <translation id="7450761244949417357">İndi <ph name="ALTERNATIVE_BROWSER_NAME" /> tətbiqində açılır</translation> <translation id="7452166281927983300">Qapadılmış xəbərdarlıqlar (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 2c98676..70a7cfb0 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -425,6 +425,7 @@ <translation id="1415708812149920388">Pristup čitanju međumemorije je odbijen</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ID ekstenzije "<ph name="EXTENSION_ID" />") nije dozvoljen u ovoj vrsti sesije.</translation> <translation id="1418552618736477642">Obavještenja i aplikacije</translation> +<translation id="1418882096915998312">U tijeku je prijava poduzeća</translation> <translation id="1418954524306642206">Pregledajte da navedete PPD štampača</translation> <translation id="1420834118113404499">Licence za medije</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> da omogućite uparivanje</translation> @@ -3421,6 +3422,7 @@ <translation id="4275830172053184480">Ponovo pokrenite uređaj</translation> <translation id="4277434192562187284">Izvor konfiguracije za XML</translation> <translation id="4278390842282768270">Dozvoljeno</translation> +<translation id="4278498748067682896">Upotrebljavat ćete nadogradnju kioska i znakovlja koja uređaju omogućuje pokretanje samo načina rada kioska ili znakovlja. Ako želite da se korisnici prijave na uređaj, vratite se i registrirajte pomoću Nadogradnje za Chrome za poduzeća.</translation> <translation id="4279129444466079448">Možete instalirati najviše <ph name="PROFILE_LIMIT" /> eSIM profil/a na ovom uređaju. Da dodate drugi profil, najprije uklonite postojeći profil.</translation> <translation id="4280325816108262082">Povezanost s uređajem se neće automatski prekinuti kada se isključi ili ne koristi</translation> <translation id="4281844954008187215">Uslovi korištenja usluge</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 7573c78c..d407ca2 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -960,6 +960,7 @@ <translation id="1892341345406963517">Hola, <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Altres idiomes</translation> <translation id="1895658205118569222">Aturada</translation> +<translation id="1897120393475391208">Utilitza una contrasenya segura</translation> <translation id="1900305421498694955">Pot ser que les aplicacions de Google Play requereixin accés complet al sistema de fitxers per llegir i escriure fitxers en dispositius d'emmagatzematge externs. Qualsevol persona que faci servir la unitat externa podrà veure les carpetes i els fitxers creats al dispositiu. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Selecciona-ho &tot</translation> <translation id="1901396183631570154">Chrome no ha pogut desar aquestes contrasenyes al teu Compte de Google. Pots continuar desant-les en aquest dispositiu.</translation> @@ -6543,6 +6544,7 @@ <translation id="7444970023873202833">Explora més records teus a Google Fotos</translation> <translation id="7444983668544353857">Desactiva <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Instal·lar aplicacions automàticament.</translation> +<translation id="7449381494541372002">s'està iniciant…</translation> <translation id="7449752890690775568">Vols suprimir la contrasenya?</translation> <translation id="7450761244949417357">S'està obrint a <ph name="ALTERNATIVE_BROWSER_NAME" /></translation> <translation id="7452166281927983300">Advertiments ignorats (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb index c31690d..4c4f6f03 100644 --- a/chrome/app/resources/generated_resources_cy.xtb +++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -427,6 +427,7 @@ <translation id="1415708812149920388">Gwrthodwyd mynediad darllen y clipfwrdd</translation> <translation id="1415990189994829608">Ni chaniateir <ph name="EXTENSION_NAME" /> (rhif adnabod yr estyniad "<ph name="EXTENSION_ID" />") yn y math hwn o sesiwn.</translation> <translation id="1418552618736477642">Hysbysiadau ac apiau</translation> +<translation id="1418882096915998312">Wrthi'n cofrestru i Enterprise</translation> <translation id="1418954524306642206">Porwch i nodi PPD eich argraffydd</translation> <translation id="1420834118113404499">Trwyddedau cyfryngau</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> i ganiatáu paru</translation> @@ -3426,6 +3427,7 @@ <translation id="4275830172053184480">Ailgychwynnwch eich dyfais</translation> <translation id="4277434192562187284">Ffynhonnell ffurfweddiad XML</translation> <translation id="4278390842282768270">Caniateir</translation> +<translation id="4278498748067682896">Byddwch yn defnyddio Uwchraddiad Ciosg ac Arwyddion sydd ond yn caniatáu i'r ddyfais redeg yn y modd ciosg neu arwyddion. Os hoffech i ddefnyddwyr fewngofnodi i'r ddyfais, ewch yn ôl a chofrestrwch gan ddefnyddio Uwchraddiad Chrome Enterprise.</translation> <translation id="4279129444466079448">Gallwch osod hyd at <ph name="PROFILE_LIMIT" /> o broffiliau eSIM ar y ddyfais hon. I ychwanegu proffil arall, tynnwch broffil sydd eisoes yn bodoli'n gyntaf.</translation> <translation id="4280325816108262082">Bydd y ddyfais yn datgysylltu'n awtomatig pan fydd wedi'i diffodd neu pan nad yw'n cael ei defnyddio</translation> <translation id="4281844954008187215">Telerau Gwasanaeth</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index fd53834..3c618b4 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -973,6 +973,7 @@ <translation id="1892341345406963517">Hej <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Andre sprog</translation> <translation id="1895658205118569222">Nedlukning</translation> +<translation id="1897120393475391208">Brug en stærk adgangskode</translation> <translation id="1900305421498694955">Apps fra Google Play skal muligvis have fuld adgang til filsystemet for at læse og skrive filer på eksterne lagerenheder. De filer og mapper, som oprettes på enheden, er synlige for alle, der bruger det eksterne drev. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Vælg &alle</translation> <translation id="1901396183631570154">Chrome kunne ikke gemme disse adgangskoder på din Google-konto. Du kan stadig gemme dem på denne enhed.</translation> @@ -6564,6 +6565,7 @@ <translation id="7444970023873202833">Udforsk flere af dine minder i Google Fotos</translation> <translation id="7444983668544353857">Deaktiver <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Installer apps automatisk</translation> +<translation id="7449381494541372002">starter...</translation> <translation id="7449752890690775568">Vil du fjerne adgangskoden?</translation> <translation id="7450761244949417357">Åbner i <ph name="ALTERNATIVE_BROWSER_NAME" /> nu</translation> <translation id="7452166281927983300">Lukkede advarsler (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index dae52f3..338e3434 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Lesezugriff auf Zwischenablage verweigert</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (Erweiterungs-ID "<ph name="EXTENSION_ID" />") ist bei diesem Sitzungstyp nicht zulässig.</translation> <translation id="1418552618736477642">Benachrichtigungen und Apps</translation> +<translation id="1418882096915998312">Enterprise-Registrierung wird durchgeführt</translation> <translation id="1418954524306642206">Dateien durchsuchen und PPD für den Drucker auswählen</translation> <translation id="1420834118113404499">Medienlizenzen</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" />, um eine Kopplung zu ermöglichen</translation> @@ -3405,6 +3406,7 @@ <translation id="4275830172053184480">Gerät neu starten</translation> <translation id="4277434192562187284">XML-Konfigurationsquelle</translation> <translation id="4278390842282768270">Zugelassen</translation> +<translation id="4278498748067682896">Mit diesem Upgrade für Kioske und digitale Beschilderung kann das Gerät nur im Modus für Kioske oder digitale Beschilderung genutzt werden. Wenn du möchtest, dass die Nutzer sich auf dem Gerät anmelden, gehe zurück und registriere dich für das Chrome Enterprise-Upgrade.</translation> <translation id="4279129444466079448">Du kannst bis zu <ph name="PROFILE_LIMIT" /> eSIM-Profile auf diesem Gerät installieren. Damit du ein weiteres Profil hinzufügen kannst, musst du zuerst ein vorhandenes Profil entfernen.</translation> <translation id="4280325816108262082">Gerät wird automatisch getrennt, wenn es ausgeschaltet oder nicht verwendet wird</translation> <translation id="4281844954008187215">Nutzungsbedingungen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index a065caf..5abb79a 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">Δεν επιτρέπεται η πρόσβαση ανάγνωσης στο πρόχειρο</translation> <translation id="1415990189994829608">Η επέκταση <ph name="EXTENSION_NAME" /> (αναγνωριστικό επέκτασης "<ph name="EXTENSION_ID" />") δεν επιτρέπεται σε αυτόν τον τύπο περιόδου σύνδεσης.</translation> <translation id="1418552618736477642">Ειδοποιήσεις και εφαρμογές</translation> +<translation id="1418882096915998312">Η εγγραφή επιχείρησης βρίσκεται σε εξέλιξη</translation> <translation id="1418954524306642206">Περιηγηθείτε για να προσδιορίσετε το αρχείο PPD του εκτυπωτή</translation> <translation id="1420834118113404499">Άδειες πολυμέσων</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> για να επιτρέψετε τη σύζευξη</translation> @@ -3423,6 +3424,7 @@ <translation id="4275830172053184480">Επανεκκινήστε τη συσκευή σας</translation> <translation id="4277434192562187284">Πηγή διαμόρφωσης XML</translation> <translation id="4278390842282768270">Επιτρέπεται</translation> +<translation id="4278498748067682896">Θα χρησιμοποιήσετε μια Aναβάθμιση kiosk και σήμανσης, η οποία επιτρέπει στη συσκευή να εκτελείται μόνο σε λειτουργία kiosk ή σήμανσης. Εάν επιθυμείτε οι χρήστες να συνδεθούν στη συσκευή, επιστρέψτε και εγγραφείτε χρησιμοποιώντας την Αναβάθμιση του Chrome για επιχειρήσεις.</translation> <translation id="4279129444466079448">Μπορείτε να εγκαταστήσετε έως και <ph name="PROFILE_LIMIT" /> προφίλ eSIM σε αυτήν τη συσκευή. Για να προσθέσετε ένα νέο προφίλ, καταργήστε πρώτα ένα υπάρχον.</translation> <translation id="4280325816108262082">Η συσκευή θα αποσυνδέεται αυτόματα μόλις απενεργοποιείται ή όταν δεν χρησιμοποιείται</translation> <translation id="4281844954008187215">Όροι Παροχής Υπηρεσιών</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index af07fb75..df27640 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -874,6 +874,7 @@ <translation id="1813278315230285598">Services</translation> <translation id="18139523105317219">EDI Party Name</translation> <translation id="1815083418640426271">Paste as Plain Text</translation> +<translation id="1815097521077272760">You’ve been invited to try out keyboard control for this game.</translation> <translation id="1815181278146012280">Ask when a site wants to access HID devices</translation> <translation id="181577467034453336"><ph name="NUMBER_OF_VIEWS" /> more...</translation> <translation id="1816036116994822943">Keyboard scanning speed</translation> @@ -1008,6 +1009,7 @@ <translation id="1935303383381416800">Allowed to see your location</translation> <translation id="1936931585862840749">Use a number to indicate how many copies to print (1 to <ph name="MAX_COPIES" />).</translation> <translation id="1937774647013465102">Cannot import container architecture type <ph name="ARCHITECTURE_CONTAINER" /> with this device which is <ph name="ARCHITECTURE_DEVICE" />. You can try restoring this container into a different device, or you can access the files inside this container image by opening in Files app.</translation> +<translation id="1938320257168860255">Something went wrong. Make sure that your phone is close by, unlocked and Bluetooth and Wi-Fi are turned on.</translation> <translation id="1938351510777341717">External command</translation> <translation id="1940546824932169984">Connected devices</translation> <translation id="1941410638996203291">Start time <ph name="TIME" /></translation> @@ -1090,6 +1092,7 @@ <translation id="2030455719695904263">Trackpad</translation> <translation id="2031639749079821948">Your password is saved in your Google Account</translation> <translation id="2031914984822377766">Add your preferred <ph name="LINK_BEGIN" />website languages<ph name="LINK_END" />. The top language from the list will be used for translations.</translation> +<translation id="2033758234986231162">Can't maintain a connection with your phone. Make sure that your phone is close by, unlocked and Bluetooth and Wi-Fi are turned on.</translation> <translation id="2034346955588403444">Add other Wi-Fi network</translation> <translation id="203574396658008164">Enable note taking from lock screen</translation> <translation id="2037445849770872822">Supervision is set up for this Google account. To set up more parental controls, select Continue. @@ -2332,6 +2335,7 @@ <translation id="3189187154924005138">Large cursor</translation> <translation id="3190558889382726167">Password saved</translation> <translation id="3192947282887913208">Audio Files</translation> +<translation id="3193695589337931419">System signals utilities</translation> <translation id="3194786596445804250">Show details about blocking third-party cookies</translation> <translation id="3197453258332670132">With a right-click or long press, show related info for your text selection</translation> <translation id="3199127022143353223">Servers</translation> @@ -3765,6 +3769,7 @@ <translation id="461661862154729886">Energy source</translation> <translation id="4617001782309103936">Too short</translation> <translation id="4617270414136722281">Extension options</translation> +<translation id="4617880081511131945">Can't establish connection</translation> <translation id="4619564267100705184">Verify that it's you</translation> <translation id="4619615317237390068">Tabs from other devices</translation> <translation id="4620809267248568679">This setting is enforced by an extension.</translation> @@ -4058,6 +4063,7 @@ <translation id="4907306957610201395">Permission Category</translation> <translation id="4908811072292128752">Open a new tab to browse two sites at once</translation> <translation id="4909038193460299775">Because this account is managed by <ph name="DOMAIN" />, your bookmarks, history, passwords and other settings will be cleared from this device. However, your data will remain stored in your Google Account and can be managed on <ph name="BEGIN_LINK" />Google Dashboard<ph name="END_LINK" />.</translation> +<translation id="4912265719039610598">App streaming is disabled by your phone's administrator.</translation> <translation id="4912643508233590958">Idle Wake Ups</translation> <translation id="4915961947098019832">Allowed to show images</translation> <translation id="4916542008280060967">Let site edit <ph name="FILE_NAME" />?</translation> @@ -6894,6 +6900,7 @@ <translation id="7758143121000533418">Family Link</translation> <translation id="7758450972308449809">Adjust the boundaries of your display</translation> <translation id="7760004034676677601">Is this the start-up page that you were expecting?</translation> +<translation id="7762024824096060040">Can't use this account</translation> <translation id="7762463735017901568">Notification syncing is disabled by your phone's administrator</translation> <translation id="7764225426217299476">Add address</translation> <translation id="7764256770584298012"><ph name="DOWNLOAD_RECEIVED" /> from <ph name="DOWNLOAD_DOMAIN" /></translation> @@ -7064,6 +7071,7 @@ <translation id="7919210519031517829"><ph name="DURATION" /> s</translation> <translation id="7920363873148656176"><ph name="ORIGIN" /> can view <ph name="FILENAME" /></translation> <translation id="7920482456679570420">Add words that you want spell check to skip</translation> +<translation id="7921347341284348270">You can't view your phone's notifications on this managed account. Try again with a different account. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="7922935920104868876">Show details about blocking third-party cookies in Incognito</translation> <translation id="7923564237306226146">Linux upgrade complete</translation> <translation id="7924358170328001543">Error forwarding port</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 749fce3..04a3479 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -957,6 +957,7 @@ <translation id="1892341345406963517">Hola, <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Otros idiomas</translation> <translation id="1895658205118569222">Cierre</translation> +<translation id="1897120393475391208">Usar una contraseña segura</translation> <translation id="1900305421498694955">Es posible que las apps de Google Play necesiten acceder a todo el sistema de archivos para leer y escribir archivos en dispositivos externos de almacenamiento. Cualquier persona que use la unidad externa podrá ver los archivos y carpetas creados en este dispositivo. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Seleccionar &todo</translation> <translation id="1901396183631570154">Chrome no pudo guardar estas contraseñas en tu Cuenta de Google. De todos modos puedes guardarlas en este dispositivo.</translation> @@ -6542,6 +6543,7 @@ <translation id="7444970023873202833">Explora más recuerdos en Google Fotos</translation> <translation id="7444983668544353857">Inhabilitar <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Instala apps automáticamente</translation> +<translation id="7449381494541372002">Iniciando…</translation> <translation id="7449752890690775568">¿Quieres quitar la contraseña?</translation> <translation id="7450761244949417357">Se está abriendo en <ph name="ALTERNATIVE_BROWSER_NAME" /> en este momento</translation> <translation id="7452166281927983300">Advertencias descartadas (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 848b684..2c9d6e1 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">Juurdepääsu lõikelaua lugemiseks ei antud</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (laienduse ID „<ph name="EXTENSION_ID" />”) ei ole seda tüüpi seansi puhul lubatud.</translation> <translation id="1418552618736477642">Märguanded ja rakendused</translation> +<translation id="1418882096915998312">Enterprise'is registreerimine on pooleli</translation> <translation id="1418954524306642206">Sirvige printeri PPD-faili määramiseks</translation> <translation id="1420834118113404499">Meedialitsentsid</translation> <translation id="1420920093772172268">Sidumise lubamiseks <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -963,6 +964,7 @@ <translation id="1892341345406963517">Tere, <ph name="PARENT_NAME" />!</translation> <translation id="189358972401248634">Teised keeled</translation> <translation id="1895658205118569222">Sulgemine</translation> +<translation id="1897120393475391208">Kasutage tugevat parooli</translation> <translation id="1900305421498694955">Google Playst pärinevad rakendused võivad vajada täielikku juurdepääsu failisüsteemile, et välistelt salvestusseadmetelt faile lugeda ja neid sinna kirjutada. Selles seadmes loodud failid ja kaustad on nähtavad kõigile, kes välist ketast kasutavad. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Vali &kõik</translation> <translation id="1901396183631570154">Chrome'il ei õnnestunud neid paroole teie Google'i kontole salvestada. Saate need siiski salvestada sellesse seadmesse.</translation> @@ -3413,6 +3415,7 @@ <translation id="4275830172053184480">Taaskäivitage seade</translation> <translation id="4277434192562187284">XML-i seadistuste allikas</translation> <translation id="4278390842282768270">Lubatud</translation> +<translation id="4278498748067682896">Kasutate kioski- ja teabeseadmete versiooniuuendust, mis lubab seadet käitada ainult kioski- või teabeseadme režiimis. Kui soovite, et kasutajad logiksid seadmesse sisse, minge tagasi ja registreeruge Chrome Enterprise'i versiooniuuenduse kaudu.</translation> <translation id="4279129444466079448">Saate sellesse seadmesse installida kuni <ph name="PROFILE_LIMIT" /> eSIM-i profiili. Veel ühe profiili lisamiseks eemaldage mõni olemasolev.</translation> <translation id="4280325816108262082">Kui seade on välja lülitatud või seda ei kasutata, katkestatakse automaatselt selle ühendus</translation> <translation id="4281844954008187215">Teenusetingimused</translation> @@ -6551,6 +6554,7 @@ <translation id="7444970023873202833">Avastage teenuses Google Photos oma mälestusi</translation> <translation id="7444983668544353857">Keela <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Rakenduste automaatne installimine</translation> +<translation id="7449381494541372002">käivitamine …</translation> <translation id="7449752890690775568">Kas eemaldada parool?</translation> <translation id="7450761244949417357">Brauser <ph name="ALTERNATIVE_BROWSER_NAME" /> avatakse kohe</translation> <translation id="7452166281927983300">Hoiatustest loobuti (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 2fdbf6b1..c69ce2ad 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -4127,7 +4127,7 @@ <translation id="50080882645628821">Kendu profila</translation> <translation id="5008936837313706385">Jardueraren izena</translation> <translation id="5009463889040999939">Profilaren izena aldatzen. Agian minutu batzuk beharko dira.</translation> -<translation id="5010043101506446253">Autoritate ziurtagiri-emailea</translation> +<translation id="5010043101506446253">Ziurtagiri-emailea</translation> <translation id="501057610015570208">"kiosk_only" manifestu-atributua duen aplikazio bat instalatu behar da ChromeOS Flex sistemaren kiosko moduan</translation> <translation id="5015344424288992913">Proxya ebazten…</translation> <translation id="5016491575926936899">Testu-mezuak bidal ditzakezu ordenagailutik, bai eta Interneteko konexioa partekatu, elkarrizketa batean jasotzen diren jakinarazpenei erantzun, eta telefonoa erabilita <ph name="DEVICE_TYPE" /> gailua desblokeatu ere.<ph name="FOOTNOTE_POINTER" /> <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 943e075..9241600 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">دسترسی برای خواندن محتوای بریدهدان امکانپذیر نیست</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (شناسه برنامه افزودنی «<ph name="EXTENSION_ID" />») در این نوع جلسه مجاز نیست.</translation> <translation id="1418552618736477642">اعلانها و برنامهها</translation> +<translation id="1418882096915998312">ثبتنام در Enterprise درحال انجام است</translation> <translation id="1418954524306642206">در سیستم فایل مرور کنید و PPD چاپگرتان را تعیین کنید</translation> <translation id="1420834118113404499">مجوزهای رسانه</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> جهت مجاز کردن مرتبطسازی</translation> @@ -3420,6 +3421,7 @@ <translation id="4275830172053184480">راهاندازی دستگاه خود</translation> <translation id="4277434192562187284">منبع پیکربندی XML</translation> <translation id="4278390842282768270">مجاز است</translation> +<translation id="4278498748067682896">از «ارتقای کیوسک و تابلوی دیجیتال» استفاده خواهید کرد. این ابزار فقط اجازه اجرا شدن در حالت کیوسک یا تابلوی دیجیتال را به دستگاه میدهد. اگر میخواهید کاربران به سیستم دستگاه وارد شوند، لطفاً به مرحله قبل برگردید و بااستفاده از «ارتقای Chrome Enterprise» ثبتنام کنید.</translation> <translation id="4279129444466079448">میتوانید تا <ph name="PROFILE_LIMIT" /> نمایه سیمکارت داخلی را در این دستگاه نصب کنید. برای افزودن نمایهای دیگر، ابتدا یکی از نمایهها موجود را بردارید.</translation> <translation id="4280325816108262082">وقتی دستگاه خاموش شود یا از آن استفاده نشود، بهطور خودکار قطع میشود</translation> <translation id="4281844954008187215">شرایط استفاده از سرویس</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 6735672c..8b8134c 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -971,6 +971,7 @@ <translation id="1892341345406963517">Hei <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Muut kielet</translation> <translation id="1895658205118569222">Sulkeminen</translation> +<translation id="1897120393475391208">Käytä vahvaa salasanaa</translation> <translation id="1900305421498694955">Google Playn sovellukset voivat edellyttää täysiä tiedostojärjestelmän käyttöoikeuksia, jotta ne voivat kirjoittaa ja lukea ulkoisten tallennustilalaitteiden tiedostoja. Kaikki ulkoisen aseman käyttäjät voivat nähdä laitteella luodut tiedostot ja kansiot. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Valitse &kaikki</translation> <translation id="1901396183631570154">Chrome ei voinut tallentaa näitä salasanoja Google-tilillesi. Voit kuitenkin tallentaa ne laitteellesi.</translation> @@ -6557,6 +6558,7 @@ <translation id="7444970023873202833">Käy läpi muita muistoja Google Kuvissa</translation> <translation id="7444983668544353857">Poista <ph name="NETWORKDEVICE" /> käytöstä </translation> <translation id="7448430327655618736">asentaa sovellukset automaattisesti</translation> +<translation id="7449381494541372002">käynnistyy…</translation> <translation id="7449752890690775568">Poistetaanko salasana?</translation> <translation id="7450761244949417357">Avataan nyt selaimessa <ph name="ALTERNATIVE_BROWSER_NAME" /></translation> <translation id="7452166281927983300">Ohitettuja varoituksia (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index ed82b58..5272789 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">Tinanggihan ang read access sa clipboard</translation> <translation id="1415990189994829608">Ang <ph name="EXTENSION_NAME" /> (extension ID "<ph name="EXTENSION_ID" />") ay hindi pinapayagan sa ganitong uri ng session.</translation> <translation id="1418552618736477642">Mga notification at app</translation> +<translation id="1418882096915998312">Kasalukuyang nag-e-enroll sa Enterprise</translation> <translation id="1418954524306642206">Mag-browse para matukoy ang PPD ng iyong printer</translation> <translation id="1420834118113404499">Mga lisensya ng media</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> upang payagan ang pagpapares</translation> @@ -3424,6 +3425,7 @@ <translation id="4275830172053184480">I-restart ang iyong device</translation> <translation id="4277434192562187284">Source ng XML configuration</translation> <translation id="4278390842282768270">Pinapayagan</translation> +<translation id="4278498748067682896">Gagamit ka ng Pag-upgrade sa Kiosk at Signage na nagbibigay-daan lang sa device na tumakbo sa kiosk o signage mode. Kung gusto mong mag-sign in sa device ang mga user, bumalik at mag-enroll gamit ang Chrome Enterprise Upgrade.</translation> <translation id="4279129444466079448">Puwede kang mag-install nang hanggang <ph name="PROFILE_LIMIT" /> (na) profile ng eSIM sa device na ito. Para magdagdag ng isa pang profile, mag-alis muna ng dati nang profile.</translation> <translation id="4280325816108262082">Awtomatikong madidiskonekta ang device kapag na-off ito o hindi ito ginagamit</translation> <translation id="4281844954008187215">Mga Tuntunin ng Serbisyo</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index b782dd54..c17b3c0 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -961,6 +961,7 @@ <translation id="1892341345406963517">Bonjour <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Autres langues</translation> <translation id="1895658205118569222">Arrêt</translation> +<translation id="1897120393475391208">Utilisez un mot de passe fort</translation> <translation id="1900305421498694955">Les applications de Google Play peuvent exiger un accès complet au système de fichiers pour lire et écrire des fichiers sur des périphériques de stockage externe. Les fichiers et les dossiers créés sur le périphérique sont visibles par tout utilisateur du disque externe. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&Tout sélectionner</translation> <translation id="1901396183631570154">Chrome n'a pas pu enregistrer ces mots de passe dans votre compte Google. Vous pouvez quand même les enregistrer sur cet appareil.</translation> @@ -6549,6 +6550,7 @@ <translation id="7444970023873202833">Explorez davantage vos souvenirs avec Google Photos</translation> <translation id="7444983668544353857">Désactiver <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Installer automatiquement les applications</translation> +<translation id="7449381494541372002">démarrage en cours…</translation> <translation id="7449752890690775568">Supprimer le mot de passe?</translation> <translation id="7450761244949417357">Ouverture dans <ph name="ALTERNATIVE_BROWSER_NAME" /> en cours…</translation> <translation id="7452166281927983300">Avertissements ignorés (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index ee2ab53..2692a277 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -961,6 +961,7 @@ <translation id="1892341345406963517">Bonjour <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Autres langues</translation> <translation id="1895658205118569222">Arrêt.</translation> +<translation id="1897120393475391208">Utilisez le mot de passe sécurisé</translation> <translation id="1900305421498694955">Les applications provenant de Google Play peuvent exiger un accès complet, en lecture et en écriture, aux fichiers situés sur des périphériques de stockage externe. Les fichiers stockés sur ces périphériques externes, et les dossiers où ils se trouvent, sont visibles par tous les utilisateurs. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&Tout sélectionner</translation> <translation id="1901396183631570154">Chrome n'a pas pu enregistrer ces mots de passe dans votre compte Google. Vous pouvez cependant les enregistrer sur cet appareil.</translation> @@ -6549,6 +6550,7 @@ <translation id="7444970023873202833">Redécouvrez encore plus de souvenirs dans Google Photos</translation> <translation id="7444983668544353857">Désactiver <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Installer automatiquement des applications</translation> +<translation id="7449381494541372002">démarrage…</translation> <translation id="7449752890690775568">Supprimer le mot de passe ?</translation> <translation id="7450761244949417357">Ouverture dans <ph name="ALTERNATIVE_BROWSER_NAME" /> maintenant</translation> <translation id="7452166281927983300">Avertissements ignorés (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index eb459cf..9261947 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -959,6 +959,7 @@ <translation id="1892341345406963517">Ola, <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Outros idiomas</translation> <translation id="1895658205118569222">Apagar</translation> +<translation id="1897120393475391208">Usa este contrasinal seguro</translation> <translation id="1900305421498694955">As aplicacións de Google Play poden necesitar acceso total ao sistema de ficheiros para ler e editar ficheiros no almacenamento externo. Os ficheiros e os cartafoles creados no dispositivo son visibles para todos os usuarios da unidade externa. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Seleccion&ar todo</translation> <translation id="1901396183631570154">Chrome non puido gardar estes contrasinais na túa Conta de Google. Así e todo, podes gardalos neste dispositivo.</translation> @@ -6540,6 +6541,7 @@ <translation id="7444970023873202833">Explora máis recordos en Google Fotos</translation> <translation id="7444983668544353857">Desactivar <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Instala aplicacións automaticamente</translation> +<translation id="7449381494541372002">iniciando…</translation> <translation id="7449752890690775568">Queres quitar o contrasinal?</translation> <translation id="7450761244949417357">Abrindo a páxina no navegador <ph name="ALTERNATIVE_BROWSER_NAME" /> agora</translation> <translation id="7452166281927983300">Advertencias ignoradas (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index b8fac69..3cb2006 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">क्लिपबोर्ड की सामग्री पढ़ने का एक्सेस देने से मना किया गया</translation> <translation id="1415990189994829608">इस प्रकार के सत्र में <ph name="EXTENSION_NAME" /> (एक्सटेंशन आईडी "<ph name="EXTENSION_ID" />") की अनुमति नहीं है.</translation> <translation id="1418552618736477642">सूचनाएं और ऐप्लिकेशन</translation> +<translation id="1418882096915998312">Chrome Enterprise Upgrade की मदद से रजिस्टर किया जा रहा है</translation> <translation id="1418954524306642206">अपने प्रिंटर के PPD को सेट करने के लिए ब्राउज़ करें</translation> <translation id="1420834118113404499">मीडिया लाइसेंस</translation> <translation id="1420920093772172268">युग्मन की अनुमति देने के लिए <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -3422,6 +3423,7 @@ <translation id="4275830172053184480">अपना डिवाइस फिर से प्रारंभ करें</translation> <translation id="4277434192562187284">एक्सएमएल कॉन्फ़िगरेशन सोर्स</translation> <translation id="4278390842282768270">अनुमति है</translation> +<translation id="4278498748067682896">कीऑस्क और साइनेज अपग्रेड का इस्तेमाल करने से, डिवाइस सिर्फ़ कीऑस्क और साइनेज मोड में काम कर सकता है. अगर आपको उपयोगकर्ता को डिवाइस में साइन इन करने के लिए कहना है, तो वापस जाएं और Chrome Enterprise Upgrade की मदद से डिवाइस को रजिस्टर करें.</translation> <translation id="4279129444466079448">आप इस डिवाइस पर <ph name="PROFILE_LIMIT" /> ई-सिम प्रोफ़ाइलें इंस्टॉल कर सकते हैं. अन्य प्रोफ़ाइल जोड़ने के लिए, पहले किसी मौजूदा प्रोफ़ाइल को हटाएं.</translation> <translation id="4280325816108262082">बंद होने पर या इस्तेमाल नहीं किए जाने पर डिवाइस अपने-आप डिसकनेक्ट हो जाएगा</translation> <translation id="4281844954008187215">सेवा की शर्तें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 23449e71..2b9c9d77e 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">Odbijen pristup za čitanje međuspreminka</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ID proširenja "<ph name="EXTENSION_ID" />") nije dopušten u ovoj vrsti sesije.</translation> <translation id="1418552618736477642">Obavijesti i aplikacije</translation> +<translation id="1418882096915998312">U tijeku je prijava poduzeća</translation> <translation id="1418954524306642206">Pregledajte da biste naveli PPD pisača</translation> <translation id="1420834118113404499">Licence medijskog sadržaja</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> da biste omogućili uparivanje</translation> @@ -1005,6 +1006,7 @@ <translation id="1942600407708803723">Isključivanje kada se zatvori poklopac</translation> <translation id="1944528062465413897">Bluetoothov kôd za uparivanje:</translation> <translation id="1944921356641260203">Pronađeno je ažuriranje</translation> +<translation id="1947136734041527201">Omogućuje vam da se prijavite na web-lokacije pomoću računa koji imate na usluzi za identitet</translation> <translation id="1949584741547056205">Brzi odgovori</translation> <translation id="1951012854035635156">Asistent</translation> <translation id="1954597385941141174">Web-lokacije mogu tražiti dopuštenje za povezivanje s USB uređajima</translation> @@ -2403,6 +2405,7 @@ <translation id="32939749466444286">Linuxov spremnik nije se pokrenuo. Pokušajte ponovo.</translation> <translation id="3294437725009624529">Gost</translation> <translation id="3294686910656423119">Statistika upotrebe i izvješća o padu programa</translation> +<translation id="3297105622164376095">Dopušteno je prikazivanje upita za prijavu treće strane</translation> <translation id="3297536526040732495">Privremeno povezuje te podatke s vašim Google računom kad ste prijavljeni kako biste bili zaštićeni u Googleovim aplikacijama</translation> <translation id="329838636886466101">Popravak</translation> <translation id="3298789223962368867">Unesen je nevažeći URL.</translation> @@ -3409,6 +3412,7 @@ <translation id="4275830172053184480">Ponovo pokrenite svoj uređaj</translation> <translation id="4277434192562187284">Izvor XML konfiguracije</translation> <translation id="4278390842282768270">Dopušteno</translation> +<translation id="4278498748067682896">Upotrebljavat ćete nadogradnju kioska i znakovlja koja uređaju omogućuje pokretanje samo načina rada kioska ili znakovlja. Ako želite da se korisnici prijave na uređaj, vratite se i registrirajte pomoću Nadogradnje za Chrome za poduzeća.</translation> <translation id="4279129444466079448">Na ovom uređaju možete instalirati najviše <ph name="PROFILE_LIMIT" /> eSIM profila. Da biste dodali još jedan profil, trebate ukloniti jedan od postojećih.</translation> <translation id="4280325816108262082">Veza s uređajem prekinut će se automatski kad se uređaj isključi ili ne upotrebljava</translation> <translation id="4281844954008187215">Uvjeti upotrebe usluge</translation> @@ -3657,6 +3661,7 @@ <translation id="452750746583162491">Pregledajte svoje sinkronizirane podatke</translation> <translation id="4527929807707405172">Omogući obrnuto pomicanje. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="4528494169189661126">Prijedlog prijevoda</translation> +<translation id="4529455689802245339">Chromeovi automatski titlovi možda neće funkcionirati</translation> <translation id="4530494379350999373">Podrijetlo</translation> <translation id="4531924570968473143">Koga želite dodati na ovaj uređaj <ph name="DEVICE_TYPE" />?</translation> <translation id="4532625150642446981">Uređaj "<ph name="USB_DEVICE_NAME" />" se upotrebljava. Ponovna dodjela uređaja koji je upotrebi može uzrokovati pogreške. Jeste li sigurni da želite nastaviti?</translation> @@ -3854,6 +3859,7 @@ <translation id="471880041731876836">Nemaš dopuštenje za posjet toj web-lokaciji</translation> <translation id="4722735765955348426">Zaporka za <ph name="USERNAME" /></translation> <translation id="4722920479021006856"><ph name="APP_NAME" /> dijeli vaš zaslon.</translation> +<translation id="4722989931633062466">Nije dopušteno prikazivanje upita za prijavu treće strane</translation> <translation id="4723140812774948886">Zamijeni sljedećim</translation> <translation id="4724450788351008910">Promijenjena afilijacija</translation> <translation id="4725511304875193254">Corgi</translation> @@ -4822,6 +4828,7 @@ <translation id="5711010025974903573">Zapisnici usluge</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="571222594670061844">Web-lokacije mogu prikazivati upite za prijavu usluga za identitet</translation> <translation id="5713158217420111469">Povezano s uređajem <ph name="DEVICE" /></translation> <translation id="5715711091495208045">Broker dodatka: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Zadane tražilice</translation> @@ -4980,6 +4987,7 @@ <translation id="5876851302954717356">Nova kartica s desne strane</translation> <translation id="5877064549588274448">Kanal je promijenjen. Ponovo pokrenite uređaj za primjenu promjena.</translation> <translation id="5877584842898320529">Odabrani pisač nije dostupan ili nije ispravno instaliran. <ph name="BR" /> Provjerite pisač ili pokušajte odabrati neki drugi.</translation> +<translation id="5878945009165002849">Blokiraj upite za prijavu usluga za identitet</translation> <translation id="5882919346125742463">Poznate mreže</translation> <translation id="5883356647197510494">Automatski je blokirano sljedeće: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation> <translation id="5884474295213649357">Kartica je povezana s USB uređajem.</translation> @@ -5615,6 +5623,7 @@ <translation id="6513247462497316522">Google Chrome upotrijebit će mobilne podatke ako niste povezani na drugu mrežu.</translation> <translation id="6514010653036109809">Dostupan uređaj:</translation> <translation id="6514565641373682518">Ova stranica onemogućila je pokazivač miša.</translation> +<translation id="6517709704288360414">Vaš uređaj možda više neće pravilno funkcionirati i možda ćete imati problema sa sigurnošću i izvedbom. Isključivanje ažuriranja može utjecati i na vaše pravo na podnošenje pravnih zahtjeva ako budete imali poteškoća.</translation> <translation id="6518014396551869914">Kop&iraj sliku</translation> <translation id="6518133107902771759">Potvrdi</translation> <translation id="651942933739530207">Želite li da <ph name="APP_NAME" /> dijeli vaš zaslon i audioizlaz?</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 4bbe65d..43c1ccb 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">A vágólap olvasásához szükséges hozzáférés megtagadva</translation> <translation id="1415990189994829608">Az ilyen jellegű munkamenetekben a(z) <ph name="EXTENSION_NAME" /> (bővítményazonosító: „<ph name="EXTENSION_ID" />”) nem engedélyezett.</translation> <translation id="1418552618736477642">Értesítések és alkalmazások</translation> +<translation id="1418882096915998312">Enterprise-regisztráció folyamatban</translation> <translation id="1418954524306642206">Tallózással adja meg a nyomtatóhoz tartozó PPD-fájlt</translation> <translation id="1420834118113404499">Médiaengedélyek</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> a párosítás engedélyezéséhez</translation> @@ -2329,6 +2330,7 @@ <translation id="3189187154924005138">Nagy kurzor</translation> <translation id="3190558889382726167">A jelszó mentése megtörtént</translation> <translation id="3192947282887913208">Audiofájlok</translation> +<translation id="3193695589337931419">Rendszerjelek segédfolyamata</translation> <translation id="3194786596445804250">Részletek megjelenítése a harmadik felek cookie-jainak letiltásáról</translation> <translation id="3197453258332670132">Jobb kattintással vagy nyomva tartással megjelenítheti a szövegkijelöléshez tartozó adatokat</translation> <translation id="3199127022143353223">Szerverek</translation> @@ -3420,6 +3422,7 @@ <translation id="4275830172053184480">Indítsa újra az eszközt</translation> <translation id="4277434192562187284">XML-konfigurációs forrás</translation> <translation id="4278390842282768270">Engedélyezve</translation> +<translation id="4278498748067682896">Kioszk vagy tájékoztatóeszköz frissítését fogja használni, amely csak kioszk- vagy tájékoztatómód futtatását teszi lehetővé az eszköz számára. Ha azt szeretné, hogy a felhasználók be tudjanak jelentkezni az eszközre, lépjen vissza, és regisztráljon a Chrome Enterprise frissítés használatával.</translation> <translation id="4279129444466079448">Legfeljebb <ph name="PROFILE_LIMIT" /> eSIM-profilt telepíthet erre az eszközre. Új hozzáadásához előbb töröljön egy már meglévő profilt.</translation> <translation id="4280325816108262082">Az eszköz automatikusan megszakítja a kapcsolatot, amikor kikapcsolásra kerül, vagy nincs használatban</translation> <translation id="4281844954008187215">Általános Szerződési Feltételek</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index fc551401..d3999ca 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -2598,7 +2598,7 @@ <translation id="347785443197175480">Շարունակել թույլ տալ <ph name="HOST" />-ին օգտագործել ձեր տեսախցիկն ու խոսափողը</translation> <translation id="3479552764303398839">Հիմա չէ</translation> <translation id="3479685872808224578">Չհաջողվեց հայտնաբերել տպման սերվերը։ Ստուգեք հասցեն և նորից փորձեք։</translation> -<translation id="3480612136143976912">Անհատականացրեք կենդանի ենթագրերի չափը և ոճը։ Որոշ հավելվածներ և կայքեր նույնպես կօգտագործեն այս կարգավորումը։</translation> +<translation id="3480612136143976912">Անհատականացրեք կենդանի ենթագրերի չափսը և ոճը։ Որոշ հավելվածներ և կայքեր նույնպես կօգտագործեն այս կարգավորումը։</translation> <translation id="3480827850068960424">Գտնվել է <ph name="NUM" /> ներդիր</translation> <translation id="3481268647794498892">Կբացվի <ph name="ALTERNATIVE_BROWSER_NAME" /> դիտարկիչով <ph name="COUNTDOWN_SECONDS" /> վայրկյանից</translation> <translation id="3482719661246593752"><ph name="ORIGIN" /> կայքը կարող է դիտել հետևյալ ֆայլերը</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index eac7838..cd62aea 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -961,6 +961,7 @@ <translation id="1892341345406963517">Ciao <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Altre lingue</translation> <translation id="1895658205118569222">Chiusura</translation> +<translation id="1897120393475391208">Usa password efficace</translation> <translation id="1900305421498694955">Le app di Google Play potrebbero richiedere accesso completo al file system per leggere e scrivere sui file memorizzati sui dispositivi di archiviazione esterni. I file e le cartelle creati sul dispositivo sono visibili a chiunque usi l'unità esterna. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Seleziona &tutto</translation> <translation id="1901396183631570154">Chrome non ha potuto salvare queste password nel tuo Account Google, ma puoi comunque salvarle sul dispositivo.</translation> @@ -6544,6 +6545,7 @@ <translation id="7444970023873202833">Esplora altri ricordi in Google Foto</translation> <translation id="7444983668544353857">Disabilita <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Installare automaticamente le app</translation> +<translation id="7449381494541372002">avvio in corso…</translation> <translation id="7449752890690775568">Vuoi rimuovere la password?</translation> <translation id="7450761244949417357">Apertura in <ph name="ALTERNATIVE_BROWSER_NAME" /> ora</translation> <translation id="7452166281927983300">Avvisi ignorati (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 1499fa1..1c4d6e6 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -957,6 +957,7 @@ <translation id="1892341345406963517"><ph name="PARENT_NAME" /> さん</translation> <translation id="189358972401248634">その他の言語</translation> <translation id="1895658205118569222">シャットダウン</translation> +<translation id="1897120393475391208">安全なパスワードを使用</translation> <translation id="1900305421498694955">Google Play のアプリで外部ストレージ デバイスのファイルの読み取りと書き込みを行うには、ファイル システムへのフルアクセスが必要となる場合があります。デバイス上に作成されたファイルやフォルダは、外部ドライブを使用する全員に表示されます。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation> <translation id="1901303067676059328">すべて選択(&A)</translation> <translation id="1901396183631570154">Chrome では、次のパスワードを Google アカウントに保存できませんでした。ただし、このデバイスに保存することは可能です。</translation> @@ -6525,6 +6526,7 @@ <translation id="7444970023873202833">Google フォトで思い出の写真に簡単アクセス</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> を無効にする</translation> <translation id="7448430327655618736">アプリの自動インストール</translation> +<translation id="7449381494541372002">起動しています...</translation> <translation id="7449752890690775568">パスワードを削除しますか?</translation> <translation id="7450761244949417357">まもなく <ph name="ALTERNATIVE_BROWSER_NAME" /> で開きます</translation> <translation id="7452166281927983300">閉じた警告(<ph name="MUTED_PASSWORDS" /> 件)</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 40ff844..5cbf3a8 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -957,6 +957,7 @@ <translation id="1892341345406963517">Сәлеметсіз бе, <ph name="PARENT_NAME" />!</translation> <translation id="189358972401248634">Басқа тілдер</translation> <translation id="1895658205118569222">Өшіру</translation> +<translation id="1897120393475391208">Күрделі құпия сөз пайдалану керек пе?</translation> <translation id="1900305421498694955">Google Play қолданбалары сыртқы жад құрылғыларындағы файлдарды оқу және жазу үшін файл жүйесін толық пайдалану рұқсатын қажет етуі мүмкін. Бұл құрылғыда жасалған файлдар мен қалталарды сыртқы дискіні қолданатын кез келген адам көре алады. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Барлығын &таңдау</translation> <translation id="1901396183631570154">Chrome браузері Google аккаунтын сақтай алмады. Оларды осы құрылғыға сақтай алады.</translation> @@ -6538,6 +6539,7 @@ <translation id="7444970023873202833">Google Photos арқылы басқа да естеліктеріңізді қарап шығыңыз.</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> өшіру</translation> <translation id="7448430327655618736">Қолданбаларды автоматты түрде орнатыңыз</translation> +<translation id="7449381494541372002">іске қосылуда…</translation> <translation id="7449752890690775568">Құпия сөз өшірілсін бе?</translation> <translation id="7450761244949417357"><ph name="ALTERNATIVE_BROWSER_NAME" /> браузерінде ашылады.</translation> <translation id="7452166281927983300">Жабылған ескертулер (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 0dc50814..3f5faf1 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">ಕ್ಲಿಪ್ಬೋರ್ಡ್ ಓದಲು ಪ್ರವೇಶವನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ವಿಸ್ತರಣೆ ID "<ph name="EXTENSION_ID" />") ಈ ರೀತಿಯ ಸೆಶನ್ನಲ್ಲಿ ಅನುಮತಿಸುವುದಿಲ್ಲ.</translation> <translation id="1418552618736477642">ಅಧಿಸೂಚನೆಗಳು ಮತ್ತು ಆ್ಯಪ್ಗಳು</translation> +<translation id="1418882096915998312">ಎಂಟರ್ಪ್ರೈಸ್ ನೋಂದಣಿ ಪ್ರಗತಿಯಲ್ಲಿದೆ</translation> <translation id="1418954524306642206">ನಿಮ್ಮ ಪ್ರಿಂಟರ್ PPD ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಬ್ರೌಸ್ ಮಾಡಿ</translation> <translation id="1420834118113404499">ಮಾಧ್ಯಮ ಪರವಾನಗಿಗಳು</translation> <translation id="1420920093772172268">ಜೋಡಿಸುವುದನ್ನು ಅನುಮತಿಸಲು <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -2323,6 +2324,7 @@ <translation id="3189187154924005138">ದೊಡ್ಡ ಕರ್ಸರ್</translation> <translation id="3190558889382726167">ಪಾಸ್ವರ್ಡ್ ಉಳಿಸಲಾಗಿದೆ</translation> <translation id="3192947282887913208">ಆಡಿಯೋ ಫೈಲ್ಗಳು</translation> +<translation id="3193695589337931419">ಸಿಸ್ಟಂ ಸಿಗ್ನಲ್ಗಳಿಗಾಗಿ ಬಳಸಲಾಗುವ ಯುಟಿಲಿಟಿಗಳು</translation> <translation id="3194786596445804250">ಥರ್ಡ್-ಪಾರ್ಟಿ ಕುಕಿಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವ ಕುರಿತು ವಿವರಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="3197453258332670132">ಬಲ-ಕ್ಲಿಕ್ ಅಥವಾ ದೀರ್ಘಕಾಲ ಒತ್ತಿಹಿಡಿಯಿರಿ, ನೀವು ಆಯ್ಕೆಮಾಡಿದ ಪಠ್ಯಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸಿ</translation> <translation id="3199127022143353223">ಸರ್ವರ್ಗಳು</translation> @@ -3416,6 +3418,7 @@ <translation id="4275830172053184480">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="4277434192562187284">XML ಕಾನ್ಫಿಗರೇಶನ್ ಮೂಲ</translation> <translation id="4278390842282768270">ಅನುಮತಿಸಲಾಗಿದೆ</translation> +<translation id="4278498748067682896">ಸಾಧನವನ್ನು ಕಿಯೋಸ್ಕ್ ಮತ್ತು ಸೈನೇಜ್ ಮೋಡ್ನಲ್ಲಿ ಮಾತ್ರವೇ ರನ್ ಮಾಡಲು ಅನುಮತಿ ನೀಡುವ ಕಿಯೋಸ್ಕ್ ಮತ್ತು ಸೈನೇಜ್ ಅಪ್ಗ್ರೇಡ್ ಅನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ. ಬಳಕೆದಾರರು ಸಾಧನಕ್ಕೆ ಸೈನ್ ಇನ್ ಮಾಡಬೇಕೆಂದು ನೀವು ಬಯಸಿದರೆ, ಹಿಂದಕ್ಕೆ ಹೋಗಿ ಮತ್ತು Chrome ಎಂಟರ್ಪ್ರೈಸ್ ಅಪ್ಗ್ರೇಡ್ ಬಳಸಿಕೊಂಡು ನೋಂದಣಿ ಮಾಡಿ.</translation> <translation id="4279129444466079448">ಈ ಸಾಧನದಲ್ಲಿ ನೀವು ಗರಿಷ್ಠ <ph name="PROFILE_LIMIT" /> eSIM ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬಹುದು. ಮತ್ತೊಂದು ಪ್ರೊಫೈಲ್ ಸೇರಿಸಲು, ಈಗಿರುವ ಪ್ರೊಫೈಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ.</translation> <translation id="4280325816108262082">ಸಾಧನವು ಆಫ್ ಆಗಿರುವಾಗ ಅಥವಾ ಬಳಸದೇ ಇರುವಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡಿಸ್ಕನೆಕ್ಟ್ ಆಗುತ್ತದೆ</translation> <translation id="4281844954008187215">ಸೇವೆಯ ನಿಯಮಗಳು</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index 0a54caa3..6c7ceb6 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1137,7 +1137,7 @@ <translation id="2078019350989722914">Чыгаарда (<ph name="KEY_EQUIVALENT" />) эскертип коюңуз</translation> <translation id="2079053412993822885">Эгер тастыктамаларыңыздын бирин жок кылсаңыз, аны мындан ары өзүңүздүн аныктыгыңызды текшерүү үчүн колдоно албай каласыз.</translation> <translation id="2079545284768500474">Кайтаруу</translation> -<translation id="2080070583977670716">Дагы жөндөөлөр</translation> +<translation id="2080070583977670716">Дагы параметрлер</translation> <translation id="2081816110395725788">Телефон колдонулбаганда кубатты сарптоо</translation> <translation id="2082187087049518845">Топтук өтмөк</translation> <translation id="2082510809738716738">Теманын түсүн тандаңыз</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 28432aad..db8e7da 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">ການເຂົ້າອ່ານຄລິບບອດຖືກປະຕິເສດ</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ID ສ່ວນຂະຫຍາຍ "<ph name="EXTENSION_ID" />") ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຢູ່ໃນຊ່ວງເວລາເຂົ້າໃຊ້ປະເພດນີ້.</translation> <translation id="1418552618736477642">ການແຈ້ງເຕືອນ ແລະ ແອັບ</translation> +<translation id="1418882096915998312">ກຳລັງລົງທະບຽນອົງກອນຢູ່</translation> <translation id="1418954524306642206">ເລື່ອນເບິ່ງເພື່ອລະບຸ PPD ເຄື່ອງພິມຂອງທ່ານ</translation> <translation id="1420834118113404499">ໃບອະນຸຍາດສື່</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> ເພື່ອອະນຸຍາດການຈັບຄູ່</translation> @@ -969,6 +970,7 @@ <translation id="1892341345406963517">ສະບາຍດີ <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">ພາສາອື່ນໆ</translation> <translation id="1895658205118569222">ມອດ</translation> +<translation id="1897120393475391208">ໃຊ້ລະຫັດຜ່ານຍາກ</translation> <translation id="1900305421498694955">ແອັບຈາກ Google Play ອາດຈະຈຳເປັນຕ້ອງມີສິດເຂົ້າເຖິງລະບົບໄຟລ໌ເຕັມເພື່ອອ່ານ ແລະ ຂຽນໄຟລ໌ໃນອຸປະກອນຈັດເກັບຂໍ້ມູນພາຍນອກ. ໄຟລ໌ ແລະ ໂຟນເດີທີ່ສ້າງຂຶ້ນໃນອຸປະກອນສາມາດເບິ່ງເຫັນໄດ້ຕໍ່ກັບທຸກຄົນຜູ້ໃຊ້ໄດຣຟ໌ພາຍນອກ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation> <translation id="1901303067676059328">ເລືອກທັງຫມົດ</translation> <translation id="1901396183631570154">Chrome ບໍ່ສາມາດບັນທຶກລະຫັດຜ່ານເຫຼົ່ານີ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານ. ທ່ານສາມາດບັນທຶກພວກມັນໄວ້ໃນອຸປະກອນນີ້ໄດ້.</translation> @@ -3421,6 +3423,7 @@ <translation id="4275830172053184480">ເລີ່ມຕົ້ນອຸປະກອນຂອງທ່ານໃໝ່</translation> <translation id="4277434192562187284">ແຫຼ່ງທີ່ມາການຕັ້ງຄ່າ XML</translation> <translation id="4278390842282768270">ອະນຸຍາດແລ້ວ</translation> +<translation id="4278498748067682896">ທ່ານຈະໃຊ້ອັບເກຣດຄີອອສ ແລະ ປ້າຍເຊິ່ງອະນຸຍາດໃຫ້ອຸປະກອນເອີ້ນໃຊ້ໃນໂໝດຄີອອສ ຫຼື ປ້າຍເທົ່ານັ້ນ. ຫາກທ່ານຢາກໃຫ້ຜູ້ໃຊ້ເຂົ້າສູ່ລະບົບຫາອຸປະກອນ, ກະລຸນາກັບຄືນໄປແລ້ວລົງທະບຽນໂດຍໃຊ້ Chrome Enterprise Upgrade.</translation> <translation id="4279129444466079448">ທ່ານສາມາດຕິດຕັ້ງໂປຣໄຟລ໌ eSIM ໄດ້ສູງສຸດ <ph name="PROFILE_LIMIT" /> ໂປຣໄຟລ໌ຢູ່ອຸປະກອນນີ້. ເພື່ອເພີ່ມໂປຣໄຟລ໌ອື່ນ, ໃຫ້ລຶບໂປຣໄຟລ໌ທີ່ມີຢູ່ກ່ອນແລ້ວອອກກ່ອນ.</translation> <translation id="4280325816108262082">ອຸປະກອນຈະຕັດການເຊື່ອມຕໍ່ອັດຕະໂນມັດເມື່ອມັນຖືກປິດໄວ້ ຫຼື ບໍ່ໄດ້ໃຊ້</translation> <translation id="4281844954008187215">ຂໍ້ກໍານົດການບໍລິການ</translation> @@ -6559,6 +6562,7 @@ <translation id="7444970023873202833">ສຳຫຼວດຄວາມຊົງຈຳເພີ່ມເຕີມຂອງທ່ານໃນ Google ຮູບພາບ</translation> <translation id="7444983668544353857">ປິດໃຊ້ງານ <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">ຕິດຕັ້ງແອັບໂດຍອັດຕະໂນມັດ</translation> +<translation id="7449381494541372002">ກຳລັງເລີ່ມ...</translation> <translation id="7449752890690775568">ລຶບລະຫັດຜ່ານອອກບໍ?</translation> <translation id="7450761244949417357">ກຳລັງເປີດໃນ <ph name="ALTERNATIVE_BROWSER_NAME" /> ຕອນນີ້</translation> <translation id="7452166281927983300">ປິດຄຳເຕືອນໄວ້ແລ້ວ (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index b9720a6..e82245c 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -962,6 +962,7 @@ <translation id="1892341345406963517">Sveiki, <ph name="PARENT_NAME" />!</translation> <translation id="189358972401248634">Citas valodas</translation> <translation id="1895658205118569222">Izslēgšana</translation> +<translation id="1897120393475391208">Izmantojiet drošu paroli</translation> <translation id="1900305421498694955">Dažreiz veikalā Google Play iegādātajām lietotnēm ir nepieciešama pilnīga piekļuve failu sistēmai, lai varētu lasīt un rakstīt failus ārējās krātuves ierīcēs. Ierīcē izveidotie faili un mapes ir redzamas visiem, kas lieto ārējo disku. <ph name="LINK_BEGIN" />Uzziniet vairāk<ph name="LINK_END" />.</translation> <translation id="1901303067676059328">Izvēlēties visus</translation> <translation id="1901396183631570154">Pārlūks Chrome nevarēja saglabāt šīs paroles jūsu Google kontā. Tās joprojām varat saglabāt šajā ierīcē.</translation> @@ -6548,6 +6549,7 @@ <translation id="7444970023873202833">Izpētiet arī citas atmiņas Google fotoattēlos</translation> <translation id="7444983668544353857">Atspējot <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Automātiski instalējiet lietotnes</translation> +<translation id="7449381494541372002">notiek palaišana…</translation> <translation id="7449752890690775568">Vai noņemt paroli?</translation> <translation id="7450761244949417357">Notiek atvēršana <ph name="ALTERNATIVE_BROWSER_NAME" /></translation> <translation id="7452166281927983300">Noraidītie brīdinājumi (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index cb3e0fc3..19d03fee 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2333,6 +2333,7 @@ <translation id="3189187154924005138">Голем курсор</translation> <translation id="3190558889382726167">Лозинката е зачувана</translation> <translation id="3192947282887913208">Аудиодатотеки</translation> +<translation id="3193695589337931419">Алатки за системски сигнали</translation> <translation id="3194786596445804250">Прикажи детали за блокирање колачиња од трети страни</translation> <translation id="3197453258332670132">Прикажува поврзани информации за избраниот текст при кликнување со десно копче или долго притискање</translation> <translation id="3199127022143353223">Сервери</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index c4867272..eb52de5 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -2316,6 +2316,7 @@ <translation id="3189187154924005138">വലിയ കഴ്സർ</translation> <translation id="3190558889382726167">പാസ്വേഡ് സംരക്ഷിച്ചു</translation> <translation id="3192947282887913208">ഓഡിയോ ഫയലുകള്</translation> +<translation id="3193695589337931419">സിസ്റ്റം സിഗ്നലുകൾക്ക് ഉപയോഗിക്കുന്ന യൂട്ടിലിറ്റികൾ</translation> <translation id="3194786596445804250">മൂന്നാം കക്ഷി കുക്കികൾ ബ്ലോക്ക് ചെയ്യുന്നതിനെ കുറിച്ചുള്ള വിശദാംശങ്ങൾ കാണിക്കുക</translation> <translation id="3197453258332670132">വലത്-ക്ലിക്കിലൂടെയോ ദീർഘനേരം അമർത്തുന്നതിലൂടെയോ നിങ്ങൾ തിരഞ്ഞെടുത്ത ടെക്സ്റ്റിന്റെ അനുബന്ധ വിവരങ്ങൾ കാണിക്കുക</translation> <translation id="3199127022143353223">സെര്വറുകള്</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 8bedabcd..81419d0a 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -971,6 +971,7 @@ <translation id="1892341345406963517">हाय <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">इतर भाषा</translation> <translation id="1895658205118569222">बंद करा</translation> +<translation id="1897120393475391208">क्लिष्ट पासवर्ड वापरा</translation> <translation id="1900305421498694955">Google Play वरील ॲप्सना कदाचित बाह्य स्टोरेज डिव्हाइसवरील फाइल रीड आणि राइट करण्यासाठी संपूर्ण फाइल सिस्टम ॲक्सेसची आवश्यकता असू शकते. डिव्हाइसवर तयार केलेल्या फाइल आणि फोल्डर हे बाह्य ड्राइव्ह वापरणार्या कोणालाही दिसतील. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&सर्व निवडा</translation> <translation id="1901396183631570154">Chrome ला हे पासवर्ड तुमच्या Google खाते मध्ये सेव्ह करता आले नाहीत. तुम्ही तरीही ते या डिव्हाइसवर सेव्ह करू शकता.</translation> @@ -6559,6 +6560,7 @@ <translation id="7444970023873202833">Google Photos मध्ये तुमच्या आणखी आठवणी एक्सप्लोर करा</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> अक्षम करा</translation> <translation id="7448430327655618736">अॅप्स आपोआप इंस्टॉल करा</translation> +<translation id="7449381494541372002">सुरू करत आहे…</translation> <translation id="7449752890690775568">पासवर्ड काढायचा?</translation> <translation id="7450761244949417357">आता <ph name="ALTERNATIVE_BROWSER_NAME" /> मध्ये उघडत आहे</translation> <translation id="7452166281927983300">डिसमिस केलेल्या चेतावण्या (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 5582e6d8..4185c8f 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -971,6 +971,7 @@ <translation id="1892341345406963517">မင်္ဂလာပါ <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">အခြား ဘာသာစကားများ</translation> <translation id="1895658205118569222">ပိတ်ရန်</translation> +<translation id="1897120393475391208">လုံခြုံမှုမြင့်သည့် စကားဝှက် သုံးပါ</translation> <translation id="1900305421498694955">ပြင်ပသိုလှောင်ခန်း ကိရိယာများပေါ်တွင် ဖိုင်များကို ဖတ်ရန်၊ ရေးရန်အတွက် Google Play မှ အက်ပ်များက ဖိုင်စနစ် အသုံးပြုခွင့် အပြည့်အဝ လိုအပ်နိုင်သည်။ စက်ပေါ်တွင် ပြုလုပ်ထားသော ဖိုင်နှင့်ဖိုင်တွဲများကို ပြင်ပဒရိုက်ဗ် အသုံးပြုသူတိုင်း မြင်နိုင်ပါသည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="1901303067676059328">အားလုံးကို &ရွေးရန်</translation> <translation id="1901396183631570154">Chrome က ဤစကားဝှက်များကို သင်၏ Google Account တွင် သိမ်း၍မရပါ။ ၎င်းတို့ကို ဤစက်တွင် သိမ်းနိုင်ပါသေးသည်။</translation> @@ -2200,7 +2201,7 @@ <translation id="304747341537320566">စကားပြော အင်ဂျင်များ</translation> <translation id="3048336643003835855">ရောင်းချသူ <ph name="VENDOR_ID" /> ထံမှ HID စက်ပစ္စည်းများ</translation> <translation id="3048917188684939573">ကာစ်လုပ်ခြင်းနှင့် စက်ပစ္စည်းမှတ်တမ်းများ</translation> -<translation id="3051250416341590778">ဖန်သားပြင်ပြသမှု အရွယ်အစား</translation> +<translation id="3051250416341590778">ပြကွက်အရွယ်</translation> <translation id="3053013834507634016">အသိမှတ်ပြုလက်မှတ် ကီးအသုံးပြုမှု</translation> <translation id="3053273573829329829">အသုံးပြုသူ၏ ပင်နံပါတ် ဖွင့်ရန်</translation> <translation id="3054766768827382232">ပိတ်လိုက်ခြင်းက သင့်ချိတ်ဆက်ပစ္စည်းများ၏ စွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်စေသော်လည်း ခွင့်ပြုချက်မရသော အသုံးပြုမှုဖြင့် သင့်ကိုယ်ရေးကိုယ်တာဒေတာကို ဖော်ထုတ်နိုင်သည်။</translation> @@ -6451,7 +6452,7 @@ <translation id="7347452120014970266">ဤလုပ်ဆောင်ချက်က <ph name="ORIGIN_NAME" /> နှင့် ၎င်းထည့်သွင်းထားသော အက်ပ်များ သိမ်းထားသည့် ဒေတာနှင့် ကွတ်ကီးအားလုံးကို ရှင်းထုတ်ပါမည်</translation> <translation id="7347751611463936647">ဒီတိုးချဲ့မှုကို အသုံးပြုရန်၊ "<ph name="EXTENSION_KEYWORD" />" ကို၊ ၎င်းနောက်မှာ TAB၊ အဲဒီနောက်မှာ သင်၏ ညွှန်ကြားချက် သို့မဟုတ် ရှာဖွေမှုကို တိုက်ရိုက် ထည့်သွင်းပါ။</translation> <translation id="7347943691222276892"><ph name="SUBPAGE_TITLE" /> မှ ထွက်ခွာရန် နှိပ်ပါ။</translation> -<translation id="7348093485538360975">မျက်နှာပြင်ပေါ်ရှိ လက်ကွက်</translation> +<translation id="7348093485538360975">ဖန်သားပြင်လက်ကွက်</translation> <translation id="7349010927677336670">ဗီဒီယို ပြေပြစ်မှု</translation> <translation id="7352651011704765696">တစ်ခုခု မှားနေပြီ</translation> <translation id="7353261921908507769">အနီးတစ်ဝိုက်ရှိ အဆက်အသွယ်များက သင်နှင့်မျှဝေနိုင်သည်။ သင်လက်မခံမချင်း လွှဲပြောင်းမှုကို စတင်မည်မဟုတ်ပါ။</translation> @@ -6558,6 +6559,7 @@ <translation id="7444970023873202833">Google Photos တွင် နောက်ထပ်အမှတ်တရများကို ရှာဖွေကြည့်ပါ</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> ပိတ်</translation> <translation id="7448430327655618736">အက်ပ်များကို အလိုအလျောက် ထည့်သွင်းနိုင်သည်</translation> +<translation id="7449381494541372002">စတင်နေသည်…</translation> <translation id="7449752890690775568">စကားဝှက်ကို ဖယ်မလား။</translation> <translation id="7450761244949417357"><ph name="ALTERNATIVE_BROWSER_NAME" /> တွင် ယခု ဖွင့်ပါမည်</translation> <translation id="7452166281927983300">ပယ်ထားသော သတိပေးချက်များ (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 6913ad4f..d3ae680 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1006,7 +1006,7 @@ <translation id="1951012854035635156">सहायक</translation> <translation id="1954597385941141174">साइटहरूले USB मा कनेक्ट हुने अनुमति माग्न सक्छन्</translation> <translation id="1954813140452229842">आदान प्रदान माउन्ट गर्ने क्रममा त्रुटि भयो। कृपया आफ्ना प्रमाणहरूको जाँच गरी फेरि प्रयास गर्नुहोस्।</translation> -<translation id="1956050014111002555">फाइलमा बहुविध प्रमाणपत्रहरू समावेश गरिएको थियो, जस मध्ये कुनै पनि आयात गरिएका थिएनन्:</translation> +<translation id="1956050014111002555">फाइलमा बहुविध प्रमाणपत्रहरू समावेश गरिएको थियो, जस मध्ये कुनै पनि इम्पोर्ट गरिएका थिएनन्:</translation> <translation id="1956167375087861299">संरक्षित सामग्री प्ले गर्न आइडेन्टिफायर प्रयोग गर्ने अनुमति दिइएको छैन</translation> <translation id="1956390763342388273">यस कार्यले "<ph name="FOLDER_PATH" />" मा रहेका सबै फाइलहरू अपलोड गर्ने छ। तपाईंलाई साइटमाथि विश्वास छ भने मात्र यो कार्य गर्नुहोस्।</translation> <translation id="1962233722219655970">यस पृष्ठले एक सहज ग्राहक एप प्रयोग गर्छ जुन तपाइँको कम्प्युटरटमा चल्दैन।</translation> @@ -2315,6 +2315,7 @@ <translation id="3189187154924005138">ठुलो कर्सर</translation> <translation id="3190558889382726167">पासवर्ड सेभ गरियो</translation> <translation id="3192947282887913208">अडियो फाइलहरू</translation> +<translation id="3193695589337931419">सिस्टमको सिग्नलसम्बन्धी युटिलिटीहरू</translation> <translation id="3194786596445804250">तेस्रो पक्षीय कुकी ब्लक गर्ने तरिकासम्बन्धी विवरण देखाइयोस्</translation> <translation id="3197453258332670132">दायाँ क्लिक गर्दा वा केही बेरसम्म थिच्दा मैले चयन गरेका पाठसँग सम्बन्धित जानकारी देखाइयोस्</translation> <translation id="3199127022143353223">सर्भरहरू</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index d623a8b..98956055 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Leestoegang voor klembord geweigerd</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (extensie-ID '<ph name="EXTENSION_ID" />') is niet toegestaan in dit type sessie.</translation> <translation id="1418552618736477642">Meldingen en apps</translation> +<translation id="1418882096915998312">Enterprise-inschrijving in behandeling</translation> <translation id="1418954524306642206">Browsen om de PPD van je printer op te geven</translation> <translation id="1420834118113404499">Medialicenties</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> om te koppelen</translation> @@ -3406,6 +3407,7 @@ <translation id="4275830172053184480">Je apparaat opnieuw opstarten</translation> <translation id="4277434192562187284">XML-configuratiebron</translation> <translation id="4278390842282768270">Toegestaan</translation> +<translation id="4278498748067682896">Je gebruikt een upgrade voor kiosks en digitale borden waardoor het apparaat alleen de kioskmodus of modus voor digitale borden kan gebruiken. Als je wilt dat gebruikers kunnen inloggen op het apparaat, ga je terug en schrijf je het in via Chrome Enterprise Upgrade.</translation> <translation id="4279129444466079448">Je kunt maximaal <ph name="PROFILE_LIMIT" /> e-simkaartprofielen installeren op dit apparaat. Als je nog een profiel wilt toevoegen, verwijder je eerst een bestaand profiel.</translation> <translation id="4280325816108262082">Het apparaat verbreekt de verbinding automatisch als het wordt uitgezet of niet wordt gebruikt</translation> <translation id="4281844954008187215">Servicevoorwaarden</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 5115cde..3ab0bd7c 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -2326,6 +2326,7 @@ <translation id="3189187154924005138">Stor markør</translation> <translation id="3190558889382726167">Passordet er lagret</translation> <translation id="3192947282887913208">Lydfiler</translation> +<translation id="3193695589337931419">Systemverktøy for systemsignaler</translation> <translation id="3194786596445804250">Vis detaljer om å blokkere informasjonskapsler fra tredjeparter</translation> <translation id="3197453258332670132">Med et høyreklikk eller langt trykk kan du se informasjon relatert til teksten du har merket</translation> <translation id="3199127022143353223">Tjenere</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 290416f..5d2a6c4a6 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -958,6 +958,7 @@ <translation id="1892341345406963517">ନମସ୍କାର <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">ଅନ୍ୟ ଭାଷାଗୁଡ଼ିକ</translation> <translation id="1895658205118569222">ବନ୍ଦ କରନ୍ତୁ</translation> +<translation id="1897120393475391208">ଜଟିଳ ପାସୱାର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ</translation> <translation id="1900305421498694955">ବାହ୍ୟ ଷ୍ଟୋରେଜ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକରେ ଥିବା ଫାଇଲ୍ଗୁଡ଼ିକୁ ପଢ଼ିବା ଏବଂ ଲେଖିବା ପାଇଁ Google Playରୁ ଆପ୍ଲିକେସନ୍ଗୁଡ଼ିକୁ ହୁଏତ ସମ୍ପୂର୍ଣ୍ଣ ଫାଇଲ୍ ସିଷ୍ଟମ୍ ଆକ୍ସେସ୍ର ଆବଶ୍ୟକତା ପଡ଼ିପାରେ। ଡିଭାଇସ୍ରେ ତିଆରି କରାଯାଇଥିବା ଫାଇଲ୍ ଓ ଫୋଲ୍ଡର୍ଗୁଡ଼ିକ ବାହ୍ୟ ଡ୍ରାଇଭ୍ ବ୍ୟବହାର କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କୁ ଦୃଶ୍ୟମାନ ହୁଏ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&ସମସ୍ତ ଚୟନ କରନ୍ତୁ</translation> <translation id="1901396183631570154">Chrome ଏହି ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ୍ କରିପାରିଲା ନାହିଁ। ଆପଣ ଏବେ ବି ସେଗୁଡ଼ିକୁ ଏହି ଡିଭାଇସରେ ସେଭ୍ କରିପାରିବେ।</translation> @@ -6544,6 +6545,7 @@ <translation id="7444970023873202833">Google Photosରେ ଆପଣଙ୍କର ଅଧିକ ମେମୋରୀ ଏକ୍ସପ୍ଲୋର କରନ୍ତୁ</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" />କୁ ଅକ୍ଷମ କରନ୍ତୁ</translation> <translation id="7448430327655618736">ସ୍ୱଚାଳିତ ଭାବେ ଆପ୍ସ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation> +<translation id="7449381494541372002">ଆରମ୍ଭ କରାଯାଉଛି...</translation> <translation id="7449752890690775568">ପାସୱାର୍ଡ କାଢ଼ି ଦେବେ?</translation> <translation id="7450761244949417357">ବର୍ତ୍ତମାନ <ph name="ALTERNATIVE_BROWSER_NAME" />ରେ ଖୋଲୁଛି</translation> <translation id="7452166281927983300">(<ph name="MUTED_PASSWORDS" />)ଟି ଖାରଜ କରାଯାଇଥିବା ଚେତାବନୀ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index f65ea0c..dafb1fe4 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">ਕਲਿੱਪਬੋਰਡ ਪੜ੍ਹਨ ਦੀ ਪਹੁੰਚ ਅਸਵੀਕਾਰ ਕੀਤੀ ਗਈ</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ਐਕਸਟੈਸ਼ਨ ID "<ph name="EXTENSION_ID" />") ਦੀ ਇਸ ਤਰਾਂ ਦੇ ਸੈਸ਼ਨ ਲਈ ਅਨੁਮਤੀ ਨਹੀਂ ਹੈ।</translation> <translation id="1418552618736477642">ਸੂਚਨਾਵਾਂ ਅਤੇ ਐਪਾਂ</translation> +<translation id="1418882096915998312">Enterprise ਵਿੱਚ ਦਰਜ ਹੋਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਜਾਰੀ ਹੈ</translation> <translation id="1418954524306642206">ਆਪਣੀ ਪ੍ਰਿੰਟਰ PPD ਫ਼ਾਈਲ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਬ੍ਰਾਊਜ਼ ਕਰੋ</translation> <translation id="1420834118113404499">ਮੀਡੀਆ ਲਾਇਸੰਸ</translation> <translation id="1420920093772172268">ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਸਤੇ <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -3423,6 +3424,7 @@ <translation id="4275830172053184480">ਆਪਣੀ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="4277434192562187284">XML ਸੰਰੂਪਣ ਸਰੋਤ</translation> <translation id="4278390842282768270">ਆਗਿਆ ਦਿੱਤੀ</translation> +<translation id="4278498748067682896">ਤੁਸੀਂ Kiosk & Signage Upgrade ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ ਜੋ ਡੀਵਾਈਸ ਨੂੰ ਸਿਰਫ਼ ਕਿਓਸਕ ਜਾਂ ਸਾਈਨੇਜ ਮੋਡ ਵਿੱਚ ਚਲਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਵਰਤੋਂਕਾਰ ਡੀਵਾਈਸ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਵਾਪਸ ਜਾਓ, Chrome Enterprise Upgrade ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਦਰਜ ਕਰੋ।</translation> <translation id="4279129444466079448">ਤੁਸੀਂ ਇਸ ਡੀਵਾਈਸ 'ਤੇ <ph name="PROFILE_LIMIT" /> ਤੱਕ ਈ-ਸਿਮ ਪ੍ਰੋਫਾਈਲ ਸਥਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਹੋਰ ਪ੍ਰੋਫਾਈਲ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਮੋਜੂਦਾ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਹਟਾਓ।</translation> <translation id="4280325816108262082">ਡੀਵਾਈਸ ਦੇ ਬੰਦ ਹੋਣ 'ਤੇ ਜਾਂ ਵਰਤੋਂ ਵਿੱਚ ਨਾ ਹੋਣ 'ਤੇ ਇਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਡਿਸਕਨੈਕਟ ਹੋ ਜਾਵੇਗਾ</translation> <translation id="4281844954008187215">ਸੇਵਾ ਦੀਆਂ ਮਦਾਂ</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 6e51ccd7..01fd112 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -974,6 +974,7 @@ <translation id="1892341345406963517">Olá, <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Outros idiomas</translation> <translation id="1895658205118569222">Encerramento</translation> +<translation id="1897120393475391208">Use uma senha forte</translation> <translation id="1900305421498694955">Os apps do Google Play podem exigir acesso total ao sistema de arquivos para a leitura e a gravação de arquivos em dispositivos de armazenamento externo. Os arquivos e pastas criados no dispositivo ficam visíveis para qualquer pessoa que use o drive externo. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Selecionar &tudo</translation> <translation id="1901396183631570154">Não foi possível salvar estas senhas na sua Conta do Google. Você ainda pode salvá-las no dispositivo.</translation> @@ -2332,6 +2333,7 @@ <translation id="3189187154924005138">Cursor grande</translation> <translation id="3190558889382726167">Senha salva</translation> <translation id="3192947282887913208">Arquivos de áudio</translation> +<translation id="3193695589337931419">Utilitários de sinais do sistema</translation> <translation id="3194786596445804250">Mostrar detalhes sobre bloquear cookies de terceiros</translation> <translation id="3197453258332670132">Ao clicar com o botão direito do mouse ou tocar na tela e mantê-la pressionada, informações relacionadas à seleção de texto são exibidas</translation> <translation id="3199127022143353223">Servidores</translation> @@ -6568,6 +6570,7 @@ <translation id="7444970023873202833">Veja mais recordações no Google Fotos</translation> <translation id="7444983668544353857">Desativar <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Instalar apps automaticamente</translation> +<translation id="7449381494541372002">Iniciando…</translation> <translation id="7449752890690775568">Remover a senha?</translation> <translation id="7450761244949417357">Abrindo no <ph name="ALTERNATIVE_BROWSER_NAME" /> agora</translation> <translation id="7452166281927983300">Avisos dispensados (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 1f7a4c4..6bb66cc 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Acesso de leitura à área de transferência negado</translation> <translation id="1415990189994829608">A extensão <ph name="EXTENSION_NAME" /> (ID da extensão "<ph name="EXTENSION_ID" />") não é permitida neste tipo de sessão.</translation> <translation id="1418552618736477642">Notificações e apps</translation> +<translation id="1418882096915998312">Inscrição empresarial em curso</translation> <translation id="1418954524306642206">Procurar para especificar o PPD da impressora</translation> <translation id="1420834118113404499">Licenças de multimédia</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> para permitir a sincronização</translation> @@ -1003,6 +1004,7 @@ <translation id="1942600407708803723">Encerrar quando a tampa for fechada</translation> <translation id="1944528062465413897">Código de sincronização de Bluetooth:</translation> <translation id="1944921356641260203">Atualização encontrada</translation> +<translation id="1947136734041527201">Permite-lhe iniciar sessão em Websites com a conta que tem num serviço de identidade</translation> <translation id="1949584741547056205">Respostas rápidas</translation> <translation id="1951012854035635156">Assistente</translation> <translation id="1954597385941141174">Os sites podem solicitar a ligação a dispositivos USB</translation> @@ -2401,6 +2403,7 @@ <translation id="32939749466444286">Não é possível iniciar o contentor do Linux. Tente novamente.</translation> <translation id="3294437725009624529">Convidado</translation> <translation id="3294686910656423119">Estatísticas de utilização e relatórios de falhas</translation> +<translation id="3297105622164376095">Com autorização para apresentar pedidos de início de sessão de terceiros</translation> <translation id="3297536526040732495">Associa temporariamente estes dados à sua Conta Google quando tiver sessão iniciada para garantir a sua proteção nas apps Google</translation> <translation id="329838636886466101">Reparar</translation> <translation id="3298789223962368867">Introduzido um URL inválido.</translation> @@ -3407,6 +3410,7 @@ <translation id="4275830172053184480">Reiniciar o dispositivo</translation> <translation id="4277434192562187284">Origem da configuração XML</translation> <translation id="4278390842282768270">Permitido</translation> +<translation id="4278498748067682896">Irá usar uma atualização do modo quiosque e sinalização, que só permite que o dispositivo seja executado no modo quiosque ou sinalização. Se quiser que os utilizadores iniciem sessão no dispositivo, retroceda e inscreva-se através da Atualização do Chrome Enterprise.</translation> <translation id="4279129444466079448">Pode instalar até <ph name="PROFILE_LIMIT" /> perfis do eSIM neste dispositivo. Para adicionar outro perfil, remova primeiro um perfil existente.</translation> <translation id="4280325816108262082">O dispositivo desassocia-se automaticamente quando é desligado ou não está a ser utilizado</translation> <translation id="4281844954008187215">Termos de Utilização</translation> @@ -3655,6 +3659,7 @@ <translation id="452750746583162491">Rever os dados sincronizados</translation> <translation id="4527929807707405172">Ative o deslocamento inverso. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="4528494169189661126">Sugestão de tradução</translation> +<translation id="4529455689802245339">As Legendas instantâneas do Chrome podem não funcionar</translation> <translation id="4530494379350999373">Origem</translation> <translation id="4531924570968473143">Quem pretende adicionar a este dispositivo <ph name="DEVICE_TYPE" />?</translation> <translation id="4532625150642446981">O dispositivo "<ph name="USB_DEVICE_NAME" />" está a ser utilizado. A reatribuição do dispositivo durante a utilização do mesmo pode causar erros. Tem a certeza de que pretende continuar?</translation> @@ -3852,6 +3857,7 @@ <translation id="471880041731876836">Não tem autorização para aceder a este site</translation> <translation id="4722735765955348426">Palavra-passe de <ph name="USERNAME" /></translation> <translation id="4722920479021006856"><ph name="APP_NAME" /> está a partilhar o seu ecrã.</translation> +<translation id="4722989931633062466">Sem autorização para apresentar pedidos de início de sessão de terceiros</translation> <translation id="4723140812774948886">Trocar com o seguinte</translation> <translation id="4724450788351008910">A afiliação mudou</translation> <translation id="4725511304875193254">Corgi</translation> @@ -4823,6 +4829,7 @@ <translation id="5711010025974903573">Registos de serviço</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="571222594670061844">Os sites podem mostrar pedidos de início de sessão de serviços de identidade</translation> <translation id="5713158217420111469">Ligado a <ph name="DEVICE" /></translation> <translation id="5715711091495208045">Mediador de plug-ins: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motores de pesquisa predefinidos</translation> @@ -4981,6 +4988,7 @@ <translation id="5876851302954717356">Novo separador à direita</translation> <translation id="5877064549588274448">Canal alterado. Reinicie o dispositivo para aplicar as alterações.</translation> <translation id="5877584842898320529">A impressora selecionada não está disponível ou não está instalada corretamente. <ph name="BR" /> Verifique a impressora ou tente selecionar outra impressora.</translation> +<translation id="5878945009165002849">Bloquear pedidos de início de sessão de serviços de identidade</translation> <translation id="5882919346125742463">Redes conhecidas</translation> <translation id="5883356647197510494">Bloqueou automaticamente <ph name="PERMISSION_1" /> e <ph name="PERMISSION_2" /></translation> <translation id="5884474295213649357">Este separador está associado a um dispositivo USB.</translation> @@ -5617,6 +5625,7 @@ <translation id="6513247462497316522">O Google Chrome irá utilizar dados móveis se não estiver ligado a outra rede.</translation> <translation id="6514010653036109809">Dispositivo disponível:</translation> <translation id="6514565641373682518">Esta página desativou o cursor do rato.</translation> +<translation id="6517709704288360414">O seu dispositivo pode ter deixado de funcionar corretamente e pode deparar-se com problemas de segurança e desempenho. Desativar as atualizações também pode afetar o seu direito de apresentar queixas legais caso tenha problemas.</translation> <translation id="6518014396551869914">Cop&iar imagem</translation> <translation id="6518133107902771759">Verificar</translation> <translation id="651942933739530207">Pretende que a aplicação <ph name="APP_NAME" /> partilhe o seu ecrã e saída de áudio?</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 44d9e84..e48ad25 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1005,6 +1005,7 @@ <translation id="1942600407708803723">Când capacul este închis: oprire</translation> <translation id="1944528062465413897">Cod de asociere prin Bluetooth:</translation> <translation id="1944921356641260203">A fost găsită o actualizare</translation> +<translation id="1947136734041527201">Îți dă posibilitatea să te conectezi pe site-uri folosind contul creat într-un serviciu de identitate</translation> <translation id="1949584741547056205">Răspunsuri rapide</translation> <translation id="1951012854035635156">Asistent</translation> <translation id="1954597385941141174">Site-urile pot solicita permisiunea de a se conecta la dispozitive USB</translation> @@ -2402,6 +2403,7 @@ <translation id="32939749466444286">Containerul Linux nu a pornit. Încearcă din nou.</translation> <translation id="3294437725009624529">Invitat</translation> <translation id="3294686910656423119">Statistici de utilizare și rapoarte de blocare</translation> +<translation id="3297105622164376095">Au permisiunea de a afișa solicitări de conectare prin terți</translation> <translation id="3297536526040732495">Conectează temporar aceste date la Contul tău Google dacă te-ai conectat, pentru a te proteja în aplicațiile Google</translation> <translation id="329838636886466101">Repară</translation> <translation id="3298789223962368867">A fost introdusă o adresă URL nevalidă.</translation> @@ -3657,6 +3659,7 @@ <translation id="452750746583162491">Examinează datele sincronizate</translation> <translation id="4527929807707405172">Activează derularea inversă. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="4528494169189661126">Sugestie de traducere</translation> +<translation id="4529455689802245339">Este posibil ca Subtitrările live din Chrome să nu funcționeze</translation> <translation id="4530494379350999373">Origine</translation> <translation id="4531924570968473143">Pe cine vrei să adaugi la acest <ph name="DEVICE_TYPE" />?</translation> <translation id="4532625150642446981">„<ph name="USB_DEVICE_NAME" />” este în uz. Reatribuirea dispozitivului cât timp este folosit poate cauza erori. Sigur vrei să continui?</translation> @@ -3854,6 +3857,7 @@ <translation id="471880041731876836">Nu ai permisiunea să accesezi acest site</translation> <translation id="4722735765955348426">Parola pentru <ph name="USERNAME" /></translation> <translation id="4722920479021006856">Aplicația <ph name="APP_NAME" /> are acces la ecran.</translation> +<translation id="4722989931633062466">Nu au permisiunea de a afișa solicitări de conectare prin terți</translation> <translation id="4723140812774948886">Schimbă cu următorul</translation> <translation id="4724450788351008910">Afilierea a fost schimbată</translation> <translation id="4725511304875193254">Corgi</translation> @@ -4824,6 +4828,7 @@ <translation id="5711010025974903573">Jurnale de service</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="571222594670061844">Site-urile pot afișa solicitări de conectare de la servicii de identitate</translation> <translation id="5713158217420111469">Conectat la <ph name="DEVICE" /></translation> <translation id="5715711091495208045">Broker pluginuri: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Motoarele de căutare prestabilite</translation> @@ -4982,6 +4987,7 @@ <translation id="5876851302954717356">Filă nouă la dreapta</translation> <translation id="5877064549588274448">Canalul a fost schimbat. Reporniți dispozitivul pentru a aplica modificările.</translation> <translation id="5877584842898320529">Imprimanta selectată nu este disponibilă sau nu este instalată corect. <ph name="BR" /> Verifică imprimanta sau încearcă să selectezi altă imprimantă.</translation> +<translation id="5878945009165002849">Blochează solicitările de conectare de la serviciile de identitate</translation> <translation id="5882919346125742463">Rețele cunoscute</translation> <translation id="5883356647197510494">Permisiuni blocate automat: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation> <translation id="5884474295213649357">Această filă este conectată la un dispozitiv USB.</translation> @@ -5618,6 +5624,7 @@ <translation id="6513247462497316522">Google Chrome va utiliza date mobile dacă nu ești conectat(ă) la altă rețea.</translation> <translation id="6514010653036109809">Dispozitiv disponibil:</translation> <translation id="6514565641373682518">Această pagină a dezactivat cursorul mouse-ului dvs.</translation> +<translation id="6517709704288360414">Este posibil ca dispozitivul să nu mai funcționeze corespunzător și să întâmpini probleme de securitate și de performanță. Dezactivarea actualizărilor îți poate afecta dreptul de a face reclamații legale în cazul în care întâmpini probleme.</translation> <translation id="6518014396551869914">Cop&iază imaginea</translation> <translation id="6518133107902771759">Confirmați</translation> <translation id="651942933739530207">Doriți ca aplicația <ph name="APP_NAME" /> să aibă acces la ecran și la ieșirea audio?</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 3caa621..84b9b0e 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -962,6 +962,7 @@ <translation id="1892341345406963517">Здравствуйте, <ph name="PARENT_NAME" />!</translation> <translation id="189358972401248634">Другие языки</translation> <translation id="1895658205118569222">Завершение работы</translation> +<translation id="1897120393475391208">Используйте надежный пароль.</translation> <translation id="1900305421498694955">Приложения из Google Play могут запрашивать разрешение на полный доступ к чтению и записи файлов на внешних запоминающих устройствах. При этом созданные на устройстве файлы и папки будут видны всем пользователям внешнего запоминающего устройства. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Выделить &все</translation> <translation id="1901396183631570154">Chrome не удалось сохранить эти пароли в вашем аккаунте Google, но вы можете сохранить их на текущем устройстве.</translation> @@ -6552,6 +6553,7 @@ <translation id="7444970023873202833">Посмотрите другие воспоминания в Google Фото</translation> <translation id="7444983668544353857">Отключить <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Устанавливайте приложения автоматически</translation> +<translation id="7449381494541372002">Подготовка к работе…</translation> <translation id="7449752890690775568">Удалить пароль?</translation> <translation id="7450761244949417357">Открывается <ph name="ALTERNATIVE_BROWSER_NAME" />…</translation> <translation id="7452166281927983300">Закрытые предупреждения (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index de2e72c..ad72cb71 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2319,6 +2319,7 @@ <translation id="3189187154924005138">Veľký kurzor</translation> <translation id="3190558889382726167">Heslo bolo uložené</translation> <translation id="3192947282887913208">Zvukové súbory</translation> +<translation id="3193695589337931419">Utility na zhromažďovanie signálov systému</translation> <translation id="3194786596445804250">Zobraziť podrobnosti o blokovaní súborov cookie tretích strán</translation> <translation id="3197453258332670132">Kliknutím pravým tlačidlom alebo dlhým stlačením zobrazíte súvisiace informácie pre daný výber textu</translation> <translation id="3199127022143353223">Servery</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 6469eb1..c23a509 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -976,6 +976,7 @@ <translation id="1892341345406963517">Pozdravljeni, <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Drugi jeziki</translation> <translation id="1895658205118569222">Zaprt</translation> +<translation id="1897120393475391208">Uporabite zapleteno geslo</translation> <translation id="1900305421498694955">Aplikacije v Googlu Play za branje in pisanje datotek v zunanjih napravah za shranjevanje morda zahtevajo popoln dostop do datotečnega sistema. Datoteke in mape, ustvarjene v tej napravi, so vidne vsem, ki uporabljajo zunanji pogon. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Izberi &vse</translation> <translation id="1901396183631570154">Chromu ni uspelo shraniti teh gesel v računu Google. Še vedno jih lahko shranite v tej napravi.</translation> @@ -1018,6 +1019,7 @@ <translation id="1942600407708803723">Zaustavitev, ko je pokrov zaprt</translation> <translation id="1944528062465413897">Koda za seznanitev prek Bluetootha:</translation> <translation id="1944921356641260203">Najdena je bila posodobitev</translation> +<translation id="1947136734041527201">Omogoča prijavo na spletnih mestih z računom, ki ga imate pri storitvi za identiteto.</translation> <translation id="1949584741547056205">Hitri odgovori</translation> <translation id="1951012854035635156">Pomočnik</translation> <translation id="1954597385941141174">Spletna mesta lahko zahtevajo vzpostavitev povezave z napravami USB</translation> @@ -2333,6 +2335,7 @@ <translation id="3189187154924005138">Velik kazalec</translation> <translation id="3190558889382726167">Geslo je shranjeno</translation> <translation id="3192947282887913208">Zvočne datoteke</translation> +<translation id="3193695589337931419">Orodja za sistemske signale</translation> <translation id="3194786596445804250">Prikaži podrobnosti o blokiranju piškotkov drugih mest</translation> <translation id="3197453258332670132">Z desnim klikom ali dolgim pritiskom prikažete informacije, povezane z izbranim besedilom.</translation> <translation id="3199127022143353223">Strežniki</translation> @@ -2418,6 +2421,7 @@ <translation id="32939749466444286">Vsebnik za Linux se ni zagnal. Poskusite znova.</translation> <translation id="3294437725009624529">Gost</translation> <translation id="3294686910656423119">Statistični podatki o uporabi in poročila o zrušitvah</translation> +<translation id="3297105622164376095">Dovoljeno prikazovanje pozivov za prijavo drugih ponudnikov</translation> <translation id="3297536526040732495">Te podatke začasno poveže z vašim računom Google, če ste prijavljeni, zaradi zagotavljanja zaščite v Googlovih aplikacijah.</translation> <translation id="329838636886466101">Popravi</translation> <translation id="3298789223962368867">Neveljaven spletni naslov.</translation> @@ -3674,6 +3678,7 @@ <translation id="452750746583162491">Pregled sinhroniziranih podatkov</translation> <translation id="4527929807707405172">Omogoči obratno pomikanje. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="4528494169189661126">Predlog prevoda</translation> +<translation id="4529455689802245339">Samodejni podnapisi v Chromu morda ne bodo delovali</translation> <translation id="4530494379350999373">Izvor</translation> <translation id="4531924570968473143">Koga želite dodati tej napravi <ph name="DEVICE_TYPE" />?</translation> <translation id="4532625150642446981">Naprava »<ph name="USB_DEVICE_NAME" />« je v uporabi. Če znova dodelite napravo, medtem ko je v uporabi, lahko pride do napak. Ali ste prepričani, da želite nadaljevati?</translation> @@ -3871,6 +3876,7 @@ <translation id="471880041731876836">Nimate dovoljenja za obisk tega spletnega mesta</translation> <translation id="4722735765955348426">Geslo za uporabniško ime <ph name="USERNAME" /></translation> <translation id="4722920479021006856"><ph name="APP_NAME" /> souporablja vaš zaslon.</translation> +<translation id="4722989931633062466">Ni dovoljeno prikazovanje pozivov za prijavo drugih ponudnikov</translation> <translation id="4723140812774948886">Zamenjaj z naslednjim</translation> <translation id="4724450788351008910">Zveza je prekinjena</translation> <translation id="4725511304875193254">Valižanski ovčar</translation> @@ -4843,6 +4849,7 @@ <translation id="5711010025974903573">Dnevniki storitve</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="571222594670061844">Spletna mesta lahko prikazujejo pozive za prijavo storitev za identiteto</translation> <translation id="5713158217420111469">Vzpostavljena povezava z napravo <ph name="DEVICE" /></translation> <translation id="5715711091495208045">Posrednik za vtičnik: <ph name="PLUGIN_NAME" /></translation> <translation id="5719603411793408026">Privzeti iskalniki</translation> @@ -5001,6 +5008,7 @@ <translation id="5876851302954717356">Novi zavihek na desni</translation> <translation id="5877064549588274448">Kanal spremenjen. Znova zaženite napravo, da uveljavite spremembe.</translation> <translation id="5877584842898320529">Izbrani tiskalnik ni na voljo ali ni pravilno nameščen. <ph name="BR" /> Preverite tiskalnik ali izberite drugega.</translation> +<translation id="5878945009165002849">Blokiranje pozivov za prijavo storitev za identiteto</translation> <translation id="5882919346125742463">Znana omrežja</translation> <translation id="5883356647197510494">Samodejno blokirano: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation> <translation id="5884474295213649357">Ta zavihek je povezan z napravo USB.</translation> @@ -5637,6 +5645,7 @@ <translation id="6513247462497316522">Google Chrome bo uporabil mobilno podatkovno povezavo, če niste povezani z drugim omrežjem.</translation> <translation id="6514010653036109809">Razpoložljiva naprava:</translation> <translation id="6514565641373682518">Ta stran je onemogočila miškin kazalec.</translation> +<translation id="6517709704288360414">Naprava morda ne deluje več ustrezno in morda se srečujete z varnostnimi težavami in težavami z zmogljivostjo. Če izklopite posodobitve, to morda tudi vpliva na vašo pravico do zakonitih zahtevkov, če imate kakšne težave.</translation> <translation id="6518014396551869914">Kop&iraj sliko</translation> <translation id="6518133107902771759">Preveri</translation> <translation id="651942933739530207">Ali želite, da <ph name="APP_NAME" /> souporablja vaš zaslon in zvočni izhod?</translation> @@ -6567,6 +6576,7 @@ <translation id="7444970023873202833">Raziščite več spominov v Googlu Foto</translation> <translation id="7444983668544353857">Onemogoči <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Samodejno nameščanje aplikacij</translation> +<translation id="7449381494541372002">Zagon …</translation> <translation id="7449752890690775568">Želite odstraniti geslo?</translation> <translation id="7450761244949417357">Odpiranje v brskalniku <ph name="ALTERNATIVE_BROWSER_NAME" /></translation> <translation id="7452166281927983300">Opuščena opozorila (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index fae7e98..8a0702d 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Qasja për leximin e kujtesës së fragmenteve u refuzua</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ID-ja e shtesës "<ph name="EXTENSION_ID" />") nuk lejohet në këtë lloj seance.</translation> <translation id="1418552618736477642">Njoftimet dhe aplikacionet</translation> +<translation id="1418882096915998312">Regjistrimi i Chrome Enterprise në vazhdim</translation> <translation id="1418954524306642206">Shfleto për të specifikuar skedarin PPD për printerin tënd</translation> <translation id="1420834118113404499">Licencat e medias</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> për të lejuar çiftimin</translation> @@ -957,6 +958,7 @@ <translation id="1892341345406963517">Përshëndetje <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Gjuhë të tjera</translation> <translation id="1895658205118569222">Mbyllja</translation> +<translation id="1897120393475391208">Përdor një fjalëkalim i fortë</translation> <translation id="1900305421498694955">Aplikacionet nga Google Play mund të kërkojnë qasje të plotë të sistemit të skedarëve për të lexuar dhe për të shkruar te skedarët në pajisjet e jashtme të hapësirës ruajtëse. Skedarët dhe dosjet e krijuara në pajisje janë të dukshme për këdo që përdor diskun e jashtëm. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Zgjidhi &të gjitha</translation> <translation id="1901396183631570154">Chrome nuk mund t'i ruante këto fjalëkalime në "Llogarinë tënde të Google". Mund t'i ruash ato ende në këtë pajisje.</translation> @@ -3404,6 +3406,7 @@ <translation id="4275830172053184480">Rinise pajisjen</translation> <translation id="4277434192562187284">Burimi i konfigurimeve të XML-së</translation> <translation id="4278390842282768270">Të lejuara</translation> +<translation id="4278498748067682896">Do të përdorësh një përmirësim të kioskës dhe sinjalizimit, i cili e lejon pajisjen të ekzekutohet vetëm në modalitetin e kioskës ose të sinjalizimit. Nëse dëshiron që përdoruesit të identifikohen në këtë pajisje, kthehu dhe regjistrohu duke përdorur përmirësimin e Chrome Enterprise.</translation> <translation id="4279129444466079448">Mund të instalosh deri në <ph name="PROFILE_LIMIT" /> profile të kartës eSIM në këtë pajisje. Për të shtuar një profil tjetër, në fillim hiq një profil ekzistues.</translation> <translation id="4280325816108262082">Pajisja shkëputet automatikisht kur fiket ose kur nuk përdoret</translation> <translation id="4281844954008187215">Kushtet e shërbimit</translation> @@ -6542,6 +6545,7 @@ <translation id="7444970023873202833">Eksploro më shumë nga kujtimet e tua në "Fotografitë e Google"</translation> <translation id="7444983668544353857">Çaktivizoje <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Instalo automatikisht aplikacionet</translation> +<translation id="7449381494541372002">po fillon…</translation> <translation id="7449752890690775568">Të hiqet fjalëkalimi?</translation> <translation id="7450761244949417357">Po hapet në <ph name="ALTERNATIVE_BROWSER_NAME" /> tani</translation> <translation id="7452166281927983300">Paralajmërimet e hequra (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index f414de78..7330016 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">Pristup za čitanje privremene memorije je odbijen</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ID dodatka „<ph name="EXTENSION_ID" />“) nije dozvoljen u ovom tipu sesije.</translation> <translation id="1418552618736477642">Obaveštenja i aplikacije</translation> +<translation id="1418882096915998312">Registracija za preduzeća je u toku</translation> <translation id="1418954524306642206">Pregledajte da biste naveli PPD štampača</translation> <translation id="1420834118113404499">Licence za medije</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> da biste omogućili uparivanje</translation> @@ -3407,6 +3408,7 @@ <translation id="4275830172053184480">Ponovno pokretanje uređaja</translation> <translation id="4277434192562187284">Izvor XML konfiguracije</translation> <translation id="4278390842282768270">Dozvoljeno</translation> +<translation id="4278498748067682896">Koristićete nadogradnju kioska ili uređaja za prijavljivanje koja dozvoljava uređaju da radi samo u režimu kioska ili prijavljivanja. Ako želite da se korisnici prijavljuju na uređaj, vratite se i registrujte pomoću nadogradnje na Chrome za preduzeća.</translation> <translation id="4279129444466079448">Na ovom uređaju možete da instalirate najviše <ph name="PROFILE_LIMIT" /> eSIM ppofila. Da biste dodali još jedan profil, uklonite postojeći.</translation> <translation id="4280325816108262082">Veza sa uređajem će se automatski isključiti kada se uređaj isključi ili se ne koristi</translation> <translation id="4281844954008187215">Uslovi korišćenja usluge</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 767fa62..ba34c01 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">Приступ за читање привремене меморије је одбијен</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (ИД додатка „<ph name="EXTENSION_ID" />“) није дозвољен у овом типу сесије.</translation> <translation id="1418552618736477642">Обавештења и апликације</translation> +<translation id="1418882096915998312">Регистрација за предузећа је у току</translation> <translation id="1418954524306642206">Прегледајте да бисте навели PPD штампача</translation> <translation id="1420834118113404499">Лиценце за медије</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> да бисте омогућили упаривање</translation> @@ -3407,6 +3408,7 @@ <translation id="4275830172053184480">Поновно покретање уређаја</translation> <translation id="4277434192562187284">Извор XML конфигурације</translation> <translation id="4278390842282768270">Дозвољено</translation> +<translation id="4278498748067682896">Користићете надоградњу киоска или уређаја за пријављивање која дозвољава уређају да ради само у режиму киоска или пријављивања. Ако желите да се корисници пријављују на уређај, вратите се и региструјте помоћу надоградње на Chrome за предузећа.</translation> <translation id="4279129444466079448">На овом уређају можете да инсталирате највише <ph name="PROFILE_LIMIT" /> eSIM пpофила. Да бисте додали још један профил, уклоните постојећи.</translation> <translation id="4280325816108262082">Веза са уређајем ће се аутоматски искључити када се уређај искључи или се не користи</translation> <translation id="4281844954008187215">Услови коришћења услуге</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index c6d03fd..749b762 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -972,6 +972,7 @@ <translation id="1892341345406963517">Hej <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Övriga språk</translation> <translation id="1895658205118569222">Stängning</translation> +<translation id="1897120393475391208">Använd ett starkt lösenord</translation> <translation id="1900305421498694955">Appar från Google Play kan behöva fullständig åtkomst till filsystemet för att kunna läsa och skriva filer på externa lagringsenheter. Alla som använder den externa enheten kan se filer och mappar som skapats på den. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Välj &alla</translation> <translation id="1901396183631570154">Chrome kunde inte spara lösenorden i Google-kontot. Du kan fortfarande spara dem på den här enheten.</translation> @@ -6561,6 +6562,7 @@ <translation id="7444970023873202833">Utforska fler av dina minnen i Google Foto</translation> <translation id="7444983668544353857">Inaktivera <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Installera appar automatiskt</translation> +<translation id="7449381494541372002">startar …</translation> <translation id="7449752890690775568">Vill du ta bort lösenordet?</translation> <translation id="7450761244949417357">Öppnas i <ph name="ALTERNATIVE_BROWSER_NAME" /> nu</translation> <translation id="7452166281927983300">Ignorerade varningar (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index dcbe73d..a53d42b 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -968,6 +968,7 @@ <translation id="1892341345406963517">Hujambo <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Lugha zingine</translation> <translation id="1895658205118569222">Funga</translation> +<translation id="1897120393475391208">Tumia nenosiri thabiti</translation> <translation id="1900305421498694955">Huenda programu kwenye Google Play zikahitaji ufikiaji kamili wa mfumo wa faili ili kusoma na kuandika faili kwenye vifaa vya hifadhi ya nje. Faili na folda mpya zinazoongezwa kwenye kifaa huonekana kwa mtu yeyote anayetumia hifadhi ya nje. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Chagua &yote</translation> <translation id="1901396183631570154">Chrome imeshindwa kuhifadhi manenosiri haya kwenye Akaunti yako ya Google. Bado unaweza kuyahifadhi kwenye kifaa hiki.</translation> @@ -6556,6 +6557,7 @@ <translation id="7444970023873202833">Furahia kumbukumbu zako zaidi katika huduma ya Picha kwenye Google</translation> <translation id="7444983668544353857">Zima <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">Kusakinisha programu kiotomatiki</translation> +<translation id="7449381494541372002">inafungua...</translation> <translation id="7449752890690775568">Ungependa kuondoa nenosiri?</translation> <translation id="7450761244949417357">Inafunguka katika <ph name="ALTERNATIVE_BROWSER_NAME" /> sasa</translation> <translation id="7452166281927983300">Maonyo uliyoondoa (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 19ee458..d65e538 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -423,6 +423,7 @@ <translation id="1415708812149920388">கிளிப்போர்டைப் படிப்பதற்கான அணுகல் மறுக்கப்பட்டது</translation> <translation id="1415990189994829608">இந்த வகை அமர்வில் <ph name="EXTENSION_NAME" /> (நீட்டிப்பு ஐடி "<ph name="EXTENSION_ID" />") ஆனது அனுமதிக்கப்படாது.</translation> <translation id="1418552618736477642">அறிவிப்புகள் & ஆப்ஸ்</translation> +<translation id="1418882096915998312">Enterprise பதிவுசெய்தல் செயலில் உள்ளது</translation> <translation id="1418954524306642206">பிரிண்ட்டர் PPDயைக் குறிப்பிட உலாவுக</translation> <translation id="1420834118113404499">மீடியா உரிமங்கள்</translation> <translation id="1420920093772172268">இணைக்க, <ph name="TURN_ON_BLUETOOTH_LINK" />ஐ அனுமதிக்கவும்</translation> @@ -3423,6 +3424,7 @@ <translation id="4275830172053184480">உங்கள் சாதனத்தை மீண்டும் தொடங்கவும்</translation> <translation id="4277434192562187284">XML உள்ளமைவு ஆதாரம்</translation> <translation id="4278390842282768270">அனுமதிக்கப்பட்டது</translation> +<translation id="4278498748067682896">சாதனத்தைக் கியோஸ்க்/சைனேஜ் பயன்முறையில் மட்டுமே இயங்க அனுமதிக்கும் Kiosk & Signage Upgradeடைப் பயன்படுத்துவீர்கள். சாதனத்தில், பயனர்கள் உள்நுழைய வேண்டுமென நீங்கள் விரும்பினால் முந்தைய படிக்குச் சென்று Chrome Enterprise Upgrade மூலம் பதிவுசெய்யவும்.</translation> <translation id="4279129444466079448">இந்தச் சாதனத்தில் அதிகபட்சம் <ph name="PROFILE_LIMIT" /> eSIM சுயவிவரங்களை அமைக்கலாம். மற்றொரு சுயவிவரத்தைச் சேர்க்க, ஏற்கெனவே இருக்கும் ஒன்றை அகற்றவும்.</translation> <translation id="4280325816108262082">சாதனம் ஆஃப் செய்யப்பட்டிருந்தாலோ பயன்படுத்தப்படவில்லை என்றாலோ அதன் இணைப்பு தானாகவே துண்டிக்கப்படும்</translation> <translation id="4281844954008187215">சேவை விதிமுறைகள்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 068b081f..c12f07ca 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -5080,7 +5080,7 @@ <translation id="5955809630138889698">ఈ పరికరం కేవలం ఆన్లైన్ డెమో మోడ్ కోసం మాత్రమే అందుబాటులో ఉండవచ్చు. దయచేసి మరిన్ని వివరాల కోసం మీ మద్దతు ప్రతినిధిని సంప్రదించండి.</translation> <translation id="5956585768868398362">మీరు ఆశిస్తున్న శోధన పేజీ ఇదేనా?</translation> <translation id="5957918771633727933">eSIM ప్రొఫైల్స్ ఏవీ అందుబాటులో లేవు. కొత్త <ph name="BEGIN_LINK" />ప్రొఫైల్<ph name="END_LINK" />ను డౌన్లోడ్ చేయండి.</translation> -<translation id="5957987129450536192">మీ ప్రొఫైల్ చిత్రం పక్కనే ఉన్న వినడానికి ఎంచుకోండి చిహ్నాన్ని నొక్కి, ఆపై మీకు చదివి వినిపించాల్సిన విషయాన్ని ఎంచుకోండి.</translation> +<translation id="5957987129450536192">మీ ప్రొఫైల్ ఫోటో పక్కనే ఉన్న వినడానికి ఎంచుకోండి చిహ్నాన్ని నొక్కి, ఆపై మీకు చదివి వినిపించాల్సిన విషయాన్ని ఎంచుకోండి.</translation> <translation id="5959471481388474538">నెట్వర్క్ అందుబాటులో లేదు</translation> <translation id="595959584676692139">ఈ ఎక్స్టెన్షన్ను ఉపయోగించడానికి పేజీని మళ్లీ లోడ్ చేయండి</translation> <translation id="5960410286721553511">మీ ఫోన్లోని తాజా ఫోటోలు, మీడియాను చూడండి</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 498b7328..e675c1e 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Pano okuma erişimi reddedildi</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (uzantı kimliği: "<ph name="EXTENSION_ID" />") bu tür bir oturum için izinli değil.</translation> <translation id="1418552618736477642">Bildirimler ve uygulamalar</translation> +<translation id="1418882096915998312">Kurumsal kayıt devam ediyor</translation> <translation id="1418954524306642206">Yazıcı PPD'nizi belirtmek için göz atın</translation> <translation id="1420834118113404499">Medya lisansları</translation> <translation id="1420920093772172268">Eşlemeye izin vermek için <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -960,6 +961,7 @@ <translation id="1892341345406963517">Merhaba <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">Diğer diller</translation> <translation id="1895658205118569222">Kapat</translation> +<translation id="1897120393475391208">Güçlü şifre kullan</translation> <translation id="1900305421498694955">Google Play uygulamaları, harici depolama cihazlarında bulunan dosyaları ve klasörleri okuyup yazmak için tam dosya sistemi erişim izni gerektirebilir. Cihazda oluşturulan dosyalar ve klasörler, harici sürücüyü kullanan herkes tarafından görülebilir. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation> <translation id="1901303067676059328">Tümünü &seç</translation> <translation id="1901396183631570154">Chrome bu şifreleri Google Hesabınıza kaydedemedi. Yine de bu cihaza kaydedebilirsiniz.</translation> @@ -3404,6 +3406,7 @@ <translation id="4275830172053184480">Cihazınızı yeniden başlatın</translation> <translation id="4277434192562187284">XML yapılandırma kaynağı</translation> <translation id="4278390842282768270">İzin veriliyor</translation> +<translation id="4278498748067682896">Cihazın yalnızca kiosk veya tabela modunda çalışmasına izin veren Kiosk ve Tabela Güncellemesi'ni kullanacaksınız. Kullanıcıların cihazda oturum açmasını istiyorsanız lütfen geri dönüp Chrome Enterprise Yükseltme kullanarak kaydolun.</translation> <translation id="4279129444466079448">Bu cihazda en fazla <ph name="PROFILE_LIMIT" /> eSIM profili yükleyebilirsiniz. Başka bir profil eklemek için mevcut profillerden birini kaldırın.</translation> <translation id="4280325816108262082">Cihaz kapalı olduğunda veya kullanılmadığında bağlantısı otomatik olarak kesilir</translation> <translation id="4281844954008187215">Hizmet Şartları</translation> @@ -6543,6 +6546,7 @@ <translation id="7444970023873202833">Google Fotoğraflar'da daha fazla anınızı keşfedin</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> ağ cihazını devre dışı bırak</translation> <translation id="7448430327655618736">Uygulamaları otomatik olarak yükle</translation> +<translation id="7449381494541372002">başlatılıyor…</translation> <translation id="7449752890690775568">Şifre kaldırılsın mı?</translation> <translation id="7450761244949417357">Şimdi <ph name="ALTERNATIVE_BROWSER_NAME" /> tarayıcısında açılıyor</translation> <translation id="7452166281927983300">Kapatılan uyarılar (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 1e62402..0c677fa 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -961,6 +961,7 @@ <translation id="1892341345406963517">آداب <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">دوسری زبانیں</translation> <translation id="1895658205118569222">بند کریں</translation> +<translation id="1897120393475391208">مضبوط پاس ورڈ استعمال کریں</translation> <translation id="1900305421498694955">خارجی اسٹوریج آلات پر فائلیں پڑھنے اور لکھنے کیلئے، Google Play کی ایپس کو فائل سسٹم تک مکمل رسائی کی ضرورت پڑ سکتی ہے۔ اس آلے پر تخلیق کردہ فائلیں اور فولڈرز خارجی ڈرائیو استعمال کرنے والے ہر شخص کو دکھائی دیتے ہیں۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&سبھی کو منتخب کریں</translation> <translation id="1901396183631570154">Chrome ان پاس ورڈز کو آپ کے Google اکاؤنٹ میں محفوظ نہیں کر سکا۔ آپ ابھی بھی انہیں اس آلے پر محفوظ کر سکتے ہیں۔</translation> @@ -6547,6 +6548,7 @@ <translation id="7444970023873202833">Google تصاویر میں اپنی مزید میموریز دریافت کریں</translation> <translation id="7444983668544353857"><ph name="NETWORKDEVICE" /> غیر فعال کریں</translation> <translation id="7448430327655618736">ایپس خودکار طور پر انسٹال کریں</translation> +<translation id="7449381494541372002">شروع ہو رہا ہے…</translation> <translation id="7449752890690775568">پاس ورڈ ہٹائیں؟</translation> <translation id="7450761244949417357">ابھی <ph name="ALTERNATIVE_BROWSER_NAME" /> میں کھل رہا ہے</translation> <translation id="7452166281927983300">برخاست کردہ وارننگز (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index df31bb52..d169927 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -421,6 +421,7 @@ <translation id="1415708812149920388">Klipborddan o‘qishga ruxsat berilmagan</translation> <translation id="1415990189994829608">“<ph name="EXTENSION_NAME" />” (identifikatori: <ph name="EXTENSION_ID" />) kengaytmasidan bu turdagi seanslarda foydalanish taqiqlanadi</translation> <translation id="1418552618736477642">Bildirishnomalar va ilovalar</translation> +<translation id="1418882096915998312">Korxonani roʻyxatga olish davom etmoqda</translation> <translation id="1418954524306642206">Printeringiz PPD faylini tanlang</translation> <translation id="1420834118113404499">Media litsenziyalar</translation> <translation id="1420920093772172268">Ulanishga ruxsat berish uchun <ph name="TURN_ON_BLUETOOTH_LINK" /></translation> @@ -3410,6 +3411,7 @@ <translation id="4275830172053184480">Qurilmangizni qayta yuklang</translation> <translation id="4277434192562187284">XML konfiguratsiya manbasi</translation> <translation id="4278390842282768270">Berilgan ruxsatnomalar</translation> +<translation id="4278498748067682896">Bu qurilma faqat kiosk yoki reklama paneli rejimida ishlashi uchun Kiosk va Reklama panelini yangilash xizmatidan foydalaning. Agar qurilma foydalanuvchilari hisobiga kirishni istasa, ortga qayting va Chrome Korporativ yangilanish xizmatiga yoziling.</translation> <translation id="4279129444466079448">Bu qurilmada <ph name="PROFILE_LIMIT" /> gacha eSIM profillarini oʻrnatish mumkin. Boshqa profil kiritish uchun avval mavjud profillardan birini olib tashlang.</translation> <translation id="4280325816108262082">Qurilma faolsizlantirilganda yoki ishlatilmayotganda avtomatik ravishda uziladi</translation> <translation id="4281844954008187215">Xizmat shartlari</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 790de227..caf37e2e 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -972,7 +972,7 @@ <translation id="1892341345406963517"><ph name="PARENT_NAME" />,您好</translation> <translation id="189358972401248634">其他語言</translation> <translation id="1895658205118569222">關閉</translation> -<translation id="1897120393475391208">使用高強度密碼</translation> +<translation id="1897120393475391208">使用安全性強的密碼</translation> <translation id="1900305421498694955">Google Play 應用程式可能會要求取得檔案系統的完整存取權,以讀取和寫入外部儲存裝置上的檔案。外置磁碟的任何使用者都能見到在此裝置上建立的檔案和資料夾。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="1901303067676059328">全部選取(&A)</translation> <translation id="1901396183631570154">Chrome 無法將以下這些密碼儲存在您的 Google 帳戶中,不過您仍可將密碼儲存在此裝置上。</translation> @@ -6560,7 +6560,7 @@ <translation id="7444970023873202833">在「Google 相片」中探索更多美好回憶</translation> <translation id="7444983668544353857">停用 <ph name="NETWORKDEVICE" /></translation> <translation id="7448430327655618736">自動安裝應用程式</translation> -<translation id="7449381494541372002">啟動中…</translation> +<translation id="7449381494541372002">正在啟動…</translation> <translation id="7449752890690775568">要移除密碼嗎?</translation> <translation id="7450761244949417357">正在 <ph name="ALTERNATIVE_BROWSER_NAME" /> 中開啟</translation> <translation id="7452166281927983300">已關閉的警告 (<ph name="MUTED_PASSWORDS" />)</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 2181ae2..65deb067 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -424,6 +424,7 @@ <translation id="1415708812149920388">Ukufinyelela ukufunda kubhodi lokunamathisela kunqatshelwe</translation> <translation id="1415990189994829608"><ph name="EXTENSION_NAME" /> (I-ID yesandiso se-"<ph name="EXTENSION_ID" />") ayivunyelwe kule nhlobo yeseshini.</translation> <translation id="1418552618736477642">Izaziso nama-app</translation> +<translation id="1418882096915998312">Ukubhaliswa kwe-Enterprise kuyaqhubeka</translation> <translation id="1418954524306642206">Phequlula ukuze ucacise i-PPD yephrinta yakho</translation> <translation id="1420834118113404499">Amalayisense abezindaba</translation> <translation id="1420920093772172268"><ph name="TURN_ON_BLUETOOTH_LINK" /> ukuze uvumele ukumatanisa</translation> @@ -3423,6 +3424,7 @@ <translation id="4275830172053184480">Qalisa kabusha idivayisi yakho</translation> <translation id="4277434192562187284">Umthombo wokulungiselelwa kwe-XML</translation> <translation id="4278390842282768270">Kuvunyelwe</translation> +<translation id="4278498748067682896">Uzosebenzisa i-Kiosk ne-Signage Upgrade evumela kuphela idivayisi ukuthi isebenze kukhiyoski noma kumodi yezimpawu. Uma ungathanda ukuthi abasebenzisi bangene ngemvume kudivayisi, sicela ubuyele emuva bese ubhalisa usebenzisa i-Chrome Enterprise Upgrade.</translation> <translation id="4279129444466079448">Ungafaka amaphrofayela we-eSIM afika kwangu-<ph name="PROFILE_LIMIT" /> kule divayisi. Ukwengeza elinye iphrofayela, susa kuqala iphrofayela elikhona kakade.</translation> <translation id="4280325816108262082">Idivayisi izonqamuka ngokuzenzakalela uma ivaliwe noma ingasetshenziswa</translation> <translation id="4281844954008187215">Imigomo yesevisi</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 90a90cb8..5a21d7b 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2532,6 +2532,7 @@ "//components/quirks", "//components/session_manager/core", "//device/vr/public/mojom:isolated_xr_service", + "//remoting/host/chromeos:features", ] allow_circular_includes_from += [ @@ -3665,9 +3666,12 @@ "apps/intent_helper/intent_picker_internal.h", "apps/intent_helper/page_transition_util.cc", "apps/intent_helper/page_transition_util.h", + "autofill_assistant/password_change/apc_client.cc", "autofill_assistant/password_change/apc_client.h", "autofill_assistant/password_change/apc_client_impl.cc", "autofill_assistant/password_change/apc_client_impl.h", + "autofill_assistant/password_change/apc_external_action_delegate.cc", + "autofill_assistant/password_change/apc_external_action_delegate.h", "autofill_assistant/password_change/apc_onboarding_coordinator.h", "autofill_assistant/password_change/apc_onboarding_coordinator_impl.cc", "autofill_assistant/password_change/apc_onboarding_coordinator_impl.h",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index 17f54e9..548e89d6 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS
@@ -405,6 +405,7 @@ "+ppapi/host", "+ppapi/proxy", "+ppapi/shared_impl", + "+remoting/host/chromeos/features.h", "+rlz", "+sandbox/mac", "+sandbox/win/src",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 61764afd..5d036dd 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -242,6 +242,7 @@ #include "components/app_restore/features.h" #include "components/metrics/structured/structured_metrics_features.h" // nogncheck #include "media/capture/video/chromeos/video_capture_features_chromeos.h" +#include "remoting/host/chromeos/features.h" #include "third_party/cros_system_api/switches/chrome_switches.h" #include "ui/events/ozone/features.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -6195,6 +6196,10 @@ flag_descriptions::kFastPairSavedDevicesDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kFastPairSavedDevices)}, + {"multi-monitors-in-crd", flag_descriptions::kMultiMonitorsInCrdName, + flag_descriptions::kMultiMonitorsInCrdDescription, kOsCrOS, + FEATURE_VALUE_TYPE(remoting::features::kEnableMultiMonitorsInCrd)}, + {"fast-pair-software-scanning", flag_descriptions::kFastPairSoftwareScanningName, flag_descriptions::kFastPairSoftwareScanningDescription, kOsCrOS, @@ -7349,7 +7354,7 @@ {"incognito-downloads-warning", flag_descriptions::kIncognitoDownloadsWarningName, flag_descriptions::kIncognitoDownloadsWarningDescription, kOsAll, - FEATURE_VALUE_TYPE(download::features::kIncognitoDownloadsWarning)}, + FEATURE_VALUE_TYPE(features::kIncognitoDownloadsWarning)}, {"incognito-ntp-revamp", flag_descriptions::kIncognitoNtpRevampName, flag_descriptions::kIncognitoNtpRevampDescription, kOsAll,
diff --git a/chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager_browsertest.cc b/chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager_browsertest.cc index d981d08..62c8f55ba 100644 --- a/chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager_browsertest.cc +++ b/chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager_browsertest.cc
@@ -99,26 +99,25 @@ void SetApps(const std::vector<policy::ArcKioskAppBasicInfo>& apps, const std::string& auto_login_account) { - base::ListValue device_local_accounts; + base::Value::List device_local_accounts; for (const policy::ArcKioskAppBasicInfo& app : apps) { - std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); - entry->SetKey(kAccountsPrefDeviceLocalAccountsKeyId, - base::Value(GenerateAccountId(app.package_name()))); - entry->SetKey( - kAccountsPrefDeviceLocalAccountsKeyType, - base::Value(policy::DeviceLocalAccount::TYPE_ARC_KIOSK_APP)); - entry->SetKey(kAccountsPrefDeviceLocalAccountsKeyArcKioskPackage, - base::Value(app.package_name())); - entry->SetKey(kAccountsPrefDeviceLocalAccountsKeyArcKioskClass, - base::Value(app.class_name())); - entry->SetKey(kAccountsPrefDeviceLocalAccountsKeyArcKioskAction, - base::Value(app.action())); - entry->SetKey(kAccountsPrefDeviceLocalAccountsKeyArcKioskDisplayName, - base::Value(app.display_name())); + base::Value::Dict entry; + entry.Set(kAccountsPrefDeviceLocalAccountsKeyId, + GenerateAccountId(app.package_name())); + entry.Set(kAccountsPrefDeviceLocalAccountsKeyType, + policy::DeviceLocalAccount::TYPE_ARC_KIOSK_APP); + entry.Set(kAccountsPrefDeviceLocalAccountsKeyArcKioskPackage, + app.package_name()); + entry.Set(kAccountsPrefDeviceLocalAccountsKeyArcKioskClass, + app.class_name()); + entry.Set(kAccountsPrefDeviceLocalAccountsKeyArcKioskAction, + app.action()); + entry.Set(kAccountsPrefDeviceLocalAccountsKeyArcKioskDisplayName, + app.display_name()); device_local_accounts.Append(std::move(entry)); } owner_settings_service_->Set(kAccountsPrefDeviceLocalAccounts, - device_local_accounts); + base::Value(std::move(device_local_accounts))); if (!auto_login_account.empty()) { owner_settings_service_->SetString(
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service.cc b/chrome/browser/ash/arc/auth/arc_auth_service.cc index 7823032e..208474d5 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service.cc
@@ -538,7 +538,7 @@ ::GetAccountManagerFacade(profile_->GetPath().value()) ->ShowReauthAccountDialog( account_manager::AccountManagerFacade::AccountAdditionSource::kArc, - email); + email, base::OnceClosure()); } void ArcAuthService::OnRefreshTokenUpdatedForAccount(
diff --git a/chrome/browser/ash/crosapi/browser_manager.cc b/chrome/browser/ash/crosapi/browser_manager.cc index cf7fc5e..f620afc 100644 --- a/chrome/browser/ash/crosapi/browser_manager.cc +++ b/chrome/browser/ash/crosapi/browser_manager.cc
@@ -1073,8 +1073,6 @@ // Set up Mojo channel. base::CommandLine command_line(argv); - LOG(WARNING) << "Launching lacros with command: " - << command_line.GetCommandLineString(); // Lacros-chrome starts with NORMAL priority LacrosThreadPriorityDelegate thread_priority_delegate; @@ -1111,6 +1109,9 @@ command_line.AppendSwitch(switches::kEnableResourcesFileSharing); } + LOG(WARNING) << "Launching lacros with command: " + << command_line.GetCommandLineString(); + // Create the lacros-chrome subprocess. base::RecordAction(base::UserMetricsAction("Lacros.Launch")); lacros_launch_time_ = base::TimeTicks::Now();
diff --git a/chrome/browser/ash/login/screens/mock_update_screen.cc b/chrome/browser/ash/login/screens/mock_update_screen.cc index 34a9e32..48b3a27 100644 --- a/chrome/browser/ash/login/screens/mock_update_screen.cc +++ b/chrome/browser/ash/login/screens/mock_update_screen.cc
@@ -10,12 +10,12 @@ using ::testing::_; MockUpdateScreen::MockUpdateScreen( - UpdateView* view, + base::WeakPtr<UpdateView> view, ErrorScreen* error_screen, const UpdateScreen::ScreenExitCallback& exit_callback) - : UpdateScreen(view, error_screen, exit_callback) {} + : UpdateScreen(std::move(view), error_screen, exit_callback) {} -MockUpdateScreen::~MockUpdateScreen() {} +MockUpdateScreen::~MockUpdateScreen() = default; void MockUpdateScreen::RunExit(UpdateScreen::Result result) { ExitUpdate(result); @@ -25,18 +25,13 @@ EXPECT_CALL(*this, MockBind(_)).Times(AtLeast(1)); } -MockUpdateView::~MockUpdateView() { - if (screen_) - screen_->OnViewDestroyed(this); -} +MockUpdateView::~MockUpdateView() = default; void MockUpdateView::Bind(UpdateScreen* screen) { - screen_ = screen; MockBind(screen); } void MockUpdateView::Unbind() { - screen_ = nullptr; MockUnbind(); }
diff --git a/chrome/browser/ash/login/screens/mock_update_screen.h b/chrome/browser/ash/login/screens/mock_update_screen.h index f0e0378a..c512e25 100644 --- a/chrome/browser/ash/login/screens/mock_update_screen.h +++ b/chrome/browser/ash/login/screens/mock_update_screen.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_SCREENS_MOCK_UPDATE_SCREEN_H_ #define CHROME_BROWSER_ASH_LOGIN_SCREENS_MOCK_UPDATE_SCREEN_H_ +#include "base/memory/weak_ptr.h" #include "chrome/browser/ash/login/screens/update_screen.h" #include "chrome/browser/ui/webui/chromeos/login/update_screen_handler.h" #include "testing/gmock/include/gmock/gmock.h" @@ -13,7 +14,7 @@ class MockUpdateScreen : public UpdateScreen { public: - MockUpdateScreen(UpdateView* view, + MockUpdateScreen(base::WeakPtr<UpdateView> view, ErrorScreen* error_screen, const ScreenExitCallback& exit_callback); virtual ~MockUpdateScreen(); @@ -52,9 +53,6 @@ MOCK_METHOD(void, SetCancelUpdateShortcutEnabled, (bool value)); MOCK_METHOD(void, ShowLowBatteryWarningMessage, (bool value)); MOCK_METHOD(void, SetAutoTransition, (bool value)); - - private: - UpdateScreen* screen_ = nullptr; }; } // namespace ash
diff --git a/chrome/browser/ash/login/screens/update_screen.cc b/chrome/browser/ash/login/screens/update_screen.cc index 43bf6ce..c35229e 100644 --- a/chrome/browser/ash/login/screens/update_screen.cc +++ b/chrome/browser/ash/login/screens/update_screen.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/i18n/number_formatting.h" #include "base/logging.h" +#include "base/memory/weak_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/time/default_tick_clock.h" #include "base/time/time.h" @@ -105,11 +106,11 @@ } } -UpdateScreen::UpdateScreen(UpdateView* view, +UpdateScreen::UpdateScreen(base::WeakPtr<UpdateView> view, ErrorScreen* error_screen, const ScreenExitCallback& exit_callback) : BaseScreen(UpdateView::kScreenId, OobeScreenPriority::DEFAULT), - view_(view), + view_(std::move(view)), error_screen_(error_screen), exit_callback_(exit_callback), histogram_helper_( @@ -126,11 +127,6 @@ view_->Unbind(); } -void UpdateScreen::OnViewDestroyed(UpdateView* view) { - if (view_ == view) - view_ = nullptr; -} - bool UpdateScreen::MaybeSkip(WizardContext* context) { if (context->enrollment_triggered_early) { LOG(WARNING) << "Skip OOBE Update because of enrollment request.";
diff --git a/chrome/browser/ash/login/screens/update_screen.h b/chrome/browser/ash/login/screens/update_screen.h index 4e18eed2..47ff0ef 100644 --- a/chrome/browser/ash/login/screens/update_screen.h +++ b/chrome/browser/ash/login/screens/update_screen.h
@@ -70,7 +70,7 @@ using ScreenExitCallback = base::RepeatingCallback<void(Result result)>; - UpdateScreen(UpdateView* view, + UpdateScreen(base::WeakPtr<UpdateView> view, ErrorScreen* error_screen, const ScreenExitCallback& exit_callback); @@ -79,10 +79,6 @@ ~UpdateScreen() override; - // Called when the being destroyed. This should call Unbind() on the - // associated View if this class is destroyed before it. - void OnViewDestroyed(UpdateView* view); - base::OneShotTimer* GetShowTimerForTesting(); base::OneShotTimer* GetErrorMessageTimerForTesting(); VersionUpdater* GetVersionUpdaterForTesting(); @@ -169,7 +165,7 @@ // Determines if the device is in EU zone to show info about opt out. static bool CheckIfOptOutIsEnabled(); - UpdateView* view_; + base::WeakPtr<UpdateView> view_; ErrorScreen* error_screen_; ScreenExitCallback exit_callback_;
diff --git a/chrome/browser/ash/login/screens/update_screen_unittest.cc b/chrome/browser/ash/login/screens/update_screen_unittest.cc index cb332ed..89ebb29 100644 --- a/chrome/browser/ash/login/screens/update_screen_unittest.cc +++ b/chrome/browser/ash/login/screens/update_screen_unittest.cc
@@ -92,7 +92,7 @@ .WillRepeatedly(Return(false)); update_screen_ = std::make_unique<UpdateScreen>( - &mock_view_, mock_error_screen_.get(), + mock_view_.AsWeakPtr(), mock_error_screen_.get(), base::BindRepeating(&UpdateScreenUnitTest::HandleScreenExit, base::Unretained(this))); }
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc index d4f2ba8b..6144d6f4 100644 --- a/chrome/browser/ash/login/wizard_controller.cc +++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -567,7 +567,8 @@ base::BindRepeating(&WizardController::OnEulaScreenExit, weak_factory_.GetWeakPtr()))); append(std::make_unique<UpdateScreen>( - oobe_ui->GetView<UpdateScreenHandler>(), oobe_ui->GetErrorScreen(), + oobe_ui->GetView<UpdateScreenHandler>()->AsWeakPtr(), + oobe_ui->GetErrorScreen(), base::BindRepeating(&WizardController::OnUpdateScreenExit, weak_factory_.GetWeakPtr()))); append(std::make_unique<EnrollmentScreen>(
diff --git a/chrome/browser/ash/login/wizard_controller_browsertest.cc b/chrome/browser/ash/login/wizard_controller_browsertest.cc index 819824f7..828261c 100644 --- a/chrome/browser/ash/login/wizard_controller_browsertest.cc +++ b/chrome/browser/ash/login/wizard_controller_browsertest.cc
@@ -567,7 +567,7 @@ mock_update_view_ = std::make_unique<MockUpdateView>(); mock_update_screen_ = MockScreenExpectLifecycle(std::make_unique<MockUpdateScreen>( - mock_update_view_.get(), GetErrorScreen(), + mock_update_view_.get()->AsWeakPtr(), GetErrorScreen(), base::BindRepeating(&WizardController::OnUpdateScreenExit, base::Unretained(wizard_controller))));
diff --git a/chrome/browser/ash/policy/core/device_local_account.cc b/chrome/browser/ash/policy/core/device_local_account.cc index 4aee729..f7a26ade 100644 --- a/chrome/browser/ash/policy/core/device_local_account.cc +++ b/chrome/browser/ash/policy/core/device_local_account.cc
@@ -186,53 +186,51 @@ void SetDeviceLocalAccounts(ash::OwnerSettingsServiceAsh* service, const std::vector<DeviceLocalAccount>& accounts) { // TODO(https://crbug.com/984021): handle TYPE_SAML_PUBLIC_SESSION - base::ListValue list; + base::Value::List list; for (std::vector<DeviceLocalAccount>::const_iterator it = accounts.begin(); it != accounts.end(); ++it) { - std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyId, - base::Value(it->account_id)); - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyType, - base::Value(it->type)); + base::Value::Dict entry; + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyId, it->account_id); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyType, it->type); if (it->type == DeviceLocalAccount::TYPE_KIOSK_APP) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, - base::Value(it->kiosk_app_id)); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyKioskAppId, + it->kiosk_app_id); if (!it->kiosk_app_update_url.empty()) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL, - base::Value(it->kiosk_app_update_url)); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL, + it->kiosk_app_update_url); } } else if (it->type == DeviceLocalAccount::TYPE_ARC_KIOSK_APP) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskPackage, - base::Value(it->arc_kiosk_app_info.package_name())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskPackage, + it->arc_kiosk_app_info.package_name()); if (!it->arc_kiosk_app_info.class_name().empty()) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskClass, - base::Value(it->arc_kiosk_app_info.class_name())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskClass, + it->arc_kiosk_app_info.class_name()); } if (!it->arc_kiosk_app_info.action().empty()) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskAction, - base::Value(it->arc_kiosk_app_info.action())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskAction, + it->arc_kiosk_app_info.action()); } if (!it->arc_kiosk_app_info.display_name().empty()) { - entry->SetKey( - ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskDisplayName, - base::Value(it->arc_kiosk_app_info.display_name())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyArcKioskDisplayName, + it->arc_kiosk_app_info.display_name()); } } else if (it->type == DeviceLocalAccount::TYPE_WEB_KIOSK_APP) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskUrl, - base::Value(it->web_kiosk_app_info.url())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskUrl, + it->web_kiosk_app_info.url()); if (!it->web_kiosk_app_info.title().empty()) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskTitle, - base::Value(it->web_kiosk_app_info.title())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskTitle, + it->web_kiosk_app_info.title()); } if (!it->web_kiosk_app_info.icon_url().empty()) { - entry->SetKey(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskIconUrl, - base::Value(it->web_kiosk_app_info.icon_url())); + entry.Set(ash::kAccountsPrefDeviceLocalAccountsKeyWebKioskIconUrl, + it->web_kiosk_app_info.icon_url()); } } list.Append(std::move(entry)); } - service->Set(ash::kAccountsPrefDeviceLocalAccounts, list); + service->Set(ash::kAccountsPrefDeviceLocalAccounts, + base::Value(std::move(list))); } std::vector<DeviceLocalAccount> GetDeviceLocalAccounts(
diff --git a/chrome/browser/autofill_assistant/password_change/apc_client.cc b/chrome/browser/autofill_assistant/password_change/apc_client.cc new file mode 100644 index 0000000..c67046c --- /dev/null +++ b/chrome/browser/autofill_assistant/password_change/apc_client.cc
@@ -0,0 +1,14 @@ +// Copyright 2022 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/autofill_assistant/password_change/apc_client.h" + +#include "chrome/common/pref_names.h" +#include "components/prefs/pref_registry_simple.h" + +// static +void ApcClient::RegisterPrefs(PrefRegistrySimple* registry) { + registry->RegisterBooleanPref(prefs::kAutofillAssistantOnDesktopEnabled, + false); +}
diff --git a/chrome/browser/autofill_assistant/password_change/apc_client.h b/chrome/browser/autofill_assistant/password_change/apc_client.h index ab66939..290e8847 100644 --- a/chrome/browser/autofill_assistant/password_change/apc_client.h +++ b/chrome/browser/autofill_assistant/password_change/apc_client.h
@@ -8,6 +8,7 @@ #include <string> class GURL; +class PrefRegistrySimple; namespace content { class WebContents; @@ -16,6 +17,10 @@ // Abstract interface to encapsulate an automated password change (APC) flow. class ApcClient { public: + // Registers the prefs that are related to automated password change on + // Desktop. + static void RegisterPrefs(PrefRegistrySimple* registry); + // Static method that acts as a factory function. It is actually implemented // |ApcClientImpl|. static ApcClient* GetOrCreateForWebContents(
diff --git a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc new file mode 100644 index 0000000..6a07baa --- /dev/null +++ b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc
@@ -0,0 +1,18 @@ +// Copyright 2022 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/autofill_assistant/password_change/apc_external_action_delegate.h" + +// TODO(crbug.comgit /1324089): Implement once the side panel and +// UpdateDesktopSideAction are available. +ApcExternalActionDelegate::ApcExternalActionDelegate() = default; + +void ApcExternalActionDelegate::OnActionRequested( + const autofill_assistant::external::Action& action_info, + base::OnceCallback<void( + autofill_assistant::ExternalActionDelegate::ActionResult)> callback) { + autofill_assistant::ExternalActionDelegate::ActionResult result; + result.success = true; + std::move(callback).Run(result); +}
diff --git a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h new file mode 100644 index 0000000..dcc6ee4 --- /dev/null +++ b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h
@@ -0,0 +1,27 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_AUTOFILL_ASSISTANT_PASSWORD_CHANGE_APC_EXTERNAL_ACTION_DELEGATE_H_ +#define CHROME_BROWSER_AUTOFILL_ASSISTANT_PASSWORD_CHANGE_APC_EXTERNAL_ACTION_DELEGATE_H_ + +#include "components/autofill_assistant/browser/public/external_action_delegate.h" + +class ApcExternalActionDelegate + : public autofill_assistant::ExternalActionDelegate { + public: + ApcExternalActionDelegate(); + ApcExternalActionDelegate(const ApcExternalActionDelegate&) = delete; + ApcExternalActionDelegate& operator=(const ApcExternalActionDelegate&) = + delete; + ~ApcExternalActionDelegate() = default; + + // ExternalActionDelegate + void OnActionRequested( + const autofill_assistant::external::Action& action_info, + base::OnceCallback<void( + autofill_assistant::ExternalActionDelegate::ActionResult)> callback) + override; +}; + +#endif // CHROME_BROWSER_AUTOFILL_ASSISTANT_PASSWORD_CHANGE_APC_EXTERNAL_ACTION_DELEGATE_H_
diff --git a/chrome/browser/browser_switcher/bho/BUILD.gn b/chrome/browser/browser_switcher/bho/BUILD.gn index a8b790f..63fa7d4 100644 --- a/chrome/browser/browser_switcher/bho/BUILD.gn +++ b/chrome/browser/browser_switcher/bho/BUILD.gn
@@ -86,24 +86,13 @@ ] } -if (is_clang) { - browser_switcher_x64_toolchain = "//build/toolchain/win:win_clang_x64" - if (!is_asan) { - browser_switcher_x86_toolchain = "//build/toolchain/win:win_clang_x86" - } -} else { - browser_switcher_x64_toolchain = "//build/toolchain/win:x64" - if (!is_asan) { - browser_switcher_x86_toolchain = "//build/toolchain/win:x86" - } -} - +assert(is_clang) browser_switcher_x64_label = - ":browser_switcher_bho($browser_switcher_x64_toolchain)" + ":browser_switcher_bho(//build/toolchain/win:win_clang_x64)" if (!is_asan) { browser_switcher_x86_label = - ":browser_switcher_bho($browser_switcher_x86_toolchain)" + ":browser_switcher_bho(//build/toolchain/win:win_clang_x86)" copy("copy_browser_switcher_binaries") { # Make sure we have both bitnesses in the root out directory.
diff --git a/chrome/browser/download/android/download_manager_service.cc b/chrome/browser/download/android/download_manager_service.cc index 23e7dc3..54ba1f82 100644 --- a/chrome/browser/download/android/download_manager_service.cc +++ b/chrome/browser/download/android/download_manager_service.cc
@@ -91,7 +91,7 @@ download::DownloadItem::DownloadRenameResult result) { base::android::RunIntCallbackAndroid( j_callback, - static_cast<int>( + static_cast<int32_t>( OfflineItemUtils::ConvertDownloadRenameResultToRenameResult(result))); }
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc index 50325a1..ff08427 100644 --- a/chrome/browser/download/download_item_model.cc +++ b/chrome/browser/download/download_item_model.cc
@@ -291,10 +291,6 @@ return download_->IsMixedContent(); } -bool DownloadItemModel::ShouldShowIncognitoWarning() const { - return download_->ShouldShowIncognitoWarning(); -} - bool DownloadItemModel::ShouldAllowDownloadFeedback() const { #if BUILDFLAG(FULL_SAFE_BROWSING) if (!IsDangerous()) @@ -739,12 +735,6 @@ #endif [[fallthrough]]; case DownloadCommands::KEEP: - // Order of these warning validations should be same as the order that - // GetDesiredDownloadItemMode() method follows. - if (ShouldShowIncognitoWarning()) { - download_->AcceptIncognitoWarning(); - break; - } if (IsMixedContent()) { download_->ValidateMixedContentDownload(); break;
diff --git a/chrome/browser/download/download_item_model.h b/chrome/browser/download/download_item_model.h index 5ebc437..2f84c44 100644 --- a/chrome/browser/download/download_item_model.h +++ b/chrome/browser/download/download_item_model.h
@@ -53,7 +53,6 @@ bool MightBeMalicious() const override; bool IsMalicious() const override; bool IsMixedContent() const override; - bool ShouldShowIncognitoWarning() const override; bool ShouldAllowDownloadFeedback() const override; bool ShouldRemoveFromShelfWhenComplete() const override; bool ShouldShowDownloadStartedAnimation() const override;
diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc index c150073..74c3fa0 100644 --- a/chrome/browser/download/download_ui_model.cc +++ b/chrome/browser/download/download_ui_model.cc
@@ -242,31 +242,9 @@ return tooltip; } -// Ordering of the warning texts should be the same as order in the -// GetDesiredDownloadItemMode() method. std::u16string DownloadUIModel::GetWarningText(const std::u16string& filename, size_t* offset) const { *offset = std::string::npos; - - if (ShouldShowIncognitoWarning()) { - return l10n_util::GetStringFUTF16(IDS_PROMPT_INCOGNITO_WARNING, filename, - offset); - } - - switch (GetMixedContentStatus()) { - case download::DownloadItem::MixedContentStatus::BLOCK: - return l10n_util::GetStringFUTF16( - IDS_PROMPT_DOWNLOAD_MIXED_CONTENT_BLOCKED, filename, offset); - case download::DownloadItem::MixedContentStatus::WARN: - return l10n_util::GetStringFUTF16( - IDS_PROMPT_DOWNLOAD_MIXED_CONTENT_WARNING, filename, offset); - case download::DownloadItem::MixedContentStatus::UNKNOWN: - case download::DownloadItem::MixedContentStatus::SAFE: - case download::DownloadItem::MixedContentStatus::VALIDATED: - case download::DownloadItem::MixedContentStatus::SILENT_BLOCK: - break; - } - switch (GetDangerType()) { case download::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL: return l10n_util::GetStringUTF16(IDS_PROMPT_MALICIOUS_DOWNLOAD_URL); @@ -325,20 +303,29 @@ break; } + switch (GetMixedContentStatus()) { + case download::DownloadItem::MixedContentStatus::BLOCK: + return l10n_util::GetStringFUTF16( + IDS_PROMPT_DOWNLOAD_MIXED_CONTENT_BLOCKED, filename, offset); + case download::DownloadItem::MixedContentStatus::WARN: + return l10n_util::GetStringFUTF16( + IDS_PROMPT_DOWNLOAD_MIXED_CONTENT_WARNING, filename, offset); + case download::DownloadItem::MixedContentStatus::UNKNOWN: + case download::DownloadItem::MixedContentStatus::SAFE: + case download::DownloadItem::MixedContentStatus::VALIDATED: + case download::DownloadItem::MixedContentStatus::SILENT_BLOCK: + break; + } + return std::u16string(); } std::u16string DownloadUIModel::GetWarningConfirmButtonText() const { const auto kDangerousFile = download::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE; - - int warningConfirmButtonTextId = IDS_CONFIRM_DOWNLOAD; - if (ShouldShowIncognitoWarning()) { - warningConfirmButtonTextId = IDS_DOWNLOAD_ANYWAY; - } else if (GetDangerType() == kDangerousFile && IsExtensionDownload()) { - warningConfirmButtonTextId = IDS_CONTINUE_EXTENSION_DOWNLOAD; - } - - return l10n_util::GetStringUTF16(warningConfirmButtonTextId); + return l10n_util::GetStringUTF16( + (GetDangerType() == kDangerousFile && IsExtensionDownload()) + ? IDS_CONTINUE_EXTENSION_DOWNLOAD + : IDS_CONFIRM_DOWNLOAD); } std::u16string DownloadUIModel::GetShowInFolderText() const { @@ -393,10 +380,6 @@ return false; } -bool DownloadUIModel::ShouldShowIncognitoWarning() const { - return false; -} - bool DownloadUIModel::ShouldAllowDownloadFeedback() const { return false; }
diff --git a/chrome/browser/download/download_ui_model.h b/chrome/browser/download/download_ui_model.h index c8fc6ff..9108724 100644 --- a/chrome/browser/download/download_ui_model.h +++ b/chrome/browser/download/download_ui_model.h
@@ -242,11 +242,6 @@ // Implies IsDangerous() and !IsMalicious(). virtual bool IsMixedContent() const; - // Returns true if the item is downloaded in incognito and user has not - // accepted the warning yet. Return false if the item is downloaded in regular - // mode or user has accepted the warning. - virtual bool ShouldShowIncognitoWarning() const; - // Is safe browsing download feedback feature available for this download? virtual bool ShouldAllowDownloadFeedback() const;
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index ccb2ffb..1042432 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -4141,6 +4141,11 @@ "expiry_milestone": 84 }, { + "name": "multi-monitors-in-crd", + "owners": [ "chromeos-commercial-crd@google.com", "jeroendh@google.com" ], + "expiry_milestone": 108 + }, + { "name": "mute-compromised-passwords", "owners": [ "eliaskh",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 754b54d..8298631 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1226,7 +1226,7 @@ const char kReduceHorizontalFlingVelocityName[] = "Reduce horizontal fling velocity"; const char kReduceHorizontalFlingVelocityDescription[] = - "Reduces the velocity of horizontal flings to 20\% of their original" + "Reduces the velocity of horizontal flings to 20% of their original" "velocity."; const char kEnableCssSelectorFragmentAnchorName[] = @@ -4493,6 +4493,11 @@ "user's devices and provide the option to opt in or out of saving devices " "to their account."; +const char kMultiMonitorsInCrdName[] = "Multi monitor in CRD"; +const char kMultiMonitorsInCrdDescription[] = + "Enables support for viewing multiple monitors connected to this ChromeOS " + "device through CRD."; + const char kUseHDRTransferFunctionName[] = "Monitor/Display HDR transfer function"; const char kUseHDRTransferFunctionDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index fbe4e54..35798a90 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -2566,6 +2566,9 @@ extern const char kFastPairSavedDevicesName[]; extern const char kFastPairSavedDevicesDescription[]; +extern const char kMultiMonitorsInCrdName[]; +extern const char kMultiMonitorsInCrdDescription[]; + extern const char kUseHDRTransferFunctionName[]; extern const char kUseHDRTransferFunctionDescription[];
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index a93676c9..d4786ba 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -100,7 +100,6 @@ &content_settings::kDarkenWebsitesCheckboxInThemesSetting, &download::features::kDownloadAutoResumptionNative, &download::features::kDownloadLater, - &download::features::kIncognitoDownloadsWarning, &download::features::kSmartSuggestionForLargeDownloads, &download::features::kUseDownloadOfflineContentProvider, &embedder_support::kShowTrustedPublisherURL, @@ -127,6 +126,7 @@ &features::kRequestDesktopSiteForTablets, &features::kToolbarUseHardwareBitmapDraw, &features::kWebNfc, + &features::kIncognitoDownloadsWarning, &features::kIncognitoNtpRevamp, &feature_engagement::kEnableIPH, &feature_engagement::kEnableAutomaticSnooze,
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc index 9975c8a9..fedb07a 100644 --- a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc +++ b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
@@ -79,14 +79,12 @@ const ui::SimpleMenuModel& menu_model) { std::unique_ptr<base::ListValue> items(new base::ListValue()); for (int i = 0; i < menu_model.GetItemCount(); ++i) { - std::unique_ptr<base::DictionaryValue> item_value( - new base::DictionaryValue()); + base::Value::Dict item_value; // TODO(lazyboy): We need to expose some kind of enum equivalent of // |command_id| instead of plain integers. - item_value->SetIntKey(webview::kMenuItemCommandId, - menu_model.GetCommandIdAt(i)); - item_value->SetStringKey(webview::kMenuItemLabel, menu_model.GetLabelAt(i)); - items->Append(std::move(item_value)); + item_value.Set(webview::kMenuItemCommandId, menu_model.GetCommandIdAt(i)); + item_value.Set(webview::kMenuItemLabel, menu_model.GetLabelAt(i)); + items->GetList().Append(std::move(item_value)); } return items; }
diff --git a/chrome/browser/lacros/account_manager/profile_account_manager.cc b/chrome/browser/lacros/account_manager/profile_account_manager.cc index 241efb1e..a2a442b8 100644 --- a/chrome/browser/lacros/account_manager/profile_account_manager.cc +++ b/chrome/browser/lacros/account_manager/profile_account_manager.cc
@@ -81,7 +81,8 @@ void ProfileAccountManager::ShowReauthAccountDialog( AccountAdditionSource source, - const std::string& email) { + const std::string& email, + base::OnceClosure callback) { NOTREACHED(); }
diff --git a/chrome/browser/lacros/account_manager/profile_account_manager.h b/chrome/browser/lacros/account_manager/profile_account_manager.h index 9eabf611..571bf65 100644 --- a/chrome/browser/lacros/account_manager/profile_account_manager.h +++ b/chrome/browser/lacros/account_manager/profile_account_manager.h
@@ -70,7 +70,8 @@ base::OnceCallback<void(const account_manager::AccountAdditionResult& result)> callback) override; void ShowReauthAccountDialog(AccountAdditionSource source, - const std::string& email) override; + const std::string& email, + base::OnceClosure callback) override; void ShowManageAccountsSettings() override; std::unique_ptr<OAuth2AccessTokenFetcher> CreateAccessTokenFetcher( const account_manager::AccountKey& account,
diff --git a/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogCoordinator.java b/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogCoordinator.java index b4c4c0bb..b57757e 100644 --- a/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogCoordinator.java +++ b/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogCoordinator.java
@@ -6,6 +6,7 @@ import android.content.Context; import android.os.Handler; +import android.os.Looper; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; @@ -34,26 +35,45 @@ private final View mButtonsView; // Used to indicate the current loading dialog state. - @IntDef({State.READY, State.LOADING_DELAYED, State.LOADING_SHOWN, State.FINISHED_SHOWN, - State.FINISHED, State.CANCELLED}) + @IntDef({State.READY, State.PENDING, State.SHOWN, State.FINISHED, State.CANCELLED, + State.TIMED_OUT}) @Retention(RetentionPolicy.SOURCE) public @interface State { /** Loading is not started, the dialog is not shown. */ int READY = 0; - /** Loading in progress, the dialog is delayed. */ - int LOADING_DELAYED = 1; - /** Loading in progress, the dialog is visible. */ - int LOADING_SHOWN = 2; - /** Loading finished, the dialog dismissal is delayed. */ - int FINISHED_SHOWN = 3; - /** Loading finished, the dialog is dismissed. */ - int FINISHED = 4; + /** The dialog is scheduled to be shown after the default delay. */ + int PENDING = 1; + /** The dialog is visible. */ + int SHOWN = 2; + /** + * Dialog is dismissed by the client as the loading operation finished. It may be still + * visible for a short period to prevent UI flickering. + */ + int FINISHED = 3; /** User dismissed the dialog before the loading finished. */ - int CANCELLED = 5; + int CANCELLED = 4; + /** Loading timeout occurred and the dialog was automatically dismissed. */ + int TIMED_OUT = 5; int NUM_ENTRIES = 6; } /** + * An observer of the LoadingModalDialogCoordinator intended to broadcast notifications + * about the loading dialog dismissals and the readiness to be immediately dismissed. + */ + public interface Observer { + /** + * A notification that the dialog could be dismissed without causing the UI to flicker. + */ + default void onDismissable(){}; + + /** + * A notification that the dialog was dismissed with given final state. + */ + default void onDismissedWithState(@State int finalState){}; + } + + /** * Creates the {@link LoadingModalDialogCoordinator}. * * @param modalDialogManagerSupplier The supplier of the ModalDialogManager which is going to @@ -62,7 +82,7 @@ */ public static LoadingModalDialogCoordinator create( ObservableSupplier<ModalDialogManager> modalDialogManagerSupplier, Context context) { - return create(modalDialogManagerSupplier, context, new Handler()); + return create(modalDialogManagerSupplier, context, new Handler(Looper.getMainLooper())); } @VisibleForTesting @@ -91,7 +111,10 @@ mButtonsView = buttonsView; } - /** Shows the loading modal dialog. */ + /** + * Schedules the dialog to be shown after delay. The dialog will not be shown if + * {@link #finishLoading()} called before it become visible. + */ public void show() { PropertyModel dialogModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) @@ -103,12 +126,17 @@ .build(); mButtonsView.findViewById(R.id.cancel_loading_modal) .setOnClickListener(view -> mMediator.onClick(dialogModel, ButtonType.NEGATIVE)); - mMediator.showDialog(dialogModel); + mMediator.show(dialogModel); } - /** Dismisses the loading modal dialog. */ + /** + * Dismisses the currently visible dialog or cancelling the pending dialog if it is not visible + * yet. If dialog is already visible for at least {@link #MINIMUM_SHOW_TIME_MS}, it will be + * dismissed immediately. Otherwise it will be dismissed after being visible for that period of + * time. + */ public void dismiss() { - mMediator.dismissDialog(); + mMediator.dismiss(); } /** @@ -124,7 +152,28 @@ } @VisibleForTesting + void disableTimeoutForTesting() { + mMediator.disableTimeout(); + } + @VisibleForTesting View getButtonsView() { return mButtonsView; } + + /** + * Indicates if the dailog could be immediately dismissed. + */ + public boolean isImmediatelyDismissable() { + return mMediator.isImmediatelyDismissable(); + } + + /** + * Add the listener that will be notified when the dialog is cancelled, timed out or is ready to + * be dismissed. + * + * @param listener {@link Observer} that will be notified. + */ + public void addObserver(Observer listener) { + mMediator.addObserver(listener); + } }
diff --git a/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediator.java b/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediator.java index e68bf70f..5773fc9 100644 --- a/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediator.java +++ b/chrome/browser/loading_modal/android/java/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediator.java
@@ -7,6 +7,7 @@ import android.os.Handler; import android.os.SystemClock; +import org.chromium.base.ObserverList; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -24,9 +25,14 @@ implements ModalDialogProperties.Controller, ModalDialogManagerObserver { private static final long SHOW_DELAY_TIME_MS = 500L; private static final long MINIMUM_SHOW_TIME_MS = 500L; + // The load timeout limits the dialog visibility period, along with the show delay time it + // results in 5000ms total loading timeout. + private static final long LOAD_TIMEOUT_MS = 4500L; private final Handler mHandler; private final ObservableSupplier<ModalDialogManager> mDialogManagerSupplier; + private final ObserverList<LoadingModalDialogCoordinator.Observer> mObservers = + new ObserverList<>(); private ModalDialogManager mDialogManager; private PropertyModel mModel; @@ -35,22 +41,27 @@ private @LoadingModalDialogCoordinator.State int mState; private boolean mSkipDelay; + private boolean mDisableTimeout; /** ModalDialogProperties.Controller implementation */ @Override public void onClick(PropertyModel model, @ButtonType int buttonType) { - dismissDialogImmediately(DialogDismissalCause.NEGATIVE_BUTTON_CLICKED); + mState = LoadingModalDialogCoordinator.State.CANCELLED; + dismissDialogWithCause(DialogDismissalCause.NEGATIVE_BUTTON_CLICKED); } @Override public void onDismiss(PropertyModel model, @DialogDismissalCause int dismissalCause) { mDialogManager.removeObserver(this); mHandler.removeCallbacksAndMessages(null); - if (dismissalCause != DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED) { - mState = LoadingModalDialogCoordinator.State.CANCELLED; - } else { - mState = LoadingModalDialogCoordinator.State.FINISHED; + mState = getFinalStateByDismissalCause(dismissalCause); + if (mState == LoadingModalDialogCoordinator.State.CANCELLED + || mState == LoadingModalDialogCoordinator.State.TIMED_OUT) { + for (LoadingModalDialogCoordinator.Observer observer : mObservers) { + observer.onDismissedWithState(mState); + } } + mObservers.clear(); } /** @@ -65,8 +76,10 @@ @Override public void onDialogAdded(PropertyModel model) { if (model != mModel) return; - mState = LoadingModalDialogCoordinator.State.LOADING_SHOWN; - mShownAtMs = Long.valueOf(SystemClock.elapsedRealtime()); + mState = LoadingModalDialogCoordinator.State.SHOWN; + mShownAtMs = SystemClock.elapsedRealtime(); + postDelayed(this::onDismissDelayPassed, MINIMUM_SHOW_TIME_MS); + if (!mDisableTimeout) postDelayed(this::onTimeoutOccurred, LOAD_TIMEOUT_MS); } LoadingModalDialogMediator( @@ -79,13 +92,23 @@ } /** + * Add the listener that will be notified about the loading dialog cancellation and readiness to + * be immediately dismissed. + * + * @param listener {@link LoadingModalDialogCoordinator.Observer} that will be notified. + */ + void addObserver(LoadingModalDialogCoordinator.Observer listener) { + mObservers.addObserver(listener); + } + + /** * Schedules the dialog to be shown after {@link #SHOW_DELAY_TIME_MS} milliseconds. - * The dialog will not be shown if {@link #dismissDialog()} called before it become visible. + * The dialog will not be shown if {@link #dismiss()} called before it become visible. * * @param model The {@link PropertyModel} describing the dialog to be shown. * */ - void showDialog(PropertyModel model) { + void show(PropertyModel model) { assert mState == LoadingModalDialogCoordinator.State.READY; ModalDialogManager dialogManager = mDialogManagerSupplier.get(); @@ -93,36 +116,24 @@ mDialogManager = dialogManager; mModel = model; - mState = LoadingModalDialogCoordinator.State.LOADING_DELAYED; - postDelayed(this::showDialogImmediately, SHOW_DELAY_TIME_MS); + mState = LoadingModalDialogCoordinator.State.PENDING; + postDelayed(this::onShowDelayPassed, SHOW_DELAY_TIME_MS); } /** * Dismisses the currently visible dialog or cancelling the pending dialog if it is not visible * yet. If dialog is already visible for at least {@link #MINIMUM_SHOW_TIME_MS}, it will be * dismissed immediately. Otherwise it will be dismissed after being visible for that period of - * time. This method should be called when the loading finishes. + * time. */ - void dismissDialog() { - if (mState != LoadingModalDialogCoordinator.State.LOADING_DELAYED - && mState != LoadingModalDialogCoordinator.State.LOADING_SHOWN) { - return; + void dismiss() { + if (mState == LoadingModalDialogCoordinator.State.PENDING) { + mHandler.removeCallbacks(this::onShowDelayPassed); } - mHandler.removeCallbacksAndMessages(null); - - final long currentTimeMs = SystemClock.elapsedRealtime(); - if (mState == LoadingModalDialogCoordinator.State.LOADING_SHOWN - && mShownAtMs + MINIMUM_SHOW_TIME_MS > currentTimeMs) { - // Dialog dismiss should be postponed to prevent UI flicker. - mState = LoadingModalDialogCoordinator.State.FINISHED_SHOWN; - postDelayed(() - -> dismissDialogImmediately( - DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED), - mShownAtMs + MINIMUM_SHOW_TIME_MS - currentTimeMs); - } else { - // Dialog is not yet shown or has been visible long enough. - dismissDialogImmediately(DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); + mState = LoadingModalDialogCoordinator.State.FINISHED; + if (isImmediatelyDismissable()) { + dismissDialogWithCause(DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); } } @@ -138,25 +149,64 @@ mSkipDelay = true; } + void disableTimeout() { + mDisableTimeout = true; + } + + /** + * Indicates if the dailog could be immediately dismissed. + */ + boolean isImmediatelyDismissable() { + switch (mState) { + case LoadingModalDialogCoordinator.State.PENDING: + case LoadingModalDialogCoordinator.State.TIMED_OUT: + case LoadingModalDialogCoordinator.State.CANCELLED: + return true; + case LoadingModalDialogCoordinator.State.SHOWN: + case LoadingModalDialogCoordinator.State.FINISHED: + return mSkipDelay + || SystemClock.elapsedRealtime() - mShownAtMs >= MINIMUM_SHOW_TIME_MS; + case LoadingModalDialogCoordinator.State.READY: + return false; + } + throw new AssertionError(); + } + + private void onShowDelayPassed() { + if (mState == LoadingModalDialogCoordinator.State.PENDING) { + showDialogImmediately(); + } + } + + private void onDismissDelayPassed() { + for (LoadingModalDialogCoordinator.Observer observer : mObservers) observer.onDismissable(); + if (mState == LoadingModalDialogCoordinator.State.FINISHED) { + dismissDialogWithCause(DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); + } + } + + private void onTimeoutOccurred() { + if (mState != LoadingModalDialogCoordinator.State.SHOWN) return; + + mState = LoadingModalDialogCoordinator.State.TIMED_OUT; + dismissDialogWithCause(DialogDismissalCause.CLIENT_TIMEOUT); + } + /** Immediately shows the dialog. */ private void showDialogImmediately() { - if (mState != LoadingModalDialogCoordinator.State.LOADING_DELAYED) return; + assert mState == LoadingModalDialogCoordinator.State.PENDING; mDialogManager.addObserver(this); mDialogManager.showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); } /** - * Immediately dismisses the dialog. + * Immediately dismisses the dialog with {@link DialogDismissalCause}. * * @param dismissalCause The {@link DialogDismissalCause} that describes why the dialog is * dismissed. */ - private void dismissDialogImmediately(@DialogDismissalCause int dismissalCause) { - if (mState != LoadingModalDialogCoordinator.State.FINISHED_SHOWN - && mState != LoadingModalDialogCoordinator.State.LOADING_SHOWN - && mState != LoadingModalDialogCoordinator.State.LOADING_DELAYED) { - return; - } + private void dismissDialogWithCause(@DialogDismissalCause int dismissalCause) { + assert isImmediatelyDismissable(); mDialogManager.dismissDialog(mModel, dismissalCause); } @@ -167,4 +217,16 @@ mHandler.postDelayed(r, delay); } } + + private @LoadingModalDialogCoordinator.State int getFinalStateByDismissalCause( + @DialogDismissalCause int dismissalCause) { + switch (dismissalCause) { + case DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED: + return LoadingModalDialogCoordinator.State.FINISHED; + case DialogDismissalCause.CLIENT_TIMEOUT: + return LoadingModalDialogCoordinator.State.TIMED_OUT; + default: + return LoadingModalDialogCoordinator.State.CANCELLED; + } + } }
diff --git a/chrome/browser/loading_modal/android/javatests/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogIntegrationTest.java b/chrome/browser/loading_modal/android/javatests/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogIntegrationTest.java index cd47a5d..078c9240d 100644 --- a/chrome/browser/loading_modal/android/javatests/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogIntegrationTest.java +++ b/chrome/browser/loading_modal/android/javatests/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogIntegrationTest.java
@@ -108,9 +108,12 @@ @Test @MediumTest public void testShownAndDismissed() throws TimeoutException { - LoadingModalDialogCoordinator coordinator = - LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, new Handler()); + LoadingModalDialogCoordinator coordinator = runOnUiThreadBlockingNoException( + () + -> LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, + new Handler(Looper.getMainLooper()))); coordinator.skipDelayForTesting(); + coordinator.disableTimeoutForTesting(); runOnUiThreadBlocking(coordinator::show); mObserver.getDialogAddedCallbackHelper().waitForFirst(); @@ -124,9 +127,12 @@ @Test @MediumTest public void testShownAndCancelled() throws TimeoutException, ExecutionException { - LoadingModalDialogCoordinator coordinator = - LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, new Handler()); + LoadingModalDialogCoordinator coordinator = runOnUiThreadBlockingNoException( + () + -> LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, + new Handler(Looper.getMainLooper()))); coordinator.skipDelayForTesting(); + coordinator.disableTimeoutForTesting(); runOnUiThreadBlocking(coordinator::show); mObserver.getDialogAddedCallbackHelper().waitForFirst(); @@ -140,9 +146,12 @@ @Test @MediumTest public void testShownAndDestroyed() throws TimeoutException { - LoadingModalDialogCoordinator coordinator = - LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, new Handler()); + LoadingModalDialogCoordinator coordinator = runOnUiThreadBlockingNoException( + () + -> LoadingModalDialogCoordinator.create(getDialogManager(), sActivity, + new Handler(Looper.getMainLooper()))); coordinator.skipDelayForTesting(); + coordinator.disableTimeoutForTesting(); runOnUiThreadBlocking(coordinator::show); mObserver.getDialogAddedCallbackHelper().waitForFirst(); @@ -158,4 +167,4 @@ supplier.set(sActivity.getModalDialogManager()); return supplier; } -} \ No newline at end of file +}
diff --git a/chrome/browser/loading_modal/android/junit/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediatorTest.java b/chrome/browser/loading_modal/android/junit/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediatorTest.java index aaaef05..454fc88 100644 --- a/chrome/browser/loading_modal/android/junit/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediatorTest.java +++ b/chrome/browser/loading_modal/android/junit/src/org/chromium/chrome/browser/loading_modal/LoadingModalDialogMediatorTest.java
@@ -6,10 +6,10 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.os.Handler; +import android.os.SystemClock; import org.junit.Before; import org.junit.Rule; @@ -44,6 +44,9 @@ @Mock private ObservableSupplier<ModalDialogManager> mModalDialogManagerSupplier; + @Mock + private LoadingModalDialogCoordinator.Observer mDialogCoordinatorObserver; + private LoadingModalDialogMediator mMediator; private PropertyModel mModel; @@ -54,88 +57,130 @@ mModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) .with(ModalDialogProperties.CONTROLLER, mMediator) .build(); + mMediator.addObserver(mDialogCoordinatorObserver); } @Test public void testObservesDialogManager() { - mMediator.showDialog(mModel); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - verify(mModalDialogManager, times(1)).addObserver(mMediator); + mMediator.show(mModel); + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager).addObserver(mMediator); mMediator.onDismiss(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); - verify(mModalDialogManager, times(1)).removeObserver(mMediator); + verify(mModalDialogManager).removeObserver(mMediator); } @Test public void testLoadedBeforeDelay() { // Tests dialog is not displayed if dismissed in less then 500ms. - mMediator.showDialog(mModel); + mMediator.show(mModel); ShadowLooper.idleMainLooper(400, TimeUnit.MILLISECONDS); verify(mModalDialogManager, never()) .showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); - mMediator.dismissDialog(); + mMediator.dismiss(); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); verify(mModalDialogManager, never()) .showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); - verify(mModalDialogManager, times(1)) - .dismissDialog(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); - mMediator.onDismiss(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); + verify(mDialogCoordinatorObserver, never()).onDismissable(); + verify(mDialogCoordinatorObserver, never()) + .onDismissedWithState(LoadingModalDialogCoordinator.State.FINISHED); } @Test public void testLoadedAfterDelayBeforeDialog() { // Tests that dialog is immedeately dismissed if it was scheduled to be shown by the dialog // manager but was postponed due to higher priority dialog. - mMediator.showDialog(mModel); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - verify(mModalDialogManager, times(1)) - .showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); + mMediator.show(mModel); + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager).showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); - mMediator.dismissDialog(); - verify(mModalDialogManager, times(1)) + mMediator.dismiss(); + verify(mModalDialogManager) .dismissDialog(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); mMediator.onDismiss(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); + + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mDialogCoordinatorObserver, never()).onDismissable(); + verify(mDialogCoordinatorObserver, never()) + .onDismissedWithState(LoadingModalDialogCoordinator.State.FINISHED); } @Test public void testLoadedAfterDelayAndPostponed() { - // Tests that dialog is dismissed after at least 500 ms since it was shown. Covers the case - // when the dialog was postponed by the Dialog Manager due higher priority dialog. - mMediator.showDialog(mModel); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - verify(mModalDialogManager, times(1)) - .showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); + // Tests that dialog is dismissed after at least 500 ms since it was shown. Covers the + // case when the dialog was postponed by the Dialog Manager due higher priority dialog. + mMediator.show(mModel); + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager).showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); // Assume the dialog visibility was postponed for 1000 ms due to higher priority dialog. ShadowLooper.idleMainLooper(1000, TimeUnit.MILLISECONDS); mMediator.onDialogAdded(mModel); - mMediator.dismissDialog(); + mMediator.dismiss(); // Dialog was sent 1400 ms ago, but is visible for 400 ms only, so it should not be // dismissed yet. ShadowLooper.idleMainLooper(400, TimeUnit.MILLISECONDS); + verify(mDialogCoordinatorObserver, never()).onDismissable(); verify(mModalDialogManager, never()) .dismissDialog(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); + // Dialog is visible for 500 ms, so it should be dismissed. ShadowLooper.idleMainLooper(100, TimeUnit.MILLISECONDS); - verify(mModalDialogManager, times(1)) + verify(mDialogCoordinatorObserver).onDismissable(); + verify(mModalDialogManager) .dismissDialog(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); mMediator.onDismiss(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); } @Test + public void testTimedOutAfterBeingShown() { + // Tests that dialog is dismissed after the timeout is reached. + long startTimeMs = SystemClock.elapsedRealtime(); + mMediator.show(mModel); + + // Wait for the dialog to be shown. + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager).showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); + assertEquals(SystemClock.elapsedRealtime() - startTimeMs, 500); + + mMediator.onDialogAdded(mModel); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.SHOWN); + + // Wait for the dialog to be shown. + ShadowLooper.runMainLooperOneTask(); + verify(mDialogCoordinatorObserver).onDismissable(); + assertEquals(SystemClock.elapsedRealtime() - startTimeMs, 1000); + + // Wait until timeout occurs (4500 ms visibility timeout + 500 ms delay). + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + assertEquals(SystemClock.elapsedRealtime() - startTimeMs, 5000); + verify(mModalDialogManager).dismissDialog(mModel, DialogDismissalCause.CLIENT_TIMEOUT); + + mMediator.onDismiss(mModel, DialogDismissalCause.CLIENT_TIMEOUT); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.TIMED_OUT); + verify(mDialogCoordinatorObserver) + .onDismissedWithState(LoadingModalDialogCoordinator.State.TIMED_OUT); + } + + @Test public void testIsCancelledWhenSystemBackUsed() { // Tests that dialog status updates correctly when cancelled. - mMediator.showDialog(mModel); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + mMediator.show(mModel); + ShadowLooper.runMainLooperOneTask(); mMediator.onDialogAdded(mModel); mMediator.onDismiss(mModel, DialogDismissalCause.NAVIGATE_BACK_OR_TOUCH_OUTSIDE); assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.CANCELLED); + verify(mDialogCoordinatorObserver) + .onDismissedWithState(LoadingModalDialogCoordinator.State.CANCELLED); + verify(mDialogCoordinatorObserver, never()).onDismissable(); } @Test @@ -143,40 +188,26 @@ // Tests that dialog status updates correctly up to finished. assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.READY); - mMediator.showDialog(mModel); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.LOADING_DELAYED); + mMediator.show(mModel); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.PENDING); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - verify(mModalDialogManager, times(1)) - .showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.LOADING_DELAYED); + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager).showDialog(mModel, ModalDialogManager.ModalDialogType.TAB); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.PENDING); mMediator.onDialogAdded(mModel); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.LOADING_SHOWN); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.SHOWN); - mMediator.dismissDialog(); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED_SHOWN); + mMediator.dismiss(); + assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); + verify(mDialogCoordinatorObserver, never()).onDismissable(); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - verify(mModalDialogManager, times(1)) + ShadowLooper.runMainLooperOneTask(); + verify(mModalDialogManager) .dismissDialog(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED_SHOWN); + verify(mDialogCoordinatorObserver).onDismissable(); mMediator.onDismiss(mModel, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED); assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED); } - - @Test - public void testStatusIsUpdatedToCancelledWhenFinished() { - // Tests that dialog status updates correctly when the user dismisses the dialog after - // the loading finished, but when the dialog is still visible to prevent flickering. - mMediator.showDialog(mModel); - ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); - mMediator.onDialogAdded(mModel); - mMediator.dismissDialog(); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.FINISHED_SHOWN); - - mMediator.onDismiss(mModel, DialogDismissalCause.NAVIGATE_BACK_OR_TOUCH_OUTSIDE); - assertEquals(mMediator.getState(), LoadingModalDialogCoordinator.State.CANCELLED); - } }
diff --git a/chrome/browser/offline_pages/android/evaluation/offline_page_evaluation_bridge.cc b/chrome/browser/offline_pages/android/evaluation/offline_page_evaluation_bridge.cc index 8da2587..6125bdee 100644 --- a/chrome/browser/offline_pages/android/evaluation/offline_page_evaluation_bridge.cc +++ b/chrome/browser/offline_pages/android/evaluation/offline_page_evaluation_bridge.cc
@@ -132,7 +132,7 @@ void OnRemoveRequestsDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, const MultipleItemStatuses& removed_request_results) { base::android::RunIntCallbackAndroid( - j_callback_obj, static_cast<int>(removed_request_results.size())); + j_callback_obj, static_cast<int32_t>(removed_request_results.size())); } std::unique_ptr<KeyedService> GetTestingRequestCoordinator(
diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc index 4505fde6..0c66830 100644 --- a/chrome/browser/offline_pages/android/offline_page_bridge.cc +++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc
@@ -111,7 +111,7 @@ void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, OfflinePageModel::DeletePageResult result) { base::android::RunIntCallbackAndroid(j_callback_obj, - static_cast<int>(result)); + static_cast<int32_t>(result)); } void SelectPageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj,
diff --git a/chrome/browser/offline_pages/android/offline_test_util_jni.cc b/chrome/browser/offline_pages/android/offline_test_util_jni.cc index 13e6542..16d7cfd8 100644 --- a/chrome/browser/offline_pages/android/offline_test_util_jni.cc +++ b/chrome/browser/offline_pages/android/offline_test_util_jni.cc
@@ -80,7 +80,7 @@ void OnDeletePageDone(const ScopedJavaGlobalRef<jobject>& j_callback_obj, OfflinePageModel::DeletePageResult result) { base::android::RunIntCallbackAndroid(j_callback_obj, - static_cast<int>(result)); + static_cast<int32_t>(result)); } std::string RequestListToString(
diff --git a/chrome/browser/offline_pages/android/request_coordinator_bridge.cc b/chrome/browser/offline_pages/android/request_coordinator_bridge.cc index b57a10f..9b7e21f8 100644 --- a/chrome/browser/offline_pages/android/request_coordinator_bridge.cc +++ b/chrome/browser/offline_pages/android/request_coordinator_bridge.cc
@@ -78,7 +78,8 @@ void SavePageLaterCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, AddRequestResult value) { - base::android::RunIntCallbackAndroid(j_callback_obj, static_cast<int>(value)); + base::android::RunIntCallbackAndroid(j_callback_obj, + static_cast<int32_t>(value)); } RequestCoordinator* GetRequestCoordinator(
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java index c6d21e1..2d13202 100644 --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java
@@ -9,12 +9,12 @@ import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.SystemClock; +import androidx.annotation.IntDef; import androidx.annotation.VisibleForTesting; import com.google.common.base.Optional; @@ -30,6 +30,9 @@ import org.chromium.components.sync.ModelType; import org.chromium.ui.modaldialog.ModalDialogManager; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** A helper class for showing PasswordSettings. */ public class PasswordManagerHelper { // Key for the argument with which PasswordsSettings will be launched. The value for @@ -39,6 +42,10 @@ private static final String UPM_VARIATION_FEATURE_PARAM = "stage"; + // Loading dialog is dismissed with this delay after sending an intent to prevent + // the old activity from showing up before the new one is shown. + private static final long LOADING_DIALOG_DISMISS_DELAY_MS = 300L; + // |PasswordSettings| full class name to open the fragment. Will be changed to // |PasswordSettings.class.getName()| once it's modularized. private static final String PASSWORD_SETTINGS_CLASS = @@ -70,6 +77,35 @@ private static final String PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM = "PasswordManager.PasswordCheckup.Launch.Success"; + private static final String LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM = + "PasswordManager.ModalLoadingDialog.CredentialManager.Outcome"; + private static final String LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM = + "PasswordManager.ModalLoadingDialog.PasswordCheckup.Outcome"; + + /** + * The identifier of the loading dialog outcome. + * + * These values are persisted to logs. Entries should not be renumbered and + * numeric values should never be reused. + * Please, keep in sync with tools/metrics/histograms/enums.xml. + */ + @VisibleForTesting + @IntDef({LoadingDialogOutcome.NOT_SHOWN_LOADED, LoadingDialogOutcome.SHOWN_LOADED, + LoadingDialogOutcome.SHOWN_CANCELLED, LoadingDialogOutcome.SHOWN_TIMED_OUT, + LoadingDialogOutcome.NUM_ENTRIES}) + @Retention(RetentionPolicy.SOURCE) + @interface LoadingDialogOutcome { + /** The loading dialog was requested but loading finished before it got shown. */ + int NOT_SHOWN_LOADED = 0; + /** The loading dialog was shown, loading process finished. */ + int SHOWN_LOADED = 1; + /** The loading dialog was shown and cancelled by user before loading finished. */ + int SHOWN_CANCELLED = 2; + /** The loading dialog was shown and timed out before loading finished. */ + int SHOWN_TIMED_OUT = 3; + int NUM_ENTRIES = 4; + } + /** * Launches the password settings or, if available, the credential manager from Google Play * Services. @@ -189,6 +225,8 @@ intent, startTimeMs, true, loadingDialogCoordinator), (error) -> { PasswordManagerHelper.recordFailureMetrics(error, true); + recordLoadingDialogMetrics(LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + loadingDialogCoordinator.getState()); loadingDialogCoordinator.dismiss(); }); } @@ -212,6 +250,8 @@ RecordHistogram.recordEnumeratedHistogram( PASSWORD_CHECKUP_GET_INTENT_ERROR_HISTOGRAM, error, CredentialManagerError.COUNT); + recordLoadingDialogMetrics(LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + loadingDialogCoordinator.getState()); loadingDialogCoordinator.dismiss(); }); } @@ -229,22 +269,16 @@ kGetIntentErrorHistogram, error, CredentialManagerError.COUNT); } - private static boolean launchIntent(PendingIntent intent, Runnable onLaunchFinishedCallback) { + private static void launchIntentAndRecordSuccess( + PendingIntent intent, String intentLaunchSuccessHistogram) { boolean launchIntentSuccessfully = true; try { - PendingIntent.OnFinished onFinished = new PendingIntent.OnFinished() { - @Override - public void onSendFinished(PendingIntent pendingIntent, Intent intent, - int resultCode, String resultData, Bundle resultExtras) { - onLaunchFinishedCallback.run(); - } - }; - intent.send(0, onFinished, new Handler(Looper.getMainLooper())); + intent.send(); } catch (CanceledException e) { launchIntentSuccessfully = false; - onLaunchFinishedCallback.run(); } - return launchIntentSuccessfully; + RecordHistogram.recordBooleanHistogram( + intentLaunchSuccessHistogram, launchIntentSuccessfully); } private static void launchCredentialManagerIntent(PendingIntent intent, long startTimeMs, @@ -253,16 +287,10 @@ assert forAccount : "Local storage for preferences not ready for use"; recordSuccessMetrics(SystemClock.elapsedRealtime() - startTimeMs, forAccount); - if (loadingDialogCoordinator.getState() == LoadingModalDialogCoordinator.State.CANCELLED) { - // Dialog was dismissed before the loading finished, do not launch the intent. - return; - } - - boolean launchIntentSuccessfully = launchIntent(intent, loadingDialogCoordinator::dismiss); - RecordHistogram.recordBooleanHistogram(forAccount - ? ACCOUNT_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM - : LOCAL_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, - launchIntentSuccessfully); + maybeLaunchIntentWithLoadingDialog(loadingDialogCoordinator, intent, + forAccount ? ACCOUNT_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM + : LOCAL_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM); } private static void launchPasswordCheckupIntent(PendingIntent intent, long startTimeMs, @@ -271,15 +299,9 @@ SystemClock.elapsedRealtime() - startTimeMs); RecordHistogram.recordBooleanHistogram(PASSWORD_CHECKUP_GET_INTENT_SUCCESS_HISTOGRAM, true); - if (loadingDialogCoordinator.getState() == LoadingModalDialogCoordinator.State.CANCELLED) { - // Dialog was dismissed before the loading finished, do not launch the intent. - return; - } - - boolean launchIntentSuccessfully = launchIntent(intent, loadingDialogCoordinator::dismiss); - RecordHistogram.recordBooleanHistogram( + maybeLaunchIntentWithLoadingDialog(loadingDialogCoordinator, intent, PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, - launchIntentSuccessfully); + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM); } private static void recordSuccessMetrics(long elapsedTimeMs, boolean forAccount) { @@ -293,4 +315,99 @@ RecordHistogram.recordTimesHistogram(kGetIntentLatencyHistogram, elapsedTimeMs); RecordHistogram.recordBooleanHistogram(kGetIntentSuccessHistogram, true); } + + /** + * Launches the pending intent and reports metrics if the loading dialog was not cancelled or + * timed out. Intent launch metric is not recorded if the loading was cancelled or timed out. + * + * @param loadingDialogCoordinator {@link LoadingModalDialogCoordinator}. + * @param intent {@link PendingIntent} to be launched. + * @param intentLaunchSuccessHistogram Name of the intent launch success histogram. + */ + private static void maybeLaunchIntentWithLoadingDialog( + LoadingModalDialogCoordinator loadingDialogCoordinator, PendingIntent intent, + String intentLaunchSuccessHistogram, String loadingDialogOutcomeHistogram) { + @LoadingModalDialogCoordinator.State + int loadingDialogState = loadingDialogCoordinator.getState(); + if (loadingDialogState == LoadingModalDialogCoordinator.State.CANCELLED + || loadingDialogState == LoadingModalDialogCoordinator.State.TIMED_OUT) { + // Dialog was dismissed or timeout occurred before the loading finished, do not launch + // the intent. + recordLoadingDialogMetrics(loadingDialogOutcomeHistogram, loadingDialogState); + return; + } + + if (loadingDialogState == LoadingModalDialogCoordinator.State.PENDING) { + // Dialog is not yet visible, dismiss immediately. + recordLoadingDialogMetrics(loadingDialogOutcomeHistogram, loadingDialogState); + loadingDialogCoordinator.dismiss(); + launchIntentAndRecordSuccess(intent, intentLaunchSuccessHistogram); + return; + } + + if (loadingDialogCoordinator.isImmediatelyDismissable()) { + // Dialog is visible and dismissable. Dismiss with a small delay to cover the intent + // launch delay. + recordLoadingDialogMetrics(loadingDialogOutcomeHistogram, loadingDialogState); + launchIntentAndRecordSuccess(intent, intentLaunchSuccessHistogram); + new Handler(Looper.getMainLooper()) + .postDelayed( + loadingDialogCoordinator::dismiss, LOADING_DIALOG_DISMISS_DELAY_MS); + return; + } + + // Dialog could not be dismissed right now, wait for it to become immediately + // dismissable. + loadingDialogCoordinator.addObserver(new LoadingModalDialogCoordinator.Observer() { + @Override + public void onDismissable() { + // Record the known state - if the dialog was cancelled or timed out, + // {@link #onCancelledOrTimedOut()} would be called. + recordLoadingDialogMetrics(loadingDialogOutcomeHistogram, loadingDialogState); + launchIntentAndRecordSuccess(intent, intentLaunchSuccessHistogram); + new Handler(Looper.getMainLooper()) + .postDelayed( + loadingDialogCoordinator::dismiss, LOADING_DIALOG_DISMISS_DELAY_MS); + } + + @Override + public void onDismissedWithState(@LoadingModalDialogCoordinator.State int finalState) { + recordLoadingDialogMetrics(loadingDialogOutcomeHistogram, finalState); + } + }); + } + + /** + * Reports metric for the GMS Core UI loading dialog. + * Should be called right before launching the loaded intent or before dismissing the dialog if + * the intent will not be launched. + * + * @param histogramName Name of the histogram to report metric via. + * @param loadingDialogState State of the loading dialog before launching the intent. + */ + private static void recordLoadingDialogMetrics( + String histogramName, @LoadingModalDialogCoordinator.State int loadingDialogState) { + switch (loadingDialogState) { + case LoadingModalDialogCoordinator.State.PENDING: + RecordHistogram.recordEnumeratedHistogram(histogramName, + LoadingDialogOutcome.NOT_SHOWN_LOADED, LoadingDialogOutcome.NUM_ENTRIES); + break; + case LoadingModalDialogCoordinator.State.SHOWN: + RecordHistogram.recordEnumeratedHistogram(histogramName, + LoadingDialogOutcome.SHOWN_LOADED, LoadingDialogOutcome.NUM_ENTRIES); + break; + case LoadingModalDialogCoordinator.State.CANCELLED: + RecordHistogram.recordEnumeratedHistogram(histogramName, + LoadingDialogOutcome.SHOWN_CANCELLED, LoadingDialogOutcome.NUM_ENTRIES); + break; + case LoadingModalDialogCoordinator.State.TIMED_OUT: + RecordHistogram.recordEnumeratedHistogram(histogramName, + LoadingDialogOutcome.SHOWN_TIMED_OUT, LoadingDialogOutcome.NUM_ENTRIES); + break; + case LoadingModalDialogCoordinator.State.READY: + case LoadingModalDialogCoordinator.State.FINISHED: + throw new AssertionError( + "Unexpected state for metrics recording: " + loadingDialogState); + } + } }
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java index 75eca2a..3764a3b 100644 --- a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java +++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java
@@ -5,17 +5,16 @@ package org.chromium.chrome.browser.password_manager; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; -import android.os.Handler; import com.google.common.base.Optional; @@ -28,6 +27,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowLooper; import org.robolectric.shadows.ShadowSystemClock; import org.chromium.base.Callback; @@ -84,6 +84,11 @@ private static final String PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM = "PasswordManager.PasswordCheckup.Launch.Success"; + private static final String LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM = + "PasswordManager.ModalLoadingDialog.CredentialManager.Outcome"; + private static final String LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM = + "PasswordManager.ModalLoadingDialog.PasswordCheckup.Outcome"; + @Rule public TestRule mProcessor = new Features.JUnitProcessor(); @@ -105,16 +110,29 @@ @Mock private ObservableSupplier<ModalDialogManager> mModalDialogManagerSupplier; + private ModalDialogManager mModalDialogManager; + @Mock LoadingModalDialogCoordinator mLoadingModalDialogCoordinator; + private LoadingModalDialogCoordinator.Observer mLoadingDialogCoordinatorObserver; + @Before public void setUp() { ShadowRecordHistogram.reset(); MockitoAnnotations.initMocks(this); when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); when(mLoadingModalDialogCoordinator.getState()) - .thenReturn(LoadingModalDialogCoordinator.State.LOADING_SHOWN); + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + mModalDialogManager = new ModalDialogManager( + mock(ModalDialogManager.Presenter.class), ModalDialogManager.ModalDialogType.APP); + when(mModalDialogManagerSupplier.get()).thenReturn(mModalDialogManager); + doAnswer(invocation -> { + mLoadingDialogCoordinatorObserver = invocation.getArgument(0); + return null; + }) + .when(mLoadingModalDialogCoordinator) + .addObserver(any(LoadingModalDialogCoordinator.Observer.class)); } @Test @@ -249,9 +267,7 @@ public void testRecordsMetricsWhenAccountIntentFails() throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulIntentFetchingForAccount(); - doThrow(CanceledException.class) - .when(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); PasswordManagerHelper.showPasswordSettings(ContextUtils.getApplicationContext(), ManagePasswordsReferrer.CHROME_SETTINGS, mSettingsLauncherMock, @@ -307,8 +323,7 @@ PasswordManagerHelper.showPasswordCheckup(ContextUtils.getApplicationContext(), PasswordCheckReferrer.SAFETY_CHECK, mPasswordCheckupClientHelperMock, mSyncServiceMock, mModalDialogManagerSupplier); - verify(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + verify(mPendingIntentMock).send(); } @Test @@ -363,9 +378,7 @@ public void testRecordsMetricsWhenPasswordCheckupIntentFails() throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); - doThrow(CanceledException.class) - .when(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); PasswordManagerHelper.showPasswordCheckup(ContextUtils.getApplicationContext(), PasswordCheckReferrer.SAFETY_CHECK, mPasswordCheckupClientHelperMock, @@ -401,7 +414,6 @@ public void testDismissesLoadingDialogWhenPasswordCheckupIntentSent() throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); - setUpSuccessfulPendingIntentSending(); PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), @@ -416,9 +428,7 @@ throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); - doThrow(CanceledException.class) - .when(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), @@ -454,8 +464,41 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - verify(mPendingIntentMock, never()) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + verify(mPendingIntentMock, never()).send(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testDoesNotLaunchPasswordCheckupIntentWhenLoadingDialogTimedOut() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + verify(mPendingIntentMock, never()).send(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testPasswordCheckupLaunchWaitsForDialogDismissability() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + verify(mPendingIntentMock, never()).send(); + + mLoadingDialogCoordinatorObserver.onDismissable(); + verify(mPendingIntentMock).send(); } @Test @@ -475,7 +518,6 @@ throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulIntentFetchingForAccount(); - setUpSuccessfulPendingIntentSending(); PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); @@ -489,9 +531,7 @@ throws CanceledException { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulIntentFetchingForAccount(); - doThrow(CanceledException.class) - .when(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); @@ -524,8 +564,437 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - verify(mPendingIntentMock, never()) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); + verify(mPendingIntentMock, never()).send(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testDoesNotLaunchPasswordSettingsIntentWhenLoadingDialogTimedOut() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + verify(mPendingIntentMock, never()).send(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testPasswordSettingsLaunchWaitsForDialogDismissability() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + verify(mPendingIntentMock, never()).send(); + + mLoadingDialogCoordinatorObserver.onDismissable(); + verify(mPendingIntentMock).send(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogNotShown() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogShownDismissable() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + when(mLoadingModalDialogCoordinator.isImmediatelyDismissable()).thenReturn(true); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); + + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mLoadingModalDialogCoordinator).dismiss(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogShownNonDismissable() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + when(mLoadingModalDialogCoordinator.isImmediatelyDismissable()).thenReturn(false); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); + + mLoadingDialogCoordinatorObserver.onDismissable(); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); + + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mLoadingModalDialogCoordinator).dismiss(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogCancelled() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogCancelledDuringLoad() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); + + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); + mLoadingDialogCoordinatorObserver.onDismissedWithState( + LoadingModalDialogCoordinator.State.CANCELLED); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogTimeout() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnDialogTimeoutDuringLoad() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); + + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + mLoadingDialogCoordinatorObserver.onDismissedWithState( + LoadingModalDialogCoordinator.State.TIMED_OUT); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnIntentFetchError() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + returnErrorWhenFetchingIntentForAccount(CredentialManagerError.API_ERROR); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsSettingsLoadingDialogMetricsOnIntentSendError() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulIntentFetchingForAccount(); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, + mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogNotShown() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogShown() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + when(mLoadingModalDialogCoordinator.isImmediatelyDismissable()).thenReturn(true); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogShownNonDismissable() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + when(mLoadingModalDialogCoordinator.isImmediatelyDismissable()).thenReturn(false); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); + + mLoadingDialogCoordinatorObserver.onDismissable(); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); + + ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); + verify(mLoadingModalDialogCoordinator).dismiss(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogCancelled() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogCancelledDuringLoad() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); + + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); + mLoadingDialogCoordinatorObserver.onDismissedWithState( + LoadingModalDialogCoordinator.State.CANCELLED); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogTimeout() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnDialogTimeoutDuringLoad() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.SHOWN); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + Assert.assertEquals(0, + RecordHistogram.getHistogramTotalCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); + + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); + mLoadingDialogCoordinatorObserver.onDismissedWithState( + LoadingModalDialogCoordinator.State.TIMED_OUT); + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnIntentFetchError() + throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + returnErrorWhenFetchingIntentForPasswordCheckup(CredentialManagerError.API_ERROR); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testRecordsCheckupLoadingDialogMetricsOnIntentSendError() throws CanceledException { + chooseToSyncPasswordsWithoutCustomPassphrase(); + setUpSuccessfulCheckupIntentFetching(mPendingIntentMock); + doThrow(CanceledException.class).when(mPendingIntentMock).send(); + when(mLoadingModalDialogCoordinator.getState()) + .thenReturn(LoadingModalDialogCoordinator.State.PENDING); + + PasswordManagerHelper.launchPasswordCheckup(PasswordCheckReferrer.SAFETY_CHECK, + mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), + mLoadingModalDialogCoordinator); + + verify(mLoadingModalDialogCoordinator).dismiss(); + + Assert.assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, + PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); } private void chooseToSyncPasswordsWithoutCustomPassphrase() { @@ -582,14 +1051,4 @@ eq(Optional.of(TEST_EMAIL_ADDRESS)), any(Callback.class), any(Callback.class)); } - - private void setUpSuccessfulPendingIntentSending() throws CanceledException { - doAnswer(invocation -> { - PendingIntent.OnFinished onFinished = invocation.getArgument(1); - onFinished.onSendFinished(null, null, 0, "", null); - return true; - }) - .when(mPendingIntentMock) - .send(anyInt(), any(PendingIntent.OnFinished.class), any(Handler.class)); - } }
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.cc b/chrome/browser/password_manager/android/password_store_android_backend.cc index 37b0046..6808e47 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend.cc
@@ -54,9 +54,6 @@ using JobId = PasswordStoreAndroidBackendBridge::JobId; using SuccessStatus = PasswordStoreBackendMetricsRecorder::SuccessStatus; -// An internal error which occurred in GMS Core. -constexpr int kGMSInternalError = 8; - std::vector<std::unique_ptr<PasswordForm>> WrapPasswordsIntoPointers( std::vector<PasswordForm> passwords) { std::vector<std::unique_ptr<PasswordForm>> password_ptrs; @@ -582,10 +579,7 @@ absl::optional<JobReturnHandler> reply = GetAndEraseJob(job_id); if (!reply.has_value()) return; // Task cleaned up after returning from background. - if (error.api_error_code.has_value() && - error.api_error_code.value() == kGMSInternalError) { - base::debug::DumpWithoutCrashing(); - } + // TODO(crbug.com/1324588): DCHECK_EQ(api_error_code, 10) to catch dev errors. reply->RecordMetrics(std::move(error)); if (reply->Holds<LoginsOrErrorReply>()) { main_task_runner_->PostTask(
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc index 88c160a..38fee91c 100644 --- a/chrome/browser/pdf/pdf_extension_test.cc +++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -4287,10 +4287,17 @@ return passes; } +struct PDFExtensionAccessibilityTreeDumpTestPassToString { + std::string operator()( + const ::testing::TestParamInfo<ui::AXApiType::Type>& i) const { + return std::string(i.param); + } +}; + INSTANTIATE_TEST_SUITE_P(All, PDFExtensionAccessibilityTreeDumpTest, testing::ValuesIn(GetAXTestValues()), - testing::PrintToStringParamName()); + PDFExtensionAccessibilityTreeDumpTestPassToString()); // TODO(crbug.com/1324362): Fix Mac flakes. #if BUILDFLAG(IS_MAC)
diff --git a/chrome/browser/prefetch/search_prefetch/search_prefetch_service.cc b/chrome/browser/prefetch/search_prefetch/search_prefetch_service.cc index 5bba3ce..591791c 100644 --- a/chrome/browser/prefetch/search_prefetch/search_prefetch_service.cc +++ b/chrome/browser/prefetch/search_prefetch/search_prefetch_service.cc
@@ -631,18 +631,17 @@ } void SearchPrefetchService::SaveToPrefs() const { - base::DictionaryValue dictionary; + base::Value::Dict dictionary; for (const auto& element : prefetch_cache_) { std::string navigation_url = element.first.spec(); std::string prefetch_url = element.second.first.spec(); - auto time = - std::make_unique<base::Value>(base::TimeToValue(element.second.second)); - base::ListValue value; + base::Value::List value; value.Append(prefetch_url); - value.Append(std::move(time)); - dictionary.SetKey(std::move(navigation_url), std::move(value)); + value.Append(base::TimeToValue(element.second.second)); + dictionary.Set(std::move(navigation_url), std::move(value)); } - profile_->GetPrefs()->Set(prefetch::prefs::kCachePrefPath, dictionary); + profile_->GetPrefs()->Set(prefetch::prefs::kCachePrefPath, + base::Value(std::move(dictionary))); } bool SearchPrefetchService::LoadFromPrefsForTesting() {
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index fad55d4..d6c5b01 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -241,6 +241,7 @@ #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/query_tiles/tile_service_prefs.h" #else // BUILDFLAG(IS_ANDROID) +#include "chrome/browser/autofill_assistant/password_change/apc_client.h" #include "chrome/browser/cart/cart_service.h" #include "chrome/browser/device_api/device_service_impl.h" #include "chrome/browser/gcm/gcm_product_util.h" @@ -1351,6 +1352,7 @@ variations::VariationsService::RegisterProfilePrefs(registry); video_tutorials::RegisterPrefs(registry); #else // BUILDFLAG(IS_ANDROID) + ApcClient::RegisterPrefs(registry); AppShortcutManager::RegisterProfilePrefs(registry); browser_sync::ForeignSessionHandler::RegisterProfilePrefs(registry); BrowserFeaturePromoSnoozeService::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc index a79811e..76fa8ace 100644 --- a/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc
@@ -943,6 +943,11 @@ if (privacy_sandbox::kPrivacySandboxSettings3DisableDialogForTesting.Get()) return DialogType::kNone; + if (base::FeatureList::IsEnabled( + privacy_sandbox::kDisablePrivacySandboxPrompts)) { + return DialogType::kNone; + } + if (privacy_sandbox::kPrivacySandboxSettings3ForceShowConsentForTesting.Get()) return DialogType::kConsent;
diff --git a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc index 1bfe081..77489de 100644 --- a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc +++ b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
@@ -44,10 +44,10 @@ void AddPair(base::ListValue* list, const std::u16string& key, const StringType& value) { - std::unique_ptr<base::DictionaryValue> results(new base::DictionaryValue()); - results->SetStringKey("key", key); - results->SetStringKey("value", value); - list->Append(std::move(results)); + base::Value::Dict results; + results.Set("key", key); + results.Set("value", value); + list->GetList().Append(std::move(results)); } } // namespace
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_af.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_af.xtb index 2b0367e..843e358 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_af.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_af.xtb
@@ -574,7 +574,7 @@ <translation id="4866956062845190338">radiokieslysitem</translation> <translation id="4867316986324544967">Aktiveer TTS-aantekening</translation> <translation id="4886524826165775965"><ph name="INDEX" />/<ph name="TOTAL" /></translation> -<translation id="4892105484979139179">Donker blougroen</translation> +<translation id="4892105484979139179">Donker siaan</translation> <translation id="489907760999452556">Interne skakel</translation> <translation id="4909019435900810068">Beweeg een woord terug</translation> <translation id="4911349081560453449">Geen vorige merkblokkie nie</translation> @@ -738,7 +738,7 @@ <translation id="5963413905009737549">Afdeling</translation> <translation id="5968607524793740041">Wys kontekskieslys</translation> <translation id="597121107011153418">{COUNT,plural, =1{met # item}other{met # items}}</translation> -<translation id="5981446804259161541">Ligte blougroen</translation> +<translation id="5981446804259161541">Ligte siaan</translation> <translation id="5983179082906765664">Verhoog navigasie-korrelrigheid</translation> <translation id="5992285135956208197">Grafiese dokument</translation> <translation id="5999630716831179808">Stemme</translation>
diff --git a/chrome/browser/resources/downloads/constants.ts b/chrome/browser/resources/downloads/constants.ts index 4f68232..40329bd 100644 --- a/chrome/browser/resources/downloads/constants.ts +++ b/chrome/browser/resources/downloads/constants.ts
@@ -34,6 +34,5 @@ DANGEROUS = 'DANGEROUS', INTERRUPTED = 'INTERRUPTED', MIXED_CONTENT = 'MIXED_CONTENT', - INCOGNITO_WARNING = 'INCOGNITO_WARNING', ASYNC_SCANNING = 'ASYNC_SCANNING', }
diff --git a/chrome/browser/resources/downloads/item.html b/chrome/browser/resources/downloads/item.html index bf0b637..ded9930 100644 --- a/chrome/browser/resources/downloads/item.html +++ b/chrome/browser/resources/downloads/item.html
@@ -277,7 +277,6 @@ #pauseOrResume, #dangerous .action-button, - #incognito-warning .action-button, #openNow { margin-inline-end: 8px; } @@ -341,7 +340,7 @@ </div> </template> - <div id="safe" class="controls" hidden="[[!isDownloadItemSafe_]]"> + <div id="safe" class="controls" hidden="[[isDangerous_]]"> <span role="gridcell" hidden="[[!hasShowInFolderLink_]]"> <a is="action-link" id="show" on-click="onShowTap_" focus-row-control @@ -415,21 +414,6 @@ </template> </div> </template> - - <template is="dom-if" if="[[shouldShowIncognitoWarning_]]"> - <div id="incognito-warning" class="controls"> - <span role="gridcell"> - <cr-button on-click="onIncognitoWarningAccepted_" - class="action-button" focus-row-control - focus-type="save">$i18n{downloadAnyway}</cr-button> - </span> - <span role="gridcell"> - <cr-button on-click="onCancelTap_" focus-row-control - focus-type="cancel"> - $i18n{controlCancel}</cr-button> - </span> - </div> - </template> </div> <div class="more-options"> <div role="gridcell">
diff --git a/chrome/browser/resources/downloads/item.ts b/chrome/browser/resources/downloads/item.ts index c743ebf..61194b0 100644 --- a/chrome/browser/resources/downloads/item.ts +++ b/chrome/browser/resources/downloads/item.ts
@@ -90,24 +90,12 @@ value: true, }, - isDownloadItemSafe_: { - computed: 'computeIsDownloadItemSafe_(data.state)', - type: Boolean, - value: false - }, - isDangerous_: { computed: 'computeIsDangerous_(data.state)', type: Boolean, value: false, }, - shouldShowIncognitoWarning_: { - computed: 'computeShouldShowIncognitoWarning_(data.state)', - type: Boolean, - value: false, - }, - isMalware_: { computed: 'computeIsMalware_(isDangerous_, data.dangerType)', type: Boolean, @@ -163,8 +151,6 @@ private controlledBy_: string; private isActive_: boolean; private isDangerous_: boolean; - private isDownloadItemSafe_: boolean; - private shouldShowIncognitoWarning_: boolean; private isInProgress_: boolean; private pauseOrResumeText_: string; private showCancel_: boolean; @@ -282,9 +268,6 @@ } break; - case States.INCOGNITO_WARNING: - return loadTimeData.getString('incognitoDownloadsWarningDesc'); - case States.MIXED_CONTENT: return loadTimeData.getString('mixedContentDownloadDesc'); @@ -338,8 +321,7 @@ const dangerType = this.data.dangerType as DangerType; if ((loadTimeData.getBoolean('requestsApVerdicts') && dangerType === DangerType.UNCOMMON_CONTENT) || - dangerType === DangerType.SENSITIVE_CONTENT_WARNING || - this.data.state === States.INCOGNITO_WARNING) { + dangerType === DangerType.SENSITIVE_CONTENT_WARNING) { return 'cr:warning'; } @@ -370,8 +352,7 @@ const dangerType = this.data.dangerType as DangerType; if ((loadTimeData.getBoolean('requestsApVerdicts') && dangerType === DangerType.UNCOMMON_CONTENT) || - dangerType === DangerType.SENSITIVE_CONTENT_WARNING || - this.data.state === States.INCOGNITO_WARNING) { + dangerType === DangerType.SENSITIVE_CONTENT_WARNING) { return 'yellow'; } @@ -522,8 +503,6 @@ this.useFileIcon_ = false; } else if (this.data.state === States.ASYNC_SCANNING) { this.useFileIcon_ = false; - } else if (this.data.state === States.INCOGNITO_WARNING) { - this.useFileIcon_ = false; } else { this.$.url.href = this.data.url; const path = this.data.filePath; @@ -538,16 +517,6 @@ } } - private computeShouldShowIncognitoWarning_(): boolean { - return this.data.state === States.INCOGNITO_WARNING && - this.data.shouldShowIncognitoWarning; - } - - private computeIsDownloadItemSafe_(): boolean { - return !this.computeIsDangerous_() && - !this.computeShouldShowIncognitoWarning_(); - } - private onCancelTap_() { this.restoreFocusAfterCancel_ = true; this.mojoHandler_!.cancel(this.data.id); @@ -611,10 +580,6 @@ this.mojoHandler_!.saveDangerousRequiringGesture(this.data.id); } - private onIncognitoWarningAccepted_() { - this.mojoHandler_!.acceptIncognitoWarning(this.data.id); - } - private onShowTap_() { this.mojoHandler_!.show(this.data.id); }
diff --git a/chrome/browser/resources/new_tab_page/modules/modules.ts b/chrome/browser/resources/new_tab_page/modules/modules.ts index f5dc6bf7..d6443ab9 100644 --- a/chrome/browser/resources/new_tab_page/modules/modules.ts +++ b/chrome/browser/resources/new_tab_page/modules/modules.ts
@@ -273,7 +273,12 @@ 'disable-module', e => this.onDisableModule_(e)); moduleWrapper.addEventListener('detect-impression', () => { if (!this.moduleImpressionDetected_) { + // Executed the first time a module impression is detected. NewTabPageProxy.getInstance().handler.incrementModulesShownCount(); + if (this.modulesFreShown) { + chrome.metricsPrivate.recordBoolean( + `NewTabPage.Modules.FreImpression`, this.modulesFreShown); + } } this.moduleImpressionDetected_ = true; }); @@ -448,16 +453,9 @@ this.modulesShownToUser; } - private async onModulesFreShownChange_() { + private onModulesFreShownChange_() { chrome.metricsPrivate.recordBoolean( `NewTabPage.Modules.FreLoaded`, this.modulesFreShown); - // The FRE only shows when modules are shown to users so we log a FRE - // impression whenever a module impression is detected and the FRE is set to - // show. - if (this.moduleImpressionDetected_) { - chrome.metricsPrivate.recordBoolean( - `NewTabPage.Modules.FreImpression`, this.modulesFreShown); - } } private onCustomizeModuleFre_() {
diff --git a/chrome/browser/resources/profile_internals/profile_internals_app.html b/chrome/browser/resources/profile_internals/profile_internals_app.html index 8bdd576..e5ecda56 100644 --- a/chrome/browser/resources/profile_internals/profile_internals_app.html +++ b/chrome/browser/resources/profile_internals/profile_internals_app.html
@@ -1,56 +1,60 @@ <style> - tr:nth-child(odd) { - background: rgb(239, 243, 255); - } + tr:nth-child(odd) { + background: rgb(239, 243, 255); + } </style> <h2>Profiles</h2>\ <template is="dom-repeat" items="[[profilesList_]]"> - <h3>[[item.localProfileName]]</h3> + <cr-expand-button expanded="{{item.expanded}}"> + [[item.profileState.localProfileName]] + </cr-expand-button> + <iron-collapse opened="[[item.expanded]]"> <table class="profile"> - <tr> - <td>Profile Path</td> - <td>[[item.profilePath]]</td> - </tr> - <tr> - <td>Local Profile Name</td> - <td>[[item.localProfileName]]</td> - </tr> - <tr> - <td>Signin State</td> - <td>[[item.signinState]]</td> - </tr> - <tr> - <td>Signin Required</td> - <td>[[item.signinRequired]]</td> - </tr> - <tr> - <td>Gaia Name</td> - <td>[[item.gaiaName]]</td> - </tr> - <tr> - <td>Gaia Id</td> - <td>[[item.gaiaId]]</td> - </tr> - <tr> - <td>User Name</td> - <td>[[item.userName]]</td> - </tr> - <tr> - <td>Hosted Domain</td> - <td>[[item.hostedDomain]]</td> - </tr> - <tr> - <td>KeepAlives</td> - <td> - <table> - <template is="dom-repeat" items="[[item.keepAlives]]"> - <tr> - <td>[[item.origin]]</td> - <td>[[item.count]]</td> - </tr> - </template> - </table> - </td> - </tr> + <tr> + <td>Profile Path</td> + <td>[[item.profileState.profilePath]]</td> + </tr> + <tr> + <td>Local Profile Name</td> + <td>[[item.profileState.localProfileName]]</td> + </tr> + <tr> + <td>Signin State</td> + <td>[[item.profileState.signinState]]</td> + </tr> + <tr> + <td>Signin Required</td> + <td>[[item.profileState.signinRequired]]</td> + </tr> + <tr> + <td>Gaia Name</td> + <td>[[item.profileState.gaiaName]]</td> + </tr> + <tr> + <td>Gaia Id</td> + <td>[[item.profileState.gaiaId]]</td> + </tr> + <tr> + <td>User Name</td> + <td>[[item.profileState.userName]]</td> + </tr> + <tr> + <td>Hosted Domain</td> + <td>[[item.profileState.hostedDomain]]</td> + </tr> + <tr> + <td>KeepAlives</td> + <td> + <table> + <template is="dom-repeat" items="[[item.profileState.keepAlives]]"> + <tr> + <td>[[item.origin]]</td> + <td>[[item.count]]</td> + </tr> + </template> + </table> + </td> + </tr> </table> + </iron-collapse> </template>
diff --git a/chrome/browser/resources/profile_internals/profile_internals_app.ts b/chrome/browser/resources/profile_internals/profile_internals_app.ts index e8154bb..f488ca1 100644 --- a/chrome/browser/resources/profile_internals/profile_internals_app.ts +++ b/chrome/browser/resources/profile_internals/profile_internals_app.ts
@@ -2,13 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import '//resources/cr_elements/cr_expand_button/cr_expand_button.m.js'; +import '//resources/polymer/v3_0/iron-collapse/iron-collapse.js'; import './strings.m.js'; import {WebUIListenerMixin} from 'chrome://resources/js/web_ui_listener_mixin.js'; import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {getTemplate} from './profile_internals_app.html.js'; -import {ProfileInternalsBrowserProxy, ProfileInternalsBrowserProxyImpl, ProfileState} from './profile_internals_browser_proxy.js'; +import {ProfileInternalsBrowserProxy, ProfileInternalsBrowserProxyImpl, ProfileState, ProfileStateElement} from './profile_internals_browser_proxy.js'; const ProfileInternalsAppElementBase = WebUIListenerMixin(PolymerElement); @@ -32,7 +34,7 @@ private profileInternalsBrowserProxy_: ProfileInternalsBrowserProxy = ProfileInternalsBrowserProxyImpl.getInstance(); - private profilesList_: Array<ProfileState>; + private profilesList_: Array<ProfileStateElement>; override connectedCallback() { super.connectedCallback(); @@ -47,7 +49,13 @@ * Handler for when the profiles list are updated. */ private handleProfilesListChanged_(profilesList: Array<ProfileState>) { - this.profilesList_ = profilesList; + const profilesExpanded = new Map(this.profilesList_.map( + item => [item.profileState.profilePath, item.expanded])); + this.profilesList_ = profilesList.map( + profile => ({ + profileState: profile, + expanded: profilesExpanded.get(profile.profilePath) ?? false, + })); } }
diff --git a/chrome/browser/resources/profile_internals/profile_internals_browser_proxy.ts b/chrome/browser/resources/profile_internals/profile_internals_browser_proxy.ts index 5be33530..fe63b32 100644 --- a/chrome/browser/resources/profile_internals/profile_internals_browser_proxy.ts +++ b/chrome/browser/resources/profile_internals/profile_internals_browser_proxy.ts
@@ -19,6 +19,11 @@ keepAlives: Array<KeepAlive>, }; +export type ProfileStateElement = { + profileState: ProfileState, + expanded: boolean, +}; + /** * @fileoverview A helper object used by the profile internals debug page * to interact with the browser.
diff --git a/chrome/browser/resources/signin/profile_picker/BUILD.gn b/chrome/browser/resources/signin/profile_picker/BUILD.gn index 826c05f7..1fe3eaf 100644 --- a/chrome/browser/resources/signin/profile_picker/BUILD.gn +++ b/chrome/browser/resources/signin/profile_picker/BUILD.gn
@@ -6,7 +6,7 @@ import("//chrome/common/features.gni") import("//tools/grit/grit_rule.gni") import("//tools/grit/preprocess_if_expr.gni") -import("//tools/polymer/html_to_js.gni") +import("//tools/polymer/css_to_wrapper.gni") import("//tools/polymer/html_to_wrapper.gni") import("//tools/typescript/ts_library.gni") import("//ui/webui/resources/tools/generate_grd.gni") @@ -84,8 +84,8 @@ in_files = html_wrapper_files + css_wrapper_files } -html_to_js("css_wrapper_files") { - js_files = css_wrapper_files +css_to_wrapper("css_wrapper_files") { + in_files = css_files } html_to_wrapper("html_wrapper_files") {
diff --git a/chrome/browser/resources/signin/profile_picker/profile_card.ts b/chrome/browser/resources/signin/profile_picker/profile_card.ts index d51efa3..5562dc5c 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_card.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_card.ts
@@ -7,7 +7,7 @@ import 'chrome://resources/cr_elements/hidden_style_css.m.js'; import 'chrome://resources/cr_elements/shared_style_css.m.js'; import './profile_card_menu.js'; -import './profile_picker_shared_css.js'; +import './profile_picker_shared.css.js'; import 'chrome://resources/cr_elements/cr_input/cr_input.m.js'; import 'chrome://resources/polymer/v3_0/paper-tooltip/paper-tooltip.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_card_menu.ts b/chrome/browser/resources/signin/profile_picker/profile_card_menu.ts index 3ad1b22..de65a41 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_card_menu.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_card_menu.ts
@@ -9,7 +9,7 @@ import 'chrome://resources/cr_elements/hidden_style_css.m.js'; import 'chrome://resources/cr_elements/shared_vars_css.m.js'; import 'chrome://resources/js/action_link.js'; -import './profile_picker_shared_css.js'; +import './profile_picker_shared.css.js'; import './icons.js'; import {CrActionMenuElement} from 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/account_selection_lacros.ts b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/account_selection_lacros.ts index 3251a0f..a7ca73d7 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/account_selection_lacros.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/account_selection_lacros.ts
@@ -5,7 +5,7 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; import 'chrome://resources/cr_elements/shared_vars_css.m.js'; -import './shared_css.js'; +import './profile_creation_shared.css.js'; import {assert} from 'chrome://resources/js/assert.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.ts b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.ts index cddd64e..af29130 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.ts
@@ -11,9 +11,9 @@ import 'chrome://resources/cr_elements/shared_vars_css.m.js'; import 'chrome://resources/cr_elements/shared_style_css.m.js'; import 'chrome://resources/cr_components/customize_themes/customize_themes.js'; -import './shared_css.js'; +import './profile_creation_shared.css.js'; import '../icons.js'; -import '../profile_picker_shared_css.js'; +import '../profile_picker_shared.css.js'; import {Theme, ThemeInfo, ThemeType} from 'chrome://resources/cr_components/customize_themes/customize_themes.mojom-webui.js'; import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_creation_shared.css b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_creation_shared.css new file mode 100644 index 0000000..4d2ac21b --- /dev/null +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_creation_shared.css
@@ -0,0 +1,85 @@ +/* Copyright 2022 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. */ + +/* #css_wrapper_metadata_start + * #type=style + * #import=chrome://resources/cr_elements/shared_vars_css.m.js + * #import=chrome://resources/cr_elements/cr_icons_css.m.js + * #import=../profile_picker_shared.css.js + * #include=cr-icons profile-picker-shared + * #css_wrapper_metadata_end */ + +:host { + --avatar-size: 100px; + --banner-height: 244px; +} + +#leftBanner { + background: url(../images/left_banner_image.svg); + left: 0; +} + +#rightBanner { + background: url(../images/right_banner_image.svg); + right: 0; +} + +@media (prefers-color-scheme: dark) { + #leftBanner { + background: url(../images/dark_mode_left_banner_image.svg); + } + + #rightBanner { + background: url(../images/dark_mode_right_banner_image.svg); + } +} + +#headerContainer { + height: var(--banner-height); + position: relative; + width: 100%; +} + +.banner { + height: 400px; + overflow: hidden; + position: absolute; + top: 0; + width: 169px; + z-index: -1; +} + +#backButton { + --cr-icon-button-icon-size: 22px; + --cr-icon-button-margin-start: 4px; + --cr-icon-button-size: 36px; + margin-inline-start: 16px; + margin-top: 4px; + position: relative; + z-index: 1; +} + +@media (forced-colors: none) { + #backButton { + --cr-icon-button-fill-color: var(--cr-secondary-text-color); + } +} + +#avatarContainer { + bottom: calc(var(--avatar-size) / -2); + height: calc(var(--avatar-size) + 4px); + left: 0; + margin: auto; + position: absolute; + right: 0; + width: calc(var(--avatar-size) + 4px); +} + +.avatar { + border: 2px solid var(--md-background-color); + border-radius: 50%; + height: var(--avatar-size); + width: var(--avatar-size); + z-index: 1; +}
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_type_choice.ts b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_type_choice.ts index 5c192a9..aa4e3091 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_type_choice.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_type_choice.ts
@@ -5,7 +5,7 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; import 'chrome://resources/cr_elements/shared_vars_css.m.js'; -import './shared_css.js'; +import './profile_creation_shared.css.js'; import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import {assert} from 'chrome://resources/js/assert.m.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html deleted file mode 100644 index 73c67436..0000000 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html +++ /dev/null
@@ -1,77 +0,0 @@ -<template> - <style include="cr-icons profile-picker-shared"> - :host { - --avatar-size: 100px; - --banner-height: 244px; - } - - #leftBanner { - background: url(../images/left_banner_image.svg); - left: 0; - } - - #rightBanner { - background: url(../images/right_banner_image.svg); - right: 0; - } - - @media (prefers-color-scheme: dark) { - #leftBanner { - background: url(../images/dark_mode_left_banner_image.svg); - } - - #rightBanner { - background: url(../images/dark_mode_right_banner_image.svg); - } - } - - #headerContainer { - height: var(--banner-height); - position: relative; - width: 100%; - } - - .banner { - height: 400px; - overflow: hidden; - position: absolute; - top: 0; - width: 169px; - z-index: -1; - } - - #backButton { - --cr-icon-button-icon-size: 22px; - --cr-icon-button-margin-start: 4px; - --cr-icon-button-size: 36px; - margin-inline-start: 16px; - margin-top: 4px; - position: relative; - z-index: 1; - } - - @media (forced-colors: none) { - #backButton { - --cr-icon-button-fill-color: var(--cr-secondary-text-color); - } - } - - #avatarContainer { - bottom: calc(var(--avatar-size) / -2); - height: calc(var(--avatar-size) + 4px); - left: 0; - margin: auto; - position: absolute; - right: 0; - width: calc(var(--avatar-size) + 4px); - } - - .avatar { - border: 2px solid var(--md-background-color); - border-radius: 50%; - height: var(--avatar-size); - width: var(--avatar-size); - z-index: 1; - } - </style> -</template>
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.ts b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.ts deleted file mode 100644 index 6acea4d4..0000000 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.ts +++ /dev/null
@@ -1,13 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'chrome://resources/cr_elements/shared_vars_css.m.js'; -import 'chrome://resources/cr_elements/cr_icons_css.m.js'; - -import 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import '../profile_picker_shared_css.js'; - -const styleMod = document.createElement('dom-module'); -styleMod.innerHTML = `{__html_template__}`; -styleMod.register('profile-creation-shared');
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker.gni b/chrome/browser/resources/signin/profile_picker/profile_picker.gni index 2ee29fd7..e1178e8 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_picker.gni +++ b/chrome/browser/resources/signin/profile_picker/profile_picker.gni
@@ -43,7 +43,14 @@ ts_files = non_web_component_files + web_component_files -css_wrapper_files = [ - "profile_creation_flow/shared_css.ts", - "profile_picker_shared_css.ts", +# Files that are passed as input to css_to_wrapper(). +css_files = [ + "profile_creation_flow/profile_creation_shared.css", + "profile_picker_shared.css", ] + +# Files that are generated by css_to_wrapper(). +css_wrapper_files = [] +foreach(f, css_files) { + css_wrapper_files += [ f + ".ts" ] +}
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_app.ts b/chrome/browser/resources/signin/profile_picker/profile_picker_app.ts index 092ce10..effe7c7 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_picker_app.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_picker_app.ts
@@ -5,7 +5,7 @@ import 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js'; import 'chrome://resources/cr_elements/cr_lazy_render/cr_lazy_render.m.js'; import './profile_picker_main_view.js'; -import './profile_picker_shared_css.js'; +import './profile_picker_shared.css.js'; import './strings.m.js'; import {CrViewManagerElement} from 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.ts b/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.ts index 59ffdbc..014a4ff 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.ts
@@ -10,7 +10,7 @@ import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; import './icons.js'; import './profile_card.js'; -import './profile_picker_shared_css.js'; +import './profile_picker_shared.css.js'; import './strings.m.js'; import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.m.js';
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_shared.css b/chrome/browser/resources/signin/profile_picker/profile_picker_shared.css new file mode 100644 index 0000000..81f1e437 --- /dev/null +++ b/chrome/browser/resources/signin/profile_picker/profile_picker_shared.css
@@ -0,0 +1,107 @@ +/* Copyright 2022 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. */ + +/* #css_wrapper_metadata_start + * #type=style + * #import=chrome://resources/cr_elements/shared_style_css.m.js + * #import=chrome://resources/cr_elements/shared_vars_css.m.js + * #include=cr-shared-style + * #css_wrapper_metadata_end */ + +:host { + --profile-card-avatar-icon-size: 74px; + --text-font-size: 1.16em; + --scrollbar-width: 4px; + --scrollbar-background: var(--google-grey-100); + --footer-spacing: 40px; + --profile-card-hover-color: var(--md-background-color); + --profile-item-height: 178px; + --profile-item-width: 162px; +} + +html { + font-family: roboto; +} + +h2 { + color: var(--cr-primary-text-color); + font-size: 1.85em; + font-weight: normal; +} + +h3 { + color: var(--cr-secondary-text-color); + font-size: var(--text-font-size); + font-weight: normal; +} + +.profile-card-info { + --profile-card-info-height: 52px; + color: var(--cr-primary-text-color); + height: 20px; + overflow: hidden; + position: absolute; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; +} + +.profile-card-info.prominent-text { + font-size: var(--text-font-size); + font-weight: 500; + padding: 16px; + width: 130px; +} + +.profile-card-info.secondary-text { + padding: 16px 10px; + width: 142px; +} + +.footer { + bottom: 0; + display: flex; + font-size: var(--text-font-size); + padding-bottom: var(--footer-spacing); + padding-top: var(--footer-spacing); + position: absolute; + width: 100%; +} + +.footer.division-line { + border-top: 1px solid var(--google-grey-300); +} + +.custom-scrollbar::-webkit-scrollbar { + width: var(--scrollbar-width); +} + +/* Track */ +.custom-scrollbar::-webkit-scrollbar-track { + border-radius: var(--scrollbar-width); +} + +/* Handle */ +.custom-scrollbar::-webkit-scrollbar-thumb { + background: var(--scrollbar-background); + border-radius: var(--scrollbar-width); +} + +.profile-avatar { + border-radius: 50%; + flex-shrink: 0; + height: var(--profile-card-avatar-icon-size); + width: var(--profile-card-avatar-icon-size); +} + +@media (prefers-color-scheme: dark) { + :host { + --scrollbar-background: var(--google-grey-800); + --profile-card-hover-color: var(--google-grey-800); + } + + .footer.division-line { + border-top-color: var(--cr-separator-color); + } +}
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.html b/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.html deleted file mode 100644 index b252e20..0000000 --- a/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.html +++ /dev/null
@@ -1,100 +0,0 @@ -<template> - <style include="cr-shared-style"> - :host { - --profile-card-avatar-icon-size: 74px; - --text-font-size: 1.16em; - --scrollbar-width: 4px; - --scrollbar-background: var(--google-grey-100); - --footer-spacing: 40px; - --profile-card-hover-color: var(--md-background-color); - --profile-item-height: 178px; - --profile-item-width: 162px; - } - - html { - font-family: roboto; - } - - h2 { - color: var(--cr-primary-text-color); - font-size: 1.85em; - font-weight: normal; - } - - h3 { - color: var(--cr-secondary-text-color); - font-size: var(--text-font-size); - font-weight: normal; - } - - .profile-card-info { - --profile-card-info-height: 52px; - color: var(--cr-primary-text-color); - height: 20px; - overflow: hidden; - position: absolute; - text-align: center; - text-overflow: ellipsis; - white-space: nowrap; - } - - .profile-card-info.prominent-text { - font-size: var(--text-font-size); - font-weight: 500; - padding: 16px; - width: 130px; - } - - .profile-card-info.secondary-text { - padding: 16px 10px; - width: 142px; - } - - .footer { - bottom: 0; - display: flex; - font-size: var(--text-font-size); - padding-bottom: var(--footer-spacing); - padding-top: var(--footer-spacing); - position: absolute; - width: 100%; - } - - .footer.division-line { - border-top: 1px solid var(--google-grey-300); - } - - .custom-scrollbar::-webkit-scrollbar { - width: var(--scrollbar-width); - } - - /* Track */ - .custom-scrollbar::-webkit-scrollbar-track { - border-radius: var(--scrollbar-width); - } - - /* Handle */ - .custom-scrollbar::-webkit-scrollbar-thumb { - background: var(--scrollbar-background); - border-radius: var(--scrollbar-width); - } - - .profile-avatar { - border-radius: 50%; - flex-shrink: 0; - height: var(--profile-card-avatar-icon-size); - width: var(--profile-card-avatar-icon-size); - } - - @media (prefers-color-scheme: dark) { - :host { - --scrollbar-background: var(--google-grey-800); - --profile-card-hover-color: var(--google-grey-800); - } - - .footer.division-line { - border-top-color: var(--cr-separator-color); - } - } - </style> -</template>
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.ts b/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.ts deleted file mode 100644 index 4643c153..0000000 --- a/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.ts +++ /dev/null
@@ -1,12 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'chrome://resources/cr_elements/shared_vars_css.m.js'; -import 'chrome://resources/cr_elements/shared_style_css.m.js'; - -import 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; - -const styleMod = document.createElement('dom-module'); -styleMod.innerHTML = `{__html_template__}`; -styleMod.register('profile-picker-shared');
diff --git a/chrome/browser/resources/signin/profile_picker/profile_switch.ts b/chrome/browser/resources/signin/profile_picker/profile_switch.ts index 9daeda580..cbb9102 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_switch.ts +++ b/chrome/browser/resources/signin/profile_picker/profile_switch.ts
@@ -4,7 +4,7 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import 'chrome://resources/cr_elements/icons.m.js'; -import './profile_picker_shared_css.js'; +import './profile_picker_shared.css.js'; import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
diff --git a/chrome/browser/sharing/sharing_service_proxy_android.cc b/chrome/browser/sharing/sharing_service_proxy_android.cc index f4d6d2a7..3ec1822f 100644 --- a/chrome/browser/sharing/sharing_service_proxy_android.cc +++ b/chrome/browser/sharing/sharing_service_proxy_android.cc
@@ -58,7 +58,7 @@ if (!device) { std::move(callback).Run( - static_cast<int>(SharingSendMessageResult::kDeviceNotFound)); + static_cast<int32_t>(SharingSendMessageResult::kDeviceNotFound)); return; }
diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc index be5282f9..ed96e4a 100644 --- a/chrome/browser/signin/chrome_signin_helper.cc +++ b/chrome/browser/signin/chrome_signin_helper.cc
@@ -35,6 +35,7 @@ #include "chrome/browser/signin/signin_features.h" #include "chrome/browser/signin/signin_manager.h" #include "chrome/browser/signin/signin_manager_factory.h" +#include "chrome/browser/signin/signin_ui_util.h" #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/webui/signin/login_ui_service.h" #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" @@ -44,6 +45,7 @@ #include "components/signin/core/browser/account_reconcilor.h" #include "components/signin/core/browser/cookie_reminter.h" #include "components/signin/public/base/account_consistency_method.h" +#include "components/signin/public/base/consent_level.h" #include "components/signin/public/base/signin_buildflags.h" #include "components/signin/public/identity_manager/accounts_cookie_mutator.h" #include "content/public/browser/browser_task_traits.h" @@ -305,22 +307,33 @@ } // Display a re-authentication dialog. - ::GetAccountManagerFacade(profile->GetPath().value()) - ->ShowReauthAccountDialog(account_manager::AccountManagerFacade:: - AccountAdditionSource::kContentAreaReauth, - manage_accounts_params.email); + signin_ui_util::ShowReauthForAccount( + browser, manage_accounts_params.email, + signin_metrics::AccessPoint::ACCESS_POINT_WEB_SIGNIN); return; } // 3. Displaying an account addition window. if (service_type == GAIA_SERVICE_TYPE_ADDSESSION) { #if BUILDFLAG(IS_CHROMEOS_LACROS) + signin::IdentityManager* const identity_manager = + IdentityManagerFactory::GetForProfile(profile); + CoreAccountInfo primary_account = + identity_manager->GetPrimaryAccountInfo(signin::ConsentLevel::kSignin); + if (identity_manager->HasAccountWithRefreshTokenInPersistentErrorState( + primary_account.account_id)) { + // On Lacros, it is not allowed to add a new account while the primary + // account is in error, as the reconcilor cannot generate the cookie until + // the primary account is fixed. Display a reauth dialog instead. + signin_ui_util::ShowReauthForPrimaryAccountWithAuthError( + browser, signin_metrics::AccessPoint::ACCESS_POINT_WEB_SIGNIN); + return; + } + // As per https://crbug.com/1286822 and internal b/215509741, the session // may sometimes become invalid on the server without notice. When this // happens, the user may try to fix it by signing-in again. // Trigger a cookie jar update now to fix the session if needed. - signin::IdentityManager* const identity_manager = - IdentityManagerFactory::GetForProfile(profile); identity_manager->GetAccountsCookieMutator()->TriggerCookieJarUpdate(); AccountProfileMapper* mapper =
diff --git a/chrome/browser/signin/signin_ui_delegate_impl_lacros.cc b/chrome/browser/signin/signin_ui_delegate_impl_lacros.cc index b1c703e..6655b38 100644 --- a/chrome/browser/signin/signin_ui_delegate_impl_lacros.cc +++ b/chrome/browser/signin/signin_ui_delegate_impl_lacros.cc
@@ -9,6 +9,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/signin/account_reconcilor_factory.h" +#include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/signin_manager.h" #include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/ui/browser.h" @@ -16,6 +17,8 @@ #include "components/account_manager_core/account_manager_facade.h" #include "components/account_manager_core/chromeos/account_manager_facade_factory.h" #include "components/signin/core/browser/account_reconcilor.h" +#include "components/signin/public/base/signin_metrics.h" +#include "components/signin/public/identity_manager/identity_manager.h" #include "google_apis/gaia/core_account_id.h" namespace signin_ui_util { @@ -66,6 +69,9 @@ case signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS: return account_manager::AccountManagerFacade::AccountAdditionSource:: kChromeSyncPromoReauth; + case signin_metrics::AccessPoint::ACCESS_POINT_WEB_SIGNIN: + return account_manager::AccountManagerFacade::AccountAdditionSource:: + kContentAreaReauth; default: NOTREACHED() << "Reauth is requested from an unknown access point " << static_cast<int>(access_point); @@ -86,7 +92,7 @@ base::BindOnce(&SigninUiDelegateImplLacros::OnAccountAdded, // base::Unretained() is fine because // SigninUiDelegateImplLacros is a singleton. - base::Unretained(this), enable_sync, + base::Unretained(this), enable_sync, /*is_reauth=*/false, browser ? browser->AsWeakPtr() : nullptr, profile->GetPath(), access_point, promo_action); signin_manager->StartLacrosSigninFlow( @@ -105,16 +111,27 @@ bool enable_sync, signin_metrics::AccessPoint access_point, signin_metrics::PromoAction promo_action) { - // TODO(https://crbug.com/1260291): turn on sync after reauth is completed if - // `enable_sync` is true. + AccountReconcilor* account_reconcilor = + AccountReconcilorFactory::GetForProfile(profile); + base::OnceClosure reauth_completed_closure = + base::BindOnce(&SigninUiDelegateImplLacros::OnReauthComplete, + // base::Unretained() is fine because + // SigninUiDelegateImplLacros is a singleton. + base::Unretained(this), enable_sync, + account_reconcilor->GetConsistencyCookieManager() + ->CreateScopedAccountUpdate(), + browser ? browser->AsWeakPtr() : nullptr, + profile->GetPath(), access_point, promo_action, email); account_manager::AccountManagerFacade* account_manager_facade = ::GetAccountManagerFacade(profile->GetPath().value()); account_manager_facade->ShowReauthAccountDialog( - GetAccountReauthSourceFromAccessPoint(access_point), email); + GetAccountReauthSourceFromAccessPoint(access_point), email, + std::move(reauth_completed_closure)); } void SigninUiDelegateImplLacros::OnAccountAdded( bool enable_sync, + bool is_reauth, base::WeakPtr<Browser> browser_weak, const base::FilePath& profile_path, signin_metrics::AccessPoint access_point, @@ -133,8 +150,33 @@ return; ShowTurnSyncOnUI(browser, profile, access_point, promo_action, - signin_metrics::Reason::kSigninPrimaryAccount, account_id, - TurnSyncOnHelper::SigninAbortedMode::REMOVE_ACCOUNT); + is_reauth ? signin_metrics::Reason::kReauthentication + : signin_metrics::Reason::kSigninPrimaryAccount, + account_id, + is_reauth + ? TurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT + : TurnSyncOnHelper::SigninAbortedMode::REMOVE_ACCOUNT); +} + +void SigninUiDelegateImplLacros::OnReauthComplete( + bool enable_sync, + signin::ConsistencyCookieManager::ScopedAccountUpdate&& update, + base::WeakPtr<Browser> browser_weak, + const base::FilePath& profile_path, + signin_metrics::AccessPoint access_point, + signin_metrics::PromoAction promo_action, + const std::string& email) { + Profile* profile = + g_browser_process->profile_manager()->GetProfileByPath(profile_path); + if (!profile) + return; + + signin::IdentityManager* identity_manager = + IdentityManagerFactory::GetForProfile(profile); + OnAccountAdded(enable_sync, /*is_reauth=*/true, browser_weak, profile_path, + access_point, promo_action, + identity_manager->FindExtendedAccountInfoByEmailAddress(email) + .account_id); } } // namespace signin_ui_util
diff --git a/chrome/browser/signin/signin_ui_delegate_impl_lacros.h b/chrome/browser/signin/signin_ui_delegate_impl_lacros.h index 9ee3527..2c1b609 100644 --- a/chrome/browser/signin/signin_ui_delegate_impl_lacros.h +++ b/chrome/browser/signin/signin_ui_delegate_impl_lacros.h
@@ -7,6 +7,22 @@ #include "chrome/browser/signin/signin_ui_delegate.h" +#include <string> + +#include "base/memory/weak_ptr.h" +#include "components/signin/core/browser/consistency_cookie_manager.h" + +namespace base { +class FilePath; +} + +namespace signin_metrics { +enum class AccessPoint; +enum class PromoAction; +} // namespace signin_metrics + +class Profile; + namespace signin_ui_util { // Lacros-specific implementation of the SigninUiDelegate interface. @@ -31,11 +47,21 @@ private: void OnAccountAdded(bool enable_sync, + bool is_reauth, base::WeakPtr<Browser> browser_weak, const base::FilePath& profile_path, signin_metrics::AccessPoint access_point, signin_metrics::PromoAction promo_action, const CoreAccountId& account_id); + + void OnReauthComplete( + bool enable_sync, + signin::ConsistencyCookieManager::ScopedAccountUpdate&& update, + base::WeakPtr<Browser> browser_weak, + const base::FilePath& profile_path, + signin_metrics::AccessPoint access_point, + signin_metrics::PromoAction promo_action, + const std::string& email); }; } // namespace signin_ui_util
diff --git a/chrome/browser/signin/signin_ui_util.cc b/chrome/browser/signin/signin_ui_util.cc index 2d991a2b..b63327a 100644 --- a/chrome/browser/signin/signin_ui_util.cc +++ b/chrome/browser/signin/signin_ui_util.cc
@@ -51,6 +51,8 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ash/profiles/profile_helper.h" +#include "components/account_manager_core/account_manager_facade.h" +#include "components/account_manager_core/chromeos/account_manager_facade_factory.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(ENABLE_DICE_SUPPORT) @@ -211,13 +213,29 @@ DCHECK(!primary_account_info.IsEmpty()); DCHECK(identity_manager->HasAccountWithRefreshTokenInPersistentErrorState( primary_account_info.account_id)); + ShowReauthForAccount(browser, primary_account_info.email, access_point); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) +} + +void ShowReauthForAccount(Browser* browser, + const std::string& email, + signin_metrics::AccessPoint access_point) { +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Only `ACCESS_POINT_WEB_SIGNIN` is supported, because `kContentAreaReauth` + // is hardcoded. + DCHECK_EQ(access_point, signin_metrics::AccessPoint::ACCESS_POINT_WEB_SIGNIN); + ::GetAccountManagerFacade(browser->profile()->GetPath().value()) + ->ShowReauthAccountDialog(account_manager::AccountManagerFacade:: + AccountAdditionSource::kContentAreaReauth, + email, base::OnceClosure()); +#else // Pass `false` for `enable_sync`, as this function is not expected to start a // sync setup flow after the reauth. GetSigninUiDelegate()->ShowReauthUI( - browser, browser->profile(), primary_account_info.email, + browser, browser->profile(), email, /*enable_sync=*/false, access_point, signin_metrics::PromoAction::PROMO_ACTION_NO_SIGNIN_PROMO); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif } void ShowExtensionSigninPrompt(Profile* profile,
diff --git a/chrome/browser/signin/signin_ui_util.h b/chrome/browser/signin/signin_ui_util.h index 7cbea009..73f841c 100644 --- a/chrome/browser/signin/signin_ui_util.h +++ b/chrome/browser/signin/signin_ui_util.h
@@ -48,6 +48,11 @@ Browser* browser, signin_metrics::AccessPoint access_point); +// Shows a reauth page/dialog to reauthanticate an account. +void ShowReauthForAccount(Browser* browser, + const std::string& email, + signin_metrics::AccessPoint access_point); + // Delegates to an existing sign-in tab if one exists. If not, a new sign-in tab // is created. void ShowExtensionSigninPrompt(Profile* profile,
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java index 419aaaf..729e40b 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java
@@ -133,6 +133,9 @@ public void cancelTabClosure(int tabId) {} @Override + public void notifyAllTabsClosureUndone() {} + + @Override public boolean supportsPendingClosures() { return false; }
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java index 5c8f9c6..46a36548 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java
@@ -241,6 +241,11 @@ } @Override + public void notifyAllTabsClosureUndone() { + mDelegateModel.notifyAllTabsClosureUndone(); + } + + @Override public void addTab( Tab tab, int index, @TabLaunchType int type, @TabCreationState int creationState) { mCountOfAddingOrClosingTabs++;
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModel.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModel.java index 9128c96..5f29bc9 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModel.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModel.java
@@ -138,6 +138,12 @@ public void cancelTabClosure(int tabId); /** + * Notifies observers that all tabs closure action has been completed and tabs have been + * restored. + */ + public void notifyAllTabsClosureUndone(); + + /** * Restores the most recent closure, bringing the tab(s) back into their original tab model or * this model if the original model no longer exists. */
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelFilter.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelFilter.java index 39ef3f6..ccc0c32 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelFilter.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelFilter.java
@@ -291,9 +291,9 @@ } @Override - public void allTabsClosureCommitted() { + public void allTabsClosureCommitted(boolean isIncognito) { for (TabModelObserver observer : mFilteredObservers) { - observer.allTabsClosureCommitted(); + observer.allTabsClosureCommitted(isIncognito); } }
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserver.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserver.java index ef90d3c..3a523bc2 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserver.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelObserver.java
@@ -105,6 +105,12 @@ default void tabClosureUndone(Tab tab) {} /** + * Called after all tabs closed from a close all tabs action have been successfully restored by + * an undo action. + */ + default void allTabsClosureUndone() {} + + /** * Called when a tab closure is committed and can't be undone anymore. * * @param tab The tab that has been closed. @@ -119,7 +125,7 @@ /** * Called when an "all tabs" closure has been committed and can't be undone anymore. */ - default void allTabsClosureCommitted() {} + default void allTabsClosureCommitted(boolean isIncognito) {} /** * Called after a tab has been removed. At this point, the tab is no longer in the tab model.
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java index 28966523..b05f9dd6 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java
@@ -153,7 +153,20 @@ * @param skipLoadingTab Whether to skip loading the Tab. */ public static void setIndex(TabModel model, int index, boolean skipLoadingTab) { - model.setIndex(index, TabSelectionType.FROM_USER, skipLoadingTab); + setIndex(model, index, skipLoadingTab, TabSelectionType.FROM_USER); + } + + /** + * A helper method that allows specifying a {@link TabSelectionType} + * type to {@link TabModel#setIndex(int, TabSelectionType)}. + * @param model The {@link TabModel} to act on. + * @param index The index of the {@link Tab} to select. + * @param skipLoadingTab Whether to skip loading the Tab. + * @param type {@link TabSelectionType} how the tab selection was initiated. + */ + public static void setIndex( + TabModel model, int index, boolean skipLoadingTab, @TabSelectionType int type) { + model.setIndex(index, type, skipLoadingTab); } /**
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index 46a2a771..099a8c8f 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3137,10 +3137,10 @@ <ph name="TAB_COUNT">%1$s<ex>6</ex></ph> tabs </message> <message name="IDS_RECENT_TABS_GROUP_CLOSURE_WITH_TITLE" desc="Text for a Recent Tabs Page > Recently Closed row item that represents a single group of tabs closed together that had a user specified group title. TITLE_OF_GROUP is the user specified title of the group."> - <ph name="TITLE_OF_GROUP">%1$s<ex>shopping</ex></ph> + Tab group - <ph name="TITLE_OF_GROUP">%1$s<ex>shopping</ex></ph> </message> - <message name="IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE" desc="Text for a Recent Tabs Page > Recently Closed row item that represents a single group of tabs closed together that does not have a user specified title."> - 1 tab group + <message name="IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE" desc="Text for a Recent Tabs Page > Recently Closed row item that represents a single group of tabs closed together that does not have a user specified title. TAB_COUNT is the total number of tabs closed in the group."> + Tab group - <ph name="TAB_COUNT">%1$s<ex>5</ex></ph> tabs </message> <!-- Explore sites strings -->
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE.png.sha1 index 409df18..e58f568 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE.png.sha1 +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITHOUT_TITLE.png.sha1
@@ -1 +1 @@ -50627d2a4247bed15485e690fb28a0be0700c87d \ No newline at end of file +2e5dcd234cc5109c19eeb17bde9b724f56aa323a \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITH_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITH_TITLE.png.sha1 index 552cebf..6e101c44 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITH_TITLE.png.sha1 +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_RECENT_TABS_GROUP_CLOSURE_WITH_TITLE.png.sha1
@@ -1 +1 @@ -68b0b4c70cd0e21b33273d4ea2bf704dca051ede \ No newline at end of file +e0f740b0a11575f46ad4362ec05fd85184985000 \ No newline at end of file
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 aaa37bd..e96b183 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">مشاهدة</translation> <translation id="8218052821161047641">صفحة سريعة الاستجابة</translation> <translation id="8218622182176210845">إدارة حسابك</translation> +<translation id="8221656072740924283">متابعة</translation> <translation id="8223642481677794647">قائمة بطاقات الخلاصة</translation> <translation id="8250920743982581267">المستندات</translation> <translation id="825412236959742607">تستهلك هذه الصفحة مساحة كبيرة من الذاكرة، لذلك أزال 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 1d560b8..350f2fe99 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
@@ -1314,6 +1314,7 @@ <translation id="8216351761227087153">Baxın</translation> <translation id="8218052821161047641">Sürətli səhifə</translation> <translation id="8218622182176210845">Hesabınızı idarə edin</translation> +<translation id="8221656072740924283">Davam edin</translation> <translation id="8223642481677794647">Lent kartı menyusu</translation> <translation id="8250920743982581267">Sənədlər</translation> <translation id="825412236959742607">Bu səhifə həddindən artıq çox yaddaşdan istifadə edir, buna görə də Chrome kontentin bir hissəsini silib.</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 39d6596..de9cf73 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Mira</translation> <translation id="8218052821161047641">Pàgina ràpida</translation> <translation id="8218622182176210845">Gestiona el compte</translation> +<translation id="8221656072740924283">Continua</translation> <translation id="8223642481677794647">Menú de la targeta del tauler</translation> <translation id="8250920743982581267">Documents</translation> <translation id="825412236959742607">Com que aquesta pàgina fa servir massa memòria, Chrome n'ha suprimit contingut.</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 ab5ec4bd..be0a663 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Se</translation> <translation id="8218052821161047641">Hurtig side</translation> <translation id="8218622182176210845">Administrer din konto</translation> +<translation id="8221656072740924283">Fortsæt</translation> <translation id="8223642481677794647">Feedkortmenu</translation> <translation id="8250920743982581267">Dokumenter</translation> <translation id="825412236959742607">Denne side anvender for meget hukommelse, så Chrome har fjernet noget indhold.</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 3f5d1f03..793786b 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
@@ -106,6 +106,7 @@ <translation id="1493287004536771723">You’re following <ph name="SITE_NAME" /></translation> <translation id="1506061864768559482">Search engine</translation> <translation id="1513352483775369820">Bookmarks and web history</translation> +<translation id="1513814250881909472">Sync to get your tabs from your other devices</translation> <translation id="1513858653616922153">Delete password</translation> <translation id="1518421282666914498">Emotion GIF <ph name="CURRENT_DATE_ISO" /></translation> <translation id="1521774566618522728">Active today</translation> @@ -184,6 +185,7 @@ <translation id="1995884366040846621">To continue, <ph name="IDENTITY_PROVIDER_ETLD_PLUS_ONE" /> will share your name, email address and profile picture with this site. See this site's <ph name="BEGIN_LINK1" />privacy policy<ph name="END_LINK1" />.</translation> <translation id="2000419248597011803">Sends some cookies and searches from the address bar and search box to your default search engine</translation> <translation id="200114059308480249">Include surrounding text in Google searches?</translation> +<translation id="2011996512573319870">Sync to get the most relevant content from Google</translation> <translation id="2013642289801508067">{FILE_COUNT,plural, =1{# File}other{# Files}}</translation> <translation id="2020309681647789787">You’ll have your history on all your synced devices, so you can continue what you were doing</translation> <translation id="2021896219286479412">Full screen site controls</translation> @@ -267,6 +269,7 @@ <translation id="2461822463642141190">Current</translation> <translation id="2472163211318554013">Sign in to get the most out of Chrome</translation> <translation id="247737702124049222">Image descriptions are on</translation> +<translation id="2481251096908459228">See stories for you</translation> <translation id="2482878487686419369">Notifications</translation> <translation id="2485422356828889247">Uninstall</translation> <translation id="2494974097748878569">Google Assistant in Chrome</translation> @@ -308,6 +311,7 @@ <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# Audio file}other{# Audio files}}</translation> <translation id="265156376773362237">Standard preloading</translation> <translation id="2656405586795711023">Web apps</translation> +<translation id="2700802943130197326">Sync to get your passwords, bookmarks and more on all your other devices.</translation> <translation id="2702516483241149200">New: Share a link that scrolls to this text</translation> <translation id="2704606927547763573">Copied</translation> <translation id="2707726405694321444">Refresh page</translation> @@ -569,6 +573,7 @@ <translation id="4162867837470729563">List of sharing options at full height.</translation> <translation id="4165986682804962316">Site settings</translation> <translation id="4170011742729630528">The service is not available; try again later.</translation> +<translation id="4177222230309051052">Get all your bookmarks</translation> <translation id="4181841719683918333">Languages</translation> <translation id="4195643157523330669">Open in new tab</translation> <translation id="4196597275619698563">Create card</translation> @@ -724,6 +729,7 @@ <translation id="4987271110129728827">Can’t find that page. Check your spelling or try a web search.</translation> <translation id="4988526792673242964">Pages</translation> <translation id="5001388021414335527">Follow this site here</translation> +<translation id="500351648694011114">Browse more easily</translation> <translation id="5004416275253351869">Google activity controls</translation> <translation id="5005141133360250920">Reaction deleted</translation> <translation id="5005498671520578047">Copy password</translation> @@ -876,6 +882,7 @@ <translation id="5864419784173784555">Waiting for another download…</translation> <translation id="5865733239029070421">Automatically sends usage statistics and crash reports to Google</translation> <translation id="5869522115854928033">Saved passwords</translation> +<translation id="5869789175361934029">Continue from another device</translation> <translation id="587735546353481577">To follow a site, go to the site, open the Chrome menu and tap Follow.</translation> <translation id="5880748256563468367">Go to feed</translation> <translation id="5884076754568147479">To help you complete tasks, Google will receive the URLs and contents of sites on which you use Assistant, as well as information that you submit through Assistant</translation> @@ -1449,6 +1456,7 @@ <translation id="8909135823018751308">Share…</translation> <translation id="8912362522468806198">Google Account</translation> <translation id="8920114477895755567">Waiting for details of parents.</translation> +<translation id="8921980840204105660">Sync to get your bookmarks from your other devices</translation> <translation id="8922289737868596582">Download pages from the More Options button to use them offline</translation> <translation id="8924575305646776101"><ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation> <translation id="892496902842311796"><ph name="LANG" /> is ready</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 bd14bfb..5d6a22a 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Ver</translation> <translation id="8218052821161047641">Página de carga rápida</translation> <translation id="8218622182176210845">Administra tu cuenta</translation> +<translation id="8221656072740924283">Continuar</translation> <translation id="8223642481677794647">Menú de la tarjeta de feed</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Chrome quitó parte del contenido de esta página porque usa demasiada memoria.</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 c6ed2ed..8288d1f 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Esita</translation> <translation id="8218052821161047641">Kiirleht</translation> <translation id="8218622182176210845">Konto haldamine</translation> +<translation id="8221656072740924283">Jätka</translation> <translation id="8223642481677794647">Voo kaardimenüü</translation> <translation id="8250920743982581267">Dokumendid</translation> <translation id="825412236959742607">Chrome eemaldas osa sisust, kuna leht kasutab liiga palju mälu.</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 bd38958..75bc1f6 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Katso</translation> <translation id="8218052821161047641">Nopeasti latautuva sivu</translation> <translation id="8218622182176210845">Ylläpidä tiliäsi</translation> +<translation id="8221656072740924283">Jatka</translation> <translation id="8223642481677794647">Fiidikottien valikko</translation> <translation id="8250920743982581267">Dokumentit</translation> <translation id="825412236959742607">Tämä sivu käyttää liikaa muistia, joten Chrome poisti osan sisällöstä.</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 8f34dbd..58c747dc 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Visionner</translation> <translation id="8218052821161047641">Page à chargement rapide</translation> <translation id="8218622182176210845">Gérer votre compte</translation> +<translation id="8221656072740924283">Continuer</translation> <translation id="8223642481677794647">Menu de la carte du flux</translation> <translation id="8250920743982581267">Documents</translation> <translation id="825412236959742607">Cette page utilise trop de mémoire, Chrome a donc supprimé certains contenus.</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 165561e..2f81849 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Regarder</translation> <translation id="8218052821161047641">Chargement rapide</translation> <translation id="8218622182176210845">Gérer votre compte</translation> +<translation id="8221656072740924283">Continuer</translation> <translation id="8223642481677794647">Menu de la carte de flux</translation> <translation id="8250920743982581267">Documents</translation> <translation id="825412236959742607">Cette page utilise trop de mémoire, Chrome a donc supprimé du contenu.</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 a959524..3da4393 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Ver</translation> <translation id="8218052821161047641">Páxina de carga rápida</translation> <translation id="8218622182176210845">Xestiona a túa conta</translation> +<translation id="8221656072740924283">Continuar</translation> <translation id="8223642481677794647">Menú da tarxeta do feed</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Esta páxina utiliza demasiada memoria, polo que Chrome quitou parte do seu contido.</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 4b8d09c..cec158d 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Guarda</translation> <translation id="8218052821161047641">Pagina veloce</translation> <translation id="8218622182176210845">Gestisci il tuo account</translation> +<translation id="8221656072740924283">Continua</translation> <translation id="8223642481677794647">Menu scheda feed</translation> <translation id="8250920743982581267">Documenti</translation> <translation id="825412236959742607">Questa pagina utilizza troppa memoria, pertanto Chrome ha rimosso alcuni contenuti.</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 265bd20..734ff1c 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">見る</translation> <translation id="8218052821161047641">高速ページ</translation> <translation id="8218622182176210845">アカウントを管理</translation> +<translation id="8221656072740924283">続行</translation> <translation id="8223642481677794647">フィードカード メニュー</translation> <translation id="8250920743982581267">ドキュメント</translation> <translation id="825412236959742607">このページは大量のメモリを使用しているため、Chrome により一部のコンテンツが削除されました。</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 365e204..87f5a38 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Қарау</translation> <translation id="8218052821161047641">Жылдам бет</translation> <translation id="8218622182176210845">Аккаунтты басқару</translation> +<translation id="8221656072740924283">Жалғастыру</translation> <translation id="8223642481677794647">Фид картасы мәзірі</translation> <translation id="8250920743982581267">Құжаттар</translation> <translation id="825412236959742607">Бұл бет тым көп жадты пайдаланатындықтан, Chromе кейбір мазмұнды өшірді.</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 22c5413..7584568 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">ເບິ່ງ</translation> <translation id="8218052821161047641">ໜ້າທີ່ໂຫຼດໄວ</translation> <translation id="8218622182176210845">ຈັດການບັນຊີຂອງທ່ານ</translation> +<translation id="8221656072740924283">ສືບຕໍ່</translation> <translation id="8223642481677794647">ເມນູບັດຟີດ</translation> <translation id="8250920743982581267">ເອກະສານ</translation> <translation id="825412236959742607">ໜ້ານີ້ໃຊ້ເງິນຫຼາຍເກີນໄປ, ສະນັ້ນ Chrome ໄດ້ລຶບບາງເນື້ອຫາອອກແລ້ວ.</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 02715b61..59fc211 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Skatīties</translation> <translation id="8218052821161047641">Ātri ielādējama lapa</translation> <translation id="8218622182176210845">Konta pārvaldība</translation> +<translation id="8221656072740924283">Turpināt</translation> <translation id="8223642481677794647">Plūsmas kartītes izvēlne</translation> <translation id="8250920743982581267">Dokumenti</translation> <translation id="825412236959742607">Šī lapa izmanto pārāk daudz atmiņas, tādēļ pārlūks Chrome noņēma daļu satura.</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 87bc081..850bced3 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">पहा</translation> <translation id="8218052821161047641">जलद पेज</translation> <translation id="8218622182176210845">तुमचे खाते व्यवस्थापित करा</translation> +<translation id="8221656072740924283">पुढे सुरू ठेवा</translation> <translation id="8223642481677794647">फीड कार्ड मेनू</translation> <translation id="8250920743982581267">दस्तऐवज</translation> <translation id="825412236959742607">हे पेज खूप जास्त मेमरी वापरत असल्यामुळे, Chrome ने काही आशय काढून टाकला आहे.</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 36cd3059..93b66d51 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
@@ -1315,6 +1315,7 @@ <translation id="8216351761227087153">လက်ပတ်နာရီ</translation> <translation id="8218052821161047641">အမြန်စာမျက်နှာ</translation> <translation id="8218622182176210845">သင့်အကောင့်ကို စီမံခန့်ခွဲခြင်း</translation> +<translation id="8221656072740924283">ရှေ့ဆက်ရန်</translation> <translation id="8223642481677794647">ဖိဒ်ကတ်မီနူး</translation> <translation id="8250920743982581267">စာရွက်စာတမ်းများ</translation> <translation id="825412236959742607">ဤစာမျက်နှာသည် မှတ်ဉာဏ်များစွာ အသုံးပြုနေသည့်အတွက် Chrome သည် အကြောင်းအရာအချို့ကို ဖယ်ရှားထားသည်။</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 c729e95..def48f2 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">ଦେଖନ୍ତୁ</translation> <translation id="8218052821161047641">ଶୀଘ୍ର ଲୋଡ୍ ହେଉଥିବା ପୃଷ୍ଠା</translation> <translation id="8218622182176210845">ଆପଣଙ୍କର ଆକାଉଣ୍ଟ ପରିଚାଳନା କରନ୍ତୁ</translation> +<translation id="8221656072740924283">ଜାରି ରଖନ୍ତୁ</translation> <translation id="8223642481677794647">ଫିଡ୍ କାର୍ଡ ମେନୁ</translation> <translation id="8250920743982581267">ଡକୁମେଣ୍ଟ</translation> <translation id="825412236959742607">ଏହି ପୃଷ୍ଠାଟି ବହୁତ ଅଧିକ ମେମୋରୀ ବ୍ୟବହାର କରୁଛି, ତେଣୁ Chrome କିଛି ବିଷୟବସ୍ତୁ ବାହାର କରି ଦେଇଛି।</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 b0534176..34c27154 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
@@ -1317,6 +1317,7 @@ <translation id="8216351761227087153">Assistir</translation> <translation id="8218052821161047641">Página de carregamento rápido</translation> <translation id="8218622182176210845">Gerenciar sua conta</translation> +<translation id="8221656072740924283">Continuar</translation> <translation id="8223642481677794647">Menu do card do feed</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Como esta página usa muita memória, o Chrome removeu parte do conteúdo.</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 551fb0e..1615aef 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Просмотреть</translation> <translation id="8218052821161047641">Быстрая страница</translation> <translation id="8218622182176210845">Управление аккаунтом</translation> +<translation id="8221656072740924283">Продолжить</translation> <translation id="8223642481677794647">Меню карточки из ленты</translation> <translation id="8250920743982581267">Документы</translation> <translation id="825412236959742607">Эта страница расходовала слишком много памяти, поэтому часть контента была удалена.</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 c95a0f8..0a7e5c9 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Glejte</translation> <translation id="8218052821161047641">Hitra stran</translation> <translation id="8218622182176210845">Upravljanje računa</translation> +<translation id="8221656072740924283">Naprej</translation> <translation id="8223642481677794647">Meni kartice vira</translation> <translation id="8250920743982581267">Dokumenti</translation> <translation id="825412236959742607">Ta stran uporablja preveč pomnilnika, zato je Chrome odstranil nekaj vsebine.</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 b010fa1..6397253 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Shikoje</translation> <translation id="8218052821161047641">Faqja e shpejtë</translation> <translation id="8218622182176210845">Menaxho llogarinë tënde</translation> +<translation id="8221656072740924283">Vazhdo</translation> <translation id="8223642481677794647">Menyja e kartave të furnizimit</translation> <translation id="8250920743982581267">Dokumentet</translation> <translation id="825412236959742607">Kjo faqe përdor shumë memorie, ndaj Chrome ka hequr disa përmbajtje.</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 3fcaee5..16230ba0 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
@@ -1317,6 +1317,7 @@ <translation id="8216351761227087153">Titta</translation> <translation id="8218052821161047641">Snabb sida</translation> <translation id="8218622182176210845">Hantera kontot</translation> +<translation id="8221656072740924283">Fortsätt</translation> <translation id="8223642481677794647">Menyn med flödeskort</translation> <translation id="8250920743982581267">Dokument</translation> <translation id="825412236959742607">Den här sidan använder för mycket minne, så en del innehåll har tagits bort.</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 23f2a5c..cb518a8 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">Tazama</translation> <translation id="8218052821161047641">Ukurasa wa haraka</translation> <translation id="8218622182176210845">Dhibiti akaunti yako</translation> +<translation id="8221656072740924283">Endelea</translation> <translation id="8223642481677794647">Menyu ya kadi ya mipasho</translation> <translation id="8250920743982581267">Hati</translation> <translation id="825412236959742607">Ukurasa huu unatumia hifadhi kubwa mno, hivyo basi Chrome imeondoa baadhi ya maudhui.</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 6878174..1fa20d8 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">İzle</translation> <translation id="8218052821161047641">Hızlı sayfa</translation> <translation id="8218622182176210845">Hesabınızı yönetin</translation> +<translation id="8221656072740924283">Devam</translation> <translation id="8223642481677794647">Akış kartı menüsü</translation> <translation id="8250920743982581267">Dokümanlar</translation> <translation id="825412236959742607">Bu sayfa çok fazla bellek kullandığından Chrome bazı içerikleri kaldırdı.</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 eab7bea..fe80eea 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
@@ -1316,6 +1316,7 @@ <translation id="8216351761227087153">دیکھیں</translation> <translation id="8218052821161047641">تیز صفحہ</translation> <translation id="8218622182176210845">اپنے اکاؤنٹ کا نظم کریں</translation> +<translation id="8221656072740924283">جاری رکھیں</translation> <translation id="8223642481677794647">فیڈ کارڈ مینو</translation> <translation id="8250920743982581267">دستاویزات</translation> <translation id="825412236959742607">یہ صفحہ بہت زیادہ میموری استعمال کرتا ہے، لہذا Chrome نے بعض مواد حذف کر دیا۔</translation>
diff --git a/chrome/browser/ui/android/tab_model/tab_model.h b/chrome/browser/ui/android/tab_model/tab_model.h index 3623bed..0e751561 100644 --- a/chrome/browser/ui/android/tab_model/tab_model.h +++ b/chrome/browser/ui/android/tab_model/tab_model.h
@@ -125,6 +125,8 @@ // User-originated switch to existing tab from Omnibox tab switch // suggestions. FROM_OMNIBOX, + // Selection of a previously closed tab when closure is undone. + FROM_UNDO, // Must be last. SIZE };
diff --git a/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.cc b/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.cc index d06fba9..21c803f 100644 --- a/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.cc +++ b/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.cc
@@ -28,7 +28,10 @@ ScheduledRebootDialog::~ScheduledRebootDialog() { if (dialog_delegate_) { - dialog_delegate_->GetWidget()->CloseNow(); + views::Widget* widget = dialog_delegate_->GetWidget(); + if (widget->HasObserver(this)) + widget->RemoveObserver(this); + widget->CloseNow(); dialog_delegate_ = nullptr; } } @@ -62,7 +65,7 @@ dialog_delegate_->GetWidget()->AddObserver(this); } -void ScheduledRebootDialog::OnWidgetClosing(views::Widget* widget) { +void ScheduledRebootDialog::OnWidgetDestroying(views::Widget* widget) { widget->RemoveObserver(this); dialog_delegate_ = nullptr; } @@ -86,4 +89,4 @@ message_id = IDS_REBOOT_SCHEDULED_TITLE_MINUTES; } return l10n_util::GetPluralStringFUTF16(message_id, amount); -} \ No newline at end of file +}
diff --git a/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.h b/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.h index 426f1bbc..641f5303 100644 --- a/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.h +++ b/chrome/browser/ui/ash/device_scheduled_reboot/scheduled_reboot_dialog.h
@@ -33,7 +33,7 @@ protected: // views::WidgetObserver: - void OnWidgetClosing(views::Widget* widget) override; + void OnWidgetDestroying(views::Widget* widget) override; private: // Show bubble dialog and set |dialog_delegate_|. @@ -55,4 +55,4 @@ raw_ptr<views::DialogDelegate> dialog_delegate_ = nullptr; }; -#endif // CHROME_BROWSER_UI_ASH_DEVICE_SCHEDULED_REBOOT_SCHEDULED_REBOOT_DIALOG_H_ \ No newline at end of file +#endif // CHROME_BROWSER_UI_ASH_DEVICE_SCHEDULED_REBOOT_SCHEDULED_REBOOT_DIALOG_H_
diff --git a/chrome/browser/ui/download/download_item_mode.cc b/chrome/browser/ui/download/download_item_mode.cc index 3a75e12..a1ee8dd 100644 --- a/chrome/browser/ui/download/download_item_mode.cc +++ b/chrome/browser/ui/download/download_item_mode.cc
@@ -9,11 +9,6 @@ namespace download { DownloadItemMode GetDesiredDownloadItemMode(DownloadUIModel* download) { - if (download->ShouldShowIncognitoWarning() && - (download->GetState() != download::DownloadItem::CANCELLED)) { - return DownloadItemMode::kIncognitoWarning; - } - if (download->IsMixedContent()) { const bool warn = download->GetMixedContentStatus() == download::DownloadItem::MixedContentStatus::WARN;
diff --git a/chrome/browser/ui/download/download_item_mode.h b/chrome/browser/ui/download/download_item_mode.h index 8660dd4..a3198c6 100644 --- a/chrome/browser/ui/download/download_item_mode.h +++ b/chrome/browser/ui/download/download_item_mode.h
@@ -17,8 +17,6 @@ kMixedContentWarn, // Displaying the mixed-content download warning. kMixedContentBlock, // Displaying the mixed-content download block error. kDeepScanning, // Displaying in-progress deep scanning information. - kIncognitoWarning, // Displaying warning about files saved on the device even - // in Incognito. }; // Returns the mode that best reflects the current model state.
diff --git a/chrome/browser/ui/file_system_access_dialogs.cc b/chrome/browser/ui/file_system_access_dialogs.cc index 367f92f..409bb6f 100644 --- a/chrome/browser/ui/file_system_access_dialogs.cc +++ b/chrome/browser/ui/file_system_access_dialogs.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "chrome/browser/ui/file_system_access_dialogs.h" +#include "build/build_config.h" #include "components/permissions/permission_util.h"
diff --git a/chrome/browser/ui/file_system_access_dialogs.h b/chrome/browser/ui/file_system_access_dialogs.h index f7a4c7e..5b30cf6 100644 --- a/chrome/browser/ui/file_system_access_dialogs.h +++ b/chrome/browser/ui/file_system_access_dialogs.h
@@ -6,8 +6,6 @@ #define CHROME_BROWSER_UI_FILE_SYSTEM_ACCESS_DIALOGS_H_ #include "base/callback.h" -#include "base/callback_helpers.h" -#include "build/build_config.h" #include "chrome/browser/file_system_access/file_system_access_permission_request_manager.h" #include "content/public/browser/file_system_access_permission_context.h" @@ -34,10 +32,9 @@ base::OnceCallback<void(permissions::PermissionAction result)> callback, content::WebContents* web_contents); -// Displays a dialog to inform the user that the |path| they picked using the -// File System Access API is blocked by chrome. |is_directory| is true if the -// user was selecting a directory, otherwise the user was selecting files within -// a directory. |callback| is called when the user has dismissed the dialog. +// Displays a dialog to inform the user that the `path` they picked using the +// File System Access API is blocked by chrome. `callback` is called when the +// user has dismissed the dialog. void ShowFileSystemAccessRestrictedDirectoryDialog( const url::Origin& origin, const base::FilePath& path,
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc index fad47c4..18b96ef1 100644 --- a/chrome/browser/ui/views/download/download_item_view.cc +++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -239,8 +239,7 @@ // Whether a warning label is visible. bool has_warning_label(download::DownloadItemMode mode) { - return is_download_warning(mode) || is_mixed_content(mode) || - mode == download::DownloadItemMode::kIncognitoWarning; + return is_download_warning(mode) || is_mixed_content(mode); } float GetDPIScaleForView(views::View* view) { @@ -898,8 +897,7 @@ save_button_->SetVisible( (mode_ == download::DownloadItemMode::kDangerous) || - (mode_ == download::DownloadItemMode::kMixedContentWarn) || - (mode_ == download::DownloadItemMode::kIncognitoWarning)); + (mode_ == download::DownloadItemMode::kMixedContentWarn)); save_button_->SetText(model_->GetWarningConfirmButtonText()); discard_button_->SetVisible( @@ -1094,10 +1092,6 @@ vector_icons::kErrorIcon, ui::kColorAlertHighSeverity, UseNewWarnings() ? 20 : 24); - if (model_->ShouldShowIncognitoWarning()) { - return kWarning; - } - const auto danger_type = model_->GetDangerType(); const auto kInfo = ui::ImageModel::FromVectorIcon( (danger_type == download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING)
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.h b/chrome/browser/ui/views/profiles/profile_menu_view.h index 12bf290..7981369b 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view.h +++ b/chrome/browser/ui/views/profiles/profile_menu_view.h
@@ -50,6 +50,9 @@ friend class ProfileMenuViewSignoutTest; friend class ProfileMenuViewSyncErrorButtonTest; friend class ProfileMenuInteractiveUiTest; +#if BUILDFLAG(IS_CHROMEOS_LACROS) + friend class ProfileMenuViewSigninErrorButtonTest; +#endif // views::BubbleDialogDelegateView: std::u16string GetAccessibleWindowTitle() const override;
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_menu_view_browsertest.cc index d9cd683..8ffdb78 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_browsertest.cc +++ b/chrome/browser/ui/views/profiles/profile_menu_view_browsertest.cc
@@ -30,6 +30,7 @@ #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/signin_promo.h" +#include "chrome/browser/signin/signin_ui_util.h" #include "chrome/browser/sync/sync_service_factory.h" #include "chrome/browser/sync/sync_ui_util.h" #include "chrome/browser/sync/test/integration/secondary_account_helper.h" @@ -62,6 +63,7 @@ #include "components/signin/public/base/consent_level.h" #include "components/signin/public/base/signin_pref_names.h" #include "components/signin/public/identity_manager/identity_test_utils.h" +#include "components/signin/public/identity_manager/primary_account_mutator.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h" #include "components/sync/test/fake_server/fake_server_network_resources.h" @@ -73,6 +75,7 @@ #include "extensions/browser/extension_registry.h" #include "google_apis/gaia/gaia_switches.h" #include "google_apis/gaia/gaia_urls.h" +#include "google_apis/gaia/google_service_auth_error.h" #include "net/test/embedded_test_server/http_response.h" #include "net/test/embedded_test_server/request_handler_util.h" #include "services/network/test/test_url_loader_factory.h" @@ -82,6 +85,7 @@ #include "ui/views/test/widget_test.h" #if BUILDFLAG(IS_CHROMEOS_LACROS) +#include "chrome/browser/signin/signin_ui_delegate_impl_lacros.h" #include "components/account_manager_core/chromeos/account_manager_facade_factory.h" #include "components/account_manager_core/chromeos/fake_account_manager_ui.h" #include "components/signin/public/base/signin_switches.h" @@ -570,8 +574,15 @@ OpenProfileMenu(browser()); if (HasFatalFailure()) return false; + // This test does not check that the reauth button is displayed in the menu, + // but this is tested in ProfileMenuClickTest. + base::HistogramTester histogram_tester; static_cast<ProfileMenuView*>(profile_menu_view()) ->OnSyncErrorButtonClicked(AvatarSyncErrorType::kAuthError); + histogram_tester.ExpectUniqueSample( + "Profile.Menu.ClickedActionableItem", + ProfileMenuViewBase::ActionableItem::kSyncErrorButton, + /*expected_bucket_count=*/1); return true; } @@ -629,6 +640,102 @@ } #endif +#if BUILDFLAG(IS_CHROMEOS_LACROS) +// Test suite that sets up a non-sync account in an error state and simulates a +// click on the sync button. +// This is only relevant on Lacros, as this state does not exist on desktop. +class ProfileMenuViewSigninErrorButtonTest : public ProfileMenuViewTestBase, + public InProcessBrowserTest { + public: + class MockSigninUiDelegate + : public signin_ui_util::SigninUiDelegateImplLacros { + public: + MOCK_METHOD(void, + ShowTurnSyncOnUI, + (Browser * browser, + Profile* profile, + signin_metrics::AccessPoint access_point, + signin_metrics::PromoAction promo_action, + signin_metrics::Reason signin_reason, + const CoreAccountId& account_id, + TurnSyncOnHelper::SigninAbortedMode signin_aborted_mode), + ()); + }; + + ProfileMenuViewSigninErrorButtonTest() + : delegate_auto_reset_( + signin_ui_util::SetSigninUiDelegateForTesting(&mock_delegate_)) {} + + CoreAccountInfo account_info() const { return account_info_; } + + void SetUpOnMainThread() override { + // Add an account, non-syncing and in authentication error. + signin::IdentityManager* identity_manager = + IdentityManagerFactory::GetForProfile(browser()->profile()); + account_info_ = signin::MakePrimaryAccountAvailable( + identity_manager, "foo@example.com", signin::ConsentLevel::kSignin); + signin::UpdatePersistentErrorOfRefreshTokenForAccount( + identity_manager, account_info_.account_id, + GoogleServiceAuthError::FromInvalidGaiaCredentialsReason( + GoogleServiceAuthError::InvalidGaiaCredentialsReason:: + CREDENTIALS_REJECTED_BY_SERVER)); + ASSERT_TRUE( + identity_manager->HasAccountWithRefreshTokenInPersistentErrorState( + account_info_.account_id)); + } + + void ClickTurnOnSync() { + OpenProfileMenu(browser()); + // This test does not check that the sync button is displayed in the menu, + // but this is tested in ProfileMenuClickTest. + base::HistogramTester histogram_tester; + static_cast<ProfileMenuView*>(profile_menu_view()) + ->OnSigninAccountButtonClicked(account_info()); + histogram_tester.ExpectUniqueSample( + "Profile.Menu.ClickedActionableItem", + ProfileMenuViewBase::ActionableItem::kSigninAccountButton, + /*expected_bucket_count=*/1); + } + + protected: + CoreAccountInfo account_info_; + + testing::StrictMock<MockSigninUiDelegate> mock_delegate_; + base::AutoReset<signin_ui_util::SigninUiDelegate*> delegate_auto_reset_; +}; + +IN_PROC_BROWSER_TEST_F(ProfileMenuViewSigninErrorButtonTest, OpenReauthDialog) { + FakeAccountManagerUI* account_manager_ui = GetFakeAccountManagerUI(); + ASSERT_TRUE(account_manager_ui); + FakeAccountManagerUITestObserver observer(account_manager_ui); + + ClickTurnOnSync(); + + // Reauth is shown first. + observer.WaitForReauthAccountDialogShown(); + EXPECT_TRUE(account_manager_ui->IsDialogShown()); + EXPECT_EQ(1, + account_manager_ui->show_account_reauthentication_dialog_calls()); + + base::RunLoop loop; + EXPECT_CALL( + mock_delegate_, + ShowTurnSyncOnUI( + browser(), browser()->profile(), + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, + signin_metrics::PromoAction::PROMO_ACTION_WITH_DEFAULT, + signin_metrics::Reason::kReauthentication, account_info().account_id, + TurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT)) + .WillOnce([&loop]() { loop.Quit(); }); + + // Complete reauth. + account_manager_ui->CloseDialog(); + + // Wait until the Sync confirmation is shown. + loop.Run(); +} +#endif + // This class is used to test the existence, the correct order and the call to // the correct action of the buttons in the profile menu. This is done by // advancing the focus to each button and simulating a click. It is expected @@ -739,7 +846,8 @@ histogram_tester_.ExpectUniqueSample( "Profile.Menu.ClickedActionableItem", - GetExpectedActionableItemAtIndex(GetParam()), /*count=*/1); + GetExpectedActionableItemAtIndex(GetParam()), + /*expected_bucket_count=*/1); } base::CallbackListSubscription test_signin_client_subscription_; @@ -1008,6 +1116,48 @@ RunTest(); } + +// List of actionable items in the correct order as they appear in the menu. +// If a new button is added to the menu, it should also be added to this list. +constexpr ProfileMenuViewBase::ActionableItem + kActionableItems_UnconsentedPrimaryAccountError[] = { + ProfileMenuViewBase::ActionableItem::kEditProfileButton, + ProfileMenuViewBase::ActionableItem::kPasswordsButton, + ProfileMenuViewBase::ActionableItem::kCreditCardsButton, + ProfileMenuViewBase::ActionableItem::kAddressesButton, + ProfileMenuViewBase::ActionableItem::kSigninAccountButton, + ProfileMenuViewBase::ActionableItem::kManageGoogleAccountButton, + ProfileMenuViewBase::ActionableItem::kManageProfilesButton, + ProfileMenuViewBase::ActionableItem::kGuestProfileButton, + ProfileMenuViewBase::ActionableItem::kAddNewProfileButton, + // The first button is added again to finish the cycle and test that + // there are no other buttons at the end. + ProfileMenuViewBase::ActionableItem::kEditProfileButton}; + +PROFILE_MENU_CLICK_TEST(kActionableItems_UnconsentedPrimaryAccountError, + ProfileMenuClickTest_UnconsentedPrimaryAccountError) { + AccountInfo account_info = + signin::MakeAccountAvailable(identity_manager(), "user@example.com"); + signin::UpdatePersistentErrorOfRefreshTokenForAccount( + identity_manager(), account_info.account_id, + GoogleServiceAuthError::FromInvalidGaiaCredentialsReason( + GoogleServiceAuthError::InvalidGaiaCredentialsReason:: + CREDENTIALS_REJECTED_BY_SERVER)); + identity_manager()->GetPrimaryAccountMutator()->SetPrimaryAccount( + account_info.account_id, signin::ConsentLevel::kSignin); + + // Check that the setup was successful. + ASSERT_FALSE( + identity_manager()->HasPrimaryAccount(signin::ConsentLevel::kSync)); + ASSERT_EQ(account_info, identity_manager()->GetPrimaryAccountInfo( + signin::ConsentLevel::kSignin)); + ASSERT_TRUE( + identity_manager()->HasAccountWithRefreshTokenInPersistentErrorState( + account_info.account_id)); + + RunTest(); +} + #endif // BUILDFLAG(IS_CHROMEOS_LACROS) // List of actionable items in the correct order as they appear in the menu.
diff --git a/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc b/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc index 1fe2faaf..78db881 100644 --- a/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc +++ b/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc
@@ -360,8 +360,7 @@ TabStripModel* tab_strip_model, const TabStripModelChange& change, const TabStripSelectionChange& selection) { - if (change.type() != TabStripModelChange::kSelectionOnly || - !selection.active_tab_changed()) { + if (!selection.active_tab_changed()) { return; } // Handle removing the previous tab's contextual registry if one exists and
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc index 96538e0..d6bd1da 100644 --- a/chrome/browser/ui/views/webid/account_selection_bubble_view.cc +++ b/chrome/browser/ui/views/webid/account_selection_bubble_view.cc
@@ -154,14 +154,13 @@ const std::u16string& title) { auto header = std::make_unique<views::View>(); header->SetLayoutManager(std::make_unique<views::FlexLayout>()) - ->SetInteriorMargin(gfx::Insets::VH(kVerticalSpacing, 0)); + ->SetInteriorMargin(gfx::Insets::VH(kVerticalSpacing, kLeftRightPadding)); // Add the icon. auto image_view = std::make_unique<views::ImageView>(); image_view->SetImage(icon); - image_view->SetProperty( - views::kMarginsKey, - gfx::Insets::VH(/*vertical=*/0, /*horizontal=*/kLeftRightPadding)); + image_view->SetProperty(views::kMarginsKey, + gfx::Insets().set_right(kLeftRightPadding)); header->AddChildView(image_view.release()); // Add the title. @@ -183,8 +182,6 @@ base::BindRepeating(&AccountSelectionBubbleView::CloseBubble, weak_ptr_factory_.GetWeakPtr())); close_button->SetVisible(true); - close_button->SetProperty(views::kMarginsKey, - gfx::Insets().set_right(kLeftRightPadding)); header->AddChildView(close_button.release()); return header; }
diff --git a/chrome/browser/ui/webui/chromeos/account_manager/account_migration_welcome_ui.cc b/chrome/browser/ui/webui/chromeos/account_manager/account_migration_welcome_ui.cc index d3e6da0..34bdd928 100644 --- a/chrome/browser/ui/webui/chromeos/account_manager/account_migration_welcome_ui.cc +++ b/chrome/browser/ui/webui/chromeos/account_manager/account_migration_welcome_ui.cc
@@ -67,7 +67,7 @@ ->ShowReauthAccountDialog( account_manager::AccountManagerFacade::AccountAdditionSource:: kAccountManagerMigrationWelcomeScreen, - account_email); + account_email, base::OnceClosure()); HandleCloseDialog(args); }
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc index ba77fe5..e9cb505 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
@@ -46,10 +46,7 @@ set_user_acted_method_path_deprecated("login.UpdateScreen.userActed"); } -UpdateScreenHandler::~UpdateScreenHandler() { - if (screen_) - screen_->OnViewDestroyed(this); -} +UpdateScreenHandler::~UpdateScreenHandler() = default; void UpdateScreenHandler::Show(bool is_opt_out_enabled) { base::Value::Dict data; @@ -60,12 +57,10 @@ void UpdateScreenHandler::Hide() {} void UpdateScreenHandler::Bind(UpdateScreen* screen) { - screen_ = screen; - BaseScreenHandler::SetBaseScreenDeprecated(screen_); + BaseScreenHandler::SetBaseScreenDeprecated(screen); } void UpdateScreenHandler::Unbind() { - screen_ = nullptr; BaseScreenHandler::SetBaseScreenDeprecated(nullptr); }
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h index 74dd055..d6e60bc9 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/weak_ptr.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" @@ -19,7 +20,7 @@ // Interface for dependency injection between WelcomeScreen and its actual // representation. Owned by UpdateScreen. -class UpdateView { +class UpdateView : public base::SupportsWeakPtr<UpdateView> { public: // The screen name must never change. It's stored into local state as a // pending screen during OOBE update. So the value should be the same between @@ -90,8 +91,6 @@ // BaseScreenHandler: void DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) override; - - ash::UpdateScreen* screen_ = nullptr; }; } // namespace chromeos
diff --git a/chrome/browser/ui/webui/conflicts/conflicts_data_fetcher.cc b/chrome/browser/ui/webui/conflicts/conflicts_data_fetcher.cc index 51551f9f..bb88e43 100644 --- a/chrome/browser/ui/webui/conflicts/conflicts_data_fetcher.cc +++ b/chrome/browser/ui/webui/conflicts/conflicts_data_fetcher.cc
@@ -433,9 +433,9 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(module_list_); - auto data = std::make_unique<base::DictionaryValue>(); + base::Value::Dict data; - data->SetStringKey("third_party_module_status", std::string()); + data.Set("third_party_module_status", std::string()); #if BUILDFLAG(GOOGLE_CHROME_BRANDING) if (ModuleDatabase::GetInstance()->third_party_conflicts_manager()) { auto* incompatible_applications_updater = @@ -447,7 +447,7 @@ ->third_party_conflicts_manager() ->module_blocklist_cache_updater(); - data->SetStringKey( + data.Set( "third_party_module_status", GetModuleStatusString(module_key, incompatible_applications_updater, module_blocklist_cache_updater)); @@ -457,20 +457,19 @@ std::string type_string; if (module_data.module_properties & ModuleInfoData::kPropertyShellExtension) type_string = "Shell extension"; - data->SetStringKey("type_description", type_string); + data.Set("type_description", type_string); const auto& inspection_result = *module_data.inspection_result; - data->SetStringKey("location", inspection_result.location); - data->SetStringKey("name", inspection_result.basename); - data->SetStringKey("product_name", inspection_result.product_name); - data->SetStringKey("description", inspection_result.description); - data->SetStringKey("version", inspection_result.version); - data->SetStringKey("digital_signer", - inspection_result.certificate_info.subject); - data->SetStringKey("code_id", GenerateCodeId(module_key)); - data->SetStringKey("process_types", GetProcessTypesString(module_data)); + data.Set("location", inspection_result.location); + data.Set("name", inspection_result.basename); + data.Set("product_name", inspection_result.product_name); + data.Set("description", inspection_result.description); + data.Set("version", inspection_result.version); + data.Set("digital_signer", inspection_result.certificate_info.subject); + data.Set("code_id", GenerateCodeId(module_key)); + data.Set("process_types", GetProcessTypesString(module_data)); - module_list_->Append(std::move(data)); + module_list_->GetList().Append(std::move(data)); } void ConflictsDataFetcher::OnModuleDatabaseIdle() { @@ -480,8 +479,7 @@ ModuleDatabase::GetInstance()->RemoveObserver(this); base::DictionaryValue results; - results.GetDict().Set("moduleCount", - int(module_list_->GetListDeprecated().size())); + results.GetDict().Set("moduleCount", int(module_list_->GetList().size())); results.Set("moduleList", std::move(module_list_)); #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
diff --git a/chrome/browser/ui/webui/download_shelf/download_mojom_traits.h b/chrome/browser/ui/webui/download_shelf/download_mojom_traits.h index 826f864..44674f6 100644 --- a/chrome/browser/ui/webui/download_shelf/download_mojom_traits.h +++ b/chrome/browser/ui/webui/download_shelf/download_mojom_traits.h
@@ -164,8 +164,6 @@ return MojoDownloadMode::kMixedContentWarn; case DownloadMode::kDeepScanning: return MojoDownloadMode::kDeepScanning; - case DownloadMode::kIncognitoWarning: - return MojoDownloadMode::kIncognitoWarning; } NOTREACHED(); return MojoDownloadMode::kNormal; @@ -191,9 +189,6 @@ case MojoDownloadMode::kDeepScanning: *out = DownloadMode::kDeepScanning; return true; - case MojoDownloadMode::kIncognitoWarning: - *out = DownloadMode::kIncognitoWarning; - return true; } NOTREACHED(); return false;
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom index c83676ff..aa090b0 100644 --- a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom +++ b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
@@ -94,8 +94,6 @@ kMixedContentBlock, // Displaying in-progress deep scanning information. kDeepScanning, - // Displaying Incognito warning. - kIncognitoWarning, }; // Mixed content details associated with a given download item. Maps to
diff --git a/chrome/browser/ui/webui/downloads/downloads.mojom b/chrome/browser/ui/webui/downloads/downloads.mojom index 8e94a08..873cdbd 100644 --- a/chrome/browser/ui/webui/downloads/downloads.mojom +++ b/chrome/browser/ui/webui/downloads/downloads.mojom
@@ -10,7 +10,6 @@ bool file_externally_removed; bool is_dangerous; bool is_mixed_content; - bool should_show_incognito_warning; // |otr| stands for off-the-record and is true when a download entry is // created during an incognito or guest profile session. bool otr; @@ -50,7 +49,6 @@ OpenFileRequiringGesture(string id); Drag(string id); SaveDangerousRequiringGesture(string id); - AcceptIncognitoWarning(string id); DiscardDangerous(string id); RetryDownload(string id); Show(string id);
diff --git a/chrome/browser/ui/webui/downloads/downloads_dom_handler.cc b/chrome/browser/ui/webui/downloads/downloads_dom_handler.cc index d2881bb..ddff291a 100644 --- a/chrome/browser/ui/webui/downloads/downloads_dom_handler.cc +++ b/chrome/browser/ui/webui/downloads/downloads_dom_handler.cc
@@ -177,12 +177,6 @@ ShowDangerPrompt(file); } -void DownloadsDOMHandler::AcceptIncognitoWarning(const std::string& id) { - download::DownloadItem* file = GetDownloadByStringId(id); - if (file) - file->AcceptIncognitoWarning(); -} - void DownloadsDOMHandler::DiscardDangerous(const std::string& id) { CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_DISCARD_DANGEROUS); RemoveDownloadInArgs(id);
diff --git a/chrome/browser/ui/webui/downloads/downloads_dom_handler.h b/chrome/browser/ui/webui/downloads/downloads_dom_handler.h index 78aea9d..ab2cfa64 100644 --- a/chrome/browser/ui/webui/downloads/downloads_dom_handler.h +++ b/chrome/browser/ui/webui/downloads/downloads_dom_handler.h
@@ -56,7 +56,6 @@ void OpenFileRequiringGesture(const std::string& id) override; void Drag(const std::string& id) override; void SaveDangerousRequiringGesture(const std::string& id) override; - void AcceptIncognitoWarning(const std::string& id) override; void DiscardDangerous(const std::string& id) override; void RetryDownload(const std::string& id) override; void Show(const std::string& id) override;
diff --git a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc index eb558a4..ab3b0ce 100644 --- a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc +++ b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
@@ -283,8 +283,6 @@ case download::DownloadItem::IN_PROGRESS: { if (download_item->IsDangerous()) { state = "DANGEROUS"; - } else if (download_item->ShouldShowIncognitoWarning()) { - state = "INCOGNITO_WARNING"; } else if (download_item->IsMixedContent()) { state = "MIXED_CONTENT"; } else if (download_item->GetDangerType() == @@ -338,8 +336,6 @@ file_value->danger_type = danger_type; file_value->is_dangerous = download_item->IsDangerous(); file_value->is_mixed_content = download_item->IsMixedContent(); - file_value->should_show_incognito_warning = - download_item->ShouldShowIncognitoWarning(); file_value->last_reason_text = base::UTF16ToUTF8(last_reason_text); file_value->percent = percent; file_value->progress_status_text = base::UTF16ToUTF8(progress_status_text);
diff --git a/chrome/browser/ui/webui/downloads/downloads_ui.cc b/chrome/browser/ui/webui/downloads/downloads_ui.cc index b27caab..02802db 100644 --- a/chrome/browser/ui/webui/downloads/downloads_ui.cc +++ b/chrome/browser/ui/webui/downloads/downloads_ui.cc
@@ -119,7 +119,7 @@ {"toastClearedAll", IDS_DOWNLOAD_TOAST_CLEARED_ALL}, {"toastRemovedFromList", IDS_DOWNLOAD_TOAST_REMOVED_FROM_LIST}, {"undo", IDS_DOWNLOAD_UNDO}, - {"downloadAnyway", IDS_DOWNLOAD_ANYWAY}}; + }; source->AddLocalizedStrings(kStrings); source->AddLocalizedString("dangerDownloadDesc", @@ -133,8 +133,6 @@ IDS_BLOCK_REASON_UNWANTED_DOWNLOAD); source->AddLocalizedString("mixedContentDownloadDesc", IDS_BLOCK_REASON_MIXED_CONTENT); - source->AddLocalizedString("incognitoDownloadsWarningDesc", - IDS_INCOGNITO_DOWNLOAD_WARNING); source->AddLocalizedString("asyncScanningDownloadDesc", IDS_BLOCK_REASON_DEEP_SCANNING); source->AddLocalizedString("accountCompromiseDownloadDesc",
diff --git a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.cc b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.cc index 5062a50..fa2f8b1 100644 --- a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.cc +++ b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.cc
@@ -71,6 +71,10 @@ std::move(callback))); } +bool MetricsReporter::HasLocalMark(const std::string& name) { + return marks_.count(name) > 0; +} + void MetricsReporter::ClearMark(const std::string& name) { marks_.erase(name); page_->OnClearMark(name);
diff --git a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.h b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.h index bf10e4d7..46f237f 100644 --- a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.h +++ b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter.h
@@ -28,13 +28,14 @@ using MeasureCallback = base::OnceCallback<void(base::TimeDelta delta)>; using HasMarkCallback = base::OnceCallback<void(bool)>; - void Mark(const std::string& name); - void Measure(const std::string& start_mark, MeasureCallback callback); - void Measure(const std::string& start_mark, - const std::string& end_mark, - MeasureCallback callback); - void HasMark(const std::string& name, HasMarkCallback callback); - void ClearMark(const std::string& name); + virtual void Mark(const std::string& name); + virtual void Measure(const std::string& start_mark, MeasureCallback callback); + virtual void Measure(const std::string& start_mark, + const std::string& end_mark, + MeasureCallback callback); + virtual void HasMark(const std::string& name, HasMarkCallback callback); + virtual bool HasLocalMark(const std::string& name); + virtual void ClearMark(const std::string& name); void BindInterface( mojo::PendingReceiver<metrics_reporter::mojom::PageMetricsHost> receiver);
diff --git a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter_unittest.cc b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter_unittest.cc index f378cae7..3ad396a 100644 --- a/chrome/browser/ui/webui/metrics_reporter/metrics_reporter_unittest.cc +++ b/chrome/browser/ui/webui/metrics_reporter/metrics_reporter_unittest.cc
@@ -130,6 +130,20 @@ metrics_reporter_.HasMark("remote_mark", TestHasMarkCallback(true)); } +// HasLocalMark() should check only local marks. +TEST_F(WebUIMetricsReporterTest, HasLocalMark) { + EXPECT_FALSE(metrics_reporter_.HasLocalMark("local_mark")); + metrics_reporter_.Mark("local_mark"); + EXPECT_TRUE(metrics_reporter_.HasLocalMark("local_mark")); + + ON_CALL(page_metrics_, OnGetMark("remote_mark", _)) + .WillByDefault([](const std::string& mark, + MetricsReporter::OnGetMarkCallback callback) { + std::move(callback).Run(base::TimeTicks::Now().since_origin()); + }); + EXPECT_FALSE(metrics_reporter_.HasLocalMark("remote_mark")); +} + // ClearMark() should clear both local and remote marks. TEST_F(WebUIMetricsReporterTest, ClearMark) { EXPECT_CALL(page_metrics_, OnClearMark("remote_mark")).Times(1);
diff --git a/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.cc b/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.cc new file mode 100644 index 0000000..48ec252 --- /dev/null +++ b/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.cc
@@ -0,0 +1,9 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.h" + +MockMetricsReporter::MockMetricsReporter() = default; + +MockMetricsReporter::~MockMetricsReporter() = default;
diff --git a/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.h b/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.h new file mode 100644 index 0000000..e20f1d3 --- /dev/null +++ b/chrome/browser/ui/webui/metrics_reporter/mock_metrics_reporter.h
@@ -0,0 +1,30 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_WEBUI_METRICS_REPORTER_MOCK_METRICS_REPORTER_H_ +#define CHROME_BROWSER_UI_WEBUI_METRICS_REPORTER_MOCK_METRICS_REPORTER_H_ + +#include "chrome/browser/ui/webui/metrics_reporter/metrics_reporter.h" + +#include "testing/gmock/include/gmock/gmock.h" + +class MockMetricsReporter : public MetricsReporter { + public: + MockMetricsReporter(); + ~MockMetricsReporter() override; + + MOCK_METHOD1(Mark, void(const std::string&)); + MOCK_METHOD2(Measure, + void(const std::string&, MetricsReporter::MeasureCallback)); + MOCK_METHOD3(Measure, + void(const std::string&, + const std::string&, + MetricsReporter::MeasureCallback)); + MOCK_METHOD2(HasMark, + void(const std::string&, MetricsReporter::HasMarkCallback)); + MOCK_METHOD1(HasLocalMark, bool(const std::string&)); + MOCK_METHOD1(ClearMark, void(const std::string&)); +}; + +#endif // CHROME_BROWSER_UI_WEBUI_METRICS_REPORTER_MOCK_METRICS_REPORTER_H_
diff --git a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc index 4c26ceb..403b1f65 100644 --- a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc
@@ -414,7 +414,7 @@ ->ShowReauthAccountDialog( account_manager::AccountManagerFacade::AccountAdditionSource:: kSettingsReauthAccountButton, - account_email); + account_email, base::OnceClosure()); } void AccountManagerUIHandler::HandleMigrateAccount(
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index fd42ef9..a98f748 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1652248601-6c7649e11a4188ef71eb9515493eedf790075a7a.profdata +chrome-linux-main-1652269806-70ba31ee48b8a53593f704b3174c3b1cc51360b9.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 58c1427e..22084d99 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1652248601-7d5b53262b0458bfe36360a4ac691f81b054b0d9.profdata +chrome-mac-arm-main-1652269806-483aeb805a4a3dd692cf6c5b420efcfdc5595bbd.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index b40ed3b..599768c 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1652248601-c82c003d327a1a867a1b72fc302fc19e1b81ec98.profdata +chrome-mac-main-1652269806-a9422fa24b4f4debb0fbaa8278d186efb9d4f936.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 24f02cc..4e66c63 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1652248601-f5be7624dc8d1c44f5ae31d3c8656c2b17c1d738.profdata +chrome-win32-main-1652269806-c775896d86e82f4519f8f40d3b56cb63eb230464.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 4ee07b2..59204c5 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1652248601-b52b4da93ba156586a2b6a1039248e7ad9d02b4a.profdata +chrome-win64-main-1652269806-4d3146697929c887bfda350facd82334703fe632.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 56bd6e8..979b5a9 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -626,6 +626,10 @@ "IncognitoBrandConsistencyForAndroid", base::FEATURE_DISABLED_BY_DEFAULT}; #endif +// When enabled, users will see a warning when downloading from Incognito. +const base::Feature kIncognitoDownloadsWarning{ + "IncognitoDownloadsWarning", base::FEATURE_DISABLED_BY_DEFAULT}; + // When enabled, users will see updated UI in Incognito NTP const base::Feature kIncognitoNtpRevamp{"IncognitoNtpRevamp", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -660,21 +664,6 @@ #endif #if BUILDFLAG(IS_MAC) -// Uses NSWindowStyleMaskFullSizeContentView where available instead of adding -// our own views to the window frame. This is a temporary kill switch, it can be -// removed once we feel okay about leaving it on. -const base::Feature kMacFullSizeContentView{"MacFullSizeContentView", - base::FEATURE_ENABLED_BY_DEFAULT}; - -#endif - -#if BUILDFLAG(IS_MAC) -// Enables the Material Design download shelf on Mac. -const base::Feature kMacMaterialDesignDownloadShelf{ - "MacMDDownloadShelf", base::FEATURE_ENABLED_BY_DEFAULT}; -#endif - -#if BUILDFLAG(IS_MAC) // Enable screen capture system permission check on Mac 10.15+. const base::Feature kMacSystemScreenCapturePermissionCheck{ "MacSystemScreenCapturePermissionCheck", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index bc467d9..c200d19 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -440,6 +440,9 @@ #endif COMPONENT_EXPORT(CHROME_FEATURES) +extern const base::Feature kIncognitoDownloadsWarning; + +COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kIncognitoNtpRevamp; COMPONENT_EXPORT(CHROME_FEATURES) @@ -467,16 +470,6 @@ #if BUILDFLAG(IS_MAC) COMPONENT_EXPORT(CHROME_FEATURES) -extern const base::Feature kMacFullSizeContentView; -#endif - -#if BUILDFLAG(IS_MAC) -COMPONENT_EXPORT(CHROME_FEATURES) -extern const base::Feature kMacMaterialDesignDownloadShelf; -#endif - -#if BUILDFLAG(IS_MAC) -COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kMacSystemScreenCapturePermissionCheck; #endif
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index e41103d..8d0699a 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -1721,6 +1721,13 @@ "managed.web_hid_allow_devices_with_hid_usages_for_urls"; #endif // !BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) +// Boolean indicating whether the user has given consent to use Autofill +// Assistant. Prefs are not synced across devices or platforms and pref +// keys differ. +const char kAutofillAssistantOnDesktopEnabled[] = "autofill_assistant.enabled"; +#endif // !BUILDFLAG(IS_ANDROID) + // Directory of the last profile used. const char kProfileLastUsed[] = "profile.last_used";
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 951ccc54..46199d3 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -561,6 +561,10 @@ extern const char kManagedWebHidAllowDevicesWithHidUsagesForUrls[]; #endif // !BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) +extern const char kAutofillAssistantOnDesktopEnabled[]; +#endif // !BUILDFLAG(IS_ANDROID) + extern const char kProfileLastUsed[]; extern const char kProfilesLastActive[]; extern const char kProfilesNumCreated[];
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc index eeaa98e..b87def5 100644 --- a/chrome/installer/setup/install_worker.cc +++ b/chrome/installer/setup/install_worker.cc
@@ -358,6 +358,38 @@ cmd.AddWorkItems(root_key, cmd_key, install_list); } +// Adds work items to add the "delete-dmtoken" command to Chrome's version key. +// This method is a no-op if this is anything other than system-level Chrome. +// The command is used when unenrolling Chrome browser instances from enterprise +// management. +void AddEnterpriseUnenrollmentWorkItems(const InstallerState& installer_state, + const base::FilePath& setup_path, + const base::Version& new_version, + WorkItemList* install_list) { + if (!installer_state.system_install()) + return; + + const HKEY root_key = installer_state.root_key(); + const std::wstring cmd_key(GetCommandKey(kCmdDeleteDMToken)); + + // Register a command to allow Chrome to request Google Update to run + // setup.exe --delete-dmtoken, which will delete any existing DMToken from the + // registry. + base::CommandLine cmd_line(installer_state.GetInstallerDirectory(new_version) + .Append(setup_path.BaseName())); + cmd_line.AppendSwitch(switches::kDeleteDMToken); + cmd_line.AppendSwitch(switches::kSystemLevel); + cmd_line.AppendSwitch(switches::kVerboseLogging); + InstallUtil::AppendModeAndChannelSwitches(&cmd_line); + AppCommand cmd(cmd_line.GetCommandLineString()); + + // TODO(rogerta): For now setting this command as web accessible is required + // by Google Update. Could revisit this should Google Update change the + // way permissions are handled for commands. + cmd.set_is_web_accessible(true); + cmd.AddWorkItems(root_key, cmd_key, install_list); +} + // Adds work items to add the "rotate-dtkey" command to Chrome's version key. // This method is a no-op if this is anything other than system-level Chrome. // The command is used to rotate the device signing key stored in HKLM. @@ -809,6 +841,8 @@ #if BUILDFLAG(GOOGLE_CHROME_BRANDING) AddEnterpriseEnrollmentWorkItems(installer_state, setup_path, new_version, install_list); + AddEnterpriseUnenrollmentWorkItems(installer_state, setup_path, new_version, + install_list); AddEnterpriseDeviceTrustWorkItems(installer_state, setup_path, new_version, install_list); #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc index ed41241..6297a4e 100644 --- a/chrome/installer/setup/setup_main.cc +++ b/chrome/installer/setup/setup_main.cc
@@ -1174,6 +1174,10 @@ *exit_code = token && installer::StoreDMToken(*token) ? installer::STORE_DMTOKEN_SUCCESS : installer::STORE_DMTOKEN_FAILED; + } else if (cmd_line.HasSwitch(installer::switches::kDeleteDMToken)) { + // Delete any existing DMToken from the registry. + *exit_code = installer::DeleteDMToken() ? installer::DELETE_DMTOKEN_SUCCESS + : installer::DELETE_DMTOKEN_FAILED; } else if (cmd_line.HasSwitch(installer::switches::kRotateDeviceTrustKey)) { // The value of the command line arguments is a DM token. This is used // to send the public part of the signing key to DM server.
diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc index 715d34d..857125d 100644 --- a/chrome/installer/setup/setup_util.cc +++ b/chrome/installer/setup/setup_util.cc
@@ -748,6 +748,52 @@ return true; } +bool DeleteDMToken() { + DCHECK(install_static::IsSystemInstall()); + + // Delete the token from both the app-neutral and browser-specific locations. + // Only the former is mandatory -- the latter is best-effort. + for (const auto& is_browser_location : {InstallUtil::BrowserLocation(false), + InstallUtil::BrowserLocation(true)}) { + auto [key_path, value_name] = + InstallUtil::GetCloudManagementDmTokenPath(is_browser_location); + REGSAM wow_access = is_browser_location ? KEY_WOW64_64KEY : KEY_WOW64_32KEY; + + base::win::RegKey key; + auto result = key.Open(HKEY_LOCAL_MACHINE, key_path.c_str(), + KEY_SET_VALUE | wow_access); + if (result == ERROR_FILE_NOT_FOUND) { + // The registry key which stores the DMToken value was not found, so + // deletion is not necessary. + continue; + } + if (result != ERROR_SUCCESS) { + ::SetLastError(result); + PLOG(ERROR) << "Failed to open registry key HKLM\\" << key_path + << " for deletion"; + // If the key couldn't be opened for the mandatory location, return + // failure immediately. Otherwise, continue iterating. + if (!is_browser_location) + return false; + continue; + } + + if (!DeleteRegistryValue(key.Handle(), std::wstring(), wow_access, + value_name)) { + if (!is_browser_location) + return false; // Logging already performed in `DeleteRegistryValue()`. + continue; + } // Else ignore the failure to write to the best-effort location. + + // Delete the key if no other values are present. + base::win::RegKey(HKEY_LOCAL_MACHINE, L"", KEY_QUERY_VALUE | wow_access) + .DeleteEmptyKey(key_path.c_str()); + } + + VLOG(1) << "Successfully deleted DMToken from the registry."; + return true; +} + bool RotateDeviceTrustKey( std::unique_ptr<enterprise_connectors::KeyRotationManager> key_rotation_manager,
diff --git a/chrome/installer/setup/setup_util.h b/chrome/installer/setup/setup_util.h index 3d06dba9..3c3190ba 100644 --- a/chrome/installer/setup/setup_util.h +++ b/chrome/installer/setup/setup_util.h
@@ -160,6 +160,9 @@ // install modes of the browser (i.e., stable and all three side-by-side modes). bool StoreDMToken(const std::string& token); +// Deletes any existing DMToken from the global location on the machine. +bool DeleteDMToken(); + // Rotates the device trust signing key and saves it to a global location on // the machine accessible to all install modes of the browser (i.e., stable and // all three side-by-side modes).
diff --git a/chrome/installer/setup/setup_util_unittest.cc b/chrome/installer/setup/setup_util_unittest.cc index 1fdb1b4..344e11ce 100644 --- a/chrome/installer/setup/setup_util_unittest.cc +++ b/chrome/installer/setup/setup_util_unittest.cc
@@ -617,6 +617,128 @@ EXPECT_FALSE(installer::StoreDMToken(token_too_large)); } +TEST(SetupUtilTest, DeleteDMTokenFromRegistrySuccess) { + install_static::ScopedInstallDetails scoped_install_details(true); + registry_util::RegistryOverrideManager registry_override_manager; + registry_override_manager.OverrideRegistry(HKEY_LOCAL_MACHINE); + + // Store the DMToken and confirm that it can be found in the registry. + static constexpr char kTokenData[] = "tokens are \0 binary data"; + static constexpr DWORD kExpectedSize = sizeof(kTokenData) - 1; + std::string token(&kTokenData[0], kExpectedSize); + ASSERT_TRUE(installer::StoreDMToken(token)); + + auto [key, name] = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_TRUE(key.Valid()); + ASSERT_TRUE(key.HasValue(name.c_str())); + DWORD size = kExpectedSize; + std::vector<char> raw_value(size); + DWORD dtype; + ASSERT_EQ(ERROR_SUCCESS, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_TRUE(key.Valid()); + ASSERT_TRUE(key.HasValue(name.c_str())); + ASSERT_EQ(ERROR_SUCCESS, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); + + // Delete the DMToken from registry and confirm that the corresponding value + // can no longer be found. Since no other values were stored in the key, the + // key is also deleted. + ASSERT_TRUE(installer::DeleteDMToken()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_FALSE(key.Valid()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_FALSE(key.Valid()); +} + +TEST(SetupUtilTest, DeleteDMTokenFromRegistryWhenValueNotFound) { + install_static::ScopedInstallDetails scoped_install_details(true); + registry_util::RegistryOverrideManager registry_override_manager; + registry_override_manager.OverrideRegistry(HKEY_LOCAL_MACHINE); + + // Store an unrelated value in the registry. + auto [key, name] = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(false), InstallUtil::BrowserLocation(false)); + ASSERT_TRUE(key.Valid()); + auto result = key.WriteValue(L"unrelated_value", L"unrelated_data"); + ASSERT_EQ(ERROR_SUCCESS, result); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(false), InstallUtil::BrowserLocation(true)); + ASSERT_TRUE(key.Valid()); + result = key.WriteValue(L"unrelated_value", L"unrelated_data"); + ASSERT_EQ(ERROR_SUCCESS, result); + + // Validate that the DMToken value is not found in the registry. + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_TRUE(key.Valid()); + ASSERT_FALSE(key.HasValue(name.c_str())); + DWORD size = 0; + std::vector<char> raw_value(size); + DWORD dtype; + ASSERT_EQ(ERROR_FILE_NOT_FOUND, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_TRUE(key.Valid()); + ASSERT_FALSE(key.HasValue(name.c_str())); + ASSERT_EQ(ERROR_FILE_NOT_FOUND, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); + + // DMToken deletion is treated as successful if the value is not found. + ASSERT_TRUE(installer::DeleteDMToken()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_TRUE(key.Valid()); + ASSERT_FALSE(key.HasValue(name.c_str())); + ASSERT_EQ(ERROR_FILE_NOT_FOUND, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_TRUE(key.Valid()); + ASSERT_FALSE(key.HasValue(name.c_str())); + ASSERT_EQ(ERROR_FILE_NOT_FOUND, + key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); +} + +TEST(SetupUtilTest, DeleteDMTokenFromRegistryWhenKeyNotFound) { + install_static::ScopedInstallDetails scoped_install_details(true); + registry_util::RegistryOverrideManager registry_override_manager; + registry_override_manager.OverrideRegistry(HKEY_LOCAL_MACHINE); + + // Validate that the key is not found in the registry. + auto [key, name] = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_FALSE(key.Valid()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_FALSE(key.Valid()); + + // DMToken deletion is treated as successful if the key is not found. + ASSERT_TRUE(installer::DeleteDMToken()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(false)); + ASSERT_FALSE(key.Valid()); + + std::tie(key, name) = InstallUtil::GetCloudManagementDmTokenLocation( + InstallUtil::ReadOnly(true), InstallUtil::BrowserLocation(true)); + ASSERT_FALSE(key.Valid()); +} + TEST(SetupUtilTest, RotateDTKeySuccess) { base::test::TaskEnvironment task_environment; install_static::ScopedInstallDetails scoped_install_details(true);
diff --git a/chrome/installer/util/install_util.cc b/chrome/installer/util/install_util.cc index 3191e8e..8a05f816 100644 --- a/chrome/installer/util/install_util.cc +++ b/chrome/installer/util/install_util.cc
@@ -434,24 +434,30 @@ } // static -std::pair<base::win::RegKey, std::wstring> -InstallUtil::GetCloudManagementDmTokenLocation( - ReadOnly read_only, - BrowserLocation browser_location) { - // The location dictates the path and WoW bit. - REGSAM wow_access = 0; - std::wstring key_path(L"SOFTWARE\\"); +std::pair<std::wstring, std::wstring> +InstallUtil::GetCloudManagementDmTokenPath(BrowserLocation browser_location) { + std::wstring key_path = L"SOFTWARE\\"; if (browser_location) { - wow_access |= KEY_WOW64_64KEY; install_static::AppendChromeInstallSubDirectory( install_static::InstallDetails::Get().mode(), /*include_suffix=*/false, &key_path); } else { - wow_access |= KEY_WOW64_32KEY; key_path.append(install_static::kCompanyPathName); } key_path.append(L"\\Enrollment"); + return {key_path, L"dmtoken"}; +} + +// static +std::pair<base::win::RegKey, std::wstring> +InstallUtil::GetCloudManagementDmTokenLocation( + ReadOnly read_only, + BrowserLocation browser_location) { + // The location dictates the WoW bit. + REGSAM wow_access = browser_location ? KEY_WOW64_64KEY : KEY_WOW64_32KEY; + auto [key_path, value_name] = GetCloudManagementDmTokenPath(browser_location); + base::win::RegKey key; if (read_only) { key.Open(HKEY_LOCAL_MACHINE, key_path.c_str(), @@ -466,7 +472,7 @@ } } - return {std::move(key), L"dmtoken"}; + return {std::move(key), value_name}; } // static
diff --git a/chrome/installer/util/install_util.h b/chrome/installer/util/install_util.h index 86cb5e6..a0c3675 100644 --- a/chrome/installer/util/install_util.h +++ b/chrome/installer/util/install_util.h
@@ -121,6 +121,12 @@ using ReadOnly = base::StrongAlias<class ReadOnlyTag, bool>; using BrowserLocation = base::StrongAlias<class BrowserLocationTag, bool>; + // Returns the path where the cloud management DMToken should be read/written. + // |browser_location| indicates whether the legacy browser-specific path is + // returned rather than the app-neutral path. + static std::pair<std::wstring, std::wstring> GetCloudManagementDmTokenPath( + BrowserLocation browser_location); + // Returns the registry key and value name from/to which a cloud management DM // token may be read/written. |read_only| indicates whether they key is opened // for reading the value or writing it. |browser_location| indicates whether
diff --git a/chrome/installer/util/util_constants.cc b/chrome/installer/util/util_constants.cc index a05091fd..8e553ed2 100644 --- a/chrome/installer/util/util_constants.cc +++ b/chrome/installer/util/util_constants.cc
@@ -33,6 +33,9 @@ // in-use Chrome should be restarted ASAP. const char kCriticalUpdateVersion[] = "critical-update-version"; +// Deletes any existing DMToken from the registry. +const char kDeleteDMToken[] = "delete-dmtoken"; + // Delete files that belong to old versions of Chrome from the install // directory. const char kDeleteOldVersions[] = "delete-old-versions"; @@ -223,6 +226,7 @@ const wchar_t kCmdOnOsUpgrade[] = L"on-os-upgrade"; const wchar_t kCmdRotateDeviceTrustKey[] = L"rotate-dtkey"; const wchar_t kCmdStoreDMToken[] = L"store-dmtoken"; +const wchar_t kCmdDeleteDMToken[] = L"delete-dmtoken"; const wchar_t kEulaSentinelFile[] = L"EULA Accepted"; const wchar_t kInstallBinaryDir[] = L"Application"; const wchar_t kInstallerDir[] = L"Installer";
diff --git a/chrome/installer/util/util_constants.h b/chrome/installer/util/util_constants.h index ca8bbe4..1ae783d 100644 --- a/chrome/installer/util/util_constants.h +++ b/chrome/installer/util/util_constants.h
@@ -120,7 +120,10 @@ ROTATE_DTKEY_FAILED = 71, // Failed to rotate device trust signing key. ROTATE_DTKEY_SUCCESS = 72, // Successfully rotated device trust signing key. CREATE_SHORTCUTS_SUCCESS = 73, // Successfully created Chrome shortcuts. - MAX_INSTALL_STATUS = 74, // When adding a new result, bump this and update + DELETE_DMTOKEN_FAILED = 74, // Failed to delete DMToken from the registry. + DELETE_DMTOKEN_SUCCESS = 75, // Successfully deleted DMToken from the + // registry. + MAX_INSTALL_STATUS = 76, // When adding a new result, bump this and update // the SetupInstallResult enum in enums.xml. }; @@ -161,6 +164,7 @@ extern const char kConfigureUserSettings[]; extern const char kCreateShortcuts[]; extern const char kCriticalUpdateVersion[]; +extern const char kDeleteDMToken[]; extern const char kDeleteOldVersions[]; extern const char kDeleteProfile[]; extern const char kDisableLogging[]; @@ -223,6 +227,7 @@ extern const wchar_t kCmdOnOsUpgrade[]; extern const wchar_t kCmdRotateDeviceTrustKey[]; extern const wchar_t kCmdStoreDMToken[]; +extern const wchar_t kCmdDeleteDMToken[]; extern const wchar_t kEulaSentinelFile[]; extern const wchar_t kInstallBinaryDir[]; extern const wchar_t kInstallerDir[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 7866754..8dacd2ac 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -6605,6 +6605,8 @@ "../browser/ui/webui/managed_ui_handler_unittest.cc", "../browser/ui/webui/management/management_ui_handler_unittest.cc", "../browser/ui/webui/metrics_reporter/metrics_reporter_unittest.cc", + "../browser/ui/webui/metrics_reporter/mock_metrics_reporter.cc", + "../browser/ui/webui/metrics_reporter/mock_metrics_reporter.h", "../browser/ui/webui/new_tab_page/new_tab_page_handler_unittest.cc", "../browser/ui/webui/privacy_sandbox/privacy_sandbox_dialog_handler_unittest.cc", "../browser/ui/webui/sanitized_image_source_unittest.cc",
diff --git a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml index 94d98d6f..0eef65de 100644 --- a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml +++ b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
@@ -10,7 +10,7 @@ <application> <activity android:name="org.chromium.chrome.browser.browserservices.ActivityWithDeepLink" android:exported="true"> - <intent-filter> + <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/>
diff --git a/chrome/test/android/test_trusted_web_activity/src/org/chromium/chrome/browser/browserservices/TestTrustedWebActivityService.java b/chrome/test/android/test_trusted_web_activity/src/org/chromium/chrome/browser/browserservices/TestTrustedWebActivityService.java index 75f99d0807..11715998 100644 --- a/chrome/test/android/test_trusted_web_activity/src/org/chromium/chrome/browser/browserservices/TestTrustedWebActivityService.java +++ b/chrome/test/android/test_trusted_web_activity/src/org/chromium/chrome/browser/browserservices/TestTrustedWebActivityService.java
@@ -67,6 +67,13 @@ } @Override + public boolean onAreNotificationsEnabled(@NonNull String channelName) { + // Pretend notifications are enabled, even on Android T where they'll be disabled by + // default. + return true; + } + + @Override public void onCancelNotification(String platformTag, int platformId) { MessengerService.sMessageHandler.recordCancelNotification(platformTag, platformId); }
diff --git a/chrome/test/data/webui/metrics_reporter/BUILD.gn b/chrome/test/data/webui/metrics_reporter/BUILD.gn index c8a453e..917d641 100644 --- a/chrome/test/data/webui/metrics_reporter/BUILD.gn +++ b/chrome/test/data/webui/metrics_reporter/BUILD.gn
@@ -17,11 +17,15 @@ ts_library("build_ts") { root_dir = "." out_dir = "$target_gen_dir/tsc" + composite = true tsconfig_base = "tsconfig_base.json" path_mappings = [ "chrome://webui-test/*|" + rebase_path("$root_gen_dir/chrome/test/data/webui/tsc/*", target_gen_dir) ] - in_files = [ "metrics_reporter_test.ts" ] + in_files = [ + "metrics_reporter_test.ts", + "mocked_metrics_reporter.ts", + ] definitions = [ "//tools/typescript/definitions/chrome_timeticks.d.ts" ] deps = [ "//ui/webui/resources/js/metrics_reporter:build_ts" ] extra_deps = [ "..:generate_definitions" ]
diff --git a/chrome/test/data/webui/metrics_reporter/metrics_reporter_test.ts b/chrome/test/data/webui/metrics_reporter/metrics_reporter_test.ts index 9958fd23..07a492ea 100644 --- a/chrome/test/data/webui/metrics_reporter/metrics_reporter_test.ts +++ b/chrome/test/data/webui/metrics_reporter/metrics_reporter_test.ts
@@ -5,7 +5,7 @@ import 'chrome://webui-test/mojo_webui_test_support.js'; import {BrowserProxyImpl} from 'chrome://resources/js/metrics_reporter/browser_proxy.js'; -import {MetricsReporter} from 'chrome://resources/js/metrics_reporter/metrics_reporter.js'; +import {MetricsReporter, MetricsReporterImpl} from 'chrome://resources/js/metrics_reporter/metrics_reporter.js'; import {PageMetricsCallbackRouter} from 'chrome://resources/js/metrics_reporter/metrics_reporter.mojom-webui.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js'; @@ -37,7 +37,7 @@ apiProxy.setResultFor('getCallbackRouter', callbackRouter); apiProxy.setResultFor('now', now); BrowserProxyImpl.setInstance(apiProxy); - metricsReporter = new MetricsReporter(); + metricsReporter = new MetricsReporterImpl(); }); test('markAndMeasureLoally', async function() { @@ -67,6 +67,12 @@ assertTrue(await metricsReporter.hasMark('mark')); }); + test('hasLocalMark', function() { + assertFalse(metricsReporter.hasLocalMark('mark')); + metricsReporter.mark('mark'); + assertTrue(metricsReporter.hasLocalMark('mark')); + }); + test('hasMarkRemote', async function() { apiProxy.setResultFor('getMark', makeMarkPromiseResult(now)); assertTrue(await metricsReporter.hasMark('mark'));
diff --git a/chrome/test/data/webui/metrics_reporter/mocked_metrics_reporter.ts b/chrome/test/data/webui/metrics_reporter/mocked_metrics_reporter.ts new file mode 100644 index 0000000..f70d214 --- /dev/null +++ b/chrome/test/data/webui/metrics_reporter/mocked_metrics_reporter.ts
@@ -0,0 +1,25 @@ +// Copyright 2022 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 {MetricsReporter} from 'chrome://resources/js/metrics_reporter/metrics_reporter.js'; + +export class MockedMetricsReporter implements MetricsReporter { + mark(_name: string): void {} + + measure(_startMark: string, _endMark?: string): Promise<bigint> { + return Promise.resolve(0n); + } + + hasMark(_name: string): Promise<boolean> { + return Promise.resolve(false); + } + + hasLocalMark(_name: string): boolean { + return false; + } + + clearMark(_name: string): void {} + + umaReportTime(_histogram: string, _time: bigint): void {} +} \ No newline at end of file
diff --git a/chrome/test/mini_installer/config/chrome_system_installed.prop b/chrome/test/mini_installer/config/chrome_system_installed.prop index 9e2a2cc..716a77c 100644 --- a/chrome/test/mini_installer/config/chrome_system_installed.prop +++ b/chrome/test/mini_installer/config/chrome_system_installed.prop
@@ -81,6 +81,21 @@ }, "wow_key": "KEY_WOW64_32KEY" }, + "HKEY_LOCAL_MACHINE\\$CHROME_UPDATE_REGISTRY_SUBKEY\\Commands\\delete-dmtoken": { + "condition": "'$CHROME_SHORT_NAME' == 'Chrome'", + "exists": "required", + "values": { + "CommandLine": { + "type": "SZ", + "data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$MINI_INSTALLER_FILE_VERSION\\Installer\\setup.exe\" --delete-dmtoken --system-level --verbose-logging" + }, + "WebAccessible": { + "type": "DWORD", + "data": 1 + } + }, + "wow_key": "KEY_WOW64_32KEY" + }, "HKEY_LOCAL_MACHINE\\$BINARIES_UPDATE_REGISTRY_SUBKEY": { "exists": "forbidden", "wow_key": "KEY_WOW64_32KEY"
diff --git a/chrome/test/mini_installer/config/previous_chrome_system_installed.prop b/chrome/test/mini_installer/config/previous_chrome_system_installed.prop index d3319b0..a4e10550 100644 --- a/chrome/test/mini_installer/config/previous_chrome_system_installed.prop +++ b/chrome/test/mini_installer/config/previous_chrome_system_installed.prop
@@ -79,6 +79,21 @@ }, "wow_key": "KEY_WOW64_32KEY" }, + "HKEY_LOCAL_MACHINE\\$CHROME_UPDATE_REGISTRY_SUBKEY\\Commands\\delete-dmtoken": { + "condition": "'$CHROME_SHORT_NAME' == 'Chrome'", + "exists": "required", + "values": { + "CommandLine": { + "type": "SZ", + "data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION\\Installer\\setup.exe\" --delete-dmtoken --system-level --verbose-logging" + }, + "WebAccessible": { + "type": "DWORD", + "data": 1 + } + }, + "wow_key": "KEY_WOW64_32KEY" + }, "HKEY_LOCAL_MACHINE\\$BINARIES_UPDATE_REGISTRY_SUBKEY": { "exists": "forbidden", "wow_key": "KEY_WOW64_32KEY"
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index db0d18c..a0b9946 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -14800.0.0 \ No newline at end of file +14803.0.0 \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index 782854bf..49e9b90 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">ቀጣይ</translation> <translation id="1204296502688602597">የዲኤንስ የሥርዓት ምላሽ ጊዜ</translation> <translation id="123124571410524056">መግቢያ ተጠርጥሯል</translation> +<translation id="1236400083787698183">እንደገና ከመጀመር በፊት መሣሪያዎን Powerwash ያድርጉ። መሣሪያዎ ክዳን ካለው ክዳኑን ከመዝጋትዎ በፊት Powerwash እስኪጠናቀቅ ይጠብቁ። Powerwash ለመጠናቀቅ አንድ ደቂቃ ያህል ሊወስድ ይችላል።</translation> <translation id="1238612778414822719">የHTTPS የስርዓተ ምላሽ ጊዜ</translation> +<translation id="1240699967155581440">Powerwash (የፋብሪካ ዳግም ማስጀመር) ያስፈልጋል</translation> <translation id="1264116747675686718">የስርዓተ ክወናውን ስሪት በማዘመን ላይ</translation> <translation id="1264369926465113395">ለፈጣሪዎች የሆነውን የChromebookን አዲሱ የዲጂታል መጽሔትን ይመልከቱ</translation> <translation id="1270369111467284986">ተያዥ መግቢያ ተጠርጥሯል</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />ብቁ ያልሆኑ ክፍለ-አካላት<ph name="LINK_END" /> ተገኝተዋል። ይህ መጫኑን ለማረጋገጥ ከመረጡ እባክዎ አሁን ያድርጉት።</translation> <translation id="2363636958541445404">የገጸ ማያ አሳራፊ አማራጮችን ለመምረጥ ባህሪውን ያብሩት</translation> <translation id="2364498172489649528">አልፏል</translation> +<translation id="236594517359128026">ከመቀጠልዎ በፊት ላፕቶፕዎን በጠፍጣፋ መሬት ላይ ያድርጉት</translation> <translation id="2380886658946992094">የሕግ</translation> <translation id="2391082728065870591">የግብረመልስ ሪፖርት ላክ</translation> <translation id="2407209115954268704">የሲም ቁልፍ ሁኔታ</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">ልክ ያልኾነ ፒን።</translation> <translation id="3838338534323494292">አዲስ የይለፍ ቃል</translation> <translation id="385051799172605136">ተመለስ</translation> +<translation id="385832974417157471">ከመዘጋት በፊት መሣሪያዎን Powerwash ያድርጉት። መሣሪያዎ ክዳን ካለው ክዳኑን ከመዝጋትዎ በፊት Powerwash እስኪጠናቀቅ ይጠብቁ። Powerwash ለመጠናቀቅ አንድ ደቂቃ ያህል ሊወስድ ይችላል።</translation> <translation id="3858860766373142691">ስም</translation> <translation id="3865414814144988605">የምስል ጥራት</translation> <translation id="387301095347517405">ባትሪዎ ሙሉ የኃይል መሙያ ዑደት ውስጥ ያለፈበት ጊዜ ብዛት</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Chrome OS ወቅታዊ መሆኑን ያረጋግጡ</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">ክፍለ-አካላትን ለካ</translation> <translation id="5578477003638479617">ዩኤምቲኤስ</translation> <translation id="5578519639599103840">ዳግም ቃኝ</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">ሴሉላር</translation> <translation id="8208861521865154048">ጥቅማጥቅሞች</translation> <translation id="8217675307824400706">ይገናኙ</translation> +<translation id="8221728673725659466">መቃኘት ተጠናቅቋል</translation> <translation id="8226628635270268143">የእርስዎን ተወዳጅ ፎቶዎች እና አልበሞች ይምረጡ</translation> <translation id="8230672074305416752">ነባሪ የሆነውን የአውታረ መረብ አግባቢ ፍኖት ፒንግ ማድረግ አልተሳካም</translation> <translation id="8246209727385807362">የማይታወቅ አገልግሎት አቅራቢ</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">ደካማ</translation> <translation id="8302368968391049045">የHTTPS ኬላ</translation> <translation id="8318753676953949627">ምንም ምስሎች የሉም</translation> +<translation id="8327249300223641918">ከመቀጠልዎ በፊት መሣሪያዎን በሙሉ (ሰሌዳ እና ክዳን) በጠፍጣፋ መሬት ላይ ያድርጉት።</translation> <translation id="8336739000755212683">የመሣሪያ መለያ ምስልን ለውጥ</translation> <translation id="8347227221149377169">የኅትመት ሥራዎች</translation> <translation id="8352772353338965963">አንድ መለያ ባለብዙ መለያ መግቢያ ላይ ያክሉ። ሁሉም የተገባባቸው መለያዎች ያለይለፍ ቃል ሊደረስባቸው ይችላሉ፣ ስለዚህ ይህ ባህሪ በታመኑ መለያዎች ላይ ብቻ ነው መጠቀም ያለባቸው።</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">ዲኤንኤስ አልተዋቀረም</translation> <translation id="8456761643544401578">በራስሰር የጨለማ ሁነታ</translation> <translation id="8461329675984532579">የመነሻ አቅራቢ ስም</translation> +<translation id="8467104829907989997">ክፍለ-አካላትን በመለካት ላይ...</translation> <translation id="8475690821716466388">የWiFi አውታረ መረብ ደህንነት በደካማ ፕሮቶኮል WEP PSK የተጠበቀ ነው</translation> <translation id="8477551185774834963">የዲኤንኤስ ስርዓተ ምላሽ ጊዜ ከሚፈቀደው ገደብ በትንሹ ይበልጣል</translation> <translation id="8483248364096924578">የአይፒ አድራሻ</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{ቃኝ}=1{ገጽ {NUMBER_OF_PAGES} ቃኝ}one{ገጽ {NUMBER_OF_PAGES} ቃኝ}other{ገጽ {NUMBER_OF_PAGES} ቃኝ}}</translation> <translation id="8997710128084572139">መሣሪያ <ph name="BATTERY_PERCENTAGE" />% ባትሪ አለው።</translation> <translation id="9003704114456258138">ተደጋጋሚነት</translation> +<translation id="9025198690966128418">እንደ የግል መሣሪያ ተጠቀም</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">የዲኤንኤስ ጥራት ከፍተኛ የስርዓተ ምላሽ ጊዜ አለው</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index bdc6762e..9317976d 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">إيقاف المظهر الداكن</translation> <translation id="1807246157184219062">فاتح</translation> <translation id="1827738518074806965">معرض الفنون</translation> +<translation id="1840835860961531162">إيقاف ميزة "الحماية من إضافة المعلومات أو تغييرها"</translation> <translation id="1851218745569890714">اختبار اجتماعات الفيديو</translation> <translation id="1852934301711881861">تثبيت نظام التشغيل ChromeOS Flex</translation> <translation id="1856388568474281774">السهم المتّجه للأسفل</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">تعذّرت مطابقة المضيف.</translation> <translation id="3942420633017001071">بيانات التشخيص</translation> <translation id="3954678691475912818">نوع الجهاز غير معروف.</translation> +<translation id="3958703339436883942">جارٍ إعادة تشغيل الجهاز...</translation> <translation id="3966286471246132217">للحصول على نتائج أكثر دقة، عليك إغلاق كل التطبيقات إلى أن يكتمل الاختبار.</translation> <translation id="3967822245660637423">اكتمل التنزيل</translation> <translation id="3969602104473960991">تم تعديل كلمة مرور نظام التشغيل Chrome</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">إعادة تشغيل سلاسل الإجراءات</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">الإصدار <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">عليك إيقاف ميزة "الحماية من إضافة المعلومات أو تغييرها" للانتقال إلى الشاشة التالية. يمكنك الانتقال إلى صفحة دعم الشركة المصنِّعة للجهاز للحصول على التعليمات.</translation> <translation id="5300814202279832142">نقل النافذة إلى سطح المكتب</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">اتصال</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">غير معروف</translation> <translation id="5843706793424741864">فهرنهايت</translation> <translation id="5849570051105887917">رمز مقدم الخدمة الرئيسي</translation> +<translation id="5856532218727053281">ستتم إعادة تشغيل النظام بعد التحقق من حالة ميزة "الحماية من إضافة المعلومات أو تغييرها"</translation> <translation id="5859603669299126575">ألبوم معرض الفنون</translation> <translation id="5860033963881614850">غير مفعّل</translation> <translation id="5860491529813859533">تفعيل</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index c37e4a93..b090f06 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -94,6 +94,7 @@ <translation id="1801418420130173017">Qaranlıq temanı deaktiv edin</translation> <translation id="1807246157184219062">Yüngül</translation> <translation id="1827738518074806965">İncəsənət qalereyası</translation> +<translation id="1840835860961531162">Yazma Qoruyucusunu deaktiv edin</translation> <translation id="1851218745569890714">Video Konfrans</translation> <translation id="1852934301711881861">ChromeOS Flex'i quraşdırın</translation> <translation id="1856388568474281774">Aşağı ox</translation> @@ -279,6 +280,7 @@ <translation id="3941014780699102620">Hostu həll etmək alınmadı</translation> <translation id="3942420633017001071">Diaqnostika</translation> <translation id="3954678691475912818">Cihaz növü məlum deyil.</translation> +<translation id="3958703339436883942">Yenidən başlamağa hazırlanır...</translation> <translation id="3966286471246132217">Daha dəqiq nəticələr üçün test tamamlanana kimi bütün tətbiqləri bağlayın.</translation> <translation id="3967822245660637423">Endirmə tamamdır</translation> <translation id="3969602104473960991">ChromeOS parolu güncəllənib</translation> @@ -427,6 +429,7 @@ <translation id="5275828089655680674">Rejimləri yenidən işə salın</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versiya <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Növbəti ekrana keçmək üçün yazma qoruyucusunu deaktiv edin. Təlimatlar üçün cihaz istehsalçısının dəstək səhifəsinə keçin.</translation> <translation id="5300814202279832142">Pəncərəni masaya keçirin</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Qoşun</translation> @@ -479,6 +482,7 @@ <translation id="583281660410589416">Naməlum</translation> <translation id="5843706793424741864">Farenheyt</translation> <translation id="5849570051105887917">Əsas səhifə provayder kodu</translation> +<translation id="5856532218727053281">Yazma Qoruyucusu statusu doğrulandıqdan sonra sistem yenidən başlayacaq</translation> <translation id="5859603669299126575">İncəsənət qalereyası albomu</translation> <translation id="5860033963881614850">Deaktiv</translation> <translation id="5860491529813859533">Aktiv edin</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 8c63d33..6888cbc 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Naprijed</translation> <translation id="1204296502688602597">Latentnost DNS-a</translation> <translation id="123124571410524056">Sumnja na portal</translation> +<translation id="1236400083787698183">Prije ponovnog pokretanja vratite uređaj na tvorničke postavke (Powerwash). Ako uređaj ima poklopac, pričekajte da se vraćanje na tvorničke postavke dovrši prije nego što zatvorite poklopac. Vraćanje na tvorničke postavke može potrajati do jedne minute.</translation> <translation id="1238612778414822719">HTTPs latentnost</translation> +<translation id="1240699967155581440">Potrebno je vraćanje na tvorničke postavke (Powerwash)</translation> <translation id="1264116747675686718">Ažuriranje verzije OS-a</translation> <translation id="1264369926465113395">Pogledajte novi digitalni magazin Chromebooka za kreatore</translation> <translation id="1270369111467284986">Mogući zaštitni portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Otkrivene su <ph name="LINK_BEGIN" />nekvalificirane komponente<ph name="LINK_END" />. Ako želite potvrditi da je ovo instalirano, uradite to sada.</translation> <translation id="2363636958541445404">Uključite funkcije da odaberete opcije čuvara ekrana</translation> <translation id="2364498172489649528">Uspješno</translation> +<translation id="236594517359128026">Prije nego što nastavite, prijenosno računalo postavite na ravnu površinuj</translation> <translation id="2380886658946992094">Pravo</translation> <translation id="2391082728065870591">Pošalji izvještaj o povratnim informacijama</translation> <translation id="2407209115954268704">Status zaključavanja SIM-a</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Nevažeći PIN.</translation> <translation id="3838338534323494292">Nova lozinka</translation> <translation id="385051799172605136">Nazad</translation> +<translation id="385832974417157471">Prije nego što isključite uređaj, vratite ga na tvorničke postavke. Ako uređaj ima poklopac, pričekajte da se vraćanje na tvorničke postavke dovrši prije nego što zatvorite poklopac. Vraćanje na tvorničke postavke može potrajati do jedne minute.</translation> <translation id="3858860766373142691">Naziv</translation> <translation id="3865414814144988605">Rezolucija</translation> <translation id="387301095347517405">Broj koji označava koliko je puta baterija prošla kompletan ciklus punjenja</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Vodite računa da je Chrome OS ažuriran</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Kalibriranje komponenti</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skeniraj ponovo</translation> <translation id="5583640892426849032">Tipka za brisanje</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Mobitel</translation> <translation id="8208861521865154048">Privilegije</translation> <translation id="8217675307824400706">Povežite se</translation> +<translation id="8221728673725659466">Kalibracija dovršena</translation> <translation id="8226628635270268143">Odaberite omiljene fotografije i albume</translation> <translation id="8230672074305416752">Provjera pingom zadanog mrežnog pristupnika nije uspjela</translation> <translation id="8246209727385807362">Nepoznat mobilni operater</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Slabo</translation> <translation id="8302368968391049045">HTTPs zaštitni zid</translation> <translation id="8318753676953949627">Nema slika</translation> +<translation id="8327249300223641918">Prije nego što nastavite, cijeli uređaj (baza i poklopac) postavite na ravnu površinu.</translation> <translation id="8336739000755212683">Promijenite sliku računa uređaja</translation> <translation id="8347227221149377169">Zadaci štampanja</translation> <translation id="8352772353338965963">Dodajte račun za višestruku prijavu. Svim računima na kojima je izvršena prijava je moguće pristupiti bez lozinke. Ovu funkciju treba koristiti isključivo s pouzdanim računima.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS nije postavljen</translation> <translation id="8456761643544401578">Automatski tamni način rada</translation> <translation id="8461329675984532579">Naziv mobilnog operatera</translation> +<translation id="8467104829907989997">Kalibriranje komponenti...</translation> <translation id="8475690821716466388">WiFi mreža je zaštićena slabim protokolom WEP PSK</translation> <translation id="8477551185774834963">Latentnost DNS-a je malo iznad dozvoljenog praga</translation> <translation id="8483248364096924578">IP adresa</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skeniraj}=1{Skeniraj {NUMBER_OF_PAGES}. stranicu}one{Skeniraj {NUMBER_OF_PAGES}. stranicu}few{Skeniraj {NUMBER_OF_PAGES}. stranicu}other{Skeniraj {NUMBER_OF_PAGES}. stranicu}}</translation> <translation id="8997710128084572139">Uređaj ima <ph name="BATTERY_PERCENTAGE" />% baterije.</translation> <translation id="9003704114456258138">Frekvencija</translation> +<translation id="9025198690966128418">Upotrijebi kao osobni uređaj</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS rezolucija ima visoku latentnost</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index 9386297..53d15fe 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Desactiva el tema fosc</translation> <translation id="1807246157184219062">Clar</translation> <translation id="1827738518074806965">Galeria d'art</translation> +<translation id="1840835860961531162">Desactiva la protecció contra escriptura</translation> <translation id="1851218745569890714">Videoconferències</translation> <translation id="1852934301711881861">Instal·la ChromeOS Flex</translation> <translation id="1856388568474281774">Fletxa avall</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">No s'ha pogut resoldre l'amfitrió</translation> <translation id="3942420633017001071">Diagnòstic</translation> <translation id="3954678691475912818">El tipus de dispositiu és desconegut.</translation> +<translation id="3958703339436883942">S'està preparant per reiniciar...</translation> <translation id="3966286471246132217">Per obtenir uns resultats més precisos, tanca totes les aplicacions fins que la prova hagi finalitzat.</translation> <translation id="3967822245660637423">S'ha completat la baixada</translation> <translation id="3969602104473960991">S'ha actualitzat la contrasenya de Chrome OS</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Torna a executar les rutines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versió <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Desactiva la protecció contra escriptura per continuar a la pantalla següent. Consulta la pàgina d'assistència del fabricant del dispositiu per obtenir instruccions.</translation> <translation id="5300814202279832142">Mou la finestra a l'escriptori</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Connecta</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Desconegut</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Codi del proveïdor domèstic</translation> +<translation id="5856532218727053281">El sistema es reiniciarà després de verificar l'estat de la protecció contra escriptura</translation> <translation id="5859603669299126575">Àlbum de la galeria d'art</translation> <translation id="5860033963881614850">Desactivat</translation> <translation id="5860491529813859533">Activa</translation>
diff --git a/chromeos/strings/chromeos_strings_cy.xtb b/chromeos/strings/chromeos_strings_cy.xtb index 1d2eae5..5933b2f9 100644 --- a/chromeos/strings/chromeos_strings_cy.xtb +++ b/chromeos/strings/chromeos_strings_cy.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Nesaf</translation> <translation id="1204296502688602597">Cuddni DNS</translation> <translation id="123124571410524056">Mae porth yn debygol</translation> +<translation id="1236400083787698183">Cyn ailgychwyn, defnyddiwch Powerwash ar eich dyfais. Os oes gan eich dyfais gaead, arhoswch nes bod Powerwash wedi'i gwblhau cyn cau'r caead. Gall gymryd hyd at funud i gwblhau Powerwash.</translation> <translation id="1238612778414822719">Cuddni HTTPS</translation> +<translation id="1240699967155581440">Mae angen Powerwash (ailosod i'r gosodiadau ffatri)</translation> <translation id="1264116747675686718">Wrthi'n diweddaru fersiwn yr OS</translation> <translation id="1264369926465113395">Dewch i weld cylchgrawn digidol newydd Chromebook ar gyfer crewyr</translation> <translation id="1270369111467284986">Porth caeth yn debygol</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Canfuwyd <ph name="LINK_BEGIN" />cydrannau sydd heb gymhwyso<ph name="LINK_END" />. Os dewiswch gadarnhau bod hwn wedi'i osod, gwnewch hynny nawr.</translation> <translation id="2363636958541445404">Trowch y nodwedd ymlaen i ddewis opsiynau arbedwr sgrîn</translation> <translation id="2364498172489649528">Pasiwyd</translation> +<translation id="236594517359128026">Cyn parhau, gosodwch eich gliniadur ar arwyneb fflat</translation> <translation id="2380886658946992094">Cyfreithiol</translation> <translation id="2391082728065870591">Anfon Adroddiad Adborth</translation> <translation id="2407209115954268704">Statws Cloi SIM</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">PIN annilys.</translation> <translation id="3838338534323494292">Cyfrinair newydd</translation> <translation id="385051799172605136">Nôl</translation> +<translation id="385832974417157471">Cyn diffodd, defnyddiwch Powerwash ar eich dyfais. Os oes gan eich dyfais gaead, arhoswch nes bod Powerwash wedi'i gwblhau cyn cau'r caead. Gall gymryd hyd at funud i gwblhau Powerwash.</translation> <translation id="3858860766373142691">Enw</translation> <translation id="3865414814144988605">Cydraniad</translation> <translation id="387301095347517405">Nifer o weithiau y mae eich batri wedi mynd drwy gylch gwefru llawn</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Gwnewch yn siŵr bod Chrome OS yn gyfredol</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Calibradu cydrannau</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Ail-sganio</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Symudol</translation> <translation id="8208861521865154048">Manteision</translation> <translation id="8217675307824400706">Cysylltu</translation> +<translation id="8221728673725659466">Wedi gorffen calibradu</translation> <translation id="8226628635270268143">Dewiswch eich hoff luniau ac albymau</translation> <translation id="8230672074305416752">Wedi methu â phingio porth y rhwydwaith diofyn</translation> <translation id="8246209727385807362">Cludwr anhysbys</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Gwan</translation> <translation id="8302368968391049045">Wal Dân HTTPS</translation> <translation id="8318753676953949627">Dim Delweddau</translation> +<translation id="8327249300223641918">Cyn parhau, gosodwch eich dyfais gyfan (sylfaen a chaead) ar arwyneb fflat.</translation> <translation id="8336739000755212683">Newid llun cyfrif y ddyfais</translation> <translation id="8347227221149377169">Ffeiliau i'w hargraffu</translation> <translation id="8352772353338965963">Ychwanegu cyfrif at fewngofnodi o sawl cyfrif. Gellir cael mynediad at bob cyfrif sydd wedi'i fewngofnodi heb gyfrinair, felly dim ond gyda chyfrifon dibynadwy y dylid defnyddio'r nodwedd hon.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">Nid yw'r DNS wedi'i osod</translation> <translation id="8456761643544401578">Modd tywyll awtomatig</translation> <translation id="8461329675984532579">Enw'r darparwr hafan</translation> +<translation id="8467104829907989997">Wrthi'n calibradu cydrannau...</translation> <translation id="8475690821716466388">Diogelir y rhwydwaith Wi-Fi gyda'r protocol gwan WEP PSK</translation> <translation id="8477551185774834963">Mae cuddni DNS ychydig yn uwch na'r trothwy a ganiateir</translation> <translation id="8483248364096924578">Cyfeiriad IP</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Sganio}=1{Sganio tudalen {NUMBER_OF_PAGES}}two{Sganio tudalen {NUMBER_OF_PAGES}}few{Sganio tudalen {NUMBER_OF_PAGES}}many{Sganio tudalen {NUMBER_OF_PAGES}}other{Sganio tudalen {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Mae gan y ddyfais <ph name="BATTERY_PERCENTAGE" />% o fatri.</translation> <translation id="9003704114456258138">Amlder</translation> +<translation id="9025198690966128418">Defnyddio fel dyfais bersonol</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Mae gan y datrysiad DNS guddni uchel</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 861a99d..87988e8 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Deaktiver Mørkt tema</translation> <translation id="1807246157184219062">Lys</translation> <translation id="1827738518074806965">Kunstgalleri</translation> +<translation id="1840835860961531162">Deaktiver Write Protect</translation> <translation id="1851218745569890714">Videomøder</translation> <translation id="1852934301711881861">Installer ChromeOS Flex</translation> <translation id="1856388568474281774">Pil ned</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Der kunne ikke identificeres en host</translation> <translation id="3942420633017001071">Diagnostik</translation> <translation id="3954678691475912818">Enhedstypen er ukendt.</translation> +<translation id="3958703339436883942">Forbereder genstart...</translation> <translation id="3966286471246132217">Luk alle apps, indtil testen er fuldført, for at få mere nøjagtige resultater.</translation> <translation id="3967822245660637423">Download fuldført</translation> <translation id="3969602104473960991">Chrome OS-adgangskoden er opdateret</translation> @@ -423,6 +425,7 @@ <translation id="5275828089655680674">Kør rutiner igen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">version <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Deaktiver Write Protect for at fortsætte til næste skærm. Gå til producentens supportside for at få vejledning.</translation> <translation id="5300814202279832142">Flyt vindue til skrivebord</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Opret forbindelse</translation> @@ -474,6 +477,7 @@ <translation id="583281660410589416">Ukendt</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Kode til udbyder til hjem</translation> +<translation id="5856532218727053281">Systemet genstartes, efter status for Write Protection er bekræftet</translation> <translation id="5859603669299126575">Album i kunstgalleri</translation> <translation id="5860033963881614850">Fra</translation> <translation id="5860491529813859533">Aktivér</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index f7292711..b4f5206 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Weiter</translation> <translation id="1204296502688602597">DNS-Latenz</translation> <translation id="123124571410524056">Verdacht auf Portal</translation> +<translation id="1236400083787698183">Führe vor dem Neustart einen Powerwash deines Geräts durch. Bei Geräten mit Klappmechanismus: Warte, bis der Powerwash abgeschlossen ist, bevor du das Gerät zuklappst. Ein Powerwash kann bis zu einer Minute lang dauern.</translation> <translation id="1238612778414822719">HTTPS-Latenz</translation> +<translation id="1240699967155581440">Ein Powerwash bzw. das Zurücksetzen auf die Werkseinstellungen ist erforderlich</translation> <translation id="1264116747675686718">Das Betriebssystem wird aktualisiert</translation> <translation id="1264369926465113395">Wirf einen Blick auf das neue digitale Magazin von Chromebook für Kreative</translation> <translation id="1270369111467284986">Verdacht auf Captive Portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Es wurden <ph name="LINK_BEGIN" />nicht qualifizierte Komponenten<ph name="LINK_END" /> erkannt. Wenn du deren Installation bestätigen möchtest, tu das bitte jetzt.</translation> <translation id="2363636958541445404">Aktiviere die Funktion, um die Bildschirmschoner-Optionen auszuwählen</translation> <translation id="2364498172489649528">Bestanden</translation> +<translation id="236594517359128026">Lege deinen Laptop auf eine ebene Oberfläche, bevor du fortfährst</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Feedbackbericht senden</translation> <translation id="2407209115954268704">SIM-Lock-Status</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Ungültige PIN.</translation> <translation id="3838338534323494292">Neues Passwort</translation> <translation id="385051799172605136">Zurück</translation> +<translation id="385832974417157471">Führe vor dem Herunterfahren einen Powerwash deines Geräts durch. Bei Geräten mit Klappmechanismus: Warte, bis der Powerwash abgeschlossen ist, bevor du das Gerät zuklappst. Ein Powerwash kann bis zu einer Minute lang dauern.</translation> <translation id="3858860766373142691">Name</translation> <translation id="3865414814144988605">Auflösung</translation> <translation id="387301095347517405">Wie oft der Akku vollständig aufgeladen wurde</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Ist Chrome OS auf dem neuesten Stand?</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Komponenten kalibrieren</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Neu scannen</translation> <translation id="5583640892426849032">Rücktaste</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Mobil</translation> <translation id="8208861521865154048">Vorteile</translation> <translation id="8217675307824400706">Verbindung herstellen</translation> +<translation id="8221728673725659466">Kalibrierung beendet</translation> <translation id="8226628635270268143">Hier kannst du deine bevorzugten Fotos und Alben auswählen</translation> <translation id="8230672074305416752">Das standardmäßige Netzwerk-Gateway konnte nicht kontaktiert werden</translation> <translation id="8246209727385807362">Unbekannter Mobilfunkanbieter</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Schwach</translation> <translation id="8302368968391049045">HTTPS-Firewall</translation> <translation id="8318753676953949627">Keine Bilder vorhanden</translation> +<translation id="8327249300223641918">Lege das Gerät vollständig aufgeklappt auf eine ebene Oberfläche, bevor du fortfährst.</translation> <translation id="8336739000755212683">Bild des Gerätekontos ändern</translation> <translation id="8347227221149377169">Druckaufträge</translation> <translation id="8352772353338965963">Füge ein Konto für die Mehrfachanmeldung hinzu. Du kannst auf alle angemeldeten Konten zugreifen, ohne ein Passwort eingeben zu müssen. Verwende diese Funktion daher nur mit vertrauenswürdigen Konten.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS ist nicht eingerichtet</translation> <translation id="8456761643544401578">Automatischer dunkler Modus</translation> <translation id="8461329675984532579">Name des Homepageanbieters</translation> +<translation id="8467104829907989997">Komponenten werden kalibriert...</translation> <translation id="8475690821716466388">Das WLAN ist mit dem schwachen Protokoll WEP PSK gesichert</translation> <translation id="8477551185774834963">Die DNS-Latenz liegt etwas über dem zulässigen Grenzwert</translation> <translation id="8483248364096924578">IP-Adresse</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Scannen}=1{Seite {NUMBER_OF_PAGES} scannen}other{Seite {NUMBER_OF_PAGES} scannen}}</translation> <translation id="8997710128084572139">Der Akkustand des Geräts liegt bei <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="9003704114456258138">Frequenz</translation> +<translation id="9025198690966128418">Als persönliches Gerät nutzen</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS-Auflösung hat eine hohe Latenz</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 2ee1b5a..91a3682 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Επόμενο</translation> <translation id="1204296502688602597">Λανθάνων χρόνος DNS</translation> <translation id="123124571410524056">Πιθανή ύπαρξη πύλης</translation> +<translation id="1236400083787698183">Πριν από την επανεκκίνηση, κάντε Powerwash της συσκευής. Εάν η συσκευή σας έχει καπάκι, πριν το κλείσετε, περιμένετε να ολοκληρωθεί το Powerwash. Η ολοκλήρωση του Powerwash μπορεί να διαρκέσει έως και ένα λεπτό.</translation> <translation id="1238612778414822719">Λανθάνων χρόνος HTTPS</translation> +<translation id="1240699967155581440">Απαιτείται Powerwash (επαναφορά εργοστασιακών ρυθμίσεων)</translation> <translation id="1264116747675686718">Ενημέρωση έκδοσης λειτουργικού συστήματος</translation> <translation id="1264369926465113395">Δείτε το νέο ψηφιακό περιοδικό του Chromebook για δημιουργούς</translation> <translation id="1270369111467284986">Η πύλη υποδοχής είναι ύποπτη</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Εντοπίστηκαν <ph name="LINK_BEGIN" />ακατάλληλα στοιχεία<ph name="LINK_END" />. Αν επιλέξετε να επιβεβαιώσετε την εγκατάσταση αυτών των στοιχείων, κάντε το τώρα.</translation> <translation id="2363636958541445404">Ενεργοποιήστε τη λειτουργία για να ορίσετε επιλογές για την προφύλαξη οθόνης</translation> <translation id="2364498172489649528">Επιτυχία</translation> +<translation id="236594517359128026">Πριν συνεχίσετε, τοποθετήστε τον φορητό υπολογιστή σας σε μια επίπεδη επιφάνεια</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Αποστολή αναφοράς σχολίων</translation> <translation id="2407209115954268704">Κατάσταση κλειδώματος SIM</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Μη έγκυρο PIN.</translation> <translation id="3838338534323494292">Νέος κωδικός πρόσβασης</translation> <translation id="385051799172605136">Πίσω</translation> +<translation id="385832974417157471">Πριν από την απενεργοποίηση, κάντε Powerwash της συσκευής σας. Εάν η συσκευή σας έχει καπάκι, πριν το κλείσετε, περιμένετε να ολοκληρωθεί το Powerwash. Η ολοκλήρωση του Powerwash μπορεί να διαρκέσει έως και ένα λεπτό.</translation> <translation id="3858860766373142691">Όνομα</translation> <translation id="3865414814144988605">Ανάλυση</translation> <translation id="387301095347517405">Ο αριθμός των φορών που η μπαταρία σας ολοκλήρωσε έναν πλήρη κύκλο φόρτισης</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Βεβαιωθείτε ότι το Chrome OS είναι ενημερωμένο</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Βαθμονόμηση στοιχείων</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Επανάληψη σάρωσης</translation> <translation id="5583640892426849032">Πλήκτρο Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Κινητό</translation> <translation id="8208861521865154048">Προνόμια</translation> <translation id="8217675307824400706">Συνδεθείτε</translation> +<translation id="8221728673725659466">Η βαθμονόμηση ολοκληρώθηκε</translation> <translation id="8226628635270268143">Επιλέξτε τις αγαπημένες σας φωτογραφίες και λευκώματα.</translation> <translation id="8230672074305416752">Αποτυχία ping της προεπιλεγμένης πύλης δικτύου.</translation> <translation id="8246209727385807362">Άγνωστη εταιρεία κινητής τηλεφωνίας</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Αδύναμο</translation> <translation id="8302368968391049045">Τείχος προστασίας HTTPS</translation> <translation id="8318753676953949627">Δεν υπάρχουν εικόνες</translation> +<translation id="8327249300223641918">Πριν συνεχίσετε, τοποθετήστε ολόκληρη τη συσκευή (βάση και καπάκι) σε μια επίπεδη επιφάνεια.</translation> <translation id="8336739000755212683">Αλλαγή εικόνας λογαριασμού συσκευής</translation> <translation id="8347227221149377169">Εργασίες εκτύπωσης</translation> <translation id="8352772353338965963">Προσθέστε έναν λογαριασμό στη σύνδεση σε πολλούς λογαριασμούς. Όλοι οι συνδεδεμένοι λογαριασμοί μπορούν να προσπελαστούν χωρίς κωδικό πρόσβασης, επομένως αυτή η δυνατότητα πρέπει να χρησιμοποιείται μόνο με αξιόπιστους λογαριασμούς.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">Το DNS δεν έχει ρυθμιστεί.</translation> <translation id="8456761643544401578">Αυτόματη λειτουργία χαμηλού φωτισμού</translation> <translation id="8461329675984532579">Όνομα παρόχου αρχικής σελίδας</translation> +<translation id="8467104829907989997">Βαθμονόμηση στοιχείων…</translation> <translation id="8475690821716466388">Η ασφάλεια του δικτύου Wi-Fi βασίζεται σε ένα αδύναμο πρωτόκολλο WEP PSK.</translation> <translation id="8477551185774834963">Ο λανθάνων χρόνος DNS έχει υπερβεί ελαφρώς το επιτρεπόμενο ελάχιστο όριο.</translation> <translation id="8483248364096924578">Διεύθυνση IP</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Σάρωση}=1{Σάρωση σελίδας {NUMBER_OF_PAGES}}other{Σάρωση σελίδας {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Η μπαταρία της συσκευής βρίσκεται στο <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">Συχνότητα</translation> +<translation id="9025198690966128418">Χρήση ως προσωπική συσκευή</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Η επίλυση DNS έχει υψηλό λανθάνοντα χρόνο</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index f08c8e4..a19a8e3 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -38,9 +38,11 @@ <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">Home network, not roaming</translation> <translation id="1327977588028644528">Gateway</translation> +<translation id="1328223165223065150">Wallpaper colour</translation> <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Fit to scan area</translation> <translation id="1367951781824006909">Choose a file</translation> +<translation id="1380220803921738821">We're running into errors. Try rebooting or recover the firmware using a USB thumbdrive.</translation> <translation id="1387854245479784695">This is an aggregation of all cores</translation> <translation id="1394661041439318933">Device has <ph name="BATTERY_PERCENTAGE" />% case battery.</translation> <translation id="1397738625398125236">Gateway can be pinged</translation> @@ -54,6 +56,7 @@ <translation id="1442433966118452622">Image source</translation> <translation id="1451536289672181509">Device is a keyboard.</translation> <translation id="1459693405370120464">Weather</translation> +<translation id="1459784442280469416">Save to USB</translation> <translation id="1468664791493211953">Offers</translation> <translation id="1476467821656042872"><ph name="MANAGER" /> manages this device and may be able to monitor your activity.</translation> <translation id="1478594628797167447">Scanner</translation> @@ -62,6 +65,8 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> manages this user and may remotely manage settings and monitor user activity.</translation> <translation id="150962533380566081">Invalid PUK.</translation> <translation id="1510238584712386396">Launcher</translation> +<translation id="1512982610995527443">Device will shut down in five seconds</translation> +<translation id="1522984060396982789">Your repair was successful. You can shut down the device or take some additional actions.</translation> <translation id="152892567002884378">Volume up</translation> <translation id="1555130319947370107">Blue</translation> <translation id="155865706765934889">Touchpad</translation> @@ -104,6 +109,7 @@ <translation id="1887850431809612466">Hardware revision</translation> <translation id="1905710495812624430">Maximum allowed attempts exceeded.</translation> <translation id="1908234395526491708">UDP request failures</translation> +<translation id="1932611479324127242">Battery cut-off</translation> <translation id="1947737735496445907">Printed</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1977994649430373166">Google profile photo</translation> @@ -122,6 +128,7 @@ <translation id="2138109643290557664">Float on by</translation> <translation id="2141644705054017895"><ph name="PERCENTAGE_VALUE" />%</translation> <translation id="2152882202543497059"><ph name="NUMBER" /> photos</translation> +<translation id="2154739667870063220">Reboot</translation> <translation id="2157959690810728433">QUEUED</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: Retry</translation> <translation id="2161394479394250669">Cancel print job</translation> @@ -139,6 +146,7 @@ <translation id="2240366984605217732">Layout switch</translation> <translation id="225692081236532131">Activation status</translation> <translation id="2271469253353559191">Dark mode schedule</translation> +<translation id="2275586345903859204">Repair is complete</translation> <translation id="2287186687001756809">No image available. To add photos, go to <ph name="LINK" /></translation> <translation id="2307344026739914387">Use current keypair</translation> <translation id="2320295602967756579">Enable Light theme</translation> @@ -182,10 +190,12 @@ <translation id="2717139507051041123">Enable dark colour mode</translation> <translation id="2740531572673183784">OK</translation> <translation id="2751739896257479635">EAP Phase 2 authentication</translation> +<translation id="2756652381241102009">Run diagnostics</translation> <translation id="2783010256799387990">PASSED</translation> <translation id="2789486458103222910">OK</translation> <translation id="2805756323405976993">Apps</translation> <translation id="28232023175184696">Cannot connect to the Internet. Click to try again.</translation> +<translation id="2827359915699915567">Manually type this URL to get the RSU code</translation> <translation id="2859243502336719778">Critical update</translation> <translation id="2860473693272905224">Place another page on the scanner</translation> <translation id="2872961005593481000">Shut down</translation> @@ -224,6 +234,7 @@ <translation id="3291996639387199448">Key direction</translation> <translation id="3310640316857623290">DNS latency significantly above allowable threshold</translation> <translation id="3328783797891415197">Test running</translation> +<translation id="3333527094307156612">Use this QR code to get the eight-character unlock code. You can also manually type <ph name="LINK_BEGIN" />this URL<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Not sure</translation> <translation id="3340011300870565703">Device has <ph name="BATTERY_PERCENTAGE" />% right bud battery.</translation> <translation id="3368922792935385530">Connected</translation> @@ -257,6 +268,7 @@ <translation id="3606583719724308068">High latency to HTTPS websites</translation> <translation id="3621202678540785336">Input</translation> <translation id="3632579075709132555">Privacy screen toggle</translation> +<translation id="3643810137582748570">Skip calibration</translation> <translation id="3678765385266369662">Select how you would like to turn off write protect</translation> <translation id="3689839747745352263"><ph name="TEST_NAME" /> test</translation> <translation id="370665806235115550">Loading...</translation> @@ -327,6 +339,7 @@ <translation id="4378551569595875038">Connecting...</translation> <translation id="4382484599443659549">PDF</translation> <translation id="439429847087949098">Restarting <ph name="DEVICE_NAME" /></translation> +<translation id="4415951057168511744">Current avatar</translation> <translation id="4425149324548788773">My Drive</translation> <translation id="4428374560396076622"><ph name="NETWORK_NAME" /> is off</translation> <translation id="4429881212383817840">Kerberos ticket expires soon</translation> @@ -363,6 +376,7 @@ <translation id="4731797938093519117">Parent access</translation> <translation id="473775607612524610">Update</translation> <translation id="4744944742468440486">Info related to your selection</translation> +<translation id="4751272708893364980">See RMA logs</translation> <translation id="4773299976671772492">Stopped</translation> <translation id="4774530504324923332">You'll need an RSU-enabled security key, a QR code scanner and a second device with an Internet connection</translation> <translation id="4782311465517282004">Get definitions, translations or unit conversions when you right-click or touch & hold text</translation> @@ -407,6 +421,7 @@ <translation id="5049856988445523908">SIM locked (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Group name</translation> <translation id="5051044138948155788">This is the only page. This will take you to the scanning start screen.</translation> +<translation id="506768878203270635">Enter the eight characters</translation> <translation id="5088172560898466307">Server hostname</translation> <translation id="5089810972385038852">State</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -445,9 +460,11 @@ <translation id="5372659122375744710">Wi-Fi network is not secure</translation> <translation id="5376354385557966694">Automatic light mode</translation> <translation id="537872351913703572">Device will go to a different user or organisation</translation> +<translation id="5389224261615877010">Rainbow</translation> <translation id="5395600419410242651">Erase all data</translation> <translation id="5400907029458559844">Device is connecting.</translation> <translation id="5401938042319910061">Run all routines</translation> +<translation id="5406131354638931058">Perform battery cut-off for devices being dispatched or stored</translation> <translation id="5423849171846380976">Activated</translation> <translation id="5430931332414098647">Instant Tethering</translation> <translation id="5431318178759467895">Colour</translation> @@ -468,6 +485,7 @@ <translation id="5620281292257375798">Internal only</translation> <translation id="5649768706273821470">Listen</translation> <translation id="5655283760733841251">Keyboard brightness up</translation> +<translation id="5661196929408385351">Powerwash and shut down</translation> <translation id="5669267381087807207">Activating</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Family</translation> @@ -479,6 +497,7 @@ <translation id="576835345334454681">Display brightness up</translation> <translation id="57838592816432529">Mute</translation> <translation id="5784136236926853061">High HTTP latency</translation> +<translation id="578753362485952307">If you are reworking a mainboard to use in another device, go to the <ph name="LINK_BEGIN" />rework flow<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Add Person</translation> <translation id="583281660410589416">Unknown</translation> <translation id="5843706793424741864">Fahrenheit</translation> @@ -498,6 +517,7 @@ <translation id="5931523347251946569">File not found</translation> <translation id="5939518447894949180">Reset</translation> <translation id="594552776027197022">Generate random keypair</translation> +<translation id="5951259522948394825">Confirm everything's in the right place and view the diagnostic report</translation> <translation id="5972388717451707488">Update engine</translation> <translation id="5984145644188835034">Default wallpaper</translation> <translation id="6017514345406065928">Green</translation> @@ -535,6 +555,7 @@ <translation id="6278428485366576908">Theme</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Turn Dark theme on</translation> +<translation id="6295178529664209245">Continue repair?</translation> <translation id="6302401976930124515"><ph name="TEST_NAME" /> test has been cancelled</translation> <translation id="6319207335391420837">Update firmware on <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Turn on screensaver</translation> @@ -570,6 +591,7 @@ <translation id="6575134580692778371">Not configured</translation> <translation id="6579509898032828423">Use this photo</translation> <translation id="6596816719288285829">IP Address</translation> +<translation id="6611280807952151149">Exit <ph name="DEVICE_TYPE" /> repair</translation> <translation id="6618744767048954150">Running</translation> <translation id="6620487321149975369">Print jobs will appear in history unless they are removed manually</translation> <translation id="6643016212128521049">Clear</translation> @@ -582,6 +604,7 @@ <translation id="6723839937902243910">Power</translation> <translation id="6723847290197874913">Keyboard backlight</translation> <translation id="672609503628871915">See what's new</translation> +<translation id="6746847322826305075">You can continue with the full repair or Powerwash (factory reset) the device to restock the mainboard.</translation> <translation id="6747215703636344499">Stopped – output full</translation> <translation id="6749473226660745022">Photos</translation> <translation id="6753452347192452143">Device is a computer.</translation> @@ -629,6 +652,7 @@ <translation id="7216409898977639127">Mobile provider</translation> <translation id="7271040990581020067">Scanner is currently in use. Try again later.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Select one or more components and try again, or skip calibration</translation> <translation id="7281657306185710294">Feel the breeze</translation> <translation id="7287310195820267359">Wallpaper collections</translation> <translation id="7297226631177386107">Can't connect through firewall to HTTPS websites</translation> @@ -659,11 +683,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB touchscreen</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> left</translation> +<translation id="760845693386726841">This component couldn't be detected.</translation> <translation id="7620771111601174153">Find out more in the Help Centre</translation> <translation id="7626501172915339021">Perform RMA server unlock (RSU)</translation> <translation id="763165478673169849">Last reset time</translation> <translation id="7648838807254605802">High HTTPS latency</translation> <translation id="7656388927906093505">Device is a mouse.</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" /> repair error</translation> <translation id="7658239707568436148">Cancel</translation> <translation id="7665800271478495366">Change avatar</translation> <translation id="7690294790491645610">Confirm new password</translation> @@ -705,12 +731,14 @@ <translation id="8083281199617904460">This repair process is intended for a trained repair technician. Start only after replacing the malfunctioning components.</translation> <translation id="808894953321890993">Change password</translation> <translation id="8104083085214006426">You are using an open and unsecure network</translation> +<translation id="8109786307828817014">Proceed with failed calibrations?</translation> <translation id="811820734797650957">(Android) Gateway can be pinged</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8132480444149501833">Request traffic counters</translation> <translation id="8138405288920084977">LTEAdvanced</translation> <translation id="8143951647992294073">Select <ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8179976553408161302">Enter</translation> +<translation id="819552138404104974">RMA logs</translation> <translation id="8206859287963243715">Mobile</translation> <translation id="8208861521865154048">Perks</translation> <translation id="8217675307824400706">Get connected</translation> @@ -727,6 +755,7 @@ <translation id="8302368968391049045">HTTPS Firewall</translation> <translation id="8318753676953949627">No images</translation> <translation id="8327249300223641918">Before proceeding, place your whole device (base and lid) on a flat surface.</translation> +<translation id="8330949592403310082">Select which components were replaced</translation> <translation id="8336739000755212683">Change device account image</translation> <translation id="8347227221149377169">Print jobs</translation> <translation id="8352772353338965963">Add an account to multiple sign-in. All signed-in accounts can be accessed without a password, so this feature should only be used with trusted accounts.</translation> @@ -742,6 +771,7 @@ <translation id="8456761643544401578">Automatic dark mode</translation> <translation id="8461329675984532579">Home provider name</translation> <translation id="8467104829907989997">Calibrating components…</translation> +<translation id="8474030592808010086">Unplug the device to perform battery cut-off</translation> <translation id="8475690821716466388">Wi-Fi network is secured with weak protocol WEP PSK</translation> <translation id="8477551185774834963">DNS latency slightly above allowable threshold</translation> <translation id="8483248364096924578">IP address</translation> @@ -750,6 +780,7 @@ <translation id="8503813439785031346">Username</translation> <translation id="8503836310948963452">Just a few more minutes…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Components may not work correctly unless calibrated</translation> <translation id="8575298406870537639">Your operator may require this option to connect to their network. Contact your operator for details.</translation> <translation id="8576249514688522074">Uninitialised</translation> <translation id="8620617069779373398">Roaming status</translation> @@ -786,6 +817,7 @@ <translation id="8898840733695078011">Signal strength</translation> <translation id="8910721771319628100">Default network above latency threshold</translation> <translation id="8918637186205009138"><ph name="GIVEN_NAME" />'s <ph name="DEVICE_TYPE" /></translation> +<translation id="8919792139048574232">See what's been fixed</translation> <translation id="8919837981463578619">Failed – Tray missing</translation> <translation id="8923267550422472772">Day of month for reset</translation> <translation id="8928727111548978589">Failed – Out of paper</translation> @@ -804,6 +836,7 @@ <translation id="9025198690966128418">Use as a personal device</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS resolution has high latency</translation> +<translation id="9063121522582193837">Couldn't calibrate some components</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Use this video</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 59872e0..27c72fd 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Inhabilitar el tema oscuro</translation> <translation id="1807246157184219062">Claro</translation> <translation id="1827738518074806965">Galería de arte</translation> +<translation id="1840835860961531162">Desactivar la protección de escritura</translation> <translation id="1851218745569890714">Videoconferencias</translation> <translation id="1852934301711881861">Instalar Chrome OS Flex</translation> <translation id="1856388568474281774">Flecha hacia abajo</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">no se pudo resolver el host</translation> <translation id="3942420633017001071">Diagnóstico</translation> <translation id="3954678691475912818">El tipo de dispositivo es desconocido.</translation> +<translation id="3958703339436883942">Preparando el dispositivo para reiniciar...</translation> <translation id="3966286471246132217">Para obtener resultados más precisos, cierra todas las apps hasta que se complete la prueba.</translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="3969602104473960991">Se actualizó la contraseña de Chrome OS</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Volver a ejecutar las rutinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versión <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Inhabilitar la función write-protect para pasar a la siguiente pantalla. Para obtener instrucciones, ve a la página de asistencia del fabricante del dispositivo.</translation> <translation id="5300814202279832142">Mover la ventana al escritorio</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Conectar</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Desconocido</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Código del proveedor de origen</translation> +<translation id="5856532218727053281">El sistema se reiniciará después de verificar el estado de Write protection</translation> <translation id="5859603669299126575">Álbum Galería de arte</translation> <translation id="5860033963881614850">Desactivado</translation> <translation id="5860491529813859533">Activar</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index a5bb86a..be5f598 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Järgmine</translation> <translation id="1204296502688602597">DNS-i latentsusaeg</translation> <translation id="123124571410524056">Kahtlustatakse portaali</translation> +<translation id="1236400083787698183">Enne taaskäivitamist tehke seadmes Powerwash. Kui teie seadmel on kaas, oodake enne kaane sulgemist, kuni Powerwash on lõpetatud. Powerwashi lõpuleviimine võib võtta kuni minuti.</translation> <translation id="1238612778414822719">HTTPS-i latentsusaeg</translation> +<translation id="1240699967155581440">Powerwash (tehaseseadetele lähtestamine) on nõutav</translation> <translation id="1264116747675686718">OS-i versiooni värskendamine</translation> <translation id="1264369926465113395">Vaadake Chromebooki uut kujundajatele ja kunstnikele mõeldud digiajakirja</translation> <translation id="1270369111467284986">Kahtlustatakse hõiveportaali</translation> @@ -92,6 +94,7 @@ <translation id="1801418420130173017">Tumeda teema keelamine</translation> <translation id="1807246157184219062">Hele</translation> <translation id="1827738518074806965">Kunstigalerii</translation> +<translation id="1840835860961531162">Kirjutuskaitse väljalülitamine</translation> <translation id="1851218745569890714">Videokonverents</translation> <translation id="1852934301711881861">Installi Chrome OS Flex</translation> <translation id="1856388568474281774">Allanool</translation> @@ -148,6 +151,7 @@ <translation id="2360257214555822463">Tuvastati <ph name="LINK_BEGIN" />sobimatud komponendid<ph name="LINK_END" />. Kui soovite kinnitada, et see on paigaldatud, tehke seda praegu.</translation> <translation id="2363636958541445404">Lülitage funktsioon sisse, et teha ekraanisäästja valikud</translation> <translation id="2364498172489649528">Läbitud</translation> +<translation id="236594517359128026">Enne jätkamist asetage sülearvuti tasasele pinnale</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Saada tagasisidearuanne</translation> <translation id="2407209115954268704">SIM-i luku olek</translation> @@ -266,6 +270,7 @@ <translation id="3820172043799983114">Vale PIN-kood.</translation> <translation id="3838338534323494292">Uus parool</translation> <translation id="385051799172605136">Tagasi</translation> +<translation id="385832974417157471">Enne väljalülitamist tehke seadmes Powerwash. Kui teie seadmel on kaas, oodake enne kaane sulgemist, kuni Powerwash on lõpetatud. Powerwashi lõpuleviimine võib võtta kuni minuti.</translation> <translation id="3858860766373142691">Nimi</translation> <translation id="3865414814144988605">Eraldusvõime</translation> <translation id="387301095347517405">See arv näitab, mitu korda on teie seadme aku läbinud täieliku laadimistsükli</translation> @@ -275,6 +280,7 @@ <translation id="3941014780699102620">Hosti lahendamine ebaõnnestus</translation> <translation id="3942420633017001071">Diagnostika</translation> <translation id="3954678691475912818">Seadme tüüp pole teada.</translation> +<translation id="3958703339436883942">Taaskäivitamiseks ettevalmistamine …</translation> <translation id="3966286471246132217">Täpsemate tulemuste saamiseks sulgege kõik rakendused, kuni test on lõpetatud.</translation> <translation id="3967822245660637423">Allalaadimine on lõpule viidud</translation> <translation id="3969602104473960991">Chrome OS-i parooli värskendati</translation> @@ -424,6 +430,7 @@ <translation id="5275828089655680674">Taaskäita rutiinid</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versioon <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Järgmisel ekraanikuval jätkamiseks keelake kirjutuskaitse. Vaadake juhiseid seadme tootja toelehelt.</translation> <translation id="5300814202279832142">Teisalda aken töölauale</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Ühendamine</translation> @@ -453,6 +460,7 @@ <translation id="5507300744274596613">Veenduge, et Chrome OS oleks värskendatud</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Komponentide kalibreerimine</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skanni uuesti</translation> <translation id="5583640892426849032">Tagasilükkeklahv</translation> @@ -475,6 +483,7 @@ <translation id="583281660410589416">Tundmatu</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Koduteenuse pakkuja kood</translation> +<translation id="5856532218727053281">Süsteem taaskäivitub pärast kirjutuskaitse oleku kinnitamist</translation> <translation id="5859603669299126575">Kunstigalerii album</translation> <translation id="5860033963881614850">Väljas</translation> <translation id="5860491529813859533">Lülita sisse</translation> @@ -705,6 +714,7 @@ <translation id="8206859287963243715">Mobiil</translation> <translation id="8208861521865154048">Hüved</translation> <translation id="8217675307824400706">Looge ühendus</translation> +<translation id="8221728673725659466">Kalibreerimine on lõpetatud</translation> <translation id="8226628635270268143">Valige oma lemmikfotod ja -albumid</translation> <translation id="8230672074305416752">Vaikevõrgulüüsi pingimine ebaõnnestus</translation> <translation id="8246209727385807362">Tundmatu operaator</translation> @@ -716,6 +726,7 @@ <translation id="8297006494302853456">Nõrk</translation> <translation id="8302368968391049045">HTTPS-i tulemüür</translation> <translation id="8318753676953949627">Pilte pole</translation> +<translation id="8327249300223641918">Enne jätkamist asetage kogu seade (alus ja kaas) tasasele pinnale.</translation> <translation id="8336739000755212683">Seadme kontopildi muutmine</translation> <translation id="8347227221149377169">Prinditööd</translation> <translation id="8352772353338965963">Lisage mitmele kontole sisselogimiseks konto. Kõigile kontodele, kuhu on sisse logitud, pääseb juurde ilma paroolita, seega soovitame seda funktsiooni kasutada vaid usaldusväärsete kontodega.</translation> @@ -730,6 +741,7 @@ <translation id="844521431886043384">DNS ei ole seadistatud</translation> <translation id="8456761643544401578">Automaatne tume režiim</translation> <translation id="8461329675984532579">Koduteenuse pakkuja nimi</translation> +<translation id="8467104829907989997">Komponentide kalibreerimine …</translation> <translation id="8475690821716466388">WiFi-võrk on kaitstud nõrga protokolliga (WEP PSK)</translation> <translation id="8477551185774834963">DNS-i latentsusaeg ületab veidi lubatud piiri</translation> <translation id="8483248364096924578">IP-aadress</translation> @@ -789,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skanni}=1{Skanni {NUMBER_OF_PAGES}. lehte}other{Skanni {NUMBER_OF_PAGES}. lehte}}</translation> <translation id="8997710128084572139">Seadme aku laetus on <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">Sagedus</translation> +<translation id="9025198690966128418">Isikliku seadme kasutamine</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS-i eraldusvõimel on pikk latentsusaeg</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index 99ac924..1153be5f 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">بعدی</translation> <translation id="1204296502688602597">تأخیر ساناد</translation> <translation id="123124571410524056">احتمالاً درگاهی وجود دارد</translation> +<translation id="1236400083787698183">قبلاز بازراهاندازی، Powerwash را در دستگاهتان اجرا کنید. اگر دستگاهتان درب دارد، تا زمانی که Powerwash تکمیل نشده است، درب را نبندید. تکمیل Powerwash ممکن است حداکثر یک دقیقه طول بکشد.</translation> <translation id="1238612778414822719">تأخیر در HTTPS</translation> +<translation id="1240699967155581440">Powerwash (بازنشانی کارخانهای) لازم است</translation> <translation id="1264116747675686718">درحال بهروزرسانی نسخه سیستمعامل</translation> <translation id="1264369926465113395">مجله دیجیتال جدید Chromebook برای سازندگان محتوا را بررسی کنید</translation> <translation id="1270369111467284986">احتمالاً درگاه مهمان وجود دارد</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />قطعات غیرمجاز<ph name="LINK_END" /> شناسایی شد. اگر میخواهید تأیید کنید این قطعات نصب شدهاند، لطفاً اکنون این کار را انجام دهید.</translation> <translation id="2363636958541445404">برای انتخاب گزینههای محافظ صفحهنمایش، این ویژگی را روشن کنید</translation> <translation id="2364498172489649528">موفق</translation> +<translation id="236594517359128026">قبلاز ادامه، رایانه کیفیتان را روی سطحی صاف قرار دهید</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">ارسال گزارش بازخورد</translation> <translation id="2407209115954268704">وضعیت قفل سیمکارت</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">پین نامعتبر است.</translation> <translation id="3838338534323494292">گذرواژه جدید</translation> <translation id="385051799172605136">بازگشت</translation> +<translation id="385832974417157471">قبلاز خاموش کردن، Powerwash را در دستگاهتان اجرا کنید. اگر دستگاهتان درب دارد، تا زمانی که Powerwash تکمیل نشده است، درب را نبندید. تکمیل Powerwash ممکن است حداکثر یک دقیقه طول بکشد.</translation> <translation id="3858860766373142691">نام</translation> <translation id="3865414814144988605">وضوح</translation> <translation id="387301095347517405">تعداد دفعاتی که باتریتان یک دوره شارژ کامل را گذرانده است</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">اطمینان از بهروز بودن Chrome OS</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">واسنجی اجزا</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">اسکن مجدد</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">سلولی</translation> <translation id="8208861521865154048">هدیهها</translation> <translation id="8217675307824400706">متصل شوید</translation> +<translation id="8221728673725659466">واسنجی تکمیل شد</translation> <translation id="8226628635270268143">انتخاب عکسها و آلبومهای دلخواه</translation> <translation id="8230672074305416752">پینگ کردن دروازه شبکه پیشفرض انجام نشد</translation> <translation id="8246209727385807362">شرکت مخابراتی ناشناس</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">ضعیف</translation> <translation id="8302368968391049045">دیواره آتش HTTPS</translation> <translation id="8318753676953949627">تصویری وجود ندارد</translation> +<translation id="8327249300223641918">قبلاز ادامه، کل دستگاهتان (پایه و درب) را روی سطحی صاف قرار دهید.</translation> <translation id="8336739000755212683">تغییر تصویر حساب دستگاه</translation> <translation id="8347227221149377169">کارهای چاپی</translation> <translation id="8352772353338965963">افزودن یک حساب برای ورود چندگانه به سیستم. کلیه حسابهایی که به سیستم وارد شدهاند بدون گذرواژه قابل دسترسی هستند، بنابراین این قابلیت فقط باید با حسابهای مورداعتماد استفاده شود.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">ساناد تنظیم نشده است</translation> <translation id="8456761643544401578">حالت تاریک خودکار</translation> <translation id="8461329675984532579">نام ارائهدهنده اصلی</translation> +<translation id="8467104829907989997">درحال واسنجی اجزا…</translation> <translation id="8475690821716466388">شبکه Wi-Fi با پروتکل ضعیف WEP PSK ایمن شده است</translation> <translation id="8477551185774834963">تأخیر در ساناد اندکی از آستانه مجاز بالاتر است</translation> <translation id="8483248364096924578">نشانی IP</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{اسکن}=1{اسکن کردن صفحه {NUMBER_OF_PAGES}}one{اسکن کردن صفحه {NUMBER_OF_PAGES}}other{اسکن کردن صفحه {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">باتری دستگاه <ph name="BATTERY_PERCENTAGE" />٪ شارژ دارد.</translation> <translation id="9003704114456258138">فرکانس</translation> +<translation id="9025198690966128418">استفاده بهعنوان دستگاه شخصی</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">تفکیک ساناد تأخیر زیادی دارد</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index 6c79985..757cfad 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Poista tumma teema käytöstä</translation> <translation id="1807246157184219062">Vaalea</translation> <translation id="1827738518074806965">Taidegalleria</translation> +<translation id="1840835860961531162">Laita kirjoitussuojaus pois päältä</translation> <translation id="1851218745569890714">Videokonferenssit</translation> <translation id="1852934301711881861">Asenna ChromeOS Flex</translation> <translation id="1856388568474281774">Alanuoli</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Isännän selvittäminen epäonnistui</translation> <translation id="3942420633017001071">Diagnostiikka</translation> <translation id="3954678691475912818">Laitetyyppi on tuntematon.</translation> +<translation id="3958703339436883942">Valmistellaan uudelleenkäynnistystä…</translation> <translation id="3966286471246132217">Jos haluat tarkempia tuloksia, sulje kaikki sovellukset, kunnes testi on suoritettu.</translation> <translation id="3967822245660637423">Lataus on valmis</translation> <translation id="3969602104473960991">Chrome-käyttöjärjestelmän salasana vaihdettu</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Suorita ohjelmat uudelleen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versio <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Poista kirjoitussuojaus käytöstä, jotta voit jatkaa seuraavaan kohtaan. Ohjeita on laitteen valmistajan tukisivulla.</translation> <translation id="5300814202279832142">Siirrä ikkuna työpöydälle</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Muodosta yhteys</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Tuntematon</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Kotiverkon palveluntarjoajan koodi</translation> +<translation id="5856532218727053281">Järjestelmä käynnistyy uudelleen, kun kirjoitussuojauksen tila on vahvistettu</translation> <translation id="5859603669299126575">Taidegalleria-albumi</translation> <translation id="5860033963881614850">Pois päältä</translation> <translation id="5860491529813859533">Ota käyttöön</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index f04e8c8..59dba1f5 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Susunod</translation> <translation id="1204296502688602597">Latency ng DNS</translation> <translation id="123124571410524056">May pinaghihinalaang portal</translation> +<translation id="1236400083787698183">Bago mag-restart, i-powerwash ang iyong device. Kung may takip ang device mo, hintaying makumpleto ang powerwash bago isara ang takip. Posibleng umabot ng hanggang isang minuto para makumpleto ang powerwash.</translation> <translation id="1238612778414822719">Latency ng HTTPS</translation> +<translation id="1240699967155581440">Kailangang mag-powerwash (mag-factory reset)</translation> <translation id="1264116747675686718">Ina-update ang bersyon ng OS</translation> <translation id="1264369926465113395">Tingnan ang bagong digital na magazine ng Chromebook para sa mga creator</translation> <translation id="1270369111467284986">May pinaghihinalaang captive portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">May na-detect na <ph name="LINK_BEGIN" />mga hindi kwalipikadong bahagi<ph name="LINK_END" />. Kung pipiliin mong kumpirmahin na na-install na ito, pakigawa ito ngayon.</translation> <translation id="2363636958541445404">I-on ang feature para pumili ng mga opsyon sa screensaver</translation> <translation id="2364498172489649528">Nakapasa</translation> +<translation id="236594517359128026">Bago magpatuloy, ilagay ang iyong laptop sa isang patag na lugar</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Magpadala ng Ulat ng Feedback</translation> <translation id="2407209115954268704">Status ng Lock ng SIM</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Di-wasto ang PIN.</translation> <translation id="3838338534323494292">Bagong password</translation> <translation id="385051799172605136">Bumalik</translation> +<translation id="385832974417157471">Bago mag-shut down, i-powerwash ang iyong device. Kung may takip ang device mo, hintaying makumpleto ang powerwash bago isara ang takip. Posibleng umabot ng hanggang isang minuto para makumpleto ang powerwash.</translation> <translation id="3858860766373142691">Pangalan</translation> <translation id="3865414814144988605">Resolution</translation> <translation id="387301095347517405">Ang dami ng beses na na-full charge ang iyong baterya</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Tiyaking up to date ang Chrome OS</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">I-calibrate ang mga component</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Mag-scan ulit</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Cellular</translation> <translation id="8208861521865154048">Mga Perk</translation> <translation id="8217675307824400706">Kumonekta</translation> +<translation id="8221728673725659466">Kumpleto na ang pag-calibrate</translation> <translation id="8226628635270268143">Piliin ang iyong mga paboritong larawan at album</translation> <translation id="8230672074305416752">Hindi na-ping ang default na network gateway</translation> <translation id="8246209727385807362">Hindi kilalang carrier</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Mahina</translation> <translation id="8302368968391049045">Firewall ng HTTPS</translation> <translation id="8318753676953949627">Walang Larawan</translation> +<translation id="8327249300223641918">Bago magpatuloy, ilagay ang iyong buong device (base at takip) sa isang patag na lugar.</translation> <translation id="8336739000755212683">Baguhin ang larawan ng account ng device</translation> <translation id="8347227221149377169">Mga pag-print</translation> <translation id="8352772353338965963">Magdagdag ng account sa multiple na pag-sign in. Maa-access ang lahat ng naka-sign in na account nang walang password, kaya dapat na gamitin lang ang feature na ito sa mga pinagkakatiwalaang account.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">Hindi naka-set up ang DNS</translation> <translation id="8456761643544401578">Awtomatikong dark mode</translation> <translation id="8461329675984532579">Pangalan ng home provider</translation> +<translation id="8467104829907989997">Kina-calibrate ang mga component...</translation> <translation id="8475690821716466388">Naka-secure ang WiFi network gamit ang mahinang protocol na WEP PSK</translation> <translation id="8477551185774834963">Medyo mas mataas sa pinapayagang limitasyon ang latency ng DNS</translation> <translation id="8483248364096924578">IP address</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{I-scan}=1{I-scan ang page {NUMBER_OF_PAGES}}one{I-scan ang page {NUMBER_OF_PAGES}}other{I-scan ang page {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">May <ph name="BATTERY_PERCENTAGE" />% baterya ang device.</translation> <translation id="9003704114456258138">Frequency</translation> +<translation id="9025198690966128418">Gamitin bilang personal na device</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Mataas ang latency ng resolution ng DNS</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb index da2e654..25bfb4d 100644 --- a/chromeos/strings/chromeos_strings_fr-CA.xtb +++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Désactiver le thème sombre</translation> <translation id="1807246157184219062">Clair</translation> <translation id="1827738518074806965">Galerie d'art</translation> +<translation id="1840835860961531162">Désactiver la protection en écriture</translation> <translation id="1851218745569890714">Vidéoconférence</translation> <translation id="1852934301711881861">Installer Chrome OS Flex</translation> <translation id="1856388568474281774">Flèche vers le bas</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Impossible de résoudre l'hôte</translation> <translation id="3942420633017001071">Diagnostics</translation> <translation id="3954678691475912818">Le type d'appareil est inconnu.</translation> +<translation id="3958703339436883942">Préparation au redémarrage en cours…</translation> <translation id="3966286471246132217">Pour obtenir des résultats plus précis, fermez toutes les applications jusqu'à la fin du test.</translation> <translation id="3967822245660637423">Téléchargement terminé</translation> <translation id="3969602104473960991">Mot de passe de Chrome OS mis à jour</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Relancer les routines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">version <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Désactivez la protection en écriture pour passer à l'écran suivant. Consultez la page d'assistance du fabricant de l'appareil pour obtenir des instructions.</translation> <translation id="5300814202279832142">Déplacer la fenêtre vers le bureau</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Connecter</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Inconnu</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Code de propriétaire</translation> +<translation id="5856532218727053281">Le système redémarrera après la vérification de l'état de la protection en écriture</translation> <translation id="5859603669299126575">Album de galerie d'art</translation> <translation id="5860033963881614850">Désactivé</translation> <translation id="5860491529813859533">Activer</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index c4bf486..bf3d8a62 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Désactiver le thème sombre</translation> <translation id="1807246157184219062">Clair</translation> <translation id="1827738518074806965">Galerie d'art</translation> +<translation id="1840835860961531162">Désactiver la protection en écriture</translation> <translation id="1851218745569890714">Visioconférence</translation> <translation id="1852934301711881861">Installer Chrome OS Flex</translation> <translation id="1856388568474281774">Flèche vers le bas</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Impossible de résoudre l'hôte</translation> <translation id="3942420633017001071">Diagnostics</translation> <translation id="3954678691475912818">Le type d'appareil est inconnu.</translation> +<translation id="3958703339436883942">Redémarrage en cours de préparation</translation> <translation id="3966286471246132217">Pour obtenir des résultats plus précis, gardez toutes les applis fermées jusqu'à la fin du test.</translation> <translation id="3967822245660637423">Téléchargement terminé</translation> <translation id="3969602104473960991">Le mot de passe de Chrome OS a été mis à jour</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Exécuter de nouveau les routines</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">version <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Désactivez la protection en écriture pour passer à l'écran suivant. Accédez à la page d'assistance du fabricant de l'appareil pour obtenir des instructions.</translation> <translation id="5300814202279832142">Déplacer la fenêtre sur le bureau</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Connexion</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Inconnu</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Code du fournisseur personnel</translation> +<translation id="5856532218727053281">Le système redémarrera après avoir validé l'état de la protection en écriture</translation> <translation id="5859603669299126575">Album de la Galerie d'art</translation> <translation id="5860033963881614850">Désactivé</translation> <translation id="5860491529813859533">Activer</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 215b438..fe8a262c 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Desactivar tema escuro</translation> <translation id="1807246157184219062">Claro</translation> <translation id="1827738518074806965">Galería de arte</translation> +<translation id="1840835860961531162">Desactivar a protección contra a escritura</translation> <translation id="1851218745569890714">Videoconferencias</translation> <translation id="1852934301711881861">Instalar Chrome OS Flex</translation> <translation id="1856388568474281774">Frecha abaixo</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Produciuse un erro ao resolver o host</translation> <translation id="3942420633017001071">Diagnósticos</translation> <translation id="3954678691475912818">Descoñécese o tipo de dispositivo.</translation> +<translation id="3958703339436883942">Preparándose para reiniciar…</translation> <translation id="3966286471246132217">Para obter resultados máis precisos, pecha todas as aplicacións ata que remate a proba.</translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="3969602104473960991">Modificouse o contrasinal de Chrome OS</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Volver executar rutinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versión <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Desactiva a protección contra a escritura para ir á pantalla seguinte. Consulta as instrucións na páxina de asistencia do fabricante do dispositivo.</translation> <translation id="5300814202279832142">Mover ventá a escritorio</translation> <translation id="5304899856529773394">EvDO</translation> <translation id="5308380583665731573">Conectar</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Descoñecido</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Código do fornecedor de orixe</translation> +<translation id="5856532218727053281">O sistema reiniciarase despois de verificar o estado da protección contra a escritura</translation> <translation id="5859603669299126575">Álbum da galería de arte</translation> <translation id="5860033963881614850">Non</translation> <translation id="5860491529813859533">Activar</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 14dc7741..149b892 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">अगला</translation> <translation id="1204296502688602597">डिवाइस और डीएनएस के बीच के इंतज़ार का समय</translation> <translation id="123124571410524056">पोर्टल में गड़बड़ी हो सकती है</translation> +<translation id="1236400083787698183">रीस्टार्ट करने से पहले, डिवाइस को पावरवॉश करें. अगर आपके डिवाइस का कोई लिड है, तो पावरवॉश पूरा होने के बाद ही उसे बंद करें. पावरवॉश पूरा होने में एक मिनट तक लग सकता है.</translation> <translation id="1238612778414822719">एचटीटीपीएस पेजों के खुलने में इंतज़ार का समय</translation> +<translation id="1240699967155581440">पावरवॉश (फ़ैक्ट्री रीसेट) करना ज़रूरी है</translation> <translation id="1264116747675686718">ओएस वर्शन अपडेट किया जा रहा है</translation> <translation id="1264369926465113395">क्रिएटर्स के लिए तैयार की गई, Chromebook की नई डिजिटल पत्रिका देखें</translation> <translation id="1270369111467284986">कैप्टिव पोर्टल हो सकता है</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />अमान्य कॉम्पोनेंट<ph name="LINK_END" /> मिले. अगर इनकी पुष्टि 'इंस्टॉल कर दिए गए हैं' के तौर पर करनी है, तो कृपया अभी पुष्टि करें.</translation> <translation id="2363636958541445404">स्क्रीन सेवर चुनने के लिए, फ़ीचर चालू करें</translation> <translation id="2364498172489649528">जांच में पास</translation> +<translation id="236594517359128026">आगे बढ़ने से पहले, अपने लैपटॉप को किसी समतल जगह पर रखें</translation> <translation id="2380886658946992094">कानूनी</translation> <translation id="2391082728065870591">सुझाव, शिकायत या राय की रिपोर्ट भेजें</translation> <translation id="2407209115954268704">सिम लॉक स्टेटस</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">गलत पिन</translation> <translation id="3838338534323494292">नया पासवर्ड</translation> <translation id="385051799172605136">वापस जाएं</translation> +<translation id="385832974417157471">शट डाउन करने से पहले, डिवाइस को पावरवॉश करें. अगर आपके डिवाइस का कोई लिड है, तो पावरवॉश पूरा होने के बाद ही उसे बंद करें. पावरवॉश पूरा होने में एक मिनट तक लग सकता है.</translation> <translation id="3858860766373142691">नाम</translation> <translation id="3865414814144988605">रिज़ॉल्यूशन</translation> <translation id="387301095347517405">इतनी बार आपकी बैटरी पूरी चार्ज हुई है</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">पक्का करें कि Chrome OS अप-टू-डेट हो</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">कॉम्पोनेंट को कैलिब्रेट करना</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">दोबारा स्कैन करें</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">सेलुलर</translation> <translation id="8208861521865154048">फ़ायदे</translation> <translation id="8217675307824400706">वाई-फ़ाई से कनेक्ट हों</translation> +<translation id="8221728673725659466">कैलिब्रेशन पूरा हुआ</translation> <translation id="8226628635270268143">अपनी पसंदीदा फ़ोटो और एल्बम चुनें</translation> <translation id="8230672074305416752">डिफ़ॉल्ट नेटवर्क गेटवे को पिंग नहीं किया जा सका</translation> <translation id="8246209727385807362">अज्ञात वाहक</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">कमज़ोर</translation> <translation id="8302368968391049045">एचटीटीपीएस फ़ायरवॉल</translation> <translation id="8318753676953949627">कोई इमेज नहीं</translation> +<translation id="8327249300223641918">आगे बढ़ने से पहले, पूरे डिवाइस (बेस और लिड) को किसी समतल जगह पर रखें.</translation> <translation id="8336739000755212683">डिवाइस खाते की इमेज बदलें</translation> <translation id="8347227221149377169">प्रिंट जॉब</translation> <translation id="8352772353338965963">एक से ज़्यादा साइन-इन के लिए कोई खाता जोड़ें. सभी साइन इन किए गए खातों को पासवर्ड के बिना एक्सेस किया जा सकता है, इसलिए इस सुविधा का इस्तेमाल सिर्फ़ विश्वसनीय खातों के साथ किया जाना चाहिए.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">डीएनएस सेट अप नहीं किया गया है</translation> <translation id="8456761643544401578">अपने-आप गहरे रंग वाला मोड</translation> <translation id="8461329675984532579">'होम' पर सेवाएं देने वाली कंपनी का नाम</translation> +<translation id="8467104829907989997">कॉम्पोनेंट कैलिब्रेट किए जा रहे हैं...</translation> <translation id="8475690821716466388">यह वाई-फ़ाई नेटवर्क एक कमज़ोर प्रोटोकॉल WEP PSK से सुरक्षित है</translation> <translation id="8477551185774834963">डीएनएस, इंतज़ार की समयसीमा से थोड़ा ऊपर है</translation> <translation id="8483248364096924578">आईपी पता</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{स्कैन करें}=1{{NUMBER_OF_PAGES} स्कैन करें}one{{NUMBER_OF_PAGES} स्कैन करें}other{{NUMBER_OF_PAGES} स्कैन करें}}</translation> <translation id="8997710128084572139">डिवाइस में <ph name="BATTERY_PERCENTAGE" />% बैटरी बची है.</translation> <translation id="9003704114456258138">आवृत्ति</translation> +<translation id="9025198690966128418">निजी डिवाइस के तौर पर इस्तेमाल करें</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">डीएनएस रिज़ॉल्यूशन के इंतज़ार का समय ज़्यादा है</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index 0f80b0f..95d2354 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Dalje</translation> <translation id="1204296502688602597">Latencija DNS-a</translation> <translation id="123124571410524056">Moguć je portal</translation> +<translation id="1236400083787698183">Prije ponovnog pokretanja vratite uređaj na tvorničke postavke (Powerwash). Ako uređaj ima poklopac, pričekajte da se vraćanje na tvorničke postavke dovrši prije nego što zatvorite poklopac. Vraćanje na tvorničke postavke može potrajati do jedne minute.</translation> <translation id="1238612778414822719">Latencija HTTPS-a</translation> +<translation id="1240699967155581440">Potrebno je vraćanje na tvorničke postavke (Powerwash)</translation> <translation id="1264116747675686718">Ažuriranje verzije OS-a</translation> <translation id="1264369926465113395">Provjerite Chromebookov novi digitalni časopis za autore</translation> <translation id="1270369111467284986">Moguć zaštitni portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Otkrivene su <ph name="LINK_BEGIN" />nekvalificirane komponente<ph name="LINK_END" />. Ako želite potvrditi da su instalirane, učinite to odmah.</translation> <translation id="2363636958541445404">Uključite tu značajku da biste odabrali opcije čuvara zaslona</translation> <translation id="2364498172489649528">Uspješno</translation> +<translation id="236594517359128026">Prije nego što nastavite, prijenosno računalo postavite na ravnu površinuj</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Slanje izvješća s povratnim informacijama</translation> <translation id="2407209115954268704">Status zaključavanja SIM-a</translation> @@ -158,6 +161,7 @@ <translation id="2446553403094072641">Točnost pomičnog zareza</translation> <translation id="2448312741937722512">Vrsta</translation> <translation id="2461822463642141190">Trenutačno</translation> +<translation id="2480034874476596812">Ručno isključivanje</translation> <translation id="2491955442992294626">Tipke se ne testiraju kada upotrebljavate drugi prozor</translation> <translation id="2493126929778606526">Vaše najbolje automatski odabrane fotografije</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> @@ -253,6 +257,7 @@ <translation id="3606583719724308068">Visoka latencija do HTTPS web-lokacija</translation> <translation id="3621202678540785336">Ulaz</translation> <translation id="3632579075709132555">Prekidač zaslona privatnosti</translation> +<translation id="3678765385266369662">Odaberite kako želite isključiti Write Protect</translation> <translation id="3689839747745352263">Test <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Učitavanje...</translation> <translation id="3708186454126126312">Prethodno povezano</translation> @@ -265,6 +270,7 @@ <translation id="3820172043799983114">PIN nije važeći.</translation> <translation id="3838338534323494292">Nova zaporka</translation> <translation id="385051799172605136">Natrag</translation> +<translation id="385832974417157471">Prije nego što isključite uređaj, vratite ga na tvorničke postavke. Ako uređaj ima poklopac, pričekajte da se vraćanje na tvorničke postavke dovrši prije nego što zatvorite poklopac. Vraćanje na tvorničke postavke može potrajati do jedne minute.</translation> <translation id="3858860766373142691">Naziv</translation> <translation id="3865414814144988605">Razlučivost</translation> <translation id="387301095347517405">Koliko se puta vaša baterija potpuno napunila</translation> @@ -309,6 +315,7 @@ <translation id="4244962993387259361">Da biste testirali memoriju, najmanje 500 MB mora biti slobodno. Da biste oslobodili prostor, otvorite Postavke > Upravljanje pohranom.</translation> <translation id="4250229828105606438">Snimka zaslona</translation> <translation id="4258281355379922695">Latencija HTTP-a</translation> +<translation id="4258561075226177474">Uređaj se vraća istom korisniku. Želite li izbrisati korisničke podatke?</translation> <translation id="4271957103967917607">Prikaži na cijelom zaslonu</translation> <translation id="4275799948641988986">Tko će nakon popravka koristiti uređaj?</translation> <translation id="4289540628985791613">Pregled</translation> @@ -357,6 +364,7 @@ <translation id="473775607612524610">Ažuriraj</translation> <translation id="4744944742468440486">Informacije o vašem odabiru</translation> <translation id="4773299976671772492">Zaustavljeno</translation> +<translation id="4774530504324923332">Trebat će vam sigurnosni ključ omogućen za RSU, čitač QR koda i drugi uređaj s internetskom vezom</translation> <translation id="4782311465517282004">Pronađite definicije, prijevode ili pretvorbe jedinica kada tekst kliknete desnom tipkom ili ga dodirnete i držite</translation> <translation id="4791000909649665275"><ph name="NUMBER" /> fotografija</translation> <translation id="4793710386569335688">Za dodatnu pomoć posjetite <ph name="BEGIN_LINK" />centar za pomoć<ph name="END_LINK" />.</translation> @@ -437,6 +445,7 @@ <translation id="5372659122375744710">Wi-Fi mreža nije sigurna</translation> <translation id="5376354385557966694">Automatski svijetli način</translation> <translation id="537872351913703572">Uređaj će se vratiti drugom korisniku ili organizaciji</translation> +<translation id="5395600419410242651">Izbriši sve podatke</translation> <translation id="5400907029458559844">Uređaj se povezuje.</translation> <translation id="5401938042319910061">Pokreni sve rutine</translation> <translation id="5423849171846380976">Aktivirano</translation> @@ -451,6 +460,7 @@ <translation id="5507300744274596613">Provjerite je li OS Chrome ažuriran</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Kalibriranje komponenti</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skeniraj ponovo</translation> <translation id="5583640892426849032">Backspace</translation> @@ -650,6 +660,7 @@ <translation id="7570674786725311828">USB dodirni zaslon</translation> <translation id="7595982850646262331">Još <ph name="TIME_VALUE" /></translation> <translation id="7620771111601174153">Saznajte više u centru za pomoć</translation> +<translation id="7626501172915339021">Otključavanje RMA poslužitelja (RSU)</translation> <translation id="763165478673169849">Vrijeme posljednjeg poništavanja</translation> <translation id="7648838807254605802">Visoka latencija HTTPS-a</translation> <translation id="7656388927906093505">Uređaj je miš.</translation> @@ -703,6 +714,7 @@ <translation id="8206859287963243715">Mobitel</translation> <translation id="8208861521865154048">Pogodnosti</translation> <translation id="8217675307824400706">Povežite se</translation> +<translation id="8221728673725659466">Kalibracija dovršena</translation> <translation id="8226628635270268143">Odaberite svoje omiljene fotografije i albume</translation> <translation id="8230672074305416752">Pinganje pristupnika zadane mreže nije uspjelo</translation> <translation id="8246209727385807362">Nepoznat mobilni operater</translation> @@ -714,6 +726,7 @@ <translation id="8297006494302853456">Slab</translation> <translation id="8302368968391049045">Vatrozid za HTTPS</translation> <translation id="8318753676953949627">Nema slika</translation> +<translation id="8327249300223641918">Prije nego što nastavite, cijeli uređaj (baza i poklopac) postavite na ravnu površinu.</translation> <translation id="8336739000755212683">Promijenite sliku računa uređaja</translation> <translation id="8347227221149377169">Zadaci ispisa</translation> <translation id="8352772353338965963">Dodajte račun na višestruku prijavu. Svim računima na koje ste prijavljeni može se pristupiti bez zaporke, pa bi se ta značajka trebala upotrebljavati samo s pouzdanim računima.</translation> @@ -728,6 +741,7 @@ <translation id="844521431886043384">DNS nije postavljen</translation> <translation id="8456761643544401578">Automatski tamni način</translation> <translation id="8461329675984532579">Naziv davatelja usluge kućne mreže</translation> +<translation id="8467104829907989997">Kalibriranje komponenti...</translation> <translation id="8475690821716466388">Wi-Fi mreža zaštićena je slabim protokolom WEP PSK</translation> <translation id="8477551185774834963">Latencija DNS-a malo iznad dopuštenog praga</translation> <translation id="8483248364096924578">IP adresa</translation> @@ -787,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skeniraj}=1{Skeniraj stranicu {NUMBER_OF_PAGES}}one{Skeniraj stranicu {NUMBER_OF_PAGES}}few{Skeniraj stranicu {NUMBER_OF_PAGES}}other{Skeniraj stranicu {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Uređaj ima <ph name="BATTERY_PERCENTAGE" />% baterije.</translation> <translation id="9003704114456258138">Frekvencija</translation> +<translation id="9025198690966128418">Upotrijebi kao osobni uređaj</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Razrješavanje DNS-a ima visoku latenciju</translation> <translation id="9073281213608662541">PAP</translation> @@ -795,6 +810,8 @@ <translation id="9087578468327036362">Prijavite ovaj upit</translation> <translation id="9088306295921699330">Trenutačna upotreba</translation> <translation id="9095775724867566971">Pluginvm</translation> +<translation id="90977145661420967">Trebat ćete rastaviti uređaj</translation> +<translation id="9098156406873149060">Zadrži korisničke podatke</translation> <translation id="910415269708673980">Osvježite tiket za <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Skeniranje stranice <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Otključaj</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index 6c4c1eb..d3a3a0c 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Tovább</translation> <translation id="1204296502688602597">DNS várakozási ideje</translation> <translation id="123124571410524056">Portál valószínűsíthető</translation> +<translation id="1236400083787698183">Újraindítás előtt végezzen powerwash műveletet az eszközén. Ha eszköze lehajtható képernyővel rendelkezik, várja meg a powerwash befejezését a képernyő lecsukása előtt. A powerwash akár egy percig is eltarthat.</translation> <translation id="1238612778414822719">Várakozási idő HTTPS esetén</translation> +<translation id="1240699967155581440">Powerwash (gyári beállítások visszaállítása) szükséges</translation> <translation id="1264116747675686718">Operációs rendszer verziójának frissítése</translation> <translation id="1264369926465113395">Olvassa el a Chromebook új, alkotóknak szóló digitális magazinját</translation> <translation id="1270369111467284986">Gyaníthatóan hitelesítési portál</translation> @@ -39,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Igazítás a beolvasási területhez</translation> <translation id="1367951781824006909">Válasszon egy fájlt</translation> +<translation id="1380220803921738821">Hibák merültek fel. Indítsa újra az eszközt, vagy állítsa helyre a firmware-t egy pendrive segítségével.</translation> <translation id="1387854245479784695">Ez az összes mag összesítése</translation> <translation id="1394661041439318933">Az eszköz tokjának akkumulátorszintje: <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="1397738625398125236">Az átjáró pingelhető</translation> @@ -149,6 +152,7 @@ <translation id="2360257214555822463">A rendszer <ph name="LINK_BEGIN" />nem jóváhagyott összetevőket<ph name="LINK_END" /> észlelt. Ha meg szeretné erősíteni az összetevők telepítését, most tegye meg.</translation> <translation id="2363636958541445404">Kapcsolja be a funkciót a képernyőkímélő-beállítások kiválasztásához</translation> <translation id="2364498172489649528">Sikeres ellenőrzés</translation> +<translation id="236594517359128026">A folytatás előtt helyezze a laptopot egyenletes felületre.</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Visszajelzési jelentés küldése</translation> <translation id="2407209115954268704">SIM-zárolás állapota</translation> @@ -183,6 +187,7 @@ <translation id="2789486458103222910">OK</translation> <translation id="2805756323405976993">Alkalmazások</translation> <translation id="28232023175184696">Nem lehet csatlakozni az internethez. Kattintson az újrapróbálkozáshoz.</translation> +<translation id="2827359915699915567">Az RSU-kód lekéréséhez manuálisan gépelje be ezt az URL-t</translation> <translation id="2859243502336719778">Kritikus frissítés</translation> <translation id="2860473693272905224">Helyezze az újabb oldalt a szkennerre</translation> <translation id="2872961005593481000">Leállítás</translation> @@ -221,6 +226,7 @@ <translation id="3291996639387199448">Kulcs iránya</translation> <translation id="3310640316857623290">A DNS várakozási ideje jelentősen az engedélyezhető határérték felett van</translation> <translation id="3328783797891415197">A teszt fut</translation> +<translation id="3333527094307156612">Ezzel a QR-kóddal kérje le a nyolc karakteres feloldási kódot. Manuálisan is begépelheti <ph name="LINK_BEGIN" />ezt az URL-t<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Nem tudom</translation> <translation id="3340011300870565703">Jobb fülhallgató akkumulátorszintje: <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="3368922792935385530">Kapcsolódva</translation> @@ -254,6 +260,7 @@ <translation id="3606583719724308068">Hosszú a várakozási idő a HTTPS-protokollt használó webhelyekhez való csatlakozáskor</translation> <translation id="3621202678540785336">Bemenet</translation> <translation id="3632579075709132555">Az Adatvédelmi képernyő kapcsolója</translation> +<translation id="3643810137582748570">Kalibrálás kihagyása</translation> <translation id="3678765385266369662">Válassza ki, miként szeretné kikapcsolni az írásvédelmet</translation> <translation id="3689839747745352263">Teszt: <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Betöltés...</translation> @@ -267,6 +274,7 @@ <translation id="3820172043799983114">Érvénytelen PIN-kód.</translation> <translation id="3838338534323494292">Új jelszó</translation> <translation id="385051799172605136">Vissza</translation> +<translation id="385832974417157471">Leállítás előtt végezzen powerwash műveletet az eszközén. Ha eszköze lehajtható képernyővel rendelkezik, várja meg a powerwash befejezését a képernyő lecsukása előtt. A powerwash akár egy percig is eltarthat.</translation> <translation id="3858860766373142691">Név</translation> <translation id="3865414814144988605">Felbontás</translation> <translation id="387301095347517405">Annak a száma, hogy hány teljes töltési ciklusa volt az akkumulátornak.</translation> @@ -403,6 +411,7 @@ <translation id="5049856988445523908">SIM zárolva (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Csoport neve</translation> <translation id="5051044138948155788">Ez az egy oldal van csak. A művelet végrehajtása esetén a beolvasás indítóképernyőjére jut.</translation> +<translation id="506768878203270635">Írja be a nyolc karaktert</translation> <translation id="5088172560898466307">Szerver gépneve</translation> <translation id="5089810972385038852">Állam</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -456,6 +465,7 @@ <translation id="5507300744274596613">Győződjön meg arról, hogy a Chrome OS naprakész</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Összetevők kalibrálása</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Újbóli beolvasás</translation> <translation id="5583640892426849032">Backspace</translation> @@ -463,6 +473,7 @@ <translation id="5620281292257375798">Csak belső</translation> <translation id="5649768706273821470">Meghallgatás</translation> <translation id="5655283760733841251">Billentyűzet fényerejének növelése</translation> +<translation id="5661196929408385351">Powerwash és leállítás</translation> <translation id="5669267381087807207">Aktiválás</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Család</translation> @@ -474,6 +485,7 @@ <translation id="576835345334454681">Kijelző fényerejének növelése</translation> <translation id="57838592816432529">Némítás</translation> <translation id="5784136236926853061">Hosszú HTTP várakozási idő</translation> +<translation id="578753362485952307">Ha egy másik eszközben újra fel szeretne használni egy alaplapot, végezze el az <ph name="LINK_BEGIN" />átalakítási folyamatot<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Személy hozzáadása</translation> <translation id="583281660410589416">Ismeretlen</translation> <translation id="5843706793424741864">Fahrenheit</translation> @@ -530,6 +542,7 @@ <translation id="6278428485366576908">Téma</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Sötét téma bekapcsolása</translation> +<translation id="6295178529664209245">Folytatja a javítást?</translation> <translation id="6302401976930124515">Teszt (<ph name="TEST_NAME" />) megszakítva</translation> <translation id="6319207335391420837">Firmware telepítése a következőre: <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Képernyővédő bekapcsolása</translation> @@ -565,6 +578,7 @@ <translation id="6575134580692778371">Nincs konfigurálva</translation> <translation id="6579509898032828423">E fotó használata</translation> <translation id="6596816719288285829">IP-cím</translation> +<translation id="6611280807952151149">A(z) <ph name="DEVICE_TYPE" /> javításának megszakítása</translation> <translation id="6618744767048954150">Ellenőrzés folyamatban</translation> <translation id="6620487321149975369">A nyomtatási feladatok láthatók az előzmények között, ha nem távolítják el őket manuálisan</translation> <translation id="6643016212128521049">Törlés</translation> @@ -577,6 +591,7 @@ <translation id="6723839937902243910">Energiaellátás</translation> <translation id="6723847290197874913">Billentyűzet háttérvilágítása</translation> <translation id="672609503628871915">Újdonságok</translation> +<translation id="6746847322826305075">Az alaplap újrakészletezéshez folytathatja teljes javítással, vagy elindíthat egy powerwash műveletet (azaz visszaállíthatja a gyári beállításokat) az eszközön.</translation> <translation id="6747215703636344499">Leállt – Megtelt a kimenet</translation> <translation id="6749473226660745022">Fotók</translation> <translation id="6753452347192452143">Az eszköz egy számítógép.</translation> @@ -624,6 +639,7 @@ <translation id="7216409898977639127">Mobilszolgáltató</translation> <translation id="7271040990581020067">A szkenner jelenleg használatban van. Próbálja újra később.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Válasszon ki legalább egy összetevőt az újrapróbálkozáshoz, vagy hagyja ki a kalibrálást</translation> <translation id="7281657306185710294">Érezze a szellő simogatását</translation> <translation id="7287310195820267359">Háttérképgyűjtemények</translation> <translation id="7297226631177386107">Nem lehet a tűzfalon keresztül HTTPS-protokollt használó webhelyekhez csatlakozni</translation> @@ -654,11 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB-érintőképernyő</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> van hátra</translation> +<translation id="760845693386726841">Nem sikerült észlelni ezt az összetevőt.</translation> <translation id="7620771111601174153">További információ a Súgóban</translation> <translation id="7626501172915339021">Visszáru-engedélyezés szerverfeloldásának végrehajtása (RSU)</translation> <translation id="763165478673169849">Utolsó visszaállítás ideje</translation> <translation id="7648838807254605802">Hosszú várakozási idő HTTPS esetén</translation> <translation id="7656388927906093505">Az eszköz egy egér.</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" /> – javítási hiba</translation> <translation id="7658239707568436148">Mégse</translation> <translation id="7665800271478495366">Avatar módosítása</translation> <translation id="7690294790491645610">Új jelszó megerősítése</translation> @@ -700,6 +718,7 @@ <translation id="8083281199617904460">A javítási folyamat elvégzését szakképzett szerelő számára tervezték. Csak a hibásan működő összetevők cseréje után indítsa el.</translation> <translation id="808894953321890993">Jelszó módosítása</translation> <translation id="8104083085214006426">Ön nyílt és nem biztonságos hálózatot használ</translation> +<translation id="8109786307828817014">Folytatja a sikertelen kalibrálásokkal együtt?</translation> <translation id="811820734797650957">(Android) Az átjáró pingelhető</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8132480444149501833">Forgalomszámlálók kérése</translation> @@ -709,6 +728,7 @@ <translation id="8206859287963243715">Mobil</translation> <translation id="8208861521865154048">Előnyök</translation> <translation id="8217675307824400706">Csatlakozás</translation> +<translation id="8221728673725659466">A kalibrálás befejeződött</translation> <translation id="8226628635270268143">Kedvenc fotók és albumok kiválasztása</translation> <translation id="8230672074305416752">Nem sikerült az alapértelmezett hálózati átjáró pingelése</translation> <translation id="8246209727385807362">Ismeretlen szolgáltató</translation> @@ -720,6 +740,8 @@ <translation id="8297006494302853456">Gyenge</translation> <translation id="8302368968391049045">HTTPS-tűzfal</translation> <translation id="8318753676953949627">Nincsenek képek</translation> +<translation id="8327249300223641918">A folytatás előtt helyezze az egész eszközt (az alapot és a képernyőt is) egyenletes felületre.</translation> +<translation id="8330949592403310082">Adja meg a kicserélt összetevőket</translation> <translation id="8336739000755212683">Eszközfiókhoz tartozó kép módosítása</translation> <translation id="8347227221149377169">Nyomtatási feladatok</translation> <translation id="8352772353338965963">Adjon hozzá egy fiókot a többfiókos bejelentkezéshez. Az összes bejelentkezett fiók elérhető a jelszó megadása nélkül, ezért ezt a funkciót csak megbízható fiókokkal használja.</translation> @@ -734,6 +756,7 @@ <translation id="844521431886043384">A DNS nincs beállítva</translation> <translation id="8456761643544401578">Automatikus sötét mód</translation> <translation id="8461329675984532579">Otthoni szolgáltató neve</translation> +<translation id="8467104829907989997">Összetevők kalibrálása…</translation> <translation id="8475690821716466388">A Wi-Fi-hálózat gyenge protokollal (WEP PSK) van biztosítva</translation> <translation id="8477551185774834963">A DNS várakozási ideje kissé az engedélyezhető határérték felett van</translation> <translation id="8483248364096924578">IP-cím</translation> @@ -742,6 +765,7 @@ <translation id="8503813439785031346">Felhasználónév</translation> <translation id="8503836310948963452">Már csak néhány perc…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Lehet, hogy az összetevők nem működnek rendesen, amíg nem kalibrálja őket</translation> <translation id="8575298406870537639">Szolgáltatója előírhatja ennek a beállításnak a használatát a hálózathoz való csatlakozás érdekében. További információért forduljon a szolgáltatójához.</translation> <translation id="8576249514688522074">Nincs inicializálva</translation> <translation id="8620617069779373398">Roaming állapota</translation> @@ -793,8 +817,10 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Keresés}=1{Keresés {NUMBER_OF_PAGES} oldalon}other{Keresés {NUMBER_OF_PAGES} oldalon}}</translation> <translation id="8997710128084572139">Az eszköz akkumulátorszintje: <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">Frekvencia</translation> +<translation id="9025198690966128418">Használat személyes eszközként</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">A DNS-feloldás várakozási ideje túl hosszú</translation> +<translation id="9063121522582193837">Egyes összetevőket nem sikerült kalibrálni</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">E videó használata</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index 57afb1f..3213e36c 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -94,6 +94,7 @@ <translation id="1801418420130173017">Disabilita il tema scuro</translation> <translation id="1807246157184219062">Chiaro</translation> <translation id="1827738518074806965">Galleria d'arte</translation> +<translation id="1840835860961531162">Disattiva protezione scrittura</translation> <translation id="1851218745569890714">Videoconferenze</translation> <translation id="1852934301711881861">Installa Chrome OS Flex</translation> <translation id="1856388568474281774">Freccia giù</translation> @@ -279,6 +280,7 @@ <translation id="3941014780699102620">impossibile risolvere l'host</translation> <translation id="3942420633017001071">Diagnostica</translation> <translation id="3954678691475912818">Tipo di dispositivo sconosciuto.</translation> +<translation id="3958703339436883942">Preparazione al riavvio in corso…</translation> <translation id="3966286471246132217">Per risultati più accurati, chiudi tutte le app fino al completamento del test.</translation> <translation id="3967822245660637423">Download completato</translation> <translation id="3969602104473960991">Password di Chrome OS aggiornata</translation> @@ -428,6 +430,7 @@ <translation id="5275828089655680674">Riesegui le routine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versione <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Disattiva la protezione scrittura per continuare con la prossima schermata. Vai alla pagina di assistenza del produttore del dispositivo per istruzioni in proposito.</translation> <translation id="5300814202279832142">Sposta finestra nella scrivania</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Connetti</translation> @@ -480,6 +483,7 @@ <translation id="583281660410589416">Sconosciuto</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Codice del provider principale</translation> +<translation id="5856532218727053281">Il sistema si riavvierà dopo aver verificato lo stato della protezione scrittura</translation> <translation id="5859603669299126575">Album di Galleria d'arte</translation> <translation id="5860033963881614850">Off</translation> <translation id="5860491529813859533">Attiva</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 7500b09..425b50ee 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">ダークモードを無効にする</translation> <translation id="1807246157184219062">明</translation> <translation id="1827738518074806965">アート ギャラリー</translation> +<translation id="1840835860961531162">書き込み保護をオフにする</translation> <translation id="1851218745569890714">ビデオ会議</translation> <translation id="1852934301711881861">ChromeOS Flex をインストール</translation> <translation id="1856388568474281774">下矢印</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">ホストを解決できませんでした</translation> <translation id="3942420633017001071">診断</translation> <translation id="3954678691475912818">デバイスの種類は不明です。</translation> +<translation id="3958703339436883942">再起動の準備をしています...</translation> <translation id="3966286471246132217">より正確な結果を得るには、テストが完了するまですべてのアプリを閉じてください。</translation> <translation id="3967822245660637423">ダウンロード完了</translation> <translation id="3969602104473960991">Chrome OS のパスワードが更新されました</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">ルーティンを再実行</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">バージョン <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">書き込み保護を無効にするには、次の画面に進みます。デバイスのメーカーのサポートページで手順をご確認ください。</translation> <translation id="5300814202279832142">ウィンドウをデスクに移動</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">接続</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">不明</translation> <translation id="5843706793424741864">華氏</translation> <translation id="5849570051105887917">ホーム プロバイダのコード</translation> +<translation id="5856532218727053281">書き込み保護のステータスの確認後にシステムを再起動します</translation> <translation id="5859603669299126575">アート ギャラリーのアルバム</translation> <translation id="5860033963881614850">オフ</translation> <translation id="5860491529813859533">オンにする</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index 7a52ace18..74036967 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Қараңғы режимді өшіру</translation> <translation id="1807246157184219062">Ашық</translation> <translation id="1827738518074806965">Өнер галереясы</translation> +<translation id="1840835860961531162">Жазудан қорғауды өшіру</translation> <translation id="1851218745569890714">Бейнеконференция жасау</translation> <translation id="1852934301711881861">ChromeOS Flex-ті орнату</translation> <translation id="1856388568474281774">Төмен бағыт пернесі</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Хост атауы түрлендірілмеді.</translation> <translation id="3942420633017001071">Диагностика</translation> <translation id="3954678691475912818">Құрылғының түрі белгісіз.</translation> +<translation id="3958703339436883942">Өшіріп қосуға дайындалуда...</translation> <translation id="3966286471246132217">Нәтижелер нақтырақ болу үшін, сынақ аяқталғанша барлық қолданбаларды жабыңыз.</translation> <translation id="3967822245660637423">Жүктеп алынды</translation> <translation id="3969602104473960991">ChromeOS құпия сөзі жаңартылды</translation> @@ -423,6 +425,7 @@ <translation id="5275828089655680674">Режимдерді қайта іске қосу</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029"><ph name="MILESTONE_VERSION" />-нұсқа</translation> +<translation id="5298334025463010990">Келесі экранға өту үшін жазуды қорғау функциясын өшіріңіз. Нұсқаулықтар үшін құрылғы өндірушісінің қолдау көрсету бетіне өтіңіз.</translation> <translation id="5300814202279832142">Терезені жұмыс үстеліне жылжыту</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Қосылу</translation> @@ -474,6 +477,7 @@ <translation id="583281660410589416">Белгісіз</translation> <translation id="5843706793424741864">Фаренгейт</translation> <translation id="5849570051105887917">Жергілікті провайдер коды</translation> +<translation id="5856532218727053281">Жүйе жазудан қорғау күйін тексерген соң, өшіріліп қосылады</translation> <translation id="5859603669299126575">Өнер галереясы альбомы</translation> <translation id="5860033963881614850">Өшірулі</translation> <translation id="5860491529813859533">Қосу</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index 7777bb5e..377cd92 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">ಮುಂದೆ</translation> <translation id="1204296502688602597">DNS ವಿಳಂಬ</translation> <translation id="123124571410524056">ಶಂಕಿತ ಪೋರ್ಟಲ್</translation> +<translation id="1236400083787698183">ಮರುಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪವರ್ವಾಶ್ ಮಾಡಿ. ಸಾಧನವು ಮುಚ್ಚಳವನ್ನು ಹೊಂದಿದ್ದರೆ, ಪವರ್ವಾಶ್ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಮುಚ್ಚಳವನ್ನು ಮುಚ್ಚಬೇಡಿ. ಪವರ್ವಾಶ್ ಪೂರ್ಣಗೊಳ್ಳಲು ಒಂದು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.</translation> <translation id="1238612778414822719">HTTPS ವಿಳಂಬ</translation> +<translation id="1240699967155581440">ಪವರ್ವಾಶ್ (ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್) ಅಗತ್ಯವಿದೆ</translation> <translation id="1264116747675686718">OS ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="1264369926465113395">Chromebook ನ ರಚನೆಕಾರರಿಗಾಗಿ ಹೊಸ ಡಿಜಿಟಲ್ ನಿಯತಕಾಲಿಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿ</translation> <translation id="1270369111467284986">ವೈ-ಫೈ ಪ್ರಾರಂಭ ಪೋರ್ಟಲ್ ಸಂಶಯಾಸ್ಪದವಾಗಿದೆ</translation> @@ -39,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">ಸ್ಕ್ಯಾನ್ ಪ್ರದೇಶಕ್ಕೆ ಹೊಂದಿಸಿ</translation> <translation id="1367951781824006909">ಫೈಲ್ವೊಂದನ್ನು ಆರಿಸಿ</translation> +<translation id="1380220803921738821">ನಾವು ದೋಷವನ್ನು ಎದುರಿಸಿದ್ದೇವೆ. USB ಥಂಬ್ ಡ್ರೈವ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫರ್ಮ್ವೇರ್ ಅನ್ನು ರೀಬೂಟ್ ಮಾಡಲು ಅಥವಾ ಮರುಪಡೆಯಲು ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="1387854245479784695">ಇದು ಎಲ್ಲಾ ಕೋರ್ಗಳ ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯಾಗಿದೆ</translation> <translation id="1394661041439318933">ಸಾಧನವು <ph name="BATTERY_PERCENTAGE" />% ಕೇಸ್ ಬ್ಯಾಟರಿಯನ್ನು ಹೊಂದಿದೆ.</translation> <translation id="1397738625398125236">ಗೇಟ್ವೇ ಅನ್ನು ಪಿಂಗ್ ಮಾಡಬಹುದು</translation> @@ -149,6 +152,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />ಅನರ್ಹ ಕಾಂಪೋನೆಂಟ್ಗಳು<ph name="LINK_END" /> ಪತ್ತೆಯಾಗಿವೆ. ಇದನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಲು ನೀವು ಆರಿಸಿದರೆ, ಈಗಲೇ ಮಾಡಿ.</translation> <translation id="2363636958541445404">ಸ್ಕ್ರೀನ್ಸೇವರ್ ಆಯ್ಕೆಗಳನ್ನು ಆರಿಸಲು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆನ್ ಮಾಡಿ</translation> <translation id="2364498172489649528">ಪರಿಶೀಲನೆ ಸಫಲವಾಗಿದೆ</translation> +<translation id="236594517359128026">ಮುಂದುವರಿಯುವ ಮೊದಲು, ನಿಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ ಅನ್ನು ಸಮತಟ್ಟಾದ ಮೇಲ್ಮೈಯಲ್ಲಿ ಇರಿಸಿ</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">ಪ್ರತಿಕ್ರಿಯೆ ವರದಿ ಕಳುಹಿಸಿ</translation> <translation id="2407209115954268704">SIM ಲಾಕ್ ಸ್ಥಿತಿ</translation> @@ -183,6 +187,7 @@ <translation id="2789486458103222910">ಸರಿ</translation> <translation id="2805756323405976993">ಆಪ್ಸ್</translation> <translation id="28232023175184696">ಇಂಟರ್ನೆಟ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.</translation> +<translation id="2827359915699915567">RSU ಕೋಡ್ ಪಡೆಯಲು ಈ URL ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಟೈಪ್ ಮಾಡಿ</translation> <translation id="2859243502336719778">ನಿರ್ಣಾಯಕ ಅಪ್ಡೇಟ್</translation> <translation id="2860473693272905224">ಸ್ಕ್ಯಾನರ್ನ ಮೇಲೆ ಮತ್ತೊಂದು ಪುಟವನ್ನು ಇರಿಸಿ</translation> <translation id="2872961005593481000">ಮುಚ್ಚಿಬಿಡಿ </translation> @@ -221,6 +226,7 @@ <translation id="3291996639387199448">ಕೀ ನಿರ್ದೇಶನ</translation> <translation id="3310640316857623290">ಅನುಮತಿಸಬಹುದಾದ ಥ್ರೆಶ್ಹೋಲ್ಡ್ಗಿಂತ DNS ವಿಳಂಬವು ಗಮನಾರ್ಹವಾಗಿ ಮೇಲಿದೆ</translation> <translation id="3328783797891415197">ಪರೀಕ್ಷೆ ರನ್ ಆಗುತ್ತಿದೆ</translation> +<translation id="3333527094307156612">8 ಅಕ್ಷರಗಳ ಅನ್ಲಾಕ್ ಕೋಡ್ ಪಡೆಯಲು ಈ QR ಕೋಡ್ ಅನ್ನು ಬಳಸಿ. ನೀವು <ph name="LINK_BEGIN" />this URL<ph name="LINK_END" /> ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಟೈಪ್ ಮಾಡಬಹುದು.</translation> <translation id="3336855445806447827">ಖಚಿತವಿಲ್ಲ</translation> <translation id="3340011300870565703">ಸಾಧನದ ಬಲ ಇಯರ್ಬಡ್ <ph name="BATTERY_PERCENTAGE" />% ರಷ್ಟು ಬ್ಯಾಟರಿಯನ್ನು ಹೊಂದಿದೆ.</translation> <translation id="3368922792935385530">ಕನೆಕ್ಟ್ ಆಗಿದೆ</translation> @@ -254,6 +260,7 @@ <translation id="3606583719724308068">HTTPS ವೆಬ್ಸೈಟ್ಗಳ ವಿಳಂಬದ ಸಮಯವು ದೀರ್ಘವಾಗಿದೆ</translation> <translation id="3621202678540785336">ಇನ್ಪುಟ್</translation> <translation id="3632579075709132555">ಗೌಪ್ಯತೆ ಸ್ಕ್ರೀನ್ ಟಾಗಲ್</translation> +<translation id="3643810137582748570">ಕ್ಯಾಲಿಬ್ರೇಶನ್ ಅನ್ನು ಸ್ಕಿಪ್ ಮಾಡಿ</translation> <translation id="3678765385266369662">ನೀವು Write Protect ಅನ್ನು ಹೇಗೆ ಆಫ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಿ ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="3689839747745352263"><ph name="TEST_NAME" /> ಪರೀಕ್ಷೆ</translation> <translation id="370665806235115550">ಲೋಡ್ ಆಗುತ್ತಿದೆ...</translation> @@ -267,6 +274,7 @@ <translation id="3820172043799983114">ಅಮಾನ್ಯ ಪಿನ್.</translation> <translation id="3838338534323494292">ಹೊಸ ಪಾಸ್ವರ್ಡ್</translation> <translation id="385051799172605136">ಹಿಂದೆ</translation> +<translation id="385832974417157471">ಶಟ್ ಡೌನ್ ಮಾಡುವ ಮೊದಲು, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪವರ್ವಾಶ್ ಮಾಡಿ. ಸಾಧನವು ಮುಚ್ಚಳವನ್ನು ಹೊಂದಿದ್ದರೆ, ಪವರ್ವಾಶ್ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಮುಚ್ಚಳವನ್ನು ಮುಚ್ಚಬೇಡಿ. ಪವರ್ವಾಶ್ ಪೂರ್ಣಗೊಳ್ಳಲು ಒಂದು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.</translation> <translation id="3858860766373142691">ಹೆಸರು</translation> <translation id="3865414814144988605">ರೆಸಲ್ಯೂಶನ್</translation> <translation id="387301095347517405">ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಿರುವ ಸಂಖ್ಯೆ</translation> @@ -403,6 +411,7 @@ <translation id="5049856988445523908">ಸಿಮ್ ಲಾಕ್ ಆಗಿದೆ (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">ಗುಂಪು ಹೆಸರು</translation> <translation id="5051044138948155788">ತೆಗೆದುಹಾಕಲು ಇದೊಂದೇ ಪುಟ ಉಳಿದಿದೆ. ಇದು ನಿಮ್ಮನ್ನು ಸ್ಕ್ಯಾನಿಂಗ್ ಪ್ರಾರಂಭದ ಸ್ಕ್ರೀನ್ಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ.</translation> +<translation id="506768878203270635">8-ಅಕ್ಷರಗಳನ್ನು ನಮೂದಿಸಿ</translation> <translation id="5088172560898466307">ಸರ್ವರ್ ಹೋಸ್ಟ್ ಹೆಸರು</translation> <translation id="5089810972385038852">ರಾಜ್ಯ</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -455,6 +464,7 @@ <translation id="5507300744274596613">Chrome OS ಅಪ್ ಟು ಡೇಟ್ ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">ಘಟಕಗಳನ್ನು ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಿ</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">ಪುನಃ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation> <translation id="5583640892426849032">Backspace</translation> @@ -462,6 +472,7 @@ <translation id="5620281292257375798">ಆಂತರಿಕ ಮಾತ್ರ</translation> <translation id="5649768706273821470">ಆಲಿಸು</translation> <translation id="5655283760733841251">ಕೀ ಬೋರ್ಡ್ ಪ್ರಖರತೆ ಹೆಚ್ಚಿಸಿ</translation> +<translation id="5661196929408385351">ಪವರ್ವಾಷ್ ಮತ್ತು ಶಟ್ ಡೌನ್</translation> <translation id="5669267381087807207">ಸಕ್ರಿಯವಾಗುತ್ತಿದೆ</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">ಕುಟುಂಬ</translation> @@ -473,6 +484,7 @@ <translation id="576835345334454681">ಡಿಸ್ಪ್ಲೇ ಪ್ರಖರತೆಯನ್ನು ಹೆಚ್ಚಿಸಿ</translation> <translation id="57838592816432529">ಮ್ಯೂಟ್</translation> <translation id="5784136236926853061">ಅಧಿಕ HTTP ವಿಳಂಬ</translation> +<translation id="578753362485952307">ನೀವು ಇನ್ನೊಂದು ಸಾಧನದಲ್ಲಿ ಬಳಸಲು ಮುಖ್ಯ ಬೋರ್ಡ್ ಅನ್ನು ರೀವರ್ಕ್ ಮಾಡುತ್ತಿದ್ದರೆ, <ph name="LINK_BEGIN" />ರೀವರ್ಕ್ ಫ್ಲೋ<ph name="LINK_END" /> ಗೆ ಹೋಗಿ.</translation> <translation id="5832805196449965646">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation> <translation id="583281660410589416">ಅಪರಿಚಿತ</translation> <translation id="5843706793424741864">ಫ್ಯಾರನ್ಹೀಟ್</translation> @@ -529,6 +541,7 @@ <translation id="6278428485366576908">ಥೀಮ್</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡಿ</translation> +<translation id="6295178529664209245">ದುರಸ್ತಿ ಮುಂದುವರಿಸುವುದೇ?</translation> <translation id="6302401976930124515"><ph name="TEST_NAME" /> ಪರೀಕ್ಷೆಯನ್ನು ರದ್ದುಪಡಿಸಲಾಗಿದೆ</translation> <translation id="6319207335391420837"><ph name="DEVICE_NAME" /> ನಲ್ಲಿ ಫರ್ಮ್ವೇರ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ</translation> <translation id="6321407676395378991">ಸ್ಕ್ರೀನ್ ಸೇವರ್ ಆನ್ ಮಾಡಿ</translation> @@ -564,6 +577,7 @@ <translation id="6575134580692778371">ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿಲ್ಲ</translation> <translation id="6579509898032828423">ಈ ಫೋಟೋವನ್ನು ಬಳಸಿ</translation> <translation id="6596816719288285829">IP ವಿಳಾಸ</translation> +<translation id="6611280807952151149"><ph name="DEVICE_TYPE" /> ದುರಸ್ತಿಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation> <translation id="6618744767048954150">ರನ್ ಆಗುತ್ತಿದೆ</translation> <translation id="6620487321149975369">ಮುದ್ರಣ ಕಾರ್ಯಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕದ ಹೊರತು, ಅವು ಇತಿಹಾಸದಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation> <translation id="6643016212128521049">ತೆರವುಗೊಳಿಸಿ</translation> @@ -576,6 +590,7 @@ <translation id="6723839937902243910">ಪವರ್</translation> <translation id="6723847290197874913">ಕೀಬೋರ್ಡ್ ಬ್ಯಾಕ್ಲೈಟ್</translation> <translation id="672609503628871915">ಹೊಸದೇನಿದೆ ನೋಡಿ</translation> +<translation id="6746847322826305075">ಪವರ್ವಾಶ್ (ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್) ಸಂಪೂರ್ಣ ದುರಸ್ತಿ ಅಥವಾ ಮುಖ್ಯ ಬೋರ್ಡ್ ಅನ್ನು ಮರು ಆರ್ಡರ್ ಮಾಡುವ ಸಾಧನವಾಗಿದೆ.</translation> <translation id="6747215703636344499">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಔಟ್ಪುಟ್ ಭರ್ತಿಯಾಗಿದೆ</translation> <translation id="6749473226660745022">ಫೋಟೋಗಳು</translation> <translation id="6753452347192452143">ಸಾಧನವು ಕಂಪ್ಯೂಟರ್ ಆಗಿದೆ.</translation> @@ -623,6 +638,7 @@ <translation id="7216409898977639127">ಸೆಲ್ಯುಲಾರ್ ಒದಗಿಸುವವರು</translation> <translation id="7271040990581020067">ಸ್ಕ್ಯಾನರ್ ಅನ್ನು ಪ್ರಸ್ತುತವಾಗಿ ಬಳಸಲಾಗುತ್ತಿದೆ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">1 ಅಥವಾ ಹೆಚ್ಚಿನ ಘಟಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡುವುದನ್ನು ಸ್ಕಿಪ್ ಮಾಡಿ</translation> <translation id="7281657306185710294">ತಂಗಾಳಿಯನ್ನು ಅನುಭವಿಸಿ</translation> <translation id="7287310195820267359">ವಾಲ್ಪೇಪರ್ ಸಂಗ್ರಹಗಳು</translation> <translation id="7297226631177386107">HTTPS ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಫೈರ್ವಾಲ್ ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ</translation> @@ -653,11 +669,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB ಟಚ್ಸ್ಕ್ರೀನ್</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> ಬಾಕಿ ಉಳಿದಿದೆ</translation> +<translation id="760845693386726841">ಈ ಘಟಕವನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="7620771111601174153">ಸಹಾಯ ಕೇಂದ್ರದಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation> <translation id="7626501172915339021">RMA ಸರ್ವರ್ ಅನ್ಲಾಕ್ ಮಾಡಿ (RSU)</translation> <translation id="763165478673169849">ಕೊನೆಯದಾಗಿ ರೀಸೆಟ್ ಮಾಡಿದ ಸಮಯ</translation> <translation id="7648838807254605802">ಅಧಿಕ HTTPS ವಿಳಂಬ</translation> <translation id="7656388927906093505">ಸಾಧನವು ಮೌಸ್ ಆಗಿದೆ.</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" /> ದುರಸ್ತಿ ದೋಷ</translation> <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation> <translation id="7665800271478495366">ಅವತಾರ್ ಬದಲಾಯಿಸಿ</translation> <translation id="7690294790491645610">ಹೊಸ ಪಾಸ್ವರ್ಡ್ ಖಚಿತಪಡಿಸಿ</translation> @@ -699,6 +717,7 @@ <translation id="8083281199617904460">ಈ ರಿಪೇರಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ತರಬೇತಿ ಪಡೆದ ರಿಪೇರಿ ಮಾಡುವ ತಂತ್ರಜ್ಞರಿಗೆ ಮಾಡುವಂತೆ ತಿಳಿಸಲಾಗಿದೆ. ಸಮರ್ಪಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದ ಕಾಂಪೋನೆಂಟ್ಗಳನ್ನು ಬದಲಿಸಿದ ನಂತರವೇ ಪ್ರಾರಂಭಿಸಿ.</translation> <translation id="808894953321890993">ಪಾಸ್ವರ್ಡ್ ಬದಲಿಸಿ</translation> <translation id="8104083085214006426">ನೀವು ಓಪನ್ ಮತ್ತು ಸುರಕ್ಷಿತವಲ್ಲದ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ</translation> +<translation id="8109786307828817014">ವಿಫಲವಾದ ಕ್ಯಾಲಿಬ್ರೇಶನ್ಗಳ ಮೂಲಕ ಮುಂದುವರಿಯುವುದೇ?</translation> <translation id="811820734797650957">(Android) ಗೇಟ್ವೇ ಅನ್ನು ಪಿಂಗ್ ಮಾಡಬಹುದು</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8132480444149501833">ಟ್ರಾಫಿಕ್ ಕೌಂಟರ್ಗಳನ್ನು ವಿನಂತಿಸಿ</translation> @@ -708,6 +727,7 @@ <translation id="8206859287963243715">ಸೆಲ್ಯುಲಾರ್</translation> <translation id="8208861521865154048">ಪರ್ಕ್ಗಳು</translation> <translation id="8217675307824400706">ಕನೆಕ್ಟ್ ಆಗಿರಿ</translation> +<translation id="8221728673725659466">ಕ್ಯಾಲಿಬ್ರೇಶನ್ ಪೂರ್ಣಗೊಂಡಿದೆ</translation> <translation id="8226628635270268143">ನಿಮ್ಮ ಮೆಚ್ಚಿನ ಫೋಟೋಗಳು ಮತ್ತು ಆಲ್ಬಮ್ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="8230672074305416752">ಡೀಫಾಲ್ಟ್ ನೆಟ್ವರ್ಕ್ ಗೇಟ್ವೇಗೆ ಪಿಂಗ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ</translation> <translation id="8246209727385807362">ಅಪರಿಚಿತ ವಾಹಕ</translation> @@ -719,6 +739,8 @@ <translation id="8297006494302853456">ದುರ್ಬಲ</translation> <translation id="8302368968391049045">HTTPS ಫೈರ್ವಾಲ್</translation> <translation id="8318753676953949627">ಯಾವುದೇ ಚಿತ್ರಗಳಿಲ್ಲ</translation> +<translation id="8327249300223641918">ಮುಂದುವರಿಯುವ ಮೊದಲು, ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸಾಧನವನ್ನು (ಬೇಸ್ ಮತ್ತು ಮುಚ್ಚಳ) ಸಮತಟ್ಟಾದ ಮೇಲ್ಮೈಯಲ್ಲಿ ಇರಿಸಿ.</translation> +<translation id="8330949592403310082">ಯಾವ ಘಟಕಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="8336739000755212683">ಸಾಧನದ ಖಾತೆ ಚಿತ್ರವನ್ನು ಬದಲಾಯಿಸಿ</translation> <translation id="8347227221149377169">ಮುದ್ರಣ ಕಾರ್ಯಗಳು</translation> <translation id="8352772353338965963">ಬಹು ಸೈನ್ಇನ್ಗೆ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ. ಎಲ್ಲ ಸೈನ್-ಇನ್ ಮಾಡಲಾದ ಖಾತೆಗಳನ್ನು ಪಾಸ್ವರ್ಡ್ ಇಲ್ಲದೆಯೇ ಪ್ರವೇಶಿಸಬಹುದಾಗಿದೆ, ಹಾಗಾಗಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ವಿಶ್ವಾಸಾರ್ಹ ಖಾತೆಗಳಿಗಾಗಿ ಮಾತ್ರ ಬಳಸಬೇಕು.</translation> @@ -733,6 +755,7 @@ <translation id="844521431886043384">DNS ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿಲ್ಲ</translation> <translation id="8456761643544401578">ಸ್ವಯಂಚಾಲಿತ ಕತ್ತಲೆ ಮೋಡ್</translation> <translation id="8461329675984532579">Home ಪೂರೈಕೆದಾರರ ಹೆಸರು</translation> +<translation id="8467104829907989997">ಘಟಕಗಳನ್ನು ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> <translation id="8475690821716466388">ದುರ್ಬಲ ಪ್ರೋಟೋಕಾಲ್ WEP PSK ಮೂಲಕ ವೈಫೈ ನೆಟ್ವರ್ಕ್ ರಕ್ಷಿಸಲಾಗಿದೆ</translation> <translation id="8477551185774834963">ಅನುಮತಿಸಬಹುದಾದ ಥ್ರೆಶ್ಹೋಲ್ಡ್ಗಿಂತ DNS ವಿಳಂಬವು ಸ್ವಲ್ಪ ಮೇಲಿದೆ</translation> <translation id="8483248364096924578">ಐಪಿ ವಿಳಾಸ</translation> @@ -741,6 +764,7 @@ <translation id="8503813439785031346">ಬಳಕೆದಾರರಹೆಸರು</translation> <translation id="8503836310948963452">ಕೇವಲ ಕೆಲವೇ ನಿಮಿಷಗಳು…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡದ ಹೊರತು ಘಟಕಗಳು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ</translation> <translation id="8575298406870537639">ನಿಮ್ಮ ವಾಹಕವು ತಮ್ಮ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಈ ಆಯ್ಕೆಯ ಅಗತ್ಯವಿರಬಹುದು. ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation> <translation id="8576249514688522074">ಪ್ರಾರಂಭಿಸಲಾಗಿಲ್ಲ</translation> <translation id="8620617069779373398">ರೋಮಿಂಗ್ ಸ್ಥಿತಿ</translation> @@ -792,8 +816,10 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{ಸ್ಕ್ಯಾನ್}=1{ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾದ ಪುಟ {NUMBER_OF_PAGES}}one{ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾದ ಪುಟ {NUMBER_OF_PAGES}}other{ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾದ ಪುಟ {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">ಸಾಧನದಲ್ಲಿ <ph name="BATTERY_PERCENTAGE" />% ರಷ್ಟು ಬ್ಯಾಟರಿ ಇದೆ.</translation> <translation id="9003704114456258138">ಫ್ರೀಕ್ವೆನ್ಸಿ</translation> +<translation id="9025198690966128418">ವೈಯಕ್ತಿಕ ಸಾಧನವಾಗಿ ಬಳಸಿ</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS ರೆಸಲ್ಯೂಷನ್ ಹೆಚ್ಚಿನ ಲೇಟೆನ್ಸಿಯನ್ನು ಹೊಂದಿದೆ</translation> +<translation id="9063121522582193837">ಕೆಲವು ಘಟಕಗಳನ್ನು ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">ಬ್ಲೂಟೂತ್</translation> <translation id="9082718469794970195">ಈ ವೀಡಿಯೊ ಬಳಸಿ</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb index 3bf312c..38aa51e0 100644 --- a/chromeos/strings/chromeos_strings_ky.xtb +++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -113,7 +113,7 @@ <translation id="2008685064673031089">Баштапкы издөө</translation> <translation id="2016697457005847575">Бузулууларды аныктап оңдоо кадамдарын аткарып көрүңүз</translation> <translation id="202500043506723828">EID</translation> -<translation id="2080070583977670716">Дагы жөндөөлөр</translation> +<translation id="2080070583977670716">Дагы параметрлер</translation> <translation id="2085089206770112532">Дисплейдин жарыктыгын азайтуу</translation> <translation id="2105810540595158374">Түзмөк — оюнду көзөмөлдөгүч.</translation> <translation id="2115956742084455574">Код туура эмес</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index c2b7059..9054194 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">ຕໍ່ໄປ</translation> <translation id="1204296502688602597">ການຕອບສະໜອງຂອງ DNS</translation> <translation id="123124571410524056">ສົງໄສວ່າເປັນໜ້າເວັບ</translation> +<translation id="1236400083787698183">ກ່ອນການຣີສະຕາດ, ໃຫ້ດຳເນີນການ Powerwash ອຸປະກອນຂອງທ່ານກ່ອນ. ຫາກອຸປະກອນຂອງທ່ານມີຝາປິດ, ໃຫ້ລໍຖ້າຈົນກວ່າຂັ້ນຕອນ Powerwash ຈະສຳເລັດກ່ອນການປິດຝາ. ຂັ້ນຕອນ Powerwash ອາດໃຊ້ເວລາຮອດໜຶ່ງນາທີຈຶ່ງຈະສຳເລັດ.</translation> <translation id="1238612778414822719">ເວລາແຝງ HTTPS</translation> +<translation id="1240699967155581440">ຕ້ອງມີການ Powerwash (ຣີເຊັດເປັນຄ່າຈາກໂຮງງານ)</translation> <translation id="1264116747675686718">ກຳລັງອັບເດດເວີຊັນລະບົບປະຕິບັດການ</translation> <translation id="1264369926465113395">ກວດເບິ່ງວາລະສານດິຈິຕອນໃໝ່ຂອງ Chromebook ສຳລັບຜູ້ສ້າງ</translation> <translation id="1270369111467284986">ສົງໄສວ່າເປັນຊ່ອງທາງເຂົ້າຮັກສາໄວ້</translation> @@ -92,6 +94,7 @@ <translation id="1801418420130173017">ປິດການນຳໃຊ້ຮູບແບບສີສັນມືດ</translation> <translation id="1807246157184219062">ແສງ</translation> <translation id="1827738518074806965">ຫ້ອງສະແດງງານສິນລະປະ</translation> +<translation id="1840835860961531162">ປິດການປ້ອງກັນການຂຽນໄວ້</translation> <translation id="1851218745569890714">ການປະຊຸມຜ່ານວິດີໂອ</translation> <translation id="1852934301711881861">ຕິດຕັ້ງ ChromeOS Flex</translation> <translation id="1856388568474281774">ລູກສອນລົງ</translation> @@ -148,6 +151,7 @@ <translation id="2360257214555822463">ກວດພົບ <ph name="LINK_BEGIN" />ອົງປະກອບທີ່ບໍ່ຜ່ານເງື່ອນໄຂ<ph name="LINK_END" />. ຫາກທ່ານເລືອກທີ່ຈະຢືນຢັນວ່ານີ້ໄດ້ຮັບການຕິດຕັ້ງແລ້ວ, ກະລຸນາເຮັດຕອນນີ້.</translation> <translation id="2363636958541445404">ເປີດຄຸນສົມບັດເພື່ອເລືອກຕົວເລືອກພາບພັກໜ້າຈໍ</translation> <translation id="2364498172489649528">ຜ່ານແລ້ວ</translation> +<translation id="236594517359128026">ກ່ອນການດຳເນີນການ, ໃຫ້ວາງແລັບທັອບຂອງທ່ານໄວ້ຢູ່ພື້ນທີ່ຮາບພຽງກ່ອນ</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">ສົ່ງລາຍງານຄຳຕິຊົມ</translation> <translation id="2407209115954268704">ສະຖານະການລັອກຊິມ</translation> @@ -266,6 +270,7 @@ <translation id="3820172043799983114">PIN ບໍ່ຖືກຕ້ອງ.</translation> <translation id="3838338534323494292">ລະຫັດຜ່ານໃໝ່</translation> <translation id="385051799172605136">ກັບຄືນ</translation> +<translation id="385832974417157471">ກ່ອນການປິດເຄື່ອງ, ໃຫ້ດຳເນີນການ Powerwash ອຸປະກອນຂອງທ່ານກ່ອນ. ຫາກອຸປະກອນຂອງທ່ານມີຝາປິດ, ໃຫ້ລໍຖ້າຈົນກວ່າຂັ້ນຕອນ Powerwash ຈະສຳເລັດກ່ອນການປິດຝາ. ຂັ້ນຕອນ Powerwash ອາດໃຊ້ເວລາຮອດໜຶ່ງນາທີຈຶ່ງຈະສຳເລັດ.</translation> <translation id="3858860766373142691">ຊື່</translation> <translation id="3865414814144988605">ຄວາມລະອຽດ</translation> <translation id="387301095347517405">ຈຳນວນເທື່ອທີ່ແບັດເຕີຣີຂອງທ່ານມີຮອບການສາກໄຟເຕັມ.</translation> @@ -275,6 +280,7 @@ <translation id="3941014780699102620">ແກ້ໄຂບັນຫາໂຮສບໍ່ສຳເລັດ</translation> <translation id="3942420633017001071">ການກວດວິເຄາະບັນຫາ</translation> <translation id="3954678691475912818">ບໍ່ຮູ້ປະເພດອຸປະກອນ.</translation> +<translation id="3958703339436883942">ກຳລັງກະກຽມຣີສະຕາດ...</translation> <translation id="3966286471246132217">ເພື່ອຮັບຜົນການຊອກຫາທີ່ມີຄວາມຖືກຕ້ອງຍິ່ງຂຶ້ນ, ໃຫ້ປິດແອັບທັງໝົດຈົນກວ່າການທົດສອບຈະສຳເລັດ.</translation> <translation id="3967822245660637423">ດາວໂຫຼດສຳເລັດ</translation> <translation id="3969602104473960991">ອັບເດດລະຫັດຜ່ານ ChromeOS ແລ້ວ</translation> @@ -425,6 +431,7 @@ <translation id="5275828089655680674">ເປີດສິ່ງທີ່ເຮັດປະຈຳຄືນໃໝ່</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">ເວີຊັນ <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">ກະລຸນາປິດການນຳໃຊ້ການປ້ອງກັນການຂຽນເພື່ອສືບຕໍ່ໄປຫາໜ້າຈໍຕໍ່ໄປ. ໃຫ້ເຂົ້າໄປໜ້າຊ່ວຍເຫຼືອຂອງຜູ້ຜະລິດອຸປະກອນເພື່ອເບິ່ງຄຳແນະນຳ.</translation> <translation id="5300814202279832142">ຍ້າຍໜ້າຈໍໄປຍັງໂຕະ</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">ເຊື່ອມຕໍ່</translation> @@ -454,6 +461,7 @@ <translation id="5507300744274596613">ໃຫ້ກວດສອບວ່າອັບເດດ Chrome OS ແລ້ວ</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">ປັບທຽບອົງປະກອບ</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">ສະແກນຄືນໃໝ່</translation> <translation id="5583640892426849032">ລຶບຄືນຫຼັງ</translation> @@ -476,6 +484,7 @@ <translation id="583281660410589416">ບໍ່ຮູ້ຈັກ</translation> <translation id="5843706793424741864">ຟາເຣນຮາຍ</translation> <translation id="5849570051105887917">ລະຫັດຜູ້ໃຫ້ບໍລິການ Home</translation> +<translation id="5856532218727053281">ລະບົບຈະຣີສະຕາດຫຼັງຈາກການຢັ້ງຢືນສະຖານະການປ້ອງກັນການຂຽນ</translation> <translation id="5859603669299126575">ອະລະບໍ້າແກເລີຣີສິນລະປະ</translation> <translation id="5860033963881614850">ປິດ</translation> <translation id="5860491529813859533">ເປີດ</translation> @@ -707,6 +716,7 @@ <translation id="8206859287963243715">ເຊວລູລາ</translation> <translation id="8208861521865154048">ສິດທິປະໂຫຍດຕ່າງໆ</translation> <translation id="8217675307824400706">ເລີ່ມການເຊື່ອມຕໍ່</translation> +<translation id="8221728673725659466">ການປັບທຽບສຳເລັດແລ້ວ</translation> <translation id="8226628635270268143">ເລືອກຮູບພາບ ແລະ ອະລະບໍ້າທີ່ທ່ານມັກ</translation> <translation id="8230672074305416752">ໃຊ້ຄຳສັ່ງ ping ກັບເກດເວເຄືອຂ່າຍຄ່າເລີ່ມຕົ້ນບໍ່ໄດ້</translation> <translation id="8246209727385807362">ຜູ້ໃຫ້ບໍລິການທີ່ບໍ່ຮູ້ຈັກ</translation> @@ -718,6 +728,7 @@ <translation id="8297006494302853456">ອ່ອນ</translation> <translation id="8302368968391049045">HTTPS Firewall</translation> <translation id="8318753676953949627">ບໍ່ມີຮູບ</translation> +<translation id="8327249300223641918">ກ່ອນດຳເນີນການຕໍ່, ໃຫ້ວາງອຸປະກອນຂອງທ່ານ (ທັງຖານ ແລະ ຝາ) ໄວ້ພື້ນທີ່ຮາບພຽງກ່ອນ.</translation> <translation id="8336739000755212683">ປ່ຽນຮູບບັນຊີຂອງອຸປະກອນ</translation> <translation id="8347227221149377169">ວຽກການພິມ</translation> <translation id="8352772353338965963">ເພີ່ມບັນຊີໃສ່ຫຼາຍການລົງຊື່ເຂົ້າໃສ່. ສາມາດເຂົ້າຫາທຸກບັນຊີທີ່ລົງຊື່ເຂົ້າໃຊ້ແລ້ວໂດຍບໍ່ຕ້ອງມີລະຫັດຜ່ານ, ດັ່ງນັ້ນຄວນໃຊ້ແຕ່ຄຸນສົມບັດນີ້ກັບແຕ່ບັນຊີທີ່ເຊື່ອຖືໄດ້ເທົ່ານັ້ນ.</translation> @@ -732,6 +743,7 @@ <translation id="844521431886043384">ບໍ່ໄດ້ຕັ້ງຄ່າ DNS ເທື່ອ</translation> <translation id="8456761643544401578">ໂໝດມືດອັດຕະໂນມັດ</translation> <translation id="8461329675984532579">ຊື່ຜູ້ໃຫ້ບໍລິການ Home</translation> +<translation id="8467104829907989997">ກຳລັງປັບທຽບອົງປະກອບ...</translation> <translation id="8475690821716466388">ເຄືອຂ່າຍ WiFi ມີການຮັກສາຄວາມປອດໄພດ້ວຍໂປຣໂຕຄໍ WEP PSK ທີ່ບໍ່ຮັດກຸມ</translation> <translation id="8477551185774834963">ເວລາໃນການຕອບສະໜອງ DNS ສູງກວ່າເກນທີ່ຍອມຮັບໄດ້ເລັກນ້ອຍ</translation> <translation id="8483248364096924578">ທີ່ຢູ່ IP</translation> @@ -791,6 +803,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{ສະແກນ}=1{ສະແກນໜ້າ {NUMBER_OF_PAGES}}other{ສະແກນໜ້າ {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">ອຸປະກອນມີແບັດເຕີຣີ <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">ຄວາມຖີ່</translation> +<translation id="9025198690966128418">ໃຊ້ເປັນອຸປະກອນສ່ວນຕົວ</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS resolution ມີເວລາຕອບສະໜອງສູງ</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index 8162fb61..2341d4cc 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Atspējot tumšo motīvu</translation> <translation id="1807246157184219062">Gaišs</translation> <translation id="1827738518074806965">Mākslas galerija</translation> +<translation id="1840835860961531162">Aizsardzības pret rakstīšanu izslēgšana</translation> <translation id="1851218745569890714">Videokonferences</translation> <translation id="1852934301711881861">Instalēt Chrome OS Flex</translation> <translation id="1856388568474281774">Lejupvērstais bulttaustiņš</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Neizdevās atrisināt saimniekdatora nosaukumu</translation> <translation id="3942420633017001071">Diagnostika</translation> <translation id="3954678691475912818">Ierīces veids nav zināms.</translation> +<translation id="3958703339436883942">Notiek sagatavošanās restartēšanai…</translation> <translation id="3966286471246132217">Lai iegūtu precīzākus rezultātus, līdz pārbaudes beigām aizveriet visas lietotnes.</translation> <translation id="3967822245660637423">Lejupielāde pabeigta</translation> <translation id="3969602104473960991">Chrome OS parole ir atjaunināta</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Atkārtoti izpildīt darbību secību</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versija <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Atspējojiet aizsardzību pret rakstīšanu, lai pārietu uz nākamo ekrānu. Norādījumus skatiet ierīces ražotāja atbalsta lapā.</translation> <translation id="5300814202279832142">Pārvietot logu uz darbvietu</translation> <translation id="5304899856529773394">EvDo</translation> <translation id="5308380583665731573">Pievienošana</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Nezināms</translation> <translation id="5843706793424741864">Fārenheita skala</translation> <translation id="5849570051105887917">Mājas pakalpojumu sniedzēja kods</translation> +<translation id="5856532218727053281">Pēc aizsardzības pret rakstīšanu verificēšanas sistēma tiks restartēta.</translation> <translation id="5859603669299126575">Mākslas galerijas albums</translation> <translation id="5860033963881614850">Izsl.</translation> <translation id="5860491529813859533">Ieslēgt</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index dd561c84..c6133124 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Приспособи на скенираната област</translation> <translation id="1367951781824006909">Избери датотека</translation> +<translation id="1380220803921738821">Има грешки. Рестартирајте или вратете го фирмверот преку USB-стик.</translation> <translation id="1387854245479784695">Ова е збир од сите јадра</translation> <translation id="1394661041439318933">Нивото на батерија на футролата е <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="1397738625398125236">Може да се испрати пинг до порталот</translation> @@ -186,6 +187,7 @@ <translation id="2789486458103222910">Во ред</translation> <translation id="2805756323405976993">Апликации</translation> <translation id="28232023175184696">Не може да се поврзе на интернет. Кликнете за повторен обид.</translation> +<translation id="2827359915699915567">Рачно напишете ја оваа URL-адреса за да го добиете RSU-кодот</translation> <translation id="2859243502336719778">Важно ажурирање</translation> <translation id="2860473693272905224">Ставете друга страница на скенерот</translation> <translation id="2872961005593481000">Исклучи</translation> @@ -224,6 +226,7 @@ <translation id="3291996639387199448">Насока на клучот</translation> <translation id="3310640316857623290">Латенцијата на DNS е значително над дозволениот праг</translation> <translation id="3328783797891415197">Тестот се извршува</translation> +<translation id="3333527094307156612">Користете го овој QR-код за да добиете код за отклучување од 8 знаци Можете и рачно да ја напишете <ph name="LINK_BEGIN" />оваа URL-адреса<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Не знам</translation> <translation id="3340011300870565703">Нивото на батерија на десната слушалка е <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="3368922792935385530">Поврзано</translation> @@ -257,6 +260,7 @@ <translation id="3606583719724308068">Висока латенција кон веб-сајтовите со HTTPS</translation> <translation id="3621202678540785336">Внесување</translation> <translation id="3632579075709132555">Вклучи/исклучи заштита на приватноста</translation> +<translation id="3643810137582748570">Прескокни калибрација</translation> <translation id="3678765385266369662">Изберете како сакате да ја исклучите „Заштитата од пишување“</translation> <translation id="3689839747745352263">Тест за <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Се вчитува...</translation> @@ -407,6 +411,7 @@ <translation id="5049856988445523908">SIM-картичката е заклучена (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Име на групата</translation> <translation id="5051044138948155788">Ова е единствената страница. Ќе бидете пренасочени на екранот за започнување на скенирањето.</translation> +<translation id="506768878203270635">Внесете го кодот од 8 знаци</translation> <translation id="5088172560898466307">Име на хостот на серверот</translation> <translation id="5089810972385038852">Држава</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -468,6 +473,7 @@ <translation id="5620281292257375798">Само интерно</translation> <translation id="5649768706273821470">Слушај</translation> <translation id="5655283760733841251">Осветленоста на тастатурата се зголеми</translation> +<translation id="5661196929408385351">Фабричко ресетирање и исклучување</translation> <translation id="5669267381087807207">Се активира</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Семејни</translation> @@ -479,6 +485,7 @@ <translation id="576835345334454681">Осветленоста на екранот се зголеми</translation> <translation id="57838592816432529">Исклучи звук</translation> <translation id="5784136236926853061">Висока латенција на HTTP</translation> +<translation id="578753362485952307">Ако изменувате главна плоча за да ја користите на друг уред, одете на <ph name="LINK_BEGIN" />текот на изменување<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Додај лице</translation> <translation id="583281660410589416">Непознат</translation> <translation id="5843706793424741864">Фаренхајтови</translation> @@ -535,6 +542,7 @@ <translation id="6278428485366576908">Тема</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Вклучи темна тема</translation> +<translation id="6295178529664209245">Да продолжи поправката?</translation> <translation id="6302401976930124515">Тестот за <ph name="TEST_NAME" /> е откажан</translation> <translation id="6319207335391420837">Ажурирајте го фирмверот на <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Вклучете го заштитникот на екранот</translation> @@ -570,6 +578,7 @@ <translation id="6575134580692778371">Не е конфигуриран</translation> <translation id="6579509898032828423">Користи ја оваа фотографија</translation> <translation id="6596816719288285829">IP-адреса</translation> +<translation id="6611280807952151149">Излези од поправката на <ph name="DEVICE_TYPE" /></translation> <translation id="6618744767048954150">Се извршува</translation> <translation id="6620487321149975369">Задачите за печатење ќе се појавуваат во историјата, освен ако не се отстранат рачно</translation> <translation id="6643016212128521049">Исчисти</translation> @@ -582,6 +591,7 @@ <translation id="6723839937902243910">Енергија</translation> <translation id="6723847290197874913">Заднинско светло на тастатура</translation> <translation id="672609503628871915">Погледнете што има ново</translation> +<translation id="6746847322826305075">Можете да продолжите со целосна поправка или фабричко ресетирање (ресетирање на фабрички поставки) на уредот за да ја вратите главната плоча.</translation> <translation id="6747215703636344499">Запрено - излезната фиока е полна</translation> <translation id="6749473226660745022">Фотографии</translation> <translation id="6753452347192452143">Уредот е компјутер.</translation> @@ -629,6 +639,7 @@ <translation id="7216409898977639127">Мобилен оператор</translation> <translation id="7271040990581020067">Скенерот се користи во моментов. Обидете се повторно подоцна.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Изберете една или повеќе компоненти и обидете се повторно или прескокнете ја калибрацијата</translation> <translation id="7281657306185710294">Почувствувајте го ветрето</translation> <translation id="7287310195820267359">Збирки тапети</translation> <translation id="7297226631177386107">Не може да се поврзе преку заштитен ѕид со веб-сајтови со HTTPS</translation> @@ -659,11 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">Допирен екран со USB</translation> <translation id="7595982850646262331">Уште <ph name="TIME_VALUE" /></translation> +<translation id="760845693386726841">Компонентава не може да се открие.</translation> <translation id="7620771111601174153">Дознајте повеќе во „Центарот за помош“</translation> <translation id="7626501172915339021">Изведи отклучување на RMA-сервер (RSU)</translation> <translation id="763165478673169849">Време на последно ресетирање</translation> <translation id="7648838807254605802">Висока латенција на HTTPS</translation> <translation id="7656388927906093505">Уредот е глувче.</translation> +<translation id="7657530360897961171">Грешка со поправката на <ph name="DEVICE_TYPE" /></translation> <translation id="7658239707568436148">Откажи</translation> <translation id="7665800271478495366">Променете го аватарот</translation> <translation id="7690294790491645610">Потврдете ја новата лозинка</translation> @@ -705,6 +718,7 @@ <translation id="8083281199617904460">Процесов на поправање е наменет за обучен техничар за поправки. Започнете само по замена на дефектните компоненти.</translation> <translation id="808894953321890993">Промени лозинка</translation> <translation id="8104083085214006426">Користите отворена и небезбедна мрежа</translation> +<translation id="8109786307828817014">Да се продолжи со неуспешните калибрации?</translation> <translation id="811820734797650957">(Android) Може да се испрати пинг до порталот</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8132480444149501833">Побарајте бројачи на сообраќај</translation> @@ -727,6 +741,7 @@ <translation id="8302368968391049045">Заштитен ѕид со HTTPS</translation> <translation id="8318753676953949627">Нема слики</translation> <translation id="8327249300223641918">Пред да продолжите, ставете го целиот уред (основата и капакот) на рамна површина.</translation> +<translation id="8330949592403310082">Изберете кои компоненти беа заменети</translation> <translation id="8336739000755212683">Променете ја сликата за сметката на уредот</translation> <translation id="8347227221149377169">Налози за печатење</translation> <translation id="8352772353338965963">Додајте сметка за повеќекратно најавување. Сите најавени сметки се достапни без лозинка, така што оваа можност треба да се користи само со сметки на кои им се верува.</translation> @@ -750,6 +765,7 @@ <translation id="8503813439785031346">Корисничко име</translation> <translation id="8503836310948963452">Само уште неколку минути…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Компонентите можеби нема да работат правилно освен ако не се калибрираат</translation> <translation id="8575298406870537639">Оваа опција може да е задолжителна за да се поврзете на мрежата на операторот. Контактирајте со операторот за детали.</translation> <translation id="8576249514688522074">Неиницијализирана</translation> <translation id="8620617069779373398">Статус на роаминг</translation> @@ -804,6 +820,7 @@ <translation id="9025198690966128418">Користете го како личен уред</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Одредување со DNS има висока латенција</translation> +<translation id="9063121522582193837">Не можеше да се калибрираат некои компоненти</translation> <translation id="9073281213608662541">ПАП</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Користи го ова видео</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 468b54a..7e4e131 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">സ്കാൻ ഏരിയയ്ക്ക് അനുയോജ്യമാക്കുക</translation> <translation id="1367951781824006909">ഒരു ഫയല് തിരഞ്ഞെടുക്കുക</translation> +<translation id="1380220803921738821">പിശകുകൾ ഉണ്ടായി. റീബൂട്ട് ചെയ്യാൻ ശ്രമിക്കുക അല്ലെങ്കിൽ USB തമ്പ്ഡ്രൈവ് ഉപയോഗിച്ച് ഫേംവെയർ വീണ്ടെടുക്കുക.</translation> <translation id="1387854245479784695">ഇത് എല്ലാ കോറുകളുടെയും സംഗ്രഹമാണ്</translation> <translation id="1394661041439318933">ഉപകരണത്തിന്റെ കെയ്സിൽ <ph name="BATTERY_PERCENTAGE" />% ബാറ്ററിയുണ്ട്.</translation> <translation id="1397738625398125236">ഗേറ്റ്വേ പിംഗ് ചെയ്യാൻ കഴിയും</translation> @@ -186,6 +187,7 @@ <translation id="2789486458103222910">ശരി</translation> <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="28232023175184696">ഇന്റർനെറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല. വീണ്ടും ശ്രമിക്കാൻ ക്ലിക്ക് ചെയ്യുക.</translation> +<translation id="2827359915699915567">RSU കോഡ് നേടാൻ ഈ URL നേരിട്ട് ടൈപ്പ് ചെയ്യുക</translation> <translation id="2859243502336719778">നിർണ്ണായക അപ്ഡേറ്റ്</translation> <translation id="2860473693272905224">സ്കാനറിൽ മറ്റൊരു പേജ് വയ്ക്കുക</translation> <translation id="2872961005593481000">അടയ്ക്കുക</translation> @@ -224,6 +226,7 @@ <translation id="3291996639387199448">കീയുടെ ദിശ</translation> <translation id="3310640316857623290">DNS പ്രതികരണ സമയം അനുവദിക്കപ്പെട്ട പരിധിയേക്കാൾ വളരെ മുകളിലാണ്</translation> <translation id="3328783797891415197">ടെസ്റ്റ് റൺ ചെയ്യുന്നു</translation> +<translation id="3333527094307156612">8 പ്രതീകങ്ങളുള്ള അൺലോക്ക് കോഡ് നേടാൻ ഈ QR കോഡ് ഉപയോഗിക്കുക. നിങ്ങൾക്ക് <ph name="LINK_BEGIN" />ഈ URL<ph name="LINK_END" /> നേരിട്ട് ടൈപ്പ് ചെയ്യാം.</translation> <translation id="3336855445806447827">ഉറപ്പില്ല</translation> <translation id="3340011300870565703">ഉപകരണത്തിന്റെ വലത് ബഡിൽ <ph name="BATTERY_PERCENTAGE" />% ബാറ്ററിയുണ്ട്.</translation> <translation id="3368922792935385530">കണക്റ്റുചെയ്തു</translation> @@ -257,6 +260,7 @@ <translation id="3606583719724308068">HTTPS വെബ്സൈറ്റുകളിലേക്ക് കണക്റ്റ് ചെയ്യാൻ ഉയർന്ന പ്രതികരണ സമയം</translation> <translation id="3621202678540785336">ഇൻപുട്ട്</translation> <translation id="3632579075709132555">സ്വകാര്യതാ സ്ക്രീൻ ടോഗിൾ</translation> +<translation id="3643810137582748570">കാലിബ്രേറ്റ് ചെയ്യുന്നത് ഒഴിവാക്കുക</translation> <translation id="3678765385266369662">റൈറ്റ് പരിരക്ഷ ഓഫാക്കേണ്ടത് എങ്ങനെയെന്ന് തിരഞ്ഞെടുക്കുക</translation> <translation id="3689839747745352263"><ph name="TEST_NAME" /> പരിശോധന</translation> <translation id="370665806235115550">ലോഡ്ചെയ്യുന്നു...</translation> @@ -407,6 +411,7 @@ <translation id="5049856988445523908">സിം ലോക്ക് ചെയ്തു (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">ഗ്രൂപ്പിന്റെ പേര്</translation> <translation id="5051044138948155788">ഇത് അവസാനത്തെ പേജാണ്. ഇത് നീക്കം ചെയ്യുന്നത് നിങ്ങളെ സ്കാനിംഗിന്റെ ആരംഭ സ്ക്രീനിലേക്ക് കൊണ്ടുപോകും.</translation> +<translation id="506768878203270635">8 പ്രതീകങ്ങൾ നൽകുക</translation> <translation id="5088172560898466307">സെർവർ ഹോസ്റ്റ്നാമം</translation> <translation id="5089810972385038852">സ്റ്റേറ്റ്</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -467,6 +472,7 @@ <translation id="5620281292257375798">ആന്തരികം മാത്രം</translation> <translation id="5649768706273821470">കേൾക്കുക</translation> <translation id="5655283760733841251">കീബോർഡ് തെളിച്ചം കൂട്ടുക</translation> +<translation id="5661196929408385351">Powerwash ചെയ്ത് ഷട്ട്ഡൗൺ ചെയ്യുക</translation> <translation id="5669267381087807207">സജീവമാക്കുന്നു</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">കുടുംബം</translation> @@ -478,6 +484,7 @@ <translation id="576835345334454681">ഡിസ്പ്ലേ തെളിച്ചം കൂട്ടുക</translation> <translation id="57838592816432529">മ്യൂട്ട് ചെയ്യുക</translation> <translation id="5784136236926853061">ഉയർന്ന HTTP പ്രതികരണ സമയം</translation> +<translation id="578753362485952307">മറ്റൊരു ഉപകരണത്തിൽ ഉപയോഗിക്കേണ്ട മെയിൻബോർഡിൽ റീവർക്ക് നടത്തുകയാണെങ്കിൽ, <ph name="LINK_BEGIN" />റീവർക്ക് ഫ്ലോയിലേക്ക്<ph name="LINK_END" /> പോകുക.</translation> <translation id="5832805196449965646">വ്യക്തിയെ ചേർക്കുക</translation> <translation id="583281660410589416">അജ്ഞാതം</translation> <translation id="5843706793424741864">ഫാരൻഹീറ്റ്</translation> @@ -534,6 +541,7 @@ <translation id="6278428485366576908">തീം</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">ഡാർക്ക് തീം ഓണാക്കുക</translation> +<translation id="6295178529664209245">റിപ്പയർ തുടരണോ?</translation> <translation id="6302401976930124515"><ph name="TEST_NAME" /> പരിശോധന റദ്ദാക്കി</translation> <translation id="6319207335391420837"><ph name="DEVICE_NAME" /> എന്നതിൽ ഫേംവെയർ അപ്ഡേറ്റ് ചെയ്യുക</translation> <translation id="6321407676395378991">സ്ക്രീൻ സേവർ ഓണാക്കുക</translation> @@ -569,6 +577,7 @@ <translation id="6575134580692778371">ക്രമീകരിച്ചിട്ടില്ല</translation> <translation id="6579509898032828423">ഈ ഫോട്ടോ ഉപയോഗിക്കുക</translation> <translation id="6596816719288285829">IP വിലാസം</translation> +<translation id="6611280807952151149"><ph name="DEVICE_TYPE" /> റിപ്പയറിൽ നിന്ന് പുറത്തുകടക്കുക</translation> <translation id="6618744767048954150">റൺ ചെയ്യുന്നു</translation> <translation id="6620487321149975369">നേരിട്ട് നീക്കം ചെയ്തില്ലെങ്കിൽ പ്രിന്റ് ജോലികൾ ചരിത്രത്തിൽ ദൃശ്യമാകും</translation> <translation id="6643016212128521049">മായ്ക്കുക</translation> @@ -581,6 +590,7 @@ <translation id="6723839937902243910">പവർ</translation> <translation id="6723847290197874913">കീബോർഡ് ബാക്ക്ലൈറ്റ്</translation> <translation id="672609503628871915">പുതിയതെന്താണെന്ന് കാണുക</translation> +<translation id="6746847322826305075">മെയിൻബോർഡ് വീണ്ടും സ്റ്റോക്ക് ചെയ്യാൻ പൂർണ്ണമായ റിപ്പയർ അല്ലെങ്കിൽ ഉപകരണം Powerwash (ഫാക്ടറി റീസെറ്റ്) ചെയ്ത് തുടരാം.</translation> <translation id="6747215703636344499">പ്രിന്റ് ജോലി നിർത്തി - ഔട്ട്പുട്ട് നിറഞ്ഞിരിക്കുന്നു</translation> <translation id="6749473226660745022">ഫോട്ടോകൾ</translation> <translation id="6753452347192452143">ഉപകരണം ഒരു കമ്പ്യൂട്ടറാണ്.</translation> @@ -628,6 +638,7 @@ <translation id="7216409898977639127">സെല്ലുലാര് സേവനദാതാവ്</translation> <translation id="7271040990581020067">സ്കാനർ നിലവിൽ ഉപയോഗത്തിലാണ്. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">ഒന്നോ ഒന്നിലധികമോ കമ്പോണന്റുകൾ തിരഞ്ഞെടുത്ത് വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ കാലിബ്രേഷൻ ഒഴിവാക്കുക</translation> <translation id="7281657306185710294">ഇളം കാറ്റ് അനുഭവിക്കൂ</translation> <translation id="7287310195820267359">വാൾപേപ്പർ ശേഖരങ്ങൾ</translation> <translation id="7297226631177386107">HTTPS വെബ്സൈറ്റുകളിലേക്ക് ഫയര്വാള് മുഖേന കണക്റ്റ് ചെയ്യാനാകുന്നില്ല</translation> @@ -658,11 +669,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB ടച്ച്സ്ക്രീൻ</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> ശേഷിക്കുന്നു</translation> +<translation id="760845693386726841">ഈ കമ്പോണന്റ് തിരിച്ചറിയാനാകുന്നില്ല.</translation> <translation id="7620771111601174153">സഹായകേന്ദ്രത്തിൽ കൂടുതലറിയുക</translation> <translation id="7626501172915339021">RMA സെർവർ അൺലോക്ക് (RSU) പ്രവർത്തനം നടപ്പാക്കുക</translation> <translation id="763165478673169849">അവസാനം റീസെറ്റ് ചെയ്ത സമയം</translation> <translation id="7648838807254605802">ഉയർന്ന HTTPS പ്രതികരണ സമയം</translation> <translation id="7656388927906093505">ഉപകരണം ഒരു മൗസാണ്.</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" /> റിപ്പയറിൽ പിശക്</translation> <translation id="7658239707568436148">റദ്ദാക്കൂ</translation> <translation id="7665800271478495366">അവതാർ മാറ്റുക</translation> <translation id="7690294790491645610">പുതിയ പാസ്വേഡ് സ്ഥിരീകരിക്കുക</translation> @@ -704,6 +717,7 @@ <translation id="8083281199617904460">ഈ റിപ്പയർ പ്രക്രിയ, പരിശീലനം ലഭിച്ച റിപ്പയർ ടെക്നീഷ്യന് വേണ്ടി രൂപകൽപ്പന ചെയ്തതാണ്. തകരാറുള്ള ഘടകങ്ങൾ മാറ്റിയ ശേഷം മാത്രം ആരംഭിക്കുക.</translation> <translation id="808894953321890993">പാസ്വേഡ് മാറ്റുക</translation> <translation id="8104083085214006426">ഓപ്പണും സുരക്ഷിതമല്ലാത്തതുമായ നെറ്റ്വർക്ക് ആണ് നിങ്ങൾ ഉപയോഗിക്കുന്നത്</translation> +<translation id="8109786307828817014">പരാജയപ്പെട്ട കാലിബ്രേഷനുകളുമായി മുന്നോട്ടുപോകണോ?</translation> <translation id="811820734797650957">(Android) ഗേറ്റ്വേ പിംഗ് ചെയ്യാനാകും</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° C</translation> <translation id="8132480444149501833">ട്രാഫിക് കൗണ്ടറുകൾ അഭ്യർത്ഥിക്കുക</translation> @@ -726,6 +740,7 @@ <translation id="8302368968391049045">HTTPS ഫയര്വാള്</translation> <translation id="8318753676953949627">ഇമേജുകളൊന്നുമില്ല</translation> <translation id="8327249300223641918">തുടരുന്നതിന് മുമ്പ്, നിങ്ങളുടെ ഉപകരണം മുഴുവനായി (ബേസും ലിഡും) നിരപ്പുള്ള ഒരു പ്രതലത്തിൽ വയ്ക്കുക.</translation> +<translation id="8330949592403310082">ഏതൊക്കെ കമ്പോണന്റുകളാണ് മാറ്റി നൽകിയതെന്ന് തിരഞ്ഞെടുക്കുക</translation> <translation id="8336739000755212683">ഉപകരണ അക്കൗണ്ട് ചിത്രം മാറ്റുക</translation> <translation id="8347227221149377169">പ്രിന്റ് ജോലികൾ</translation> <translation id="8352772353338965963">ഒന്നിലധികം സൈൻ-ഇന്നിനായി ഒരു അക്കൗണ്ട് ചേർക്കുക. സൈൻ-ഇൻ ചെയ്ത അക്കൗണ്ടുകളെല്ലാം ഒരു പാസ്വേഡില്ലാതെ ആക്സസ് ചെയ്യാനാകുമെന്നതിനാൽ ഈ സവിശേഷത പരിചയമുള്ള അക്കൗണ്ടുകളിൽ മാത്രമേ ഉപയോഗിക്കാവൂ.</translation> @@ -749,6 +764,7 @@ <translation id="8503813439785031346">ഉപയോക്തൃനാമം</translation> <translation id="8503836310948963452">കുറച്ച് മിനിറ്റുകൾ കൂടി മാത്രം…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">കാലിബ്രേറ്റ് ചെയ്യാൻ ഘടകങ്ങൾ ശരിയായി പ്രവർത്തിക്കില്ല</translation> <translation id="8575298406870537639">നിങ്ങളുടെ സേവനദാതാവിന് അവരുടെ നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യാൻ ഈ ഓപ്ഷൻ ആവശ്യമായി വന്നേക്കാം. വിശദാംശങ്ങൾക്ക് നിങ്ങളുടെ സേവനദാതാവുമായി ബന്ധപ്പെടുക.</translation> <translation id="8576249514688522074">പ്രവർത്തനമാരംഭിച്ചിട്ടില്ല</translation> <translation id="8620617069779373398">റോമിംഗ് നില</translation> @@ -803,6 +819,7 @@ <translation id="9025198690966128418">വ്യക്തിപര ഉപകരണമായി ഉപയോഗിക്കുക</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS റെസല്യൂഷൻ പ്രതികരിക്കാൻ കൂടുതൽ സമയമെടുക്കുന്നു</translation> +<translation id="9063121522582193837">ചില ഘടകങ്ങൾ കാലിബ്രേറ്റ് ചെയ്യാനാകുന്നില്ല</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">ഈ വീഡിയോ ഉപയോഗിക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index 86ed0d2e..842004c 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">गडद थीम बंद करा</translation> <translation id="1807246157184219062">फिकट</translation> <translation id="1827738518074806965">आर्ट गॅलरी</translation> +<translation id="1840835860961531162">Write Protect बंद करा</translation> <translation id="1851218745569890714">व्हिडिओ कॉंफरन्सिंग</translation> <translation id="1852934301711881861">ChromeOS Flex इंस्टॉल करा</translation> <translation id="1856388568474281774">डाउन अॅरो</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">होस्टचे निराकरण करता आले नाही</translation> <translation id="3942420633017001071">निदान</translation> <translation id="3954678691475912818">डिव्हाइसचा प्रकार अज्ञात आहे.</translation> +<translation id="3958703339436883942">रीस्टार्ट करण्यासाठी तयार करत आहे…</translation> <translation id="3966286471246132217">आणखी अचूक परिणामांसाठी, चाचणी पूर्ण होईपर्यंत सर्व अॅप्स बंद करा.</translation> <translation id="3967822245660637423">पूर्ण डाउनलोड करा</translation> <translation id="3969602104473960991">ChromeOS चा पासवर्ड अपडेट केला आहे</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">रूटीन वर परत जा</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">आवृत्ती <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">पुढील स्क्रीनवर सुरू ठेवण्यासाठी write-protect बंद करा. सूचनांसाठी डिव्हाइस निर्मात्याच्या सपोर्ट पेजवर जा.</translation> <translation id="5300814202279832142">विंडो या डेस्कवर हलवा</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">कनेक्ट करा</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">अज्ञात</translation> <translation id="5843706793424741864">फॅरेनहाइट</translation> <translation id="5849570051105887917">होम प्रोव्हाइडर कोड</translation> +<translation id="5856532218727053281">Write Protection स्टेटसची पडताळणी केल्यानंतर सिस्टीम रीस्टार्ट होईल</translation> <translation id="5859603669299126575">आर्ट गॅलरी अल्बम</translation> <translation id="5860033963881614850">बंद</translation> <translation id="5860491529813859533">सुरू करा</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index e21d240..fd8b405 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -94,6 +94,7 @@ <translation id="1801418420130173017">မှောင်သည့် အပြင်အဆင် ပိတ်ရန်</translation> <translation id="1807246157184219062">အလင်း</translation> <translation id="1827738518074806965">ပန်းချီပြခန်း</translation> +<translation id="1840835860961531162">Write Protect ပိတ်ရန်</translation> <translation id="1851218745569890714">ဗီဒီယိုအစည်းအဝေး</translation> <translation id="1852934301711881861">ChromeOS Flex ထည့်သွင်းရန်</translation> <translation id="1856388568474281774">အောက်ညွှန်မြား</translation> @@ -279,6 +280,7 @@ <translation id="3941014780699102620">ဆာဗာပင်ရင်းကို မဖြေရှင်းနိုင်ပါ</translation> <translation id="3942420633017001071">အမှားရှာဖွေမှုများ</translation> <translation id="3954678691475912818">ကိရိယာအမျိုးအစား မသိပါ။</translation> +<translation id="3958703339436883942">ပြန်စရန် ပြင်ဆင်နေသည်...</translation> <translation id="3966286471246132217">ပိုမိုတိကျသော ရလဒ်များအတွက် စစ်ဆေးမှုပြီးသည်အထိ အက်ပ်အားလုံးကို ပိတ်ပါ။</translation> <translation id="3967822245660637423">ဒေါင်းလုဒ်လုပ်ခြင်း ပြည့်စုံပါပြီ</translation> <translation id="3969602104473960991">ChromeOS စကားဝှက် အပ်ဒိတ်လုပ်ထားသည်</translation> @@ -427,6 +429,7 @@ <translation id="5275828089655680674">ပုံမှန်အစီအစဉ်များသို့ ပြန်သွားရန်</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">ဗားရှင်း <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">လာမည့်စခရင်သို့ ရှေ့ဆက်ရန် Write Protect ပိတ်ပါ။ ညွှန်ကြားချက်များအတွက် စက်ထုတ်လုပ်သူ၏ အကူအညီစာမျက်နှာသို့ သွားပါ။</translation> <translation id="5300814202279832142">ဝင်းဒိုးကို မျက်နှာပြင်နေရာသို့ ရွှေ့ရန်</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">ချိတ်ဆက်ရန်</translation> @@ -479,6 +482,7 @@ <translation id="583281660410589416">မသိရ</translation> <translation id="5843706793424741864">ဖာရင်ဟိုက်</translation> <translation id="5849570051105887917">ပင်မထောက်ပံ့သူကုဒ်</translation> +<translation id="5856532218727053281">Write Protection အခြေအနေ အတည်ပြုပြီးနောက် စနစ်ကို ပြန်စမည်</translation> <translation id="5859603669299126575">အနုပညာပြခန်း အယ်လ်ဘမ်</translation> <translation id="5860033963881614850">ပိတ်ထား</translation> <translation id="5860491529813859533">ဖွင့်ရန်</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index 6ed1e0d..30e9bbd4 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">स्क्यान गर्ने क्षेत्रमा मिलाउनुहोस्</translation> <translation id="1367951781824006909">एउटा फाइल रोज्नुहोस्</translation> +<translation id="1380220803921738821">यो एप लन्च गर्ने क्रममा त्रुटि भइरहेको छ। डिभाइस रिबुट गरी हेर्नुहोस् वा USB थम्बड्राइभ प्रयोग गरी फर्मवेयर रिकभर गर्नुहोस्।</translation> <translation id="1387854245479784695">यसमा सबै कोरहरूको डेटा समावेश हुन्छ</translation> <translation id="1394661041439318933">यो डिभाइसको केसमा <ph name="BATTERY_PERCENTAGE" />% ब्याट्री बाँकी छ।</translation> <translation id="1397738625398125236">गेटवे पिङ गर्न सकिन्छ</translation> @@ -186,6 +187,7 @@ <translation id="2789486458103222910">ठिक छ</translation> <translation id="2805756323405976993">एप्स</translation> <translation id="28232023175184696">इन्टरनेटमा कनेक्ट हुन सकेन। फेरि प्रयास गर्न क्लिक गर्नुहोस्।</translation> +<translation id="2827359915699915567">RSU कोड प्राप्त गर्न यो URL टाइप गर्नुहोस्</translation> <translation id="2859243502336719778">अत्यावश्यक अपडेट</translation> <translation id="2860473693272905224">स्क्यानरमा अर्को पेज राख्नुहोस्</translation> <translation id="2872961005593481000">बन्द गर्नुहोस्</translation> @@ -224,6 +226,7 @@ <translation id="3291996639387199448">मुख्य डिरेक्सन</translation> <translation id="3310640316857623290">DNS को विलम्बता तोकिएको समयसीमाभन्दा अत्याधिक मात्रामा बढी छ</translation> <translation id="3328783797891415197">परीक्षण चलिरहेको छ</translation> +<translation id="3333527094307156612">८ वटा वर्ण भएको अनलक कोड प्राप्त गर्न यो QR कोड प्रयोग गर्नुहोस्। तपाईं <ph name="LINK_BEGIN" />यो URL<ph name="LINK_END" /> टाइप गर्न पनि सक्नुहुन्छ।</translation> <translation id="3336855445806447827">निश्चित छैन</translation> <translation id="3340011300870565703">यो डिभाइसको दायाँपट्टिको बडमा <ph name="BATTERY_PERCENTAGE" />% ब्याट्री बाँकी छ।</translation> <translation id="3368922792935385530">जडित</translation> @@ -257,6 +260,7 @@ <translation id="3606583719724308068">HTTPS वेबसाइटहरू लोड हुन धेरै समय लागिरहेको छ</translation> <translation id="3621202678540785336">आगत</translation> <translation id="3632579075709132555">प्राइभेसी स्क्रिन टगल</translation> +<translation id="3643810137582748570">क्यालिब्रेट नगरिकन अगाडि बढ्नुहोस्</translation> <translation id="3678765385266369662">तपाईं जुन विकल्प प्रयोग गरी Write Protect अफ गरियोस् भन्ने चाहनुहुन्छ सोही विकल्प चयन गर्नुहोस्</translation> <translation id="3689839747745352263"><ph name="TEST_NAME" /> परीक्षण</translation> <translation id="370665806235115550">लोड गर्दै...</translation> @@ -407,6 +411,7 @@ <translation id="5049856988445523908">SIM लक गरिएको छ (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">समूहको नाम</translation> <translation id="5051044138948155788">यो एउटा मात्र पेज हो। यसले तपाईंलाई स्क्यान सुरु गर्ने स्क्रिनमा लैजाने छ।</translation> +<translation id="506768878203270635">८ वटा वर्ण हाल्नुहोस्</translation> <translation id="5088172560898466307">सर्भरको होस्टनाम</translation> <translation id="5089810972385038852">राज्य</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -467,6 +472,7 @@ <translation id="5620281292257375798">आन्तरिक प्रयोजनका लागि मात्र</translation> <translation id="5649768706273821470">सुन्नुहोस्</translation> <translation id="5655283760733841251">किबोर्डको चमक बढाउने की</translation> +<translation id="5661196929408385351">पावरवास गरी सट डाउन गर्नुहोस्</translation> <translation id="5669267381087807207">सक्रिय गर्दै</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">परिवार</translation> @@ -478,6 +484,7 @@ <translation id="576835345334454681">डिस्प्लेको चमक बढाउने की</translation> <translation id="57838592816432529">म्यूट गर्नुहोस्</translation> <translation id="5784136236926853061">HTTP को विलम्बता धेरै छ</translation> +<translation id="578753362485952307">तपाईं कुनै अर्को डिभाइसमा प्रयोग गर्ने प्रयोजनका लागि मेनबोर्ड परिमार्जन गर्दै हुनुहुन्छ भने <ph name="LINK_BEGIN" />परिमार्जन गर्ने फ्लो<ph name="LINK_END" />मा जानुहोस्।</translation> <translation id="5832805196449965646">व्यक्ति थप्नुहोस्</translation> <translation id="583281660410589416">अज्ञात</translation> <translation id="5843706793424741864">फरेनहाइट</translation> @@ -534,6 +541,7 @@ <translation id="6278428485366576908">विषयवस्तु</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">अँध्यारो थिम अन गर्नुहोस्</translation> +<translation id="6295178529664209245">मर्मत गर्ने कार्य जारी राख्ने हो?</translation> <translation id="6302401976930124515"><ph name="TEST_NAME" /> परीक्षण रद्द गरिएको छ</translation> <translation id="6319207335391420837"><ph name="DEVICE_NAME" /> को फर्मवेयर अपडेट गर्नुहोस्</translation> <translation id="6321407676395378991">स्क्रिन सेभर अन गर्नुहोस्</translation> @@ -569,6 +577,7 @@ <translation id="6575134580692778371">विन्यास गरिएको छैन</translation> <translation id="6579509898032828423">यो फोटो प्रयोग गर्नुहोस्</translation> <translation id="6596816719288285829">IP ठेगाना</translation> +<translation id="6611280807952151149"><ph name="DEVICE_TYPE" /> मर्मत गर्ने प्रक्रियाबाट बाहिरिनुहोस्</translation> <translation id="6618744767048954150">जाँच हुँदै छ</translation> <translation id="6620487321149975369">तपाईंले प्रिन्टसम्बन्धी कार्यहरू नहटाउँदासम्म ती कार्यहरू इतिहासमा देखिने छन्</translation> <translation id="6643016212128521049">खालि गर्नुहोस्</translation> @@ -581,6 +590,7 @@ <translation id="6723839937902243910">पावर</translation> <translation id="6723847290197874913">किबोर्डको ब्याकलाइट</translation> <translation id="672609503628871915">नयाँ के छ हेर्नुहोस्</translation> +<translation id="6746847322826305075">तपाईं पूर्ण रूपमा मर्मत गर्ने कार्य जारी राख्न वा मेनबोर्ड रिस्टक गर्न यो डिभाइस पावरवास (फ्याक्ट्री रिसेट) गर्न सक्नुहुन्छ।</translation> <translation id="6747215703636344499">रोकियो - प्रिन्टरको आउटपुट ट्रे भरिएको छ</translation> <translation id="6749473226660745022">फोटोहरू</translation> <translation id="6753452347192452143">यो डिभाइस कम्प्युटर हो।</translation> @@ -628,6 +638,7 @@ <translation id="7216409898977639127">सेलुलर प्रदायक</translation> <translation id="7271040990581020067">स्क्यानर हाल प्रयोग भइरहेको छ। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">१ वा सोभन्दा बढी कम्पोनेन्ट चयन गरेर फेरि प्रयास गर्नुहोस् वा क्यालिब्रेट नगरिकन अगाडि बढ्नुहोस्</translation> <translation id="7281657306185710294">Feel the breeze</translation> <translation id="7287310195820267359">वालपेपरका सङ्ग्रहहरू</translation> <translation id="7297226631177386107">फायरवाल पार गरेर HTTPS वेबसाइटहरूमा कनेक्ट गर्न सकिएन</translation> @@ -658,11 +669,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB टचस्क्रिन</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> बाँकी</translation> +<translation id="760845693386726841">यो कम्पोनेन्ट पत्ता लगाउन सकिएन।</translation> <translation id="7620771111601174153">मद्दत केन्द्रमा गई थप जान्नुहोस्</translation> <translation id="7626501172915339021">RMA सर्भर अनलक (RSU) क्यालिब्रेट गरियोस्</translation> <translation id="763165478673169849">पछिल्लो पटक रिसेट गरिएको मिति र समय</translation> <translation id="7648838807254605802">HTTPS को विलम्बता धेरै छ</translation> <translation id="7656388927906093505">यो डिभाइस माउस हो।</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" /> मर्मत गर्ने क्रममा त्रुटि भयो</translation> <translation id="7658239707568436148">रद्द गर्नुहोस्</translation> <translation id="7665800271478495366">अवतार बदल्नुहोस्</translation> <translation id="7690294790491645610">नयाँ पासवर्ड पुष्टि गर्नुहोस्</translation> @@ -704,6 +717,7 @@ <translation id="8083281199617904460">यो मर्मत प्रक्रिया तालिम प्राप्त मर्मत प्राविधिकका लागि तयार पारिएको हो। खराब कम्पोनेन्टहरू बदलेपछि मात्र उक्त प्रक्रिया सुरु गर्नुहोस्।</translation> <translation id="808894953321890993">पासवर्ड परिवर्तन गर्नुहोस्</translation> <translation id="8104083085214006426">तपाईं खुला र असुरक्षित नेटवर्क प्रयोग गर्दै हुनुहुन्छ</translation> +<translation id="8109786307828817014">क्यालिब्रेट नगरिकन अगाडि बढ्ने हो?</translation> <translation id="811820734797650957">(Android) गेटवे पिङ गर्न सकिन्छ</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />° से.</translation> <translation id="8132480444149501833">ट्राफिक काउन्टरसम्बन्धी जानकारी माग्दै अनुरोध पठाउनुहोस्</translation> @@ -726,6 +740,7 @@ <translation id="8302368968391049045">HTTPS फायरवाल</translation> <translation id="8318753676953949627">कुनै पनि फोटो छैन</translation> <translation id="8327249300223641918">अगाडि बढ्नुअघि आफ्नो पूरै डिभाइस (तल्लो भाग र कभर) कुनै समतल सतहमा राख्नुहोस्।</translation> +<translation id="8330949592403310082">फेरिएका कम्पोनेन्टहरू चयन गर्नुहोस्</translation> <translation id="8336739000755212683">यन्त्रको खाताको छवि बदल्नुहोस्</translation> <translation id="8347227221149377169">प्रिन्टसम्बन्धी कार्यहरू</translation> <translation id="8352772353338965963">बहुविध साइन-इन को लागि एउटा खाता थप्नुहोस्। सबै साइन-इन भएका खाताहरू पासवर्ड विना नै पहुँच गर्न सकिन्छ, त्यसैले यो सुविधा विश्वसनीय खाताहरूसँग मात्रै प्रयोग गर्नुपर्छ।</translation> @@ -749,6 +764,7 @@ <translation id="8503813439785031346">एक-पटके टेक्स्ट म्यासेज</translation> <translation id="8503836310948963452">थप केही मिनेट मात्र पर्खनुहोस्…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">कम्पोनेन्टहरू क्यालिब्रेट नगरिएका खण्डमा तिनले राम्रोसँग काम नगर्न सक्छन्</translation> <translation id="8575298406870537639">तपाईंको मोबाइल सेवा प्रदायकले सो सेवा प्रदायकको नेटवर्कमा कनेक्ट गर्न सकोस् भन्नाका लागि तपाईंले यो विकल्प अन गर्नु पर्ने हुन सक्छ। यससम्बन्धी थप जानकारी प्राप्त गर्न आफ्नो मोबाइल सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</translation> <translation id="8576249514688522074">सुरु गरिएको छैन</translation> <translation id="8620617069779373398">रोमिङको स्थिति</translation> @@ -803,6 +819,7 @@ <translation id="9025198690966128418">व्यक्तिगत डिभाइसका रूपमा प्रयोग गर्नुहोस्</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS रिजोल्युसनमा उच्च विलम्बता छ</translation> +<translation id="9063121522582193837">केही कम्पोनेन्टहरू क्यालिब्रेट गर्न सकिएन</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">ब्लुटुथ</translation> <translation id="9082718469794970195">यो भिडियो प्रयोग गर्नुहोस्</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index 93fa5b0b..6faee053 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Volgende</translation> <translation id="1204296502688602597">DNS-latentie</translation> <translation id="123124571410524056">Vermoedelijke portal</translation> +<translation id="1236400083787698183">Voordat je het apparaat opnieuw opstart, voer je een Powerwash uit. Als je apparaat een klep heeft, wacht je totdat de Powerwash klaar is voordat je de klep sluit. Het kan een minuut duren voordat de Powerwash klaar is.</translation> <translation id="1238612778414822719">HTTPS-latentie</translation> +<translation id="1240699967155581440">Powerwash (fabrieksinstellingen terugzetten) vereist</translation> <translation id="1264116747675686718">OS-versie updaten</translation> <translation id="1264369926465113395">Bekijk het nieuwe digitale tijdschrift van Chromebook voor makers</translation> <translation id="1270369111467284986">Vermoedelijke captive portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />Niet-gekwalificeerde componenten<ph name="LINK_END" /> gevonden. Als je wilt bevestigen dat dit is geïnstalleerd, doe je dat nu.</translation> <translation id="2363636958541445404">Zet de functie aan om screensaveropties te selecteren</translation> <translation id="2364498172489649528">Geslaagd</translation> +<translation id="236594517359128026">Voordat je doorgaat, plaats je de laptop op een vlakke ondergrond</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Feedbackrapport sturen</translation> <translation id="2407209115954268704">Simlockstatus</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Ongeldige pincode.</translation> <translation id="3838338534323494292">Nieuw wachtwoord</translation> <translation id="385051799172605136">Terug</translation> +<translation id="385832974417157471">Voordat je het apparaat uitzet, voer je een Powerwash uit. Als je apparaat een klep heeft, wacht je totdat de Powerwash klaar is voordat je de klep sluit. Het kan een minuut duren voordat de Powerwash klaar is.</translation> <translation id="3858860766373142691">Naam</translation> <translation id="3865414814144988605">Resolutie</translation> <translation id="387301095347517405">Het aantal keren dat de batterij een volledige oplaadcyclus heeft doorlopen</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Zorg dat Chrome OS up-to-date is</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Componenten kalibreren</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Opnieuw scannen</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Mobiel</translation> <translation id="8208861521865154048">Speciale voordelen</translation> <translation id="8217675307824400706">Verbinding maken</translation> +<translation id="8221728673725659466">Kalibratie afgerond</translation> <translation id="8226628635270268143">Kies je favoriete foto's en albums</translation> <translation id="8230672074305416752">Kan de standaard netwerkgateway niet pingen</translation> <translation id="8246209727385807362">Onbekende provider</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Zwak</translation> <translation id="8302368968391049045">HTTPS-firewall</translation> <translation id="8318753676953949627">Geen afbeeldingen</translation> +<translation id="8327249300223641918">Voordat je doorgaat, plaats je het hele apparaat (basis en klep) op een vlakke ondergrond.</translation> <translation id="8336739000755212683">Accountafbeelding van apparaat wijzigen</translation> <translation id="8347227221149377169">Afdruktaken</translation> <translation id="8352772353338965963">Een account toevoegen aan Toegang tot meerdere accounts. Alle ingelogde accounts zijn toegankelijk zonder wachtwoord, dus deze functie moet alleen worden gebruikt voor vertrouwde accounts.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS is niet ingesteld</translation> <translation id="8456761643544401578">Automatisch donkere modus</translation> <translation id="8461329675984532579">Naam thuisprovider</translation> +<translation id="8467104829907989997">Componenten kalibreren...</translation> <translation id="8475690821716466388">Wifi-netwerk is beveiligd met het zwakke protocol WEP PSK</translation> <translation id="8477551185774834963">DNS-latentie is iets langer dan de toelaatbare drempel</translation> <translation id="8483248364096924578">IP-adres</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Scannen}=1{Pagina {NUMBER_OF_PAGES} scannen}other{Pagina {NUMBER_OF_PAGES} scannen}}</translation> <translation id="8997710128084572139">Apparaat heeft nog <ph name="BATTERY_PERCENTAGE" />% batterijlading.</translation> <translation id="9003704114456258138">Frequentie</translation> +<translation id="9025198690966128418">Gebruiken als persoonlijk apparaat</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS-omzetting heeft een lange vertraging</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index 0d3b957..448a792 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Tilpass til skanneområdet</translation> <translation id="1367951781824006909">Velg en fil</translation> +<translation id="1380220803921738821">Vi opplever feil. Prøv å starte på nytt eller gjenopprette fastvaren med en USB-minnepinne.</translation> <translation id="1387854245479784695">Dette er en sammenstilling av alle kjernene</translation> <translation id="1394661041439318933">Enheten har <ph name="BATTERY_PERCENTAGE" /> % batteri i etuiet.</translation> <translation id="1397738625398125236">Gatewayen kan pinges</translation> @@ -186,6 +187,7 @@ <translation id="2789486458103222910">OK</translation> <translation id="2805756323405976993">Apper</translation> <translation id="28232023175184696">Kan ikke koble til internett. Klikk for å prøve på nytt.</translation> +<translation id="2827359915699915567">Skriv inn denne nettadressen manuelt for å få RSU-koden</translation> <translation id="2859243502336719778">Kritisk oppdatering</translation> <translation id="2860473693272905224">Legg en ny side på skanneren</translation> <translation id="2872961005593481000">Slå av</translation> @@ -224,6 +226,7 @@ <translation id="3291996639387199448">Nøkkelretning</translation> <translation id="3310640316857623290">DNS-forsinkelsen er betydelig høyere enn den tillatte grenseverdien</translation> <translation id="3328783797891415197">Testen kjøres</translation> +<translation id="3333527094307156612">Bruk denne QR-koden for å få opplåsingskoden på åtte tegn. Du kan også skrive inn <ph name="LINK_BEGIN" />denne nettadressen<ph name="LINK_END" /> manuelt.</translation> <translation id="3336855445806447827">Usikker</translation> <translation id="3340011300870565703">Enheten har <ph name="BATTERY_PERCENTAGE" /> % batteri i høyre øreplugg.</translation> <translation id="3368922792935385530">Tilkoblet</translation> @@ -257,6 +260,7 @@ <translation id="3606583719724308068">Høy tidsforsinkelse til HTTPS-nettsteder</translation> <translation id="3621202678540785336">Inndata</translation> <translation id="3632579075709132555">Personvernskjerm av/på</translation> +<translation id="3643810137582748570">Hopp over kalibreringen</translation> <translation id="3678765385266369662">Velg hvordan du vil slå av skrivebeskyttelsen</translation> <translation id="3689839747745352263"><ph name="TEST_NAME" />test</translation> <translation id="370665806235115550">Laster inn ...</translation> @@ -407,6 +411,7 @@ <translation id="5049856988445523908">SIM-kortet er låst (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Gruppenavn</translation> <translation id="5051044138948155788">Dette er den eneste siden. Dette medfører at du blir sendt til startskjermbildet for skanning.</translation> +<translation id="506768878203270635">Skriv inn de åtte tegnene</translation> <translation id="5088172560898466307">Vertsnavn for tjener</translation> <translation id="5089810972385038852">Fylke/delstat</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -468,6 +473,7 @@ <translation id="5620281292257375798">Bare internt</translation> <translation id="5649768706273821470">Lytt</translation> <translation id="5655283760733841251">Tastaturlysstyrke opp</translation> +<translation id="5661196929408385351">Utfør en powerwash og slå av enheten</translation> <translation id="5669267381087807207">Aktiverer</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Familie</translation> @@ -479,6 +485,7 @@ <translation id="576835345334454681">Skjermlysstyrke opp</translation> <translation id="57838592816432529">Kutt lyden</translation> <translation id="5784136236926853061">Høy HTTP-tidsforsinkelse</translation> +<translation id="578753362485952307">Hvis du skal gjenbruke et hovedkort i en annen enhet, går du til <ph name="LINK_BEGIN" />gjenbruksflyten<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Legg til person</translation> <translation id="583281660410589416">Ukjent</translation> <translation id="5843706793424741864">Fahrenheit</translation> @@ -535,6 +542,7 @@ <translation id="6278428485366576908">Tema</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Slå på mørkt tema</translation> +<translation id="6295178529664209245">Vil du fortsette reparasjonen?</translation> <translation id="6302401976930124515"><ph name="TEST_NAME" />testen er avbrutt</translation> <translation id="6319207335391420837">Oppdater fastvaren på <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Slå på skjermspareren</translation> @@ -570,6 +578,7 @@ <translation id="6575134580692778371">Ikke konfigurert</translation> <translation id="6579509898032828423">Bruk dette bildet</translation> <translation id="6596816719288285829">IP-adresse</translation> +<translation id="6611280807952151149">Avslutt <ph name="DEVICE_TYPE" />-reparasjonen</translation> <translation id="6618744767048954150">Kjører</translation> <translation id="6620487321149975369">Utskriftsjobber vises i loggen med mindre de fjernes manuelt</translation> <translation id="6643016212128521049">Tøm</translation> @@ -582,6 +591,7 @@ <translation id="6723839937902243910">Strøm</translation> <translation id="6723847290197874913">Bakgrunnsbelysning for tastatur</translation> <translation id="672609503628871915">Se hva som er nytt</translation> +<translation id="6746847322826305075">Du kan fortsette med den fullstendige reparasjonen, eller du kan utføre en powerwash (tilbakestilling til fabrikkstandard) på enheten for å fylle på hovedkortet på nytt.</translation> <translation id="6747215703636344499">Stoppet – utskriftsmottaket er fullt</translation> <translation id="6749473226660745022">Bilder</translation> <translation id="6753452347192452143">Enheten er en datamaskin.</translation> @@ -629,6 +639,7 @@ <translation id="7216409898977639127">Mobiloperatør</translation> <translation id="7271040990581020067">Skanneren er i bruk for øyeblikket. Prøv på nytt senere.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Velg én eller flere komponenter og prøv på nytt, eller hopp over kalibreringen</translation> <translation id="7281657306185710294">Kjenn brisen</translation> <translation id="7287310195820267359">Samlinger av bakgrunnsbilder</translation> <translation id="7297226631177386107">Kan ikke koble til HTTPS-nettsteder gjennom brannmuren</translation> @@ -659,11 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">USB-berøringsskjerm</translation> <translation id="7595982850646262331"><ph name="TIME_VALUE" /> igjen</translation> +<translation id="760845693386726841">Fant ikke denne komponenten.</translation> <translation id="7620771111601174153">Finn ut mer i Brukerstøtte</translation> <translation id="7626501172915339021">Utfør RMA-tjeneropplåsing (RSU)</translation> <translation id="763165478673169849">Forrige tidspunkt for tilbakestilling</translation> <translation id="7648838807254605802">Høy HTTPS-tidsforsinkelse</translation> <translation id="7656388927906093505">Enheten er en mus.</translation> +<translation id="7657530360897961171"><ph name="DEVICE_TYPE" />-reparasjonsfeil</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7665800271478495366">Bytt brukerbilde</translation> <translation id="7690294790491645610">Bekreft det nye passordet</translation> @@ -705,6 +718,7 @@ <translation id="8083281199617904460">Denne reparasjonsprosessen er beregnet på en kvalifisert reparatør. Den skal kun startes etter at de ikke-fungerende komponentene er byttet ut.</translation> <translation id="808894953321890993">Endre passord</translation> <translation id="8104083085214006426">Du bruker et åpent og usikret nettverk</translation> +<translation id="8109786307828817014">Vil du gå videre med de mislykkede kalibreringene?</translation> <translation id="811820734797650957">(Android) Gatewayen kan pinges</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8132480444149501833">Be om trafikktellere</translation> @@ -727,6 +741,7 @@ <translation id="8302368968391049045">HTTPS-brannmur</translation> <translation id="8318753676953949627">Ingen bilder</translation> <translation id="8327249300223641918">Før du går videre, må du plassere hele enheten (base og lokk) på en flat overflate.</translation> +<translation id="8330949592403310082">Velg hvilke komponenter som er byttet ut</translation> <translation id="8336739000755212683">Endre bildet for enhetskontoen</translation> <translation id="8347227221149377169">Utskriftsjobber</translation> <translation id="8352772353338965963">Legg til en konto for multipålogging. Alle påloggede kontoer kan brukes uten passord, så denne funksjonen burde bare brukes med pålitelige kontoer.</translation> @@ -750,6 +765,7 @@ <translation id="8503813439785031346">Brukernavn</translation> <translation id="8503836310948963452">Bare noen få minutter igjen …</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Hvis komponentene ikke kalibreres, kan det hende at de ikke virker som de skal</translation> <translation id="8575298406870537639">Det kan hende operatøren din krever dette alternativet for at du skal kunne koble til nettverket deres Kontakt operatøren for mer informasjon.</translation> <translation id="8576249514688522074">Ikke initialisert</translation> <translation id="8620617069779373398">Status for roaming</translation> @@ -804,6 +820,7 @@ <translation id="9025198690966128418">Bruk som personlig enhet</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS-oppslag har høy tidsforsinkelse</translation> +<translation id="9063121522582193837">Kunne ikke kalibrere enkelte komponenter</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Bruk denne videoen</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index a6e9c959..93af18cc 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -94,6 +94,7 @@ <translation id="1801418420130173017">ଗାଢ଼ା ଥିମକୁ ଅକ୍ଷମ କରନ୍ତୁ</translation> <translation id="1807246157184219062">ଫିକା</translation> <translation id="1827738518074806965">ଆର୍ଟ ଗ୍ୟାଲେରୀ</translation> +<translation id="1840835860961531162">Write Protectକୁ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="1851218745569890714">ଭିଡିଓ କନଫରେନସିଂ</translation> <translation id="1852934301711881861">ChromeOS Flexକୁ ଇନଷ୍ଟଲ କରନ୍ତୁ</translation> <translation id="1856388568474281774">ତଳ ତୀର</translation> @@ -279,6 +280,7 @@ <translation id="3941014780699102620">ହୋଷ୍ଟ ସମ୍ବନ୍ଧିତ ସମସ୍ୟାର ସମାଧାନ କରିବାରେ ବିଫଳ ହୋଇଛି</translation> <translation id="3942420633017001071">ଡାଏଗ୍ନୋଷ୍ଟିକ୍ସ</translation> <translation id="3954678691475912818">ଡିଭାଇସର ପ୍ରକାର ଅଜଣା ଅଟେ।</translation> +<translation id="3958703339436883942">ରିଷ୍ଟାର୍ଟ ପାଇଁ ପ୍ରସ୍ତୁତ ହେଉଛି...</translation> <translation id="3966286471246132217">ଅଧିକ ସଠିକ୍ ଫଳାଫଳ ପାଇଁ, ଟେଷ୍ଟ ସମ୍ପୂର୍ଣ୍ଣ ନହେବା ପର୍ଯ୍ୟନ୍ତ ସମସ୍ତ ଆପକୁ ବନ୍ଦ କରନ୍ତୁ।</translation> <translation id="3967822245660637423">ଡାଉନ୍ଲୋଡ୍ ଶେଷ ହୋଇଛି</translation> <translation id="3969602104473960991">ChromeOSର ପାସୱାର୍ଡ ଅପଡେଟ ହୋଇଛି</translation> @@ -428,6 +430,7 @@ <translation id="5275828089655680674">ରୁଟିନଗୁଡ଼ିକୁ ପୁଣି ଚଲାନ୍ତୁ</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">ସଂସ୍କରଣ <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">ପରବର୍ତ୍ତୀ ସ୍କ୍ରିନକୁ ଯିବା ପାଇଁ write-protectକୁ ଅକ୍ଷମ କରନ୍ତୁ। ନିର୍ଦ୍ଦେଶାବଳୀ ପାଇଁ ଡିଭାଇସ ନିର୍ମାତାଙ୍କ ସହାୟତା ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ।</translation> <translation id="5300814202279832142">ୱିଣ୍ଡୋକୁ ଡେସ୍କ ସବମେନୁକୁ ମୁଭ୍ କରନ୍ତୁ</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">ସଂଯୋଗ କରନ୍ତୁ</translation> @@ -480,6 +483,7 @@ <translation id="583281660410589416">ଅଜ୍ଞାତ</translation> <translation id="5843706793424741864">ଫାରେନହାଇଟ୍</translation> <translation id="5849570051105887917">ମୂଳ ପ୍ରଦାତା କୋଡ୍</translation> +<translation id="5856532218727053281">Write Protection ସ୍ଥିତି ଯାଞ୍ଚ କରିବା ପରେ ସିଷ୍ଟମ ରିଷ୍ଟାର୍ଟ ହେବ</translation> <translation id="5859603669299126575">ଆର୍ଟ ଗ୍ୟାଲେରୀ ଆଲବମ</translation> <translation id="5860033963881614850">ବନ୍ଦ ଅଛି</translation> <translation id="5860491529813859533">ଚାଲୁ କରନ୍ତୁ</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index 3598519..225c75c 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">ਅੱਗੇ</translation> <translation id="1204296502688602597">DNS ਵਿਲੰਬਤਾ</translation> <translation id="123124571410524056">ਪੋਰਟਲ 'ਤੇ ਸ਼ੱਕ ਹੈ</translation> +<translation id="1236400083787698183">ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਪਾਵਰਵਾਸ਼ ਕਰੋ। ਜੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਵਿੱਚ ਲਿਡ ਹੈ, ਤਾਂ ਲਿਡ ਨੂੰ ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਾਵਰਵਾਸ਼ ਦੇ ਪੂਰੇ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰੋ। ਪਾਵਰਵਾਸ਼ ਨੂੰ ਪੂਰਾ ਹੋਣ ਵਿੱਚ ਇੱਕ ਮਿੰਟ ਤੱਕ ਦਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।</translation> <translation id="1238612778414822719">HTTPS ਵਿਲੰਬਤਾ</translation> +<translation id="1240699967155581440">ਪਾਵਰਵਾਸ਼ (ਫੈਕਟਰੀ ਰੀਸੈੱਟ) ਲੋੜੀਂਦਾ ਹੈ</translation> <translation id="1264116747675686718">OS ਵਰਜਨ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="1264369926465113395">ਰਚਨਾਕਾਰਾਂ ਲਈ Chromebook ਦਾ ਨਵਾਂ ਡਿਜੀਟਲ ਰਸਾਲਾ ਦੇਖੋ</translation> <translation id="1270369111467284986">ਕੈਪਟਿਵ ਪੋਰਟਲ 'ਤੇ ਸ਼ੱਕ ਹੈ</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />ਅਯੋਗ ਹਿੱਸਿਆਂ<ph name="LINK_END" /> ਦਾ ਪਤਾ ਲੱਗਿਆ। ਜੇ ਤੁਸੀਂ ਇਸ ਗੱਲ ਦੀ ਤਸਦੀਕ ਕਰਨ ਦੀ ਚੋਣ ਕਰਦੇ ਹੋ ਕਿ ਇਸਨੂੰ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਹੁਣੇ ਕਰੋ।</translation> <translation id="2363636958541445404">ਸਕ੍ਰੀਨ-ਸੇਵਰ ਵਿਕਲਪਾਂ ਨੂੰ ਚੁਣਨ ਲਈ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="2364498172489649528">ਪਾਸ ਕੀਤਾ</translation> +<translation id="236594517359128026">ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ, ਆਪਣੇ ਲੈਪਟਾਪ ਨੂੰ ਪੱਧਰੀ ਸਤ੍ਹਾ 'ਤੇ ਰੱਖੋ</translation> <translation id="2380886658946992094">ਕਨੂੰਨੀ</translation> <translation id="2391082728065870591">ਵਿਚਾਰ ਸੰਬੰਧੀ ਰਿਪੋਰਟ ਭੇਜੋ</translation> <translation id="2407209115954268704">ਸਿਮ ਦੀ ਲਾਕ ਸਥਿਤੀ</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">ਅਵੈਧ ਪਿੰਨ।</translation> <translation id="3838338534323494292">ਨਵਾਂ ਪਾਸਵਰਡ</translation> <translation id="385051799172605136">ਪਿੱਛੇ</translation> +<translation id="385832974417157471">ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਪਾਵਰਵਾਸ਼ ਕਰੋ। ਜੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਵਿੱਚ ਲਿਡ ਹੈ, ਤਾਂ ਲਿਡ ਨੂੰ ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਾਵਰਵਾਸ਼ ਦੇ ਪੂਰੇ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰੋ। ਪਾਵਰਵਾਸ਼ ਨੂੰ ਪੂਰਾ ਹੋਣ ਵਿੱਚ ਇੱਕ ਮਿੰਟ ਤੱਕ ਦਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।</translation> <translation id="3858860766373142691">ਨਾਮ</translation> <translation id="3865414814144988605">ਰੈਜ਼ੋਲਿਊਸ਼ਨ</translation> <translation id="387301095347517405">ਤੁਹਾਡੀ ਬੈਟਰੀ ਵੱਲੋਂ ਚਾਰਜ ਹੋਣ ਦੇ ਚੱਕਰ ਨੂੰ ਪੂਰਾ ਕੀਤੇ ਜਾਣ ਦੀ ਗਿਣਤੀ</translation> @@ -455,6 +459,7 @@ <translation id="5507300744274596613">ਪੱਕਾ ਕਰੋ ਕਿ Chrome OS ਅੱਪ-ਟੂ-ਡੇਟ ਹੈ</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">ਕੰਪੋਨੈਂਟਾਂ ਨੂੰ ਕੈਲੀਬ੍ਰੇਟ ਕਰਨਾ</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">ਮੁੜ-ਸਕੈਨ ਕਰੋ</translation> <translation id="5583640892426849032">ਬੈਕਸਪੇਸ</translation> @@ -708,6 +713,7 @@ <translation id="8206859287963243715">Cellular</translation> <translation id="8208861521865154048">ਫ਼ਾਇਦੇ</translation> <translation id="8217675307824400706">ਕਨੈਕਟ ਹੋਵੋ</translation> +<translation id="8221728673725659466">ਕੈਲੀਬਰੇਸ਼ਨ ਮੁਕੰਮਲ ਹੋਈ</translation> <translation id="8226628635270268143">ਆਪਣੀਆਂ ਮਨਪਸੰਦ ਫ਼ੋਟੋਆਂ ਅਤੇ ਐਲਬਮਾਂ ਚੁਣੋ</translation> <translation id="8230672074305416752">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਨੈੱਟਵਰਕ ਗੇਟਵੇ ਨੂੰ ਪਿੰਗ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ</translation> <translation id="8246209727385807362">ਅਗਿਆਤ ਕੈਰੀਅਰ</translation> @@ -719,6 +725,7 @@ <translation id="8297006494302853456">ਕਮਜ਼ੋਰ</translation> <translation id="8302368968391049045">HTTPS ਫ਼ਾਇਰਵਾਲ</translation> <translation id="8318753676953949627">ਕੋਈ ਚਿੱਤਰ ਨਹੀਂ</translation> +<translation id="8327249300223641918">ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ, ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸ ਨੂੰ (ਆਧਾਰ ਅਤੇ ਲਿਡ) ਪੱਧਰੀ ਸਤ੍ਹਾ 'ਤੇ ਰੱਖੋ।</translation> <translation id="8336739000755212683">ਡੀਵਾਈਸ ਦੇ ਖਾਤੇ ਦਾ ਚਿੱਤਰ ਬਦਲੋ</translation> <translation id="8347227221149377169">ਪ੍ਰਿੰਟ ਜੌਬਾਂ</translation> <translation id="8352772353338965963">ਬਹੁ-ਗਿਣਤੀ ਸਾਈਨ-ਇਨ ਲਈ ਇੱਕ ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ। ਸਾਰੇ ਸਾਈਨ-ਇਨ ਕੀਤੇ ਖਾਤਿਆਂ ਤੱਕ ਬਿਨਾਂ ਕਿਸੇ ਪਾਸਵਰਡ ਦੇ ਪਹੁੰਚਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇਸਲਈ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਸਿਰਫ਼ ਭਰੋਸੇਯੋਗ ਖਾਤਿਆਂ ਨਾਲ ਵਰਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ।</translation> @@ -733,6 +740,7 @@ <translation id="844521431886043384">DNS ਦਾ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ</translation> <translation id="8456761643544401578">ਸਵੈਚਲਿਤ ਗੂੜ੍ਹਾ ਮੋਡ</translation> <translation id="8461329675984532579">ਹੋਮ ਪ੍ਰਦਾਨਕ ਨਾਮ</translation> +<translation id="8467104829907989997">ਕੰਪੋਨੈਂਟਾਂ ਨੂੰ ਕੈਲੀਬ੍ਰੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation> <translation id="8475690821716466388">ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਕਮਜ਼ੋਰ ਪ੍ਰੋਟੋਕੋਲ WEP PSK ਨਾਲ ਸੁਰੱਖਿਅਤ ਹੈ</translation> <translation id="8477551185774834963">DNS ਵਿਲੰਬਤਾ ਇਜਾਜ਼ਤਯੋਗ ਨਿਊਨਤਮ ਸੀਮਾ ਤੋਂ ਥੋੜ੍ਹੀ ਜਿਹੀ ਉੱਤੇ ਹੈ</translation> <translation id="8483248364096924578">IP ਪਤਾ</translation> @@ -792,6 +800,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{ਸਕੈਨ ਕਰੋ}=1{{NUMBER_OF_PAGES} ਪੰਨਾ ਸਕੈਨ ਕਰੋ}other{{NUMBER_OF_PAGES} ਪੰਨੇ ਸਕੈਨ ਕਰੋ}}</translation> <translation id="8997710128084572139">ਡੀਵਾਈਸ ਦੀ ਬੈਟਰੀ ਦਾ ਪੱਧਰ <ph name="BATTERY_PERCENTAGE" />% ਹੈ।</translation> <translation id="9003704114456258138">ਬਾਰੰਬਾਰਤਾ</translation> +<translation id="9025198690966128418">ਨਿੱਜੀ ਡੀਵਾਈਸ ਵਜੋਂ ਵਰਤੋ</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਿੱਚ ਉੱਚ ਵਿਲੰਬਤਾ ਹੈ</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 887e92a..b535574 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Ajustar à área de digitalização</translation> <translation id="1367951781824006909">Escolher um arquivo</translation> +<translation id="1380220803921738821">Estamos encontrando erros. Reinicie ou recupere o firmware usando um pen drive.</translation> <translation id="1387854245479784695">Isso é uma agregação de todos os núcleos</translation> <translation id="1394661041439318933">O estojo tem <ph name="BATTERY_PERCENTAGE" />% de bateria.</translation> <translation id="1397738625398125236">O gateway pode receber um ping</translation> @@ -94,6 +95,7 @@ <translation id="1801418420130173017">Desativar o tema escuro</translation> <translation id="1807246157184219062">Claro</translation> <translation id="1827738518074806965">Galeria de arte</translation> +<translation id="1840835860961531162">Desativar a proteção contra gravação</translation> <translation id="1851218745569890714">Videoconferência</translation> <translation id="1852934301711881861">Instalar o ChromeOS Flex</translation> <translation id="1856388568474281774">Seta para baixo</translation> @@ -185,6 +187,7 @@ <translation id="2789486458103222910">Ok</translation> <translation id="2805756323405976993">Apps</translation> <translation id="28232023175184696">Não é possível se conectar à Internet. Clique para tentar novamente.</translation> +<translation id="2827359915699915567">Digite esse URL manualmente para receber o código RSU</translation> <translation id="2859243502336719778">Atualização crítica</translation> <translation id="2860473693272905224">Coloque outra página no scanner</translation> <translation id="2872961005593481000">Desligar</translation> @@ -223,6 +226,7 @@ <translation id="3291996639387199448">Direção da chave</translation> <translation id="3310640316857623290">Latência do DNS significativamente acima do limite permitido</translation> <translation id="3328783797891415197">Teste em execução</translation> +<translation id="3333527094307156612">Use este código QR para receber o código de desbloqueio de oito caracteres. Você também pode digitar manualmente <ph name="LINK_BEGIN" />este URL<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Não sei</translation> <translation id="3340011300870565703">O fone direito tem <ph name="BATTERY_PERCENTAGE" />% de bateria.</translation> <translation id="3368922792935385530">Conectado</translation> @@ -256,6 +260,7 @@ <translation id="3606583719724308068">Alta latência em sites HTTPS</translation> <translation id="3621202678540785336">Entrada</translation> <translation id="3632579075709132555">Alternar Tela de privacidade</translation> +<translation id="3643810137582748570">Pular calibragem</translation> <translation id="3678765385266369662">Selecione como você quer desativar a proteção contra gravação</translation> <translation id="3689839747745352263">Teste de <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Carregando...</translation> @@ -279,6 +284,7 @@ <translation id="3941014780699102620">Falha na resolução do host</translation> <translation id="3942420633017001071">Diagnóstico</translation> <translation id="3954678691475912818">O tipo do dispositivo é desconhecido.</translation> +<translation id="3958703339436883942">Preparando para a reinicialização…</translation> <translation id="3966286471246132217">Para resultados mais precisos, feche todos os apps até que o teste seja concluído.</translation> <translation id="3967822245660637423">Download concluído</translation> <translation id="3969602104473960991">Senha do ChromeOS atualizada</translation> @@ -405,6 +411,7 @@ <translation id="5049856988445523908">Chip bloqueado (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Nome do grupo</translation> <translation id="5051044138948155788">Essa é a única página. Se você removê-la, a tela inicial de digitalização será aberta.</translation> +<translation id="506768878203270635">Digite os 8 caracteres</translation> <translation id="5088172560898466307">Nome do host do servidor</translation> <translation id="5089810972385038852">Estado</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -428,6 +435,7 @@ <translation id="5275828089655680674">Repetir rotinas</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versão <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Desative a proteção contra gravação para continuar para a próxima tela. Acesse a página de suporte do fabricante do dispositivo para ver as instruções.</translation> <translation id="5300814202279832142">Mover janela para o espaço de trabalho</translation> <translation id="5304899856529773394">EvDO</translation> <translation id="5308380583665731573">Conectar</translation> @@ -465,6 +473,7 @@ <translation id="5620281292257375798">Somente uso interno</translation> <translation id="5649768706273821470">Ouvir</translation> <translation id="5655283760733841251">Aumentar o brilho do teclado</translation> +<translation id="5661196929408385351">Fazer Powerwash e desligar</translation> <translation id="5669267381087807207">Ativando</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Família</translation> @@ -476,10 +485,12 @@ <translation id="576835345334454681">Aumentar o brilho da tela</translation> <translation id="57838592816432529">Desativar som</translation> <translation id="5784136236926853061">A latência do HTTP está alta</translation> +<translation id="578753362485952307">Se você está, reformulando uma placa-mãe para usar em outro dispositivo, acesse o <ph name="LINK_BEGIN" />fluxo de reformulação<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Adicionar pessoa</translation> <translation id="583281660410589416">Desconhecido</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Código do provedor doméstico</translation> +<translation id="5856532218727053281">O sistema será reiniciado depois de verificar o status da proteção contra gravação</translation> <translation id="5859603669299126575">Álbum da galeria de arte</translation> <translation id="5860033963881614850">Desativado</translation> <translation id="5860491529813859533">Ativar</translation> @@ -531,6 +542,7 @@ <translation id="6278428485366576908">Tema</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Ativar o tema escuro</translation> +<translation id="6295178529664209245">Continuar reparo?</translation> <translation id="6302401976930124515">O teste de <ph name="TEST_NAME" /> foi cancelado</translation> <translation id="6319207335391420837">Atualizar firmware no dispositivo <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Ativar o protetor de tela</translation> @@ -566,6 +578,7 @@ <translation id="6575134580692778371">Não configurado</translation> <translation id="6579509898032828423">Usar esta foto</translation> <translation id="6596816719288285829">Endereço IP</translation> +<translation id="6611280807952151149">Sair do reparo do <ph name="DEVICE_TYPE" /></translation> <translation id="6618744767048954150">Em execução</translation> <translation id="6620487321149975369">Os trabalhos de impressão aparecerão no histórico, a menos que sejam removidos manualmente</translation> <translation id="6643016212128521049">Limpar</translation> @@ -578,6 +591,7 @@ <translation id="6723839937902243910">Energia</translation> <translation id="6723847290197874913">Luz de fundo do teclado</translation> <translation id="672609503628871915">Veja o que há de novo</translation> +<translation id="6746847322826305075">Você pode continuar o reparo ou fazer o Powerwash (redefinição para a configuração original) no dispositivo para recuperar a placa-mãe.</translation> <translation id="6747215703636344499">Parado (saída cheia)</translation> <translation id="6749473226660745022">Fotos</translation> <translation id="6753452347192452143">Este dispositivo é um computador.</translation> @@ -625,6 +639,7 @@ <translation id="7216409898977639127">Operadora de celular</translation> <translation id="7271040990581020067">O scanner está em uso. Tente novamente mais tarde.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Selecione um ou mais componentes e tente de novo ou ignore a calibragem</translation> <translation id="7281657306185710294">Sinta a brisa</translation> <translation id="7287310195820267359">Coleções de plano de fundo</translation> <translation id="7297226631177386107">O firewall impediu a conexão a sites HTTPS</translation> @@ -655,11 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">Tela touchscreen USB</translation> <translation id="7595982850646262331">Tempo restante: <ph name="TIME_VALUE" /></translation> +<translation id="760845693386726841">Esse componente não foi detectado.</translation> <translation id="7620771111601174153">Saiba mais na Central de Ajuda</translation> <translation id="7626501172915339021">Usar o desbloqueio por servidor RMA (RSU)</translation> <translation id="763165478673169849">Horário da última redefinição</translation> <translation id="7648838807254605802">Latência de HTTPS alta</translation> <translation id="7656388927906093505">Este dispositivo é um mouse.</translation> +<translation id="7657530360897961171">Erro de reparo no <ph name="DEVICE_TYPE" /></translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7665800271478495366">Mudar o avatar</translation> <translation id="7690294790491645610">Confirmar nova senha</translation> @@ -701,6 +718,7 @@ <translation id="8083281199617904460">Este processo de reparo precisa ser feito por um técnico treinado. Só comece depois de substituir os componentes com problemas.</translation> <translation id="808894953321890993">Alterar senha</translation> <translation id="8104083085214006426">Você está usando uma rede aberta e não segura</translation> +<translation id="8109786307828817014">Continuar com as calibragens que falharam?</translation> <translation id="811820734797650957">(Android) O gateway pode receber um ping</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8132480444149501833">Solicitar contadores de tráfego</translation> @@ -723,6 +741,7 @@ <translation id="8302368968391049045">Firewall HTTPS</translation> <translation id="8318753676953949627">Sem imagens</translation> <translation id="8327249300223641918">Antes de prosseguir, coloque todo o dispositivo (base e tampa) em uma superfície plana.</translation> +<translation id="8330949592403310082">Selecione quais componentes foram substituídos</translation> <translation id="8336739000755212683">Alterar imagem da conta do dispositivo</translation> <translation id="8347227221149377169">Trabalhos de impressão</translation> <translation id="8352772353338965963">Adicione uma conta de login múltiplo. Todas as contas conectadas podem ser acessadas sem uma senha; portanto esse recurso só deve ser usado com contas confiáveis.</translation> @@ -746,6 +765,7 @@ <translation id="8503813439785031346">Nome de usuário</translation> <translation id="8503836310948963452">Só mais alguns minutos…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Os componentes podem não funcionar corretamente sem calibragem</translation> <translation id="8575298406870537639">Pode ser necessário ativar esta opção para se conectar à rede da sua operadora. Entre em contato com a operadora para mais informações.</translation> <translation id="8576249514688522074">Não inicializado</translation> <translation id="8620617069779373398">Status do roaming</translation> @@ -800,6 +820,7 @@ <translation id="9025198690966128418">Usar como dispositivo pessoal</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">A resolução de DNS tem alta latência</translation> +<translation id="9063121522582193837">Não foi possível calibrar alguns componentes</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Usar este vídeo</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index cef1b8965..b3d3ee0 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Seguinte</translation> <translation id="1204296502688602597">Latência de DNS</translation> <translation id="123124571410524056">Portal suspeito</translation> +<translation id="1236400083787698183">Antes de reiniciar, faça um Powerwash ao seu dispositivo. Se o seu dispositivo tiver tampa, aguarde pela conclusão do Powerwash antes de a fechar. A conclusão do Powerwash poderá demorar até um minuto.</translation> <translation id="1238612778414822719">Latência de HTTPS</translation> +<translation id="1240699967155581440">Powerwash (reposição de fábrica) necessário</translation> <translation id="1264116747675686718">A atualizar a versão do SO</translation> <translation id="1264369926465113395">Veja a nova revista digital do Chromebook para criadores</translation> <translation id="1270369111467284986">Portal cativo suspeito</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />Componentes não qualificados<ph name="LINK_END" /> detetados. Se optar por confirmar que estes foram instalados, faça-o agora.</translation> <translation id="2363636958541445404">Ative a funcionalidade para selecionar opções de proteção de ecrã</translation> <translation id="2364498172489649528">Aprovado</translation> +<translation id="236594517359128026">Antes de continuar, coloque o portátil numa superfície plana</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Enviar relatório de feedback</translation> <translation id="2407209115954268704">Estado de bloqueio do SIM</translation> @@ -158,6 +161,7 @@ <translation id="2446553403094072641">Precisão da vírgula flutuante</translation> <translation id="2448312741937722512">Tipo</translation> <translation id="2461822463642141190">Atual</translation> +<translation id="2480034874476596812">Desativar manualmente</translation> <translation id="2491955442992294626">As teclas não são testadas quando está a usar outra janela</translation> <translation id="2493126929778606526">As suas melhores fotos selecionadas automaticamente.</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> @@ -253,6 +257,7 @@ <translation id="3606583719724308068">Latência elevada para Websites HTTPS</translation> <translation id="3621202678540785336">Entrada</translation> <translation id="3632579075709132555">Botão do ecrã de privacidade</translation> +<translation id="3678765385266369662">Selecione como quer desativar a proteção contra escrita</translation> <translation id="3689839747745352263">Teste <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">A carregar...</translation> <translation id="3708186454126126312">Ligados anteriormente</translation> @@ -265,6 +270,7 @@ <translation id="3820172043799983114">PIN inválido.</translation> <translation id="3838338534323494292">Nova palavra-passe</translation> <translation id="385051799172605136">Anterior</translation> +<translation id="385832974417157471">Antes de encerrar, faça um Powerwash ao seu dispositivo. Se o seu dispositivo tiver tampa, aguarde pela conclusão do Powerwash antes de a fechar. A conclusão do Powerwash poderá demorar até um minuto.</translation> <translation id="3858860766373142691">Nome</translation> <translation id="3865414814144988605">Resolução</translation> <translation id="387301095347517405">O número de vezes que a bateria concluiu um ciclo de carregamento completo.</translation> @@ -309,6 +315,7 @@ <translation id="4244962993387259361">Precisa de, pelo menos, 500 MB livres para executar um teste de memória. Para libertar espaço, aceda a Definições > Gestão de armazenamento.</translation> <translation id="4250229828105606438">Captura de ecrã</translation> <translation id="4258281355379922695">Latência de HTTP</translation> +<translation id="4258561075226177474">O dispositivo vai para o mesmo utilizador. Apagar os dados do utilizador?</translation> <translation id="4271957103967917607">Ver ecrã inteiro</translation> <translation id="4275799948641988986">Após a reparação, quem irá utilizar o dispositivo?</translation> <translation id="4289540628985791613">Vista geral</translation> @@ -357,6 +364,7 @@ <translation id="473775607612524610">Atualizar</translation> <translation id="4744944742468440486">Informações relacionadas com a sua seleção</translation> <translation id="4773299976671772492">Parado</translation> +<translation id="4774530504324923332">Vai precisar de uma chave de segurança com RSU (Desbloqueio por servidor RMA) ativado, um Leitor de códigos QR e um segundo dispositivo com ligação à Internet</translation> <translation id="4782311465517282004">Obtenha definições, traduções ou conversões de unidades quando clicar com o botão direito do rato ou tocar sem soltar no texto</translation> <translation id="4791000909649665275"><ph name="NUMBER" /> foto</translation> <translation id="4793710386569335688">Para mais ajuda, aceda ao <ph name="BEGIN_LINK" />Centro de Ajuda<ph name="END_LINK" />.</translation> @@ -437,6 +445,7 @@ <translation id="5372659122375744710">A rede Wi-Fi não é segura.</translation> <translation id="5376354385557966694">Modo claro automático</translation> <translation id="537872351913703572">O dispositivo vai para um utilizador ou uma organização diferente</translation> +<translation id="5395600419410242651">Apagar todos os dados</translation> <translation id="5400907029458559844">O dispositivo está a ligar.</translation> <translation id="5401938042319910061">Executar todas as rotinas</translation> <translation id="5423849171846380976">Activado</translation> @@ -451,6 +460,7 @@ <translation id="5507300744274596613">Certifique-se de que o Chrome OS está atualizado</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Calibre os componentes</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Ler novamente</translation> <translation id="5583640892426849032">Retrocesso</translation> @@ -650,6 +660,7 @@ <translation id="7570674786725311828">Ecrã tátil USB</translation> <translation id="7595982850646262331">Falta(m) <ph name="TIME_VALUE" /></translation> <translation id="7620771111601174153">Saber mais no Centro de Ajuda</translation> +<translation id="7626501172915339021">Executar Desbloqueio por servidor RMA (RSU)</translation> <translation id="763165478673169849">Hora da última reposição</translation> <translation id="7648838807254605802">Latência elevada de HTTPS</translation> <translation id="7656388927906093505">O dispositivo é um rato.</translation> @@ -703,6 +714,7 @@ <translation id="8206859287963243715">Telemóvel</translation> <translation id="8208861521865154048">Benefícios</translation> <translation id="8217675307824400706">Estabeleça ligação</translation> +<translation id="8221728673725659466">Calibração concluída</translation> <translation id="8226628635270268143">Escolha os seus álbuns ou fotos favoritos.</translation> <translation id="8230672074305416752">Falha ao enviar ping ao gateway da rede predefinida.</translation> <translation id="8246209727385807362">Operador desconhecido</translation> @@ -714,6 +726,7 @@ <translation id="8297006494302853456">Fraca</translation> <translation id="8302368968391049045">Firewall HTTPS</translation> <translation id="8318753676953949627">Não existem imagens</translation> +<translation id="8327249300223641918">Antes de continuar, coloque o seu dispositivo inteiro (base e tampa) numa superfície plana.</translation> <translation id="8336739000755212683">Alterar imagem da conta do dispositivo</translation> <translation id="8347227221149377169">Tarefas de impressão</translation> <translation id="8352772353338965963">Adicione uma conta para início de sessão integrado. É possível aceder a todas as contas com a sessão iniciada sem uma palavra-passe, por isso, só deve usar esta funcionalidade com contas fidedignas.</translation> @@ -728,6 +741,7 @@ <translation id="844521431886043384">O DNS não está configurado</translation> <translation id="8456761643544401578">Modo escuro automático</translation> <translation id="8461329675984532579">Nome do fornecedor base</translation> +<translation id="8467104829907989997">A calibrar os componentes…</translation> <translation id="8475690821716466388">A rede Wi-Fi está protegida com um protocolo pouco seguro WEP PSK.</translation> <translation id="8477551185774834963">Latência de DNS ligeiramente acima do limite permitido.</translation> <translation id="8483248364096924578">Endereço IP</translation> @@ -787,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Analisar}=1{Analisar página {NUMBER_OF_PAGES}}other{Analisar página {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">O dispositivo tem <ph name="BATTERY_PERCENTAGE" />% de bateria.</translation> <translation id="9003704114456258138">Frequência</translation> +<translation id="9025198690966128418">Usar como dispositivo pessoal</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">A resolução de DNS tem uma latência elevada</translation> <translation id="9073281213608662541">PAP</translation> @@ -795,6 +810,8 @@ <translation id="9087578468327036362">Denunciar esta consulta</translation> <translation id="9088306295921699330">Utilização atual</translation> <translation id="9095775724867566971">Pluginvm</translation> +<translation id="90977145661420967">Vai ter de desmontar o dispositivo</translation> +<translation id="9098156406873149060">Manter dados do utilizador</translation> <translation id="910415269708673980">Atualize a permissão para <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">A digitalizar a página <ph name="PAGE_NUMBER" />…</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index bae065a5..285c5ed0 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -161,6 +161,7 @@ <translation id="2446553403094072641">Precizia virgulei mobile</translation> <translation id="2448312741937722512">Tipul</translation> <translation id="2461822463642141190">Actual</translation> +<translation id="2480034874476596812">Dezactivează manual</translation> <translation id="2491955442992294626">Tastele nu sunt testate când folosești altă fereastră</translation> <translation id="2493126929778606526">Cele mai bune fotografii, selectate automat</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> @@ -256,6 +257,7 @@ <translation id="3606583719724308068">Latență mare pe site-urile HTTPS</translation> <translation id="3621202678540785336">Intrări</translation> <translation id="3632579075709132555">Activarea / dezactivarea ecranului de confidențialitate</translation> +<translation id="3678765385266369662">Selectează cum dorești să dezactivezi protecția la scriere</translation> <translation id="3689839747745352263">Testul <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Se încarcă…</translation> <translation id="3708186454126126312">Conectat anterior</translation> @@ -313,6 +315,7 @@ <translation id="4244962993387259361">Ai nevoie de minimum 500 MB de spațiu disponibil pentru a rula un test de memorie. Pentru a elibera spațiu, accesează Setări > Gestionarea stocării.</translation> <translation id="4250229828105606438">Captură de ecran</translation> <translation id="4258281355379922695">Latența solicitărilor HTTP</translation> +<translation id="4258561075226177474">Dispozitivul va avea același utilizator. Ștergi datele utilizatorului?</translation> <translation id="4271957103967917607">Afișează pe tot ecranul</translation> <translation id="4275799948641988986">Cine va folosi dispozitivul după reparare?</translation> <translation id="4289540628985791613">Prezentare generală</translation> @@ -361,6 +364,7 @@ <translation id="473775607612524610">Actualizează</translation> <translation id="4744944742468440486">Informații legate de selecția ta</translation> <translation id="4773299976671772492">Oprit</translation> +<translation id="4774530504324923332">Vei avea nevoie de o cheie de securitate activată pentru RSU, un scanner de coduri QR și un al doilea dispozitiv cu conexiune la internet</translation> <translation id="4782311465517282004">Obții definiții, traduceri sau conversii ale unităților când dai clic dreapta sau apeși lung pe text</translation> <translation id="4791000909649665275"><ph name="NUMBER" /> fotografie</translation> <translation id="4793710386569335688">Pentru mai mult ajutor, accesează <ph name="BEGIN_LINK" />Centrul de ajutor<ph name="END_LINK" /></translation> @@ -441,6 +445,7 @@ <translation id="5372659122375744710">Rețeaua Wi-Fi nu este sigură</translation> <translation id="5376354385557966694">Modul luminos automat</translation> <translation id="537872351913703572">Dispozitivul va avea alt utilizator sau altă organizație</translation> +<translation id="5395600419410242651">Șterge toate datele</translation> <translation id="5400907029458559844">Dispozitivul se conectează.</translation> <translation id="5401938042319910061">Rulează toate rutinele</translation> <translation id="5423849171846380976">Activat</translation> @@ -655,6 +660,7 @@ <translation id="7570674786725311828">Ecran tactil USB</translation> <translation id="7595982850646262331">Timp rămas: <ph name="TIME_VALUE" /></translation> <translation id="7620771111601174153">Află mai multe din Centrul de ajutor</translation> +<translation id="7626501172915339021">Deblochează serverul RMA (RSU)</translation> <translation id="763165478673169849">Data ultimei resetări</translation> <translation id="7648838807254605802">Latență mare a solicitărilor HTTPS</translation> <translation id="7656388927906093505">Dispozitivul este un mouse.</translation> @@ -804,6 +810,8 @@ <translation id="9087578468327036362">Raportează interogarea</translation> <translation id="9088306295921699330">Folosire actuală</translation> <translation id="9095775724867566971">Pluginvm</translation> +<translation id="90977145661420967">Va trebui să dezasamblezi dispozitivul</translation> +<translation id="9098156406873149060">Păstrează datele utilizatorului</translation> <translation id="910415269708673980">Actualizează tichetul pentru <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Se scanează pagina <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Deblochează</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index 1791613..5df0526 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Отключить тёмную тему</translation> <translation id="1807246157184219062">Светлая</translation> <translation id="1827738518074806965">Галерея</translation> +<translation id="1840835860961531162">Отключите защиту от записи</translation> <translation id="1851218745569890714">Видеоконференции</translation> <translation id="1852934301711881861">Установить Chrome OS Flex</translation> <translation id="1856388568474281774">Стрелка вниз</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Не удалось преобразовать имя хоста.</translation> <translation id="3942420633017001071">Диагностика</translation> <translation id="3954678691475912818">Это неизвестное устройство.</translation> +<translation id="3958703339436883942">Подготовка к перезагрузке…</translation> <translation id="3966286471246132217">Чтобы получить более точные результаты, закройте все приложения и не запускайте их до завершения проверки.</translation> <translation id="3967822245660637423">Скачивание завершено.</translation> <translation id="3969602104473960991">Пароль Chrome OS изменен</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Запустить заново</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">версия <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Чтобы продолжить, отключите защиту от записи. Подробную инструкцию ищите на сайте службы поддержки производителя.</translation> <translation id="5300814202279832142">Переместить окно на рабочий стол</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Подключение</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Неизвестно</translation> <translation id="5843706793424741864">По шкале Фаренгейта</translation> <translation id="5849570051105887917">Код провайдера</translation> +<translation id="5856532218727053281">Система перезагрузится после проверки статуса защиты от записи.</translation> <translation id="5859603669299126575">Художественная галерея</translation> <translation id="5860033963881614850">ВЫКЛ</translation> <translation id="5860491529813859533">Включить</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index 710a0b19..a268827 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Prispôsobiť naskenovanej ploche</translation> <translation id="1367951781824006909">Vybrať súbor</translation> +<translation id="1380220803921738821">Vyskytujú sa chyby. Skúste reštartovať alebo obnovte firmvér pomocou jednotky USB flash.</translation> <translation id="1387854245479784695">Toto je agregácia všetkých jadier</translation> <translation id="1394661041439318933">Úroveň batérie puzdra zariadenia je <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="1397738625398125236">Je možné testovať dostupnosť (ping) brány</translation> @@ -186,6 +187,7 @@ <translation id="2789486458103222910">OK</translation> <translation id="2805756323405976993">Aplikácie</translation> <translation id="28232023175184696">Nedá sa pripojiť k internetu. Kliknutím to skúste znova.</translation> +<translation id="2827359915699915567">Manuálne zadajte túto webovú adresu, aby ste dostali kód RSU</translation> <translation id="2859243502336719778">Kľúčová aktualizácia</translation> <translation id="2860473693272905224">Položte na skener ďalšiu stranu</translation> <translation id="2872961005593481000">Vypnúť</translation> @@ -224,6 +226,7 @@ <translation id="3291996639387199448">Smer kľúča</translation> <translation id="3310640316857623290">Latencia servera DNS výrazne prekračuje povolenú úroveň</translation> <translation id="3328783797891415197">Test prebieha</translation> +<translation id="3333527094307156612">Získajte osemmiestny odomykací kód pomocou tohto QR kódu. Môžete aj manuálne zadať <ph name="LINK_BEGIN" />túto webovú adresu<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Neviem</translation> <translation id="3340011300870565703">Úroveň batérie pravého slúchadla zariadenia je <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="3368922792935385530">Pripojené</translation> @@ -257,6 +260,7 @@ <translation id="3606583719724308068">Vysoká latencia na weboch HTTPS</translation> <translation id="3621202678540785336">Vstup</translation> <translation id="3632579075709132555">Prepínanie zámky na ochranu súkromia</translation> +<translation id="3643810137582748570">Preskočiť kalibráciu</translation> <translation id="3678765385266369662">Vyberte, ako chcete vypnúť ochranu proti zápisu</translation> <translation id="3689839747745352263">Test <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Načítava sa...</translation> @@ -407,6 +411,7 @@ <translation id="5049856988445523908">SIM karta je uzamknutá (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Názov skupiny</translation> <translation id="5051044138948155788">Toto je jediná strana. Prejdete na úvodnú obrazovku skenovania.</translation> +<translation id="506768878203270635">Zadajte príslušných osem znakov</translation> <translation id="5088172560898466307">Názov hostiteľského servera</translation> <translation id="5089810972385038852">Štát</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -468,6 +473,7 @@ <translation id="5620281292257375798">Iba interné</translation> <translation id="5649768706273821470">Počúvať</translation> <translation id="5655283760733841251">Zvýšenie jasu obrazovky</translation> +<translation id="5661196929408385351">Powerwash a vypnutie</translation> <translation id="5669267381087807207">Aktivuje sa</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Rodina</translation> @@ -479,6 +485,7 @@ <translation id="576835345334454681">Zvýšenie jasu obrazovky</translation> <translation id="57838592816432529">Vypnúť zvuk</translation> <translation id="5784136236926853061">Vysoká latencia protokolu HTTPS</translation> +<translation id="578753362485952307">Ak upravujete hlavný panel na použitie v inom zariadení, prejdite na <ph name="LINK_BEGIN" />tok úprav<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Pridať osobu</translation> <translation id="583281660410589416">Neznáme</translation> <translation id="5843706793424741864">Fahrenheit</translation> @@ -535,6 +542,7 @@ <translation id="6278428485366576908">Motív</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Zapnúť tmavý motív</translation> +<translation id="6295178529664209245">Chcete pokračovať v oprave?</translation> <translation id="6302401976930124515">Test <ph name="TEST_NAME" /> bol zrušený</translation> <translation id="6319207335391420837">Aktualizácia firmvéru zariadenia <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Zapnúť šetrič obrazovky</translation> @@ -570,6 +578,7 @@ <translation id="6575134580692778371">Nenakonfigurované</translation> <translation id="6579509898032828423">Použiť túto fotku</translation> <translation id="6596816719288285829">Adresa IP</translation> +<translation id="6611280807952151149">Ukončiť opravu zariadenia <ph name="DEVICE_TYPE" /></translation> <translation id="6618744767048954150">Beží</translation> <translation id="6620487321149975369">Tlačové úlohy sa budú zobrazovať v histórii, dokým ich neodstránite ručne</translation> <translation id="6643016212128521049">Vymazať</translation> @@ -582,6 +591,7 @@ <translation id="6723839937902243910">Napájanie</translation> <translation id="6723847290197874913">Podsvietenie klávesnice</translation> <translation id="672609503628871915">Zobraziť novinky</translation> +<translation id="6746847322826305075">Môžete pokračovať úplnou opravou alebo obnovením zariadenia prostredníctvom funkcie Powerwash (obnovenie výrobných nastavení) a opätovne tak doplniť položky na hlavnom paneli.</translation> <translation id="6747215703636344499">Zastavené – výstup je plný</translation> <translation id="6749473226660745022">Fotky</translation> <translation id="6753452347192452143">Zariadenie je počítač.</translation> @@ -629,6 +639,7 @@ <translation id="7216409898977639127">Poskytovateľ mobilného pripojenia</translation> <translation id="7271040990581020067">Skener sa momentálne používa. Skúste to neskôr.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Vyberte minimálne jeden komponent a vyskúšajte to znova, prípadne preskočte kalibráciu</translation> <translation id="7281657306185710294">Pocíťte vánok</translation> <translation id="7287310195820267359">Zbierky tapiet</translation> <translation id="7297226631177386107">Prostredníctvom brány firewall sa nedá pripojiť k webom HTTPS</translation> @@ -659,11 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">Dotyková obrazovka USB</translation> <translation id="7595982850646262331">Zostáva <ph name="TIME_VALUE" /></translation> +<translation id="760845693386726841">Tento komponent sa nepodarilo rozpoznať.</translation> <translation id="7620771111601174153">Ďalšie informácie v centre pomoci</translation> <translation id="7626501172915339021">Spustením funkcie odomknutia servera RMA (RSU)</translation> <translation id="763165478673169849">Čas posledného resetovania</translation> <translation id="7648838807254605802">Vysoká latencia protokolu HTTPS</translation> <translation id="7656388927906093505">Zariadenie je myš.</translation> +<translation id="7657530360897961171">Chyba opravy zariadenia <ph name="DEVICE_TYPE" /></translation> <translation id="7658239707568436148">Zrušiť</translation> <translation id="7665800271478495366">Zmeniť avatar</translation> <translation id="7690294790491645610">Potvrďte nové heslo</translation> @@ -705,6 +718,7 @@ <translation id="8083281199617904460">Túto opravu môže vykonať iba školený technik. Začnite iba po výmene chybných komponentov.</translation> <translation id="808894953321890993">Zmeniť heslo</translation> <translation id="8104083085214006426">Používate otvorenú a nezabezpečenú sieť</translation> +<translation id="8109786307828817014">Chcete pokračovať bez týchto kalibrácií?</translation> <translation id="811820734797650957">(Android) Je možné testovať dostupnosť (ping) brány</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8132480444149501833">Požiadať o údaje počítadiel návštevnosti</translation> @@ -727,6 +741,7 @@ <translation id="8302368968391049045">Firewall HTTPS</translation> <translation id="8318753676953949627">Žiadne obrázky</translation> <translation id="8327249300223641918">Než budete pokračovať, položte celé zariadenie (základňu aj kryt) na rovný povrch.</translation> +<translation id="8330949592403310082">Vyberte, ktoré komponenty boli nahradené</translation> <translation id="8336739000755212683">Zmeniť obrázok účtu zariadenia</translation> <translation id="8347227221149377169">Tlačové úlohy</translation> <translation id="8352772353338965963">Pridanie účtu pre viacnásobné prihlásenie. Ku všetkým prihláseným účtom môžete pristupovať bez hesla, takže táto funkcia by mala byť použitá iba s dôveryhodnými účtami.</translation> @@ -750,6 +765,7 @@ <translation id="8503813439785031346">Meno používateľa</translation> <translation id="8503836310948963452">Už iba niekoľko minút…</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Komponenty nemusia bez kalibrácie správne fungovať</translation> <translation id="8575298406870537639">Váš operátor môže túto možnosť vyžadovať na pripojenie k jeho sieti. Podrobnosti vám poskytne operátor.</translation> <translation id="8576249514688522074">Nespustené</translation> <translation id="8620617069779373398">Stav roamingu</translation> @@ -804,6 +820,7 @@ <translation id="9025198690966128418">Používať ako osobné zariadenie</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Preklad DNS má vysokú latenciu</translation> +<translation id="9063121522582193837">Niektoré komponenty sa nepodarilo kalibrovať</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Použiť toto video</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index cff38de..75aff81 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -41,6 +41,7 @@ <translation id="1330426557709298164">JPG</translation> <translation id="1337912285145772892">Ustrezanje velikosti območja za optično branje</translation> <translation id="1367951781824006909">Izberite datoteko</translation> +<translation id="1380220803921738821">Prišlo je do napak. Poskusite znova zagnati ali obnoviti vdelano programsko opremo prek ključka USB.</translation> <translation id="1387854245479784695">To so združeni podatki za vsa jedra</translation> <translation id="1394661041439318933">Raven napolnjenosti baterije škatlice: <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="1397738625398125236">Prehod je mogoče preveriti</translation> @@ -94,6 +95,7 @@ <translation id="1801418420130173017">Onemogočanje temne teme</translation> <translation id="1807246157184219062">Svetlo</translation> <translation id="1827738518074806965">Umetnostna galerija</translation> +<translation id="1840835860961531162">Izklopite zaščito pred pisanjem</translation> <translation id="1851218745569890714">Videokonference</translation> <translation id="1852934301711881861">Namesti ChromeOS Flex</translation> <translation id="1856388568474281774">Puščica dol</translation> @@ -160,6 +162,7 @@ <translation id="2446553403094072641">Natančnost plavajoče točke</translation> <translation id="2448312741937722512">Vrsta</translation> <translation id="2461822463642141190">Trenutno</translation> +<translation id="2480034874476596812">Ročno izklopi</translation> <translation id="2491955442992294626">Tipke se ne preizkušajo, če uporabljate drugo okno.</translation> <translation id="2493126929778606526">Vaše najboljše fotografije, izbrane samodejno</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> @@ -184,6 +187,7 @@ <translation id="2789486458103222910">V redu</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="28232023175184696">Internetne povezave ni mogoče vzpostaviti. Kliknite, da poskusite znova.</translation> +<translation id="2827359915699915567">Če želite pridobiti kodo RSU, ročno vnesite ta URL</translation> <translation id="2859243502336719778">Kritična posodobitev</translation> <translation id="2860473693272905224">Postavite novo stran na optični bralnik.</translation> <translation id="2872961005593481000">Zaustavitev</translation> @@ -222,6 +226,7 @@ <translation id="3291996639387199448">Smer ključa</translation> <translation id="3310640316857623290">Zakasnitev DNS-ja je znatno nad dovoljenim pragom</translation> <translation id="3328783797891415197">Preizkus se izvaja</translation> +<translation id="3333527094307156612">Uporabite to kodo QR, če želite pridobiti 8-mestno kodo za odklepanje. Prav tako lahko ročno vnesete <ph name="LINK_BEGIN" />ta URL<ph name="LINK_END" />.</translation> <translation id="3336855445806447827">Ne vem</translation> <translation id="3340011300870565703">Raven napolnjenosti baterije desne slušalke: <ph name="BATTERY_PERCENTAGE" /> %.</translation> <translation id="3368922792935385530">Povezano</translation> @@ -255,6 +260,8 @@ <translation id="3606583719724308068">Visoka zakasnitev do spletnih mest HTTPS.</translation> <translation id="3621202678540785336">Vhod</translation> <translation id="3632579075709132555">Preklop zaslona za zasebnost</translation> +<translation id="3643810137582748570">Preskoči umerjanje</translation> +<translation id="3678765385266369662">Izberite, kako želite izklopiti zaščito pred pisanjem</translation> <translation id="3689839747745352263">Preizkus <ph name="TEST_NAME" /></translation> <translation id="370665806235115550">Nalaganje ...</translation> <translation id="3708186454126126312">Predhodno povezane naprave</translation> @@ -277,6 +284,7 @@ <translation id="3941014780699102620">Ni bilo mogoče razrešiti gostitelja</translation> <translation id="3942420633017001071">Diagnostika</translation> <translation id="3954678691475912818">Vrsta naprave ni znana.</translation> +<translation id="3958703339436883942">Pripravljanje na vnovični zagon …</translation> <translation id="3966286471246132217">Če želite natančnejše rezultate, zaprite vse aplikacije, dokler se preizkus ne dokonča.</translation> <translation id="3967822245660637423">Prenos končan</translation> <translation id="3969602104473960991">Geslo za Chrome OS je posodobljeno</translation> @@ -311,6 +319,7 @@ <translation id="4244962993387259361">Če želite izvajati preizkus pomnilnika, potrebujete najmanj 500 MB prostora. Če želite sprostiti prostor, odprite »Nastavitve > Upravljanje shrambe«.</translation> <translation id="4250229828105606438">Posnetek zaslona</translation> <translation id="4258281355379922695">Zakasnitev HTTP</translation> +<translation id="4258561075226177474">Naprava se bo prenesla k istemu uporabniku. Želite izbrisati podatke uporabnika?</translation> <translation id="4271957103967917607">Ogled v celozaslonskem načinu</translation> <translation id="4275799948641988986">Kdo bo po popravilu uporabljal napravo?</translation> <translation id="4289540628985791613">Pregled</translation> @@ -359,6 +368,7 @@ <translation id="473775607612524610">Posodobi</translation> <translation id="4744944742468440486">Podatki, povezani z vašim izborom</translation> <translation id="4773299976671772492">Ustavljeno</translation> +<translation id="4774530504324923332">Potrebovali boste varnostni ključ, ki podpira RSU, optični bralnik kod QR in drugo napravo z internetno povezavo</translation> <translation id="4782311465517282004">Zagotovite si definicije, prevode ali pretvorbe enot, ko besedilo kliknete z desnim gumbom ali se ga dotaknete in pridržite.</translation> <translation id="4791000909649665275">Fotografije (<ph name="NUMBER" />)</translation> <translation id="4793710386569335688">Več pomoči je na voljo v <ph name="BEGIN_LINK" />centru za pomoč<ph name="END_LINK" />.</translation> @@ -401,6 +411,7 @@ <translation id="5049856988445523908">Kartica SIM je zaklenjena (<ph name="LOCK_TYPE" />)</translation> <translation id="5050042263972837708">Ime skupine</translation> <translation id="5051044138948155788">To je edina stran. S tem se bo odprla stran za začetek optičnega branja.</translation> +<translation id="506768878203270635">Vnesite 8 znakov</translation> <translation id="5088172560898466307">Gostiteljsko Ime strežnika</translation> <translation id="5089810972385038852">Država:</translation> <translation id="5090362543162270857">IPsec (IKEv2)</translation> @@ -424,6 +435,7 @@ <translation id="5275828089655680674">Znova zaženi rutine</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">različica <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Onemogočite zaščito pred pisanjem, če želite nadaljevati na naslednji zaslon. Poiščite navodila na strani za podporo proizvajalca naprave.</translation> <translation id="5300814202279832142">Premik okna na namizje</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Povezovanje</translation> @@ -438,6 +450,7 @@ <translation id="5372659122375744710">Omrežje Wi-Fi ni varno</translation> <translation id="5376354385557966694">Samodejni svetli način</translation> <translation id="537872351913703572">Naprava se prenaša k drugemu uporabniku ali organizaciji.</translation> +<translation id="5395600419410242651">Izbriši vse podatke</translation> <translation id="5400907029458559844">Naprava se povezuje.</translation> <translation id="5401938042319910061">Izvedi vse rutine</translation> <translation id="5423849171846380976">Aktivirano</translation> @@ -460,6 +473,7 @@ <translation id="5620281292257375798">Samo za interno rabo</translation> <translation id="5649768706273821470">Poslušajte</translation> <translation id="5655283760733841251">Povečanje svetlosti osvetlitve tipkovnice</translation> +<translation id="5661196929408385351">Powerwash in zaustavitev</translation> <translation id="5669267381087807207">Aktiviranje</translation> <translation id="5670702108860320605">BSSID</translation> <translation id="5691511426247308406">Družina</translation> @@ -471,10 +485,12 @@ <translation id="576835345334454681">Povečanje svetlosti zaslona</translation> <translation id="57838592816432529">Izklopi zvok</translation> <translation id="5784136236926853061">Velika zakasnitev HTTP</translation> +<translation id="578753362485952307">Če želite predelati matično ploščo za uporabo v drugi napravi, si oglejte <ph name="LINK_BEGIN" />potek predelave<ph name="LINK_END" />.</translation> <translation id="5832805196449965646">Dodaj osebo</translation> <translation id="583281660410589416">Neznano</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Koda domačega ponudnika</translation> +<translation id="5856532218727053281">Sistem se bo znova zagnal po preverjanju stanja zaščite pred pisanjem.</translation> <translation id="5859603669299126575">Album umetnostne galerije</translation> <translation id="5860033963881614850">Izklopljeno</translation> <translation id="5860491529813859533">Vklopi</translation> @@ -526,6 +542,7 @@ <translation id="6278428485366576908">Tema</translation> <translation id="6280912520669706465">ARC</translation> <translation id="6284632978374966585">Vklop temne teme</translation> +<translation id="6295178529664209245">Želite nadaljevati s popravilom?</translation> <translation id="6302401976930124515">Preizkus <ph name="TEST_NAME" /> je preklican.</translation> <translation id="6319207335391420837">Posodobitev vdelane programske opreme v napravi <ph name="DEVICE_NAME" /></translation> <translation id="6321407676395378991">Vklop ohranjevalnika zaslona</translation> @@ -561,6 +578,7 @@ <translation id="6575134580692778371">Naprava ni konfigurirana</translation> <translation id="6579509898032828423">Uporabi to fotografijo</translation> <translation id="6596816719288285829">Naslov IP</translation> +<translation id="6611280807952151149">Zapri popravilo naprave <ph name="DEVICE_TYPE" /></translation> <translation id="6618744767048954150">Preverjanje poteka</translation> <translation id="6620487321149975369">Tiskalna opravila bodo prikazana v zgodovini, razen če jih ročno odstranite</translation> <translation id="6643016212128521049">Izbriši</translation> @@ -573,6 +591,7 @@ <translation id="6723839937902243910">Napajanje</translation> <translation id="6723847290197874913">Osvetlitev tipkovnice</translation> <translation id="672609503628871915">Oglejte si novosti</translation> +<translation id="6746847322826305075">Če želite obnoviti matično ploščo, lahko nadaljujete s celotnim popravilom ali funkcijo Powerwash (ponastavitev na tovarniške nastavitve) za napravo.</translation> <translation id="6747215703636344499">Ustavljeno – izhodni pladenj je poln</translation> <translation id="6749473226660745022">Fotografije</translation> <translation id="6753452347192452143">Naprava je računalnik.</translation> @@ -620,6 +639,7 @@ <translation id="7216409898977639127">Ponudnik mobilnih storitev</translation> <translation id="7271040990581020067">Optični bralnik je trenutno v uporabi. Poskusite pozneje.</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7281209642468917121">Izberite eno ali več komponent in poskusite znova ali preskočite umerjanje.</translation> <translation id="7281657306185710294">Začutite vetrič</translation> <translation id="7287310195820267359">Zbirke zaslonskih ozadij</translation> <translation id="7297226631177386107">Ni mogoče vzpostaviti povezave s spletnimi mesti HTTPS prek požarnega zidu.</translation> @@ -650,10 +670,13 @@ <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation> <translation id="7570674786725311828">Zaslon na dotik USB</translation> <translation id="7595982850646262331">Še <ph name="TIME_VALUE" /></translation> +<translation id="760845693386726841">Te komponente ni bilo mogoče zaznati.</translation> <translation id="7620771111601174153">Preberite več v centru za pomoč</translation> +<translation id="7626501172915339021">Odklepanje strežnika RMA (RSU)</translation> <translation id="763165478673169849">Čas zadnje ponastavitve</translation> <translation id="7648838807254605802">Velika zakasnitev HTTPS</translation> <translation id="7656388927906093505">Naprava je miška.</translation> +<translation id="7657530360897961171">Napaka pri popravilu naprave <ph name="DEVICE_TYPE" /></translation> <translation id="7658239707568436148">Prekliči</translation> <translation id="7665800271478495366">Spremeni avatar</translation> <translation id="7690294790491645610">Potrdite novo geslo</translation> @@ -695,6 +718,7 @@ <translation id="8083281199617904460">Ta postopek popravila je namenjen za usposobljenega serviserja. Začnite šele po zamenjavi okvarjenih komponent.</translation> <translation id="808894953321890993">Sprememba gesla</translation> <translation id="8104083085214006426">Uporabljate odprto omrežje, ki ni varno.</translation> +<translation id="8109786307828817014">Želite nadaljevati z neuspešnimi umerjanji?</translation> <translation id="811820734797650957">Prehod je mogoče preveriti (Android)</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" /> °C</translation> <translation id="8132480444149501833">Zahtevaj števce prometa</translation> @@ -717,6 +741,7 @@ <translation id="8302368968391049045">Požarni zid HTTPS</translation> <translation id="8318753676953949627">Ni slik</translation> <translation id="8327249300223641918">Pred nadaljevanjem položite celotno napravo (podstavek in pokrov) na ravno površino.</translation> +<translation id="8330949592403310082">Izberite, katere komponente so bile zamenjane</translation> <translation id="8336739000755212683">Spremeni sliko računa v napravi</translation> <translation id="8347227221149377169">Tiskalna opravila</translation> <translation id="8352772353338965963">Dodajte račun za prijavo z več računi. Do vseh prijavljenih računov je mogoče dostopati brez gesla, zato to funkcijo uporabljajte samo z zaupanja vrednimi računi.</translation> @@ -740,6 +765,7 @@ <translation id="8503813439785031346">Uporabniško ime</translation> <translation id="8503836310948963452">Samo še nekaj minut …</translation> <translation id="8528615187455571738">Crosvm</translation> +<translation id="8529392826145705615">Komponente morda ne bodo delovale pravilno, če niso umerjene.</translation> <translation id="8575298406870537639">Operater lahko zahteva to možnost za povezovanje z njegovim omrežjem. Za podrobnejše informacije se obrnite na operaterja.</translation> <translation id="8576249514688522074">Neinicializirano</translation> <translation id="8620617069779373398">Stanje gostovanja</translation> @@ -794,12 +820,15 @@ <translation id="9025198690966128418">Uporabi kot osebno napravo</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Razreševanje DNS ima veliko zakasnitev.</translation> +<translation id="9063121522582193837">Nekaterih komponent ni bilo mogoče umeriti</translation> <translation id="9073281213608662541">PAP</translation> <translation id="9074739597929991885">Bluetooth</translation> <translation id="9082718469794970195">Uporabi ta videoposnetek</translation> <translation id="9087578468327036362">Prijavite to poizvedbo</translation> <translation id="9088306295921699330">Trenutna poraba</translation> <translation id="9095775724867566971">Pluginvm</translation> +<translation id="90977145661420967">Napravo boste morali razstaviti</translation> +<translation id="9098156406873149060">Ohrani podatke uporabnika</translation> <translation id="910415269708673980">Osvežite kartonček za <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Optično branje <ph name="PAGE_NUMBER" />. strani</translation> <translation id="9111102763498581341">Odkleni</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index 4104d45..a0beeb1 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Para</translation> <translation id="1204296502688602597">Vonesa e DNS-së</translation> <translation id="123124571410524056">Dyshohet për portal</translation> +<translation id="1236400083787698183">Para rinisjes, rivendose pajisjen te cilësimet e fabrikës. Nëse pajisja jote ka një kapak, prit derisa të përfundojë rivendosja te cilësimet e fabrikës para se ta mbyllësh kapakun. Për përfundimin e rivendosjes te cilësimet e fabrikës mund të duhet deri në një minutë.</translation> <translation id="1238612778414822719">Vonesa e HTTPS</translation> +<translation id="1240699967155581440">Kërkohet Powerwash (rivendosja te cilësimet e fabrikës)</translation> <translation id="1264116747675686718">Po përditësohet versioni i sistemit operativ</translation> <translation id="1264369926465113395">Kontrollo revistën e re dixhitale të Chromebook për krijuesit</translation> <translation id="1270369111467284986">U dyshua portal izolues</translation> @@ -92,6 +94,7 @@ <translation id="1801418420130173017">Çaktivizo temën e errët</translation> <translation id="1807246157184219062">I lehtë</translation> <translation id="1827738518074806965">Galeri arti</translation> +<translation id="1840835860961531162">Çaktivizo mbrojtjen nga shkrimi</translation> <translation id="1851218745569890714">Videokonferenca</translation> <translation id="1852934301711881861">Instalo Chrome OS Flex</translation> <translation id="1856388568474281774">Shigjeta poshtë</translation> @@ -148,6 +151,7 @@ <translation id="2360257214555822463">U zbuluan <ph name="LINK_BEGIN" />komponentë të pakualifikuar<ph name="LINK_END" />. Nëse zgjedh ta konfirmosh që kjo është instaluar, bëje këtë tani.</translation> <translation id="2363636958541445404">Aktivizo veçorinë për të zgjedhur opsionet e mbrojtësit të ekranit</translation> <translation id="2364498172489649528">Kaloi</translation> +<translation id="236594517359128026">Para se të vazhdosh, vendose laptopin mbi një sipërfaqe të rrafshët.</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Dërgo raportin e komenteve</translation> <translation id="2407209115954268704">Statusi i kyçjes së kartës SIM</translation> @@ -266,6 +270,7 @@ <translation id="3820172043799983114">Kodi PIN i pavlefshëm</translation> <translation id="3838338534323494292">Fjalëkalimi i ri</translation> <translation id="385051799172605136">Prapa</translation> +<translation id="385832974417157471">Para se ta fikësh, rivendose pajisjen te cilësimet e fabrikës. Nëse pajisja jote ka një kapak, prit derisa të përfundojë rivendosja te cilësimet e fabrikës para se ta mbyllësh kapakun. Për përfundimin e rivendosjes te cilësimet e fabrikës mund të duhet deri në një minutë.</translation> <translation id="3858860766373142691">Emri</translation> <translation id="3865414814144988605">Rezolucioni</translation> <translation id="387301095347517405">Numri i herëve që bateria ka kryer një cikël të plotë karikimi</translation> @@ -275,6 +280,7 @@ <translation id="3941014780699102620">Zgjidhja e pritësit dështoi</translation> <translation id="3942420633017001071">Diagnostikimi</translation> <translation id="3954678691475912818">Lloji i pajisjes është i panjohur.</translation> +<translation id="3958703339436883942">Po përgatitet për rinisjen...</translation> <translation id="3966286471246132217">Për rezultate më të sakta, mbylli të gjitha aplikacionet derisa të përfundojë testi.</translation> <translation id="3967822245660637423">Shkarkimi përfundoi</translation> <translation id="3969602104473960991">Fjalëkalimi i ChromeOS u përditësua</translation> @@ -423,6 +429,7 @@ <translation id="5275828089655680674">Riekzekuto rutinat</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">versioni <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Çaktivizo mbrojtjen nga shkrimi për të vazhduar në ekranin tjetër Shko te faqja e mbështetjes e prodhuesit të pajisjes për udhëzime.</translation> <translation id="5300814202279832142">Zhvendose dritaren te tavolina e punës</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Lidh</translation> @@ -452,6 +459,7 @@ <translation id="5507300744274596613">Sigurohu që Chrome OS është i përditësuar</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Kalibro komponentët</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skano përsëri</translation> <translation id="5583640892426849032">Hapësirë prapa</translation> @@ -474,6 +482,7 @@ <translation id="583281660410589416">E panjohur</translation> <translation id="5843706793424741864">Farenhait</translation> <translation id="5849570051105887917">Kodi i ofruesit të rrjetit bazë</translation> +<translation id="5856532218727053281">Sistemi do të riniset pas verifikimit të statusit të mbrojtjes nga shkrimi</translation> <translation id="5859603669299126575">Albumi i galerisë së artit</translation> <translation id="5860033963881614850">Çaktivizuar</translation> <translation id="5860491529813859533">Aktivizo</translation> @@ -704,6 +713,7 @@ <translation id="8206859287963243715">Rrjeti celular</translation> <translation id="8208861521865154048">Avantazhet</translation> <translation id="8217675307824400706">Lidh</translation> +<translation id="8221728673725659466">Kalibrimi përfundoi</translation> <translation id="8226628635270268143">Zgjidh fotografitë dhe albumet e tua të preferuara</translation> <translation id="8230672074305416752">Dështoi verifikimi "ping" për portën e parazgjedhur të kalimit</translation> <translation id="8246209727385807362">Operator celular i panjohur</translation> @@ -715,6 +725,7 @@ <translation id="8297006494302853456">I dobët</translation> <translation id="8302368968391049045">Mur mbrojtës HTTPS</translation> <translation id="8318753676953949627">Nuk ka imazhe</translation> +<translation id="8327249300223641918">Para se të vazhdosh, vendose të gjithë pajisjen (bazën dhe kapakun) mbi një sipërfaqe të rrafshët.</translation> <translation id="8336739000755212683">Ndrysho imazhin e llogarisë së pajisjes</translation> <translation id="8347227221149377169">Printimet</translation> <translation id="8352772353338965963">Shto një llogari në identifikimin e shumëfishtë. Të gjitha llogaritë e identifikuara mund të qasen pa fjalëkalim, prandaj ky funksion duhet të përdoret vetëm me llogari të besuara.</translation> @@ -729,6 +740,7 @@ <translation id="844521431886043384">DNS-ja nuk është konfiguruar</translation> <translation id="8456761643544401578">Modalitet i errët automatik</translation> <translation id="8461329675984532579">Emri i ofruesit të rrjetit bazë</translation> +<translation id="8467104829907989997">Komponentët po kalibrohen...</translation> <translation id="8475690821716466388">Rrjeti Wi-Fi është i siguruar me protokollin e dobët WEP PSK</translation> <translation id="8477551185774834963">Vonesa e DNS-së është pak më lart se pragu i lejueshëm</translation> <translation id="8483248364096924578">Adresa e IP-së</translation> @@ -788,6 +800,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skano}=1{Skano faqen {NUMBER_OF_PAGES}}other{Skano faqen {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Pajisja ka <ph name="BATTERY_PERCENTAGE" />% bateri.</translation> <translation id="9003704114456258138">Frekuenca</translation> +<translation id="9025198690966128418">Përdore si pajisje personale</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">Rezolucioni i DNS-së ka vonesë të lartë</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index ad44900..ffed2ae 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Dalje</translation> <translation id="1204296502688602597">Kašnjenje DNS-a</translation> <translation id="123124571410524056">Sumnja se na portal</translation> +<translation id="1236400083787698183">Pre restartovanja obavite Powerwash na uređaju. Ako uređaj ima poklopac, sačekajte da se Powerwash završi pre nego što zatvorite poklopac. Powerwash može da traje i do minut.</translation> <translation id="1238612778414822719">HTTPS kašnjenje</translation> +<translation id="1240699967155581440">Powerwash (resetovanje na fabrička podešavanja) je obavezan</translation> <translation id="1264116747675686718">Ažurira se verzija OS-a</translation> <translation id="1264369926465113395">Proverite Chromebook-ov novi digitalni časopis za autore</translation> <translation id="1270369111467284986">Moguć ulazni portal</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Otkrivene su <ph name="LINK_BEGIN" />nekvalifikovane komponente<ph name="LINK_END" />. Ako želite da potvrdite da su montirane, uradite to odmah.</translation> <translation id="2363636958541445404">Uključite funkciju da biste izabrali opcije čuvara ekrana</translation> <translation id="2364498172489649528">Prošlo</translation> +<translation id="236594517359128026">Pre nego što nastavite, stavite laptop na ravnu površinu</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Pošalji izveštaj sa povratnim informacijama</translation> <translation id="2407209115954268704">Status zaključavanja SIM kartice</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Nevažeći PIN.</translation> <translation id="3838338534323494292">Nova lozinka</translation> <translation id="385051799172605136">Nazad</translation> +<translation id="385832974417157471">Pre isključivanja obavite Powerwash na uređaju. Ako uređaj ima poklopac, sačekajte da se Powerwash završi pre nego što zatvorite poklopac. Powerwash može da traje i do minut.</translation> <translation id="3858860766373142691">Naziv</translation> <translation id="3865414814144988605">Rezolucija</translation> <translation id="387301095347517405">Broj puta kada se baterija napunila do kraja</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Uverite se da je Chrome OS ažuriran</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Kalibrirajte komponente</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skeniraj ponovo</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Mobilni uređaj</translation> <translation id="8208861521865154048">Pogodnosti</translation> <translation id="8217675307824400706">Povežite se</translation> +<translation id="8221728673725659466">Kalibracija je dovršena</translation> <translation id="8226628635270268143">Odaberite omiljene slike i albume</translation> <translation id="8230672074305416752">Pingovanje podrazumevanog mrežnog prolaza nije uspelo</translation> <translation id="8246209727385807362">Nepoznat mobilni operater</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Slab</translation> <translation id="8302368968391049045">HTTPS zaštitni zid</translation> <translation id="8318753676953949627">Nema slika</translation> +<translation id="8327249300223641918">Pre nego što nastavite, stavite ceo uređaj (osnovu i poklopac) na ravnu površinu.</translation> <translation id="8336739000755212683">Promenite sliku naloga na uređaju</translation> <translation id="8347227221149377169">Zadaci štampanja</translation> <translation id="8352772353338965963">Dodajte nalog za višestruko prijavljivanje. Svim prijavljenim nalozima se može pristupiti bez lozinke, pa ovu funkciju treba koristiti samo sa pouzdanim nalozima.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS nije podešen</translation> <translation id="8456761643544401578">Automatski tamni režim</translation> <translation id="8461329675984532579">Naziv dobavljača za Home</translation> +<translation id="8467104829907989997">Komponente se kalibriraju…</translation> <translation id="8475690821716466388">WiFi mreža je obezbeđena slabim protokolom WEP PSK</translation> <translation id="8477551185774834963">Kašnjenje DNS-a u manjoj meri premašuje dozvoljenu graničnu vrednost</translation> <translation id="8483248364096924578">IP adresa</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skeniraj}=1{Skeniraj {NUMBER_OF_PAGES}. stranicu}one{Skeniraj {NUMBER_OF_PAGES}. stranicu}few{Skeniraj {NUMBER_OF_PAGES}. stranicu}other{Skeniraj {NUMBER_OF_PAGES}. stranicu}}</translation> <translation id="8997710128084572139">Uređaj ima <ph name="BATTERY_PERCENTAGE" />% baterije.</translation> <translation id="9003704114456258138">Frekvencija</translation> +<translation id="9025198690966128418">Koristi kao lični uređaj</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS razrešavanje ima veliko kašnjenje</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index 75ab75c..28544f4 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Даље</translation> <translation id="1204296502688602597">Кашњење DNS-а</translation> <translation id="123124571410524056">Сумња се на портал</translation> +<translation id="1236400083787698183">Пре рестартовања обавите Powerwash на уређају. Ако уређај има поклопац, сачекајте да се Powerwash заврши пре него што затворите поклопац. Powerwash може да траје и до минут.</translation> <translation id="1238612778414822719">HTTPS кашњење</translation> +<translation id="1240699967155581440">Powerwash (ресетовање на фабричка подешавања) је обавезан</translation> <translation id="1264116747675686718">Ажурира се верзија ОС-а</translation> <translation id="1264369926465113395">Проверите Chromebook-ов нови дигитални часопис за ауторе</translation> <translation id="1270369111467284986">Могућ улазни портал</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Откривене су <ph name="LINK_BEGIN" />неквалификоване компоненте<ph name="LINK_END" />. Ако желите да потврдите да су монтиране, урадите то одмах.</translation> <translation id="2363636958541445404">Укључите функцију да бисте изабрали опције чувара екрана</translation> <translation id="2364498172489649528">Прошло</translation> +<translation id="236594517359128026">Пре него што наставите, ставите лаптоп на равну површину</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Пошаљи извештај са повратним информацијама</translation> <translation id="2407209115954268704">Статус закључавања SIM картице</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Неважећи PIN.</translation> <translation id="3838338534323494292">Нова лозинка</translation> <translation id="385051799172605136">Назад</translation> +<translation id="385832974417157471">Пре искључивања обавите Powerwash на уређају. Ако уређај има поклопац, сачекајте да се Powerwash заврши пре него што затворите поклопац. Powerwash може да траје и до минут.</translation> <translation id="3858860766373142691">Назив</translation> <translation id="3865414814144988605">Резолуција</translation> <translation id="387301095347517405">Број пута када се батерија напунила до краја</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Уверите се да је Chrome ОС ажуриран</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Калибрирајте компоненте</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Скенирај поново</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Мобилни уређај</translation> <translation id="8208861521865154048">Погодности</translation> <translation id="8217675307824400706">Повежите се</translation> +<translation id="8221728673725659466">Калибрација је довршена</translation> <translation id="8226628635270268143">Одаберите омиљене слике и албуме</translation> <translation id="8230672074305416752">Пинговање подразумеваног мрежног пролаза није успело</translation> <translation id="8246209727385807362">Непознат мобилни оператер</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Слаб</translation> <translation id="8302368968391049045">HTTPS заштитни зид</translation> <translation id="8318753676953949627">Нема слика</translation> +<translation id="8327249300223641918">Пре него што наставите, ставите цео уређај (основу и поклопац) на равну површину.</translation> <translation id="8336739000755212683">Промените слику налога на уређају</translation> <translation id="8347227221149377169">Задаци штампања</translation> <translation id="8352772353338965963">Додајте налог за вишеструко пријављивање. Свим пријављеним налозима се може приступити без лозинке, па ову функцију треба користити само са поузданим налозима.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS није подешен</translation> <translation id="8456761643544401578">Аутоматски тамни режим</translation> <translation id="8461329675984532579">Назив добављача за Home</translation> +<translation id="8467104829907989997">Компоненте се калибрирају…</translation> <translation id="8475690821716466388">WiFi мрежа је обезбеђена слабим протоколом WEP PSK</translation> <translation id="8477551185774834963">Кашњење DNS-а у мањој мери премашује дозвољену граничну вредност</translation> <translation id="8483248364096924578">IP адреса</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Скенирај}=1{Скенирај {NUMBER_OF_PAGES}. страницу}one{Скенирај {NUMBER_OF_PAGES}. страницу}few{Скенирај {NUMBER_OF_PAGES}. страницу}other{Скенирај {NUMBER_OF_PAGES}. страницу}}</translation> <translation id="8997710128084572139">Уређај има <ph name="BATTERY_PERCENTAGE" />% батерије.</translation> <translation id="9003704114456258138">Фреквенција</translation> +<translation id="9025198690966128418">Користи као лични уређај</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS разрешавање има велико кашњење</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index f7c78d7..f84b362 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Inaktivera mörkt tema</translation> <translation id="1807246157184219062">Ljus</translation> <translation id="1827738518074806965">Konstgalleri</translation> +<translation id="1840835860961531162">Inaktivera skrivskydd</translation> <translation id="1851218745569890714">Videokonferenser</translation> <translation id="1852934301711881861">Installera ChromeOS Flex</translation> <translation id="1856388568474281774">Nedåtpiltangenten</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">DNS-matchningen misslyckades för värden</translation> <translation id="3942420633017001071">Diagnostik</translation> <translation id="3954678691475912818">Enhetstypen är okänd.</translation> +<translation id="3958703339436883942">Förbereder för omstart …</translation> <translation id="3966286471246132217">Du får mer exakta resultat om du stänger alla appar tills testet är slutfört.</translation> <translation id="3967822245660637423">Nedladdning slutförd</translation> <translation id="3969602104473960991">Lösenordet för Chrome OS har uppdaterats</translation> @@ -424,6 +426,7 @@ <translation id="5275828089655680674">Kör rutinerna igen</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">version <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Inaktivera skrivskydd för att fortsätta till nästa skärm. Du hittar anvisningar på enhetstillverkarens supportsida.</translation> <translation id="5300814202279832142">Flytta fönstret till ett skrivbord</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Anslut</translation> @@ -475,6 +478,7 @@ <translation id="583281660410589416">Okänd</translation> <translation id="5843706793424741864">Fahrenheit</translation> <translation id="5849570051105887917">Kod för hemleverantör</translation> +<translation id="5856532218727053281">Systemet startas om när statusen för skrivskydd har verifierats</translation> <translation id="5859603669299126575">Konstgallerialbum</translation> <translation id="5860033963881614850">Av</translation> <translation id="5860491529813859533">Aktivera</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index fc98d89..7aae11c 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -92,6 +92,7 @@ <translation id="1801418420130173017">Zima mandhari meusi</translation> <translation id="1807246157184219062">Mwangaza</translation> <translation id="1827738518074806965">Matunzio ya sanaa</translation> +<translation id="1840835860961531162">Zima kipengele cha Write Protect</translation> <translation id="1851218745569890714">Mikutano ya Video</translation> <translation id="1852934301711881861">Sakinisha ChromeOS Flex</translation> <translation id="1856388568474281774">Kishale cha chini</translation> @@ -275,6 +276,7 @@ <translation id="3941014780699102620">Imeshindwa kusuluhisha seva pangishi</translation> <translation id="3942420633017001071">Vichunguzi</translation> <translation id="3954678691475912818">Aina ya kifaa haijulikani.</translation> +<translation id="3958703339436883942">Inajiandaa kujizima kisha ijiwashe...</translation> <translation id="3966286471246132217">Ili upate matokeo sahihi zaidi, funga programu zote hadi jaribio litakapokamilika.</translation> <translation id="3967822245660637423">Faili imekamilika kupakuliwa</translation> <translation id="3969602104473960991">Nenosiri la Mfumo wa Uendeshaji wa Chrome limesasishwa</translation> @@ -423,6 +425,7 @@ <translation id="5275828089655680674">Rudia Uchunguzi</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">toleo la <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Zima mfumo wa Write Protect ili uendelee kwenye skrini inayofuata. Nenda kwenye ukurasa wa usaidizi wa mtengenezaji kifaa ili upate maagizo.</translation> <translation id="5300814202279832142">Hamishia dirisha kwenye eneokazi</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Unganisha</translation> @@ -474,6 +477,7 @@ <translation id="583281660410589416">Haijulikani</translation> <translation id="5843706793424741864">Farenhaiti</translation> <translation id="5849570051105887917">Msimbo wa mtoa huduma za nyumbani</translation> +<translation id="5856532218727053281">Mfumo utajizima kisha ujiwashe baada ya kuhakiki hali ya Write Protection</translation> <translation id="5859603669299126575">Albamu ya matunzio ya sanaa</translation> <translation id="5860033963881614850">Kimezimwa</translation> <translation id="5860491529813859533">Washa</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb index 087f443..455b36b 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">அடுத்து</translation> <translation id="1204296502688602597">DNS தாமதம்</translation> <translation id="123124571410524056">போர்டல் இருப்பதுபோல் தெரிகிறது</translation> +<translation id="1236400083787698183">மீண்டும் தொடங்குவதற்கு முன்பு சாதனத்தைப் பவர்வாஷ் செய்யவும். உங்கள் சாதனத்திற்கு மூடி இருந்தால் பவர்வாஷ் நிறைவடையும் வரை அதை மூடாதீர்கள். பவர்வாஷ் நிறைவடைய ஒரு நிமிடம் வரை ஆகலாம்.</translation> <translation id="1238612778414822719">HTTPS தாமதம்</translation> +<translation id="1240699967155581440">பவர்வாஷ் (ஆரம்பநிலை மீட்டமைத்தல்) தேவை</translation> <translation id="1264116747675686718">OS பதிப்பைப் புதுப்பிக்கிறது</translation> <translation id="1264369926465113395">Chromebookகின், கிரியேட்டர்களுக்கான புதிய டிஜிட்டல் பத்திரிகையைப் பார்க்கவும்</translation> <translation id="1270369111467284986">கேப்டிவ் போர்டல் இருப்பது போல் தெரிகிறது</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />தகுதிபெறாத காம்பனென்ட்கள்<ph name="LINK_END" /> கண்டறியப்பட்டுள்ளன. இது நிறுவப்பட்டது என உறுதிசெய்ய நினைத்தால், அதை இப்போதே செய்யுங்கள்.</translation> <translation id="2363636958541445404">ஸ்கிரீன் சேவர் விருப்பங்களைத் தேர்ந்தெடுக்க, அம்சத்தை இயக்கவும்</translation> <translation id="2364498172489649528">வெற்றி</translation> +<translation id="236594517359128026">தொடர்வதற்கு முன்பு, உங்கள் லேப்டாப்பை ஒரு சமதள மேற்பரப்பில் வைக்கவும்</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">கருத்து அறிக்கையை அனுப்பு</translation> <translation id="2407209115954268704">சிம் நிலை</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">தவறான பின்.</translation> <translation id="3838338534323494292">புதிய கடவுச்சொல்</translation> <translation id="385051799172605136">திரும்பு</translation> +<translation id="385832974417157471">ஷட் டவுன் செய்வதற்கு முன்பு உங்கள் சாதனத்தைப் பவர்வாஷ் செய்யவும். உங்கள் சாதனத்திற்கு மூடி இருந்தால் பவர்வாஷ் நிறைவடையும் வரை அதை மூடாதீர்கள். பவர்வாஷ் நிறைவடைய ஒரு நிமிடம் வரை ஆகலாம்.</translation> <translation id="3858860766373142691">பெயர்</translation> <translation id="3865414814144988605">தெளிவு</translation> <translation id="387301095347517405">உங்கள் பேட்டரி முழுமையாகச் சார்ஜ் செய்யப்பட்ட எண்ணிக்கை</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Chrome OS பதிப்பு சமீபத்தியதாக இருப்பதை உறுதிசெய்துகொள்ளுங்கள்</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">காம்பனென்ட்டுகளைச் சரிசெய்தல்</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">மீண்டும் ஸ்கேன் செய்</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">செல்லுலர்</translation> <translation id="8208861521865154048">சலுகைகள்</translation> <translation id="8217675307824400706">இணையத்துடன் இணைத்திடுங்கள்</translation> +<translation id="8221728673725659466">சரிசெய்தல் நிறைவடைந்தது</translation> <translation id="8226628635270268143">உங்களுக்குப் பிடித்த படங்களையும் ஆல்பங்களையும் தேர்வுசெய்க</translation> <translation id="8230672074305416752">இயல்புநிலை நெட்வொர்க் கேட்வேயைப் பிங் செய்ய முடியவில்லை</translation> <translation id="8246209727385807362">அறியப்படாத தொலைத்தொடர்பு நிறுவனம்</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">வலுவாக இல்லை</translation> <translation id="8302368968391049045">HTTPS ஃபயர்வால்</translation> <translation id="8318753676953949627">படங்கள் இல்லை</translation> +<translation id="8327249300223641918">தொடர்வதற்கு முன்பு, முழுச் சாதனத்தையும் (அடிப்பகுதி மற்றும் மூடி) சமதள மேற்பரப்பில் வைக்கவும்.</translation> <translation id="8336739000755212683">சாதனக் கணக்கின் படத்தை மாற்றவும்</translation> <translation id="8347227221149377169">அச்சுப் பணிகள்</translation> <translation id="8352772353338965963">பல உள்நுழைவுக்குக் கணக்கைச் சேர்க்கவும். உள்நுழைந்த அனைத்து கணக்குகளையும் கடவுச்சொல் இல்லாமலே அணுகலாம் என்பதால் இந்த அம்சத்தை நம்பகமான கணக்குகளுடன் மட்டுமே பயன்படுத்த வேண்டும்.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS அமைக்கப்படவில்லை</translation> <translation id="8456761643544401578">தானியங்கு டார்க் பயன்முறை</translation> <translation id="8461329675984532579">உள்நாட்டு மொபைல் சேவை வழங்குநர் பெயர்</translation> +<translation id="8467104829907989997">காம்பனென்ட்டுகளைச் சரிசெய்கிறது...</translation> <translation id="8475690821716466388">WEP PSK என்னும் வலுவற்ற நெறிமுறை மூலம் வைஃபை நெட்வொர்க் பாதுகாக்கப்படுகிறது</translation> <translation id="8477551185774834963">DNSஸில் ஏற்படும் தாமதம் அனுமதிக்கப்படும் வரம்பைவிடச் சற்றே அதிகமாக உள்ளது</translation> <translation id="8483248364096924578">IP முகவரி</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{ஸ்கேன் செய்}=1{{NUMBER_OF_PAGES} பக்கங்களை ஸ்கேன் செய்}other{{NUMBER_OF_PAGES} பக்கங்களை ஸ்கேன் செய்}}</translation> <translation id="8997710128084572139">சாதனத்தின் பேட்டரி நிலை <ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">அதிர்வெண்</translation> +<translation id="9025198690966128418">தனிப்பட்ட சாதனமாகப் பயன்படுத்து</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS ரெசல்யூஷனில் அதிகளவு தாமதம் ஏற்படுகிறது</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb index a852e02..152cce5 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">İleri</translation> <translation id="1204296502688602597">DNS Gecikmesi</translation> <translation id="123124571410524056">Portal olabilir</translation> +<translation id="1236400083787698183">Cihazınızı yeniden başlatmadan önce powerwash işlemi yapın. Cihazınızın kapağı varsa kapağı kapatmadan önce powerwash işleminin tamamlanmasını bekleyin. Powerwash işleminin tamamlanması bir dakika kadar sürebilir.</translation> <translation id="1238612778414822719">HTTPS Gecikmesi</translation> +<translation id="1240699967155581440">Powerwash (fabrika ayarlarına sıfırlama) gerekiyor</translation> <translation id="1264116747675686718">OS sürümü güncelleniyor</translation> <translation id="1264369926465113395">Chromebook'un içerik üreticiler için hazırladığı yeni dijital dergisine göz atın</translation> <translation id="1270369111467284986">Giriş portalı şüpheli</translation> @@ -92,6 +94,7 @@ <translation id="1801418420130173017">Koyu temayı devre dışı bırak</translation> <translation id="1807246157184219062">Açık</translation> <translation id="1827738518074806965">Sanat galerisi</translation> +<translation id="1840835860961531162">Yazma korumayı devre dışı bırakma</translation> <translation id="1851218745569890714">Video Konferansı</translation> <translation id="1852934301711881861">ChromeOS Flex'i yükle</translation> <translation id="1856388568474281774">Aşağı ok</translation> @@ -148,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />Uygun olmayan bileşenler<ph name="LINK_END" /> algılandı. Bileşenlerin yüklendiğini onaylamayı seçerseniz lütfen hemen onaylayın.</translation> <translation id="2363636958541445404">Ekran koruyucu seçeneklerini belirlemek için özelliği açın</translation> <translation id="2364498172489649528">Başarılı oldu</translation> +<translation id="236594517359128026">Devam etmeden önce dizüstü bilgisayarınızı düz bir yüzeye yerleştirin</translation> <translation id="2380886658946992094">Hukuk</translation> <translation id="2391082728065870591">Geri Bildirim Raporu Gönder</translation> <translation id="2407209115954268704">SIM Kilitleme Durumu</translation> @@ -266,6 +270,7 @@ <translation id="3820172043799983114">Geçersiz PIN.</translation> <translation id="3838338534323494292">Yeni şifre</translation> <translation id="385051799172605136">Geri</translation> +<translation id="385832974417157471">Cihazınızı kapatmadan önce powerwash işlemi yapın. Cihazınızın kapağı varsa kapağı kapatmadan önce powerwash işleminin tamamlanmasını bekleyin. Powerwash işleminin tamamlanması bir dakika kadar sürebilir.</translation> <translation id="3858860766373142691">Ad</translation> <translation id="3865414814144988605">Çözünürlük</translation> <translation id="387301095347517405">Pilinizin tam şarj döngüsünden geçme sayısı</translation> @@ -275,6 +280,7 @@ <translation id="3941014780699102620">Ana makine çözümlenemedi</translation> <translation id="3942420633017001071">Teşhis</translation> <translation id="3954678691475912818">Cihazın türü bilinmiyor.</translation> +<translation id="3958703339436883942">Yeniden başlatmaya hazırlanıyor...</translation> <translation id="3966286471246132217">Daha doğru sonuçlar için test tamamlanana kadar tüm uygulamaları kapatın.</translation> <translation id="3967822245660637423">İndirme tamamlandı</translation> <translation id="3969602104473960991">ChromeOS şifresi güncellendi</translation> @@ -424,6 +430,7 @@ <translation id="5275828089655680674">Rutinleri Tekrar Çalıştır</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">sürüm: <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">Sonraki ekrana devam etmek için yazma korumayı devre dışı bırakın. Talimatları görmek için cihaz üreticisinin destek sayfasına gidin.</translation> <translation id="5300814202279832142">Pencereyi masaya taşı</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">Bağlan</translation> @@ -453,6 +460,7 @@ <translation id="5507300744274596613">Chrome OS'in güncel olduğundan emin olun</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Bileşenleri kalibre etme</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Yeniden tara</translation> <translation id="5583640892426849032">Geri al tuşu</translation> @@ -475,6 +483,7 @@ <translation id="583281660410589416">Bilinmiyor</translation> <translation id="5843706793424741864">Fahrenhayt</translation> <translation id="5849570051105887917">Ev sağlayıcı kodu</translation> +<translation id="5856532218727053281">Yazma koruma durumu doğrulandıktan sonra sistem yeniden başlatılacak</translation> <translation id="5859603669299126575">Sanat galerisi albümü</translation> <translation id="5860033963881614850">Kapalı</translation> <translation id="5860491529813859533">Etkinleştir</translation> @@ -705,6 +714,7 @@ <translation id="8206859287963243715">Cep telefonu</translation> <translation id="8208861521865154048">Avantajlar</translation> <translation id="8217675307824400706">Bağlanın</translation> +<translation id="8221728673725659466">Ayarlama tamamlandı</translation> <translation id="8226628635270268143">En beğendiğiniz fotoğraf ve albümleri seçin</translation> <translation id="8230672074305416752">Varsayılan ağ geçidi pinglenemedi</translation> <translation id="8246209727385807362">Bilinmeyen operatör</translation> @@ -716,6 +726,7 @@ <translation id="8297006494302853456">Zayıf</translation> <translation id="8302368968391049045">HTTPS Güvenlik Duvarı</translation> <translation id="8318753676953949627">Resim Yok</translation> +<translation id="8327249300223641918">Devam etmeden önce cihazınızın tamamını (alt kısım ve kapak) düz bir yüzeye yerleştirin.</translation> <translation id="8336739000755212683">Cihaz hesap görüntüsünü değiştir</translation> <translation id="8347227221149377169">Yazdırma işleri</translation> <translation id="8352772353338965963">Çoklu oturum açmaya bir hesap ekleyin. Oturum açılmış tüm hesaplara şifresiz erişilebileceği için bu özellik sadece güvenilir hesaplarla kullanılmalıdır.</translation> @@ -730,6 +741,7 @@ <translation id="844521431886043384">DNS ayarlanmamış</translation> <translation id="8456761643544401578">Otomatik koyu mod</translation> <translation id="8461329675984532579">Ev sağlayıcısının adı</translation> +<translation id="8467104829907989997">Bileşenler kalibre ediliyor...</translation> <translation id="8475690821716466388">Kablosuz ağ, zayıf bir protokol olan WEP PSK ile güvenlik altına alınmış</translation> <translation id="8477551185774834963">DNS gecikmesi, izin verilen eşiğin biraz üzerinde</translation> <translation id="8483248364096924578">IP adresi</translation> @@ -789,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Tara}=1{Taranacak sayfa: {NUMBER_OF_PAGES}}other{Taranacak sayfa: {NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Cihazın pili %<ph name="BATTERY_PERCENTAGE" /> düzeyinde.</translation> <translation id="9003704114456258138">Frekans</translation> +<translation id="9025198690966128418">Kişisel cihaz olarak kullan</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS çözümleme, yüksek gecikme süresine sahip</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index 8d874c51..29f98c9 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -94,6 +94,7 @@ <translation id="1801418420130173017">گہری تھیم غیر فعال کریں</translation> <translation id="1807246157184219062">روشنی</translation> <translation id="1827738518074806965">آرٹ گیلری</translation> +<translation id="1840835860961531162">Write Protect کو آف کریں</translation> <translation id="1851218745569890714">ویڈیو کانفرنسنگ</translation> <translation id="1852934301711881861">ChromeOS Flex انسٹال کریں</translation> <translation id="1856388568474281774">نیچے تیر کا نشان</translation> @@ -279,6 +280,7 @@ <translation id="3941014780699102620">میزبان کو حل کرنے میں ناکام</translation> <translation id="3942420633017001071">تشخیصات</translation> <translation id="3954678691475912818">ڈیوائس کی قسم نامعلوم ہے۔</translation> +<translation id="3958703339436883942">ری سٹارٹ کرنے کی تیاری ہو رہی ہے...</translation> <translation id="3966286471246132217">مزید درست نتائج کیلئے، ٹیسٹ مکمل ہونے تک تمام ایپس کو بند کریں۔</translation> <translation id="3967822245660637423">ڈاؤن لوڈ مکمل ہوگیا ہے</translation> <translation id="3969602104473960991">ChromeOS پاس ورڈ اپ ڈیٹ کیا گيا</translation> @@ -427,6 +429,7 @@ <translation id="5275828089655680674">روٹینز کو دوبارہ چلائیں</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">ورژن <ph name="MILESTONE_VERSION" /></translation> +<translation id="5298334025463010990">اگلی اسکرین پر جاری رکھنے کے لیے Write Protect کو غیر فعال کریں۔ ہدایات کے لیے آلے کے مینوفیکچرر کے سپورٹ صفحے پر جائیں۔</translation> <translation id="5300814202279832142">ونڈو کو ڈیسک میں منتقل کریں</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">منسلک کریں</translation> @@ -479,6 +482,7 @@ <translation id="583281660410589416">نامعلوم</translation> <translation id="5843706793424741864">فارن ہائیٹ</translation> <translation id="5849570051105887917">گھر فراہم کرنے والے کا کوڈ</translation> +<translation id="5856532218727053281">Write پروٹیکشن اسٹیٹس کی تصدیق کے بعد سسٹم ری سٹارٹ ہو جائے گا</translation> <translation id="5859603669299126575">آرٹ گیلری البم</translation> <translation id="5860033963881614850">آف</translation> <translation id="5860491529813859533">آن کریں</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index 12a2534..643837f 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Keyingisi</translation> <translation id="1204296502688602597">DNS kechikishi</translation> <translation id="123124571410524056">Portal muzlatildi</translation> +<translation id="1236400083787698183">Qayta ishga tushirishdan oldin qurilmangizni format qiling. Qurilmangiz qopqogʻi boʻlsa, Powerwash ishni yakunlashini kuting. Powerwash ishni yakunlashi bir daqiqagacha vaqt oladi.</translation> <translation id="1238612778414822719">HTTPS kechikishi</translation> +<translation id="1240699967155581440">Powerwash (asliga qaytarish) funksiyasini ishga tushirish zarur</translation> <translation id="1264116747675686718">OT versiyasi yangilanmoqda</translation> <translation id="1264369926465113395">Chromebook qurilmasining ijodkorlar uchun yangi raqamli jurnali bilan tanishing</translation> <translation id="1270369111467284986">Kirish portali muzlatildi</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463"><ph name="LINK_BEGIN" />Mos boʻlmagan komponentlar<ph name="LINK_END" /> aniqlandi. Bu oʻrnatilganini tasdiqlashni tanlasangiz, buni hoziroq amalga oshiring.</translation> <translation id="2363636958541445404">Ekran lavhasi parametrlarini tanlash uchun funksiyani yoqing</translation> <translation id="2364498172489649528">Tugadi</translation> +<translation id="236594517359128026">Davom etishdan oldin noutbukni tekis joyga qoʻying</translation> <translation id="2380886658946992094">Legal</translation> <translation id="2391082728065870591">Fikr va mulohaza hisobotini yuborish</translation> <translation id="2407209115954268704">SIM qulfi holati</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">PIN kod xato.</translation> <translation id="3838338534323494292">Yangi parol</translation> <translation id="385051799172605136">Orqaga</translation> +<translation id="385832974417157471">Oʻchirishdan oldin qurilmangizni formatlang. Qurilmangiz qopqogʻi boʻlsa, Powerwash ishni yakunlashini kuting. Powerwash ishni yakunlashi bir daqiqagacha vaqt oladi.</translation> <translation id="3858860766373142691">Ism</translation> <translation id="3865414814144988605">Piksellar sig‘imi</translation> <translation id="387301095347517405">Batareya toʻliq quvvat olgan davrlar soni</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Chrome OS eng oxirgi versiyada ekanini tekshiring</translation> <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> +<translation id="5548284010950733518">Komponentlarni kalibrlash</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Qayta skanerlash</translation> <translation id="5583640892426849032">Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Uyali</translation> <translation id="8208861521865154048">Imtiyozlar</translation> <translation id="8217675307824400706">Internetga ulaning</translation> +<translation id="8221728673725659466">Kalibrlash yakunlandi</translation> <translation id="8226628635270268143">Sevimli suratlar va albomlaringizni tanlang</translation> <translation id="8230672074305416752">Birlamchi tarmoq shlyuzi ping qilinmadi</translation> <translation id="8246209727385807362">Noma’lum provayder</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Zaif</translation> <translation id="8302368968391049045">HTTPS Fayrvol</translation> <translation id="8318753676953949627">Rasmlarsiz</translation> +<translation id="8327249300223641918">Davom etishdan oldin qurilmangizni (taglik va qopqogʻini) tekis yuzaga qoʻying.</translation> <translation id="8336739000755212683">Qurilmadagi hisob rasmini almashtirish</translation> <translation id="8347227221149377169">Chop etish vazifalari</translation> <translation id="8352772353338965963">Bir nechta hisobga kirish tizimiga hisob qo‘shish. Kirish bajarilgan hisoblarni ko‘rish uchun parol so‘ralmaydi, shuning uchun bu funksiyadan faqat ishonchli hisoblarda foydalanish kerak.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">DNS sozlanmagan</translation> <translation id="8456761643544401578">Avtomatik tungi rejim</translation> <translation id="8461329675984532579">Mahalliy ta’minotchi nomi</translation> +<translation id="8467104829907989997">Komponentlar kalibrlanmoqda...</translation> <translation id="8475690821716466388">WiFi tarmoq zaif WEP PSK protokoli bilan himoyalangan</translation> <translation id="8477551185774834963">DNS kutish vaqti ruxsat etilgan chegaradan biroz baland</translation> <translation id="8483248364096924578">IP manzil</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skanerlash}=1{{NUMBER_OF_PAGES} sahifani skanerlash}other{{NUMBER_OF_PAGES} sahifani skanerlash}}</translation> <translation id="8997710128084572139">Qurilma batareyasi quvvati: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="9003704114456258138">Chastotasi</translation> +<translation id="9025198690966128418">Shaxsiy qurilma sifatida foydalaning</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9062831201344759865">DNS parametrlari koʻp vaqt olmoqda</translation> <translation id="9073281213608662541">PAP</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index 91a53b9b..08ec4c2 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -92,7 +92,7 @@ <translation id="1801418420130173017">停用深色主題背景</translation> <translation id="1807246157184219062">淺色</translation> <translation id="1827738518074806965">畫廊</translation> -<translation id="1840835860961531162">關閉寫入保護功能</translation> +<translation id="1840835860961531162">關閉「寫入保護」功能</translation> <translation id="1851218745569890714">視像會議</translation> <translation id="1852934301711881861">安裝 ChromeOS Flex</translation> <translation id="1856388568474281774">向下箭咀</translation> @@ -276,7 +276,7 @@ <translation id="3941014780699102620">無法解析主機</translation> <translation id="3942420633017001071">診斷</translation> <translation id="3954678691475912818">裝置類型不明。</translation> -<translation id="3958703339436883942">正在準備重新啟動...</translation> +<translation id="3958703339436883942">正在準備重新啟動…</translation> <translation id="3966286471246132217">如要取得更準確的結果,請關閉所有應用程式,直到測試完成為止。</translation> <translation id="3967822245660637423">下載完成</translation> <translation id="3969602104473960991">已更新 Chrome OS 密碼</translation> @@ -426,7 +426,7 @@ <translation id="5275828089655680674">重新執行日常安排</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5294769550414936029">版本 <ph name="MILESTONE_VERSION" /></translation> -<translation id="5298334025463010990">停用寫入保護功能即可繼續前往下一個畫面。相關操作說明請參閱裝置製造商的支援網頁。</translation> +<translation id="5298334025463010990">停用「寫入保護」功能即可繼續前往下一個畫面。請前往裝置製造商的支援網頁取得相關指示。</translation> <translation id="5300814202279832142">將視窗移至桌面</translation> <translation id="5304899856529773394">EVDO</translation> <translation id="5308380583665731573">連線</translation> @@ -478,7 +478,7 @@ <translation id="583281660410589416">不明</translation> <translation id="5843706793424741864">華氏</translation> <translation id="5849570051105887917">家庭網絡供應商代碼</translation> -<translation id="5856532218727053281">系統會在確認寫入保護功能的狀態後重新啟動</translation> +<translation id="5856532218727053281">系統會在確認「寫入保護」狀態後重新啟動</translation> <translation id="5859603669299126575">藝術圖庫中的相簿</translation> <translation id="5860033963881614850">關閉</translation> <translation id="5860491529813859533">開啟</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index b3e6010e..04eb055 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -24,7 +24,9 @@ <translation id="1201402288615127009">Okulandelayo</translation> <translation id="1204296502688602597">I-DNS Latency</translation> <translation id="123124571410524056">Iphothali iyasolwa</translation> +<translation id="1236400083787698183">Ngaphambi kokuqalisa kabusha, sebenzisa i-powerwash kudivayisi yakho. Uma idivayisi yakho inesivalo linda kuze kube yilapho i-powerwash isiqedile ngaphambi kokuvala isivalo. I-powerwash ingase ithathe umzuzu ngaphambi kokuthi iqede.</translation> <translation id="1238612778414822719">Ukubambezeleka kwe-HTTPS</translation> +<translation id="1240699967155581440">Kudingeka i-powerwash (ukusethwa kabusha njengasekuqaleni)</translation> <translation id="1264116747675686718">Ibuyekeza uhlobo lwe-OS</translation> <translation id="1264369926465113395">Hlola imagazini yedijithali entsha yadali ye-Chromebook</translation> <translation id="1270369111467284986">Iphothali yabathunjiweyo iyasolwa</translation> @@ -149,6 +151,7 @@ <translation id="2360257214555822463">Kutholakele <ph name="LINK_BEGIN" />izingxenye ezingafaneleki<ph name="LINK_END" />. Uma ukhetha ukuqinisekisa ukuthi lokhu kufakiwe, sicela wenze kanjalo manje.</translation> <translation id="2363636958541445404">Vula isakhi ukuze ukhethe okukhethwayo kwesigcini sesikrini</translation> <translation id="2364498172489649528">Kuphumelele</translation> +<translation id="236594517359128026">Ngaphambi kokuqhubeka, beka ikhompuyutha ephathekayo endaweni eyisicaba</translation> <translation id="2380886658946992094">Ezomthetho</translation> <translation id="2391082728065870591">Thumela Umbiko Wempendulo</translation> <translation id="2407209115954268704">Isimo Sokukhiya i-SIM</translation> @@ -267,6 +270,7 @@ <translation id="3820172043799983114">Iphinikhodi engavumelekile</translation> <translation id="3838338534323494292">Iphasiwedi entsha</translation> <translation id="385051799172605136">Emuva</translation> +<translation id="385832974417157471">Ngaphambi kokucisha, sebenzisa i-powerwash kudivayisi yakho. Uma idivayisi yakho inesivalo linda kuze kube yilapho i-powerwash isiqedile ngaphambi kokuvala isivalo. I-powerwash ingase ithathe umzuzu ngaphambi kokuthi iqede.</translation> <translation id="3858860766373142691">Igama</translation> <translation id="3865414814144988605">Isixazululo</translation> <translation id="387301095347517405">Inani lezikhathi ibhethri yakho ebe nomjikelezo wokushaja ogcwele ngayo</translation> @@ -456,6 +460,7 @@ <translation id="5507300744274596613">Qiniseka ukuthi i-Chrome OS isesikhathini</translation> <translation id="5519195206574732858">I-LTE</translation> <translation id="554517032089923082">I-GTC</translation> +<translation id="5548284010950733518">Lungisa izingxenye</translation> <translation id="5578477003638479617">I-UMTS</translation> <translation id="5578519639599103840">Phinda uskene</translation> <translation id="5583640892426849032">I-Backspace</translation> @@ -709,6 +714,7 @@ <translation id="8206859287963243715">Iselula</translation> <translation id="8208861521865154048">Izinzuzo</translation> <translation id="8217675307824400706">Xhumeka</translation> +<translation id="8221728673725659466">Ukulinganiswa kuqediwe</translation> <translation id="8226628635270268143">Khetha izithombe zakho eziyintandokazi kanye nama-albhamu</translation> <translation id="8230672074305416752">Yehlulekile ukuqhweba umasango wenethiwekhi yokuzenzakalelayo</translation> <translation id="8246209727385807362">Inkampani yenethiwekhi engaziwa</translation> @@ -720,6 +726,7 @@ <translation id="8297006494302853456">Buthakathaka</translation> <translation id="8302368968391049045">Uhlelo lokuvikela le-HTTPS</translation> <translation id="8318753676953949627">Azikho Izithombe</translation> +<translation id="8327249300223641918">Ngaphambi kokuqhubeka, beka yonke idivayisi yakho (isisekelo nesivalo) endaweni eyisicaba.</translation> <translation id="8336739000755212683">Shintsha isithombe se-akhawunti yedivayisi</translation> <translation id="8347227221149377169">Imisebenzi yokuphrinta</translation> <translation id="8352772353338965963">Engeza i-akhawunti ekungeneni ngemvume okuningi. Wonke ama-akhawunti angene ngemvume angafinyelelwa ngaphandle kwephasiwedi, ngakho-ke lesi sici kumele sisetshenziswe kuphela nama-akhawunti athenjiwe.</translation> @@ -734,6 +741,7 @@ <translation id="844521431886043384">I-DNS ayikasethwa</translation> <translation id="8456761643544401578">Imodi emnyama ngokuzenzekelayo</translation> <translation id="8461329675984532579">Igama lomhlinzeki wasekhaya</translation> +<translation id="8467104829907989997">Ilungisa izingxenye...</translation> <translation id="8475690821716466388">Inethiwekhi ye-WiFi ivikelwe ngephrothokholi ebuthakathaka ye-WEP PSK</translation> <translation id="8477551185774834963">Ukubambezeleka kwe-DNS kungaphezulu kancane komkhawulo ovumelekile</translation> <translation id="8483248364096924578">Ikheli lasesizindenise-inthanethi</translation> @@ -793,6 +801,7 @@ <translation id="8987565828374052507">{NUMBER_OF_PAGES,plural, =0{Skena}=1{Skena ikhasi elingu-{NUMBER_OF_PAGES}}one{Skena ikhasi elingu-{NUMBER_OF_PAGES}}other{Skena ikhasi elingu-{NUMBER_OF_PAGES}}}</translation> <translation id="8997710128084572139">Idivayisi inebhethri engu-<ph name="BATTERY_PERCENTAGE" />%.</translation> <translation id="9003704114456258138">Imvamisa</translation> +<translation id="9025198690966128418">Sebenzisa njengedivayisi yomuntu siqu</translation> <translation id="9039663905644212491">I-PEAP</translation> <translation id="9062831201344759865">Ukulungiswa kwe-DNS kunokubambezeleka okuphezulu</translation> <translation id="9073281213608662541">I-PAP</translation>
diff --git a/components/account_manager_core/account_manager_facade.h b/components/account_manager_core/account_manager_facade.h index 433bfd3..d164d51 100644 --- a/components/account_manager_core/account_manager_facade.h +++ b/components/account_manager_core/account_manager_facade.h
@@ -127,7 +127,8 @@ // Launches account reauthentication dialog for provided `email`. virtual void ShowReauthAccountDialog(AccountAdditionSource source, - const std::string& email) = 0; + const std::string& email, + base::OnceClosure callback) = 0; // Launches OS Settings > Accounts. virtual void ShowManageAccountsSettings() = 0;
diff --git a/components/account_manager_core/account_manager_facade_impl.cc b/components/account_manager_core/account_manager_facade_impl.cc index 257ca18..168c17b 100644 --- a/components/account_manager_core/account_manager_facade_impl.cc +++ b/components/account_manager_core/account_manager_facade_impl.cc
@@ -365,18 +365,21 @@ void AccountManagerFacadeImpl::ShowReauthAccountDialog( AccountAdditionSource source, - const std::string& email) { + const std::string& email, + base::OnceClosure callback) { if (!account_manager_remote_ || remote_version_ < RemoteMinVersions::kShowReauthAccountDialogMinVersion) { LOG(WARNING) << "Found remote at: " << remote_version_ << ", expected: " << RemoteMinVersions::kShowReauthAccountDialogMinVersion << " for ShowReauthAccountDialog."; + if (callback) + std::move(callback).Run(); return; } base::UmaHistogramEnumeration(kAccountAdditionSource, source); - account_manager_remote_->ShowReauthAccountDialog(email, base::DoNothing()); + account_manager_remote_->ShowReauthAccountDialog(email, std::move(callback)); } void AccountManagerFacadeImpl::ShowManageAccountsSettings() {
diff --git a/components/account_manager_core/account_manager_facade_impl.h b/components/account_manager_core/account_manager_facade_impl.h index 6fe4a04e..7e3851d 100644 --- a/components/account_manager_core/account_manager_facade_impl.h +++ b/components/account_manager_core/account_manager_facade_impl.h
@@ -62,7 +62,8 @@ base::OnceCallback<void(const account_manager::AccountAdditionResult& result)> callback) override; void ShowReauthAccountDialog(AccountAdditionSource source, - const std::string& email) override; + const std::string& email, + base::OnceClosure callback) override; void ShowManageAccountsSettings() override; std::unique_ptr<OAuth2AccessTokenFetcher> CreateAccessTokenFetcher( const AccountKey& account,
diff --git a/components/account_manager_core/account_manager_facade_impl_unittest.cc b/components/account_manager_core/account_manager_facade_impl_unittest.cc index 9683f5d3..47810c7 100644 --- a/components/account_manager_core/account_manager_facade_impl_unittest.cc +++ b/components/account_manager_core/account_manager_facade_impl_unittest.cc
@@ -555,7 +555,7 @@ account_manager_facade->ShowReauthAccountDialog( account_manager::AccountManagerFacade::AccountAdditionSource:: kSettingsAddAccountButton, - kTestAccountEmail); + kTestAccountEmail, base::OnceClosure()); account_manager_facade->FlushMojoForTesting(); EXPECT_EQ(1, account_manager().show_reauth_account_dialog_calls()); } @@ -566,7 +566,8 @@ CreateFacade(); auto source = AccountManagerFacade::AccountAdditionSource::kContentAreaReauth; - account_manager_facade->ShowReauthAccountDialog(source, kTestAccountEmail); + account_manager_facade->ShowReauthAccountDialog(source, kTestAccountEmail, + base::OnceClosure()); account_manager_facade->FlushMojoForTesting(); // Check that UMA stats were sent.
diff --git a/components/account_manager_core/mock_account_manager_facade.h b/components/account_manager_core/mock_account_manager_facade.h index 6e4c9704..66a3957 100644 --- a/components/account_manager_core/mock_account_manager_facade.h +++ b/components/account_manager_core/mock_account_manager_facade.h
@@ -51,7 +51,7 @@ (override)); MOCK_METHOD(void, ShowReauthAccountDialog, - (AccountAdditionSource, const std::string&), + (AccountAdditionSource, const std::string&, base::OnceClosure), (override)); MOCK_METHOD(void, ShowManageAccountsSettings, (), (override)); MOCK_METHOD(std::unique_ptr<OAuth2AccessTokenFetcher>,
diff --git a/components/autofill_assistant/android/internal/java/res/layout/autofill_assistant_payment_request_section_title.xml b/components/autofill_assistant/android/internal/java/res/layout/autofill_assistant_payment_request_section_title.xml index c3ed5d0..d7a8819 100644 --- a/components/autofill_assistant/android/internal/java/res/layout/autofill_assistant_payment_request_section_title.xml +++ b/components/autofill_assistant/android/internal/java/res/layout/autofill_assistant_payment_request_section_title.xml
@@ -25,11 +25,11 @@ android:layout_height="wrap_content" android:orientation="horizontal"> <org.chromium.ui.widget.ChromeImageView + android:id="@+id/section_title_add_button_icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="center_vertical" - android:src="@drawable/plus" - app:tint="@macro/default_icon_color_accent1"/> + android:src="@drawable/plus"/> <Space android:layout_width="8dp" android:layout_height="0dp"/> <TextView android:id="@+id/section_title_add_button_label" android:layout_width="wrap_content"
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantChoiceList.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantChoiceList.java index eae420b..6ee4ed9 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantChoiceList.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantChoiceList.java
@@ -20,6 +20,7 @@ import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import androidx.gridlayout.widget.GridLayout; import org.chromium.base.ApiCompatibilityUtils; @@ -49,6 +50,9 @@ * - The text for the `add' and `edit' buttons can be customized. */ public class AssistantChoiceList extends GridLayout { + public static final String ADD_BUTTON_TAG = "ADD_BUTTON"; + public static final String EDIT_BUTTON_TAG = "EDIT_BUTTON"; + /** * Represents a single choice with a radio button, customizable content and an edit button. */ @@ -340,6 +344,11 @@ mAddButtonListener = listener; } + /** + * Allows to change the visibility of the 'add' button. + * + * @param visible The flag. + */ public void setAddButtonVisible(boolean visible) { if (mAddButton != null) { mAddButton.setVisibility(visible ? View.VISIBLE : View.GONE); @@ -350,6 +359,29 @@ } /** + * Allows to enable / disable the UI. This changes the state of the radio and edit buttons on + * all elements. + * + * @param enabled The flag. + */ + public void setUiEnabled(boolean enabled) { + for (Item item : mItems) { + item.mCompoundButton.setEnabled(enabled); + if (item.mEditButton != null) { + item.mEditButton.setEnabled(enabled); + item.mEditButton.findViewWithTag(EDIT_BUTTON_TAG).setEnabled(enabled); + } + } + if (mAddButton != null) { + mAddButton.setEnabled(enabled); + mAddButton.findViewWithTag(ADD_BUTTON_TAG).setEnabled(enabled); + } + if (mAddButtonLabel != null) { + mAddButtonLabel.setEnabled(enabled); + } + } + + /** * Adds a view to the underlying gridlayout. * * This method is used internally to add a view to the actual layout. A single call to |addView| @@ -369,6 +401,9 @@ private View createAddButtonIcon() { ChromeImageView addButtonIcon = new ChromeImageView(getContext()); addButtonIcon.setImageResource(R.drawable.ic_autofill_assistant_add_circle_24dp); + ApiCompatibilityUtils.setImageTintList(addButtonIcon, + ContextCompat.getColorStateList(getContext(), R.color.blue_when_enabled_list)); + addButtonIcon.setTag(ADD_BUTTON_TAG); LinearLayout container = new LinearLayout(getContext()); container.setGravity(Gravity.CENTER); container.setPadding(0, 0, mColumnSpacing, 0); @@ -432,6 +467,7 @@ getContext(), editButtonDrawable, R.color.default_icon_color_tint_list)); editButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE); editButton.setLayoutParams(new ViewGroup.LayoutParams(editButtonSize, editButtonSize)); + editButton.setTag(EDIT_BUTTON_TAG); LinearLayout editButtonLayout = createMinimumTouchSizeContainer(); editButtonLayout.setTag(AssistantTagsForTesting.CHOICE_LIST_EDIT_ICON);
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataBinder.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataBinder.java index 99ba7d9..59180cf 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataBinder.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataBinder.java
@@ -114,6 +114,7 @@ handled = updateSectionTitles(model, propertyKey, view) || handled; handled = updateSectionContents(model, propertyKey, view) || handled; handled = updateSectionSelectedItem(model, propertyKey, view) || handled; + handled = updateUiState(model, propertyKey, view) || handled; // Update section visibility/padding *after* updating editors and content. handled = updateVisibilityAndPaddings(model, propertyKey, view) || handled; @@ -450,6 +451,20 @@ return false; } + private boolean updateUiState( + AssistantCollectUserDataModel model, PropertyKey propertyKey, ViewHolder view) { + if (propertyKey == AssistantCollectUserDataModel.ENABLE_UI_INTERACTIONS) { + boolean enabled = model.get(AssistantCollectUserDataModel.ENABLE_UI_INTERACTIONS); + view.mContactDetailsSection.setEnabled(enabled); + view.mPhoneNumberSection.setEnabled(enabled); + view.mShippingAddressSection.setEnabled(enabled); + view.mPaymentMethodSection.setEnabled(enabled); + view.mLoginSection.setEnabled(enabled); + return true; + } + return false; + } + private boolean updateVisibilityAndPaddings( AssistantCollectUserDataModel model, PropertyKey propertyKey, ViewHolder view) { updateSectionVisibility(model, view);
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataModel.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataModel.java index 9760df8..c5d91e04 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataModel.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataModel.java
@@ -205,6 +205,9 @@ public static final WritableObjectPropertyKey<String> DATA_ORIGIN_DIALOG_BUTTON_TEXT = new WritableObjectPropertyKey<>(); + public static final WritableBooleanPropertyKey ENABLE_UI_INTERACTIONS = + new WritableBooleanPropertyKey(); + public AssistantCollectUserDataModel() { super(DELEGATE, WEB_CONTENTS, VISIBLE, SELECTED_SHIPPING_ADDRESS, SELECTED_PAYMENT_INSTRUMENT, SELECTED_CONTACT_DETAILS, SELECTED_PHONE_NUMBER, @@ -222,7 +225,7 @@ SHOULD_STORE_USER_DATA_CHANGES, USE_GMS_CORE_EDIT_DIALOGS, ACCOUNT_EMAIL, ADD_PAYMENT_INSTRUMENT_ACTION_TOKEN, INITIALIZE_ADDRESS_COLLECTION_PARAMS, DATA_ORIGIN_LINK_TEXT, DATA_ORIGIN_DIALOG_TITLE, DATA_ORIGIN_DIALOG_TEXT, - DATA_ORIGIN_DIALOG_BUTTON_TEXT); + DATA_ORIGIN_DIALOG_BUTTON_TEXT, ENABLE_UI_INTERACTIONS); /* * Set initial state for basic type properties (others are implicitly null). @@ -251,6 +254,7 @@ set(DATA_ORIGIN_DIALOG_TITLE, ""); set(DATA_ORIGIN_DIALOG_TEXT, ""); set(DATA_ORIGIN_DIALOG_BUTTON_TEXT, ""); + set(ENABLE_UI_INTERACTIONS, true); } @CalledByNative @@ -641,4 +645,9 @@ private void setInitializeAddressCollectionParams(byte[] params) { set(INITIALIZE_ADDRESS_COLLECTION_PARAMS, params); } + + @CalledByNative + private void setEnableUiInteractions(boolean enable) { + set(ENABLE_UI_INTERACTIONS, enable); + } }
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataSection.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataSection.java index 043e445..7b2cbf1 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataSection.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantCollectUserDataSection.java
@@ -8,12 +8,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; import org.chromium.components.autofill_assistant.AssistantEditor; import org.chromium.components.autofill_assistant.AssistantOptionModel; @@ -46,6 +49,7 @@ } } + protected final Context mContext; private final @Nullable View mTitleAddButton; private final AssistantVerticalExpander mSectionExpander; private final AssistantChoiceList mItemsView; @@ -54,16 +58,15 @@ private final int mTitleToContentPadding; private final List<Item> mItems; - protected final Context mContext; - protected T mSelectedOption; - + private boolean mUiEnabled = true; private boolean mIgnoreItemSelectedNotifications; private boolean mIgnoreItemChangeNotification; + private boolean mRequestReloadOnChange; private @Nullable Delegate<T> mDelegate; private int mTopPadding; private int mBottomPadding; - private boolean mRequestReloadOnChange; + protected T mSelectedOption; /** * @@ -119,13 +122,17 @@ TextView titleAddButtonLabelView = mSectionExpander.findViewById(R.id.section_title_add_button_label); titleAddButtonLabelView.setText(titleAddButton); + ImageView titleAddButtonIconView = + mSectionExpander.findViewById(R.id.section_title_add_button_icon); + ApiCompatibilityUtils.setImageTintList(titleAddButtonIconView, + ContextCompat.getColorStateList(mContext, R.color.blue_when_enabled_list)); mTitleAddButton.setOnClickListener(unusedView -> createOrEditItem(null)); } parent.addView(mSectionExpander, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - updateVisibility(); + updateUi(); } View getView() { @@ -170,7 +177,7 @@ initiallySelectedItem = item; } } - updateVisibility(); + updateUi(); if (initiallySelectedItem != null) { selectItem(initiallySelectedItem, false, AssistantUserDataEventType.NO_NOTIFICATION); @@ -335,7 +342,7 @@ -> createOrEditItem(item.mOption), /* editButtonDrawable= */ editButtonDrawable, /* editButtonContentDescription= */ editButtonContentDescription); - updateVisibility(); + updateUi(); } private void selectItem(Item item, boolean notify, @AssistantUserDataEventType int eventType) { @@ -344,7 +351,7 @@ mItemsView.setCheckedItem(item.mFullView); mIgnoreItemSelectedNotifications = false; updateSummaryView(mSummaryView, item.mOption); - updateVisibility(); + updateUi(); if (notify) { notifyDataChanged(item.mOption, eventType); @@ -442,14 +449,25 @@ } /** - * Update the visibility if something changed. + * Enable or disable UI interactions. + * @param enabled The flag to disable the interactions. */ - protected void updateVisibility() { + protected void setEnabled(boolean enabled) { + mUiEnabled = enabled; + updateUi(); + } + + /** + * Update the UI if something changed. + */ + protected void updateUi() { boolean hasEditor = getEditor() != null; if (mTitleAddButton != null) { mTitleAddButton.setVisibility(isEmpty() && hasEditor ? View.VISIBLE : View.GONE); + setTitleAddButtonEnabled(mUiEnabled); } mItemsView.setAddButtonVisible(/* visible= */ hasEditor); + mItemsView.setUiEnabled(mUiEnabled); mSectionExpander.setFixed(isEmpty()); mSectionExpander.setCollapsedVisible(!isEmpty()); mSectionExpander.setExpandedVisible(!isEmpty()); @@ -467,4 +485,11 @@ private boolean canBeVisible() { return !isEmpty() || getEditor() != null; } + + private void setTitleAddButtonEnabled(boolean enabled) { + assert mTitleAddButton != null; + mTitleAddButton.setEnabled(enabled); + mTitleAddButton.findViewById(R.id.section_title_add_button_icon).setEnabled(enabled); + mTitleAddButton.findViewById(R.id.section_title_add_button_label).setEnabled(enabled); + } }
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantContactDetailsSection.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantContactDetailsSection.java index 181f152..3ff19a9 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantContactDetailsSection.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantContactDetailsSection.java
@@ -48,7 +48,7 @@ public void setEditor(@Nullable AssistantContactEditor editor) { mEditor = editor; - updateVisibility(); + updateUi(); if (mEditor == null) { return; }
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPaymentMethodSection.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPaymentMethodSection.java index e1244185..11571e5 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPaymentMethodSection.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPaymentMethodSection.java
@@ -52,7 +52,7 @@ public void setEditor(@Nullable AssistantPaymentInstrumentEditor editor) { mEditor = editor; - updateVisibility(); + updateUi(); if (mEditor == null) { return; }
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPhoneNumberSection.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPhoneNumberSection.java index f312063..1167dd2 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPhoneNumberSection.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantPhoneNumberSection.java
@@ -43,7 +43,7 @@ public void setEditor(@Nullable AssistantEditor<ContactModel> editor) { mEditor = editor; - updateVisibility(); + updateUi(); } @Override
diff --git a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantShippingAddressSection.java b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantShippingAddressSection.java index 6a86f3b..e7d136f 100644 --- a/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantShippingAddressSection.java +++ b/components/autofill_assistant/android/java/src/org/chromium/components/autofill_assistant/user_data/AssistantShippingAddressSection.java
@@ -43,7 +43,7 @@ public void setEditor(AssistantEditor<AddressModel> editor) { mEditor = editor; - updateVisibility(); + updateUi(); } @Override
diff --git a/components/autofill_assistant/browser/BUILD.gn b/components/autofill_assistant/browser/BUILD.gn index fc14474c..c833fb4 100644 --- a/components/autofill_assistant/browser/BUILD.gn +++ b/components/autofill_assistant/browser/BUILD.gn
@@ -464,7 +464,6 @@ "actions/edit_password_action_unittest.cc", "actions/execute_js_action_unittest.cc", "actions/expect_navigation_action_unittest.cc", - "actions/external_action_unittest.cc", "actions/fallback_handler/required_field_unittest.cc", "actions/fallback_handler/required_fields_fallback_handler_unittest.cc", "actions/generate_password_for_form_field_action_unittest.cc",
diff --git a/components/autofill_assistant/browser/actions/external_action.cc b/components/autofill_assistant/browser/actions/external_action.cc index 5faa6c9..40e6d82ad 100644 --- a/components/autofill_assistant/browser/actions/external_action.cc +++ b/components/autofill_assistant/browser/actions/external_action.cc
@@ -19,26 +19,13 @@ void ExternalAction::InternalProcessAction(ProcessActionCallback callback) { callback_ = std::move(callback); if (!delegate_->SupportsExternalActions()) { - VLOG(1) << "External action are not supported for this run."; EndAction(ClientStatus(INVALID_ACTION)); } + auto external_action = proto_.external_action(); - if (!external_action.has_info()) { - VLOG(1) << "The ExternalAction's |info| is missing."; - EndAction(ClientStatus(INVALID_ACTION)); - } - SendActionInfo(); - - // We start checking for interrupts after we sent the action info to make sure - // the external caller gets the notifications in the right order. The action - // info should always be sent before the notification that an interrupt has - // interrupted the action. - // - // The SendActionInfo call can end the action, so we check that |callback| is - // still valid before starting to wait for DOM. - if (callback_ && external_action.allow_interrupt()) { + if (external_action.allow_interrupt()) { delegate_->WaitForDom( /* max_wait_time= */ base::TimeDelta::Max(), /* allow_observer_mode = */ false, external_action.allow_interrupt(), @@ -60,7 +47,6 @@ return; } - // TODO(b/201964908): add client status type for external failures. EndAction(result.success ? ClientStatus(ACTION_APPLIED) : ClientStatus(UNKNOWN_ACTION_STATUS)); }
diff --git a/components/autofill_assistant/browser/actions/external_action_unittest.cc b/components/autofill_assistant/browser/actions/external_action_unittest.cc deleted file mode 100644 index 56722c8..0000000 --- a/components/autofill_assistant/browser/actions/external_action_unittest.cc +++ /dev/null
@@ -1,128 +0,0 @@ -// Copyright 2022 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/autofill_assistant/browser/actions/external_action.h" - -#include "base/test/gmock_callback_support.h" -#include "base/test/mock_callback.h" -#include "components/autofill_assistant/browser/actions/mock_action_delegate.h" -#include "components/autofill_assistant/browser/service.pb.h" -#include "testing/gmock/include/gmock/gmock.h" - -namespace autofill_assistant { -namespace { - -using ::base::test::RunOnceCallback; -using ::testing::_; -using ::testing::Property; -using ::testing::Return; - -class ExternalActionTest : public testing::Test { - protected: - void Run() { - ON_CALL(mock_action_delegate_, SupportsExternalActions) - .WillByDefault(Return(true)); - - CreateAction().ProcessAction(callback_.Get()); - } - - ExternalAction CreateAction() { - ActionProto action_proto; - *action_proto.mutable_external_action() = proto_; - return ExternalAction(&mock_action_delegate_, action_proto); - } - - MockActionDelegate mock_action_delegate_; - base::MockCallback<Action::ProcessActionCallback> callback_; - ExternalActionProto proto_; -}; - -TEST_F(ExternalActionTest, Success) { - proto_.mutable_info(); - EXPECT_CALL(mock_action_delegate_, RequestExternalAction) - .WillOnce( - RunOnceCallback<1>(ExternalActionDelegate::ActionResult({true}))); - - EXPECT_CALL( - callback_, - Run(Pointee(Property(&ProcessedActionProto::status, ACTION_APPLIED)))); - Run(); -} - -TEST_F(ExternalActionTest, ExternalFailure) { - proto_.mutable_info(); - EXPECT_CALL(mock_action_delegate_, RequestExternalAction) - .WillOnce( - RunOnceCallback<1>(ExternalActionDelegate::ActionResult({false}))); - EXPECT_CALL(callback_, Run(Pointee(Property(&ProcessedActionProto::status, - UNKNOWN_ACTION_STATUS)))); - Run(); -} - -TEST_F(ExternalActionTest, RequiresInfo) { - EXPECT_CALL( - callback_, - Run(Pointee(Property(&ProcessedActionProto::status, INVALID_ACTION)))); - Run(); -} - -TEST_F(ExternalActionTest, Unsupported) { - proto_.mutable_info(); - EXPECT_CALL(mock_action_delegate_, SupportsExternalActions()) - .WillOnce(Return(false)); - EXPECT_CALL( - callback_, - Run(Pointee(Property(&ProcessedActionProto::status, INVALID_ACTION)))); - Run(); -} - -TEST_F(ExternalActionTest, AllowsInterrupts) { - proto_.mutable_info(); - proto_.set_allow_interrupt(true); - base::OnceCallback<void(ExternalActionDelegate::ActionResult result)> - external_action_callback; - - EXPECT_CALL(mock_action_delegate_, SupportsExternalActions) - .WillOnce(Return(true)); - EXPECT_CALL(mock_action_delegate_, RequestExternalAction) - .WillOnce( - [&external_action_callback]( - const ExternalActionProto& external_action, - base::OnceCallback<void( - ExternalActionDelegate::ActionResult result)> callback) { - // We save the callback and call it later to simulate the external - // action not finishing right away (e.g. it's waiting for user input - // or a DOM condition). - external_action_callback = std::move(callback); - }); - EXPECT_CALL(mock_action_delegate_, WaitForDom); - - // Explicitly creating the action here instead of calling |Run| to have it - // survive long enough for the callback to be called. - ExternalAction action = CreateAction(); - action.ProcessAction(callback_.Get()); - - EXPECT_CALL( - callback_, - Run(Pointee(Property(&ProcessedActionProto::status, ACTION_APPLIED)))); - std::move(external_action_callback).Run({true}); -} - -TEST_F(ExternalActionTest, - DoesNotWaitForDomIfExternalActionReturnsImmediately) { - proto_.mutable_info(); - proto_.set_allow_interrupt(true); - EXPECT_CALL(mock_action_delegate_, RequestExternalAction) - .WillOnce( - RunOnceCallback<1>(ExternalActionDelegate::ActionResult({true}))); - EXPECT_CALL(mock_action_delegate_, WaitForDom).Times(0); - - EXPECT_CALL( - callback_, - Run(Pointee(Property(&ProcessedActionProto::status, ACTION_APPLIED)))); - Run(); -} - -} // namespace -} // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/js_flow_action_unittest.cc b/components/autofill_assistant/browser/actions/js_flow_action_unittest.cc index a39302e5..0811cf9 100644 --- a/components/autofill_assistant/browser/actions/js_flow_action_unittest.cc +++ b/components/autofill_assistant/browser/actions/js_flow_action_unittest.cc
@@ -363,4 +363,48 @@ action->ProcessAction(callback_.Get()); } +TEST_F(JsFlowActionTest, NativeActionReturnsAutofillErrorInfo) { + auto mock_js_flow_executor = std::make_unique<MockJsFlowExecutor>(); + auto* mock_js_flow_executor_ptr = mock_js_flow_executor.get(); + auto action = CreateAction(std::move(mock_js_flow_executor)); + + EXPECT_CALL(*mock_js_flow_executor_ptr, Start) + .WillOnce(WithArg<1>([&](auto finished_callback) { + ActionProto native_action; + native_action.mutable_wait_for_dom()->mutable_wait_condition(); + + action->RunNativeAction( + /* action_id = */ static_cast<int>( + native_action.action_info_case()), + /* action = */ + native_action.wait_for_dom().SerializeAsString(), + native_action_callback_.Get()); + + std::move(finished_callback).Run(ClientStatus(ACTION_APPLIED), nullptr); + })); + + AutofillErrorInfoProto autofill_error_info; + autofill_error_info.set_client_memory_address_key_names("key_names"); + std::string autofill_error_info_base64; + base::Base64Encode(autofill_error_info.SerializeAsString(), + &autofill_error_info_base64); + + EXPECT_CALL(mock_action_delegate_, WaitForDomWithSlowWarning) + .WillOnce(WithArg<4>([&](auto dom_finished_callback) { + *GetInnerProcessedAction(*action) + ->mutable_status_details() + ->mutable_autofill_error_info() = autofill_error_info; + std::move(dom_finished_callback) + .Run(ClientStatus(ACTION_APPLIED), base::Seconds(0)); + })); + + EXPECT_CALL(native_action_callback_, Run(_, Pointee(IsJson(R"( + { + "navigationStarted": false, + "autofillErrorInfo": ")" + autofill_error_info_base64 + + "\"}")))); + + action->ProcessAction(callback_.Get()); +} + } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/android/ui_controller_android.cc b/components/autofill_assistant/browser/android/ui_controller_android.cc index 3c44790..5a6d472 100644 --- a/components/autofill_assistant/browser/android/ui_controller_android.cc +++ b/components/autofill_assistant/browser/android/ui_controller_android.cc
@@ -643,6 +643,7 @@ OnDetailsChanged(ui_delegate_->GetDetails()); OnUserActionsChanged(ui_delegate_->GetUserActions()); OnCollectUserDataOptionsChanged(ui_delegate_->GetCollectUserDataOptions()); + OnCollectUserDataUiStateChanged(/* enabled= */ true); OnUserDataChanged(*execution_delegate_->GetUserData(), UserDataFieldChange::ALL); OnPersistentGenericUserInterfaceChanged( @@ -1324,6 +1325,11 @@ Java_AssistantCollectUserDataModel_setVisible(env, jmodel, true); } +void UiControllerAndroid::OnCollectUserDataUiStateChanged(bool enabled) { + Java_AssistantCollectUserDataModel_setEnableUiInteractions( + AttachCurrentThread(), GetCollectUserDataModel(), enabled); +} + void UiControllerAndroid::OnUserDataChanged(const UserData& user_data, UserDataFieldChange field_change) { DCHECK(execution_delegate_ != nullptr);
diff --git a/components/autofill_assistant/browser/android/ui_controller_android.h b/components/autofill_assistant/browser/android/ui_controller_android.h index 4ab6175..736875f 100644 --- a/components/autofill_assistant/browser/android/ui_controller_android.h +++ b/components/autofill_assistant/browser/android/ui_controller_android.h
@@ -126,6 +126,7 @@ void OnUserActionsChanged(const std::vector<UserAction>& actions) override; void OnCollectUserDataOptionsChanged( const CollectUserDataOptions* collect_user_data_options) override; + void OnCollectUserDataUiStateChanged(bool enabled) override; void OnDetailsChanged(const std::vector<Details>& details) override; void OnInfoBoxChanged(const InfoBox* info_box) override; void OnProgressActiveStepChanged(int active_step) override;
diff --git a/components/autofill_assistant/browser/fake_script_executor_ui_delegate.cc b/components/autofill_assistant/browser/fake_script_executor_ui_delegate.cc index 015b60e..6c3eeca4 100644 --- a/components/autofill_assistant/browser/fake_script_executor_ui_delegate.cc +++ b/components/autofill_assistant/browser/fake_script_executor_ui_delegate.cc
@@ -92,17 +92,21 @@ void FakeScriptExecutorUiDelegate::SetCollectUserDataOptions( CollectUserDataOptions* options) { - payment_request_options_ = options; + collect_user_data_options_ = options; +} + +void FakeScriptExecutorUiDelegate::SetCollectUserDataUiState(bool enabled) { + collect_user_data_ui_enabled_ = enabled; } void FakeScriptExecutorUiDelegate::SetLastSuccessfulUserDataOptions( std::unique_ptr<CollectUserDataOptions> collect_user_data_options) { - last_payment_request_options_ = std::move(collect_user_data_options); + last_collect_user_data_options_ = std::move(collect_user_data_options); } const CollectUserDataOptions* FakeScriptExecutorUiDelegate::GetLastSuccessfulUserDataOptions() const { - return last_payment_request_options_.get(); + return last_collect_user_data_options_.get(); } void FakeScriptExecutorUiDelegate::SetPeekMode( @@ -159,14 +163,12 @@ bool show_feedback_chip) {} bool FakeScriptExecutorUiDelegate::SupportsExternalActions() { - return true; + return false; } void FakeScriptExecutorUiDelegate::ExecuteExternalAction( const external::Action& external_action, base::OnceCallback<void(ExternalActionDelegate::ActionResult result)> - callback) { - std::move(callback).Run({true}); -} + callback) {} } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/fake_script_executor_ui_delegate.h b/components/autofill_assistant/browser/fake_script_executor_ui_delegate.h index 078244d1..34ca64a 100644 --- a/components/autofill_assistant/browser/fake_script_executor_ui_delegate.h +++ b/components/autofill_assistant/browser/fake_script_executor_ui_delegate.h
@@ -52,6 +52,7 @@ void SetUserActions( std::unique_ptr<std::vector<UserAction>> user_actions) override; void SetCollectUserDataOptions(CollectUserDataOptions* options) override; + void SetCollectUserDataUiState(bool enabled) override; void SetLastSuccessfulUserDataOptions(std::unique_ptr<CollectUserDataOptions> collect_user_data_options) override; const CollectUserDataOptions* GetLastSuccessfulUserDataOptions() @@ -93,7 +94,9 @@ std::vector<UserAction>* GetUserActions() { return user_actions_.get(); } - CollectUserDataOptions* GetOptions() { return payment_request_options_; } + CollectUserDataOptions* GetOptions() { return collect_user_data_options_; } + + bool GetCollectUserDataUiEnabled() { return collect_user_data_ui_enabled_; } private: std::string status_message_; @@ -102,8 +105,9 @@ std::vector<Details> details_; std::unique_ptr<InfoBox> info_box_; std::unique_ptr<std::vector<UserAction>> user_actions_; - std::unique_ptr<CollectUserDataOptions> last_payment_request_options_; - raw_ptr<CollectUserDataOptions> payment_request_options_; + std::unique_ptr<CollectUserDataOptions> last_collect_user_data_options_; + raw_ptr<CollectUserDataOptions> collect_user_data_options_; + bool collect_user_data_ui_enabled_ = true; std::unique_ptr<UserData> payment_request_info_; ConfigureBottomSheetProto::PeekMode peek_mode_ = ConfigureBottomSheetProto::HANDLE;
diff --git a/components/autofill_assistant/browser/headless/headless_ui_controller.cc b/components/autofill_assistant/browser/headless/headless_ui_controller.cc index 22ab1c7..09bd702 100644 --- a/components/autofill_assistant/browser/headless/headless_ui_controller.cc +++ b/components/autofill_assistant/browser/headless/headless_ui_controller.cc
@@ -136,6 +136,9 @@ CollectUserDataOptions* options) { VLOG(2) << "Unexpected UI method called: " << __func__; } +void HeadlessUiController::SetCollectUserDataUiState(bool enabled) { + VLOG(2) << "Unexpected UI method called: " << __func__; +} void HeadlessUiController::SetLastSuccessfulUserDataOptions( std::unique_ptr<CollectUserDataOptions> collect_user_data_options) { VLOG(2) << "Unexpected UI method called: " << __func__;
diff --git a/components/autofill_assistant/browser/headless/headless_ui_controller.h b/components/autofill_assistant/browser/headless/headless_ui_controller.h index d011c36b..97f0909 100644 --- a/components/autofill_assistant/browser/headless/headless_ui_controller.h +++ b/components/autofill_assistant/browser/headless/headless_ui_controller.h
@@ -71,6 +71,7 @@ void SetExpandSheetForPromptAction(bool expand) override; void SetCollectUserDataOptions(CollectUserDataOptions* options) override; + void SetCollectUserDataUiState(bool enabled) override; void SetLastSuccessfulUserDataOptions(std::unique_ptr<CollectUserDataOptions> collect_user_data_options) override; const CollectUserDataOptions* GetLastSuccessfulUserDataOptions()
diff --git a/components/autofill_assistant/browser/js_flow_util.cc b/components/autofill_assistant/browser/js_flow_util.cc index ee0a5ec..e99d986a 100644 --- a/components/autofill_assistant/browser/js_flow_util.cc +++ b/components/autofill_assistant/browser/js_flow_util.cc
@@ -28,6 +28,10 @@ // by runNativeAction(). // DO NOT CHANGE const char kNavigationStartedKey[] = "navigationStarted"; +// The key for the autofill error info in the result object returned by +// runNativeAction(). +// DO NOT CHANGE +const char kAutofillErrorInfo[] = "autofillErrorInfo"; // Returns true for remote object types that flows are allowed to return. This // is mostly used to filter types like FUNCTION which would otherwise slip @@ -165,6 +169,12 @@ namespace { +std::string SerializeToBase64(const google::protobuf::MessageLite* proto) { + std::string serialized_result_base64; + base::Base64Encode(proto->SerializeAsString(), &serialized_result_base64); + return serialized_result_base64; +} + absl::optional<std::string> SerializeActionResult( const ProcessedActionProto& processed_action) { const google::protobuf::MessageLite* proto; @@ -209,9 +219,7 @@ return absl::nullopt; } - std::string serialized_result_base64; - base::Base64Encode(proto->SerializeAsString(), &serialized_result_base64); - return serialized_result_base64; + return SerializeToBase64(proto); } } // namespace @@ -228,6 +236,13 @@ result_value.Set(kActionSpecificResultKey, *serialized_result); } + if (processed_action.status_details().has_autofill_error_info()) { + result_value.Set( + kAutofillErrorInfo, + SerializeToBase64( + &processed_action.status_details().autofill_error_info())); + } + return std::make_unique<base::Value>(std::move(result_value)); }
diff --git a/components/autofill_assistant/browser/js_flow_util_unittest.cc b/components/autofill_assistant/browser/js_flow_util_unittest.cc index 2ab42294..b7e7850 100644 --- a/components/autofill_assistant/browser/js_flow_util_unittest.cc +++ b/components/autofill_assistant/browser/js_flow_util_unittest.cc
@@ -250,6 +250,23 @@ "actionSpecificResult": ")" + wait_for_dom_result_base64 + "\"}"))); } +TEST(JsFlowUtilTest, NativeActionResultToResultValueHasAutofillErrorInfo) { + ProcessedActionProto processed_action; + AutofillErrorInfoProto* autofill_error_info = + processed_action.mutable_status_details()->mutable_autofill_error_info(); + autofill_error_info->set_client_memory_address_key_names("key_names"); + + std::string autofill_error_info_base64; + base::Base64Encode(autofill_error_info->SerializeAsString(), + &autofill_error_info_base64); + + EXPECT_THAT( + NativeActionResultToResultValue(processed_action), Pointee(IsJson(R"( + { + "navigationStarted": false, + "autofillErrorInfo": ")" + autofill_error_info_base64 + "\"}"))); +} + TEST(JsFlowUtilTest, NativeActionResultToResultValueHasEmptyActionResult) { ProcessedActionProto processed_action;
diff --git a/components/autofill_assistant/browser/mock_ui_controller_observer.h b/components/autofill_assistant/browser/mock_ui_controller_observer.h index e1f59d5..2c8b3028b 100644 --- a/components/autofill_assistant/browser/mock_ui_controller_observer.h +++ b/components/autofill_assistant/browser/mock_ui_controller_observer.h
@@ -30,6 +30,7 @@ void(const std::vector<UserAction>& user_actions)); MOCK_METHOD1(OnCollectUserDataOptionsChanged, void(const CollectUserDataOptions* options)); + MOCK_METHOD1(OnCollectUserDataUiStateChanged, void(bool enabled)); MOCK_METHOD1(OnDetailsChanged, void(const std::vector<Details>& details)); MOCK_METHOD1(OnInfoBoxChanged, void(const InfoBox* info_box)); MOCK_METHOD1(OnProgressChanged, void(int progress));
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc index 0acb37d..4368582d 100644 --- a/components/autofill_assistant/browser/script_executor.cc +++ b/components/autofill_assistant/browser/script_executor.cc
@@ -341,6 +341,7 @@ weak_ptr_factory_.GetWeakPtr(), std::move(collect_user_data_options->terms_link_callback)); ui_delegate_->SetCollectUserDataOptions(collect_user_data_options); + ui_delegate_->SetCollectUserDataUiState(/* enabled= */ true); delegate_->EnterState(AutofillAssistantState::PROMPT); } @@ -1084,6 +1085,7 @@ DCHECK(service); delegate_->EnterState(AutofillAssistantState::RUNNING); + ui_delegate_->SetCollectUserDataUiState(/* enabled= */ false); service->GetUserData( options, run_id_, user_data_, base::BindOnce(&ScriptExecutor::OnRequestUserData,
diff --git a/components/autofill_assistant/browser/script_executor_ui_delegate.h b/components/autofill_assistant/browser/script_executor_ui_delegate.h index eacbe64..d8b8e5f 100644 --- a/components/autofill_assistant/browser/script_executor_ui_delegate.h +++ b/components/autofill_assistant/browser/script_executor_ui_delegate.h
@@ -43,6 +43,7 @@ virtual void ClearInfoBox() = 0; virtual void SetCollectUserDataOptions( CollectUserDataOptions* collect_user_data_options) = 0; + virtual void SetCollectUserDataUiState(bool enabled) = 0; virtual void SetLastSuccessfulUserDataOptions( std::unique_ptr<CollectUserDataOptions> collect_user_data_options) = 0; virtual const CollectUserDataOptions* GetLastSuccessfulUserDataOptions()
diff --git a/components/autofill_assistant/browser/script_executor_unittest.cc b/components/autofill_assistant/browser/script_executor_unittest.cc index 952503b..82e97cea 100644 --- a/components/autofill_assistant/browser/script_executor_unittest.cc +++ b/components/autofill_assistant/browser/script_executor_unittest.cc
@@ -214,7 +214,7 @@ {{"additional_param", "additional_param_value"}, {"param", "value"}}))); - std::move(callback).Run(net::HTTP_OK, /* response= */ "", + std::move(callback).Run(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}); }); @@ -235,7 +235,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), @@ -269,7 +269,7 @@ ServiceRequestSender::ResponseInfo{}))) .WillOnce( DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -307,7 +307,7 @@ Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(next_actions_response), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -342,7 +342,7 @@ Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(next_actions_response), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -379,7 +379,7 @@ Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(next_actions_response), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -415,7 +415,7 @@ Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(next_actions_response), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -450,7 +450,7 @@ Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(initial_actions_response), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -478,7 +478,7 @@ ServiceRequestSender::ResponseInfo{})) .WillOnce( DoAll(Delay(&task_environment_, 600), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -532,7 +532,7 @@ .WillOnce(DoAll(Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(tell3), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -684,7 +684,7 @@ .WillOnce(DoAll(Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(tell3), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -745,7 +745,7 @@ .WillOnce(DoAll(Delay(&task_environment_, 600), RunOnceCallback<6>(net::HTTP_OK, Serialize(tell3), ServiceRequestSender::ResponseInfo{}))) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -771,7 +771,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -790,7 +790,7 @@ ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), @@ -812,7 +812,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), @@ -848,7 +848,7 @@ // response. .WillOnce( DoAll(SaveArg<3>(&third_response_processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(AllOf(Field(&ScriptExecutor::Result::success, true), @@ -891,7 +891,7 @@ ServiceRequestSender::ResponseInfo{}))) .WillOnce( DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -922,7 +922,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // executor_callback_.Run() not expected to be run just yet, as the action is @@ -949,7 +949,7 @@ .WillOnce(RunOnceCallback<5>(net::HTTP_OK, Serialize(actions_response), ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -972,7 +972,7 @@ .WillOnce(RunOnceCallback<5>(net::HTTP_OK, Serialize(actions_response), ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, Run(Field(&ScriptExecutor::Result::success, true))); @@ -1064,7 +1064,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // First check does not find the element, wait for dom waits 1s, then the @@ -1097,11 +1097,11 @@ std::vector<ProcessedActionProto> processed_actions2_capture; EXPECT_CALL(mock_service_, GetNextActions) .WillOnce(DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))) .WillOnce( DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, @@ -1134,15 +1134,15 @@ testing::InSequence seq; EXPECT_CALL(mock_service_, GetNextActions(_, _, "payload for interrupt1", _, _, _, _)) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions(_, _, "payload for interrupt2", _, _, _, _)) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions(_, _, "main script payload", _, _, _, _)) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); } @@ -1176,7 +1176,7 @@ // All scripts succeed with no more actions. EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1263,7 +1263,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, @@ -1297,7 +1297,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, @@ -1356,7 +1356,7 @@ // action. EXPECT_CALL(mock_service_, GetNextActions) .Times(2) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1372,7 +1372,7 @@ ActionsResponseProto interrupt_actions; InitInterruptActions(&interrupt_actions, "interrupt"); ElementAreaProto interrupt_area = - MakeElementAreaProto(/* id= */ "interrupt_area"); + MakeElementAreaProto(/* id = */ "interrupt_area"); *interrupt_actions.add_actions() ->mutable_set_touchable_area() ->mutable_element_area() = interrupt_area; @@ -1391,7 +1391,7 @@ // between PROMPT and RUNNING states. ActionsResponseProto interruptible; ElementAreaProto interruptible_area = - MakeElementAreaProto(/* id= */ "interruptible_area"); + MakeElementAreaProto(/* id = */ "interruptible_area"); *interruptible.add_actions() ->mutable_set_touchable_area() ->mutable_element_area() = interruptible_area; @@ -1420,7 +1420,7 @@ })); EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1534,7 +1534,7 @@ })); EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1576,7 +1576,7 @@ .WillOnce(RunOnceCallback<6>(net::HTTP_OK, Serialize(next_actions_response), ServiceRequestSender::ResponseInfo{})) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1609,7 +1609,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce(RunOnceCallback<6>(net::HTTP_OK, Serialize(actions_response), ServiceRequestSender::ResponseInfo{})) - .WillOnce(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillOnce(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1649,7 +1649,7 @@ .Times(3) .WillOnce(RunOnceCallback<6>(net::HTTP_OK, Serialize(interrupt_actions), ServiceRequestSender::ResponseInfo{})) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1684,7 +1684,7 @@ ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1708,7 +1708,7 @@ ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{})); EXPECT_CALL(executor_callback_, @@ -1740,7 +1740,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // First check does not find the element, wait for dom waits 1s. @@ -1784,7 +1784,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // Navigation starts before WaitForDom starts. WaitForDom does not wait and @@ -1824,11 +1824,11 @@ std::vector<ProcessedActionProto> processed_actions2_capture; EXPECT_CALL(mock_service_, GetNextActions) .WillOnce(DoAll(SaveArg<3>(&processed_actions1_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))) .WillOnce( DoAll(SaveArg<3>(&processed_actions2_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, Run(_)); @@ -1850,7 +1850,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); delegate_.UpdateNavigationState(/* navigating= */ false, /* error= */ true); @@ -1877,7 +1877,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // WaitForDom does NOT wait for navigation to end, it immediately checks for @@ -1926,7 +1926,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // As the element doesn't exist, WaitForDom returns and waits for 1s. @@ -1973,7 +1973,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // As the element doesn't exist, WaitForDom returns and waits for 1s. @@ -2011,7 +2011,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // WaitForNavigation returns immediately @@ -2034,7 +2034,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // WaitForNavigation waits for navigation to start after expect_navigation @@ -2062,7 +2062,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // The first wait_for_navigation waits for the navigation to happen. After @@ -2091,7 +2091,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); delegate_.UpdateNavigationState(/* navigating= */ true, /* error= */ false); @@ -2128,7 +2128,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<3>(&processed_actions_capture), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); // WaitForNavigation waits for navigation to start after expect_navigation @@ -2182,7 +2182,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<4>(&timing_stats), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); executor_->Run(&user_data_, executor_callback_.Get()); EXPECT_TRUE(task_environment_.NextTaskIsDelayed()); @@ -2212,7 +2212,7 @@ EXPECT_CALL(mock_service_, GetNextActions) .WillOnce( DoAll(SaveArg<5>(&captured_network_stats), - RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", + RunOnceCallback<6>(net::HTTP_OK, "", ServiceRequestSender::ResponseInfo{}))); EXPECT_CALL(executor_callback_, @@ -2263,6 +2263,22 @@ executor_->RequestUserData(CollectUserDataOptions(), mock_callback.Get()); EXPECT_THAT(delegate_.GetStateHistory(), ElementsAre(AutofillAssistantState::RUNNING)); + EXPECT_FALSE(ui_delegate_.GetCollectUserDataUiEnabled()); +} + +TEST_F(ScriptExecutorTest, CollectUserData) { + // Ui has been disabled while loading. + ui_delegate_.SetCollectUserDataUiState(/* enabled= */ false); + EXPECT_FALSE(ui_delegate_.GetCollectUserDataUiEnabled()); + + CollectUserDataOptions options; + executor_->CollectUserData(&options); + + EXPECT_TRUE(options.confirm_callback); + EXPECT_TRUE(options.additional_actions_callback); + EXPECT_TRUE(options.terms_link_callback); + EXPECT_EQ(ui_delegate_.GetOptions(), &options); + EXPECT_TRUE(ui_delegate_.GetCollectUserDataUiEnabled()); } TEST_F(ScriptExecutorTest, MustUseBackendData) { @@ -2273,91 +2289,5 @@ EXPECT_FALSE(executor_->MustUseBackendData()); } -TEST_F(ScriptExecutorTest, ExternalActionDoesNotApplyTouchableArea) { - ActionsResponseProto actions_response; - ElementAreaProto area = MakeElementAreaProto(/* id= */ "area"); - *actions_response.add_actions() - ->mutable_set_touchable_area() - ->mutable_element_area() = area; - actions_response.add_actions()->mutable_external_action()->mutable_info(); - - EXPECT_CALL(mock_service_, GetActions) - .WillOnce(RunOnceCallback<5>(net::HTTP_OK, Serialize(actions_response), - ServiceRequestSender::ResponseInfo{})); - EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", - ServiceRequestSender::ResponseInfo{})); - - EXPECT_CALL(executor_callback_, - Run(Field(&ScriptExecutor::Result::success, true))); - - executor_->Run(&user_data_, executor_callback_.Get()); - // The touchable area was never applied. - EXPECT_THAT(delegate_.GetTouchableElementAreaHistory(), IsEmpty()); - // The delegate never entered prompt. - EXPECT_THAT(delegate_.GetStateHistory(), IsEmpty()); -} - -TEST_F(ScriptExecutorTest, ExternalActionDoesNotConsumeTouchableArea) { - ActionsResponseProto actions_response; - ElementAreaProto area = MakeElementAreaProto(/* id= */ "area"); - *actions_response.add_actions() - ->mutable_set_touchable_area() - ->mutable_element_area() = area; - actions_response.add_actions()->mutable_external_action()->mutable_info(); - auto* prompt_action = actions_response.add_actions()->mutable_prompt(); - *prompt_action->add_choices()->mutable_auto_select_when()->mutable_match() = - ToSelectorProto("end_prompt"); - - EXPECT_CALL(mock_service_, GetActions) - .WillOnce(RunOnceCallback<5>(net::HTTP_OK, Serialize(actions_response), - ServiceRequestSender::ResponseInfo{})); - EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", - ServiceRequestSender::ResponseInfo{})); - - EXPECT_CALL(executor_callback_, - Run(Field(&ScriptExecutor::Result::success, true))); - EXPECT_CALL(mock_web_controller_, FindElement(Selector({"end_prompt"}), _, _)) - .WillOnce(RunOnceCallback<2>(OkClientStatus(), - std::make_unique<ElementFinderResult>())); - executor_->Run(&user_data_, executor_callback_.Get()); - // Since the ExternalAction did not consume the touchable area, the following - // prompt action was able to apply it. - EXPECT_THAT(delegate_.GetTouchableElementAreaHistory(), - ElementsAre(area, ElementAreaProto::default_instance())); -} - -TEST_F(ScriptExecutorTest, ExternalActionAppliesAndRestoresTouchableArea) { - ActionsResponseProto actions_response; - ElementAreaProto area = MakeElementAreaProto(/* id= */ "area"); - *actions_response.add_actions() - ->mutable_set_touchable_area() - ->mutable_element_area() = area; - auto* external_action = - actions_response.add_actions()->mutable_external_action(); - external_action->mutable_info(); - external_action->set_show_touchable_area(true); - - EXPECT_CALL(mock_service_, GetActions) - .WillOnce(RunOnceCallback<5>(net::HTTP_OK, Serialize(actions_response), - ServiceRequestSender::ResponseInfo{})); - EXPECT_CALL(mock_service_, GetNextActions) - .WillRepeatedly(RunOnceCallback<6>(net::HTTP_OK, /* response= */ "", - ServiceRequestSender::ResponseInfo{})); - - EXPECT_CALL(executor_callback_, - Run(Field(&ScriptExecutor::Result::success, true))); - - executor_->Run(&user_data_, executor_callback_.Get()); - // The touchable area was applied at the start of the ExternalAction and - // restored at the end of it. - EXPECT_THAT(delegate_.GetTouchableElementAreaHistory(), - ElementsAre(area, ElementAreaProto::default_instance())); - EXPECT_THAT(delegate_.GetStateHistory(), - ElementsAre(AutofillAssistantState::PROMPT, - AutofillAssistantState::RUNNING)); -} - } // namespace } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto index e6b8cbf..6cb4065d 100644 --- a/components/autofill_assistant/browser/service.proto +++ b/components/autofill_assistant/browser/service.proto
@@ -3419,7 +3419,6 @@ // Action which forwards a proto to the owner of the |ExternalScriptController| // for the current flow. Not supported for internal flows. message ExternalActionProto { - // Required. // The opaque proto to be forwarded to the owner of the // |ExternalScriptController| for this flow. optional external.ActionInfo info = 1;
diff --git a/components/autofill_assistant/browser/ui_controller.cc b/components/autofill_assistant/browser/ui_controller.cc index 8faab2dd..6049a19 100644 --- a/components/autofill_assistant/browser/ui_controller.cc +++ b/components/autofill_assistant/browser/ui_controller.cc
@@ -1003,6 +1003,12 @@ execution_delegate_->NotifyUserDataChange(UserDataFieldChange::ALL); } +void UiController::SetCollectUserDataUiState(bool enabled) { + for (UiControllerObserver& observer : observers_) { + observer.OnCollectUserDataUiStateChanged(enabled); + } +} + void UiController::SetLastSuccessfulUserDataOptions( std::unique_ptr<CollectUserDataOptions> collect_user_data_options) { last_collect_user_data_options_ = std::move(collect_user_data_options);
diff --git a/components/autofill_assistant/browser/ui_controller.h b/components/autofill_assistant/browser/ui_controller.h index f8d707e8..5755b2b 100644 --- a/components/autofill_assistant/browser/ui_controller.h +++ b/components/autofill_assistant/browser/ui_controller.h
@@ -107,6 +107,7 @@ void SetExpandSheetForPromptAction(bool expand) override; void SetCollectUserDataOptions(CollectUserDataOptions* options) override; + void SetCollectUserDataUiState(bool enabled) override; void SetLastSuccessfulUserDataOptions(std::unique_ptr<CollectUserDataOptions> collect_user_data_options) override; const CollectUserDataOptions* GetLastSuccessfulUserDataOptions()
diff --git a/components/autofill_assistant/browser/ui_controller_observer.h b/components/autofill_assistant/browser/ui_controller_observer.h index daf33b9..0607bcc 100644 --- a/components/autofill_assistant/browser/ui_controller_observer.h +++ b/components/autofill_assistant/browser/ui_controller_observer.h
@@ -43,6 +43,9 @@ virtual void OnCollectUserDataOptionsChanged( const CollectUserDataOptions* options) = 0; + // Report that the state of the User Data UI has changed. + virtual void OnCollectUserDataUiStateChanged(bool enabled) = 0; + // Called when details have changed. Details will be empty if they have been // cleared. virtual void OnDetailsChanged(const std::vector<Details>& details) = 0;
diff --git a/components/autofill_assistant/browser/ui_controller_unittest.cc b/components/autofill_assistant/browser/ui_controller_unittest.cc index c2423ee..a24e18b 100644 --- a/components/autofill_assistant/browser/ui_controller_unittest.cc +++ b/components/autofill_assistant/browser/ui_controller_unittest.cc
@@ -1121,4 +1121,10 @@ EXPECT_EQ(ui_controller_->GetStatusMessage(), "script message"); } +TEST_F(UiControllerTest, SetCollectUserDataUiState) { + EXPECT_CALL(mock_observer_, + OnCollectUserDataUiStateChanged(/* enabled= */ false)); + ui_controller_->SetCollectUserDataUiState(false); +} + } // namespace autofill_assistant
diff --git a/components/cronet/tools/api_static_checks.py b/components/cronet/tools/api_static_checks.py index 8d0e72f..7ced72d3 100755 --- a/components/cronet/tools/api_static_checks.py +++ b/components/cronet/tools/api_static_checks.py
@@ -86,7 +86,7 @@ IMPLEMENTATION_API_VERSION_FILENAME = os.path.abspath(os.path.join( os.path.dirname(__file__), '..', 'android', 'implementation_api_version.txt')) - +JAR_PATH = os.path.join(build_utils.JAVA_HOME, 'bin', 'jar') def find_api_calls(dump, api_classes, bad_calls): # Given a dump of an implementation class, find calls through API classes. @@ -129,7 +129,8 @@ temp_dir = tempfile.mkdtemp() # Extract API class files from jar - jar_cmd = ['jar', 'xf', os.path.abspath(opts.api_jar)] + jar_cmd = [os.path.relpath(JAR_PATH, temp_dir), 'xf', + os.path.abspath(opts.api_jar)] build_utils.CheckOutput(jar_cmd, cwd=temp_dir) shutil.rmtree(os.path.join(temp_dir, 'META-INF'), ignore_errors=True) @@ -149,7 +150,8 @@ # Extract impl class files from jars for impl_jar in opts.impl_jar: - jar_cmd = ['jar', 'xf', os.path.abspath(impl_jar)] + jar_cmd = [os.path.relpath(JAR_PATH, temp_dir), 'xf', + os.path.abspath(impl_jar)] build_utils.CheckOutput(jar_cmd, cwd=temp_dir) shutil.rmtree(os.path.join(temp_dir, 'META-INF'), ignore_errors=True)
diff --git a/components/cronet/tools/api_static_checks_unittest.py b/components/cronet/tools/api_static_checks_unittest.py index 00379d63..70be84683 100755 --- a/components/cronet/tools/api_static_checks_unittest.py +++ b/components/cronet/tools/api_static_checks_unittest.py
@@ -71,7 +71,8 @@ class ApiStaticCheckUnitTest(unittest.TestCase): def setUp(self): - self.temp_dir = tempfile.mkdtemp() + self.exe_path = os.path.join(REPOSITORY_ROOT, 'out') + self.temp_dir = tempfile.mkdtemp(dir=self.exe_path) os.chdir(self.temp_dir) os.mkdir('android') with open(INTERFACE_API_VERSION_FILENAME, 'w') \
diff --git a/components/desks_storage/core/desk_model_wrapper.cc b/components/desks_storage/core/desk_model_wrapper.cc index bc259c8..130f1c0 100644 --- a/components/desks_storage/core/desk_model_wrapper.cc +++ b/components/desks_storage/core/desk_model_wrapper.cc
@@ -25,6 +25,9 @@ auto template_entries = std::vector<const ash::DeskTemplate*>(); auto desk_template_status = GetDeskTemplateModel()->GetAllEntries(template_entries); + for (const auto& it : policy_entries_) + template_entries.push_back(it.get()); + if (desk_template_status != DeskModel::GetAllEntriesStatus::kOk) { std::move(callback).Run(DeskModel::GetAllEntriesStatus::kFailure, template_entries); @@ -92,7 +95,8 @@ } size_t DeskModelWrapper::GetDeskTemplateEntryCount() const { - return GetDeskTemplateModel()->GetDeskTemplateEntryCount(); + return GetDeskTemplateModel()->GetDeskTemplateEntryCount() + + policy_entries_.size(); } size_t DeskModelWrapper::GetMaxEntryCount() const { @@ -104,11 +108,16 @@ } size_t DeskModelWrapper::GetMaxDeskTemplateEntryCount() const { - return GetDeskTemplateModel()->GetMaxDeskTemplateEntryCount(); + return GetDeskTemplateModel()->GetMaxDeskTemplateEntryCount() + + policy_entries_.size(); } std::vector<base::GUID> DeskModelWrapper::GetAllEntryUuids() const { std::vector<base::GUID> keys; + + for (const auto& it : policy_entries_) + keys.push_back(it.get()->uuid()); + for (const auto& save_and_recall_uuid : save_and_recall_desks_model_->GetAllEntryUuids()) { keys.emplace_back(save_and_recall_uuid);
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc index 3ca884e5..22b5c89 100644 --- a/components/download/internal/common/download_item_impl.cc +++ b/components/download/internal/common/download_item_impl.cc
@@ -554,23 +554,6 @@ MaybeCompleteDownload(); } -void DownloadItemImpl::AcceptIncognitoWarning() { - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DCHECK(!incognito_warning_accepted_); - - DVLOG(20) << __func__ << "() download=" << DebugString(true); - - incognito_warning_accepted_ = true; - - UpdateObservers(); // TODO(asanka): This is potentially unsafe. The download - // may not be in a consistent state or around at all after - // invoking observers, but we keep it here because it is - // used in ValidateDangerousDownload(), too. - // http://crbug.com/586610 - - MaybeCompleteDownload(); -} - void DownloadItemImpl::StealDangerousDownload(bool delete_file_afterward, AcquireFileCallback callback) { DVLOG(20) << __func__ << "() download = " << DebugString(true); @@ -1062,11 +1045,6 @@ mixed_content_status_ == MixedContentStatus::SILENT_BLOCK; } -bool DownloadItemImpl::ShouldShowIncognitoWarning() const { - return base::FeatureList::IsEnabled(features::kIncognitoDownloadsWarning) && - delegate_->IsOffTheRecord() && !incognito_warning_accepted_; -} - DownloadDangerType DownloadItemImpl::GetDangerType() const { return danger_type_; } @@ -2405,10 +2383,6 @@ if (IsMixedContent()) return false; - if (ShouldShowIncognitoWarning()) { - return false; - } - // Check for consistency before invoking delegate. Since there are no pending // target determination calls and the download is in progress, both the target // and current paths should be non-empty and they should point to the same
diff --git a/components/download/public/common/download_features.cc b/components/download/public/common/download_features.cc index 602b950e0..d48485b 100644 --- a/components/download/public/common/download_features.cc +++ b/components/download/public/common/download_features.cc
@@ -69,9 +69,6 @@ const base::Feature kAllowFileBufferSizeControl{ "AllowFileBufferSizeControl", base::FEATURE_ENABLED_BY_DEFAULT}; -const base::Feature kIncognitoDownloadsWarning{ - "IncognitoDownloadsWarning", base::FEATURE_DISABLED_BY_DEFAULT}; - const base::Feature kDownloadRange{"DownloadRange", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/components/download/public/common/download_features.h b/components/download/public/common/download_features.h index 42b8f5b..b050cf5 100644 --- a/components/download/public/common/download_features.h +++ b/components/download/public/common/download_features.h
@@ -71,10 +71,6 @@ COMPONENTS_DOWNLOAD_EXPORT extern const base::Feature kAllowFileBufferSizeControl; -// Whether to show warning when downloading in incognito. -COMPONENTS_DOWNLOAD_EXPORT extern const base::Feature - kIncognitoDownloadsWarning; - // Arbitrary range request support for download system. COMPONENTS_DOWNLOAD_EXPORT extern const base::Feature kDownloadRange; } // namespace features
diff --git a/components/download/public/common/download_item.h b/components/download/public/common/download_item.h index f7b65b6f..7635af5 100644 --- a/components/download/public/common/download_item.h +++ b/components/download/public/common/download_item.h
@@ -180,9 +180,6 @@ // Called when the user has validated the download of a mixed content file. virtual void ValidateMixedContentDownload() = 0; - // Called when user accepts Incognito download warning. - virtual void AcceptIncognitoWarning() = 0; - // Called to acquire a dangerous download. If |delete_file_afterward| is true, // invokes |callback| on the UI thread with the path to the downloaded file, // and removes the DownloadItem from views and history if appropriate. @@ -433,11 +430,6 @@ // False if not mixed content or that function has been called. virtual bool IsMixedContent() const = 0; - // True if file is downloaded in Incognito and user has not accepted it yet. - // False if file is downloaded in regular mode or has accepted the incognito - // warning. - virtual bool ShouldShowIncognitoWarning() const = 0; - // Why |safety_state_| is not SAFE. virtual DownloadDangerType GetDangerType() const = 0;
diff --git a/components/download/public/common/download_item_impl.h b/components/download/public/common/download_item_impl.h index 4558a7de..185b14c 100644 --- a/components/download/public/common/download_item_impl.h +++ b/components/download/public/common/download_item_impl.h
@@ -249,7 +249,6 @@ void UpdateObservers() override; void ValidateDangerousDownload() override; void ValidateMixedContentDownload() override; - void AcceptIncognitoWarning() override; void StealDangerousDownload(bool need_removal, AcquireFileCallback callback) override; void Pause() override; @@ -306,7 +305,6 @@ const DownloadItemRerouteInfo& GetRerouteInfo() const override; bool IsDangerous() const override; bool IsMixedContent() const override; - bool ShouldShowIncognitoWarning() const override; DownloadDangerType GetDangerType() const override; MixedContentStatus GetMixedContentStatus() const override; bool TimeRemaining(base::TimeDelta* remaining) const override; @@ -794,9 +792,6 @@ // The current state of this download. DownloadInternalState state_ = INITIAL_INTERNAL; - // A flag for indicating whether user has accepted incognito warning or not - bool incognito_warning_accepted_ = false; - // Current danger type for the download. DownloadDangerType danger_type_ = DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS;
diff --git a/components/download/public/common/mock_download_item.h b/components/download/public/common/mock_download_item.h index 4e45bf8..5bb2564 100644 --- a/components/download/public/common/mock_download_item.h +++ b/components/download/public/common/mock_download_item.h
@@ -46,7 +46,6 @@ MOCK_METHOD0(UpdateObservers, void()); MOCK_METHOD0(ValidateDangerousDownload, void()); MOCK_METHOD0(ValidateMixedContentDownload, void()); - MOCK_METHOD0(AcceptIncognitoWarning, void()); MOCK_METHOD2(StealDangerousDownload, void(bool, AcquireFileCallback)); MOCK_METHOD0(Pause, void()); MOCK_METHOD1(Resume, void(bool)); @@ -108,7 +107,6 @@ (const override)); MOCK_CONST_METHOD0(IsDangerous, bool()); MOCK_CONST_METHOD0(IsMixedContent, bool()); - MOCK_CONST_METHOD0(ShouldShowIncognitoWarning, bool()); MOCK_CONST_METHOD0(GetDangerType, DownloadDangerType()); MOCK_CONST_METHOD0(GetMixedContentStatus, MixedContentStatus()); MOCK_CONST_METHOD1(TimeRemaining, bool(base::TimeDelta*));
diff --git a/components/download/public/common/mock_download_item_impl.h b/components/download/public/common/mock_download_item_impl.h index 01609d06..ace02f3 100644 --- a/components/download/public/common/mock_download_item_impl.h +++ b/components/download/public/common/mock_download_item_impl.h
@@ -47,7 +47,6 @@ MOCK_METHOD0(OpenDownload, void()); MOCK_METHOD0(ShowDownloadInShell, void()); MOCK_METHOD0(ValidateDangerousDownload, void()); - MOCK_METHOD0(AcceptIncognitoWarning, void()); MOCK_METHOD2(StealDangerousDownload, void(bool, AcquireFileCallback)); MOCK_METHOD3(UpdateProgress, void(int64_t, int64_t, const std::string&)); MOCK_METHOD1(Cancel, void(bool)); @@ -111,7 +110,6 @@ MOCK_CONST_METHOD0(GetMixedContentStatus, MixedContentStatus()); MOCK_CONST_METHOD0(IsDangerous, bool()); MOCK_CONST_METHOD0(IsMixedContent, bool()); - MOCK_CONST_METHOD0(ShouldShowIncognitoWarning, bool()); MOCK_METHOD0(GetAutoOpened, bool()); MOCK_CONST_METHOD0(GetForcedFilePath, const base::FilePath&()); MOCK_CONST_METHOD0(HasUserGesture, bool());
diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java index 422b443..f822c2a 100644 --- a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java +++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
@@ -21,6 +21,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.StrictModeContext; +import org.chromium.base.TraceEvent; import org.chromium.base.task.PostTask; import org.chromium.components.embedder_support.util.Origin; import org.chromium.content_public.browser.UiThreadTaskTraits; @@ -261,7 +262,8 @@ */ protected int checkGooglePlayServicesAvailable(final Context context) { // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { + try (StrictModeContext ignored = StrictModeContext.allowDiskWrites(); + TraceEvent e = TraceEvent.scoped("checkGooglePlayServicesAvailable")) { return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context); } }
diff --git a/components/offline_items_collection/core/android/offline_content_aggregator_bridge.cc b/components/offline_items_collection/core/android/offline_content_aggregator_bridge.cc index 7a3e4f85..aa422c1 100644 --- a/components/offline_items_collection/core/android/offline_content_aggregator_bridge.cc +++ b/components/offline_items_collection/core/android/offline_content_aggregator_bridge.cc
@@ -71,7 +71,8 @@ void RenameItemCallback(ScopedJavaGlobalRef<jobject> j_callback, RenameResult result) { - base::android::RunIntCallbackAndroid(j_callback, static_cast<int>(result)); + base::android::RunIntCallbackAndroid(j_callback, + static_cast<int32_t>(result)); } void RunGetAllItemsCallback(const base::android::JavaRef<jobject>& j_callback,
diff --git a/components/paint_preview/player/player_compositor_delegate.cc b/components/paint_preview/player/player_compositor_delegate.cc index 2d5bf16..2480d26 100644 --- a/components/paint_preview/player/player_compositor_delegate.cc +++ b/components/paint_preview/player/player_compositor_delegate.cc
@@ -124,7 +124,7 @@ const GURL& expected_url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map) { TRACE_EVENT0("paint_preview", "PlayerCompositorDelegate::Initialize"); @@ -164,7 +164,7 @@ const GURL& expected_url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map, std::unique_ptr<PaintPreviewCompositorService, base::OnTaskRunnerDeleter> @@ -184,7 +184,7 @@ const GURL& expected_url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map) { max_requests_map_ = max_requests_map;
diff --git a/components/paint_preview/player/player_compositor_delegate.h b/components/paint_preview/player/player_compositor_delegate.h index 9ef3139..4af6fde8 100644 --- a/components/paint_preview/player/player_compositor_delegate.h +++ b/components/paint_preview/player/player_compositor_delegate.h
@@ -51,13 +51,16 @@ PlayerCompositorDelegate(const PlayerCompositorDelegate&) = delete; PlayerCompositorDelegate& operator=(const PlayerCompositorDelegate&) = delete; + // Callback used for compositor error + using CompositorErrorCallback = base::OnceCallback<void(int32_t)>; + // Initializes the compositor. void Initialize( PaintPreviewBaseService* paint_preview_service, const GURL& url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map); @@ -116,7 +119,7 @@ const GURL& expected_url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map, std::unique_ptr<PaintPreviewCompositorService, base::OnTaskRunnerDeleter> @@ -131,7 +134,7 @@ } protected: - base::OnceCallback<void(int)> compositor_error_; + CompositorErrorCallback compositor_error_; virtual base::MemoryPressureMonitor* memory_pressure_monitor(); @@ -141,7 +144,7 @@ const GURL& expected_url, const DirectoryKey& key, bool main_frame_mode, - base::OnceCallback<void(int)> compositor_error, + CompositorErrorCallback compositor_error, base::TimeDelta timeout_duration, std::array<size_t, PressureLevelCount::kLevels> max_requests_map);
diff --git a/components/password_manager/core/browser/sync/password_proto_utils.cc b/components/password_manager/core/browser/sync/password_proto_utils.cc index e951c53..b180cd6 100644 --- a/components/password_manager/core/browser/sync/password_proto_utils.cc +++ b/components/password_manager/core/browser/sync/password_proto_utils.cc
@@ -130,17 +130,18 @@ sync_pb::PasswordSpecifics SpecificsFromPassword( const PasswordForm& password_form, const sync_pb::PasswordSpecificsData& base_password_data) { - sync_pb::PasswordSpecifics specifics; - *specifics.mutable_client_only_encrypted_data() = - SpecificsDataFromPassword(password_form, base_password_data); - // WARNING: if you are adding support for new `PasswordSpecificsData` fields, - // you need to update following functions accordingly: + // you need to update the following functions accordingly: // `TrimPasswordSpecificsDataForCaching` // `TrimRemoteSpecificsForCachingPreservesOnlyUnknownFields` DCHECK_EQ(0u, TrimPasswordSpecificsDataForCaching( - specifics.client_only_encrypted_data()) + SpecificsDataFromPassword(password_form, + /*base_password_data=*/{})) .ByteSizeLong()); + + sync_pb::PasswordSpecifics specifics; + *specifics.mutable_client_only_encrypted_data() = + SpecificsDataFromPassword(password_form, base_password_data); return specifics; }
diff --git a/components/password_manager/core/browser/sync/password_proto_utils_unittest.cc b/components/password_manager/core/browser/sync/password_proto_utils_unittest.cc index c47f92d..2f88fa64 100644 --- a/components/password_manager/core/browser/sync/password_proto_utils_unittest.cc +++ b/components/password_manager/core/browser/sync/password_proto_utils_unittest.cc
@@ -134,10 +134,28 @@ *specifics_with_only_unknown_fields.mutable_unknown_fields() = "unknown_fields"; - sync_pb::PasswordSpecificsData updated_specifics = - SpecificsDataFromPassword(form, specifics_with_only_unknown_fields); + EXPECT_EQ(SpecificsDataFromPassword(form, specifics_with_only_unknown_fields) + .SerializeAsString(), + specifics.SerializeAsString()); +} - EXPECT_EQ(updated_specifics.SerializeAsString(), +TEST(PasswordProtoUtilsTest, SpecificsFromPasswordPreservesUnknownFields) { + sync_pb::PasswordSpecificsData specifics = + CreateSpecificsData("http://www.origin.com/", "username_element", + "username_value", "password_element", "signon_realm", + /*issue_types=*/{}); + + PasswordForm form = PasswordFromSpecifics(specifics); + + *specifics.mutable_unknown_fields() = "unknown_fields"; + + sync_pb::PasswordSpecificsData specifics_with_only_unknown_fields; + *specifics_with_only_unknown_fields.mutable_unknown_fields() = + "unknown_fields"; + + EXPECT_EQ(SpecificsFromPassword(form, specifics_with_only_unknown_fields) + .client_only_encrypted_data() + .SerializeAsString(), specifics.SerializeAsString()); }
diff --git a/components/password_manager/ios/password_manager_java_script_feature.mm b/components/password_manager/ios/password_manager_java_script_feature.mm index 5ee15727..95c15b7 100644 --- a/components/password_manager/ios/password_manager_java_script_feature.mm +++ b/components/password_manager/ios/password_manager_java_script_feature.mm
@@ -50,20 +50,21 @@ root_dict->SetInteger("unique_renderer_id", FormRendererIdToJsParameter(form_renderer_id)); - auto fieldList = std::make_unique<base::ListValue>(); + base::Value::List fieldList; - auto usernameField = std::make_unique<base::DictionaryValue>(); - usernameField->SetInteger("unique_renderer_id", - FieldRendererIdToJsParameter(username_element)); - usernameField->SetString("value", username_value); - fieldList->Append(std::move(usernameField)); + base::Value::Dict usernameField; + usernameField.Set("unique_renderer_id", + FieldRendererIdToJsParameter(username_element)); + usernameField.Set("value", username_value); + fieldList.Append(std::move(usernameField)); - auto passwordField = std::make_unique<base::DictionaryValue>(); - passwordField->SetInteger("unique_renderer_id", password_element.value()); - passwordField->SetString("value", password_value); - fieldList->Append(std::move(passwordField)); + base::Value::Dict passwordField; + passwordField.Set("unique_renderer_id", + static_cast<int>(password_element.value())); + passwordField.Set("value", password_value); + fieldList.Append(std::move(passwordField)); - root_dict->Set("fields", std::move(fieldList)); + root_dict->GetDict().Set("fields", std::move(fieldList)); return root_dict; }
diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc index dfd5be4d..b6fb00b 100644 --- a/components/privacy_sandbox/privacy_sandbox_features.cc +++ b/components/privacy_sandbox/privacy_sandbox_features.cc
@@ -17,8 +17,6 @@ const base::FeatureParam<bool> kPrivacySandboxSettings3NewNotice{ &kPrivacySandboxSettings3, "new-notice", false}; -const base::FeatureParam<bool> kPrivacySandboxSettings3DisableDialogForTesting{ - &kPrivacySandboxSettings3, "disable-dialog-for-testing", false}; const base::FeatureParam<bool> kPrivacySandboxSettings3ForceShowConsentForTesting{ &kPrivacySandboxSettings3, "force-show-consent-for-testing", false}; @@ -27,9 +25,14 @@ &kPrivacySandboxSettings3, "force-show-notice-for-testing", false}; const base::FeatureParam<bool> kPrivacySandboxSettings3ShowSampleDataForTesting{ &kPrivacySandboxSettings3, "show-sample-data", false}; +const base::FeatureParam<bool> kPrivacySandboxSettings3DisableDialogForTesting{ + &kPrivacySandboxSettings3, "disable-dialog-for-testing", false}; const base::Feature kOverridePrivacySandboxSettingsLocalTesting{ "OverridePrivacySandboxSettingsLocalTesting", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kDisablePrivacySandboxPrompts{ + "DisablePrivacySandboxPrompts", base::FEATURE_DISABLED_BY_DEFAULT}; + } // namespace privacy_sandbox
diff --git a/components/privacy_sandbox/privacy_sandbox_features.h b/components/privacy_sandbox/privacy_sandbox_features.h index a2b7fcd1..86cffbf0 100644 --- a/components/privacy_sandbox/privacy_sandbox_features.h +++ b/components/privacy_sandbox/privacy_sandbox_features.h
@@ -33,16 +33,24 @@ // (unsynced) entering an unexpected state, requiring profile deletion to // resolve. extern const base::FeatureParam<bool> - kPrivacySandboxSettings3DisableDialogForTesting; -extern const base::FeatureParam<bool> kPrivacySandboxSettings3ForceShowConsentForTesting; extern const base::FeatureParam<bool> kPrivacySandboxSettings3ForceShowNoticeForTesting; extern const base::FeatureParam<bool> kPrivacySandboxSettings3ShowSampleDataForTesting; +// This parameter will suppress all Privacy Sandbox prompts, but is supersceeded +// by the kDisablePrivacySandboxPrompts feature below, and will be removed when +// the PrivacySandboxSettings3 feature is fully launched & solidified. +extern const base::FeatureParam<bool> + kPrivacySandboxSettings3DisableDialogForTesting; extern const base::Feature kOverridePrivacySandboxSettingsLocalTesting; +// Disables any Privacy Sandbox related prompts. Should only be used for testing +// purposes. This feature is used to support external automated testing using +// Chrome, where additional prompts break behavior expectations. +extern const base::Feature kDisablePrivacySandboxPrompts; + } // namespace privacy_sandbox #endif // COMPONENTS_PRIVACY_SANDBOX_PRIVACY_SANDBOX_FEATURES_H_
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 960b3b1..b89d141 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -1102,6 +1102,7 @@ <translation id="3973234410852337861">تم حظر <ph name="HOST_NAME" /></translation> <translation id="3978338123949022456">انتقِل إلى وضع البحث وأدخِل طلب البحث ثم اضغط على مفتاح Enter للبحث باستخدام <ph name="KEYWORD_SUFFIX" />.</translation> <translation id="398470910934384994">طيور</translation> +<translation id="3985750352229496475">إدارة العناوين...</translation> <translation id="3986705137476756801">إيقاف ميزة "النسخ النصي التلقائي" مؤقتًا</translation> <translation id="3987940399970879459">أقل من ميغابايت واحد</translation> <translation id="3990250421422698716">ترتيب النسخ مع الفصل بينها</translation> @@ -1229,6 +1230,7 @@ <translation id="4305666528087210886">تعذّر الوصول لملفك</translation> <translation id="4306529830550717874">هل تريد حفظ العنوان؟</translation> <translation id="4306812610847412719">الحافظة</translation> +<translation id="4310070645992025887">البحث في رحلات البحث</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">حظر (تلقائي)</translation> <translation id="4314815835985389558">إدارة المزامنة</translation> @@ -2114,6 +2116,7 @@ <translation id="6839929833149231406">المنطقة</translation> <translation id="6846340164947227603">استخدام رقم بطاقة افتراضية...</translation> <translation id="6852204201400771460">هل تريد تحديث التطبيق؟</translation> +<translation id="6857776781123259569">إدارة كلمات المرور...</translation> <translation id="686485648936420384">مراجع للمستهلك</translation> <translation id="6865412394715372076">يتعذَّر إثبات ملكية هذه البطاقة الآن</translation> <translation id="6869334554832814367">قروض شخصية</translation> @@ -2440,6 +2443,7 @@ <translation id="7669271284792375604">قد يحاول المهاجمون في هذا الموقع خداعك من خلال تثبيت برامج تضر بتجربة التصفح (على سبيل المثال، من خلال تغيير صفحتك الرئيسية أو عرض إعلانات إضافية على المواقع التي تزورها).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد إجراء واحد منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}zero{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد # إجراء منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}two{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد إجراءين منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}few{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد # إجراءات منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}many{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد # إجراءً منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}other{الإجراءات المُتَّخَذة بخصوص البيانات التي يتم وضع علامة عليها على أنّها سريّة (تم رصد # إجراء منذ تسجيل الدخول). <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">صندوق البريد الإلكتروني 6</translation> +<translation id="7675325315208090829">إدارة طُرق الدفع...</translation> <translation id="7676643023259824263">البحث عن نص الحافظة،<ph name="TEXT" /></translation> <translation id="7679367271685653708">عرض سجلّ التصفُّح وإدارته في إعدادات Chrome</translation> <translation id="7679947978757153706">بيسبول</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index ede1ed9e..6fa5661b 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -1097,6 +1097,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> blok edilib</translation> <translation id="3978338123949022456">Axtarış rejimi, <ph name="KEYWORD_SUFFIX" /> ilə axtarmaq üçün sorğu yazın və Enter düyməsinə basın</translation> <translation id="398470910934384994">Quşlar</translation> +<translation id="3985750352229496475">Ünvanları İdarə Edin...</translation> <translation id="3986705137476756801">Canlı Subtitri hələlik deaktiv edin</translation> <translation id="3987940399970879459">1 MB-dan az</translation> <translation id="3990250421422698716">Kənarını bükün</translation> @@ -1223,6 +1224,7 @@ <translation id="4305666528087210886">Faylınıza giriş mümkün olmadı</translation> <translation id="4306529830550717874">Ünvan saxlanılsın?</translation> <translation id="4306812610847412719">mübadilə buferi</translation> +<translation id="4310070645992025887">Səyahətlərinizi axtarın</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blok edin (defolt)</translation> <translation id="4314815835985389558">Sinxronizasiyanı idarə edin</translation> @@ -2107,6 +2109,7 @@ <translation id="6839929833149231406">Sahə</translation> <translation id="6846340164947227603">Virtual kart nömrəsini istifadə edin:</translation> <translation id="6852204201400771460">Tətbiq yenidən yüklənilsin?</translation> +<translation id="6857776781123259569">Parolları idarə edin...</translation> <translation id="686485648936420384">İstehlak resursları</translation> <translation id="6865412394715372076">Bu kart hazırda doğrulana bilməz</translation> <translation id="6869334554832814367">Şəxsi istiqrazlar</translation> @@ -2433,6 +2436,7 @@ <translation id="7669271284792375604">Saytdakı hücumçular işinizə zərər gətirəcək proqramları quraşdırmaq üçün Sizi aldatmağa cəhd edə bilər (məsələn, əsas səhifəni dəyişməklə və ya daxil olduğunuz saytlarda əlavə reklamlar göstərməklə).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Məxfi olaraq işarələnmiş məlumatlarla aparılan əməliyyatlar (girişdən sonra 1 əməliyyat). <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" />}other{Məxfi olaraq işarələnmiş məlumatlarla aparılan əməliyyatlar (girişdən sonra # əməliyyat). <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Poçt qutusu 6</translation> +<translation id="7675325315208090829">Ödəniş Metodlarını İdarə Edin...</translation> <translation id="7676643023259824263">Mübadilə buferində mətni axtarın, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Chrome ayarlarında brauzer tarixçənizə baxın və idarə edin</translation> <translation id="7679947978757153706">Beysbol</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index fa889cc..b48d17c8 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -1097,6 +1097,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> està bloquejat</translation> <translation id="3978338123949022456">Mode de cerca: escriu una consulta i prem Retorn per cercar a <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Aus</translation> +<translation id="3985750352229496475">Gestiona les adreces...</translation> <translation id="3986705137476756801">Desactiva Subtítols instantanis per ara</translation> <translation id="3987940399970879459">Menys d'1 MB</translation> <translation id="3990250421422698716">Jog offset</translation> @@ -1219,6 +1220,7 @@ <translation id="4305666528087210886">No s'ha pogut accedir al fitxer</translation> <translation id="4306529830550717874">Vols desar l'adreça?</translation> <translation id="4306812610847412719">porta-retalls</translation> +<translation id="4310070645992025887">Cerca els teus recorreguts</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloqueja (opció predeterminada)</translation> <translation id="4314815835985389558">Gestiona la sincronització</translation> @@ -2103,6 +2105,7 @@ <translation id="6839929833149231406">Àrea</translation> <translation id="6846340164947227603">Fes servir un número de targeta virtual...</translation> <translation id="6852204201400771460">Vols tornar a carregar l'aplicació?</translation> +<translation id="6857776781123259569">Gestiona les contrasenyes...</translation> <translation id="686485648936420384">Recursos per a consumidors</translation> <translation id="6865412394715372076">En aquests moments no es pot verificar la targeta</translation> <translation id="6869334554832814367">Préstecs personals</translation> @@ -2429,6 +2432,7 @@ <translation id="7669271284792375604">És possible que els atacants d'aquest lloc intentin enganyar-te perquè instal·lis programes que perjudiquen la teva navegació (per exemple, et poden canviar la pàgina d'inici o mostrar anuncis addicionals als llocs que visites).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Accions dutes a terme amb dades marcades com a confidencials (1 acció des de l'inici de sessió). <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" />}other{Accions dutes a terme amb dades marcades com a confidencials (# accions des de l'inici de sessió). <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Bústia de correu 6</translation> +<translation id="7675325315208090829">Gestiona les formes de pagament...</translation> <translation id="7676643023259824263">Cerca el text (<ph name="TEXT" />) del porta-retalls</translation> <translation id="7679367271685653708">Consulta i gestiona l'historial de navegació a la configuració de Chrome</translation> <translation id="7679947978757153706">Beisbol</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 4d5fc9bf..f8ea9c5 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -1101,6 +1101,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> er blokeret</translation> <translation id="3978338123949022456">Søgetilstand, skriv en forespørgsel, og tryk på Enter for at søge på <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Fugle</translation> +<translation id="3985750352229496475">Administrer adresser...</translation> <translation id="3986705137476756801">Deaktiver Livetekstning indtil videre</translation> <translation id="3987940399970879459">Mindre end 1 MB</translation> <translation id="3990250421422698716">Langsom offsetkørsel</translation> @@ -1228,6 +1229,7 @@ <translation id="4305666528087210886">Din fil kunne ikke tilgås</translation> <translation id="4306529830550717874">Vil du gemme adressen?</translation> <translation id="4306812610847412719">udklipsholder</translation> +<translation id="4310070645992025887">Søg i dine søgeforløb</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloker (standardindstilling)</translation> <translation id="4314815835985389558">Administrer synkronisering</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">Område</translation> <translation id="6846340164947227603">Brug et virtuelt kortnummer...</translation> <translation id="6852204201400771460">Vil du genindlæse appen?</translation> +<translation id="6857776781123259569">Administrer adgangskoder...</translation> <translation id="686485648936420384">Forbrugerressourcer</translation> <translation id="6865412394715372076">Dette kort kan ikke bekræftes lige nu</translation> <translation id="6869334554832814367">Privatlån</translation> @@ -2438,6 +2441,7 @@ <translation id="7669271284792375604">Hackere på dette website kan forsøge at narre dig til at installere programmer, der skader din browseroplevelse (f.eks. ved at ændre din startside eller vise flere annoncer på de websites, du besøger).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Handlinger, som er foretaget i forbindelse med data, der er rapporteret som fortrolige (1 handling siden login). <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" />}one{Handlinger, som er foretaget i forbindelse med data, der er rapporteret som fortrolige (# handling siden login). <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" />}other{Handlinger, som er foretaget i forbindelse med data, der er rapporteret som fortrolige (# handlinger siden login). <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Postkasse 6</translation> +<translation id="7675325315208090829">Administrer betalingsmetoder…</translation> <translation id="7676643023259824263">Søg efter tekst i udklipsholderen, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Se og administrer din browserhistorik i Chrome-indstillingerne</translation> <translation id="7679947978757153706">Baseball</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index eb820bb..1c1634b 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -1950,6 +1950,7 @@ <translation id="6337133576188860026">Frees up less than <ph name="SIZE" />. Some sites may load more slowly on your next visit.</translation> <translation id="6337534724793800597">Filter policies by name</translation> <translation id="6340739886198108203">Administrator policy doesn’t recommend taking screenshots or recordings when confidential content is visible:</translation> +<translation id="6348220984832452017">Active variations</translation> <translation id="6349101878882523185">Install <ph name="APP_NAME" /></translation> <translation id="6353505687280762741">{COUNT,plural, =0{None}=1{1 password (for <ph name="DOMAIN_LIST" />, synced)}=2{2 passwords (for <ph name="DOMAIN_LIST" />, synced)}other{# passwords (for <ph name="DOMAIN_LIST" />, synced)}}</translation> <translation id="6355392890578844978">This browser is not managed by a company or other organisation. Activity on this device may be managed outside of Chromium. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index c6563c9..c678fee 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1098,6 +1098,7 @@ <translation id="3973234410852337861">Se bloqueó <ph name="HOST_NAME" /></translation> <translation id="3978338123949022456">Modo de búsqueda, ingresa una búsqueda y presiona Intro para buscar con <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Aves</translation> +<translation id="3985750352229496475">Administrar direcciones…</translation> <translation id="3986705137476756801">Desactivar el Subtitulado instantáneo por el momento</translation> <translation id="3987940399970879459">Menos de 1 MB</translation> <translation id="3990250421422698716">Desplazamiento del borde</translation> @@ -1220,6 +1221,7 @@ <translation id="4305666528087210886">No se pudo acceder a tu archivo</translation> <translation id="4306529830550717874">¿Quieres guardar la dirección?</translation> <translation id="4306812610847412719">portapapeles</translation> +<translation id="4310070645992025887">Buscar tus Exploraciones</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquear (predeterminado)</translation> <translation id="4314815835985389558">Administrar la sincronización</translation> @@ -2104,6 +2106,7 @@ <translation id="6839929833149231406">Área</translation> <translation id="6846340164947227603">Usar un número de tarjeta virtual…</translation> <translation id="6852204201400771460">¿Deseas volver a cargar la app?</translation> +<translation id="6857776781123259569">Administrar contraseñas…</translation> <translation id="686485648936420384">Recursos del consumidor</translation> <translation id="6865412394715372076">No se puede verificar la tarjeta en este momento</translation> <translation id="6869334554832814367">Préstamos personales</translation> @@ -2430,6 +2433,7 @@ <translation id="7669271284792375604">Es posible que los atacantes de este sitio intenten engañarte para que instales programas que pueden afectar tu experiencia de navegación (p. ej., podrían cambiar la página principal o mostrar más anuncios en los sitios que visitas).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Las acciones que se realizan con los datos marcados como confidenciales (1 acción desde el acceso). <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" />}other{Las acciones que se realizan con los datos marcados como confidenciales (# acciones desde el acceso). <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Buzón 6</translation> +<translation id="7675325315208090829">Administrar formas de pago…</translation> <translation id="7676643023259824263">Buscar el texto <ph name="TEXT" /> en el portapapeles</translation> <translation id="7679367271685653708">Ver y administrar tu historial de navegación en la configuración de Chrome</translation> <translation id="7679947978757153706">Béisbol</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index b3459d9..656ca9c 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861">Host <ph name="HOST_NAME" /> on blokeeritud</translation> <translation id="3978338123949022456">Otsingurežiim. Sisestage päring ja vajutage sisestusklahvi, et otsida teenuses <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Linnud</translation> +<translation id="3985750352229496475">Aadresside haldamine …</translation> <translation id="3986705137476756801">Reaalajas subtiitrite praeguseks väljalülitamine</translation> <translation id="3987940399970879459">Alla 1 MB</translation> <translation id="3990250421422698716">Astme nihe</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">Teie failile ei pääsetud juurde</translation> <translation id="4306529830550717874">Kas salvestada aadress?</translation> <translation id="4306812610847412719">lõikelaud</translation> +<translation id="4310070645992025887">Otsige teekondadest</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokeeri (vaikimisi)</translation> <translation id="4314815835985389558">Sünkroonimise haldamine</translation> @@ -2111,6 +2113,7 @@ <translation id="6839929833149231406">Ala</translation> <translation id="6846340164947227603">Kasuta virtuaalkaardi numbrit …</translation> <translation id="6852204201400771460">Kas soovite rakenduse uuesti laadida?</translation> +<translation id="6857776781123259569">Paroolide haldamine …</translation> <translation id="686485648936420384">Tarbijatele mõeldud teabeallikad</translation> <translation id="6865412394715372076">Seda kaarti ei saa praegu kinnitada</translation> <translation id="6869334554832814367">Eraisikulaenud</translation> @@ -2437,6 +2440,7 @@ <translation id="7669271284792375604">Sellel saidil asuvad ründajad võivad proovida meelitada teid installima programme, mis kahjustavad sirvimiskogemust (nt muudavad avalehte või kuvavad külastatavatel saitidel lisareklaame).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Andmetega seotud tegevused märgitakse konfidentsiaalseks (alates sisselogimisest on toimunud 1 toiming). <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" />}other{Andmetega seotud tegevused märgitakse konfidentsiaalseks (alates sisselogimisest on toimunud # toimingut). <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Postkast 6</translation> +<translation id="7675325315208090829">Makseviiside haldamine …</translation> <translation id="7676643023259824263">Lõikelaua teksti otsimine, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Vaadake ja hallake Chrome'i seadetes oma sirvimisajalugu</translation> <translation id="7679947978757153706">Pesapall</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 5807d26..3f7bfb8 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -1102,6 +1102,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> on estetty</translation> <translation id="3978338123949022456">Hakutila, kirjoita hakulauseke ja paina Enter, niin <ph name="KEYWORD_SUFFIX" /> tekee haun</translation> <translation id="398470910934384994">Linnut</translation> +<translation id="3985750352229496475">Muuta osoitteita…</translation> <translation id="3986705137476756801">Laita Livetekstitys päälle toistaiseksi</translation> <translation id="3987940399970879459">Alle 1 Mt</translation> <translation id="3990250421422698716">Jog offset</translation> @@ -1229,6 +1230,7 @@ <translation id="4305666528087210886">Tiedostoa ei voi käyttää</translation> <translation id="4306529830550717874">Tallennetaanko osoite?</translation> <translation id="4306812610847412719">leikepöytä</translation> +<translation id="4310070645992025887">Hae selailutiedoista</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Estä (oletus)</translation> <translation id="4314815835985389558">Synkronointiasetusten muokkaus</translation> @@ -2113,6 +2115,7 @@ <translation id="6839929833149231406">Alue</translation> <translation id="6846340164947227603">Käytä virtuaalista korttinumeroa…</translation> <translation id="6852204201400771460">Ladataanko sovellus uudelleen?</translation> +<translation id="6857776781123259569">Muuta salasana-asetuksia…</translation> <translation id="686485648936420384">Tiedot kuluttajille</translation> <translation id="6865412394715372076">Korttia ei voi vahvistaa juuri nyt.</translation> <translation id="6869334554832814367">Henkilökohtaiset lainat</translation> @@ -2439,6 +2442,7 @@ <translation id="7669271284792375604">Tämän sivuston hyökkääjät saattavat yrittää huijata sinua asentamaan ohjelmia, jotka ovat haitallisia selauskokemuksellesi (esimerkiksi vaihtamalla aloitussivusi tai näyttämällä ylimääräisiä mainoksia käymilläsi sivustoilla).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Luottamukselliseen dataan liittyvät tapahtumat (1 tapahtuma kirjautumisen jälkeen). <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" />}other{Luottamukselliseen dataan liittyvät tapahtumat (# tapahtumaa kirjautumisen jälkeen). <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Postilaatikko 6</translation> +<translation id="7675325315208090829">Muuta maksutapoja…</translation> <translation id="7676643023259824263">Hae leikepöydän tekstiä <ph name="TEXT" /></translation> <translation id="7679367271685653708">Katso ja ylläpidä selaushistoriaasi Chromen asetuksista</translation> <translation id="7679947978757153706">Baseball</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb index 0641219c7..6d59061 100644 --- a/components/strings/components_strings_fr-CA.xtb +++ b/components/strings/components_strings_fr-CA.xtb
@@ -1097,6 +1097,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> est bloquée</translation> <translation id="3978338123949022456">Mode Recherche, tapez une requête et appuyez sur Entrée pour rechercher avec <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Oiseaux</translation> +<translation id="3985750352229496475">Gérer les adresses…</translation> <translation id="3986705137476756801">Désactiver la transcription instantanée pour le moment</translation> <translation id="3987940399970879459">Moins de 1 Mo</translation> <translation id="3990250421422698716">Décalage</translation> @@ -1219,6 +1220,7 @@ <translation id="4305666528087210886">Impossible d'accéder à votre fichier</translation> <translation id="4306529830550717874">Enregistrer l'adresse?</translation> <translation id="4306812610847412719">Presse-papiers</translation> +<translation id="4310070645992025887">Recherchez vos explorations</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquer (par défaut)</translation> <translation id="4314815835985389558">Gérer la synchronisation</translation> @@ -2103,6 +2105,7 @@ <translation id="6839929833149231406">Région</translation> <translation id="6846340164947227603">Utiliser un numéro de carte virtuelle…</translation> <translation id="6852204201400771460">Actualiser l'application?</translation> +<translation id="6857776781123259569">Gérer les mots de passe…</translation> <translation id="686485648936420384">Ressources pour les consommateurs</translation> <translation id="6865412394715372076">Cette carte ne peut pas être vérifiée pour le moment</translation> <translation id="6869334554832814367">Prêts personnels</translation> @@ -2429,6 +2432,7 @@ <translation id="7669271284792375604">Les cyberpirates sur ce site pourraient tenter de vous inciter à installer des programmes qui nuisent à votre expérience de navigation (par exemple en changeant votre page d'accueil ou en affichant des annonces supplémentaires sur les sites que vous consultez).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Actions effectuées au moyen de données signalées comme étant confidentielles (1 action depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}one{Actions effectuées au moyen de données signalées comme étant confidentielles (# action depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}other{Actions effectuées au moyen de données signalées comme étant confidentielles (# actions depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Boîte aux lettres 6</translation> +<translation id="7675325315208090829">Gérer vos modes de paiement…</translation> <translation id="7676643023259824263">Recherche de texte du presse-papiers, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Affichez et gérez votre historique de navigation dans les paramètres de Chrome</translation> <translation id="7679947978757153706">Baseball</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 5fd3caa..0275baba 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -1101,6 +1101,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> est bloqué</translation> <translation id="3978338123949022456">Mode Recherche ; saisissez une requête et appuyez sur Entrée pour effectuer une recherche avec "<ph name="KEYWORD_SUFFIX" />"</translation> <translation id="398470910934384994">Oiseaux</translation> +<translation id="3985750352229496475">Gérer les adresses…</translation> <translation id="3986705137476756801">Désactiver les sous-titres instantanés pour le moment</translation> <translation id="3987940399970879459">Moins de 1 Mo</translation> <translation id="3990250421422698716">Décalage</translation> @@ -1228,6 +1229,7 @@ <translation id="4305666528087210886">Impossible d'accéder à votre fichier</translation> <translation id="4306529830550717874">Enregistrer l'adresse ?</translation> <translation id="4306812610847412719">presse-papiers</translation> +<translation id="4310070645992025887">Effectuer une recherche parmi vos parcours</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquer (par défaut)</translation> <translation id="4314815835985389558">Gérer la synchronisation</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">Zone</translation> <translation id="6846340164947227603">Utiliser un numéro de carte virtuelle…</translation> <translation id="6852204201400771460">Actualiser l'application ?</translation> +<translation id="6857776781123259569">Gérer les mots de passe…</translation> <translation id="686485648936420384">Ressources pour les consommateurs</translation> <translation id="6865412394715372076">Impossible de valider cette carte pour le moment</translation> <translation id="6869334554832814367">Prêts personnels</translation> @@ -2439,6 +2442,7 @@ <translation id="7669271284792375604">Des individus malveillants à l'œuvre sur ce site pourraient vous inciter à installer des programmes qui nuisent à votre confort de navigation (par exemple, en changeant votre page d'accueil ou en affichant des annonces supplémentaires sur les sites que vous consultez.</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Actions effectuées sur des données signalées comme confidentielles (1 action depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}one{Actions effectuées sur des données signalées comme confidentielles (# action depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}other{Actions effectuées sur des données signalées comme confidentielles (# actions depuis la connexion). <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Boîte aux lettres 6</translation> +<translation id="7675325315208090829">Gérer les modes de paiement…</translation> <translation id="7676643023259824263">Rechercher le texte du presse-papier "<ph name="TEXT" />"</translation> <translation id="7679367271685653708">Affichez et gérez votre historique de navigation dans les paramètres Chrome</translation> <translation id="7679947978757153706">Base-ball</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index 4d36ca4..cb81367 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> está bloqueado</translation> <translation id="3978338123949022456">Modo de busca. Escribe unha consulta e preme Introducir para facer a busca con <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Aves</translation> +<translation id="3985750352229496475">Xestiona os enderezos…</translation> <translation id="3986705137476756801">Desactivar polo momento a función Subtítulos instantáneos</translation> <translation id="3987940399970879459">Menos de 1 MB</translation> <translation id="3990250421422698716">Compensación mediante empurro</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">Non se puido acceder ao ficheiro</translation> <translation id="4306529830550717874">Queres gardar o enderezo?</translation> <translation id="4306812610847412719">portapapeis</translation> +<translation id="4310070645992025887">Busca os teus percorridos</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquear (predeterminado)</translation> <translation id="4314815835985389558">Xestionar sincronización</translation> @@ -2111,6 +2113,7 @@ <translation id="6839929833149231406">Área</translation> <translation id="6846340164947227603">Usar un número de conta virtual…</translation> <translation id="6852204201400771460">Queres volver cargar a aplicación?</translation> +<translation id="6857776781123259569">Xestiona os contrasinais…</translation> <translation id="686485648936420384">Recursos para consumidores</translation> <translation id="6865412394715372076">Esta tarxeta non puido verificarse neste momento</translation> <translation id="6869334554832814367">Préstamos persoais</translation> @@ -2437,6 +2440,7 @@ <translation id="7669271284792375604">Os atacantes deste sitio poden tentar enganarte para que instales programas que afectan negativamente á túa experiencia de navegación (por exemplo, cambiando a páxina de inicio ou mostrando anuncios adicionais nos sitios que visitas).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Accións realizadas con datos marcados como confidenciais (1 acción desde o inicio de sesión). <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" />}other{Accións realizadas con datos marcados como confidenciais (# accións desde o inicio de sesión). <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Caixa de correo 6</translation> +<translation id="7675325315208090829">Xestiona os métodos de pago...</translation> <translation id="7676643023259824263">Buscar texto do portapapeis, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Ver e xestionar o teu historial de navegación na configuración de Chrome</translation> <translation id="7679947978757153706">Béisbol</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index 2c943fb..1e8adfc 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -898,6 +898,7 @@ <translation id="3399952811970034796">Adresa za dostavu</translation> <translation id="3402261774528610252">Veza za učitavanje ove web-lokacije koristila je TLS 1.0 ili TLS 1.1, koji su obustavljeni i onemogućit će se. Nakon onemogućivanja korisnici neće moći učitati ovu web-lokaciju. Poslužitelj bi trebao omogućiti TLS 1.2 ili noviju verziju.</translation> <translation id="3405664148539009465">Prilagodi fontove</translation> +<translation id="3407789382767355356">prijava treće strane</translation> <translation id="3409896703495473338">Upravljajte sigurnosnim postavkama</translation> <translation id="3414952576877147120">Veličina:</translation> <translation id="3417660076059365994">Datoteke koje prenesete ili priložite šalju se Google Cloudu ili trećim stranama na analizu. Na primjer, mogu se pregledavati radi otkrivanja osjetljivih podataka ili zlonamjernog softvera.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index ab6e7e7..82ff11f 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -1098,6 +1098,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> è bloccato</translation> <translation id="3978338123949022456">Modalità di ricerca, digita una query e premi Invio per cercare con <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Uccelli</translation> +<translation id="3985750352229496475">Gestisci indirizzi…</translation> <translation id="3986705137476756801">Disattiva Sottotitoli in tempo reale per ora</translation> <translation id="3987940399970879459">Meno di 1 MB</translation> <translation id="3990250421422698716">Offset jog</translation> @@ -1225,6 +1226,7 @@ <translation id="4305666528087210886">Impossibile accedere al file</translation> <translation id="4306529830550717874">Vuoi salvare l'indirizzo?</translation> <translation id="4306812610847412719">appunti</translation> +<translation id="4310070645992025887">Cerca nei percorsi</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blocca (predefinita)</translation> <translation id="4314815835985389558">Gestisci sincronizzazione</translation> @@ -2108,6 +2110,7 @@ <translation id="6839929833149231406">Area</translation> <translation id="6846340164947227603">Usa un numero di carta virtuale…</translation> <translation id="6852204201400771460">Ricaricare l'app?</translation> +<translation id="6857776781123259569">Gestisci password…</translation> <translation id="686485648936420384">Risorse per i consumatori</translation> <translation id="6865412394715372076">Al momento non è possibile verificare questa carta.</translation> <translation id="6869334554832814367">Prestiti personali</translation> @@ -2434,6 +2437,7 @@ <translation id="7669271284792375604">I malintenzionati su questo sito potrebbero cercare di indurti con l'inganno a installare programmi che danneggiano la tua navigazione (ad esempio cambiando la tua pagina iniziale o mostrando annunci extra sui siti che visiti).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Azioni intraprese con dati segnalati come riservati (1 azione dall'accesso). <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" />}other{Azioni intraprese con dati segnalati come riservati (# azioni dall'accesso). <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Mailbox 6</translation> +<translation id="7675325315208090829">Gestisci metodi di pagamento…</translation> <translation id="7676643023259824263">Cerca testo negli appunti, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Visualizza e gestisci la tua cronologia di navigazione nelle impostazioni di Chrome</translation> <translation id="7679947978757153706">Baseball</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 6b47a3d..94558c5b 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -1097,6 +1097,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> はブロックされています</translation> <translation id="3978338123949022456">検索モードです。クエリを入力して Enter キーを押すと、<ph name="KEYWORD_SUFFIX" /> で検索できます</translation> <translation id="398470910934384994">鳥</translation> +<translation id="3985750352229496475">住所を管理...</translation> <translation id="3986705137476756801">今回のみ自動字幕起こしをオフにする</translation> <translation id="3987940399970879459">1 MB 未満</translation> <translation id="3990250421422698716">ジョグ オフセット</translation> @@ -1219,6 +1220,7 @@ <translation id="4305666528087210886">ファイルにアクセスできませんでした</translation> <translation id="4306529830550717874">住所を保存しますか?</translation> <translation id="4306812610847412719">クリップボード</translation> +<translation id="4310070645992025887">ジャーニーを検索</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">ブロック(デフォルト)</translation> <translation id="4314815835985389558">同期の管理</translation> @@ -2103,6 +2105,7 @@ <translation id="6839929833149231406">地区</translation> <translation id="6846340164947227603">仮想カード番号を使用...</translation> <translation id="6852204201400771460">アプリを再読み込みしますか?</translation> +<translation id="6857776781123259569">パスワードを管理...</translation> <translation id="686485648936420384">消費者資源</translation> <translation id="6865412394715372076">現在、このカードを確認できません</translation> <translation id="6869334554832814367">個人ローン</translation> @@ -2429,6 +2432,7 @@ <translation id="7669271284792375604">このサイトを利用すると、悪意のあるユーザーによって、閲覧時のエクスペリエンスを損なうプログラム(ホームページを改ざんする、アクセス先のサイトに追加の広告を表示するなどのプログラム)をインストールするよう誘導される可能性があります。</translation> <translation id="7669907849388166732">{COUNT,plural, =1{機密として指定されたデータに対する操作(ログイン以降 1 件)。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" />}other{機密として指定されたデータに対する操作(ログイン以降 # 件)。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">用紙受け 6</translation> +<translation id="7675325315208090829">お支払い方法を管理...</translation> <translation id="7676643023259824263">クリップボードにあるテキスト<ph name="TEXT" />を検索します</translation> <translation id="7679367271685653708">Chrome の設定で閲覧履歴を表示、管理します</translation> <translation id="7679947978757153706">野球</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index 15986c6..20b3430 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> бөгелген</translation> <translation id="3978338123949022456">Іздеу режимі: <ph name="KEYWORD_SUFFIX" /> сөзі арқылы іздеу үшін сұрауды жазып, Enter пернесін басыңыз.</translation> <translation id="398470910934384994">Құстар</translation> +<translation id="3985750352229496475">Мекенжайларды басқару...</translation> <translation id="3986705137476756801">Live Caption функциясын қазір өшіру</translation> <translation id="3987940399970879459">1 МБ-тан аз</translation> <translation id="3990250421422698716">Бірқалыпты ығысу</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">Файлға кіру мүмкін болмады</translation> <translation id="4306529830550717874">Мекенжайды сақтау керек пе?</translation> <translation id="4306812610847412719">буфер</translation> +<translation id="4310070645992025887">Саяхаттарыңызды іздеңіз</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Бөгеу (әдепкі)</translation> <translation id="4314815835985389558">Синхрондауды басқару</translation> @@ -2111,6 +2113,7 @@ <translation id="6839929833149231406">Аудан</translation> <translation id="6846340164947227603">Виртуалды карта нөмірін пайдалану...</translation> <translation id="6852204201400771460">Қолданба қайта жүктелсін бе?</translation> +<translation id="6857776781123259569">Құпия сөздерді басқару...</translation> <translation id="686485648936420384">Тұтыну ресурстары</translation> <translation id="6865412394715372076">Бұл картаны дәл қазір растау мүмкін емес</translation> <translation id="6869334554832814367">Тұтынушылық несиелер</translation> @@ -2437,6 +2440,7 @@ <translation id="7669271284792375604">Осы сайттағы шабуылдаушылар шолу әрекетіңізге зиян келтіретін бағдарламаларды айлакерлікпен (мысалы, басты бетіңізді өзгерту немесе сіз кірген сайттарда қосымша жарнамалар көрсету арқылы) орнатқызуы мүмкін.</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Құпия деп белгіленген деректерге қатысты қолданылған әрекеттер (кіргелі бері 1 әрекет). <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" />}other{Құпия деп белгіленген деректерге қатысты қолданылған әрекеттер (кіргелі бері # әрекет). <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">6-шы пошта жәшігі</translation> +<translation id="7675325315208090829">Төлеу әдістерін басқару…</translation> <translation id="7676643023259824263">Буфер мәтінін (<ph name="TEXT" />) іздеу</translation> <translation id="7679367271685653708">Chrome параметрлерінен браузерді қолдану тарихын көру және басқару</translation> <translation id="7679947978757153706">Бейсбол</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb index 8f54623..94e0a60 100644 --- a/components/strings/components_strings_lo.xtb +++ b/components/strings/components_strings_lo.xtb
@@ -1101,6 +1101,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> ຖືກບລັອກໄວ້</translation> <translation id="3978338123949022456">ໂໝດຊອກຫາ, ພິມຄຳຊອກຫາແລ້ວກົດ Enter ເພື່ອຊອກຫາດ້ວຍ <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">ນົກ</translation> +<translation id="3985750352229496475">ຈັດການທີ່ຢູ່...</translation> <translation id="3986705137476756801">ປິດຄຳບັນຍາຍສົດສຳລັບຕອນນີ້</translation> <translation id="3987940399970879459">ໜ້ອຍກວ່າ 1 MB</translation> <translation id="3990250421422698716">ການຊົດເຊີຍພື້ນຜິວທີ່ບໍ່ສະໝໍ່າສະເໝີ</translation> @@ -1228,6 +1229,7 @@ <translation id="4305666528087210886">ບໍ່ສາມາດເຂົ້າເຖິງໄຟລ໌ຂອງທ່ານໄດ້</translation> <translation id="4306529830550717874">ບັນທຶກທີ່ຢູ່ບໍ?</translation> <translation id="4306812610847412719">ຄລິບບອດ</translation> +<translation id="4310070645992025887">ຊອກຫາບັນທຶກຂອງທ່ານ</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">ບລັອກ (ຄ່າເລີ່ມຕົ້ນ)</translation> <translation id="4314815835985389558">ຈັດການການຊິ້ງຂໍ້ມູນ</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">ເຂດ</translation> <translation id="6846340164947227603">ໃຊ້ໝາຍເລກບັດສະເໝືອນຈິງ...</translation> <translation id="6852204201400771460">ໂຫຼດແອັບຄືນໃໝ່ບໍ?</translation> +<translation id="6857776781123259569">ຈັດການລະຫັດຜ່ານ...</translation> <translation id="686485648936420384">ຂໍ້ມູນຜູ້ບໍລິໂພກ</translation> <translation id="6865412394715372076">ບໍ່ສາມາດຢັ້ງຢືນບັດນີ້ໄດ້ໃນຕອນນີ້</translation> <translation id="6869334554832814367">ການໃຫ້ຄຳປຶກສາກ່ຽວກັບສິນເຊື່ອສ່ວນບຸກຄົນ</translation> @@ -2438,6 +2441,7 @@ <translation id="7669271284792375604">ຜູ້ໂຈມຕີໃນເວັບໄຊນີ້ອາດຈະພະຍາຍາມຫຼອກໃຫ້ທ່ານຕິດຕັ້ງໂປຣແກຣມທີ່ເປັນອັນຕະລາຍຕໍ່ກັບປະສົບການທ່ອງເວັບຂອງທ່ານຢູ່ (ເຊັ່ນວ່າ ໂດຍການປ່ຽນໜ້າຫຼັກຂອງທ່ານ ຫຼື ສະແດງໂຄສະນາເພີ່ມເຕີມຢູ່ໃນເວັບໄຊທີ່ທ່ານເຂົ້າເບິ່ງ).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{ຄຳສັ່ງທີ່ໃຊ້ກັບຂໍ້ມູນແມ່ນຖືກໝາຍທຸງວ່າເປັນຄວາມລັບ (1 ຄຳສັ່ງຕັ້ງແຕ່ເຂົ້າສູ່ລະບົບມາ). <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" />}other{ຄຳສັ່ງທີ່ໃຊ້ກັບຂໍ້ມູນແມ່ນຖືກໝາຍທຸງວ່າເປັນຄວາມລັບ (# ຄຳສັ່ງຕັ້ງແຕ່ເຂົ້າສູ່ລະບົບມາ). <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">ກ່ອງຈົດໝາຍ 6</translation> +<translation id="7675325315208090829">ຈັດການວິທີການຈ່າຍເງິນ...</translation> <translation id="7676643023259824263">ຊອກຫາຂໍ້ຄວາມໃນຄລິບບອດ, <ph name="TEXT" /></translation> <translation id="7679367271685653708">ເບິ່ງ ແລະ ຈັດການປະຫວັດການທ່ອງເວັບຂອງທ່ານໃນການຕັ້ງຄ່າ Chrome</translation> <translation id="7679947978757153706">ເບສບອນ</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index c60685fd..54ae814 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861">Vietne <ph name="HOST_NAME" /> ir bloķēta</translation> <translation id="3978338123949022456">Meklēšanas režīms; ierakstiet vaicājumu un nospiediet taustiņu Enter, lai veiktu meklēšanu pakalpojumā <ph name="KEYWORD_SUFFIX" />.</translation> <translation id="398470910934384994">Putni</translation> +<translation id="3985750352229496475">Pārvaldīt adreses…</translation> <translation id="3986705137476756801">Pagaidām izslēgt subtitrus reāllaikā</translation> <translation id="3987940399970879459">Mazāk nekā 1 MB</translation> <translation id="3990250421422698716">Ofseta izlīdzināšana</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">Jūsu failam nevarēja piekļūt</translation> <translation id="4306529830550717874">Vai saglabāt adresi?</translation> <translation id="4306812610847412719">starpliktuve</translation> +<translation id="4310070645992025887">Meklēt jūsu ceļos</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloķēt (pēc noklusējuma)</translation> <translation id="4314815835985389558">Sinhronizācijas pārvaldība</translation> @@ -2111,6 +2113,7 @@ <translation id="6839929833149231406">Apgabals</translation> <translation id="6846340164947227603">Izmantot virtuālās kartes numuru...</translation> <translation id="6852204201400771460">Vai atkārtoti ielādēt lietotni?</translation> +<translation id="6857776781123259569">Pārvaldīt paroles…</translation> <translation id="686485648936420384">Patērētāju resursi</translation> <translation id="6865412394715372076">Pašlaik nevar verificēt šo karti.</translation> <translation id="6869334554832814367">Aizdevumi privātpersonām</translation> @@ -2437,6 +2440,7 @@ <translation id="7669271284792375604">Uzbrucēji šajā vietnē var mudināt jūs uz tādu programmu instalēšanu, kuras traucē pārlūkošanu (piemēram, mainot sākumlapu vai apmeklētajās vietnēs rādot papildu reklāmas).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Darbības ar datiem, kas atzīmēti kā konfidenciāli (viena darbība kopš pieteikšanās). <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" />}zero{Darbības ar datiem, kas atzīmēti kā konfidenciāli (# darbības kopš pieteikšanās). <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" />}one{Darbības ar datiem, kas atzīmēti kā konfidenciāli (# darbība kopš pieteikšanās). <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" />}other{Darbības ar datiem, kas atzīmēti kā konfidenciāli (# darbības kopš pieteikšanās). <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">6. pastkaste</translation> +<translation id="7675325315208090829">Pārvaldīt maksājumu veidus…</translation> <translation id="7676643023259824263">Meklēt starpliktuves tekstu <ph name="TEXT" /></translation> <translation id="7679367271685653708">Chrome iestatījumos skatīt un pārvaldīt pārlūkošanas vēsturi</translation> <translation id="7679947978757153706">Beisbols</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index bf36fba6..e5e557b 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> अवरोधित केले आहे</translation> <translation id="3978338123949022456">शोध मोड, क्वेरी टाइप करा आणि <ph name="KEYWORD_SUFFIX" /> सह शोधण्यासाठी एंटर दाबा</translation> <translation id="398470910934384994">पक्षी</translation> +<translation id="3985750352229496475">पत्ते व्यवस्थापित करा…</translation> <translation id="3986705137476756801">आतापुरते लाइव्ह कॅप्शन बंद करा</translation> <translation id="3987940399970879459">1 MB पेक्षा कमी</translation> <translation id="3990250421422698716">जॉग ऑफसेट</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">तुमची फाइल अॅक्सेस करता आली नाही</translation> <translation id="4306529830550717874">पत्ता सेव्ह करायचा आहे का?</translation> <translation id="4306812610847412719">क्लिपबोर्ड</translation> +<translation id="4310070645992025887">तुमचे प्रवास शोधा</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">अवरोधित करा (डीफॉल्ट)</translation> <translation id="4314815835985389558">सिंक व्यवस्थापित करा</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">क्षेत्र</translation> <translation id="6846340164947227603">व्हर्च्युअल कार्ड नंबर वापरा...</translation> <translation id="6852204201400771460">ॲप रीलोड करायचे?</translation> +<translation id="6857776781123259569">पासवर्ड व्यवस्थापित करा…</translation> <translation id="686485648936420384">ग्राहक संसाधने</translation> <translation id="6865412394715372076">या कार्डची पडताळणी आता करू शकत नाही</translation> <translation id="6869334554832814367">वैयक्तिक कर्ज</translation> @@ -2438,6 +2441,7 @@ <translation id="7669271284792375604">या साइट वरील आक्रमणकर्ते कदाचित तुमच्या ब्राउझिंग अनुभवास हानी पोहोचविणारे प्रोग्राम (उदाहरणार्थ, तुमचे होम बदलून किंवा तुम्ही भेट देता त्या साइटवर अतिरिक्त जाहिराती दर्शवून) इंस्टॉल करून तुमची फसवणूक करण्याचा प्रयत्न करू शकतात.</translation> <translation id="7669907849388166732">{COUNT,plural, =1{डेटाशी संबंधित कृती गोपनीय म्हणून फ्लॅग केल्या (लॉगिन केल्यापासून एक कृती). <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" />}other{डेटाशी संबंधित कृती गोपनीय म्हणून फ्लॅग केल्या (लॉगिन केल्यापासून # कृती). <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">मेलबॉक्स ६</translation> +<translation id="7675325315208090829">पेमेंट पद्धती व्यवस्थापित करा…</translation> <translation id="7676643023259824263">क्लिपबोर्ड मजकूर, <ph name="TEXT" /> शोधा</translation> <translation id="7679367271685653708">Chrome सेटिंग्जमध्ये तुमचा ब्राउझिंग इतिहास पहा आणि व्यवस्थापित करा</translation> <translation id="7679947978757153706">बेसबॉल</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb index 76efb661..9711ffa87 100644 --- a/components/strings/components_strings_my.xtb +++ b/components/strings/components_strings_my.xtb
@@ -1101,6 +1101,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> ကိုပိတ်ဆို့ထားသည်</translation> <translation id="3978338123949022456">ရှာဖွေရေးမုဒ်။ <ph name="KEYWORD_SUFFIX" /> ဖြင့်ရှာဖွေရန် မေးမြန်းချက်ကို ရိုက်ပြီး Enter ခလုတ် နှိပ်ပါ</translation> <translation id="398470910934384994">ငှက်များ</translation> +<translation id="3985750352229496475">လိပ်စာများ စီမံရန်...</translation> <translation id="3986705137476756801">'တိုက်ရိုက်စာတန်း' ကို ယခု ပိတ်ရန်</translation> <translation id="3987940399970879459">၁ MB ထက်နည်းပါသည်</translation> <translation id="3990250421422698716">လည်ပတ်မှု ချိန်ညှိရန်</translation> @@ -1229,6 +1230,7 @@ <translation id="4305666528087210886">သင့်ဖိုင်ကို သုံး၍မရနိုင်ပါ</translation> <translation id="4306529830550717874">လိပ်စာ သိမ်းမလား။</translation> <translation id="4306812610847412719">ကလစ်ဘုတ်</translation> +<translation id="4310070645992025887">သင့် ‘ခရီးစဉ်များ’ ရှာရန်</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">ပိတ်ဆို့ရန် (မူရင်း)</translation> <translation id="4314815835985389558">စင့်ခ်ကို စီမံရန်</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">နယ်မြေ</translation> <translation id="6846340164947227603">အသွင်တု ကတ်နံပါတ်ကို အသုံးပြုပါ...</translation> <translation id="6852204201400771460">အက်ပ်ကို ပြန်လည်စတင်လိုပါသလား။</translation> +<translation id="6857776781123259569">စကားဝှက်များ စီမံရန်…</translation> <translation id="686485648936420384">အသုံးပြုသူရင်းမြစ်များ</translation> <translation id="6865412394715372076">ဤကတ်ကို ယခုအတည်ပြု၍ မရသေးပါ</translation> <translation id="6869334554832814367">ကိုယ်ရေးကိုယ်တာချေးငွေများ</translation> @@ -2439,6 +2442,7 @@ <translation id="7669271284792375604">ဤဆိုက်ပေါ်ရှိ တိုက်ခိုက်သူများသည်သင့်အင်တာနက် အသုံးပြုမှု အတွေ့အကြုံကို ထိခိုက်စေမည့် (ဥပမာ၊ သင့်ပင်မစာမျက်နှာကို ပြောင်းလဲခြင်း သို့မဟုတ် သင်သွားရောက်သည့် ဆိုက်များတွင် နောက်ထပ် ကြော်ငြာများ ပြသခြင်း) ပရိုဂရမ်များကို သင့်အား လှည့်ဖြား၍ ထည့်သွင်းခိုင်းမည်ဖြစ်သည်။</translation> <translation id="7669907849388166732">{COUNT,plural, =1{ဒေတာသုံးထားသည့် လုပ်ဆောင်ချက်များကို လျှို့ဝှက်အဖြစ် အလံပြထားသည် (အကောင့်ဝင်ပြီးကတည်းက လုပ်ဆောင်ချက် 1 ခု)။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" />}other{ဒေတာသုံးထားသည့် လုပ်ဆောင်ချက်များကို လျှို့ဝှက်အဖြစ် အလံပြထားသည် (အကောင့်ဝင်ပြီးကတည်းက လုပ်ဆောင်ချက် # ခု)။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">စာတိုက်ပုံး ၆</translation> +<translation id="7675325315208090829">ငွေပေးချေနည်းလမ်းများ စီမံရန်...</translation> <translation id="7676643023259824263">ကလစ်ဘုတ်စာသား <ph name="TEXT" /> အတွက် ရှာဖွေမှု</translation> <translation id="7679367271685653708">Chrome ဆက်တင်များတွင် သင့်ကြည့်ရှုခြင်းမှတ်တမ်းကို ကြည့်ရှုစီမံပါ</translation> <translation id="7679947978757153706">ဘေ့စ်ဘော</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index 583df849..6d1bac9 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -1094,6 +1094,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" />କୁ ବ୍ଲକ୍ କରାଯାଇଛି</translation> <translation id="3978338123949022456">ସନ୍ଧାନ ମୋଡ, ଏକ କ୍ୱେରୀ ଟାଇପ କରନ୍ତୁ ଏବଂ <ph name="KEYWORD_SUFFIX" /> ମାଧ୍ୟମରେ ସନ୍ଧାନ କରିବାକୁ Enter ଦବାନ୍ତୁ</translation> <translation id="398470910934384994">ପକ୍ଷୀଗୁଡ଼ିକ</translation> +<translation id="3985750352229496475">ଠିକଣାଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ...</translation> <translation id="3986705137476756801">ବର୍ତ୍ତମାନ ପାଇଁ ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="3987940399970879459">1 MBରୁ କମ୍ ଅଛି</translation> <translation id="3990250421422698716">ଜଗ୍ ଅଫ୍ସେଟ୍</translation> @@ -1216,6 +1217,7 @@ <translation id="4305666528087210886">ଆପଣଙ୍କ ଫାଇଲକୁ ଆକ୍ସେସ୍ କରାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="4306529830550717874">ଠିକଣା ସେଭ୍ କରିବେ?</translation> <translation id="4306812610847412719">କ୍ଲିପବୋର୍ଡ</translation> +<translation id="4310070645992025887">ଆପଣଙ୍କ ଯାତ୍ରାଗୁଡ଼ିକୁ ସନ୍ଧାନ କରନ୍ତୁ</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">ବ୍ଲକ୍ କରନ୍ତୁ (ଡିଫଲ୍ଟ)</translation> <translation id="4314815835985389558">ସିଙ୍କ ପରିଚାଳନା କରନ୍ତୁ</translation> @@ -2099,6 +2101,7 @@ <translation id="6839929833149231406">କ୍ଷେତ୍ର</translation> <translation id="6846340164947227603">ଏକ ଭର୍ଚୁଆଲ୍ କାର୍ଡ ନମ୍ବର ବ୍ୟବହାର କରନ୍ତୁ...</translation> <translation id="6852204201400771460">ଆପ୍କୁ ରିଲୋଡ୍ କରିବେ କି?</translation> +<translation id="6857776781123259569">ପାସୱାର୍ଡଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ...</translation> <translation id="686485648936420384">ଉପଭୋକ୍ତା ରିସୋର୍ସଗୁଡ଼ିକ</translation> <translation id="6865412394715372076">ବର୍ତ୍ତମାନ ଏହି କାର୍ଡ ଯାଞ୍ଚ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="6869334554832814367">ବ୍ୟକ୍ତିଗତ ଋଣ</translation> @@ -2425,6 +2428,7 @@ <translation id="7669271284792375604">ଏହି ସାଇଟ୍ରେ ଥିବା ଆକ୍ରମଣକାରୀମାନେ କୌଶଳରେ ଆପଣଙ୍କ ଦ୍ଵାରା ଏପରି ପ୍ରୋଗ୍ରାମ୍ ଇନ୍ଷ୍ଟଲ୍ କରିବାକୁ ଚେଷ୍ଟା କରିପାରନ୍ତି ଆପଣଙ୍କର ବ୍ରାଉଜିଂ ଅଭିଜ୍ଞତାର କ୍ଷତି କରିପାରେ (ଉଦାହରଣ ସ୍ଵରୂପ, ଆପଣଙ୍କର ମୂଳପୃଷ୍ଠାରେ ପରିବର୍ତ୍ତନ କରିବା କିମ୍ବା ଆପଣ ଦେଖୁଥିବା ସାଇଟ୍ଗୁଡ଼ିକରେ ଅତିରିକ୍ତ ବିଜ୍ଞାପନ ପ୍ରଦର୍ଶନ କରିବା)।</translation> <translation id="7669907849388166732">{COUNT,plural, =1{ଗୋପନୀୟ ଭାବରେ ଫ୍ଲାଗ କରାଯାଇଥିବା ଡାଟା ପାଇଁ ନିଆଯାଇଥିବା ପଦକ୍ଷେପ (ଲଗଇନ ପରେ 1ଟି ପଦକ୍ଷେପ)। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" />}other{ଗୋପନୀୟ ଭାବରେ ଫ୍ଲାଗ କରାଯାଇଥିବା ଡାଟା ପାଇଁ ନିଆଯାଇଥିବା ପଦକ୍ଷେପ (ଲଗଇନ ପରେ #ଟି ପଦକ୍ଷେପ)। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">ମେଲବକ୍ସ 6</translation> +<translation id="7675325315208090829">ପେମେଣ୍ଟ ପଦ୍ଧତିଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ...</translation> <translation id="7676643023259824263">କ୍ଲିପ୍ବୋର୍ଡ ଟେକ୍ସଟ୍ <ph name="TEXT" /> ଖୋଜନ୍ତୁ</translation> <translation id="7679367271685653708">Chrome ସେଟିଂସରେ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଇତିହାସ ଦେଖନ୍ତୁ ଏବଂ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="7679947978757153706">ବେସବଲ</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 4c68f7a..b3271ca2 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -1097,6 +1097,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> está bloqueado</translation> <translation id="3978338123949022456">Modo de pesquisa: digite uma consulta e pressione Enter para pesquisar com <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Pássaros</translation> +<translation id="3985750352229496475">Gerenciar endereços…</translation> <translation id="3986705137476756801">Desativar "Legenda instantânea" por enquanto</translation> <translation id="3987940399970879459">Menos de 1 MB</translation> <translation id="3990250421422698716">Ajustar desvio</translation> @@ -1219,6 +1220,7 @@ <translation id="4305666528087210886">Não foi possível acessar seu arquivo</translation> <translation id="4306529830550717874">Salvar endereço?</translation> <translation id="4306812610847412719">área de transferência</translation> +<translation id="4310070645992025887">Pesquisar suas jornadas</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Bloquear (padrão)</translation> <translation id="4314815835985389558">Gerenciar sincronização</translation> @@ -2103,6 +2105,7 @@ <translation id="6839929833149231406">Área</translation> <translation id="6846340164947227603">Usar um número de cartão virtual…</translation> <translation id="6852204201400771460">Recarregar app?</translation> +<translation id="6857776781123259569">Gerenciar senhas…</translation> <translation id="686485648936420384">Recursos para o consumidor</translation> <translation id="6865412394715372076">Não é possível verificar este cartão no momento</translation> <translation id="6869334554832814367">Empréstimos pessoais</translation> @@ -2429,6 +2432,7 @@ <translation id="7669271284792375604">Invasores nesse site podem tentar enganar você para que instale programas que prejudicam sua experiência de navegação (por exemplo, alterando sua página inicial ou mostrando mais anúncios nos sites que você visita).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Ações realizadas em dados marcados como confidenciais (1 ação desde o login). <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" />}one{Ações realizadas em dados marcados como confidenciais (# ação desde o login). <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" />}other{Ações realizadas em dados marcados como confidenciais (# ações desde o login). <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Caixa de e-mails 6</translation> +<translation id="7675325315208090829">Gerenciar formas de pagamento…</translation> <translation id="7676643023259824263">Pesquisar um texto na área de transferência, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Ver e gerenciar seu histórico de navegação nas configurações do Chrome</translation> <translation id="7679947978757153706">Beisebol</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index c84e496..bfd7b80 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -898,6 +898,7 @@ <translation id="3399952811970034796">Endereço de entrega</translation> <translation id="3402261774528610252">A ligação utilizada para carregar este site utilizou as versões TLS 1.0 ou TLS 1.1, que foram descontinuadas e serão desativadas no futuro. Após a desativação, os utilizadores serão impedidos de carregar este site. O servidor deverá ativar a versão TLS 1.2 ou posterior.</translation> <translation id="3405664148539009465">Personalizar tipos de letra</translation> +<translation id="3407789382767355356">início de sessão de terceiros</translation> <translation id="3409896703495473338">Gerir definições de segurança</translation> <translation id="3414952576877147120">Tamanho:</translation> <translation id="3417660076059365994">Os ficheiros que carrega ou anexa são enviados para o Google Cloud ou para terceiros para análise. Por exemplo, podem ser analisados quanto a dados confidenciais ou software malicioso.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index b55cc3f..84b266e 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -898,6 +898,7 @@ <translation id="3399952811970034796">Adresă de livrare</translation> <translation id="3402261774528610252">Conexiunea folosită pentru a încărca acest site a utilizat TLS 1.0 sau TLS 1.1, care sunt învechite și vor fi dezactivate în viitor. După dezactivare, utilizatorii nu vor mai putea să încarce site-ul. Serverul ar trebui să activeze TLS 1.2 sau o versiune ulterioară.</translation> <translation id="3405664148539009465">Personalizați fonturile</translation> +<translation id="3407789382767355356">conectarea prin terți</translation> <translation id="3409896703495473338">Gestionează setările de securitate</translation> <translation id="3414952576877147120">Dimensiune:</translation> <translation id="3417660076059365994">Fișierele pe care le încarci sau atașezi sunt trimise la Google Cloud sau la terți spre analiză. De exemplu, se pot căuta date sensibile sau programe malware.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 415a408..d63994d 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -1096,6 +1096,7 @@ <translation id="3973234410852337861">Сайт <ph name="HOST_NAME" /> заблокирован</translation> <translation id="3978338123949022456">Чтобы выполнить поиск по ключевому слову "<ph name="KEYWORD_SUFFIX" />", запустите режим поиска, введите запрос и нажмите Ввод.</translation> <translation id="398470910934384994">Птицы</translation> +<translation id="3985750352229496475">Настроить адреса</translation> <translation id="3986705137476756801">Отключить автоматические субтитры</translation> <translation id="3987940399970879459">Менее 1 МБ</translation> <translation id="3990250421422698716">Смещение</translation> @@ -1218,6 +1219,7 @@ <translation id="4305666528087210886">Не удалось получить доступ к файлу</translation> <translation id="4306529830550717874">Сохранить адрес?</translation> <translation id="4306812610847412719">Буфер обмена</translation> +<translation id="4310070645992025887">Поиск по теме</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Блокировать (по умолчанию)</translation> <translation id="4314815835985389558">Настройки синхронизации</translation> @@ -2102,6 +2104,7 @@ <translation id="6839929833149231406">Район</translation> <translation id="6846340164947227603">Использовать номер виртуальной карты</translation> <translation id="6852204201400771460">Перезапустить приложение?</translation> +<translation id="6857776781123259569">Настроить пароли</translation> <translation id="686485648936420384">Ресурсы для потребителей</translation> <translation id="6865412394715372076">Невозможно подтвердить карту.</translation> <translation id="6869334554832814367">Потребительские кредиты</translation> @@ -2428,6 +2431,7 @@ <translation id="7669271284792375604">Посещение этого сайта может привести к установке вредоносного ПО, которое будет мешать работе браузера (например, меняя стартовую страницу или показывая дополнительную рекламу на сайтах).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Действия с данными, помеченными как конфиденциальные (с момента входа обнаружено 1 действие). <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" />}one{Действия с данными, помеченными как конфиденциальные (с момента входа обнаружено # действие). <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" />}few{Действия с данными, помеченными как конфиденциальные (с момента входа обнаружено # действия). <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" />}many{Действия с данными, помеченными как конфиденциальные (с момента входа обнаружено # действий). <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" />}other{Действия с данными, помеченными как конфиденциальные (с момента входа обнаружено # действия). <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Почтовый ящик 6</translation> +<translation id="7675325315208090829">Настроить способы оплаты</translation> <translation id="7676643023259824263">Поиск по тексту "<ph name="TEXT" />" из буфера обмена</translation> <translation id="7679367271685653708">Посмотреть историю браузера в настройках Chrome и управлять ею</translation> <translation id="7679947978757153706">Бейсбол</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 436d118..ca631bc 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -898,6 +898,7 @@ <translation id="3399952811970034796">Naslov za dostavo</translation> <translation id="3402261774528610252">Povezava, prek katere je bilo naloženo to spletno mesto, uporablja standard TLS 1.0 ali TLS 1.1; ta standarda sta zastarela in bosta v prihodnje onemogočena. Ko bosta onemogočena, bo uporabnikom preprečeno naložiti to spletno mesto. V strežniku omogočite standard TLS 1.2 ali novejšega.</translation> <translation id="3405664148539009465">Prilagodi pisave</translation> +<translation id="3407789382767355356">prijava prek zunanjih ponudnikov</translation> <translation id="3409896703495473338">Upravljanje varnostnih nastavitev</translation> <translation id="3414952576877147120">Velikost:</translation> <translation id="3417660076059365994">Datoteke, ki jih naložite ali pripnete, so poslane v oblak Google Cloud ali drugim ponudnikom v analizo. Lahko so na primer pregledane glede tega, ali vsebujejo občutljive podatke ali zlonamerno programsko opremo.</translation> @@ -1100,6 +1101,7 @@ <translation id="3973234410852337861">Spletno mesto <ph name="HOST_NAME" /> je blokirano</translation> <translation id="3978338123949022456">Način za iskanje, vnesite poizvedbo in pritisnite tipko Enter, če želite iskati s tem: <ph name="KEYWORD_SUFFIX" />.</translation> <translation id="398470910934384994">Ptice</translation> +<translation id="3985750352229496475">Upravljanje naslovov …</translation> <translation id="3986705137476756801">Izklop samodejnih podnapisov za zdaj</translation> <translation id="3987940399970879459">Manj kot 1 MB</translation> <translation id="3990250421422698716">Zamik v načinu dela »jog«</translation> @@ -1227,6 +1229,7 @@ <translation id="4305666528087210886">Ni bilo mogoče dostopati do datoteke</translation> <translation id="4306529830550717874">Želite shraniti naslov?</translation> <translation id="4306812610847412719">odložišče</translation> +<translation id="4310070645992025887">Iščite po poteh</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blokira (privzeto)</translation> <translation id="4314815835985389558">Upravljanje sinhronizacije</translation> @@ -2111,6 +2114,7 @@ <translation id="6839929833149231406">Območje</translation> <translation id="6846340164947227603">Uporabi številko virtualne kartice ...</translation> <translation id="6852204201400771460">Želite znova naložiti aplikacijo?</translation> +<translation id="6857776781123259569">Upravljanje gesel …</translation> <translation id="686485648936420384">Potrošniški viri</translation> <translation id="6865412394715372076">Te kartice trenutno ni mogoče preveriti</translation> <translation id="6869334554832814367">Osebna posojila</translation> @@ -2437,6 +2441,7 @@ <translation id="7669271284792375604">Napadalci na tem spletnem mestu vas bodo morda poskusili zavesti, da bi namestili programe, ki škodljivo vplivajo na brskanje (na primer tako, da spremenijo vašo domačo stran ali na spletnih mestih, ki jih obiščete, prikazujejo dodatne oglase).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Izvedena dejanja s podatki, ki so označeni kot zaupni (od prijave je bilo 1 dejanje). <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" />}one{Izvedena dejanja s podatki, ki so označeni kot zaupni (od prijave je bilo # dejanje). <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" />}two{Izvedena dejanja s podatki, ki so označeni kot zaupni (od prijave sta bili # dejanji). <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" />}few{Izvedena dejanja s podatki, ki so označeni kot zaupni (od prijave so bila # dejanja). <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" />}other{Izvedena dejanja s podatki, ki so označeni kot zaupni (od prijave je bilo # dejanj). <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Nabiralnik 6</translation> +<translation id="7675325315208090829">Upravljanje plačilnih sredstev …</translation> <translation id="7676643023259824263">Iskanje besedila v odložišču, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Ogled in upravljanje zgodovine brskanja v Chromovih nastavitvah</translation> <translation id="7679947978757153706">Bejzbol</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index 65e326c..b5ea73ac 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> është bllokuar</translation> <translation id="3978338123949022456">Modaliteti i kërkimit; shkruaj një kërkesë dhe shtyp "Enter" për të kërkuar me <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Shpendët</translation> +<translation id="3985750352229496475">Menaxho adresat...</translation> <translation id="3986705137476756801">Çaktivizo "Titrat në çast" për momentin</translation> <translation id="3987940399970879459">Më pak se 1 MB</translation> <translation id="3990250421422698716">Zhvendosja e bordurës</translation> @@ -1225,6 +1226,7 @@ <translation id="4305666528087210886">Qasja te skedari ishte e pamundur</translation> <translation id="4306529830550717874">Të ruhet adresa?</translation> <translation id="4306812610847412719">kujtesa e fragmenteve</translation> +<translation id="4310070645992025887">Kërko për udhëtime</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blloko (parazgjedhja)</translation> <translation id="4314815835985389558">Menaxho sinkronizimin</translation> @@ -2108,6 +2110,7 @@ <translation id="6839929833149231406">Zona</translation> <translation id="6846340164947227603">Përdor një numër karte virtuale...</translation> <translation id="6852204201400771460">Dëshiron ta ringarkosh aplikacionin?</translation> +<translation id="6857776781123259569">Menaxho fjalëkalimet...</translation> <translation id="686485648936420384">Burimet e konsumatorit</translation> <translation id="6865412394715372076">Kjo kartë nuk mund të verifikohet për momentin</translation> <translation id="6869334554832814367">Kreditë personale</translation> @@ -2434,6 +2437,7 @@ <translation id="7669271284792375604">Sulmuesit në këtë sajt mund të përpiqen të të mashtrojnë të instalosh programe që dëmtojnë përvojën tënde të shfletimit (për shembull, duke ndryshuar faqen kryesore ose duke shfaqur reklama shtesë në sajtet që viziton).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Veprimet e kryera me të dhënat e raportuara si konfidenciale (1 veprim që nga identifikimi). <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" />}other{Veprimet e kryera me të dhënat e raportuara si konfidenciale (# veprime që nga identifikimi). <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Kutia postare 6</translation> +<translation id="7675325315208090829">Menaxho mënyrat e pagesës...</translation> <translation id="7676643023259824263">Kërko për tekstin e kujtesës së fragmenteve, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Shiko dhe menaxho historikun e shfletimit te cilësimet e Chrome</translation> <translation id="7679947978757153706">Bejsbolli</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 8b11c1bf..ad7710f 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -1101,6 +1101,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> har blockerats</translation> <translation id="3978338123949022456">Sökläge: skriv en sökfråga och tryck på Retur för sökning på <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Fåglar</translation> +<translation id="3985750352229496475">Hantera adresser …</translation> <translation id="3986705137476756801">Inaktivera Live Caption tills vidare</translation> <translation id="3987940399970879459">Mindre än 1 MB</translation> <translation id="3990250421422698716">Stötvis förskjutning</translation> @@ -1228,6 +1229,7 @@ <translation id="4305666528087210886">Ingen åtkomst till filen</translation> <translation id="4306529830550717874">Vill du spara adressen?</translation> <translation id="4306812610847412719">urklipp</translation> +<translation id="4310070645992025887">Sök bland dina sökningar</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Blockera (standard)</translation> <translation id="4314815835985389558">Hantera synkronisering</translation> @@ -2112,6 +2114,7 @@ <translation id="6839929833149231406">Område</translation> <translation id="6846340164947227603">Använd ett virtuellt kreditkortsnummer …</translation> <translation id="6852204201400771460">Vill du läsa in appen igen?</translation> +<translation id="6857776781123259569">Hantera lösenord …</translation> <translation id="686485648936420384">Resurser för konsumenter</translation> <translation id="6865412394715372076">Det går inte att verifiera kortet just nu</translation> <translation id="6869334554832814367">Privatlån</translation> @@ -2438,6 +2441,7 @@ <translation id="7669271284792375604">Angripare på den här webbplatsen kan försöka lura dig att installera program som skadar din webbupplevelse (till exempel genom att byta ut din startsida eller visa extra annonser på webbplatser som du besöker).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Åtgärder som gjorts med data som markerats som konfidentiell (1 åtgärd sedan inloggningen) <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" />}other{Åtgärder som gjorts med data som markerats som konfidentiell (# åtgärder sedan inloggningen) <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Postfack 6</translation> +<translation id="7675325315208090829">Hantera betalningsmetoder …</translation> <translation id="7676643023259824263">Sök efter texten i Urklipp, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Öppna och hantera webbhistoriken i Chrome-inställningarna</translation> <translation id="7679947978757153706">Baseboll</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index ac68c0d2..95c5bbc 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -1100,6 +1100,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> imezuiwa.</translation> <translation id="3978338123949022456">Hali ya kutafuta, andika hoja na ubonyeze Enter ili utafute kwa kutumia <ph name="KEYWORD_SUFFIX" /></translation> <translation id="398470910934384994">Ndege</translation> +<translation id="3985750352229496475">Dhibiti Anwani...</translation> <translation id="3986705137476756801">Zima kipengele cha Manukuu Papo Hapo kwa sasa</translation> <translation id="3987940399970879459">Chini ya MB 1</translation> <translation id="3990250421422698716">Kunja kuwa katika muundo wa Z</translation> @@ -1227,6 +1228,7 @@ <translation id="4305666528087210886">Imeshindwa kufikia faili yako</translation> <translation id="4306529830550717874">Ungependa kuhifadhi anwani?</translation> <translation id="4306812610847412719">ubao wa kunakili</translation> +<translation id="4310070645992025887">Tafuta Ziara zako</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Zuia (chaguomsingi)</translation> <translation id="4314815835985389558">Dhibiti usawazishaji</translation> @@ -2111,6 +2113,7 @@ <translation id="6839929833149231406">Eneo</translation> <translation id="6846340164947227603">Tumia nambari ya kadi pepe...</translation> <translation id="6852204201400771460">Ungependa kupakia programu upya?</translation> +<translation id="6857776781123259569">Dhibiti Manenosiri...</translation> <translation id="686485648936420384">Rasilimali za watumiaji</translation> <translation id="6865412394715372076">Imeshindwa kuthibitisha kadi hii kwa sasa</translation> <translation id="6869334554832814367">Mikopo binafsi</translation> @@ -2435,6 +2438,7 @@ <translation id="7669271284792375604">Wavamizi kwenye tovuti hii wanaweza kujaribu kukulaghai kusakinisha programu zinazoathiri hali yako ya kuvinjari (kwa mfano, kwa kubadilisha ukurasa wako wa kwanza au kwa kuonyesha matangazo ya ziada kwenye tovuti unazotembelea).</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Hatua zilizochukuliwa kwenye data iliyotiwa alama kuwa ni ya siri (hatua moja tangu wakati wa kuingia katika akaunti). <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" />}other{Hatua zilizochukuliwa kwenye data iliyotiwa alama kuwa ni ya siri (hatua # tangu wakati wa kuingia katika akaunti). <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Kikasha cha barua cha sita</translation> +<translation id="7675325315208090829">Dhibiti Njia za Kulipa...</translation> <translation id="7676643023259824263">Tafuta maandishi ya ubao wa kunakili, <ph name="TEXT" /></translation> <translation id="7679367271685653708">Angalia na udhibiti historia yako ya kuvinjari katika mipangilio ya Chrome</translation> <translation id="7679947978757153706">Mpira wa besiboli</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 6979cc7..2b55d15 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -1098,6 +1098,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> engellendi</translation> <translation id="3978338123949022456">Arama modu, <ph name="KEYWORD_SUFFIX" /> ile arama yapmak için bir sorgu yazıp Enter'a basın</translation> <translation id="398470910934384994">Kuşlar</translation> +<translation id="3985750352229496475">Adresleri Yönet...</translation> <translation id="3986705137476756801">Canlı Altyazı'yı şimdilik kapat</translation> <translation id="3987940399970879459">1 MB'tan az</translation> <translation id="3990250421422698716">Jog ofset</translation> @@ -1221,6 +1222,7 @@ <translation id="4305666528087210886">Dosyanıza erişilemedi</translation> <translation id="4306529830550717874">Adres kaydedilsin mi?</translation> <translation id="4306812610847412719">pano</translation> +<translation id="4310070645992025887">Arama yolculuklarınızı arayın</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">Engelle (varsayılan)</translation> <translation id="4314815835985389558">Senkronizasyonu yönetin</translation> @@ -2105,6 +2107,7 @@ <translation id="6839929833149231406">Bölge</translation> <translation id="6846340164947227603">Sanal kart numarası kullanın...</translation> <translation id="6852204201400771460">Uygulama yeniden yüklensin mi?</translation> +<translation id="6857776781123259569">Şifreleri Yönet...</translation> <translation id="686485648936420384">Tüketici kaynakları</translation> <translation id="6865412394715372076">Bu kart şu anda doğrulanamıyor</translation> <translation id="6869334554832814367">Bireysel krediler</translation> @@ -2431,6 +2434,7 @@ <translation id="7669271284792375604">Bu sitedeki saldırganlar web'e göz atma deneyiminize zarar veren programlar yüklemeniz için sizi kandırmayı (örneğin ana sayfanızı değiştirerek ya da ziyaret ettiğiniz sitelerde ek reklamlar görüntüleyerek) deneyebilir.</translation> <translation id="7669907849388166732">{COUNT,plural, =1{Gizli olarak işaretlenmiş verilerle yapılan işlemler (girişten itibaren 1 işlem). <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" />}other{Gizli olarak işaretlenmiş verilerle yapılan işlemler (girişten itibaren # işlem). <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">Posta kutusu 6</translation> +<translation id="7675325315208090829">Ödeme Yöntemlerini yönet...</translation> <translation id="7676643023259824263">Panoda metni (<ph name="TEXT" />) ara</translation> <translation id="7679367271685653708">Chrome ayarlarında tarama geçmişinizi görüntüleyin ve yönetin</translation> <translation id="7679947978757153706">Beyzbol</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index 49d67e98..7333bd8 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -1103,6 +1103,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> مسدود ہے</translation> <translation id="3978338123949022456">تلاش وضع، ایک استفسار ٹائپ کریں اور <ph name="KEYWORD_SUFFIX" /> سے تلاش کرنے کے لیے Enter دبائیں</translation> <translation id="398470910934384994">پرندے</translation> +<translation id="3985750352229496475">پتے کا نظم کریں...</translation> <translation id="3986705137476756801">ابھی کیلئے لائیو کیپشن آف کریں</translation> <translation id="3987940399970879459">1 MB سے کم</translation> <translation id="3990250421422698716">جاگ آفسیٹ</translation> @@ -1230,6 +1231,7 @@ <translation id="4305666528087210886">آپ کی فائل تک رسائی نہیں ہو سکی</translation> <translation id="4306529830550717874">پتہ محفوظ کریں؟</translation> <translation id="4306812610847412719">کلپ بورڈ</translation> +<translation id="4310070645992025887">اپنے صارف کے تجربے کو تلاش کریں</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">مسدود کریں (ڈیفالٹ)</translation> <translation id="4314815835985389558">مطابقت پذیری کا نظم کريں</translation> @@ -2115,6 +2117,7 @@ <translation id="6839929833149231406">علاقہ</translation> <translation id="6846340164947227603">ورچوئل کارڈ نمبر استعمال کریں...</translation> <translation id="6852204201400771460">ایپ دوبارہ لوڈ کریں؟</translation> +<translation id="6857776781123259569">پاس ورڈز کا نظم کریں...</translation> <translation id="686485648936420384">صارف کے وسائل</translation> <translation id="6865412394715372076">ابھی اس کارڈ کی توثیق نہیں کی جا سکتی</translation> <translation id="6869334554832814367">ذاتی قرضے</translation> @@ -2441,6 +2444,7 @@ <translation id="7669271284792375604">اس سائٹ پر موجود حملہ آور آپ کو ایسے پروگرامز انسٹال کرنے کے جال میں پھنسانے کی کوشش کر سکتے ہیں جو آپ کے براؤزنگ کے تجربے کو نقصان پہنچا سکتے ہیں (مثلاً، آپ کا ہوم پیج تبدیل کر کے یا آپ جو سائٹس ملاحظہ کرتے ہیں ان پر اضافی اشتہارات دکھا کر)۔</translation> <translation id="7669907849388166732">{COUNT,plural, =1{رازدارانہ کے بطور پرچم لگائے گئے ڈیٹا کے متعلق کی گئی کاروائیاں (لاگ ان کے بعد سے 1 کارروائی)۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" />}other{رازدارانہ کے بطور پرچم لگائے گئے ڈیٹا کے متعلق کی گئی کاروائیاں (لاگ ان کے بعد سے # کارروائیاں)۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">میل باکس 6</translation> +<translation id="7675325315208090829">ادائیگی کے طریقوں کا نظم کریں...</translation> <translation id="7676643023259824263">کلپ بورڈ ٹیکسٹ تلاش کریں، <ph name="TEXT" /></translation> <translation id="7679367271685653708">Chrome کی ترتیبات میں اپنی براؤزنگ کی سرگزشت دیکھیں اور اس کا نظم کریں</translation> <translation id="7679947978757153706">بیس بال</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index c5c6c03..93dd8df 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -1096,7 +1096,7 @@ <translation id="3973234410852337861"><ph name="HOST_NAME" /> 已遭封鎖</translation> <translation id="3978338123949022456">搜尋模式,輸入查詢同埋㩒 Enter 鍵就可以用 <ph name="KEYWORD_SUFFIX" /> 搜尋</translation> <translation id="398470910934384994">鳥</translation> -<translation id="3985750352229496475">管理地址...</translation> +<translation id="3985750352229496475">管理地址…</translation> <translation id="3986705137476756801">暫時關閉即時字幕</translation> <translation id="3987940399970879459">小於 1 MB</translation> <translation id="3990250421422698716">撞頁偏移</translation> @@ -1219,7 +1219,7 @@ <translation id="4305666528087210886">無法存取您的檔案</translation> <translation id="4306529830550717874">要儲存地址嗎?</translation> <translation id="4306812610847412719">剪貼簿</translation> -<translation id="4310070645992025887">搜尋瀏覽歷程</translation> +<translation id="4310070645992025887">搜尋瀏覽過程</translation> <translation id="4312613361423056926">B2</translation> <translation id="4312866146174492540">封鎖 (預設)</translation> <translation id="4314815835985389558">管理同步資料</translation> @@ -2104,7 +2104,7 @@ <translation id="6839929833149231406">地區</translation> <translation id="6846340164947227603">使用虛擬付款卡號碼…</translation> <translation id="6852204201400771460">要重新載入應用程式嗎?</translation> -<translation id="6857776781123259569">管理密碼...</translation> +<translation id="6857776781123259569">管理密碼…</translation> <translation id="686485648936420384">消費者資源</translation> <translation id="6865412394715372076">目前無法驗證此信用卡</translation> <translation id="6869334554832814367">私人貸款</translation> @@ -2431,7 +2431,7 @@ <translation id="7669271284792375604">攻擊者可能會經由此網站,嘗試誘使您安裝妨礙瀏覽體驗的程式 (例如變更您的首頁,或在您瀏覽的網站上顯示多餘的廣告)。</translation> <translation id="7669907849388166732">{COUNT,plural, =1{在標示為機密的資料所執行的動作 (自登入起已報告 1 個動作)。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" />}other{在標示為機密的資料所執行的動作 (自登入起已報告 # 個動作)。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" />}}</translation> <translation id="7673278391011283842">出紙槽 6</translation> -<translation id="7675325315208090829">管理付款方式...</translation> +<translation id="7675325315208090829">管理付款方法…</translation> <translation id="7676643023259824263">搵剪貼簿文字:<ph name="TEXT" /></translation> <translation id="7679367271685653708">在 Chrome 設定中查看並管理您的瀏覽記錄</translation> <translation id="7679947978757153706">棒球</translation>
diff --git a/components/viz/test/fake_skia_output_surface.cc b/components/viz/test/fake_skia_output_surface.cc index cc58c10..3b83fb1b 100644 --- a/components/viz/test/fake_skia_output_surface.cc +++ b/components/viz/test/fake_skia_output_surface.cc
@@ -4,10 +4,13 @@ #include "components/viz/test/fake_skia_output_surface.h" +#include <memory> #include <utility> #include "base/bind.h" #include "base/logging.h" +#include "base/task/bind_post_task.h" +#include "base/task/sequenced_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "components/viz/common/frame_sinks/copy_output_request.h" @@ -15,7 +18,6 @@ #include "components/viz/common/resources/resource_format_utils.h" #include "components/viz/service/display/output_surface_client.h" #include "components/viz/service/display/output_surface_frame.h" -#include "components/viz/service/display/texture_deleter.h" #include "gpu/GLES2/gl2extchromium.h" #include "gpu/command_buffer/common/mailbox_holder.h" #include "gpu/command_buffer/common/shared_image_usage.h" @@ -32,10 +34,7 @@ FakeSkiaOutputSurface::FakeSkiaOutputSurface( scoped_refptr<ContextProvider> context_provider) : SkiaOutputSurface(SkiaOutputSurface::Type::kOpenGL), - context_provider_(std::move(context_provider)) { - texture_deleter_ = - std::make_unique<TextureDeleter>(base::ThreadTaskRunnerHandle::Get()); -} + context_provider_(std::move(context_provider)) {} FakeSkiaOutputSurface::~FakeSkiaOutputSurface() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -50,12 +49,10 @@ void FakeSkiaOutputSurface::EnsureBackbuffer() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - NOTIMPLEMENTED(); } void FakeSkiaOutputSurface::DiscardBackbuffer() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - NOTIMPLEMENTED(); } void FakeSkiaOutputSurface::BindFramebuffer() { @@ -273,23 +270,22 @@ // TODO(rivr): This implementation is incomplete and doesn't copy // anything into the mailbox, but currently the only tests that use this // don't actually check the returned texture data. - auto* sii = context_provider_->SharedImageInterface(); + auto* sii = GetSharedImageInterface(); gpu::Mailbox local_mailbox = sii->CreateSharedImage( ResourceFormat::RGBA_8888, geometry.result_selection.size(), color_space, kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, gpu::SHARED_IMAGE_USAGE_GLES2, gpu::kNullSurfaceHandle); - auto* gl = context_provider_->ContextGL(); - gpu::SyncToken sync_token; - gl->GenSyncTokenCHROMIUM(sync_token.GetData()); - CopyOutputResult::ReleaseCallbacks release_callbacks; - release_callbacks.push_back( - texture_deleter_->GetReleaseCallback(context_provider_, local_mailbox)); + release_callbacks.push_back(base::BindPostTask( + base::SequencedTaskRunnerHandle::Get(), + base::BindOnce(&FakeSkiaOutputSurface::DestroyCopyOutputTexture, + weak_ptr_factory_.GetWeakPtr(), local_mailbox))); request->SendResult(std::make_unique<CopyOutputTextureResult>( CopyOutputResult::Format::RGBA, geometry.result_bounds, - CopyOutputResult::TextureResult(local_mailbox, sync_token, color_space), + CopyOutputResult::TextureResult(local_mailbox, GenerateSyncToken(), + color_space), std::move(release_callbacks))); return; } @@ -317,19 +313,13 @@ } void FakeSkiaOutputSurface::AddContextLostObserver( - ContextLostObserver* observer) { - NOTIMPLEMENTED(); -} + ContextLostObserver* observer) {} void FakeSkiaOutputSurface::RemoveContextLostObserver( - ContextLostObserver* observer) { - NOTIMPLEMENTED(); -} + ContextLostObserver* observer) {} gpu::SyncToken FakeSkiaOutputSurface::Flush() { - gpu::SyncToken sync_token; - context_provider()->ContextGL()->GenSyncTokenCHROMIUM(sync_token.GetData()); - return sync_token; + return GenerateSyncToken(); } bool FakeSkiaOutputSurface::EnsureMinNumberOfBuffers(int n) { @@ -343,6 +333,14 @@ support->set_out_of_order_callbacks(out_of_order_callbacks); } +gpu::SyncToken FakeSkiaOutputSurface::GenerateSyncToken() { + gpu::SyncToken sync_token( + gpu::CommandBufferNamespace::VIZ_SKIA_OUTPUT_SURFACE, + gpu::CommandBufferId(), ++next_sync_fence_release_); + sync_token.SetVerifyFlush(); + return sync_token; +} + bool FakeSkiaOutputSurface::GetGrBackendTexture( const ImageContext& image_context, GrBackendTexture* backend_texture) { @@ -371,6 +369,13 @@ client_->DidReceivePresentationFeedback({now, base::TimeDelta(), 0}); } +void FakeSkiaOutputSurface::DestroyCopyOutputTexture( + const gpu::Mailbox& mailbox, + const gpu::SyncToken& sync_token, + bool is_lost) { + GetSharedImageInterface()->DestroySharedImage(sync_token, mailbox); +} + void FakeSkiaOutputSurface::ScheduleGpuTaskForTesting( base::OnceClosure callback, std::vector<gpu::SyncToken> sync_tokens) {
diff --git a/components/viz/test/fake_skia_output_surface.h b/components/viz/test/fake_skia_output_surface.h index 140a81e..0e0ab26 100644 --- a/components/viz/test/fake_skia_output_surface.h +++ b/components/viz/test/fake_skia_output_surface.h
@@ -22,8 +22,6 @@ namespace viz { -class TextureDeleter; - class FakeSkiaOutputSurface : public SkiaOutputSurface { public: static std::unique_ptr<FakeSkiaOutputSurface> Create3d() { @@ -151,14 +149,21 @@ ContextProvider* context_provider() { return context_provider_.get(); } GrDirectContext* gr_context() { return context_provider()->GrContext(); } + gpu::SyncToken GenerateSyncToken(); + bool GetGrBackendTexture(const ImageContext& image_context, GrBackendTexture* backend_texture); void SwapBuffersAck(); + // Provided as a release callback for CopyOutputRequest. + void DestroyCopyOutputTexture(const gpu::Mailbox& mailbox, + const gpu::SyncToken& sync_token, + bool is_lost); + scoped_refptr<ContextProvider> context_provider_; raw_ptr<OutputSurfaceClient> client_ = nullptr; - std::unique_ptr<TextureDeleter> texture_deleter_; + uint64_t next_sync_fence_release_ = 1; // The current render pass id set by BeginPaintRenderPass. AggregatedRenderPassId current_render_pass_id_;
diff --git a/components/wifi/wifi_service_mac.mm b/components/wifi/wifi_service_mac.mm index f61d8bb..b1366854 100644 --- a/components/wifi/wifi_service_mac.mm +++ b/components/wifi/wifi_service_mac.mm
@@ -270,7 +270,8 @@ ++it) { std::unique_ptr<base::DictionaryValue> network( it->ToValue(!include_details)); - network_list->Append(std::move(network)); + network_list->GetList().Append( + base::Value::FromUniquePtrValue(std::move(network))); } }
diff --git a/components/wifi/wifi_service_win.cc b/components/wifi/wifi_service_win.cc index 776d399c1..1fd4a59 100644 --- a/components/wifi/wifi_service_win.cc +++ b/components/wifi/wifi_service_win.cc
@@ -665,7 +665,8 @@ ++it) { std::unique_ptr<base::DictionaryValue> network( it->ToValue(!include_details)); - network_list->Append(std::move(network)); + network_list->GetList().Append( + base::Value::FromUniquePtrValue(std::move(network))); } } }
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.h b/content/browser/renderer_host/browser_compositor_view_mac.h index 5ed3470..84a6ed0 100644 --- a/content/browser/renderer_host/browser_compositor_view_mac.h +++ b/content/browser/renderer_host/browser_compositor_view_mac.h
@@ -20,10 +20,6 @@ #include "ui/display/screen_info.h" #include "ui/gfx/ca_layer_params.h" -namespace perfetto { -class StaticString; -} - namespace ui { class AcceleratedWidgetMacNSView; class RecyclableCompositorMac; @@ -164,10 +160,6 @@ void UpdateState(); void TransitionToState(State new_state); - static perfetto::StaticString EventNameForStateTransition(State old_state, - State new_state, - bool is_no_op); - // Weak pointer to the layer supplied and reset via SetParentUiLayer. |this| // is an observer of |parent_ui_layer_|, to ensure that |parent_ui_layer_| // always be valid when non-null. The UpdateState function will re-parent
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.mm b/content/browser/renderer_host/browser_compositor_view_mac.mm index 4c9f3bdd..6a721c8 100644 --- a/content/browser/renderer_host/browser_compositor_view_mac.mm +++ b/content/browser/renderer_host/browser_compositor_view_mac.mm
@@ -8,23 +8,18 @@ #include <stdint.h> #include <memory> -#include <tuple> #include <utility> -#include "base/check.h" #include "base/command_line.h" #include "base/containers/circular_deque.h" -#include "base/containers/contains.h" -#include "base/containers/fixed_flat_map.h" #include "base/lazy_instance.h" -#include "base/trace_event/typed_macros.h" +#include "base/trace_event/trace_event.h" #include "components/viz/common/features.h" #include "components/viz/common/surfaces/local_surface_id.h" #include "content/browser/compositor/image_transport_factory.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/context_factory.h" #include "third_party/abseil-cpp/absl/types/optional.h" -#include "third_party/perfetto/include/perfetto/tracing/string_helpers.h" #include "ui/accelerated_widget_mac/accelerated_widget_mac.h" #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" #include "ui/base/layout.h" @@ -230,13 +225,6 @@ else is_no_op = true; } - // Record a trace event whose name encodes the old and new states. The states - // can be used to trace this function to see if WasShown / WasHidden were - // called. When a tab switch is occurring these traces will nest in trace - // events recoded by RenderWidgetHostViewMac. - // TODO(https://crbug.com/1164477): Remove these when the investigation is - // done. - TRACE_EVENT("cc", EventNameForStateTransition(state_, new_state, is_no_op)); if (is_no_op) return; @@ -294,42 +282,6 @@ } // static -perfetto::StaticString BrowserCompositorMac::EventNameForStateTransition( - State old_state, - State new_state, - bool is_no_op) { - static const auto kEventNames = - base::MakeFixedFlatMap<std::tuple<State, State, bool>, - perfetto::StaticString>({ - {{HasNoCompositor, HasNoCompositor, true}, - "BrowserCompositorMac.StateTransition.No.No.NoOp"}, - {{HasNoCompositor, HasOwnCompositor, false}, - "BrowserCompositorMac.StateTransition.No.Own"}, - {{HasNoCompositor, UseParentLayerCompositor, false}, - "BrowserCompositorMac.StateTransition.No.Parent"}, - {{HasOwnCompositor, HasNoCompositor, false}, - "BrowserCompositorMac.StateTransition.Own.No"}, - {{HasOwnCompositor, HasOwnCompositor, true}, - "BrowserCompositorMac.StateTransition.Own.Own.NoOp"}, - {{HasOwnCompositor, UseParentLayerCompositor, false}, - "BrowserCompositorMac.StateTransition.Own.Parent"}, - {{UseParentLayerCompositor, HasNoCompositor, false}, - "BrowserCompositorMac.StateTransition.Parent.No"}, - {{UseParentLayerCompositor, HasOwnCompositor, false}, - "BrowserCompositorMac.StateTransition.Parent.Own"}, - // UseParentLayerCompositer -> UseParentLayerCompositer may or may not - // be a no-op. - {{UseParentLayerCompositor, UseParentLayerCompositor, false}, - "BrowserCompositorMac.StateTransition.Parent.Parent"}, - {{UseParentLayerCompositor, UseParentLayerCompositor, true}, - "BrowserCompositorMac.StateTransition.Parent.Parent.NoOp"}, - }); - const auto key = std::make_tuple(old_state, new_state, is_no_op); - DCHECK(base::Contains(kEventNames, key)); - return kEventNames.at(key); -} - -// static void BrowserCompositorMac::DisableRecyclingForShutdown() { // Ensure that the client has destroyed its BrowserCompositorViewMac before // it dependencies are destroyed.
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc index c7102273..9358fa7 100644 --- a/content/browser/renderer_host/compositor_impl_android.cc +++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -225,28 +225,69 @@ class CompositorImpl::HostBeginFrameObserver : public viz::mojom::BeginFrameObserver { public: - explicit HostBeginFrameObserver( - const base::flat_set<SimpleBeginFrameObserver*>& observers) - : simple_begin_frame_observers_(observers) {} + HostBeginFrameObserver( + const base::flat_set<SimpleBeginFrameObserver*>& observers, + scoped_refptr<base::SingleThreadTaskRunner> task_runner) + : simple_begin_frame_observers_(observers), + task_runner_(std::move(task_runner)) {} void OnStandaloneBeginFrame(const viz::BeginFrameArgs& args) override { if (args.type == viz::BeginFrameArgs::MISSED) return; - for (auto* simple_observer : simple_begin_frame_observers_) { + if (pending_coalesce_callback_) { + begin_frame_args_ = args; + return; + } + + static const bool kCoalesce = base::FeatureList::IsEnabled( + ::features::kCoalesceIndependentBeginFrame); + if (kCoalesce && + (base::TimeTicks::Now() - args.frame_time) > args.interval) { + begin_frame_args_ = args; + pending_coalesce_callback_ = true; + task_runner_->PostDelayedTask( + FROM_HERE, + base::BindOnce( + &CompositorImpl::HostBeginFrameObserver::CoalescedBeginFrame, + weak_factory_.GetWeakPtr()), + base::Microseconds(1)); + return; + } + + CallObservers(args); + } + + mojo::PendingRemote<viz::mojom::BeginFrameObserver> GetBoundRemote() { + return receiver_.BindNewPipeAndPassRemote(task_runner_); + } + + private: + void CoalescedBeginFrame() { + DCHECK(begin_frame_args_.IsValid()); + pending_coalesce_callback_ = false; + viz::BeginFrameArgs args = begin_frame_args_; + begin_frame_args_ = viz::BeginFrameArgs(); + CallObservers(args); + } + + // This may be deleted as part of `CallObservers`. + void CallObservers(const viz::BeginFrameArgs& args) { + auto observers_copy = simple_begin_frame_observers_; + for (auto* simple_observer : observers_copy) { simple_observer->OnBeginFrame(args.frame_time); } } - mojo::PendingRemote<viz::mojom::BeginFrameObserver> GetBoundRemote() { - return receiver_.BindNewPipeAndPassRemote(); - } - - private: const base::flat_set<SimpleBeginFrameObserver*>& simple_begin_frame_observers_; + const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; + + bool pending_coalesce_callback_ = false; + viz::BeginFrameArgs begin_frame_args_; mojo::Receiver<viz::mojom::BeginFrameObserver> receiver_{this}; + base::WeakPtrFactory<HostBeginFrameObserver> weak_factory_{this}; }; class CompositorImpl::ScopedCachedBackBuffer { @@ -1011,8 +1052,9 @@ if (!display_private_) return; - host_begin_frame_observer_ = - std::make_unique<HostBeginFrameObserver>(simple_begin_frame_observers_); + host_begin_frame_observer_ = std::make_unique<HostBeginFrameObserver>( + simple_begin_frame_observers_, + content::GetUIThreadTaskRunner({BrowserTaskType::kUserInput})); display_private_->SetStandaloneBeginFrameObserver( host_begin_frame_observer_->GetBoundRemote()); }
diff --git a/content/browser/renderer_host/frame_tree_browsertest.cc b/content/browser/renderer_host/frame_tree_browsertest.cc index 5e8eabb..dfcb619f 100644 --- a/content/browser/renderer_host/frame_tree_browsertest.cc +++ b/content/browser/renderer_host/frame_tree_browsertest.cc
@@ -2465,7 +2465,7 @@ // Navigate the fenced frame. It should do a replace navigation and therefore // the `controller().GetEntryCount()` stays at 1. GURL fenced_frame_url_2( - https_server()->GetURL("a.test", "/fenced_frames/title1.html")); + https_server()->GetURL("c.test", "/fenced_frames/title1.html")); std::string script = JsReplace("location.assign($1);", fenced_frame_url_2); UpdateHistoryOrReloadFromFencedFrameTreeAndWaitForFinishedLoad(fenced_frame, script); @@ -2497,7 +2497,8 @@ // Note the last committed url is the latest one in shadowDOM due to the joint // history maintained in the single navigation controller and going back can // therefore get the latest navigation in the frame which is - // `fenced_frame_url_2`. + // `fenced_frame_url_2`. However, when back/forward cache is disabled, + // it will navigate to `fenced_frame_url_1`. // MPArch fenced frame has its own NavigationController which is not retained // when the top-level page navigates. Therefore going back lands on the // initial navigation in the Fenced Frame. @@ -2506,8 +2507,12 @@ EXPECT_EQ(2, root->navigator().controller().GetEntryCount()); EXPECT_EQ(root->navigator().controller().GetEntryCount(), fenced_frame->navigator().controller().GetEntryCount()); - EXPECT_EQ(fenced_frame_url_2, - fenced_frame->current_frame_host()->GetLastCommittedURL()); + if (content::BackForwardCache::IsBackForwardCacheFeatureEnabled()) + EXPECT_EQ(fenced_frame_url_2, + fenced_frame->current_frame_host()->GetLastCommittedURL()); + else + EXPECT_EQ(fenced_frame_url_1, + fenced_frame->current_frame_host()->GetLastCommittedURL()); } else { EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); EXPECT_EQ(1, fenced_frame->navigator().controller().GetEntryCount()); @@ -2516,6 +2521,71 @@ } } +IN_PROC_BROWSER_TEST_P(FencedFrameTreeBrowserTest, ReloadPageWithFencedFrame) { + GURL main_url( + https_server()->GetURL("a.test", "/fenced_frames/opaque_ads.html")); + GURL fenced_frame_url = + https_server()->GetURL("a.test", "/fenced_frames/title1.html"); + EXPECT_TRUE(NavigateToURL(shell(), main_url)); + + // It is safe to obtain the root frame tree node here, as it doesn't change. + FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) + ->GetPrimaryFrameTree() + .root(); + + TestNavigationObserver reload_observer(web_contents()); + + EXPECT_TRUE(ExecJs(root, "window.location.reload();")); + reload_observer.Wait(); + + EXPECT_EQ(1, root->navigator().controller().GetEntryCount()); + EXPECT_TRUE(reload_observer.last_navigation_succeeded()); + auto* fenced_frame = GetFencedFrameRootNode(root->child_at(0)); + EXPECT_EQ(fenced_frame_url, fenced_frame->current_url()); +} + +IN_PROC_BROWSER_TEST_P(FencedFrameTreeBrowserTest, + NavigateUnfencedTopAndGoBack) { + GURL main_url( + https_server()->GetURL("a.test", "/fenced_frames/opaque_ads.html")); + GURL fenced_frame_url = + https_server()->GetURL("a.test", "/fenced_frames/title1.html"); + TestNavigationObserver load_observer(web_contents()); + + EXPECT_TRUE(NavigateToURL(shell(), main_url)); + load_observer.Wait(); + + // It is safe to obtain the root frame tree node here, as it doesn't change. + FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) + ->GetPrimaryFrameTree() + .root(); + auto* fenced_frame = GetFencedFrameRootNode(root->child_at(0)); + + GURL new_main_url(https_server()->GetURL("b.test", "/hello.html")); + // Now let's try to use unfencedTop and come back to the page with the fenced + // frame. + TestFrameNavigationObserver observer(root); + EXPECT_TRUE(ExecJs(fenced_frame, JsReplace("window.open($1, '_unfencedTop');", + new_main_url))); + observer.Wait(); + EXPECT_EQ(2, root->navigator().controller().GetEntryCount()); + EXPECT_EQ(new_main_url, root->current_frame_host()->GetLastCommittedURL()); + + // Go back. + { + TestNavigationObserver back_load_observer(shell()->web_contents()); + EXPECT_TRUE(ExecJs(root, "history.back();")); + back_load_observer.Wait(); + } + EXPECT_EQ(2, root->navigator().controller().GetEntryCount()); + EXPECT_EQ(main_url, root->current_frame_host()->GetLastCommittedURL()); + EXPECT_EQ(1U, root->child_count()); + fenced_frame = GetFencedFrameRootNode(root->child_at(0)); + EXPECT_TRUE(fenced_frame->IsFencedFrameRoot()); + EXPECT_TRUE(fenced_frame->IsInFencedFrameTree()); + EXPECT_EQ(fenced_frame_url, fenced_frame->current_url()); +} + // Simulates the crash in crbug.com/1317642 by disabling BFCache and going back // to a page with a fenced frame navigation, which in shadowDOM FFs will lead to // a AUTO_SUBFRAME navigation initiated in the browser.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 3fbe8be..b72b5404 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -21,7 +21,6 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" -#include "base/trace_event/typed_macros.h" #include "components/remote_cocoa/browser/ns_view_ids.h" #include "components/remote_cocoa/common/application.mojom.h" #include "components/viz/common/features.h" @@ -474,18 +473,12 @@ browser_compositor_->GetDelegatedFrameHost(); DCHECK(delegated_frame_host); const bool record_presentation_time = has_saved_frame; - // TODO(https://crbug.com/1164477): Remove these trace events when the - // investigation is done. - if (record_presentation_time) - TRACE_EVENT_BEGIN("cc", "RWHVMac::WasShown with saved frame"); delegated_frame_host->WasShown( browser_compositor_->GetRendererLocalSurfaceId(), browser_compositor_->GetRendererSize(), record_presentation_time ? std::move(tab_switch_start_state) : blink::mojom::RecordContentToVisibleTimeRequestPtr()); - if (record_presentation_time) - TRACE_EVENT_END("cc"); } void RenderWidgetHostViewMac::RequestPresentationTimeFromHostOrDelegate( @@ -498,7 +491,6 @@ if (browser_compositor_->GetDelegatedFrameHost()->HasSavedFrame()) { // If the frame for the renderer is already available, then the // tab-switching time is the presentation time for the browser-compositor. - TRACE_EVENT("cc", "RHWVMac::RequestPresentationTime with saved frame"); browser_compositor_->GetDelegatedFrameHost() ->RequestPresentationTimeForNextFrame(std::move(visible_time_request)); } else { @@ -511,13 +503,7 @@ CancelPresentationTimeRequestForHostAndDelegate() { DCHECK(!host_->is_hidden()); host()->CancelPresentationTimeRequest(); - const bool has_saved_frame = - browser_compositor_->GetDelegatedFrameHost()->HasSavedFrame(); - if (has_saved_frame) - TRACE_EVENT_BEGIN("cc", "RWHVMac::CancelPresentationTime with saved frame"); browser_compositor_->GetDelegatedFrameHost()->CancelPresentationTimeRequest(); - if (has_saved_frame) - TRACE_EVENT_END("cc"); } void RenderWidgetHostViewMac::WasOccluded() { @@ -525,13 +511,7 @@ return; host()->WasHidden(); - const bool has_saved_frame = - browser_compositor_->GetDelegatedFrameHost()->HasSavedFrame(); - if (has_saved_frame) - TRACE_EVENT_BEGIN("cc", "RWHVMac::WasOccluded with saved frame"); browser_compositor_->SetRenderWidgetHostIsHidden(true); - if (has_saved_frame) - TRACE_EVENT_END("cc"); } void RenderWidgetHostViewMac::SetSize(const gfx::Size& size) {
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 71cdf34..34407a77 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -1162,6 +1162,10 @@ const base::Feature kBigLittleScheduling{"BigLittleScheduling", base::FEATURE_DISABLED_BY_DEFAULT}; +// Coalesce independent begin frame by ignoring begin frame that is out of date. +const base::Feature kCoalesceIndependentBeginFrame{ + "CoalesceIndependentBeginFrame", base::FEATURE_DISABLED_BY_DEFAULT}; + // Allows the use of an experimental feature to drop any AccessibilityEvents // that are not relevant to currently enabled accessibility services. const base::Feature kOnDemandAccessibilityEvents{
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 0ee54e9..f4d4b3f 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -288,6 +288,7 @@ CONTENT_EXPORT extern const base::Feature kBackgroundMediaRendererHasModerateBinding; CONTENT_EXPORT extern const base::Feature kBigLittleScheduling; +CONTENT_EXPORT extern const base::Feature kCoalesceIndependentBeginFrame; CONTENT_EXPORT extern const base::Feature kOnDemandAccessibilityEvents; CONTENT_EXPORT extern const base::Feature kRequestDesktopSiteExceptions; CONTENT_EXPORT extern const base::Feature kRequestDesktopSiteGlobal;
diff --git a/content/public/test/fake_download_item.cc b/content/public/test/fake_download_item.cc index 5db5cde..836220e 100644 --- a/content/public/test/fake_download_item.cc +++ b/content/public/test/fake_download_item.cc
@@ -291,10 +291,6 @@ NOTREACHED(); } -void FakeDownloadItem::AcceptIncognitoWarning() { - NOTREACHED(); -} - void FakeDownloadItem::StealDangerousDownload(bool delete_file_afterward, AcquireFileCallback callback) { NOTREACHED(); @@ -492,10 +488,6 @@ return is_mixed_content_; } -bool FakeDownloadItem::ShouldShowIncognitoWarning() const { - return false; -} - download::DownloadDangerType FakeDownloadItem::GetDangerType() const { return danger_type_; }
diff --git a/content/public/test/fake_download_item.h b/content/public/test/fake_download_item.h index bac9f5f..48005339 100644 --- a/content/public/test/fake_download_item.h +++ b/content/public/test/fake_download_item.h
@@ -102,7 +102,6 @@ const download::DownloadItemRerouteInfo& GetRerouteInfo() const override; bool IsDangerous() const override; bool IsMixedContent() const override; - bool ShouldShowIncognitoWarning() const override; download::DownloadDangerType GetDangerType() const override; download::DownloadItem::MixedContentStatus GetMixedContentStatus() const override; @@ -131,7 +130,6 @@ download::DownloadInterruptReason reason) override; void ValidateDangerousDownload() override; void ValidateMixedContentDownload() override; - void AcceptIncognitoWarning() override; void StealDangerousDownload(bool delete_file_afterward, AcquireFileCallback callback) override; void Rename(const base::FilePath& name,
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-android.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-android.txt index c9f400b0..3c9c07d 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-android.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-android.txt
@@ -1,3 +1,3 @@ -android.webkit.WebView focusable focused scrollable +android.webkit.WebView focusable focused scrollable name='done' ++android.view.View ++++android.view.View role_description='button' clickable focusable name='Text in iframe'
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-auralinux.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-auralinux.txt index f9115ef..fba2a1b 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-auralinux.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-auralinux.txt
@@ -1,4 +1,4 @@ -[document web] +[document web] name='done' ++[section] ++++[push button] name='Text in iframe' ++++++[document web] name='Text in iframe'
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-blink.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-blink.txt index a2ecf2d..e05a5db 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-blink.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-blink.txt
@@ -1,4 +1,4 @@ -rootWebArea +rootWebArea name='done' ++genericContainer ignored ++++genericContainer ++++++portal
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-mac.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-mac.txt index a029701b..349a98f 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-mac.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-mac.txt
@@ -1,4 +1,4 @@ -AXWebArea +AXWebArea AXTitle='done' ++AXGroup ++++AXButton AXDescription='Text in iframe' ++++++AXWebArea AXTitle='Text in iframe'
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-uia-win.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-uia-win.txt index 687c8aee6..09fd4a9 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-uia-win.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-uia-win.txt
@@ -1,4 +1,4 @@ -Document +Document Name='done' ++Group IsControlElement=false ++++Button Name='Text in iframe' ++++++Document Name='Text in iframe'
diff --git a/content/test/data/accessibility/html/portal-name-from-text-expected-win.txt b/content/test/data/accessibility/html/portal-name-from-text-expected-win.txt index 68d396d..b7a9ac6 100644 --- a/content/test/data/accessibility/html/portal-name-from-text-expected-win.txt +++ b/content/test/data/accessibility/html/portal-name-from-text-expected-win.txt
@@ -1,4 +1,4 @@ -ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE +ROLE_SYSTEM_DOCUMENT name='done' READONLY FOCUSABLE ++IA2_ROLE_SECTION ++++ROLE_SYSTEM_PUSHBUTTON name='Text in iframe' FOCUSABLE ++++++ROLE_SYSTEM_DOCUMENT name='Text in iframe' READONLY
diff --git a/content/test/data/accessibility/html/portal-name-from-text.html b/content/test/data/accessibility/html/portal-name-from-text.html index 7b1f7b5..ce3beb4 100644 --- a/content/test/data/accessibility/html/portal-name-from-text.html +++ b/content/test/data/accessibility/html/portal-name-from-text.html
@@ -1,5 +1,8 @@ +<!-- +@WAIT-FOR:done +--> <!DOCTYPE html> <html> <body> - <portal src="frame/static_text.html"></portal> + <portal src="frame/static_text.html" onload="document.title='done'"></portal> </body>
diff --git a/content/test/data/fenced_frames/opaque_ads.html b/content/test/data/fenced_frames/opaque_ads.html index 1f365a7..baac518e 100644 --- a/content/test/data/fenced_frames/opaque_ads.html +++ b/content/test/data/fenced_frames/opaque_ads.html
@@ -1,6 +1,6 @@ <!DOCTYPE html> <html> <body> - <fencedframe mode=opaque-ads></fencedframe> + <fencedframe mode=opaque-ads src="title1.html"></fencedframe> </body> </html>
diff --git a/docs/windows_build_instructions.md b/docs/windows_build_instructions.md index 32532aa0..80d1de0 100644 --- a/docs/windows_build_instructions.md +++ b/docs/windows_build_instructions.md
@@ -52,8 +52,9 @@ ``` -You must have the version 10.0.20348.0 [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) -installed. This can be installed separately or by checking the appropriate box -in the Visual Studio Installer. +installed. This +can be installed separately or by checking the appropriate box in the Visual +Studio Installer. The SDK Debugging Tools must also be installed. If the Windows 10 SDK was installed via the Visual Studio installer, then they can be installed by going
diff --git a/google_apis/calendar/calendar_api_requests.cc b/google_apis/calendar/calendar_api_requests.cc index f6ce81b..4eca44c 100644 --- a/google_apis/calendar/calendar_api_requests.cc +++ b/google_apis/calendar/calendar_api_requests.cc
@@ -20,8 +20,9 @@ // should return the participant/requester only as an attendee. constexpr int kMaxAttendees = 1; constexpr char kCalendarEventListFields[] = - "timeZone,etag,kind,items(id,summary,colorId, " - "status,start(dateTime),end(dateTime),htmlLink,attendees)"; + "timeZone,etag,kind,items(id,kind,summary,colorId," + "status,start(dateTime),end(dateTime),htmlLink," + "attendees(responseStatus,self),attendeesOmitted,creator(self))"; CalendarApiGetRequest::CalendarApiGetRequest(RequestSender* sender, const std::string& fields)
diff --git a/google_apis/calendar/calendar_api_requests_unittest.cc b/google_apis/calendar/calendar_api_requests_unittest.cc index a92e4b51..636e706 100644 --- a/google_apis/calendar/calendar_api_requests_unittest.cc +++ b/google_apis/calendar/calendar_api_requests_unittest.cc
@@ -107,9 +107,10 @@ "&timeMax=2021-06-16T10%3A00%3A00.000Z" "&singleEvents=true" "&maxAttendees=1" - "&fields=timeZone%2Cetag%2Ckind%2Citems(id%" - "2Csummary%2CcolorId%2C+status%2Cstart(dateTime)%2Cend(dateTime)%" - "2ChtmlLink%2Cattendees)", + "&fields=timeZone%2Cetag%2Ckind%2Citems(id%2Ckind%" + "2Csummary%2CcolorId%2Cstatus%2Cstart(dateTime)%2Cend(dateTime)%" + "2ChtmlLink%2Cattendees(responseStatus%2Cself)%2CattendeesOmitted%" + "2Ccreator(self))", http_request_.relative_url); ASSERT_TRUE(events.get());
diff --git a/google_apis/calendar/calendar_api_response_types.cc b/google_apis/calendar/calendar_api_response_types.cc index d2bc39d..e803ee69 100644 --- a/google_apis/calendar/calendar_api_response_types.cc +++ b/google_apis/calendar/calendar_api_response_types.cc
@@ -19,6 +19,7 @@ #include "base/values.h" #include "google_apis/common/parser_util.h" #include "google_apis/common/time_util.h" +#include "third_party/abseil-cpp/absl/types/optional.h" namespace google_apis { @@ -27,23 +28,25 @@ namespace { // EventList -constexpr char kTimeZone[] = "timeZone"; constexpr char kCalendarEventListKind[] = "calendar#events"; +constexpr char kTimeZone[] = "timeZone"; // DateTime constexpr char kDateTime[] = "dateTime"; // CalendarEvent -constexpr char kSummary[] = "summary"; -constexpr char kStart[] = "start"; -constexpr char kEnd[] = "end"; -constexpr char kColorId[] = "colorId"; -constexpr char kStatus[] = "status"; -constexpr char kHtmlLink[] = "htmlLink"; -constexpr char kCalendarEventKind[] = "calendar#event"; constexpr char kAttendees[] = "attendees"; -constexpr char kAttendeesSelf[] = "self"; +constexpr char kAttendeesOmitted[] = "attendeesOmitted"; constexpr char kAttendeesResponseStatus[] = "responseStatus"; +constexpr char kAttendeesSelf[] = "self"; +constexpr char kCalendarEventKind[] = "calendar#event"; +constexpr char kColorId[] = "colorId"; +constexpr char kEnd[] = "end"; +constexpr char kHtmlLink[] = "htmlLink"; +constexpr char kPathToCreatorSelf[] = "creator.self"; +constexpr char kStart[] = "start"; +constexpr char kStatus[] = "status"; +constexpr char kSummary[] = "summary"; constexpr auto kEventStatuses = base::MakeFixedFlatMap<base::StringPiece, CalendarEvent::EventStatus>( @@ -58,6 +61,27 @@ {"needsAction", CalendarEvent::ResponseStatus::kNeedsAction}, {"tentative", CalendarEvent::ResponseStatus::kTentative}}); +// Converts the `items` field from the response. This method helps to use the +// custom conversion entrypoint `CalendarEvent::CreateFrom`. +// Returns false when it fails (e.g. the value is structurally different from +// expected). +bool ConvertResponseItems(const base::Value* value, + std::vector<std::unique_ptr<CalendarEvent>>* result) { + const auto* items = value->GetIfList(); + if (!items) + return false; + + result->reserve(items->size()); + for (const auto& item : *items) { + auto event = CalendarEvent::CreateFrom(item); + if (!event) + return false; + result->push_back(std::move(event)); + } + + return true; +} + // Converts the event status to `EventStatus`. Returns false when it fails // (e.g. the value is structurally different from expected). bool ConvertEventStatus(const base::Value* value, @@ -79,43 +103,66 @@ return true; } -// Finds the self response status from the attendees list. Returns false when -// it fails (e.g. the value is structurally different from expected). -bool GetSelfResponseStatusFromAttendees(const base::Value* value, - CalendarEvent::ResponseStatus* result) { - DCHECK(value); - DCHECK(result); +// Returns user's self response status on the event, or `absl::nullopt` in case +// the passed value is structurally different from expected. +absl::optional<CalendarEvent::ResponseStatus> CalculateSelfResponseStatus( + const base::Value& value) { + const auto* event = value.GetIfDict(); + if (!event) + return absl::nullopt; - const auto* attendees = value->GetIfList(); - if (!attendees) { - return false; + const auto* attendees_raw_value = event->Find(kAttendees); + if (!attendees_raw_value) { + // It's okay not to have `attendees` field in the response, it's possible + // in two cases: + // - this is a personal event of the `default` type without other + // attendees; + // - user invited 2+ guests and removed themselves from the event (also, + // the `attendeesOmitted` flag will be set to true). + + const bool is_self_created = + event->FindBoolByDottedPath(kPathToCreatorSelf).value_or(false); + const bool has_omitted_attendees = + event->FindBool(kAttendeesOmitted).value_or(false); + + if (is_self_created && !has_omitted_attendees) { + // It's not possible to create a personal event and mark it as + // tentative or declined. + return CalendarEvent::ResponseStatus::kAccepted; + } + + return CalendarEvent::ResponseStatus::kUnknown; } + const auto* attendees = attendees_raw_value->GetIfList(); + if (!attendees) + return absl::nullopt; + for (const auto& x : *attendees) { const auto* attendee = x.GetIfDict(); - if (!attendee) { - return false; - } + if (!attendee) + return absl::nullopt; const bool is_self = attendee->FindBool(kAttendeesSelf).value_or(false); - if (!is_self) + if (!is_self) { + // A special case when user invited 1 more guest and removed themselves + // from the event. In this case that user will be returned as an + // attendee (the total number of attendees <= the requested number), safe + // to ignore this item. continue; + } const auto* responseStatus = attendee->FindString(kAttendeesResponseStatus); - if (!responseStatus) { - return false; - } + if (!responseStatus) + return absl::nullopt; const auto* it = kAttendeesResponseStatuses.find(*responseStatus); if (it != kAttendeesResponseStatuses.end()) { - *result = it->second; - } else { - *result = CalendarEvent::ResponseStatus::kUnknown; + return it->second; } - break; } - return true; + return CalendarEvent::ResponseStatus::kUnknown; } } // namespace @@ -163,9 +210,6 @@ converter->RegisterStringField(kColorId, &CalendarEvent::color_id_); converter->RegisterCustomValueField(kStatus, &CalendarEvent::status_, &ConvertEventStatus); - converter->RegisterCustomValueField(kAttendees, - &CalendarEvent::self_response_status_, - &GetSelfResponseStatusFromAttendees); converter->RegisterCustomValueField(kStart, &CalendarEvent::start_time_, &DateTime::CreateDateTimeFromValue); converter->RegisterCustomValueField(kEnd, &CalendarEvent::end_time_, @@ -183,7 +227,15 @@ return nullptr; } - return event; + auto self_response_status = CalculateSelfResponseStatus(value); + if (self_response_status.has_value()) { + event->set_self_response_status(self_response_status.value()); + return event; + } + + DVLOG(1) << "Unable to calculate self response status: Invalid " + "CalendarEvent JSON!"; + return nullptr; } int CalendarEvent::GetApproximateSizeInBytes() const { @@ -210,8 +262,8 @@ converter->RegisterStringField(kTimeZone, &EventList::time_zone_); converter->RegisterStringField(kApiResponseETagKey, &EventList::etag_); converter->RegisterStringField(kApiResponseKindKey, &EventList::kind_); - converter->RegisterRepeatedMessage<CalendarEvent>(kApiResponseItemsKey, - &EventList::items_); + converter->RegisterCustomValueField(kApiResponseItemsKey, &EventList::items_, + &ConvertResponseItems); } // static
diff --git a/google_apis/calendar/calendar_api_response_types_unittest.cc b/google_apis/calendar/calendar_api_response_types_unittest.cc index b92ac51..687e701 100644 --- a/google_apis/calendar/calendar_api_response_types_unittest.cc +++ b/google_apis/calendar/calendar_api_response_types_unittest.cc
@@ -76,7 +76,7 @@ ASSERT_EQ(base::Value::Type::DICTIONARY, events->type()); auto event_list = EventList::CreateFrom(*events); - EXPECT_EQ(5U, event_list->items().size()); + EXPECT_EQ(8U, event_list->items().size()); EXPECT_EQ(event_list->items()[0]->self_response_status(), CalendarEvent::ResponseStatus::kUnknown); @@ -88,6 +88,12 @@ CalendarEvent::ResponseStatus::kNeedsAction); EXPECT_EQ(event_list->items()[4]->self_response_status(), CalendarEvent::ResponseStatus::kTentative); + EXPECT_EQ(event_list->items()[5]->self_response_status(), + CalendarEvent::ResponseStatus::kAccepted); + EXPECT_EQ(event_list->items()[6]->self_response_status(), + CalendarEvent::ResponseStatus::kUnknown); + EXPECT_EQ(event_list->items()[7]->self_response_status(), + CalendarEvent::ResponseStatus::kUnknown); } TEST(CalendarAPIResponseTypesTest, ParseFailed) {
diff --git a/google_apis/test/data/calendar/event_self_response_statuses.json b/google_apis/test/data/calendar/event_self_response_statuses.json index 927e951..a9358ec4 100644 --- a/google_apis/test/data/calendar/event_self_response_statuses.json +++ b/google_apis/test/data/calendar/event_self_response_statuses.json
@@ -116,6 +116,68 @@ "self": true } ] + }, + { + "kind": "calendar#event", + "id": "6", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=b3I4MjIxc2lydDRvZ2Ztest", + "summary": "personal time", + "colorId": "3", + "creator": { + "self": true + }, + "start": { + "dateTime": "2020-11-02T10:00:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "end": { + "dateTime": "2020-11-02T10:30:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "attendeesOmitted": false + }, + { + "kind": "calendar#event", + "id": "7", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=b3I4MjIxc2lydDRvZ2Ztest", + "summary": "non-self attendee", + "colorId": "3", + "start": { + "dateTime": "2020-11-02T10:00:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "end": { + "dateTime": "2020-11-02T10:30:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "attendees": [ + { + "email": "test4@google.com", + "responseStatus": "tentative" + } + ] + }, + { + "kind": "calendar#event", + "id": "8", + "status": "confirmed", + "htmlLink": "https://www.google.com/calendar/event?eid=b3I4MjIxc2lydDRvZ2Ztest", + "summary": "has omitted attendees", + "colorId": "3", + "creator": { + "self": true + }, + "start": { + "dateTime": "2020-11-02T10:00:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "end": { + "dateTime": "2020-11-02T10:30:00-08:00", + "timeZone": "America/Los_Angeles" + }, + "attendeesOmitted": true } ] }
diff --git a/google_apis/test/data/calendar/events.json b/google_apis/test/data/calendar/events.json index 5161888..4f1c9af 100644 --- a/google_apis/test/data/calendar/events.json +++ b/google_apis/test/data/calendar/events.json
@@ -1,19 +1,19 @@ { - "kind": "calendar#events", - "etag": "\"p32ofplf5q6gf20g\"", - "summary": "test1@google.com", - "updated": "2021-06-18T07:17:10.718Z", - "timeZone": "America/Los_Angeles", - "accessRole": "owner", - "defaultReminders": [ - { + "kind": "calendar#events", + "etag": "\"p32ofplf5q6gf20g\"", + "summary": "test1@google.com", + "updated": "2021-06-18T07:17:10.718Z", + "timeZone": "America/Los_Angeles", + "accessRole": "owner", + "defaultReminders": [ + { "method": "popup", "minutes": 10 - } - ], - "nextSyncToken": "CLD81eXRoPECtest", - "items": [ - { + } + ], + "nextSyncToken": "CLD81eXRoPECtest", + "items": [ + { "kind": "calendar#event", "etag": "\"3231955547274000\"", "id": "or8221sirt4ogftest", @@ -25,86 +25,86 @@ "description": "\u003ca href=\"https://docs.google.com/document/d/1BSA5pn6dpPQOIBuvtest/edit\"\u003eMeeting agenda and notes\u003c/a\u003e", "colorId": "3", "creator": { - "email": "test2@google.com", - "displayName": "test2 testlatname2" + "email": "test2@google.com", + "displayName": "test2 testlatname2" }, "organizer": { - "email": "test3@google.com" + "email": "test3@google.com" }, "start": { - "dateTime": "2020-11-02T10:00:00-08:00", - "timeZone": "America/Los_Angeles" + "dateTime": "2020-11-02T10:00:00-08:00", + "timeZone": "America/Los_Angeles" }, "end": { - "dateTime": "2020-11-02T10:30:00-08:00", - "timeZone": "America/Los_Angeles" + "dateTime": "2020-11-02T10:30:00-08:00", + "timeZone": "America/Los_Angeles" }, "recurrence": [ - "RRULE:FREQ=WEEKLY;UNTIL=20201109T075959Z;BYDAY=MO" + "RRULE:FREQ=WEEKLY;UNTIL=20201109T075959Z;BYDAY=MO" ], "iCalUID": "or8221test@google.com", "sequence": 6, "attendees": [ - { - "email": "test4@google.com", - "responseStatus": "needsAction" - }, - { - "email": "google.com_726f6f6d5f75735f6d7test@resource.calendar.google.com", - "displayName": "MTV-1055-2-Pellucid (3) [GVC, Jamboard, Phone]", - "resource": true, - "responseStatus": "declined" - }, - { - "email": "test1@google.com", - "displayName": "test1 testlatname1", - "self": true, - "responseStatus": "needsAction" - }, - { - "email": "test2@google.com", - "displayName": "test2 testlatname2", - "responseStatus": "accepted" - } + { + "email": "test4@google.com", + "responseStatus": "needsAction" + }, + { + "email": "google.com_726f6f6d5f75735f6d7test@resource.calendar.google.com", + "displayName": "MTV-1055-2-Pellucid (3) [GVC, Jamboard, Phone]", + "resource": true, + "responseStatus": "declined" + }, + { + "email": "test1@google.com", + "displayName": "test1 testlatname1", + "self": true, + "responseStatus": "needsAction" + }, + { + "email": "test2@google.com", + "displayName": "test2 testlatname2", + "responseStatus": "accepted" + } ], "hangoutLink": "https://meet.google.com/jbe-test", "conferenceData": { - "entryPoints": [ - { - "entryPointType": "video", - "uri": "https://meet.google.com/jbe-test", - "label": "meet.google.com/jbe-test" + "entryPoints": [ + { + "entryPointType": "video", + "uri": "https://meet.google.com/jbe-test", + "label": "meet.google.com/jbe-test" + }, + { + "entryPointType": "more", + "uri": "https://tel.meet/jbe-test?pin=6390031303227", + "pin": "6390031303227" + }, + { + "regionCode": "US", + "entryPointType": "phone", + "uri": "tel:+1-469-305-0860", + "label": "+1 469-305-0860", + "pin": "383483" + } + ], + "conferenceSolution": { + "key": { + "type": "hangoutsMeet" + }, + "name": "Google Meet", + "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" }, - { - "entryPointType": "more", - "uri": "https://tel.meet/jbe-test?pin=6390031303227", - "pin": "6390031303227" - }, - { - "regionCode": "US", - "entryPointType": "phone", - "uri": "tel:+1-469-305-0860", - "label": "+1 469-305-0860", - "pin": "383483" - } - ], - "conferenceSolution": { - "key": { - "type": "hangoutsMeet" - }, - "name": "Google Meet", - "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" - }, - "conferenceId": "jbe-test", - "signature": "ACn9hYFMw8sU85VncET68xXqnRrE" + "conferenceId": "jbe-test", + "signature": "ACn9hYFMw8sU85VncET68xXqnRrE" }, "guestsCanModify": true, "reminders": { - "useDefault": true + "useDefault": true }, "eventType": "default" - }, - { + }, + { "kind": "calendar#event", "etag": "\"3246207098130000\"", "id": "7749obefodf44k4kt7r8lr0l8b", @@ -116,79 +116,79 @@ "description": "meeting notes: \u003ca href=\"https://docs.google.com/document/d/1UikvkL__BYOtest/edit?resourcekey=0-e1MW5R3-74eHVaj4Fad_vw#\"\u003ehttps://docs.google.com/document/d/1UikvkL__BYOtest/edit?resourcekey=0-e1MW5R3-74eHVaj4Fad_vw#\u003c/a\u003e", "colorId": "3", "creator": { - "email": "test1@google.com", - "displayName": "test1 testlatname1", - "self": true + "email": "test1@google.com", + "displayName": "test1 testlatname1", + "self": true }, "organizer": { - "email": "test1@google.com", - "displayName": "test1 testlatname1", - "self": true + "email": "test1@google.com", + "displayName": "test1 testlatname1", + "self": true }, "start": { - "dateTime": "2021-06-07T15:00:00-07:00" + "dateTime": "2021-06-07T15:00:00-07:00" }, "end": { - "dateTime": "2021-06-07T15:30:00-07:00" + "dateTime": "2021-06-07T15:30:00-07:00" }, "iCalUID": "7749obefodf44k4kt7r8lr0l8b@google.com", "sequence": 1, "attendees": [ - { - "email": "test4@google.com", - "displayName": "test test4", - "responseStatus": "accepted" - }, - { - "email": "test6@google.com", - "displayName": "test test6", - "responseStatus": "accepted" - }, - { - "email": "test1@google.com", - "displayName": "test1 testlatname1", - "organizer": true, - "self": true, - "responseStatus": "accepted" - } + { + "email": "test4@google.com", + "displayName": "test test4", + "responseStatus": "accepted" + }, + { + "email": "test6@google.com", + "displayName": "test test6", + "responseStatus": "accepted" + }, + { + "email": "test1@google.com", + "displayName": "test1 testlatname1", + "organizer": true, + "self": true, + "responseStatus": "accepted" + } ], "hangoutLink": "https://meet.google.com/dbp-qnpu-dtr", "conferenceData": { - "entryPoints": [ - { - "entryPointType": "video", - "uri": "https://meet.google.com/dbp-qnpu-dtr", - "label": "meet.google.com/dbp-qnpu-dtr" + "entryPoints": [ + { + "entryPointType": "video", + "uri": "https://meet.google.com/dbp-qnpu-dtr", + "label": "meet.google.com/dbp-qnpu-dtr" + }, + { + "entryPointType": "more", + "uri": "https://tel.meet/dbp-qnpu-dtr?pin=9643865380295", + "pin": "9643865380295" + }, + { + "regionCode": "US", + "entryPointType": "phone", + "uri": "tel:+1-505-445-7759", + "label": "+1 505-445-7759", + "pin": "537999715" + } + ], + "conferenceSolution": { + "key": { + "type": "hangoutsMeet" + }, + "name": "Google Meet", + "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" }, - { - "entryPointType": "more", - "uri": "https://tel.meet/dbp-qnpu-dtr?pin=9643865380295", - "pin": "9643865380295" - }, - { - "regionCode": "US", - "entryPointType": "phone", - "uri": "tel:+1-505-445-7759", - "label": "+1 505-445-7759", - "pin": "537999715" - } - ], - "conferenceSolution": { - "key": { - "type": "hangoutsMeet" - }, - "name": "Google Meet", - "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" - }, - "conferenceId": "dbp-qnpu-dtr", - "signature": "ACn9hYEoGEiIFbVraLJKk6nZMT8W" + "conferenceId": "dbp-qnpu-dtr", + "signature": "ACn9hYEoGEiIFbVraLJKk6nZMT8W" }, "reminders": { - "useDefault": true + "useDefault": true }, "eventType": "default" - }, - { + }, + { "kind": "calendar#event", "etag": "\"3246695702310000\"", "id": "1a5n209tijjtrd1mhn2lkgdaq9", @@ -198,73 +198,73 @@ "updated": "2021-06-10T17:57:31.155Z", "summary": "System UI sync", "creator": { - "email": "test5@google.com", - "displayName": "test test5" + "email": "test5@google.com", + "displayName": "test test5" }, "organizer": { - "email": "test5@google.com", - "displayName": "test test5" + "email": "test5@google.com", + "displayName": "test test5" }, "start": { - "dateTime": "2021-05-10T11:30:00-07:00", - "timeZone": "America/Los_Angeles" + "dateTime": "2021-05-10T11:30:00-07:00", + "timeZone": "America/Los_Angeles" }, "end": { - "dateTime": "2021-05-10T12:00:00-07:00", - "timeZone": "America/Los_Angeles" + "dateTime": "2021-05-10T12:00:00-07:00", + "timeZone": "America/Los_Angeles" }, "recurrence": [ - "RRULE:FREQ=WEEKLY;UNTIL=20210614T065959Z;BYDAY=MO" + "RRULE:FREQ=WEEKLY;UNTIL=20210614T065959Z;BYDAY=MO" ], "iCalUID": "1a5n209tijjtrd1mhn2lkgdaq9@google.com", "sequence": 0, "attendees": [ - { - "email": "test4@google.com", - "responseStatus": "needsAction" - }, - { - "email": "test1@google.com", - "displayName": "test1 testlatname1", - "self": true, - "responseStatus": "accepted" - } + { + "email": "test4@google.com", + "responseStatus": "needsAction" + }, + { + "email": "test1@google.com", + "displayName": "test1 testlatname1", + "self": true, + "responseStatus": "accepted" + } ], "hangoutLink": "https://meet.google.com/kid-test", "conferenceData": { - "entryPoints": [ - { - "entryPointType": "video", - "uri": "https://meet.google.com/kid-test", - "label": "meet.google.com/kid-test" + "entryPoints": [ + { + "entryPointType": "video", + "uri": "https://meet.google.com/kid-test", + "label": "meet.google.com/kid-test" + }, + { + "entryPointType": "more", + "uri": "https://tel.meet/kid-test?pin=2281762872233", + "pin": "2281762872233" + }, + { + "regionCode": "US", + "entryPointType": "phone", + "uri": "tel:+1-631-621-7845", + "label": "+1 631-621-7845", + "pin": "757210" + } + ], + "conferenceSolution": { + "key": { + "type": "hangoutsMeet" + }, + "name": "Google Meet", + "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" }, - { - "entryPointType": "more", - "uri": "https://tel.meet/kid-test?pin=2281762872233", - "pin": "2281762872233" - }, - { - "regionCode": "US", - "entryPointType": "phone", - "uri": "tel:+1-631-621-7845", - "label": "+1 631-621-7845", - "pin": "757210" - } - ], - "conferenceSolution": { - "key": { - "type": "hangoutsMeet" - }, - "name": "Google Meet", - "iconUri": "https://fonts.gstatic.com/s/i/productlogos/meet_2020q4/v6/web-512dp/logo_meet_2020q4_color_2x_web_512dp.png" - }, - "conferenceId": "kid-test", - "signature": "ACn9hYECv1wqAa2nRcODwiTjDSb9" + "conferenceId": "kid-test", + "signature": "ACn9hYECv1wqAa2nRcODwiTjDSb9" }, "reminders": { - "useDefault": true + "useDefault": true }, "eventType": "default" - } - ] - } + } + ] +}
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc index 5240052..59e4d2dc 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -466,13 +466,8 @@ } SharedImageBackingFactoryAHB::SharedImageBackingFactoryAHB( - const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info) { + const gles2::FeatureInfo* feature_info) { DCHECK(base::AndroidHardwareBufferCompat::IsSupportAvailable()); - scoped_refptr<gles2::FeatureInfo> feature_info = - new gles2::FeatureInfo(workarounds, gpu_feature_info); - feature_info->Initialize(ContextType::CONTEXT_TYPE_OPENGLES2, false, - gles2::DisallowedFeatures()); const gles2::Validators* validators = feature_info->validators(); const bool is_egl_image_supported = gl::g_current_gl_driver->ext.b_GL_OES_EGL_image;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h index 68422d5e..d5f31c3c 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h
@@ -16,9 +16,12 @@ } // namespace gfx namespace gpu { + +namespace gles2 { +class FeatureInfo; +} // namespace gles2 + class SharedImageBacking; -class GpuDriverBugWorkarounds; -struct GpuFeatureInfo; struct Mailbox; // Implementation of SharedImageBackingFactory that produces AHardwareBuffer @@ -26,8 +29,7 @@ class GPU_GLES2_EXPORT SharedImageBackingFactoryAHB : public SharedImageBackingFactory { public: - SharedImageBackingFactoryAHB(const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info); + explicit SharedImageBackingFactoryAHB(const gles2::FeatureInfo* feature_info); SharedImageBackingFactoryAHB(const SharedImageBackingFactoryAHB&) = delete; SharedImageBackingFactoryAHB& operator=(const SharedImageBackingFactoryAHB&) =
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc index 6343888..ecb4326 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer_unittest.cc
@@ -66,7 +66,7 @@ context_state_->InitializeGL(GpuPreferences(), std::move(feature_info)); backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>( - workarounds, GpuFeatureInfo()); + context_state_->feature_info()); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr); shared_image_representation_factory_ =
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc index dbd5771..c584d6f0 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc
@@ -463,11 +463,10 @@ SharedImageBackingFactoryAngleVulkan::SharedImageBackingFactoryAngleVulkan( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, SharedContextState* context_state) : SharedImageBackingFactoryGLCommon(gpu_preferences, workarounds, - gpu_feature_info, + context_state->feature_info(), context_state->progress_reporter()), context_state_(context_state) { DCHECK(context_state_->GrContextIsVulkan());
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.h b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.h index cdd7f3d..eb4db563 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.h
@@ -17,7 +17,6 @@ SharedImageBackingFactoryAngleVulkan( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, SharedContextState* context_state); ~SharedImageBackingFactoryAngleVulkan() override;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_egl.cc b/gpu/command_buffer/service/shared_image_backing_factory_egl.cc index a93e480..9516bdb37 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_egl.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_egl.cc
@@ -29,11 +29,11 @@ SharedImageBackingFactoryEGL::SharedImageBackingFactoryEGL( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, SharedImageBatchAccessManager* batch_access_manager) : SharedImageBackingFactoryGLCommon(gpu_preferences, workarounds, - gpu_feature_info, + feature_info, /*progress_reporter=*/nullptr), batch_access_manager_(batch_access_manager) {}
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_egl.h b/gpu/command_buffer/service/shared_image_backing_factory_egl.h index 3fe3f1d..451c3493 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_egl.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_egl.h
@@ -25,7 +25,6 @@ class SharedImageBacking; class SharedImageBatchAccessManager; class GpuDriverBugWorkarounds; -struct GpuFeatureInfo; struct GpuPreferences; struct Mailbox; @@ -37,7 +36,7 @@ SharedImageBackingFactoryEGL( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, SharedImageBatchAccessManager* batch_access_manager); ~SharedImageBackingFactoryEGL() override;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_egl_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_egl_unittest.cc index 0e32250..f8d162a 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_egl_unittest.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_egl_unittest.cc
@@ -95,7 +95,7 @@ GpuPreferences preferences; preferences.use_passthrough_cmd_decoder = use_passthrough(); backing_factory_ = std::make_unique<SharedImageBackingFactoryEGL>( - preferences, workarounds, GpuFeatureInfo(), + preferences, workarounds, context_state_->feature_info(), shared_image_manager_->batch_access_manager()); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr);
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_common.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_common.cc index b08a13d..12037ee 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_common.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_common.cc
@@ -17,14 +17,13 @@ #include "ui/gl/progress_reporter.h" namespace gpu { - /////////////////////////////////////////////////////////////////////////////// // SharedImageBackingFactoryGLCommon SharedImageBackingFactoryGLCommon::SharedImageBackingFactoryGLCommon( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, gl::ProgressReporter* progress_reporter) : use_passthrough_(gpu_preferences.use_passthrough_cmd_decoder && gles2::PassthroughCommandDecoderSupported()), @@ -38,11 +37,6 @@ // cases, clamped to INT_MAX, always invalid. max_texture_size_ = std::min(max_texture_size_, INT_MAX - 1); - // TODO(piman): Can we extract the logic out of FeatureInfo? - scoped_refptr<gles2::FeatureInfo> feature_info = - new gles2::FeatureInfo(workarounds, gpu_feature_info); - feature_info->Initialize(ContextType::CONTEXT_TYPE_OPENGLES2, - use_passthrough_, gles2::DisallowedFeatures()); texture_usage_angle_ = feature_info->feature_flags().angle_texture_usage; attribs_.es3_capable = feature_info->IsES3Capable(); attribs_.desktop_gl = !feature_info->gl_version_info().is_es; @@ -74,12 +68,12 @@ info.gl_format = gl_format; info.gl_type = gl_type; info.swizzle = gles2::TextureManager::GetCompatibilitySwizzle( - feature_info.get(), gl_format); + feature_info, gl_format); info.image_internal_format = gles2::TextureManager::AdjustTexInternalFormat( - feature_info.get(), image_internal_format, gl_type); + feature_info, image_internal_format, gl_type); info.adjusted_format = - gles2::TextureManager::AdjustTexFormat(feature_info.get(), gl_format); + gles2::TextureManager::AdjustTexFormat(feature_info, gl_format); } if (!info.enabled) continue; @@ -91,7 +85,7 @@ info.supports_storage = true; info.storage_internal_format = gles2::TextureManager::AdjustTexStorageFormat( - feature_info.get(), storage_internal_format); + feature_info, storage_internal_format); } } }
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_common.h b/gpu/command_buffer/service/shared_image_backing_factory_gl_common.h index de9f28f..6024fee 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_common.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_common.h
@@ -19,8 +19,12 @@ } // namespace gl namespace gpu { + +namespace gles2 { +class FeatureInfo; +} // namespace gles2 + class GpuDriverBugWorkarounds; -struct GpuFeatureInfo; struct GpuPreferences; // Common constructor and helper functions for @@ -59,7 +63,7 @@ protected: SharedImageBackingFactoryGLCommon(const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, gl::ProgressReporter* progress_reporter); ~SharedImageBackingFactoryGLCommon() override;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_image.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_image.cc index 29bb014..037d2d3 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_image.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_image.cc
@@ -39,20 +39,16 @@ SharedImageBackingFactoryGLImage::SharedImageBackingFactoryGLImage( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, ImageFactory* image_factory, gl::ProgressReporter* progress_reporter, const bool for_shared_memory_gmbs) : SharedImageBackingFactoryGLCommon(gpu_preferences, workarounds, - gpu_feature_info, + feature_info, progress_reporter), image_factory_(image_factory), for_shared_memory_gmbs_(for_shared_memory_gmbs) { - scoped_refptr<gles2::FeatureInfo> feature_info = - new gles2::FeatureInfo(workarounds, gpu_feature_info); - feature_info->Initialize(ContextType::CONTEXT_TYPE_OPENGLES2, - use_passthrough_, gles2::DisallowedFeatures()); gpu_memory_buffer_formats_ = feature_info->feature_flags().gpu_memory_buffer_formats; // Return if scanout images are not supported
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_image.h b/gpu/command_buffer/service/shared_image_backing_factory_gl_image.h index 0cf9425..86f81025 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_image.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_image.h
@@ -25,7 +25,6 @@ namespace gpu { class SharedImageBacking; class GpuDriverBugWorkarounds; -struct GpuFeatureInfo; struct GpuPreferences; struct Mailbox; class ImageFactory; @@ -42,7 +41,7 @@ // other parts with OzoneBacking and other backings. SharedImageBackingFactoryGLImage(const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, ImageFactory* image_factory, gl::ProgressReporter* progress_reporter, const bool for_shared_memory_gmbs);
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_image_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_image_unittest.cc index 73a67d8..a85d194 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_image_unittest.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_image_unittest.cc
@@ -106,10 +106,10 @@ GpuPreferences preferences; preferences.use_passthrough_cmd_decoder = use_passthrough(); backing_factory_ = std::make_unique<SharedImageBackingFactoryGLImage>( - preferences, workarounds, GpuFeatureInfo(), factory, + preferences, workarounds, context_state_->feature_info(), factory, &progress_reporter_, /*for_shared_memory_gmbs=*/false); backing_factory_shmem_ = std::make_unique<SharedImageBackingFactoryGLImage>( - preferences, workarounds, GpuFeatureInfo(), factory, + preferences, workarounds, context_state_->feature_info(), factory, &progress_reporter_, /*for_shared_memory_gmbs=*/true); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr);
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc index 26c8e6f..78cfa5e 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
@@ -36,11 +36,11 @@ SharedImageBackingFactoryGLTexture::SharedImageBackingFactoryGLTexture( const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, gl::ProgressReporter* progress_reporter) : SharedImageBackingFactoryGLCommon(gpu_preferences, workarounds, - gpu_feature_info, + feature_info, progress_reporter) {} SharedImageBackingFactoryGLTexture::~SharedImageBackingFactoryGLTexture() =
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h index ed5a806..e352c6b 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h
@@ -23,7 +23,6 @@ namespace gpu { class SharedImageBacking; class GpuDriverBugWorkarounds; -struct GpuFeatureInfo; struct GpuPreferences; struct Mailbox; @@ -34,7 +33,7 @@ public: SharedImageBackingFactoryGLTexture(const GpuPreferences& gpu_preferences, const GpuDriverBugWorkarounds& workarounds, - const GpuFeatureInfo& gpu_feature_info, + const gles2::FeatureInfo* feature_info, gl::ProgressReporter* progress_reporter); ~SharedImageBackingFactoryGLTexture() override;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc index 0bd65fe..2507384 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
@@ -102,7 +102,8 @@ GpuPreferences preferences; preferences.use_passthrough_cmd_decoder = use_passthrough(); backing_factory_ = std::make_unique<SharedImageBackingFactoryGLTexture>( - preferences, workarounds, GpuFeatureInfo(), &progress_reporter_); + preferences, workarounds, context_state_->feature_info(), + &progress_reporter_); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr); shared_image_representation_factory_ =
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc index 8c5b424..5da51aa 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface_unittest.cc
@@ -67,7 +67,8 @@ context_state_->InitializeGL(preferences, std::move(feature_info)); backing_factory_ = std::make_unique<SharedImageBackingFactoryGLImage>( - preferences, workarounds, GpuFeatureInfo(), &image_factory_, + preferences, workarounds, context_state_->feature_info(), + &image_factory_, /*progress_reporter=*/nullptr, /*for_shared_memory_gmbs=*/false); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr);
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc index 534ea0b..b7acfd0b 100644 --- a/gpu/command_buffer/service/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -239,6 +239,20 @@ gr_context_type_ == GrContextType::kVulkan); #endif + scoped_refptr<gles2::FeatureInfo> feature_info; + if (shared_context_state_) { + feature_info = shared_context_state_->feature_info(); + } + + if (!feature_info) { + // For some unit tests, shared_context_state_ could be nullptr. + bool use_passthrough = gpu_preferences.use_passthrough_cmd_decoder && + gles2::PassthroughCommandDecoderSupported(); + feature_info = new gles2::FeatureInfo(workarounds, gpu_feature_info); + feature_info->Initialize(ContextType::CONTEXT_TYPE_OPENGLES2, + use_passthrough, gles2::DisallowedFeatures()); + } + if (!set_dmabuf_supported_metric_) { bool pixmap_supported = ShouldUseOzoneFactory(); bool vulkan_ext_supported = false; @@ -297,7 +311,7 @@ if (use_gl) { auto gl_texture_backing_factory = std::make_unique<SharedImageBackingFactoryGLTexture>( - gpu_preferences, workarounds, gpu_feature_info, + gpu_preferences, workarounds, feature_info.get(), shared_context_state_ ? shared_context_state_->progress_reporter() : nullptr); factories_.push_back(std::move(gl_texture_backing_factory)); @@ -318,7 +332,7 @@ if (use_gl) { auto gl_image_backing_factory = std::make_unique<SharedImageBackingFactoryGLImage>( - gpu_preferences, workarounds, gpu_feature_info, image_factory, + gpu_preferences, workarounds, feature_info.get(), image_factory, shared_context_state_ ? shared_context_state_->progress_reporter() : nullptr, /*for_shared_memory_gmbs=*/true); @@ -331,7 +345,7 @@ if ((gr_context_type_ == GrContextType::kVulkan) && (base::FeatureList::IsEnabled(features::kVulkanFromANGLE))) { auto factory = std::make_unique<SharedImageBackingFactoryAngleVulkan>( - gpu_preferences, workarounds, gpu_feature_info, context_state); + gpu_preferences, workarounds, context_state); factories_.push_back(std::move(factory)); } #endif @@ -345,7 +359,7 @@ #elif BUILDFLAG(IS_ANDROID) if (use_gl) { auto egl_backing_factory = std::make_unique<SharedImageBackingFactoryEGL>( - gpu_preferences, workarounds, gpu_feature_info, + gpu_preferences, workarounds, feature_info.get(), shared_image_manager->batch_access_manager()); factories_.push_back(std::move(egl_backing_factory)); } @@ -362,8 +376,8 @@ VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME); } if (is_ahb_supported) { - auto ahb_factory = std::make_unique<SharedImageBackingFactoryAHB>( - workarounds, gpu_feature_info); + auto ahb_factory = + std::make_unique<SharedImageBackingFactoryAHB>(feature_info.get()); factories_.push_back(std::move(ahb_factory)); } if (gr_context_type_ == GrContextType::kVulkan && @@ -409,7 +423,7 @@ if (use_gl) { auto gl_image_backing_factory = std::make_unique<SharedImageBackingFactoryGLImage>( - gpu_preferences, workarounds, gpu_feature_info, image_factory, + gpu_preferences, workarounds, feature_info.get(), image_factory, shared_context_state_ ? shared_context_state_->progress_reporter() : nullptr, /*for_shared_memory_gmbs=*/false);
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index f88dec59..7447f2f 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -87,6 +87,7 @@ size_t GetMaximumAllocationSize() const final; void* GetCmdSpace(size_t size) final; bool Flush() final; + bool NeedsFlush() const; private: raw_ptr<DecoderClient> client_; @@ -136,8 +137,12 @@ return ptr; } +bool WireServerCommandSerializer::NeedsFlush() const { + return put_offset_ > kDawnReturnCmdsOffset; +} + bool WireServerCommandSerializer::Flush() { - if (put_offset_ > kDawnReturnCmdsOffset) { + if (NeedsFlush()) { TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("gpu.dawn"), "WireServerCommandSerializer::Flush", "bytes", put_offset_); @@ -255,13 +260,16 @@ bool HasMoreIdleWork() const override { return false; } void PerformIdleWork() override {} - bool HasPollingWork() const override { return has_polling_work_; } + bool HasPollingWork() const override { + return has_polling_work_ || wire_serializer_->NeedsFlush(); + } void PerformPollingWork() override { TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("gpu.dawn"), "WebGPUDecoderImpl::PerformPollingWork"); has_polling_work_ = false; if (known_devices_.empty()) { + wire_serializer_->Flush(); return; }
diff --git a/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json b/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json index c18caf9e..01e2183 100644 --- a/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json +++ b/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json
@@ -1,4 +1,50 @@ { + "$build/chromium_tests_builder_config": { + "builder_config": { + "builder_db": { + "entries": [ + { + "builder_id": { + "bucket": "ci", + "builder": "ios-simulator-cronet", + "project": "chromium" + }, + "builder_spec": { + "build_gs_bucket": "chromium-fyi-archive", + "builder_group": "chromium.fyi", + "execution_mode": "COMPILE_AND_TEST", + "legacy_chromium_config": { + "apply_configs": [ + "mb", + "mac_toolchain" + ], + "build_config": "Debug", + "config": "chromium", + "target_bits": 64, + "target_platform": "ios" + }, + "legacy_gclient_config": { + "config": "ios" + } + } + } + ] + }, + "builder_ids": [ + { + "bucket": "ci", + "builder": "ios-simulator-cronet", + "project": "chromium" + } + ], + "mirroring_builder_group_and_names": [ + { + "builder": "ios-simulator-cronet", + "group": "tryserver.chromium.mac" + } + ] + } + }, "$build/goma": { "rpc_extra_params": "?prod", "server_host": "goma.chromium.org",
diff --git a/infra/config/generated/builders/ci/win10-code-coverage/properties.json b/infra/config/generated/builders/ci/win10-code-coverage/properties.json index 736b789..573155d 100644 --- a/infra/config/generated/builders/ci/win10-code-coverage/properties.json +++ b/infra/config/generated/builders/ci/win10-code-coverage/properties.json
@@ -6,10 +6,11 @@ ], "use_clang_coverage": true }, - "$build/reclient": { - "instance": "rbe-chromium-trusted", - "jobs": 250, - "metrics_project": "chromium-reclient-metrics" + "$build/goma": { + "enable_ats": true, + "rpc_extra_params": "?prod", + "server_host": "goma.chromium.org", + "use_luci_auth": true }, "$recipe_engine/resultdb/test_presentation": { "column_keys": [],
diff --git a/infra/config/generated/builders/try/ios-simulator-cronet/properties.json b/infra/config/generated/builders/try/ios-simulator-cronet/properties.json index 331d60c9..9491a02 100644 --- a/infra/config/generated/builders/try/ios-simulator-cronet/properties.json +++ b/infra/config/generated/builders/try/ios-simulator-cronet/properties.json
@@ -1,4 +1,44 @@ { + "$build/chromium_tests_builder_config": { + "builder_config": { + "builder_db": { + "entries": [ + { + "builder_id": { + "bucket": "ci", + "builder": "ios-simulator-cronet", + "project": "chromium" + }, + "builder_spec": { + "build_gs_bucket": "chromium-fyi-archive", + "builder_group": "chromium.fyi", + "execution_mode": "COMPILE_AND_TEST", + "legacy_chromium_config": { + "apply_configs": [ + "mb", + "mac_toolchain" + ], + "build_config": "Debug", + "config": "chromium", + "target_bits": 64, + "target_platform": "ios" + }, + "legacy_gclient_config": { + "config": "ios" + } + } + } + ] + }, + "builder_ids": [ + { + "bucket": "ci", + "builder": "ios-simulator-cronet", + "project": "chromium" + } + ] + } + }, "$build/flakiness": { "check_for_flakiness": true },
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg index c35c761..40a12ada 100644 --- a/infra/config/generated/luci/cr-buildbucket.cfg +++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -9198,10 +9198,11 @@ } properties: '{' - ' "$build/reclient": {' - ' "instance": "rbe-chromium-trusted",' - ' "jobs": 80,' - ' "metrics_project": "chromium-reclient-metrics"' + ' "$build/goma": {' + ' "enable_ats": true,' + ' "rpc_extra_params": "?prod",' + ' "server_host": "goma.chromium.org",' + ' "use_luci_auth": true' ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],' @@ -21558,10 +21559,12 @@ } properties: '{' - ' "$build/reclient": {' - ' "instance": "rbe-chromium-trusted",' - ' "jobs": 250,' - ' "metrics_project": "chromium-reclient-metrics"' + ' "$build/goma": {' + ' "enable_ats": true,' + ' "jobs": 150,' + ' "rpc_extra_params": "?prod",' + ' "server_host": "goma.chromium.org",' + ' "use_luci_auth": true' ' },' ' "$recipe_engine/resultdb/test_presentation": {' ' "column_keys": [],'
diff --git a/infra/config/generated/luci/luci-notify.cfg b/infra/config/generated/luci/luci-notify.cfg index c3b2ce0..e9273a7 100644 --- a/infra/config/generated/luci/luci-notify.cfg +++ b/infra/config/generated/luci/luci-notify.cfg
@@ -205,6 +205,25 @@ } notifiers { notifications { + on_occurrence: FAILURE + failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b" + email { + rotation_urls: "https://chrome-ops-rotation-proxy.appspot.com/current/oncallator:chrome-build-sheriff" + } + template: "tree_closure_email_template" + } + builders { + bucket: "ci" + name: "Android arm64 Builder All Targets (dbg)" + repository: "https://chromium.googlesource.com/chromium/src" + } + tree_closers { + tree_status_host: "chromium-status.appspot.com" + failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b" + } +} +notifiers { + notifications { on_new_status: FAILURE email { recipients: "pcc@chromium.org"
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star index e7dc55a..d3f0f717 100644 --- a/infra/config/subprojects/chromium/ci/chromium.android.star +++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -301,9 +301,7 @@ ), cq_mirrors_console_view = "mirrors", execution_timeout = 7 * time.hour, - # We will make this tree closing once we have confirmed that this builder works correctly - # crbug.com/1246468 - tree_closing = False, + tree_closing = True, ) ci.builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuzz.star b/infra/config/subprojects/chromium/ci/chromium.fuzz.star index 1848801..22254fa 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fuzz.star +++ b/infra/config/subprojects/chromium/ci/chromium.fuzz.star
@@ -544,7 +544,4 @@ triggering_policy = scheduler.greedy_batching( max_concurrent_invocations = 3, ), - goma_backend = None, - reclient_jobs = rbe_jobs.LOW_JOBS_FOR_CI, - reclient_instance = rbe_instance.DEFAULT, )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star index 5763e2b..bad91b54 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -1188,9 +1188,6 @@ os = os.WINDOWS_DEFAULT, coverage_test_types = ["overall", "unit"], use_clang_coverage = True, - goma_backend = None, - reclient_jobs = rbe_jobs.DEFAULT, - reclient_instance = rbe_instance.DEFAULT, ) fyi_ios_builder( @@ -1243,6 +1240,22 @@ fyi_ios_builder( name = "ios-simulator-cronet", branch_selector = branches.STANDARD_MILESTONE, + builder_spec = builder_config.builder_spec( + gclient_config = builder_config.gclient_config( + config = "ios", + ), + chromium_config = builder_config.chromium_config( + config = "chromium", + apply_configs = [ + "mb", + "mac_toolchain", + ], + build_config = builder_config.build_config.DEBUG, + target_bits = 64, + target_platform = builder_config.target_platform.IOS, + ), + build_gs_bucket = "chromium-fyi-archive", + ), console_view_entry = consoles.console_view_entry( category = "cronet", short_name = "intel",
diff --git a/infra/config/subprojects/chromium/ci/chromium.win.star b/infra/config/subprojects/chromium/ci/chromium.win.star index ea25c2c..bcfb575 100644 --- a/infra/config/subprojects/chromium/ci/chromium.win.star +++ b/infra/config/subprojects/chromium/ci/chromium.win.star
@@ -263,7 +263,5 @@ ), executable = "recipe:swarming/deterministic_build", execution_timeout = 12 * time.hour, - goma_backend = None, - reclient_jobs = rbe_jobs.DEFAULT, - reclient_instance = rbe_instance.DEFAULT, + goma_jobs = goma.jobs.J150, )
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star index ff4d6aa..03a09e5 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
@@ -309,6 +309,9 @@ ios_builder( name = "ios-simulator-cronet", branch_selector = branches.STANDARD_MILESTONE, + mirrors = [ + "ci/ios-simulator-cronet", + ], check_for_flakiness = True, main_list_view = "try", tryjob = try_.job(
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb index b66a466..352188e9 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
@@ -82,6 +82,7 @@ <translation id="632825460376924298">የChromium በመለያ መግባትን ይፍቀዱ</translation> <translation id="6337530241089703714">የChromium ውሂብዎን ከዚህ መሣሪያ ይጸዳ ወይም ይቆይ እንደሆነ ይምረጡ</translation> <translation id="6424492062988593837">Chromium አሁን ተሻሽሏል! አዲስ ስሪት አለ።</translation> +<translation id="6625409903340039086">Chromium አሁን ለሚተዳደረው መለያዎ የተጠቃሚ መመሪያዎችን ይደግፋል</translation> <translation id="6752854822223394465">የእርስዎ ድርጅት Chromiumን እያዋቀረ ነው...</translation> <translation id="6820823224820483452">Chromium ሁሉንም የይለፍ ቃሎች ማረጋገጥ አልቻለም። ነገ እንደገና ይሞክሩ።</translation> <translation id="7006920032187763988">በእርስዎ iPad ላይ ባሉ ሌሎች መተግበሪያዎች ውስጥ ወደ የይለፍ ቃል አስተዳዳሪ ያስቀመጧቸውን የይለፍ ቃላት መጠቀም ይችላሉ።</translation> @@ -103,6 +104,7 @@ <translation id="7674213385180944843">ቅንብሮች > ግላዊነት > ካሜራ > Chromium ይክፈቱ እና ማይክሮፎን ያብሩ።</translation> <translation id="7746854981345936341">የChromium ጠቃሚ ምክር። አሁን እንደ ተመለስ፣ ወደፊት እና ፍለጋ ያሉ አንዳንድ አዝራሮች አሁን በማያ ገጽዎ አናት ላይ ነው ያሉት።</translation> <translation id="7763454117143368771">ከአደገኛ ጣቢያዎች እንዲጠበቁ እና የይለፍ ቃላትዎን ደህንነት ለመጠበቅ Chromiumን እንደ ነባሪ አሳሽዎ ይጠቀሙ</translation> +<translation id="7812317783196516890">እርስዎ አስተዳዳሪው አሁን የChromium ባህሪን ሊቀይር የሚችሉ መለያውን የሚመለከቱ የተጠቃሚ መመሪያዎችን ማቀናበር ወደሚችሉበት በ<ph name="DOMAIN" /> የሚተዳደር መለያ ገብተዋል እና ውሂብዎን ከእሱ ጋር እያሰመሩት ነው።</translation> <translation id="786327964234957808">የስምረት መለያዎችን ከ<ph name="USER_EMAIL1" /> ወደ <ph name="USER_EMAIL2" /> እየቀየሩ ነው። ነባሩ የChromium ውሂብዎ በ<ph name="DOMAIN" /> ነው የሚተዳደረው። ይሄ ውሂብዎን ከዚህ መሣሪያዎ ይሰርዘዋል፣ ነገር ግን ውሂብዎ በ<ph name="USER_EMAIL1" /> ውስጥ እንዳለ ይቀራል።</translation> <translation id="7890287942691234100">የChromium ቃኚውን መጠቀም ይጀምሩ</translation> <translation id="7928628054454574139">በሌሎች መተግበሪያዎች ውስጥ ያሉ አገናኞችን በማንኛውም ጊዜ መታ ሲያደርጉ Chromiumን ይክፈቱ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb index 88dfb9a..754eaf8 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bs.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Omogućite prijavu pomoću Chromiuma</translation> <translation id="6337530241089703714">Odaberite želite li obrisati podatke Chromiuma s ovog uređaja ili ih želite zadržati</translation> <translation id="6424492062988593837">Chromium je sada još bolji! Dostupna je nova verzija.</translation> +<translation id="6625409903340039086">Chromium sada za vaš upravljani račun podržava korisnička pravila</translation> <translation id="6752854822223394465">Vaša organizacija postavlja Chromium...</translation> <translation id="6820823224820483452">Chromium nije mogao provjeriti sve lozinke. Pokušajte ponovo sutra.</translation> <translation id="7006920032187763988">Možete koristiti lozinke koje ste sačuvali u Upravitelju lozinki u drugim aplikacijama na iPadu.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Otvorite Postavke > Privatnost > Kamera > Chromium i uključite kameru.</translation> <translation id="7746854981345936341">Savjet za Chromium. Neka dugmad poput dugmadi za nazad, naprijed i pretraživanje su sada na dnu ekrana.</translation> <translation id="7763454117143368771">Koristite Chromium kao zadani preglednik da se zaštitite od opasnih web lokacija i da zaštitite lozinke</translation> +<translation id="7812317783196516890">Prijavljeni ste i vaši se podaci sinkroniziraju s računom kojim upravlja web-lokacija <ph name="DOMAIN" />. Administrator sada može postaviti korisnička pravila koja se odnose na taj račun i koja mogu promijeniti ponašanje Chromiuma.</translation> <translation id="786327964234957808">Prebacujete račune za sinhronizaciju s <ph name="USER_EMAIL1" /> na <ph name="USER_EMAIL2" />. Vašim postojećim podacima iz Chromea upravlja domena <ph name="DOMAIN" />. Ovim će se izbrisati vaši podaci s ovog uređaja, ali će vaši podaci ostati na računu <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Počnite koristiti Chromium skener</translation> <translation id="7928628054454574139">Otvorite Chromium kad god dodirnete linkove u drugim aplikacijama</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb index 24f348e..7543486 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_cy.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Caniatáu Mewngofnodi i Chromium</translation> <translation id="6337530241089703714">Dewiswch a ddylid clirio eich data Chromium o'r ddyfais hon neu eu cadw</translation> <translation id="6424492062988593837">Mae Chromium newydd fynd hyd yn oed yn well! Mae fersiwn newydd ar gael.</translation> +<translation id="6625409903340039086">Mae Chromium bellach yn cefnogi polisïau defnyddwyr ar gyfer eich cyfrif a reolir</translation> <translation id="6752854822223394465">Mae'ch sefydliad wrthi'n gosod Chromium…</translation> <translation id="6820823224820483452">Nid oedd modd i Chromium wirio'r holl gyfrineiriau. Rhowch gynnig arall arni yfory.</translation> <translation id="7006920032187763988">Gallwch ddefnyddio'r cyfrineiriau a gadwyd gennych i'r Rheolwr Cyfrineiriau mewn apiau eraill ar eich iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Agorwch Gosodiadau > Preifatrwydd > Camera > Chromium a throwch y camera ymlaen.</translation> <translation id="7746854981345936341">Awgrym Chromium. Mae rhai botymau bellach ar waelod eich sgrîn, megis Back, Forward, a Search.</translation> <translation id="7763454117143368771">Defnyddiwch Chromium fel eich porwr diofyn i gadw yn ddiogel rhag gwefannau peryglus ac i gadw eich cyfrineiriau'n ddiogel</translation> +<translation id="7812317783196516890">Rydych wedi mewngofnodi ac yn cysoni'ch data â chyfrif a reolir gan <ph name="DOMAIN" /> lle gall ei weinyddwr bellach osod polisïau defnyddwyr sy'n benodol i'r cyfrif hwnnw a all newid ymddygiad Chromium.</translation> <translation id="786327964234957808">Rydych yn newid cyfrifon cysoni o <ph name="USER_EMAIL1" /> i <ph name="USER_EMAIL2" />. Mae eich data Chromium presennol yn cael eu rheoli gan <ph name="DOMAIN" />. Bydd hyn yn dileu eich data o'r ddyfais hon, ond bydd eich data yn aros yn <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Dechrau defnyddio sganiwr Chromium</translation> <translation id="7928628054454574139">Agor Chromium unrhyw bryd y byddwch yn tapio dolenni mewn apiau eraill</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb index 52cc9d10..d3ba01b 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
@@ -82,6 +82,7 @@ <translation id="632825460376924298">Anmeldung in Chromium zulassen</translation> <translation id="6337530241089703714">Möchtest du deine Chromium-Daten von diesem Gerät löschen oder sie behalten?</translation> <translation id="6424492062988593837">Chromium ist jetzt noch besser! Es ist eine neue Version verfügbar.</translation> +<translation id="6625409903340039086">Chromium unterstützt jetzt Nutzerrichtlinien für dein verwaltetes Konto</translation> <translation id="6752854822223394465">Deine Organisation richtet Chromium ein…</translation> <translation id="6820823224820483452">Chromium konnte nicht alle Passwörter prüfen. Versuche es morgen noch einmal.</translation> <translation id="7006920032187763988">Du kannst die im Passwortmanager gespeicherten Passwörter in anderen Apps auf deinem iPad verwenden.</translation> @@ -103,6 +104,7 @@ <translation id="7674213385180944843">Öffne „Einstellungen“ > „Datenschutz“ > „Kamera“ > „Chromium“ und aktiviere die Kamera.</translation> <translation id="7746854981345936341">Chromium-Tipp: Manche Schaltflächen wie "Zurück", "Weiter" und "Suche" befinden sich jetzt unten auf dem Bildschirm.</translation> <translation id="7763454117143368771">Wenn du Chromium als Standardbrowser verwendest, bist du bestmöglich vor gefährlichen Websites geschützt und kannst auch deine Passwörter besser schützen</translation> +<translation id="7812317783196516890">Du bist angemeldet und deine Daten werden mit einem Konto synchronisiert, das von <ph name="DOMAIN" /> verwaltet wird. Der Administrator dieser Domain kann jetzt spezifische Nutzerrichtlinien für dieses Konto festlegen, die das Verhalten von Chromium verändern können.</translation> <translation id="786327964234957808">Du stellst die Kontosynchronisierung von <ph name="USER_EMAIL1" /> auf <ph name="USER_EMAIL2" /> um. Deine bestehenden Chromium-Daten werden von <ph name="DOMAIN" /> verwaltet. Dadurch werden deine Daten von diesem Gerät gelöscht, bleiben jedoch in <ph name="USER_EMAIL1" /> erhalten.</translation> <translation id="7890287942691234100">Jetzt Chromium-Scanner verwenden</translation> <translation id="7928628054454574139">Chromium immer öffnen, wenn du auf Links in anderen Apps tippst</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb index 1b70d3df..f603b7c3 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Να επιτρέπεται η σύνδεση στο Chromium</translation> <translation id="6337530241089703714">Επιλέξτε εάν θέλετε να διαγράψετε ή να διατηρήσετε τα δεδομένα σας Chromium σε αυτήν τη συσκευή</translation> <translation id="6424492062988593837">Το Chromium μόλις βελτιώθηκε! Μια νέα έκδοση είναι διαθέσιμη.</translation> +<translation id="6625409903340039086">Το Chromium υποστηρίζει πλέον πολιτικές χρήστη για τον διαχειριζόμενο λογαριασμό σας</translation> <translation id="6752854822223394465">Ο οργανισμός σας ρυθμίζει το Chromium…</translation> <translation id="6820823224820483452">Το Chromium δεν μπόρεσε να ελέγξει όλους τους κωδικούς πρόσβασης. Δοκιμάστε ξανά αύριο.</translation> <translation id="7006920032187763988">Μπορείτε να χρησιμοποιείτε τους κωδικούς πρόσβασης που αποθηκεύσατε στον Διαχειριστή κωδικών πρόσβασης σε άλλες εφαρμογές στο iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Ανοίξτε το μενού Ρυθμίσεις > Απόρρητο > Κάμερα > Chromium και ενεργοποιήστε την κάμερα.</translation> <translation id="7746854981345936341">Συμβουλή για το Chromium. Ορισμένα κουμπιά είναι πλέον διαθέσιμα στο κάτω τμήμα της οθόνης σας, όπως τα κουμπιά "Προηγούμενο", "Επόμενο" και "Αναζήτηση".</translation> <translation id="7763454117143368771">Χρησιμοποιήστε το Chromium ως το προεπιλεγμένο πρόγραμμα περιήγησής σας για να παραμείνετε προστατευμένοι από επικίνδυνους ιστοτόπους και να διατηρήσετε ασφαλείς τους κωδικούς πρόσβασής σας</translation> +<translation id="7812317783196516890">Έχετε συνδεθεί και συγχρονίζετε τα δεδομένα σας με έναν λογαριασμό που βρίσκεται υπό τη διαχείριση του τομέα <ph name="DOMAIN" />, ο διαχειριστής του οποίου μπορεί πλέον να ορίσει πολιτικές χρήστη ειδικά για αυτόν τον λογαριασμό, ο οποίος μπορεί να αλλάξει τη συμπεριφορά του Chromium.</translation> <translation id="786327964234957808">Πραγματοποιείτε εναλλαγή στους λογαριασμούς συγχρονισμού από <ph name="USER_EMAIL1" /> σε <ph name="USER_EMAIL2" />. Η διαχείριση των υπαρχόντων δεδομένων του Chromium γίνεται από <ph name="DOMAIN" />. Αυτό θα διαγράψει τα δεδομένα σας από αυτήν τη συσκευή, αλλά τα δεδομένα θα διατηρηθούν στη διεύθυνση <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Ξεκινήστε να χρησιμοποιείτε έναν σαρωτή Chromium</translation> <translation id="7928628054454574139">Το Chromium θα ανοίγει κάθε φορά που πατάτε έναν σύνδεσμο σε άλλες εφαρμογές</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb index a96bb4ee..19cc6c5 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_et.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Luba Chromiumisse sisselogimine</translation> <translation id="6337530241089703714">Valige, kas soovite oma Chromiumi andmed sellest seadmest kustutada või need säilitada</translation> <translation id="6424492062988593837">Chromium muutus just veelgi paremaks! Saadaval on uus versioon.</translation> +<translation id="6625409903340039086">Chromium toetab nüüd hallatud konto puhul kasutajareegleid</translation> <translation id="6752854822223394465">Teie organisatsioon seadistab Chromiumi …</translation> <translation id="6820823224820483452">Chromiumil ei õnnestunud kõiki paroole kontrollida. Proovige homme uuesti.</translation> <translation id="7006920032187763988">Saate paroolihaldurisse salvestatud paroole oma iPadi muudes rakendustes kasutada.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Avage menüü Seaded > Privaatsus > Kaamera > Chromium ja lülitage kaamera sisse.</translation> <translation id="7746854981345936341">Chromiumi nõuanne. Mõned nupud, näiteks Tagasi, Edasi ja Otsing, asuvad nüüd ekraani alaosas.</translation> <translation id="7763454117143368771">Kasutage Chromiumi vaikebrauserina, et ohtlike saitide eest kaitstud olla ja oma paroole turvalisena hoida</translation> +<translation id="7812317783196516890">Olete sisse logitud ja andmed sünkroonitakse kontoga, mida haldab <ph name="DOMAIN" />, kus selle administraator saab nüüd määrata konto kasutajareegleid, millega saab Chromiumi käitumist muuta.</translation> <translation id="786327964234957808">Vahetate sünkroonitavad kontod aadressilt <ph name="USER_EMAIL1" /> aadressile <ph name="USER_EMAIL2" />. Teie olemasolevaid Chromiumi andmeid haldab domeen <ph name="DOMAIN" />. Teie andmed kustutatakse sellest seadmest, kuid need jäävad alles kontole <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Alustage Chromiumi skanneri kasutamist</translation> <translation id="7928628054454574139">Kui muudes rakendustes linke puudutate, avaneb alati Chromium</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb index 172360cd..e52bd9a 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">مجاز کردن ورود به سیستم Chromium</translation> <translation id="6337530241089703714">انتخاب کنید دادههای Chromium شما از این دستگاه پاک شود یا نگه داشته شود</translation> <translation id="6424492062988593837">Chromium بهتر شده است! نسخه جدید آن در دسترس است.</translation> +<translation id="6625409903340039086">Chromium اکنون از خطمشیهای کاربر برای حساب مدیریتشده شما پشتیبانی میکند</translation> <translation id="6752854822223394465">سازمانتان درحال راهاندازی Chromium است…</translation> <translation id="6820823224820483452">Chromium نمیتواند همه گذرواژههایتان را بررسی کند. فردا دوباره امتحان کنید.</translation> <translation id="7006920032187763988">میتوانید از گذرواژههای ذخیرهشده در «مدیر گذرواژه» در برنامههای دیگر iPad خودتان استفاده کنید.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Settings (تنظیمات) > Privacy (حریمخصوصی) > Camera (دوربین) > Chromium را باز کنید و دوربین را روشن کنید.</translation> <translation id="7746854981345936341">نکته Chromium. بعضی از دکمهها مثل Back (برگشت)، Forward (به جلو) و Search (جستجو) اکنون در پایین صفحه هستند.</translation> <translation id="7763454117143368771">از Chromium بهعنوان مرورگر پیشفرض استفاده کنید تا دربرابر سایتهای خطرناک از شما محافظت شود و امنیت گذرواژههایتان حفظ شود</translation> +<translation id="7812317783196516890">به سیستم وارد شدهاید و درحال همگامسازی دادههایتان با حساب تحتمدیریت <ph name="DOMAIN" /> هستید. سرپرست این دامنه اکنون میتواند خطمشیهای کاربر مختص آن حساب را تنظیم کند. این کار میتواند رفتار Chromimum را تغییر دهد.</translation> <translation id="786327964234957808">هماکنون درحال تغییر حسابهای همگامسازی از <ph name="USER_EMAIL1" /> به <ph name="USER_EMAIL2" /> هستید. دادههای موجود Chromium شما توسط <ph name="DOMAIN" /> مدیریت میشوند. با این کار، دادههایتان از این دستگاه حذف میشود اما همچنان در <ph name="USER_EMAIL1" /> باقی میماند.</translation> <translation id="7890287942691234100">شروع استفاده از اسکنر Chromium</translation> <translation id="7928628054454574139">هرزمان در برنامههای دیگر روی پیوندها ضربه بزنید، Chromium باز میشود</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb index f64c5fc2..085d2a5 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Payagan ang Pag-sign In sa Chromium</translation> <translation id="6337530241089703714">Piliin kung iki-clear ang iyong data sa Chromium sa device na ito o kung papanatilihin ito</translation> <translation id="6424492062988593837">Naging mas mahusay na ang Chromium! Available na ang bagong bersyon.</translation> +<translation id="6625409903340039086">Suportado na ngayon ng Chromium ang mga patakaran ng user para sa iyong pinamamahalaang account</translation> <translation id="6752854822223394465">Sine-set up ng iyong organisasyon ang Chromium...</translation> <translation id="6820823224820483452">Hindi masuri ng Chromium ang lahat ng password. Subukan ulit bukas.</translation> <translation id="7006920032187763988">Puwede mong gamitin ang mga password na na-save mo sa Password Manager sa iba pang app sa iyong iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Buksan ang Settings > Privacy > Camera > Chromium at i-on ang camera.</translation> <translation id="7746854981345936341">Tip sa Chromium. Nasa ibaba na ng iyong screen ang ilang button, tulad ng Bumalik, Susunod, at Maghanap.</translation> <translation id="7763454117143368771">Gamitin ang Chromium bilang iyong default na browser para manatiling protektado laban sa mga mapanganib na site at mapanatiling ligtas ang mga password mo</translation> +<translation id="7812317783196516890">Naka-sign in ka at sini-sync ang iyong data sa isang account na pinamamahalaan ng <ph name="DOMAIN" /> kung saan magagawa na ng administrator nito na magtakda ng mga patakaran ng user na partikular sa account na iyon na puwedeng makabago sa pagkilos ng Chromimum.</translation> <translation id="786327964234957808">Pinapalitan mo ang mga sync account mula sa <ph name="USER_EMAIL1" /> patungo sa <ph name="USER_EMAIL2" />. Ang iyong data ng Chromium ay pinamamahalaan ng <ph name="DOMAIN" />. Ide-delete nito ang iyong data mula sa device na ito, ngunit mananatili ang iyong data sa <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Simulang gamitin ang scanner ng Chromium</translation> <translation id="7928628054454574139">Buksan ang Chromium sa tuwing magta-tap ka sa mga link sa iba pang app</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb index 22eca307..de2bb54 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hi.xtb
@@ -82,6 +82,7 @@ <translation id="632825460376924298">Chromium में साइन-इन करने की अनुमति दें</translation> <translation id="6337530241089703714">चुनें कि आप इस डिवाइस से अपना Chromium डेटा मिटाना चाहते हैं या सेव रखना चाहते हैं</translation> <translation id="6424492062988593837">Chrome अब बेहतर हो गया है! नया वर्शन उपलब्ध है.</translation> +<translation id="6625409903340039086">Chromium में, मैनेज किए जा रहे आपके खाते के लिए अब उपयोगकर्ता नीतियां लागू की जा सकती हैं</translation> <translation id="6752854822223394465">आपका संगठन Chromium सेट अप कर रहा है...</translation> <translation id="6820823224820483452">क्रोमियम सभी पासवर्ड की जांच नहीं कर सका. कल कोशिश करें.</translation> <translation id="7006920032187763988">पासवर्ड मैनेजर में सेव किए गए पासवर्ड का इस्तेमाल, iPad में मौजूद दूसरे ऐप्लिकेशन के लिए किया जा सकता है.</translation> @@ -103,6 +104,7 @@ <translation id="7674213385180944843">सेटिंग > निजता > कैमरा > क्रोमियम खोलें और कैमरा चालू करें.</translation> <translation id="7746854981345936341">क्रोमियम के लिए सलाह. 'वापस जाएं', 'आगे जाएं' और 'खोजें' जैसे कुछ बटन अब आपकी स्क्रीन के सबसे नीचे मिलेंगे.</translation> <translation id="7763454117143368771">खतरनाक साइटों से सुरक्षा पाने और अपने पासवर्ड सुरक्षित रखने के लिए, Chromium को अपने डिफ़ॉल्ट ब्राउज़र के तौर पर इस्तेमाल करें</translation> +<translation id="7812317783196516890">आपने जिस खाते से साइन इन किया है और अपना डेटा सिंक किया हुआ है उसे <ph name="DOMAIN" /> से मैनेज किया जाता है. इस डोमेन का एडमिन अब उस खाते के लिए खास उपयोगकर्ता नीतियां लागू कर सकता है. इन नीतियों से, Chromimum के काम करने के तरीके में बदलाव आ सकता है.</translation> <translation id="786327964234957808">आप सिंक खातों को <ph name="USER_EMAIL1" /> से <ph name="USER_EMAIL2" /> में बदल रहे हैं. आपके मौजूदा क्रोमियम डेटा को <ph name="DOMAIN" /> प्रबंधित करता है. इससे इस डिवाइस से आपका डेटा मिट जाएगा, लेकिन आपका डेटा <ph name="USER_EMAIL1" /> में बना रहेगा.</translation> <translation id="7890287942691234100">क्रोमियम स्कैनर का इस्तेमाल करना शुरू करें</translation> <translation id="7928628054454574139">जब भी आप अन्य ऐप्लिकेशन में लिंक पर क्लिक करें, तो उसे Chromium में खोलें</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb index 3a5b0cfc..82fc900 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hr.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Dopusti prijavu u Chromium</translation> <translation id="6337530241089703714">Odaberite želite li podatke iz Chromiuma izbrisati s ovog uređaja ili ih zadržati</translation> <translation id="6424492062988593837">Chromium je postao još bolji! Dostupna je nova verzija.</translation> +<translation id="6625409903340039086">Chromium sada za vaš upravljani račun podržava korisnička pravila</translation> <translation id="6752854822223394465">Vaša organizacija postavlja Chromium...</translation> <translation id="6820823224820483452">Chromium nije uspio provjeriti sve zaporke. Pokušajte ponovo sutra.</translation> <translation id="7006920032187763988">Zaporke koje ste spremili u Upravitelj zaporki možete koristiti u drugim aplikacijama na iPadu.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Otvorite Postavke > Privatnost > Fotoaparat > Chromium i uključite fotoaparat.</translation> <translation id="7746854981345936341">Savjet za Chromium. Neki se gumbi sada nalaze pri dnu zaslona, primjerice za natrag, naprijed i pretraživanje.</translation> <translation id="7763454117143368771">Koristite Chromium kao zadani preglednik da biste se zaštitili od opasnih web-lokacija i očuvali sigurnost svojih zaporki</translation> +<translation id="7812317783196516890">Prijavljeni ste i vaši se podaci sinkroniziraju s računom kojim upravlja web-lokacija <ph name="DOMAIN" />. Administrator sada može postaviti korisnička pravila koja se odnose na taj račun i koja mogu promijeniti ponašanje Chromiuma.</translation> <translation id="786327964234957808">Prebacujete sinkronizirane račune s korisnika <ph name="USER_EMAIL1" /> na korisnika <ph name="USER_EMAIL2" />. Vašim postojećim podacima na Chromiumu upravlja <ph name="DOMAIN" />. Ovime će se izbrisati vaši podaci s vašeg uređaja, no oni će ostati na računu <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Počnite koristiti Chromiumov skener</translation> <translation id="7928628054454574139">Otvorite Chromium svaki put kada dodirnite veze u drugim aplikacijama</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb index 951daaf..7f9c0ad 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_hu.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Chromium-bejelentkezés engedélyezése</translation> <translation id="6337530241089703714">Döntse el, hogy törli-e a Chromium adatait erről az eszközről, vagy megtartja őket</translation> <translation id="6424492062988593837">A Chromium most még jobb lett! Új verzió áll rendelkezésre.</translation> +<translation id="6625409903340039086">A Chromium mostantól támogatja a felhasználói házirendeket az Ön felügyelt fiókjánál</translation> <translation id="6752854822223394465">A szervezete beállítja a Chromiumot…</translation> <translation id="6820823224820483452">A Chromium nem tudta ellenőrizni az összes jelszót. Próbálkozzon újra holnap.</translation> <translation id="7006920032187763988">A Jelszókezelőbe mentett jelszavakat használhatja más alkalmazásokban iPad eszközén.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Nyissa meg a Beállítások > Adatvédelem > Kamera > Chromium elemet, és kapcsolja be a kamerát.</translation> <translation id="7746854981345936341">Tipp a Chromium használatához. Egyes gombok (például a Vissza, az Előre vagy a Keresés) mostantól a képernyő alján jelennek meg.</translation> <translation id="7763454117143368771">A Chromiumot alapértelmezett böngészőként beállítva biztosíthatja a veszélyes webhelyekkel szembeni védelmét, és gondoskodhat jelszavai biztonságáról is.</translation> +<translation id="7812317783196516890">Ön a(z) <ph name="DOMAIN" /> által felügyelt fiókba van bejelentkezve, és szinkronizálja vele az adatait. Ennek a domainnek a rendszergazdája mostantól beállíthat olyan felhasználói házirendeket erre a fiókra vonatkozóan, amelyek módosíthatják a Chromium viselkedését.</translation> <translation id="786327964234957808">A(z) <ph name="USER_EMAIL1" /> szinkronizált fiókról a következőre vált át: <ph name="USER_EMAIL2" />. A meglévő Chromium-adatokat a(z) <ph name="DOMAIN" /> kezeli. Ezzel törli az adatait erről az eszközről, viszont azok továbbra is megmaradnak a(z) <ph name="USER_EMAIL1" /> fiókban.</translation> <translation id="7890287942691234100">Használja a Chromium szkennerét</translation> <translation id="7928628054454574139">A Chromium megnyitása mindig, amikor más alkalmazásokban lévő linkekre koppint</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb index 3d3bf834..4f45385 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_kn.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Chromium ಸೈನ್-ಇನ್ ಅನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="6337530241089703714">ಈ ಸಾಧನದಲ್ಲಿನ ನಿಮ್ಮ Chromium ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಬೇಕೆ ಅಥವಾ ಉಳಿಸಿಕೊಳ್ಳಬೇಕೆ ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="6424492062988593837">Chrome ಈಗ ತಾನೇ ಉತ್ತಮಗೊಂಡಿದೆ! ಹೊಸ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆ.</translation> +<translation id="6625409903340039086">Chromium ಈಗ ನಿಮ್ಮ ನಿರ್ವಹಿಸಿದ ಖಾತೆಗಾಗಿ ಬಳಕೆದಾರರ ನೀತಿಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ</translation> <translation id="6752854822223394465">ನಿಮ್ಮ ಸಂಸ್ಥೆಯು Chromium ಅನ್ನು ಸೆಟಪ್ ಮಾಡುತ್ತಿದೆ...</translation> <translation id="6820823224820483452">ಎಲ್ಲಾ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Chromium ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ ನಾಳೆ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7006920032187763988">ನಿಮ್ಮ iPad ನಲ್ಲಿನ ಇತರ ಆ್ಯಪ್ಗಳಲ್ಲಿರುವ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ನೀವು ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನೀವು ಬಳಸಬಹುದು.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">ಸೆಟ್ಟಿಂಗ್ಗಳು > ಗೌಪ್ಯತೆ > ಕ್ಯಾಮರಾ > Chromium ತೆರೆಯಿರಿ ಮತ್ತು ಕ್ಯಾಮರಾ ಆನ್ ಮಾಡಿ.</translation> <translation id="7746854981345936341">Chromium ಸಲಹೆ. ಹಿಂದೆ, ಮುಂದೆ ಮತ್ತು ಹುಡುಕಾಟದಂತಹ ಕೆಲವು ಬಟನ್ಗಳು ಈಗ ನಿಮ್ಮ ಪರದೆಯ ಕೆಳಭಾಗದಲ್ಲಿವೆ.</translation> <translation id="7763454117143368771">ಅಪಾಯಕಾರಿ ಸೈಟ್ಗಳಿಂದ ಸುರಕ್ಷಿತವಾಗಿರಲು ಹಾಗೂ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿ Chromium ಅನ್ನು ಬಳಸಿ</translation> +<translation id="7812317783196516890"><ph name="DOMAIN" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾದ ಖಾತೆಯ ಮೂಲಕ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ ಮತ್ತು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಿದಾಗ, ಅದರ ನಿರ್ವಾಹಕರು ಈಗ ಆ ಖಾತೆಗೆ ಬಳಕೆದಾರರ ನೀತಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೊಂದಿಸಬಹುದು, ಅದು Chromium ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಬಹುದು.</translation> <translation id="786327964234957808"><ph name="USER_EMAIL1" /> ರಿಂದ <ph name="USER_EMAIL2" /> ಗೆ ನೀವು ಸಿಂಕ್ ಖಾತೆಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತಿರುವಿರಿ. ನಿಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ Chromium ಡೇಟಾವನ್ನು <ph name="DOMAIN" /> ರಿಂದ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ. ಈ ಸಾಧನದಲ್ಲಿರುವ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಇದು ಅಳಿಸಿಹಾಕುತ್ತದೆ, ಆದರೆ ನಿಮ್ಮ ಡೇಟಾ <ph name="USER_EMAIL1" /> ರಲ್ಲಿಯೇ ಇರುತ್ತದೆ.</translation> <translation id="7890287942691234100">Chromium ಸ್ಕ್ಯಾನರ್ ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿ</translation> <translation id="7928628054454574139">ಇತರ ಆ್ಯಪ್ಗಳ ಲಿಂಕ್ಗಳನ್ನು ನೀವು ಟ್ಯಾಪ್ ಮಾಡಿದಾಗಲೆಲ್ಲಾ Chromium ತೆರೆಯಿರಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb index aad1aed..fcd0525 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_lo.xtb
@@ -82,6 +82,7 @@ <translation id="632825460376924298">ອະນຸຍາດການເຂົ້າສູ່ລະບົບ Chromium</translation> <translation id="6337530241089703714">ເລືອກວ່າຈະລຶບລ້າງຂໍ້ມູນ Chromium ຂອງທ່ານອອກຈາກອຸປະກອນນີ້ ຫຼື ເກັບມັນໄວ້</translation> <translation id="6424492062988593837">Chromium ດີກວ່າເກົ່າແລ້ວ! ມີລຸ້ນໃຫມ່ໃຫ້ໃຊ້.</translation> +<translation id="6625409903340039086">ຕອນນີ້ Chromium ຮອງຮັບນະໂຍບາຍຜູ້ໃຊ້ສຳລັບບັນຊີທີ່ມີການຈັດການຂອງທ່ານແລ້ວ</translation> <translation id="6752854822223394465">ອົງການຂອງທ່ານກຳລັງຕັ້ງຄ່າ Chromium...</translation> <translation id="6820823224820483452">Chromium ບໍ່ສາມາດກວດລະຫັດຜ່ານທັງໝົດໄດ້. ກະລຸນາລອງໃໝ່ໃນມື້ອື່ນ.</translation> <translation id="7006920032187763988">ທ່ານສາມາດໃຊ້ລະຫັດຜ່ານທີ່ທ່ານບັນທຶກໄປໃສ່ຕົວຈັດການລະຫັດຜ່ານໃນແອັບອື່ນຢູ່ iPad ຂອງທ່ານໄດ້.</translation> @@ -103,6 +104,7 @@ <translation id="7674213385180944843">ເປີດການຕັ້ງຄ່າ > ຄວາມເປັນສ່ວນຕົວ > ກ້ອງຖ່າຍຮູບ > Chromium ແລະ ເປີດກ້ອງຖ່າຍຮູບ.</translation> <translation id="7746854981345936341">ເຄັດລັບກ່ຽວກັບ Chromium. ດຽວນີ້ບາງປຸ່ມຢູ່ສ່ວນລຸ່ມຂອງໜ້າຈໍ ເຊັ່ນ: ກັບຄືນ, ສົ່ງຕໍ່ ແລະ ຊອກຫາ.</translation> <translation id="7763454117143368771">ໃຊ້ Chromium ເປັນໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນຂອງທ່ານເພື່ອປ້ອງກັນເວັບໄຊທີ່ເປັນອັນຕະລາຍ ແລະ ຮັກສາລະຫັດຜ່ານຂອງທ່ານໃຫ້ປອດໄພ</translation> +<translation id="7812317783196516890">ທ່ານເຂົ້າສູ່ລະບົບແລ້ວ ແລະ ກຳລັງຊິ້ງຂໍ້ມູນຂອງທ່ານກັບບັນຊີທີ່ຈັດການໂດຍ <ph name="DOMAIN" /> ເຊິ່ງຕອນນີ້ຜູ້ເບິ່ງແຍງລະບົບຂອງມັນສາມາດຕັ້ງນະໂຍບາຍຜູ້ໃຊ້ສະເພາະຫາບັນຊີນັ້ນທີ່ສາມາດປ່ຽນພຶດຕິກຳຂອງ Chromimum ໄດ້.</translation> <translation id="786327964234957808">ທ່ານກຳລັງປ່ຽນບັນຊີຊິ້ງຂໍ້ມູນຈາກ <ph name="USER_EMAIL1" /> ເປັນ <ph name="USER_EMAIL2" />. ຂໍ້ມູນ Chromium ທີ່ມີຢູ່ຖືກຈັດການໂດຍ <ph name="DOMAIN" />. ນີ້ຈະລຶບຂໍ້ມູນຂອງທ່ານອອກຈາກອຸປະກອນນີ້, ແຕ່ຂໍ້ມູນຂອງທ່ານຈະຍັງຄົງຢູ່ໃນ <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">ເລີ່ມໃຊ້ເຄື່ອງສະແກນ Chromium</translation> <translation id="7928628054454574139">ເປີດ Chromium ຕອນໃດກໍໄດ້ທີ່ທ່ານແຕະໃສ່ລິ້ງໃນແອັບອື່ນ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb index e3e565d..d42e72f96 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_nl.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Inloggen bij Chromium toestaan</translation> <translation id="6337530241089703714">Kies of je je Chromium-gegevens voor dit apparaat wilt verwijderen of behouden</translation> <translation id="6424492062988593837">Chromium is nu nog beter! Er is een nieuwe versie beschikbaar.</translation> +<translation id="6625409903340039086">Chromium ondersteunt nu gebruikersbeleid voor je beheerde account</translation> <translation id="6752854822223394465">Je organisatie stelt Chromium in…</translation> <translation id="6820823224820483452">Chromium kan niet alle wachtwoorden checken. Probeer het morgen opnieuw.</translation> <translation id="7006920032187763988">Je kunt de wachtwoorden die je in Wachtwoordmanager hebt opgeslagen, gebruiken in andere apps op je iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Open Instellingen > Privacy > Camera > Chromium en zet de camera aan.</translation> <translation id="7746854981345936341">Chromium-tip. Sommige knoppen zoals Terug, Vooruit en Zoeken zie je nu onderaan het scherm.</translation> <translation id="7763454117143368771">Gebruik Chromium als je standaardbrowser voor bescherming tegen gevaarlijke sites en om je wachtwoorden te beveiligen</translation> +<translation id="7812317783196516890">Je bent ingelogd en synchroniseert je gegevens met een account dat wordt beheerd door <ph name="DOMAIN" />. De beheerder kan nu specifiek gebruikersbeleid voor dat account instellen om het gedrag van Chromium te wijzigen.</translation> <translation id="786327964234957808">Je wijzigt het synchronisatieaccount van <ph name="USER_EMAIL1" /> in <ph name="USER_EMAIL2" />. Je bestaande Chromium-gegevens worden beheerd door <ph name="DOMAIN" />. Hierdoor worden je gegevens van dit apparaat verwijderd. Je gegevens blijven echter opgeslagen in <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Chromium-scanner gebruiken</translation> <translation id="7928628054454574139">Chromium openen wanneer je op links in andere apps tikt</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb index 37a4066..44dfa19 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pa.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Chromium ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨ ਦਿਓ</translation> <translation id="6337530241089703714">ਚੁਣੋ ਕਿ ਕੀ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਆਪਣਾ Chromium ਡਾਟਾ ਕਲੀਅਰ ਕਰਨਾ ਹੈ ਜਾਂ ਇਸਨੂੰ ਰੱਖਣਾ ਹੈ</translation> <translation id="6424492062988593837">Chromium ਬਿਹਤਰ ਬਣ ਗਿਆ ਹੈ! ਇੱਕ ਨਵਾਂ ਵਰਜਨ ਉਪਲਬਧ ਹੈ।</translation> +<translation id="6625409903340039086">Chromium ਹੁਣ ਤੁਹਾਡੇ ਪ੍ਰਬੰਧਿਤ ਕੀਤੇ ਖਾਤੇ ਲਈ ਵਰਤੋਂਕਾਰ ਨੀਤੀਆਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ</translation> <translation id="6752854822223394465">ਤੁਹਾਡੀ ਸੰਸਥਾ Chromium ਦਾ ਸੈੱਟਅੱਪ ਕਰ ਰਹੀ ਹੈ...</translation> <translation id="6820823224820483452">Chromium ਸਾਰੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਕੱਲ੍ਹ ਨੂੰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="7006920032187763988">ਤੁਸੀਂ ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ iPad 'ਤੇ ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ 'ਤੇ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">ਸੈਟਿੰਗਾਂ > ਪਰਦੇਦਾਰੀ > ਕੈਮਰਾ > Chromium ਖੋਲ੍ਹੋ ਅਤੇ ਕੈਮਰਾ ਚਾਲੂ ਕਰੋ।</translation> <translation id="7746854981345936341">Chromium ਨੁਕਤਾ। ਹੁਣ ਕੁਝ ਬਟਨ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਪਿੱਛੇ, ਅੱਗੇ ਅਤੇ ਖੋਜੋ।</translation> <translation id="7763454117143368771">ਖਤਰਨਾਕ ਸਾਈਟਾਂ ਤੋਂ ਸੁਰੱਖਿਅਤ ਰਹਿਣ ਅਤੇ ਆਪਣੇ ਪਾਸਵਰਡ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ Chromium ਨੂੰ ਆਪਣੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਬ੍ਰਾਊਜ਼ਰ ਵਜੋਂ ਵਰਤੋ</translation> +<translation id="7812317783196516890">ਤੁਸੀਂ <ph name="DOMAIN" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਹੋ ਅਤੇ ਇਸ ਨਾਲ ਆਪਣਾ ਡਾਟਾ ਸਿੰਕ ਕਰ ਰਹੇ ਹੋ ਜਿੱਥੇ ਇਸਦਾ ਪ੍ਰਸ਼ਾਸਕ ਹੁਣ ਉਸ ਖਾਤੇ ਨਾਲ ਸੰਬੰਧਿਤ ਵਰਤੋਂਕਾਰ ਨੀਤੀਆਂ ਨੂੰ ਸੈੱਟ ਕਰ ਸਕਦਾ ਹੈ ਜੋ Chromimum ਦੇ ਵਿਹਾਰ ਨੂੰ ਬਦਲ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="786327964234957808">ਤੁਸੀਂ ਸਿੰਕ ਕੀਤੇ ਖਾਤਿਆਂ ਨੂੰ <ph name="USER_EMAIL1" /> ਤੋਂ <ph name="USER_EMAIL2" /> ਵਿੱਚ ਬਦਲ ਰਹੇ ਹੋ। ਤੁਹਾਡਾ ਮੌਜੂਦਾ Chromium ਡਾਟਾ <ph name="DOMAIN" /> ਦੁਆਰਾ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਨਾਲ ਤੁਹਾਡੇ ਡਾਟੇ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਪਰ ਤੁਹਾਡਾ ਡਾਟਾ <ph name="USER_EMAIL1" /> ਵਿੱਚ ਮੌਜੂਦ ਰਹੇਗਾ।</translation> <translation id="7890287942691234100">Chromium ਸਕੈਨਰ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="7928628054454574139">ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਹੋਰ ਐਪਾਂ ਵਿਚਲੇ ਲਿੰਕਾਂ 'ਤੇ ਟੈਪ ਕਰਦੇ ਹੋ, ਤਾਂ Chromium ਖੋਲ੍ਹੋ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb index e90770c..c3e39431 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_pt-PT.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Permitir o início de sessão no Chromium</translation> <translation id="6337530241089703714">Escolha se pretende limpar os seus dados do Chromium deste dispositivo ou mantê-los</translation> <translation id="6424492062988593837">O Chromium ficou ainda melhor! Está disponível uma nova versão.</translation> +<translation id="6625409903340039086">O Chromium suporta agora Políticas do Utilizador para a sua conta gerida</translation> <translation id="6752854822223394465">A sua entidade está a configurar o Chromium…</translation> <translation id="6820823224820483452">O Chromium não conseguiu verificar todas as palavras-passe. Tente novamente amanhã.</translation> <translation id="7006920032187763988">Pode utilizar as palavras-passe que guardou no Gestor de palavras-passe noutras apps no seu iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Abra Definições > Privacidade > Câmara > Chromium e ative a câmara.</translation> <translation id="7746854981345936341">Sugestão para o Chromium: alguns botões encontram-se agora na parte inferior do ecrã, como Voltar, Avançar e Pesquisar.</translation> <translation id="7763454117143368771">Utilize o Chromium como o navegador predefinido para obter proteção contra sites perigosos e manter as suas palavras-passe protegidas</translation> +<translation id="7812317783196516890">Tem sessão iniciada e está a sincronizar os seus dados com uma conta gerida pelo domínio <ph name="DOMAIN" />, onde o respetivo administrador pode agora definir Políticas do Utilizador específicas para essa conta que podem alterar o comportamento do Chromium.</translation> <translation id="786327964234957808">Está a mudar a sincronização de contas de <ph name="USER_EMAIL1" /> para <ph name="USER_EMAIL2" />. Os seus dados do Chromium existentes são geridos por <ph name="DOMAIN" />. Esta ação eliminará os dados deste dispositivo, mas os dados permanecerão em <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Comece a utilizar o leitor do Chromium</translation> <translation id="7928628054454574139">Abra o Chromium sempre que tocar em links noutras apps</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb index 796548e..0f617aa 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sq.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Lejo identifikimin në Chromium</translation> <translation id="6337530241089703714">Zgjidh nëse do t'i pastrosh të dhënat e Chromium nga kjo pajisje apo do t'i mbash ato</translation> <translation id="6424492062988593837">Chromium sapo është përmirësuar! Ofrohet një version i ri.</translation> +<translation id="6625409903340039086">Chromium tani mbështet politikat e përdoruesit për llogarinë tënde të menaxhuar</translation> <translation id="6752854822223394465">Organizata jote po konfiguron Chromium...</translation> <translation id="6820823224820483452">Chromium nuk mund t'i kontrollonte të gjitha fjalëkalimet. Provo sërish nesër.</translation> <translation id="7006920032187763988">Fjalëkalimet që ke ruajtur në "Menaxherin e fjalëkalimeve" mund t'i përdorësh në aplikacione të tjera në iPad.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Hap Cilësimet > Privatësia > Kamera > Chromium dhe aktivizo kamerën.</translation> <translation id="7746854981345936341">Këshillë për Chromium. Disa butona ndodhen tani në fund të ekranit tënd, si p.sh. "Prapa", "Përpara" dhe "Kërko".</translation> <translation id="7763454117143368771">Përdor Chromium si shfletuesin tënd të parazgjedhur për të qenë i mbrojtur nga sajtet e rrezikshme dhe për t'i mbajtur fjalëkalimet e tua të sigurta</translation> +<translation id="7812317783196516890">Je identifikuar dhe po sinkronizon të dhënat me një llogari të menaxhuar nga <ph name="DOMAIN" />, ku administratori i saj tani mund të caktojë politika përdoruesi specifike për atë llogari që mund të ndryshojnë sjelljen e Chromium.</translation> <translation id="786327964234957808">Po i ndërron llogaritë e sinkronizimit nga <ph name="USER_EMAIL1" /> te <ph name="USER_EMAIL2" />. Të dhënat ekzistuese të Chromium po menaxhohen nga <ph name="DOMAIN" />. Kjo do t'i fshijë të dhënat e tua nga kjo pajisje, por të dhënat e tua do të mbeten në <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Fillo të përdorësh skanerin e Chromium</translation> <translation id="7928628054454574139">Hap gjithmonë Chromium kur troket te lidhjet në aplikacionet e tjera</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb index 6b40d3f..bf34be7 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr-Latn.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Dozvolite prijavljivanje u Chromium</translation> <translation id="6337530241089703714">Odaberite da li ćete obrisati Chromium podatke sa ovog uređaja ili ih zadržati</translation> <translation id="6424492062988593837">Chromium je upravo postao bolji! Dostupna je nova verzija.</translation> +<translation id="6625409903340039086">Chromium sada podržava smernice za korisnika za upravljani nalog</translation> <translation id="6752854822223394465">Vaša organizacija podešava Chromium...</translation> <translation id="6820823224820483452">Chromium nije uspeo da proveri sve lozinke. Probajte ponovo sutra.</translation> <translation id="7006920032187763988">Možete da koristite lozinke koje ste sačuvali u Menadžeru lozinki u drugim aplikacijama na iPad-u.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Otvorite Podešavanja > Privatnost > Kamera > Chromium i uključite kameru.</translation> <translation id="7746854981345936341">Savet za Chromium. Neka dugmad se sada nalaze u dnu ekrana, poput dugmadi Nazad, Napred i Pretraži.</translation> <translation id="7763454117143368771">Koristite Chromium kao podrazumevani pregledač da biste se odbranili od opasnih sajtova i zaštitili lozinke</translation> +<translation id="7812317783196516890">Prijavljeni ste i sinhronizujete podatke sa nalogom kojim upravlja <ph name="DOMAIN" />, pri čemu njegov administrator sada može da podešava posebne smernice za korisnike za taj nalog koje mogu da promene ponašanje Chromium-a.</translation> <translation id="786327964234957808">Menjate nalog za sinhronizaciju iz <ph name="USER_EMAIL1" /> u <ph name="USER_EMAIL2" />. Postojećim Chromium podacima upravlja <ph name="DOMAIN" />. Na ovaj način brišete podatke sa ovog uređaja, ali podaci ostaju na <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Počnite da koristite Chromium skener</translation> <translation id="7928628054454574139">Otvara Chromium svaki put kada dodirnete linkove u drugim aplikacijama</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb index e9865857..965c460 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_sr.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Дозволите пријављивање у Chromium</translation> <translation id="6337530241089703714">Одаберите да ли ћете обрисати Chromium податке са овог уређаја или их задржати</translation> <translation id="6424492062988593837">Chromium је управо постао бољи! Доступна је нова верзија.</translation> +<translation id="6625409903340039086">Chromium сада подржава смернице за корисника за управљани налог</translation> <translation id="6752854822223394465">Ваша организација подешава Chromium...</translation> <translation id="6820823224820483452">Chromium није успео да провери све лозинке. Пробајте поново сутра.</translation> <translation id="7006920032187763988">Можете да користите лозинке које сте сачували у Менаџеру лозинки у другим апликацијама на iPad-у.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Отворите Подешавања > Приватност > Камера > Chromium и укључите камеру.</translation> <translation id="7746854981345936341">Савет за Chromium. Нека дугмад се сада налазе у дну екрана, попут дугмади Назад, Напред и Претражи.</translation> <translation id="7763454117143368771">Користите Chromium као подразумевани прегледач да бисте се одбранили од опасних сајтова и заштитили лозинке</translation> +<translation id="7812317783196516890">Пријављени сте и синхронизујете податке са налогом којим управља <ph name="DOMAIN" />, при чему његов администратор сада може да подешава посебне смернице за кориснике за тај налог које могу да промене понашање Chromium-а.</translation> <translation id="786327964234957808">Мењате налог за синхронизацију из <ph name="USER_EMAIL1" /> у <ph name="USER_EMAIL2" />. Постојећим Chromium подацима управља <ph name="DOMAIN" />. На овај начин бришете податке са овог уређаја, али подаци остају на <ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">Почните да користите Chromium скенер</translation> <translation id="7928628054454574139">Отвара Chromium сваки пут када додирнете линкове у другим апликацијама</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb index 5c20e72..155863f 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ta.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Chromium உள்நுழைவை அனுமதி</translation> <translation id="6337530241089703714">இந்தச் சாதனத்தில் உள்ள உங்கள் Chromium தரவை அழிக்க வேண்டுமா வைத்திருக்க வேண்டுமா என்பதைத் தேர்வுசெய்யுங்கள்</translation> <translation id="6424492062988593837">Chromium தற்போதுதான் சிறப்பைப் பெற்றது! புதிய பதிப்பு உள்ளது.</translation> +<translation id="6625409903340039086">நிர்வகிக்கப்படும் கணக்கிற்கான பயனர் கொள்கைகளை Chromium இப்போது ஆதரிக்கிறது</translation> <translation id="6752854822223394465">Chromiumமை உங்கள் நிறுவனம் அமைக்கிறது...</translation> <translation id="6820823224820483452">Chromium உலாவியால் கடவுச்சொற்கள் அனைத்தையும் சரிபார்க்க முடியவில்லை. நாளை முயலவும்.</translation> <translation id="7006920032187763988">கடவுச்சொல் நிர்வாகியில் நீங்கள் சேமித்துள்ள கடவுச்சொற்களை உங்கள் iPadல் உள்ள பிற ஆப்ஸில் பயன்படுத்தலாம்.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">அமைப்புகள் > தனியுரிமை > கேமரா > Chromium என்பதைத் திறந்து, கேமராவை இயக்கவும்.</translation> <translation id="7746854981345936341">Chromium உதவிக்குறிப்பு: 'பின்செல்’, ‘முன்செல்’, ‘தேடு’ போன்ற சில பட்டன்கள் இப்போது உங்கள் திரையின் அடிப்பகுதியில் உள்ளன.</translation> <translation id="7763454117143368771">ஆபத்தான தளங்களில் இருந்து பாதுகாப்பாக இருப்பதற்கும் உங்கள் கடவுச்சொற்களைப் பாதுகாப்பாக வைத்துக்கொள்வதற்கும் Chromiumமை இயல்பு உலாவியாகப் பயன்படுத்தலாம்</translation> +<translation id="7812317783196516890"><ph name="DOMAIN" /> மூலம் நிர்வகிக்கப்படும் ஒரு கணக்கில் உள்நுழைந்து, உங்கள் தரவை ஒத்திசைக்கிறீர்கள். Chromimum இயங்கும் விதத்தை மாற்றக்கூடிய வகையில் அந்தக் கணக்கிற்கு மட்டும் குறிப்பிட்ட பயனர் கொள்கைகளை அந்த டொமைன் நிர்வாகியால் இப்போது அமைக்க முடியும்.</translation> <translation id="786327964234957808">ஒத்திசைவுக் கணக்குகளை <ph name="USER_EMAIL1" /> இலிருந்து <ph name="USER_EMAIL2" />க்கு மாற்றுகிறீர்கள். தற்போதுள்ள Chromium தரவை <ph name="DOMAIN" /> நிர்வகிக்கிறது. இவ்வாறு செய்வதால், இந்தச் சாதனத்திலிருந்து தரவு நீக்கப்படும், எனினும் <ph name="USER_EMAIL1" /> இல் தரவு தொடர்ந்து இருக்கும்.</translation> <translation id="7890287942691234100">Chromium ஸ்கேனரைப் பயன்படுத்தத் தொடங்கவும்</translation> <translation id="7928628054454574139">எப்போதும் மற்ற ஆப்ஸில் இணைப்புகளைத் தட்டும்போது அவை Chromiumமில் திறக்கும்படிச் செய்யலாம்!</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb index d55b188b..89c7c73 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_tr.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Chromium'da Oturum Açmaya İzin Ver</translation> <translation id="6337530241089703714">Chromium verilerinizi bu cihazdan temizlemeyi veya saklamayı seçin</translation> <translation id="6424492062988593837">Chromium daha da iyi hale geldi! Yeni bir sürüm var.</translation> +<translation id="6625409903340039086">Chromium artık yönetilen hesabınız için kullanıcı politikalarını destekliyor</translation> <translation id="6752854822223394465">Kuruluşunuz, Chromium'u kuruyor...</translation> <translation id="6820823224820483452">Chromium, şifrelerin tümünü kontrol edemedi. Yarın tekrar deneyin.</translation> <translation id="7006920032187763988">Şifre Yöneticisi'ne kaydettiğiniz şifreleri iPad'inizdeki diğer uygulamalarda kullanabilirsiniz.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Ayarlar > Gizlilik > Kamera > Chromium'a gidin ve kamerayı açın.</translation> <translation id="7746854981345936341">Chromium için ipucu: Geri, İleri ve Ara gibi bazı düğmeler artık ekranınızın alt bölümünde bulunuyor.</translation> <translation id="7763454117143368771">Tehlikeli sitelere karşı koruma altında kalmak ve şifrelerinizi güvende tutmak için varsayılan tarayıcınız olarak Chromium'u kullanın</translation> +<translation id="7812317783196516890">Oturumunuz açık ve verilerinizi <ph name="DOMAIN" /> tarafından yönetilen bir hesapla senkronize ediyorsunuz. Buradaki yönetici artık söz konusu hesaba özel kullanıcı politikaları belirleyebilir ve bunlar da Chromium'un davranışını değiştirebilir.</translation> <translation id="786327964234957808">Senkronizasyon hesapları arasında (<ph name="USER_EMAIL1" /> hesabından <ph name="USER_EMAIL2" /> hesabına) geçiş yapıyorsunuz. Mevcut Chromium verileriniz <ph name="DOMAIN" /> tarafından yönetiliyor. Bu işlemle verileriniz bu cihazdan silinir, ancak <ph name="USER_EMAIL1" /> hesabınızda kalmaya devam eder.</translation> <translation id="7890287942691234100">Chromium tarayıcıyı kullanmaya başlayın</translation> <translation id="7928628054454574139">Diğer uygulamalardaki bağlantılara dokunduğunuzda Chromium açılır</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb index e9a3032..c88b561 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_uz.xtb
@@ -82,6 +82,7 @@ <translation id="632825460376924298">Chromium hisobiga kirishga ruxsat berish</translation> <translation id="6337530241089703714">Chromium maʼlumotlari bu qurilmadan tozalanishi yoki saqlanib qolishini tanlang</translation> <translation id="6424492062988593837">Chromium ancha yaxshilandi! Yangi versiya mavjud.</translation> +<translation id="6625409903340039086">Chromium endi boshqariladigan hisobingiz uchun foydalanuvchi siyosatlarini qoʻllab-quvvatlaydi</translation> <translation id="6752854822223394465">Chromium tashkilotingiz tomonidan sozlanmoqda...</translation> <translation id="6820823224820483452">Chromium barcha parollarni tekshira olmadi. Ertaga qayta urining.</translation> <translation id="7006920032187763988">Parollar menejeriga saqlangan parollarni iPaddagi boshqa ilovalarda ishlatish mumkin.</translation> @@ -103,6 +104,7 @@ <translation id="7674213385180944843">Kameradan foydalanishga ruxsat berish uchun “Sozlamalar > Maxfiylik > Kamera > Chromium” bandini oching.</translation> <translation id="7746854981345936341">Chromium maslahati. Ba’zi tugmalar endi ekranning quyi qismida. Masalan: Orqaga, Oldinga va Qidiruv tugmalari.</translation> <translation id="7763454117143368771">Internetni xavfsiz kezish va parollaringizni himoyalashda Chromium birlamchi brauzer sifatida ishlatilsin</translation> +<translation id="7812317783196516890">Siz tizimga kirdingiz va maʼlumotlaringizni <ph name="DOMAIN" /> boshqaradigan hisob bilan sinxronladingiz. Uning administratori endi Chromium funksiyasini oʻzgartirishi mumkin boʻlgan oʻsha hisobga tegishli foydalanuvchi siyosatlarini oʻrnatishi mumkin.</translation> <translation id="786327964234957808">Siz <ph name="USER_EMAIL1" /> hisobi ma’lumotlarini <ph name="USER_EMAIL2" /> hisobiga ko‘chirish arafasizdasiz. Mavjud Chromium ma’lumotlaringiz <ph name="DOMAIN" /> domenida boshqariladi. Barcha Chromium ma’lumotlari ushbu qurilmadan o‘chiriladi, lekin <ph name="USER_EMAIL1" /> hisobida saqlanib qoladi.</translation> <translation id="7890287942691234100">Chromium skaneridan foydalanish</translation> <translation id="7928628054454574139">Chromiumni istalgan vaqt boshqa ilovalardagi havolalarni bosib ochish</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb index a2d6daf..8b5e4bd 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb
@@ -83,6 +83,7 @@ <translation id="632825460376924298">Vumela Ukungena ngemvume kwe-Chromium</translation> <translation id="6337530241089703714">Khetha ukuthi usule yini idatha yakho ye-Chromium ekule divayisi noma uyigcine</translation> <translation id="6424492062988593837">I-Chromium ingocono nakakhulu! Inguqulo entsha iyatholakala.</translation> +<translation id="6625409903340039086">I-Chromium manje isekela izinqubomgomo zomsebenzisi ku-akhawunti yakho ephethwe</translation> <translation id="6752854822223394465">Inhlangano yakho isetha i-Chromium...</translation> <translation id="6820823224820483452">I-Chromium ayikwazanga ukuhlola wonke amaphasiwedi. Zama futhi kusasa.</translation> <translation id="7006920032187763988">Ungasebenzisa amaphasiwedi owalondolozile ku-Password Manager kwamanye ama-app ku-iPad yakho.</translation> @@ -104,6 +105,7 @@ <translation id="7674213385180944843">Vula izilungiselelo > Ubumfihlo > Ikhamera > i-Chromium uphinde uvule ikhamera.</translation> <translation id="7746854981345936341">Ithiphu ye-Chromium. Ezinye izinkinobho manje ziphansi kwesikrini sakho, njengokuthi Emuva, Phambili, nokuthi Usesho.</translation> <translation id="7763454117143368771">Sebenzisa i-Chromium njengesiphequluli sakho esiyinhloko ukuze uhlale uvikelekile kumasayithi ayingozi futhi ugcine amphasiwedi akho aphephile</translation> +<translation id="7812317783196516890">Ungene ngemvume futhi uvumelanisa idatha yakho nge-akhawunti ephethwe yi-<ph name="DOMAIN" /> lapho umlawuli wayo engakwazi manje ukusetha izinqubomgomo zomsebenzisi eziqondene naleyo akhawunti ezingathinta indlela yokuziphatha ye-Chromimum.</translation> <translation id="786327964234957808">Ushintsha ama-akhawunti okuvumelanisa kusukela ku-<ph name="USER_EMAIL1" /> ukuya ku-<ph name="USER_EMAIL1" />. Idatha yakho ekhona ye-Chromium iphethwe yi-<ph name="DOMAIN" />. Lokhu kuzosusa idatha kusukela kule divayisi, kodwa idatha yakho izohlala ku-<ph name="USER_EMAIL2" />.</translation> <translation id="7890287942691234100">Qala ukusebenzisa iskena se-Chromium</translation> <translation id="7928628054454574139">Vula i-Chromium noma kunini lapho uthepha kumalinki kwamanye ama-app</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb index de5bc94f..17ed1f9 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome በእርስዎ የGoogle መለያ በሚገቡበት ጊዜ የእርስዎን የይለፍ ቃላትን ሊፈትሽ ይችላል።</translation> <translation id="1493827051843127077">በሁሉም መሣሪያዎችዎ ላይ ትሮችዎን፣ የይለፍ ቃላትዎን እና የክፍያ መረጃዎን ለማስመር Chromeን እንደ ነባሪ ያዘጋጁ</translation> <translation id="1504372625950710826">Chrome ዝማኔዎች ካሉ መፈተሽ አልቻለም። የበይነመረብ ግንኙነትዎን ለመፈተሽ ይሞክሩ።</translation> +<translation id="1511320244449497906">እርስዎ አስተዳዳሪው አሁን የChrome ባህሪን ሊቀይር የሚችሉ መለያውን የሚመለከቱ የተጠቃሚ መመሪያዎችን ማቀናበር ወደሚችሉበት በ<ph name="DOMAIN" /> የሚተዳደር መለያ ገብተዋል እና ውሂብዎን ከእሱ ጋር እያሰመሩት ነው።</translation> <translation id="1682483655351012182">የChrome ውሂብዎን ያስምሩ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">የአጠቃቀም ስታቲስቲክሶችን እና የብልሽት ሪፖርቶችን ወደ Google በመላክ Chromeን ለማሻሻል ያግዙ</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">ከChrome የበለጠ ለማግኘት በGoogle መለያዎ ወደ Chrome ይግቡ።</translation> <translation id="7855730255114109580">Google Chrome የተዘመነ ነው</translation> <translation id="8022947259858476807">አገናኞችን ለመክፈት፣ ከመግብሮች ለመፈለግ እና በሌሎች መተግበሪያዎች ውስጥ የይለፍ ቃሎችን የራስ-ለመሙላት በነባሪነት Chrome ን ይጠቀሙ</translation> +<translation id="81358522153858150">Chrome አሁን ለሚተዳደረው መለያዎ የተጠቃሚ መመሪያዎችን ይደግፋል</translation> <translation id="8160472928944011082">Chromeን ማዘመን አልተቻለም</translation> <translation id="8263079278049777200">ወደዚህ ጣቢያ፣ ወደ የእርስዎ Google መለያ እና ወደ Chrome ይግቡ። በኋላ ስምረትን ማብራት ይችላሉ።</translation> <translation id="8357607116237445042">የChrome ውሂብዎን ከዚህ መሣሪያ ይጸዳ ወይም ይቆይ እንደሆነ ይምረጡ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb index 5fe7c34..2a48ff2b 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_bs.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome može provjeravati vaše lozinke kada se prijavite pomoću Google računa.</translation> <translation id="1493827051843127077">Postavite Chrome kao zadani preglednik da sinhronizirate kartice, lozinke i informacije o plaćanju na svim uređajima</translation> <translation id="1504372625950710826">Chrome nije mogao provjeriti ima li ažuriranja. Predlažemo da provjerite internetsku vezu.</translation> +<translation id="1511320244449497906">Prijavljeni ste i vaši se podaci sinkroniziraju s računom kojim upravlja web-lokacija <ph name="DOMAIN" />. Administrator sada može postaviti korisnička pravila koja se odnose na taj račun i koja mogu promijeniti ponašanje Chromea.</translation> <translation id="1682483655351012182">Sinhroniziraj Chrome podatke</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Pomozite nam da poboljšamo Chrome slanjem statistike korištenja i izvještaja o padovima aplikacije Googleu</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Da iskoristite sve prednosti Chromea, prijavite se na Chrome pomoću Google računa.</translation> <translation id="7855730255114109580">Google Chrome je ažuriran</translation> <translation id="8022947259858476807">Koristite Chrome prema zadanim postavkama da otvarate linkove, pretražujete iz vidžeta i automatski popunjavate lozinke u drugim aplikacijama</translation> +<translation id="81358522153858150">Chrome sada za vaš upravljani račun podržava korisnička pravila</translation> <translation id="8160472928944011082">Nije moguće ažurirati Chrome</translation> <translation id="8263079278049777200">Prijavite se na ovu web lokaciju, Google račun i Chrome. Sinhronizaciju možete uključiti kasnije.</translation> <translation id="8357607116237445042">Odaberite želite li obrisati podatke Chromea s ovog uređaja ili ih želite zadržati</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb index 3a8ddcb..059e3c8 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_cy.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Gall Chrome wirio'ch cyfrineiriau pan fyddwch yn mewngofnodi gyda'ch Cyfrif Google.</translation> <translation id="1493827051843127077">Gosodwch Chrome fel eich porwr diofyn i gysoni'ch tabiau, eich cyfrineiriau, a'ch gwybodaeth talu ar eich holl ddyfeisiau</translation> <translation id="1504372625950710826">Ni allai Chrome wirio am ddiweddariadau. Rhowch gynnig ar wirio'ch cysylltiad rhyngrwyd.</translation> +<translation id="1511320244449497906">Rydych wedi mewngofnodi ac yn cysoni'ch data â chyfrif a reolir gan <ph name="DOMAIN" /> lle gall ei weinyddwr bellach osod polisïau defnyddwyr sy'n benodol i'r cyfrif hwnnw a all newid ymddygiad Chrome.</translation> <translation id="1682483655351012182">Cysoni eich Data Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Helpu i wella Chrome drwy anfon ystadegau defnydd ac adroddiadau toriadau at Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">I gael y gorau o Chrome, mewngofnodwch i Chrome â'ch Cyfrif Google.</translation> <translation id="7855730255114109580">Mae Google Chrome yn gyfoes</translation> <translation id="8022947259858476807">Defnyddiwch Chrome yn ddiofyn i agor dolenni, chwilio o declynnau, ac awtolenwi cyfrineiriau mewn apiau eraill</translation> +<translation id="81358522153858150">Mae Chrome bellach yn cefnogi polisïau defnyddwyr ar gyfer eich cyfrif a reolir</translation> <translation id="8160472928944011082">Ni all Chrome ddiweddaru</translation> <translation id="8263079278049777200">Mewngofnodi i'r wefan hon, eich Cyfrif Google a Chrome. Gallwch droi cysoni ymlaen yn nes ymlaen.</translation> <translation id="8357607116237445042">Dewiswch a ddylid clirio eich data Chrome o'r ddyfais hon neu eu cadw</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb index 28b3c72..161e646 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome kann deine Passwörter prüfen, wenn du dich mit deinem Google-Konto anmeldest.</translation> <translation id="1493827051843127077">Du kannst Chrome als Standardbrowser festlegen, um Tabs, Passwörter und Zahlungsinformationen auf allen deinen Geräten zu synchronisieren</translation> <translation id="1504372625950710826">Chrome konnte nicht nach Updates suchen. Prüfe deine Internetverbindung.</translation> +<translation id="1511320244449497906">Du bist angemeldet und deine Daten werden mit einem Konto synchronisiert, das von <ph name="DOMAIN" /> verwaltet wird. Der Administrator dieser Domain kann jetzt spezifische Nutzerrichtlinien für dieses Konto festlegen, die das Verhalten von Chrome verändern können.</translation> <translation id="1682483655351012182">Chrome-Daten synchronisieren</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Nutzungsstatistiken und Absturzberichte zur Verbesserung von Chrome an Google senden</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Wenn du Chrome optimal nutzen möchtest, meldest du dich mit deinem Google-Konto in Chrome an.</translation> <translation id="7855730255114109580">Google Chrome ist auf dem neuesten Stand.</translation> <translation id="8022947259858476807">Chrome standardmäßig verwenden, um Links zu öffnen, über Widgets zu suchen und Passwörter in anderen Apps automatisch auszufüllen</translation> +<translation id="81358522153858150">Chrome unterstützt jetzt Nutzerrichtlinien für dein verwaltetes Konto</translation> <translation id="8160472928944011082">Update nicht möglich</translation> <translation id="8263079278049777200">Melde dich bei dieser Website, in deinem Google-Konto und in Chrome an. Du kannst die Synchronisierung später aktivieren.</translation> <translation id="8357607116237445042">Möchtest du deine Chrome-Daten von diesem Gerät löschen oder sie behalten?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb index 65398206..13bc49c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Το Chrome μπορεί να ελέγξει τους κωδικούς πρόσβασής σας όταν συνδέεστε με τον Λογαριασμό σας Google.</translation> <translation id="1493827051843127077">Ορίστε το Chrome ως το προεπιλεγμένο πρόγραμμα περιήγησης για συγχρονισμό καρτελών, κωδικών πρόσβασης και πληροφοριών πληρωμών σε όλες τις συσκευές σας</translation> <translation id="1504372625950710826">Το Chrome δεν μπόρεσε να ελέγξει για ενημερώσεις. Δοκιμάστε να ελέγξετε τη σύνδεσή σας στο διαδίκτυο.</translation> +<translation id="1511320244449497906">Έχετε συνδεθεί και συγχρονίζετε τα δεδομένα σας με έναν λογαριασμό που βρίσκεται υπό τη διαχείριση του τομέα <ph name="DOMAIN" />, ο διαχειριστής του οποίου μπορεί πλέον να ορίσει πολιτικές χρήστη ειδικά για αυτόν τον λογαριασμό, ο οποίος μπορεί να αλλάξει τη συμπεριφορά του Chrome.</translation> <translation id="1682483655351012182">Συγχρονισμός των δεδομένων του Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Στείλτε στατιστικά στοιχεία χρήσης και αναφορές σφαλμάτων στην Google για να συμβάλετε στη βελτίωση του Chrome</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Συνδεθείτε στο Chrome με τον Λογαριασμό σας Google για να το αξιοποιήσετε στο έπακρο.</translation> <translation id="7855730255114109580">Το Google Chrome είναι ενημερωμένο</translation> <translation id="8022947259858476807">Χρησιμοποιήστε το Chrome ως το προεπιλεγμένο πρόγραμμα περιήγησης για το άνοιγμα συνδέσμων, την αναζήτηση από γραφικά στοιχεία και την αυτόματη συμπλήρωση κωδικών πρόσβασης σε άλλες εφαρμογές</translation> +<translation id="81358522153858150">Το Chrome υποστηρίζει πλέον πολιτικές χρήστη για τον διαχειριζόμενο λογαριασμό σας</translation> <translation id="8160472928944011082">Δεν είναι δυνατή η ενημέρωση του Chrome</translation> <translation id="8263079278049777200">Συνδεθείτε σε αυτόν τον ιστότοπο, στον Λογαριασμό σας Google και στο Chrome. Μπορείτε να ενεργοποιήσετε τον συγχρονισμό αργότερα.</translation> <translation id="8357607116237445042">Επιλέξτε εάν θέλετε να διαγράψετε ή να διατηρήσετε τα δεδομένα σας Chrome σε αυτήν τη συσκευή</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb index 6e06022..10ad423 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_et.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome saab teie paroole kontrollida siis, kui logite sisse oma Google'i kontoga.</translation> <translation id="1493827051843127077">Määrake Chrome vaikebrauseriks, et sünkroonida kõikides oma seadetes vahelehti, paroole ja makseteavet</translation> <translation id="1504372625950710826">Chrome ei saanud värskendusi otsida. Kontrollige internetiühendust.</translation> +<translation id="1511320244449497906">Olete sisse logitud ja andmed sünkroonitakse kontoga, mida haldab <ph name="DOMAIN" />, kus selle administraator saab nüüd määrata konto kasutajareegleid, millega saab Chrome'i käitumist muuta.</translation> <translation id="1682483655351012182">Chrome'i andmete sünkroonimine</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Aidake Chrome'i täiustada, saates Google'ile kasutusstatistikat ja krahhiaruandeid</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome'i kasutamiseks parimal moel logige Chrome'i sisse oma Google'i kontoga.</translation> <translation id="7855730255114109580">Google Chrome on ajakohane</translation> <translation id="8022947259858476807">Kasutage linkide avamiseks, vidinatest otsimiseks ja muudes rakendustes paroolide automaatselt täitmiseks vaikimisi Chrome'i</translation> +<translation id="81358522153858150">Chrome toetab nüüd hallatud konto puhul kasutajareegleid</translation> <translation id="8160472928944011082">Chrome'i ei saa värskendada</translation> <translation id="8263079278049777200">Logige sellele saidile, oma Google'i kontole ja Chrome'i sisse. Sünkroonimise saate hiljem sisse lülitada.</translation> <translation id="8357607116237445042">Valige, kas soovite oma Chrome'i andmed sellest seadmest kustutada või need säilitada</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb index b30e9a4..983873c 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome زمانی میتواند گذرواژههایتان را بررسی کند که با «حساب Google» خود به سیستم وارد شوید.</translation> <translation id="1493827051843127077">برای همگامسازی برگهها، گذرواژهها، و اطلاعات پرداخت در همه دستگاهها، Chrome را بهعنوان پیشفرض تنظیم کنید</translation> <translation id="1504372625950710826">Chrome موفق نشد بهروزرسانیها را بررسی کند. اتصال اینترنت را بررسی کنید.</translation> +<translation id="1511320244449497906">به سیستم وارد شدهاید و درحال همگامسازی دادههایتان با حساب تحتمدیریت <ph name="DOMAIN" /> هستید. سرپرست این دامنه اکنون میتواند خطمشیهای کاربر مختص آن حساب را تنظیم کند. این کار میتواند رفتار Chrome را تغییر دهد.</translation> <translation id="1682483655351012182">همگامسازی دادههای Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">با ارسال آمار کاربرد و گزارشهای خرابی برای Google، به بهبود Chrome کمک کنید</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">برای اینکه بیشترین بهره را از Chrome ببرید، با «حساب Google» به سیستم Chrome وارد شوید.</translation> <translation id="7855730255114109580">Google Chrome بهروز است</translation> <translation id="8022947259858476807">برای باز کردن پیوندها، جستجوی ابزارکها، و تکمیل خودکار گذرواژهها در دیگر برنامهها، بهطور پیشفرض از Chrome استفاده کنید</translation> +<translation id="81358522153858150">Chrome اکنون از خطمشیهای کاربر برای حساب مدیریتشده شما پشتیبانی میکند</translation> <translation id="8160472928944011082">Chrome بهروزرسانی نمیشود</translation> <translation id="8263079278049777200">به سیستم این سایت، «حساب Google» خود، و Chrome وارد شوید. میتوانید بعداً همگامسازی را روشن کنید.</translation> <translation id="8357607116237445042">انتخاب کنید دادههای Chrome شما از این دستگاه پاک شوند یا نگه داشته شوند</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb index 6a5e19519..2391b577 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Masusuri ng Chrome ang iyong mga password kapag nag-sign in ka sa Google Account mo.</translation> <translation id="1493827051843127077">Itakda ang Chrome bilang default para ma-sync ang iyong mga tab, password, at impormasyon sa pagbabayad sa lahat ng device mo</translation> <translation id="1504372625950710826">Hindi matingnan ng Chrome kung may mga update. Subukang tingnan ang iyong koneksyon sa internet.</translation> +<translation id="1511320244449497906">Naka-sign in ka at sini-sync ang iyong data sa isang account na pinamamahalaan ng <ph name="DOMAIN" /> kung saan magagawa na ng administrator nito na magtakda ng mga patakaran ng user na partikular sa account na iyon na puwedeng makabago sa pagkilos ng Chrome.</translation> <translation id="1682483655351012182">I-sync ang Iyong Data sa Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Tumulong na pahusayin ang Chrome sa pamamagitan ng pagpapadala ng mga istatistika sa paggamit at mga ulat ng pag-crash sa Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Para masulit ang Chrome, mag-sign in sa Chrome gamit ang iyong Google Account.</translation> <translation id="7855730255114109580">Napapanahon ang Google Chrome</translation> <translation id="8022947259858476807">Gamitin ang Chrome bilang default para magbukas ng mga link, maghanap mula sa mga widget, at mag-autofill ng mga password sa iba pang app</translation> +<translation id="81358522153858150">Suportado na ngayon ng Chrome ang mga patakaran ng user para sa iyong pinamamahalaang account</translation> <translation id="8160472928944011082">Hindi makapag-update ang Chrome</translation> <translation id="8263079278049777200">Mag-sign in sa site na ito, iyong Google Account, at Chrome. Puwede mong i-on ang pag-sync sa ibang pagkakataon.</translation> <translation id="8357607116237445042">Piliin kung iki-clear ang iyong data sa Chrome sa device na ito o kung papanatilihin ito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb index 0d4f40ab..0f73a77 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hi.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">जब आप Google खाते से साइन इन करते हैं, तब Chrome आपके पासवर्ड की जांच कर सकता है.</translation> <translation id="1493827051843127077">अपने सभी डिवाइसों पर टैब, पासवर्ड, और पैसे चुकाने से जुड़ी जानकारी सिंक करने के लिए, Chrome को डिफ़ॉल्ट के रूप में सेट करें</translation> <translation id="1504372625950710826">Chrome अपडेट की जांच नहीं कर सका. देखें कि आप इंटरनेट से कनेक्ट हैं या नहीं.</translation> +<translation id="1511320244449497906">आपने जिस खाते से साइन इन किया है और अपना डेटा सिंक किया हुआ है उसे <ph name="DOMAIN" /> से मैनेज किया जाता है. इस डोमेन का एडमिन अब उस खाते के लिए खास उपयोगकर्ता नीतियां लागू कर सकता है. इन नीतियों से, Chrome के काम करने के तरीके में बदलाव आ सकता है.</translation> <translation id="1682483655351012182">अपना Chrome डेटा सिंक करें</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">इस्तेमाल के आंकड़े और क्रैश रिपोर्ट Google को भेजकर, Chrome को बेहतर बनाने में मदद करें</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, अपने Google खाते से Chrome में साइन इन करें.</translation> <translation id="7855730255114109580">Google Chrome अप टू डेट है</translation> <translation id="8022947259858476807">लिंक खोलने के लिए, विजेट से खोजने के लिए, Chrome को डिफ़ॉल्ट रूप से इस्तेमाल करें. ऐप्लिकेशन में पासवर्ड अपने-आप भर जाए, इसके लिए भी Chrome को डिफ़ॉल्ट रूप से इस्तेमाल करें.</translation> +<translation id="81358522153858150">Chrome में, मैनेज किए जा रहे आपके खाते के लिए अब उपयोगकर्ता नीतियां लागू की जा सकती हैं</translation> <translation id="8160472928944011082">Chrome को अपडेट नहीं किया जा सका</translation> <translation id="8263079278049777200">इस साइट, अपने Google खाते, और Chrome में साइन इन करें. आप सिंक करने की सुविधा को बाद में चालू कर सकते हैं.</translation> <translation id="8357607116237445042">चुनें कि आप इस डिवाइस से अपना Chrome डेटा मिटाना चाहते हैं या सेव रखना चाहते हैं</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb index aab0c2e3..5c15588 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hr.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome može provjeriti vaše zaporke kad se prijavite Google računom.</translation> <translation id="1493827051843127077">Postavite Chrome kao zadani preglednik da biste sinkronizirali kartice, zaporke i podatke o plaćanju na svim svojim uređajima</translation> <translation id="1504372625950710826">Chrome nije uspio provjeriti ima li ažuriranja. Provjerite internetsku vezu.</translation> +<translation id="1511320244449497906">Prijavljeni ste i vaši se podaci sinkroniziraju s računom kojim upravlja web-lokacija <ph name="DOMAIN" />. Administrator sada može postaviti korisnička pravila koja se odnose na taj račun i koja mogu promijeniti ponašanje Chromea.</translation> <translation id="1682483655351012182">Sinkroniziraj podatke iz Chromea</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Pomozite poboljšati Chrome slanjem statistike upotrebe i izvješća o padu programa Googleu</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Da biste iskoristili sve prednosti koje vam pruža Chrome, prijavite se u Chrome Google računom.</translation> <translation id="7855730255114109580">Google Chrome ažuriran je</translation> <translation id="8022947259858476807">Koristite Chrome prema zadanim postavkama da biste otvarali veze, pretraživali putem widgeta i automatski popunjavali zaporke u drugim aplikacijama</translation> +<translation id="81358522153858150">Chrome sada za vaš upravljani račun podržava korisnička pravila</translation> <translation id="8160472928944011082">Ažuriranje Chromea nije moguće</translation> <translation id="8263079278049777200">Prijavite se na ovu web-lokaciju, Google račun i Chrome. Sinkronizaciju možete uključiti kasnije.</translation> <translation id="8357607116237445042">Odaberite želite li podatke iz Chromea izbrisati s ovog uređaja ili ih zadržati</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb index 4cc6612d..c7b3d3c3 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_hu.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">A Chrome ellenőrizni tudja a mentett jelszavakat, ha Ön bejelentkezik Google-fiókjával.</translation> <translation id="1493827051843127077">A Chrome-ot alapértelmezett böngészőként beállítva az összes eszközén szinkronizálhatja a lapfüleket, jelszavakat és fizetési adatokat</translation> <translation id="1504372625950710826">A Chrome nem tudott frissítéseket keresni. Ellenőrizze az internetkapcsolatot.</translation> +<translation id="1511320244449497906">Ön a(z) <ph name="DOMAIN" /> által felügyelt fiókba van bejelentkezve, és szinkronizálja vele az adatait. Ennek a domainnek a rendszergazdája mostantól beállíthat olyan felhasználói házirendeket erre a fiókra vonatkozóan, amelyek módosíthatják a Chrome viselkedését.</translation> <translation id="1682483655351012182">Chrome-adatok szinkronizálása</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Küldjön használati statisztikákat és hibajelentéseket a Google-nak, így segíthet a Chrome fejlesztésében</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Annak érdekében, hogy a legtöbbet hozhassa ki a Chrome-ból, jelentkezzen be Google-fiókjával a Chrome-ba.</translation> <translation id="7855730255114109580">A Google Chrome naprakész</translation> <translation id="8022947259858476807">A Chrome-ot alapértelmezett böngészőként használva linkek nyithatók meg, modulokban lehet keresni, és jelszavak tölthetők be automatikusan az egyéb alkalmazásokban</translation> +<translation id="81358522153858150">A Chrome mostantól támogatja a felhasználói házirendeket az Ön felügyelt fiókjánál</translation> <translation id="8160472928944011082">Nem lehet frissíteni a Chrome-ot</translation> <translation id="8263079278049777200">Jelentkezzen be erre a webhelyre, a Google-fiókjába és a Chrome-ba. A szinkronizálást később is bekapcsolhatja.</translation> <translation id="8357607116237445042">Döntse el, hogy törli-e a Chrome adatait erről az eszközről, vagy megtartja őket.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb index 5315a55..596791e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_kn.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">ನೀವು Google ಖಾತೆಯ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ, Chrome ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಬಹುದು.</translation> <translation id="1493827051843127077">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಟ್ಯಾಬ್ಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಪಾವತಿ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chrome ಅನ್ನು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಹೊಂದಿಸಿ</translation> <translation id="1504372625950710826">ಅಪ್ಡೇಟ್ಗಳಿವೆಯೇ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಲು Chrome ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಪರಿಶೀಲಿಸಿ ನೋಡಿ.</translation> +<translation id="1511320244449497906"><ph name="DOMAIN" /> ನಿಂದ ನಿರ್ವಹಿಸಲಾದ ನಿಮ್ಮ ಖಾತೆಯ ಮೂಲಕ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ ಮತ್ತು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಿದಾಗ, Chrome ನ ನಿರ್ವಾಹಕರು ಇದೀಗ ಆ ಖಾತೆಗೆ ಬಳಕೆದಾರರ ನೀತಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೊಂದಿಸಬಹುದು, ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಬಹುದು.</translation> <translation id="1682483655351012182">ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಿ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Google ಗೆ ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳು ಮತ್ತು ಕ್ರ್ಯಾಶ್ ವರದಿಗಳನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ Chrome ಅನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome ನಿಂದ ಹೆಚ್ಚಿನ ಪ್ರಯೋಜನ ಪಡೆದುಕೊಳ್ಳಲು, ನಿಮ್ಮ Google ಖಾತೆಯ ಮೂಲಕ Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> <translation id="7855730255114109580">Google Chrome ಅನ್ನು ಅಪ್ ಟು ಡೇಟ್ ಆಗಿದೆ</translation> <translation id="8022947259858476807">ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಲು, ವಿಜೆಟ್ಗಳಿಂದ ಹುಡುಕಲು ಮತ್ತು ಇತರ ಆ್ಯಪ್ಗಳಲ್ಲಿ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಭರ್ತಿ ಮಾಡಲು ಡೀಫಾಲ್ಟ್ ಆಗಿ Chrome ಬಳಸಿ</translation> +<translation id="81358522153858150">Chrome ಈಗ ನಿಮ್ಮ ನಿರ್ವಹಿಸಿದ ಖಾತೆಗಾಗಿ ಬಳಕೆದಾರರ ನೀತಿಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ</translation> <translation id="8160472928944011082">Chrome ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="8263079278049777200">ಈ ಸೈಟ್, ನಿಮ್ಮ Google ಖಾತೆ ಮತ್ತು Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ. ನಂತರ ನೀವು ಸಿಂಕ್ ಆನ್ ಮಾಡಬಹುದು.</translation> <translation id="8357607116237445042">ಈ ಸಾಧನದಲ್ಲಿನ ನಿಮ್ಮ Chrome ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಬೇಕೆ ಅಥವಾ ಇರಿಸಿಕೊಳ್ಳಬೇಕೆ ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb index 975bd7b0b..b678f84 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_lo.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome ສາມາດກວດເບິ່ງລະຫັດຜ່ານຂອງທ່ານ ເມື່ອທ່ານເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານໄດ້.</translation> <translation id="1493827051843127077">ຕັ້ງ Chrome ເປັນຄ່າເລີ່ມຕົ້ນເພື່ອຊິ້ງຂໍ້ມູນແຖບ, ລະຫັດຜ່ານ ແລະ ຂໍ້ມູນການຈ່າຍເງິນຂອງທ່ານຢູ່ອຸປະກອນທັງໝົດຂອງທ່ານ</translation> <translation id="1504372625950710826">Chrome ບໍ່ສາມາດກວດການອັບເດດໄດ້. ລອງກວດເບິ່ງການເຊື່ອມຕໍ່ອິນເຕີເນັດຂອງທ່ານ.</translation> +<translation id="1511320244449497906">ທ່ານເຂົ້າສູ່ລະບົບແລ້ວ ແລະ ກຳລັງຊິ້ງຂໍ້ມູນຂອງທ່ານກັບບັນຊີທີ່ຈັດການໂດຍ <ph name="DOMAIN" /> ເຊິ່ງຕອນນີ້ຜູ້ເບິ່ງແຍງລະບົບຂອງມັນສາມາດຕັ້ງນະໂຍບາຍຜູ້ໃຊ້ສະເພາະຫາບັນຊີນັ້ນທີ່ສາມາດປ່ຽນພຶດຕິກຳຂອງ Chrome ໄດ້.</translation> <translation id="1682483655351012182">ຊິ້ງຂໍ້ມູນ Chrome ຂອງທ່ານ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">ຊ່ວຍປັບປຸງ Chrome ໂດຍການສົ່ງສະຖິຕິການນຳໃຊ້ ແລະ ລາຍງານການຂັດຂ້ອງໄປໃຫ້ Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">ເພື່ອໃຊ້ປະໂຫຍດສູງສຸດຈາກ Chrome, ໃຫ້ເຂົ້າສູ່ລະບົບ Chrome ດ້ວຍບັນຊີ Google ຂອງທ່ານ.</translation> <translation id="7855730255114109580">Google Chrome ແມ່ນເວີຊັນໃໝ່ຫຼ້າສຸດແລ້ວ</translation> <translation id="8022947259858476807">ໃຊ້ Chrome ເປັນຄ່າເລີ່ມຕົ້ນເພື່ອເປີດລິ້ງ, ຊອກຫາຈາກວິດເຈັດ ແລະ ການຕື່ມຂໍ້ມູນລະຫັດຜ່ານອັດຕະໂນມັດໃນແອັບອື່ນໆ</translation> +<translation id="81358522153858150">ຕອນນີ້ Chrome ຮອງຮັບນະໂຍບາຍຜູ້ໃຊ້ສຳລັບບັນຊີທີ່ມີການຈັດການຂອງທ່ານແລ້ວ</translation> <translation id="8160472928944011082">Chrome ບໍ່ສາມາດອັບເດດໄດ້</translation> <translation id="8263079278049777200">ເຂົ້າສູ່ລະບົບຫາເວັບໄຊນີ້, ບັນຊີ Google ຂອງທ່ານ ແລະ Chrome. ທ່ານສາມາດເປີດການຊິ້ງຂໍ້ມູນໃນພາຍຫຼັງໄດ້.</translation> <translation id="8357607116237445042">ເລືອກວ່າຈະລຶບລ້າງຂໍ້ມູນ Chrome ຂອງທ່ານອອກຈາກອຸປະກອນນີ້ ຫຼື ເກັບມັນໄວ້</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb index 8a72ef6..759c7fd 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_nl.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome kan je wachtwoorden checken als je inlogt met je Google-account.</translation> <translation id="1493827051843127077">Stel Chrome in als je standaardbrowser om je tabbladen, wachtwoorden en betalingsgegevens op al je apparaten te synchroniseren</translation> <translation id="1504372625950710826">Chrome kan niet checken op updates. Check de internetverbinding.</translation> +<translation id="1511320244449497906">Je bent ingelogd en synchroniseert je gegevens met een account dat wordt beheerd door <ph name="DOMAIN" />. De beheerder kan nu specifiek gebruikersbeleid voor dat account instellen om het gedrag van Chrome te wijzigen.</translation> <translation id="1682483655351012182">Je Chrome-gegevens synchroniseren</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Help Chrome beter te maken door gebruiksstatistieken en crashrapporten naar Google te sturen</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Log in bij Chrome met je Google-account om het maximale uit Chrome te halen.</translation> <translation id="7855730255114109580">Google Chrome is up-to-date</translation> <translation id="8022947259858476807">Gebruik standaard Chrome om links te openen, te zoeken via widgets en om wachtwoorden in andere apps automatisch in te vullen</translation> +<translation id="81358522153858150">Chrome ondersteunt nu gebruikersbeleid voor je beheerde account</translation> <translation id="8160472928944011082">Chrome kan niet updaten</translation> <translation id="8263079278049777200">Log in op deze site, op je Google-account en bij Chrome. Je kunt synchronisatie later aanzetten.</translation> <translation id="8357607116237445042">Kies of je je Chrome-gegevens voor dit apparaat wilt verwijderen of behouden</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb index c6df5a6..b61c092a 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pa.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨ 'ਤੇ Chrome ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ।</translation> <translation id="1493827051843127077">ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੀਆਂ ਟੈਬਾਂ, ਪਾਸਵਰਡਾਂ ਅਤੇ ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ ਦਾ ਸਿੰਕ ਕਰਨ ਲਈ Chrome ਨੂੰ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਤੌਰ 'ਤੇ ਸੈੱਟ ਕਰੋ</translation> <translation id="1504372625950710826">Chrome ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਆਪਣੇ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੇਖੋ।</translation> +<translation id="1511320244449497906">ਤੁਸੀਂ <ph name="DOMAIN" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਹੋ ਅਤੇ ਇਸ ਨਾਲ ਆਪਣਾ ਡਾਟਾ ਸਿੰਕ ਕਰ ਰਹੇ ਹੋ ਜਿੱਥੇ ਇਸਦਾ ਪ੍ਰਸ਼ਾਸਕ ਹੁਣ ਉਸ ਖਾਤੇ ਨਾਲ ਸੰਬੰਧਿਤ ਵਰਤੋਂਕਾਰ ਨੀਤੀਆਂ ਨੂੰ ਸੈੱਟ ਕਰ ਸਕਦਾ ਹੈ ਜੋ Chrome ਦੇ ਵਿਹਾਰ ਨੂੰ ਬਦਲ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="1682483655351012182">ਆਪਣੇ Chrome ਡਾਟੇ ਦਾ ਸਿੰਕ ਕਰੋ</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Chrome ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ Google ਨੂੰ ਵਰਤੋਂ ਅੰਕੜੇ ਅਤੇ ਕ੍ਰੈਸ਼ ਰਿਪੋਰਟਾਂ ਭੇਜੋ</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਲਾਹਾ ਲੈਣ ਲਈ, ਆਪਣੇ Google ਖਾਤੇ ਨਾਲ Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> <translation id="7855730255114109580">Google Chrome ਅੱਪ ਟੂ ਡੇਟ ਹੈ</translation> <translation id="8022947259858476807">ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ, ਵਿਜੇਟਾਂ ਤੋਂ ਖੋਜ ਕਰਨ ਅਤੇ ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਆਟੋਫਿਲ ਪਾਸਵਰਡਾਂ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ 'ਤੇ Chrome ਦੀ ਵਰਤੋਂ ਕਰੋ</translation> +<translation id="81358522153858150">Chrome ਹੁਣ ਤੁਹਾਡੇ ਪ੍ਰਬੰਧਿਤ ਕੀਤੇ ਖਾਤੇ ਲਈ ਵਰਤੋਂਕਾਰ ਨੀਤੀਆਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ</translation> <translation id="8160472928944011082">Chrome ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="8263079278049777200">ਇਸ ਸਾਈਟ, ਆਪਣੇ Google ਖਾਤੇ ਅਤੇ Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ। ਤੁਸੀਂ ਸਿੰਕ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਚਾਲੂ ਕਰ ਸਕਦੇ ਹੋ।</translation> <translation id="8357607116237445042">ਚੁਣੋ ਕਿ ਕੀ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਆਪਣਾ Chrome ਡਾਟਾ ਕਲੀਅਰ ਕਰਨਾ ਹੈ ਜਾਂ ਇਸਨੂੰ ਰੱਖਣਾ ਹੈ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb index 0e1c088a..c94e7a3 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_pt-PT.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">O Chrome pode verificar as suas palavras-passe quando inicia sessão com a sua Conta Google.</translation> <translation id="1493827051843127077">Defina o Chrome como a predefinição para sincronizar os separadores, as palavras-chave e as informações de pagamento em todos os seus dispositivos</translation> <translation id="1504372625950710826">O Chrome não conseguiu verificar se existem atualizações. Experimente verificar a sua ligação à Internet.</translation> +<translation id="1511320244449497906">Tem sessão iniciada e está a sincronizar os seus dados com uma conta gerida pelo domínio <ph name="DOMAIN" />, onde o respetivo administrador pode agora definir Políticas do Utilizador específicas para essa conta que podem alterar o comportamento do Chrome.</translation> <translation id="1682483655351012182">Sincronizar os dados do Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Ajudar a melhorar o Chrome ao enviar estatísticas de utilização e relatórios de falhas para a Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Para tirar o máximo partido do Chrome, inicie sessão no mesmo com a sua Conta Google.</translation> <translation id="7855730255114109580">O Google Chrome está atualizado</translation> <translation id="8022947259858476807">Utilize o Chrome por predefinição para abrir links, pesquisar a partir de widgets e preencher automaticamente palavras-passe noutras apps</translation> +<translation id="81358522153858150">O Chrome suporta agora Políticas do Utilizador para a sua conta gerida</translation> <translation id="8160472928944011082">Não é possível atualizar o Chrome.</translation> <translation id="8263079278049777200">Inicie sessão neste site, na sua Conta Google e no Chrome. Pode ativar a sincronização mais tarde.</translation> <translation id="8357607116237445042">Escolha se pretende limpar os seus dados do Chrome deste dispositivo ou mantê-los</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb index 055cd82..b9fbce3 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sq.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome mund t'i kontrollojë fjalëkalimet e tua kur të identifikohesh me "Llogarinë tënde të Google".</translation> <translation id="1493827051843127077">Caktoje Chrome si parazgjedhje për të sinkronizuar skedat, fjalëkalimet dhe informacionet e pagesës në të gjitha pajisjet e tua</translation> <translation id="1504372625950710826">Chrome nuk mund të kontrollonte për përditësime. Provo të kontrollosh lidhjen e internetit.</translation> +<translation id="1511320244449497906">Je identifikuar dhe po sinkronizon të dhënat me një llogari të menaxhuar nga <ph name="DOMAIN" />, ku administratori i saj tani mund të caktojë politika përdoruesi specifike për atë llogari që mund të ndryshojnë sjelljen e Chrome.</translation> <translation id="1682483655351012182">Sinkronizo të dhënat e tua të Chrome</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Ndihmo në përmirësimin e Chrome duke i dërguar statistikat e përdorimit dhe raportet e ndërprerjeve aksidentale te Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Për të marrë maksimumin nga Chrome, identifikohu në Chrome me "Llogarinë tënde të Google".</translation> <translation id="7855730255114109580">Google Chrome është i përditësuar</translation> <translation id="8022947259858476807">Përdor Chrome si parazgjedhje për të hapur lidhjet, për të kërkuar nga miniaplikacionet dhe për të plotësuar automatikisht fjalëkalimet në aplikacione të tjera</translation> +<translation id="81358522153858150">Chrome tani mbështet politikat e përdoruesit për llogarinë tënde të menaxhuar</translation> <translation id="8160472928944011082">Chrome nuk mund të përditësohet</translation> <translation id="8263079278049777200">Identifikohu në këtë sajt, "Llogarinë tënde të Google" dhe Chrome. Mund ta aktivizosh sinkronizmin më vonë.</translation> <translation id="8357607116237445042">Zgjidh nëse do t'i pastrosh të dhënat e Chrome nga kjo pajisje apo do t'i mbash ato</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb index 3482cf3..05bdf48 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr-Latn.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome može da vam proverava lozinke kada se prijavite pomoću Google naloga.</translation> <translation id="1493827051843127077">Podesite Chrome kao podrazumevanu aplikaciju za sinhronizovanje kartica, lozinki i informacija o plaćanju na svim uređajima</translation> <translation id="1504372625950710826">Chrome ne može da traži ažuriranja. Proverite internet vezu.</translation> +<translation id="1511320244449497906">Prijavljeni ste i sinhronizujete podatke sa nalogom kojim upravlja <ph name="DOMAIN" />, pri čemu njegov administrator sada može da podešava posebne smernice za korisnike za taj nalog koje mogu da promene ponašanje Chrome-a.</translation> <translation id="1682483655351012182">Sinhronizujte Chrome podatke</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Pomozite nam da poboljšamo Chrome slanjem statistike korišćenja i izveštaja o otkazivanju Google-u</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Da biste koristili Chrome na najbolji način, prijavite se na Chrome pomoću Google naloga.</translation> <translation id="7855730255114109580">Google Chrome je aktuelan</translation> <translation id="8022947259858476807">Podrazumevano koristite Chrome da biste otvarali linkove, pretraživali iz vidžeta i automatski popunjavali lozinke u drugim aplikacijama</translation> +<translation id="81358522153858150">Chrome sada podržava smernice za korisnika za upravljani nalog</translation> <translation id="8160472928944011082">Chrome ne može da se ažurira</translation> <translation id="8263079278049777200">Prijavite se na ovaj sajt, Google nalog i u Chrome. Sinhronizaciju možete da uključite kasnije.</translation> <translation id="8357607116237445042">Odaberite da li ćete obrisati Chrome podatke sa ovog uređaja ili ih zadržati</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb index 07809551..023a733 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_sr.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome може да вам проверава лозинке када се пријавите помоћу Google налога.</translation> <translation id="1493827051843127077">Подесите Chrome као подразумевану апликацију за синхронизовање картица, лозинки и информација о плаћању на свим уређајима</translation> <translation id="1504372625950710826">Chrome не може да тражи ажурирања. Проверите интернет везу.</translation> +<translation id="1511320244449497906">Пријављени сте и синхронизујете податке са налогом којим управља <ph name="DOMAIN" />, при чему његов администратор сада може да подешава посебне смернице за кориснике за тај налог које могу да промене понашање Chrome-а.</translation> <translation id="1682483655351012182">Синхронизујте Chrome податке</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Помозите нам да побољшамо Chrome слањем статистике коришћења и извештаја о отказивању Google-у</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Да бисте користили Chrome на најбољи начин, пријавите се на Chrome помоћу Google налога.</translation> <translation id="7855730255114109580">Google Chrome је актуелан</translation> <translation id="8022947259858476807">Подразумевано користите Chrome да бисте отварали линкове, претраживали из виџета и аутоматски попуњавали лозинке у другим апликацијама</translation> +<translation id="81358522153858150">Chrome сада подржава смернице за корисника за управљани налог</translation> <translation id="8160472928944011082">Chrome не може да се ажурира</translation> <translation id="8263079278049777200">Пријавите се на овај сајт, Google налог и у Chrome. Синхронизацију можете да укључите касније.</translation> <translation id="8357607116237445042">Одаберите да ли ћете обрисати Chrome податке са овог уређаја или их задржати</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb index 15aa9e5..0933385d 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ta.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">நீங்கள் Google கணக்கைக் கொண்டு உள்நுழையும்போது Chrome உலாவியால் உங்கள் கடவுச்சொற்களைச் சரிபார்க்க முடியும்.</translation> <translation id="1493827051843127077">உங்கள் சாதனங்கள் அனைத்திலும் உள்ள தாவல்கள், கடவுச்சொற்கள், பேமெண்ட் தகவல் ஆகியவற்றை ஒத்திசைக்க Chromeமை இயல்பு உலாவியாக அமைக்கலாம்</translation> <translation id="1504372625950710826">Chrome உலாவியால் புதுப்பிப்புகள் உள்ளனவா எனப் பார்க்க முடியவில்லை. இணைய இணைப்பைச் சரிபார்க்கவும்.</translation> +<translation id="1511320244449497906"><ph name="DOMAIN" /> மூலம் நிர்வகிக்கப்படும் ஒரு கணக்கில் உள்நுழைந்து, உங்கள் தரவை ஒத்திசைக்கிறீர்கள். Chrome இயங்கும் விதத்தை மாற்றக்கூடிய வகையில் அந்தக் கணக்கிற்கு மட்டும் குறிப்பிட்ட பயனர் கொள்கைகளை அந்த டொமைன் நிர்வாகியால் இப்போது அமைக்க முடியும்.</translation> <translation id="1682483655351012182">Chrome தரவை ஒத்திசை</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">பயன்பாட்டுப் புள்ளிவிவரங்களையும் சிதைவு அறிக்கைகளையும் Googleளுக்கு அனுப்புவதன் மூலம் Chromeமை மேம்படுத்த உதவுங்கள்</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chromeமில் இருந்து அதிகப் பலன்களைப் பெற, உங்கள் Google கணக்கின் மூலம் Chromeமில் உள்நுழையவும்.</translation> <translation id="7855730255114109580">Google Chrome புதுப்பித்த நிலையில் உள்ளது</translation> <translation id="8022947259858476807">இணைப்புகளைத் திறப்பதற்கும், விட்ஜெட்டுகளில் தேடுவதற்கும், பிற ஆப்ஸில் கடவுச்சொற்களைத் தானாக நிரப்புவதற்கும் Chromeமை இயல்பு உலாவியாகப் பயன்படுத்தலாம்</translation> +<translation id="81358522153858150">நிர்வகிக்கப்படும் கணக்கிற்கான பயனர் கொள்கைகளை Chrome இப்போது ஆதரிக்கிறது</translation> <translation id="8160472928944011082">Chrome உலாவியைப் புதுப்பிக்க முடியாது</translation> <translation id="8263079278049777200">இந்தத் தளம், Google கணக்கு, Chrome ஆகியவற்றில் உள்நுழையுங்கள். ஒத்திசைவைப் பின்னர் இயக்கலாம்.</translation> <translation id="8357607116237445042">இந்தச் சாதனத்தில் உள்ள உங்கள் Chrome தரவை அழிக்க வேண்டுமா வைத்திருக்க வேண்டுமா என்பதைத் தேர்வுசெய்யுங்கள்</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb index 1d3bd42..25a114e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_tr.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Chrome, Google Hesabınızla oturum açtığınızda şifrelerinizi kontrol edebilir.</translation> <translation id="1493827051843127077">Tüm cihazlarınızdaki sekmelerinizi, parolalarınızı ve ödeme bilgilerinizi senkronize etmek için Chrome'u varsayılan olarak ayarlayın</translation> <translation id="1504372625950710826">Chrome, güncellemeleri denetleyemedi. İnternet bağlantınızı kontrol etmeyi deneyin.</translation> +<translation id="1511320244449497906">Oturumunuz açık ve verilerinizi <ph name="DOMAIN" /> tarafından yönetilen bir hesapla senkronize ediyorsunuz. Buradaki yönetici artık söz konusu hesaba özel kullanıcı politikaları belirleyebilir ve bunlar da Chrome'un davranışını değiştirebilir.</translation> <translation id="1682483655351012182">Chrome Verilerimi Senkronize Et</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Kullanıcı istatistiklerini ve kilitlenme raporlarını Google'a göndererek Chrome'u geliştirmemize yardımcı olun</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome'dan en iyi şekilde yararlanmak için Google Hesabı'nızla Chrome'da oturum açın.</translation> <translation id="7855730255114109580">Google Chrome güncel durumda</translation> <translation id="8022947259858476807">Bağlantıları açmak, widget'lardan arama yapmak ve diğer uygulamalarda parolaları otomatik doldurmak için varsayılan olarak Chrome'u kullanın</translation> +<translation id="81358522153858150">Chrome artık yönetilen hesabınız için kullanıcı politikalarını destekliyor</translation> <translation id="8160472928944011082">Chrome güncellenemiyor</translation> <translation id="8263079278049777200">Bu sitede, Google Hesabınızda ve Chrome'da oturum açın. Senkronizasyonu daha sonra açabilirsiniz.</translation> <translation id="8357607116237445042">Chrome verilerinizi bu cihazdan temizlemeyi veya saklamayı seçin</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb index 41d0487..6edc709 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_uz.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">Google hisobingizga kirsangiz, Chrome parollaringizni tekshira oladi.</translation> <translation id="1493827051843127077">Chrome brauzerini varaqlar, parollar va toʻlov axborotlarini barcha qurilmalarga sinxronlovchi asosiy ilova sifatida belgilash</translation> <translation id="1504372625950710826">Chrome yangilanishlar chiqqanini tekshira olmadi. Internet aloqasini tekshiring.</translation> +<translation id="1511320244449497906">Siz tizimga kirdingiz va maʼlumotlaringizni <ph name="DOMAIN" /> boshqaradigan hisob bilan sinxronladingiz. Uning administratori endi Chrome funksiyasini oʻzgartirishi mumkin boʻlgan oʻsha hisobga tegishli foydalanuvchi siyosatlarini oʻrnatishi mumkin.</translation> <translation id="1682483655351012182">Chrome axborotini sinxronlash</translation> <translation id="1759842336958782510">Chrome</translation> <translation id="1812249337131447686">Foydalanish statistikasi va nosozlik hisobotlarini Googlega yuborish orqali Chrome brauzerini yaxshilashga yordam bering</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Chrome imkoniyatlaridan maksimal foydalanish uchun Chromega Google hisobingiz bilan kiring.</translation> <translation id="7855730255114109580">Google Chrome versiyasi yangi</translation> <translation id="8022947259858476807">Havolalarni ochish, vidjetlar orqali qidiruv, boshqa ilovalarda parollar avtomatik kitilishda Chrome birlamchi ilova sifatida ishlatilsin</translation> +<translation id="81358522153858150">Chrome endi boshqariladigan hisobingiz uchun foydalanuvchi siyosatlarini qoʻllab-quvvatlaydi</translation> <translation id="8160472928944011082">Chrome yangilanmadi</translation> <translation id="8263079278049777200">Bu sayt, Google va Chrome hisoblaringizga kiring. Sinxronizatsiyani keyinroq yoqish mumkin.</translation> <translation id="8357607116237445042">Chrome maʼlumotlari bu qurilmadan tozalanishi yoki saqlanib qolishini tanlang</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb index 59b7cc4f..b5f266d2 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb
@@ -7,6 +7,7 @@ <translation id="1479202195792305274">I-Chrome ingahlola amaphasiwedi akho uma ungena ngemvume nge-Akhawunti yakho ye-Google.</translation> <translation id="1493827051843127077">Setha i-Chrome njengesiphequluli esizenzakalelayo ukuze uvumelanise amathebhu akho, amaphasiwedi, nolwazi lokukhokha kuwo wonke amadivayisi akho</translation> <translation id="1504372625950710826">I-Chrome ayikwazanga ukuhlola izibuyekezo. Zama ukuhlola ukuxhumeka kwakho ku-inthanethi.</translation> +<translation id="1511320244449497906">Ungene ngemvume futhi uvumelanisa idatha yakho nge-akhawunti ephethwe yi-<ph name="DOMAIN" /> lapho umlawuli wayo engakwazi manje ukusetha izinqubomgomo zomsebenzisi eziqondene naleyo akhawunti ezingathinta indlela yokuziphatha ye-Chrome.</translation> <translation id="1682483655351012182">Vumelanisa idatha yakho ye-Chrome</translation> <translation id="1759842336958782510">I-Chrome</translation> <translation id="1812249337131447686">Siza ukuthuthukisa i-Chrome ngokuthumela izibalo zokusetshenziswa nemibiko yokusaphazeka ku-Google</translation> @@ -109,6 +110,7 @@ <translation id="7780154209050837198">Ukuze uthole okuningi kwe-Chrome, ngena ngemvume ku-Chrome nge-Google Account yakho.</translation> <translation id="7855730255114109580">I-Google Chrome isesikhathini samanje</translation> <translation id="8022947259858476807">Sebenzisa i-Chrome ngokuzenzekelayo ukuze uvule amalinki, ukusesha kumawijethi, kanye nokugcwalisa ngokuzenzakalelayo amaphasiwedi kwamanye ama-app</translation> +<translation id="81358522153858150">I-Chrome manje isekela izinqubomgomo zomsebenzisi ku-akhawunti yakho ephethwe</translation> <translation id="8160472928944011082">I-Chrome ayikwazi ukubuyekeza</translation> <translation id="8263079278049777200">Ngena ngemvume kuleli sayithi, i-Akhawunti yakho ye-Google, ne-Chrome. Ungavula ukuvumelanisa kamuva.</translation> <translation id="8357607116237445042">Khetha ukuthi usule yini idatha yakho ye-Chrome kusuka kule divayisi noma uyigcine</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index 21c27fa..5019b8a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">ካሜራ ሥራ ላይ ነው</translation> <translation id="2691653761409724435">ከመስመር ውጪ አይገኝም</translation> <translation id="2695507686909505111">ገጽ ተተርጉሟል</translation> +<translation id="2697526135132990015">ዘግተህ ውጣ እና ውሂብን አጥፋ</translation> <translation id="2700241355396984822">ፈቃዶችን ለማቀናበር አማራጮች</translation> <translation id="2702801445560668637">የንባብ ዝርዝር</translation> <translation id="2704491540504985681">የወረዱ</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">የተጣራ-ወደ-ውጭ-የሚላክ ውሂብ ለመላክ እባክዎ የኢሜይል መለያዎን በቅንብሮች መተግበሪያው ውስጥ ያዋቅሩ።</translation> <translation id="4124987746317609294">የጊዜ ወሰን</translation> <translation id="4133265950310064865">የላቀ ጥበቃ</translation> +<translation id="4148023517926189160">ይህ ድር ጣቢያ አንድ ፋይል አውርዶ ወደ የቀን መቁጠሪያዎ ማከል ይፈልጋል።</translation> <translation id="4152011295694446843">የእርስዎን እልባቶች እዚህ ያገኛሉ</translation> <translation id="4172051516777682613">ሁልጊዜ አሳይ</translation> <translation id="418156467088430727">የመስመር ውጭ ስሪቱን በአዲስ ትር ውስጥ ይመልከቱ</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">ወደ የቅርብ ጊዜ ትር ይመለሱ</translation> <translation id="6762812039470893796">ሁሉንም አትምረጥ</translation> <translation id="6780034285637185932">ዚፕ ኮድ</translation> +<translation id="6781260999953472352">ስምረት ይብራ?</translation> <translation id="6785453220513215166">የብልሽት ሪፖርት በመላክ ላይ...</translation> <translation id="6797885426782475225">የድምፅ ፍለጋ</translation> <translation id="6801927553864092214">በግል ለማሰስ ማንነት የማያሳውቅ ትር ይክፈቱ</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">በGoogle የቀረበ</translation> <translation id="7839985698273989086">ከመስመር ውጭ ገጽ</translation> <translation id="7840771868269352570">የመረጧቸው ንጥሎች ይወገዳሉ።</translation> +<translation id="784551991304901159">ይዘትን ለማየት ከምናሌው ሆነው አብራ የሚለውን ይምረጡ</translation> <translation id="7853202427316060426">እንቅስቃሴ</translation> <translation id="7856733331829174190">ማውረድ አልተቻለም</translation> <translation id="7859704718976024901">የአሰሳ ታሪክ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index b3b6ef55..8100964 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera se koristi</translation> <translation id="2691653761409724435">Nije dostupno van mreže</translation> <translation id="2695507686909505111">Stranica je prevedena</translation> +<translation id="2697526135132990015">Odjava i brisanje podataka</translation> <translation id="2700241355396984822">Opcije za postavljanje odobrenja</translation> <translation id="2702801445560668637">Lista za čitanje</translation> <translation id="2704491540504985681">Preuzimanja</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Za slanje podataka o neto izvozu, prvo konfigurirajte svoj račun e-pošte u aplikaciji Postavke.</translation> <translation id="4124987746317609294">Vremenski raspon</translation> <translation id="4133265950310064865">Poboljšana zaštita</translation> +<translation id="4148023517926189160">Web-lokacija želi preuzeti datoteku i dodati je na kalendar.</translation> <translation id="4152011295694446843">Oznake ćete pronaći ovdje</translation> <translation id="4172051516777682613">Uvijek prikaži</translation> <translation id="418156467088430727">Prikaži verziju van mreže u novoj kartici</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Vratite se na karticu Nedavno</translation> <translation id="6762812039470893796">Poništi sve odabire</translation> <translation id="6780034285637185932">Poštanski broj</translation> +<translation id="6781260999953472352">Uključiti sinkronizaciju?</translation> <translation id="6785453220513215166">Slanje izvještaja o padovima aplikacije...</translation> <translation id="6797885426782475225">Glasovno pretraživanje</translation> <translation id="6801927553864092214">Da privatno pregledate, otvorite anonimnu karticu</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Pruža Google</translation> <translation id="7839985698273989086">Offline stranica</translation> <translation id="7840771868269352570">Stavke koje ste odabrali će biti uklonjene.</translation> +<translation id="784551991304901159">Za pregled podataka na izborniku odaberite Uključi</translation> <translation id="7853202427316060426">Aktivnost</translation> <translation id="7856733331829174190">Preuzimanje nije uspjelo</translation> <translation id="7859704718976024901">Historija pregledanja</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb index b3d0d6b..31ccce32 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Mae'r camera'n cael ei ddefnyddio</translation> <translation id="2691653761409724435">Nid yw ar gael all-lein</translation> <translation id="2695507686909505111">Mae'r dudalen wedi'i chyfieithu</translation> +<translation id="2697526135132990015">Allgofnodi a Chlirio Data</translation> <translation id="2700241355396984822">Opsiynau ar gyfer Gosod Caniatadau</translation> <translation id="2702801445560668637">Rhestr Ddarllen</translation> <translation id="2704491540504985681">Lawrlwythiadau</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">I anfon data allforion net, ffurfweddwch eich cyfrif e-bost yn yr ap Gosodiadau.</translation> <translation id="4124987746317609294">Ystod Amser</translation> <translation id="4133265950310064865">Gwell Amddiffyniad</translation> +<translation id="4148023517926189160">Mae'r wefan hon am lawrlwytho ffeil a'i hychwanegu at eich calendr.</translation> <translation id="4152011295694446843">Cewch hyd i'ch nodau tudalen yma</translation> <translation id="4172051516777682613">Dangos bob tro</translation> <translation id="418156467088430727">Gweld Fersiwn All-lein mewn Tab Newydd</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Dychwelyd i Dab Diweddar</translation> <translation id="6762812039470893796">Dad-ddewis popeth</translation> <translation id="6780034285637185932">Cod ZIP</translation> +<translation id="6781260999953472352">Troi Cysoni Ymlaen?</translation> <translation id="6785453220513215166">Anfon adroddiad am y toriad...</translation> <translation id="6797885426782475225">Chwilio â Llais</translation> <translation id="6801927553864092214">I bori'n breifat, agorwch dab Anhysbys</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Darperir gan Google</translation> <translation id="7839985698273989086">Tudalen All-lein</translation> <translation id="7840771868269352570">Bydd yr eitemau rydych yn eu dewis yn cael eu dileu.</translation> +<translation id="784551991304901159">I weld cynnwys, dewiswch Troi Ymlaen o'r ddewislen</translation> <translation id="7853202427316060426">Gweithgarwch</translation> <translation id="7856733331829174190">Wedi methu â Lawrlwytho</translation> <translation id="7859704718976024901">Hanes Pori</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index 4d7ebaf..4d1961a6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera wird verwendet</translation> <translation id="2691653761409724435">Nicht offline verfügbar</translation> <translation id="2695507686909505111">Seite ist übersetzt</translation> +<translation id="2697526135132990015">Abmelden und Daten löschen</translation> <translation id="2700241355396984822">Optionen zum Festlegen von Berechtigungen</translation> <translation id="2702801445560668637">Leseliste</translation> <translation id="2704491540504985681">Downloads</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Zum Senden von Exportdaten E-Mail-Konto in App "Einstellungen" konfigurieren</translation> <translation id="4124987746317609294">Zeitraum</translation> <translation id="4133265950310064865">Erweitertes Safe Browsing</translation> +<translation id="4148023517926189160">Diese Website möchte eine Datei herunterladen und zu deinem Kalender hinzufügen.</translation> <translation id="4152011295694446843">Hier werden deine Lesezeichen angezeigt</translation> <translation id="4172051516777682613">Immer anzeigen</translation> <translation id="418156467088430727">Offlineversion in einem neuen Tab ansehen</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Zurück zum Tab „Zuletzt geöffnet“</translation> <translation id="6762812039470893796">Auswahl für alle aufheben</translation> <translation id="6780034285637185932">Postleitzahl</translation> +<translation id="6781260999953472352">Synchronisierung aktivieren?</translation> <translation id="6785453220513215166">Absturzbericht wird gesendet…</translation> <translation id="6797885426782475225">Sprachsuche</translation> <translation id="6801927553864092214">Wenn du privat surfen möchtest, öffne einen Inkognitotab</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Von Google bereitgestellt</translation> <translation id="7839985698273989086">Offlineseite</translation> <translation id="7840771868269352570">Die ausgewählten Elemente werden entfernt.</translation> +<translation id="784551991304901159">Inhalte siehst du, wenn du im Menü „Aktivieren“ auswählst</translation> <translation id="7853202427316060426">Aktivität</translation> <translation id="7856733331829174190">Fehler beim Download</translation> <translation id="7859704718976024901">Browserverlauf</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index 58eb25d..c8f5a8d9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Η κάμερα χρησιμοποιείται</translation> <translation id="2691653761409724435">Μη διαθέσιμο εκτός σύνδεσης</translation> <translation id="2695507686909505111">Μεταφρασμένη σελίδα</translation> +<translation id="2697526135132990015">Αποσύνδεση και διαγραφή δεδομένων</translation> <translation id="2700241355396984822">Επιλογές για τον ορισμό αδειών</translation> <translation id="2702801445560668637">Λίστα ανάγνωσης</translation> <translation id="2704491540504985681">Λήψεις</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Για αποστ. δεδομ.εξαγ.δικτ.,διαμορφ. το email σας στην εφ. "Ρυθμίσεις"</translation> <translation id="4124987746317609294">Χρονικό εύρος</translation> <translation id="4133265950310064865">Βελτιωμένη Ασφάλεια</translation> +<translation id="4148023517926189160">Αυτός ο ιστότοπος θέλει να κατεβάσει ένα αρχείο και να το προσθέσει στο ημερολόγιό σας.</translation> <translation id="4152011295694446843">Εδώ θα βρείτε τους σελιδοδείκτες σας</translation> <translation id="4172051516777682613">Εμφάνιση πάντα</translation> <translation id="418156467088430727">Προβολή έκδοσης εκτός σύνδεσης σε νέα καρτέλα</translation> @@ -693,6 +695,7 @@ <translation id="6760509555861141183">Επιστροφή στην καρτέλα Πρόσφατα</translation> <translation id="6762812039470893796">Αποεπιλογή όλων</translation> <translation id="6780034285637185932">Ταχυδρομικός κώδικας</translation> +<translation id="6781260999953472352">Ενεργοποίηση συγχρονισμού;</translation> <translation id="6785453220513215166">Αποστολή αναφοράς σφάλματος…</translation> <translation id="6797885426782475225">Φωνητική αναζήτηση</translation> <translation id="6801927553864092214">Για να περιηγηθείτε ιδιωτικά, ανοίξτε μια καρτέλα ανώνυμης περιήγησης.</translation> @@ -805,6 +808,7 @@ <translation id="7807060072011926525">Παρέχεται από την Google</translation> <translation id="7839985698273989086">Σελίδα εκτός σύνδεσης</translation> <translation id="7840771868269352570">Τα στοιχεία που επιλέξατε θα καταργηθούν.</translation> +<translation id="784551991304901159">Για εμφάνιση περιεχομένου, από το μενού, επιλέξτε Ενεργοποίηση</translation> <translation id="7853202427316060426">Δραστηριότητα</translation> <translation id="7856733331829174190">Δεν ήταν δυνατή η λήψη</translation> <translation id="7859704718976024901">Ιστορικό περιήγησης</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index 7d109b2..0917f9e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -47,6 +47,7 @@ <translation id="1283524564873030414">Last 24 hours</translation> <translation id="1285320974508926690">Never translate this site</translation> <translation id="1291506870746876680"><ph name="BEGIN_BOLD" />'<ph name="SITE_NAME" />'<ph name="END_BOLD" /> permissions will reset to off when you leave this site.</translation> +<translation id="1312721752506309252">Enhanced protection is on</translation> <translation id="1321993286294231467">Error saving image.</translation> <translation id="1322735045095424339">Your organisation requires Incognito mode</translation> <translation id="1323735185997015385">Delete</translation> @@ -825,6 +826,7 @@ <translation id="7966516440812255683">Sites can use cookies to improve your browsing experience, for example, to keep you signed in or to remember items in your shopping basket. Sites can use cookies to see your browsing activity across different sites, for example, to personalise ads.</translation> +<translation id="7966904497916178308">Standard protection is on</translation> <translation id="7971521879845308059">Block Pop-ups</translation> <translation id="797413074872316787">To sync and personalise across devices, turn on sync.</translation> <translation id="7978018860671536736">3. Tap auto-fill passwords</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb index a8f1ac75..596fea4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kaamera on kasutusel</translation> <translation id="2691653761409724435">Pole võrguühenduseta saadaval</translation> <translation id="2695507686909505111">Leht tõlgitud</translation> +<translation id="2697526135132990015">Logi välja ja kustuta andmed</translation> <translation id="2700241355396984822">Lubade määramise valikud</translation> <translation id="2702801445560668637">Lugemisloend</translation> <translation id="2704491540504985681">Allalaadimised</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Netiekspordi andmete saatmiseks seadistage meilikonto rakenduses Seaded.</translation> <translation id="4124987746317609294">Ajavahemik</translation> <translation id="4133265950310064865">Täiustatud kaitse</translation> +<translation id="4148023517926189160">See veebisait soovib faili alla laadida ja lisada selle teie kalendrisse.</translation> <translation id="4152011295694446843">Oma järjehoidjad leiate siit</translation> <translation id="4172051516777682613">Kuva alati</translation> <translation id="418156467088430727">Kuva uuel vahelehel võrguühenduseta versioon</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Naaske eelmisele vahelehele</translation> <translation id="6762812039470893796">Tühista kõik valikud</translation> <translation id="6780034285637185932">Sihtnumber</translation> +<translation id="6781260999953472352">Kas lülitada sünkroonimine sisse?</translation> <translation id="6785453220513215166">Krahhiaruande saatmine ...</translation> <translation id="6797885426782475225">Häälotsing</translation> <translation id="6801927553864092214">Privaatselt sirvimiseks avage inkognito vaheleht</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Pakub Google</translation> <translation id="7839985698273989086">Võrguühenduseta leht</translation> <translation id="7840771868269352570">Teie valitud üksused eemaldatakse.</translation> +<translation id="784551991304901159">Sisu nägemiseks tehke menüüs valik Lülita sisse</translation> <translation id="7853202427316060426">Tegevus</translation> <translation id="7856733331829174190">Ei saanud alla laadida</translation> <translation id="7859704718976024901">Sirvimisajalugu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index b273299..df2b1dfa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">دوربین درحال استفاده است</translation> <translation id="2691653761409724435">بهصورت آفلاین در دسترس نیست</translation> <translation id="2695507686909505111">ترجمه صفحه</translation> +<translation id="2697526135132990015">خروج از سیستم و پاک کردن دادهها</translation> <translation id="2700241355396984822">گزینههای تنظیم اجازهها</translation> <translation id="2702801445560668637">فهرست خواندن</translation> <translation id="2704491540504985681">بارگیریها</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">برای ارسال دادههای صادراتی شبکه، لطفاً حساب ایمیلتان را در برنامه تنظیمات پیکربندی کنید.</translation> <translation id="4124987746317609294">محدوده زمانی</translation> <translation id="4133265950310064865">محافظت بهبودیافته</translation> +<translation id="4148023517926189160">این وبسایت میخواهد فایلی را بارگیری کند و به تقویمتان اضافه کند.</translation> <translation id="4152011295694446843">نشانکها را اینجا خواهید دید</translation> <translation id="4172051516777682613">همیشه نشان داده شود</translation> <translation id="418156467088430727">مشاهده نسخه آفلاین در برگه جدید</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">برگشتن به «برگه اخیر»</translation> <translation id="6762812039470893796">لغو انتخاب همه</translation> <translation id="6780034285637185932">کد پستی</translation> +<translation id="6781260999953472352">«همگامسازی» روشن شود؟</translation> <translation id="6785453220513215166">در حال ارسال گزارش خرابی...</translation> <translation id="6797885426782475225">جستجوی گفتاری</translation> <translation id="6801927553864092214">برای مرور خصوصی، «برگه ناشناس» باز کنید</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">ارائه از Google</translation> <translation id="7839985698273989086">صفحه آفلاین</translation> <translation id="7840771868269352570">موارد انتخابشده برداشته خواهد شد.</translation> +<translation id="784551991304901159">برای دیدن محتوا، «روشن کردن» را از منو انتخاب کنید</translation> <translation id="7853202427316060426">فعالیت</translation> <translation id="7856733331829174190">بارگیری نشد</translation> <translation id="7859704718976024901">سابقه مرور</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index cf24729..f795cbb8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Ginagamit ang camera</translation> <translation id="2691653761409724435">Hindi available offline</translation> <translation id="2695507686909505111">Naisalin na ang Page</translation> +<translation id="2697526135132990015">Mag-sign Out at I-clear ang Data</translation> <translation id="2700241355396984822">Mga opsyon para Magtakda ng Mga Pahintulot</translation> <translation id="2702801445560668637">Listahan ng Babasahin</translation> <translation id="2704491540504985681">Mga Download</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Upang makapagpadala ng net-export data, paki-configure ang iyong email account sa app ng Mga Setting.</translation> <translation id="4124987746317609294">Sakop na Oras</translation> <translation id="4133265950310064865">Enhanced Protection</translation> +<translation id="4148023517926189160">Gusto ng website na ito na mag-download ng file at idagdag ito sa iyong kalendaryo.</translation> <translation id="4152011295694446843">Makikita mo rito ang iyong mga bookmark</translation> <translation id="4172051516777682613">Palaging ipakita</translation> <translation id="418156467088430727">Tingnan ang Offline na Bersyon sa Bagong Tab</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Bumalik sa Kamakailang Tab</translation> <translation id="6762812039470893796">I-deselect Lahat</translation> <translation id="6780034285637185932">Zip Code</translation> +<translation id="6781260999953472352">I-on ang Pag-sync?</translation> <translation id="6785453220513215166">Nagpapadala ng ulat sa pag-crash...</translation> <translation id="6797885426782475225">Paghahanap Gamit ang Boses</translation> <translation id="6801927553864092214">Para mag-browse nang pribado, magbukas ng tab na Incognito</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Ibinibigay ng Google</translation> <translation id="7839985698273989086">Offline na Page</translation> <translation id="7840771868269352570">Maaalis ang mga pinili mong item.</translation> +<translation id="784551991304901159">Para makakita ng content, piliin ang I-on mula sa menu</translation> <translation id="7853202427316060426">Aktibidad</translation> <translation id="7856733331829174190">Hindi Ma-download</translation> <translation id="7859704718976024901">History ng Pag-browse</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index dc00f8f..ce16231 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">कैमरे का उपयोग हो रहा है</translation> <translation id="2691653761409724435">ऑफ़लाइन उपलब्ध नहीं</translation> <translation id="2695507686909505111">पेज का अनुवाद हो गया</translation> +<translation id="2697526135132990015">साइन आउट करें और डेटा मिटाएं</translation> <translation id="2700241355396984822">अनुमतियां सेट करने के विकल्प</translation> <translation id="2702801445560668637">रीडिंग लिस्ट</translation> <translation id="2704491540504985681">डाउनलोड</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">कुल निर्यात डेटा भेजने के लिए, कृपया सेटिंग ऐप्लिकेशन में अपना ईमेल खाता कॉन्फ़िगर करें.</translation> <translation id="4124987746317609294">समय सीमा</translation> <translation id="4133265950310064865">बेहतर सुरक्षा मोड</translation> +<translation id="4148023517926189160">यह वेबसाइट किसी फ़ाइल को डाउनलोड करके, उसे आपके कैलेंडर में जोड़ना चाहती है.</translation> <translation id="4152011295694446843">आपको अपने बुकमार्क यहां मिलेंगे</translation> <translation id="4172051516777682613">हमेशा दिखाएं</translation> <translation id="418156467088430727">ऑफ़लाइन वर्शन को नए टैब में देखें</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">हाल ही में खोले गए टैब पर वापस जाएं</translation> <translation id="6762812039470893796">सभी से चुने हुए का निशान हटाएं</translation> <translation id="6780034285637185932">ज़िप कोड</translation> +<translation id="6781260999953472352">'सिंक करें' चालू करें?</translation> <translation id="6785453220513215166">खराबी रिपोर्ट भेजी जा रही है...</translation> <translation id="6797885426782475225">बोलकर खोजें</translation> <translation id="6801927553864092214">निजी रूप से ब्राउज़ करने के लिए, गुप्त टैब खोलें</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Google से मिला फ़ीड</translation> <translation id="7839985698273989086">ऑफ़लाइन पेज</translation> <translation id="7840771868269352570">आपके चुने हुए आइटम हटा दिए जाएंगे.</translation> +<translation id="784551991304901159">कॉन्टेंट देखने के लिए, मेन्यू में से 'चालू करें' विकल्प चुनें</translation> <translation id="7853202427316060426">गतिविधि</translation> <translation id="7856733331829174190">डाउनलोड नहीं की जा सकी</translation> <translation id="7859704718976024901">ब्राउज़िंग इतिहास</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index bb5ce31..2ddab4c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Fotoaparat je aktivan</translation> <translation id="2691653761409724435">Nije dostupno offline</translation> <translation id="2695507686909505111">Stranica je prevedena</translation> +<translation id="2697526135132990015">Odjava i brisanje podataka</translation> <translation id="2700241355396984822">Opcije postavljanja dopuštenja</translation> <translation id="2702801445560668637">Popis za čitanje</translation> <translation id="2704491540504985681">Preuzimanja</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Za slanje neto izvezenih datoteka konfigurirajte svoj račun e-pošte u aplikaciji Postavke.</translation> <translation id="4124987746317609294">Vremenski raspon</translation> <translation id="4133265950310064865">Poboljšana zaštita</translation> +<translation id="4148023517926189160">Web-lokacija želi preuzeti datoteku i dodati je na kalendar.</translation> <translation id="4152011295694446843">Ovdje ćete pronaći svoje oznake</translation> <translation id="4172051516777682613">Uvijek prikaži</translation> <translation id="418156467088430727">Prikaži offline verziju na novoj kartici</translation> @@ -450,6 +452,7 @@ <translation id="4840495572919996524">Vaše oznake, povijest, zaporke i druge stavke više se neće sinkronizirati s vašim Google računom.</translation> <translation id="4844899002472726590">Pregled i uređivanje tema koje vas zanimaju</translation> <translation id="4854345657858711387">Postavite šifru zaporke</translation> +<translation id="4858786880085262208">Nadogradite na HTTPS, kad je moguće. Sigurne web-lokacije mogu ugraditi sadržaj koji nije siguran.</translation> <translation id="4860895144060829044">Poziv</translation> <translation id="4872323082491632254">Provjera zaporki</translation> <translation id="4881695831933465202">Otvori</translation> @@ -691,6 +694,7 @@ <translation id="6760509555861141183">Natrag na karticu Nedavno</translation> <translation id="6762812039470893796">Poništi sve</translation> <translation id="6780034285637185932">Poštanski broj</translation> +<translation id="6781260999953472352">Uključiti sinkronizaciju?</translation> <translation id="6785453220513215166">Slanje izvješća o rušenju programa...</translation> <translation id="6797885426782475225">Glasovno pretraživanje</translation> <translation id="6801927553864092214">Da biste pregledavali privatno, otvorite anonimnu karticu</translation> @@ -798,10 +802,12 @@ <translation id="7781069478569868053">Web-stranica nove kartice</translation> <translation id="7781829728241885113">Danas</translation> <translation id="778855399387580014">Pokrenite pretraživanje u novoj kartici Chromea.</translation> +<translation id="7790892308048519147">Pokušajte koristiti sigurne veze</translation> <translation id="7791543448312431591">Dodavanje</translation> <translation id="7807060072011926525">Omogućuje Google</translation> <translation id="7839985698273989086">Izvanmrežna stranica</translation> <translation id="7840771868269352570">Odabrane će se stavke ukloniti.</translation> +<translation id="784551991304901159">Za pregled podataka na izborniku odaberite Uključi</translation> <translation id="7853202427316060426">Aktivnost</translation> <translation id="7856733331829174190">Preuzimanje nije moguće</translation> <translation id="7859704718976024901">Povijest pregledavanja</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index 7f54223..6868b1b3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">A kamera épp használatban van</translation> <translation id="2691653761409724435">Nem érhető el offline</translation> <translation id="2695507686909505111">Oldal lefordítva</translation> +<translation id="2697526135132990015">Kijelentkezés és adatok törlése</translation> <translation id="2700241355396984822">Az engedélyek beállítására vonatkozó lehetőségek</translation> <translation id="2702801445560668637">Olvasási lista</translation> <translation id="2704491540504985681">Letöltések</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Net-export adatok küldéséhez, kérjük, konfigurálja e-mail fiókját a Beállítások alkalmazásban.</translation> <translation id="4124987746317609294">Időintervallum</translation> <translation id="4133265950310064865">Speciális védelem</translation> +<translation id="4148023517926189160">Ez a webhely egy fájlt szeretne letölteni és hozzáadni az Ön naptárához.</translation> <translation id="4152011295694446843">Itt láthatja majd a könyvjelzőit</translation> <translation id="4172051516777682613">Mindig mutassa</translation> <translation id="418156467088430727">Offline verzió megtekintése új lapon</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Vissza a legutóbbi lapra</translation> <translation id="6762812039470893796">Összes kijelölés törlése</translation> <translation id="6780034285637185932">Irányítószám</translation> +<translation id="6781260999953472352">Bekapcsolja a szinkronizálást?</translation> <translation id="6785453220513215166">Hibajelentés küldése…</translation> <translation id="6797885426782475225">Hangalapú keresés</translation> <translation id="6801927553864092214">Privát böngészéshez nyisson inkognitó lapot</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">A Google biztosítja</translation> <translation id="7839985698273989086">Offline oldal</translation> <translation id="7840771868269352570">A kiválasztott elemek törlődnek.</translation> +<translation id="784551991304901159">Tartalmak megjelenítéséhez válassza a Bekapcsolás lehetőséget a menüben</translation> <translation id="7853202427316060426">Aktivitás</translation> <translation id="7856733331829174190">Nem sikerült letölteni</translation> <translation id="7859704718976024901">Böngészési előzmények</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index 0a6772c..06c1346 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">ಕ್ಯಾಮರಾ ಬಳಕೆಯಲ್ಲಿದೆ</translation> <translation id="2691653761409724435">ಆಫ್ಲೈನ್ ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="2695507686909505111">ಪುಟವನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ</translation> +<translation id="2697526135132990015">ಸೈನ್ ಔಟ್ ಮಾಡಿ ಮತ್ತು ಡೇಟಾ ತೆರವುಗೊಳಿಸಿ</translation> <translation id="2700241355396984822">ಅನುಮತಿಗಳನ್ನು ಸೆಟ್ ಮಾಡಲು ಆಯ್ಕೆಗಳು</translation> <translation id="2702801445560668637">ಓದುವ ಪಟ್ಟಿ</translation> <translation id="2704491540504985681">ಡೌನ್ಲೋಡ್ಗಳು</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">ಒಟ್ಟು ರಫ್ತು ಡೇಟಾ ಕಳುಹಿಸಲು, ದಯವಿಟ್ಟು ನಿಮ್ಮ ಇಮೇಲ್ ಖಾತೆಯನ್ನು ಸೆಟ್ಟಿಂಗ್ಗಳ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.</translation> <translation id="4124987746317609294">ಸಮಯ ವ್ಯಾಪ್ತಿ</translation> <translation id="4133265950310064865">ವರ್ಧಿತ ಸುರಕ್ಷತೆ</translation> +<translation id="4148023517926189160">ಈ ವೆಬ್ಸೈಟ್ ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ಗೆ ಸೇರಿಸಲು ಬಯಸುತ್ತದೆ.</translation> <translation id="4152011295694446843">ನಿಮ್ಮ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು</translation> <translation id="4172051516777682613">ಯಾವಾಗಲೂ ತೋರಿಸು</translation> <translation id="418156467088430727">ಆಫ್ಲೈನ್ ಆವೃತ್ತಿಯನ್ನು ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">ಇತ್ತೀಚಿನ ಟ್ಯಾಬ್ಗೆ ಹಿಂದಿರುಗಿ</translation> <translation id="6762812039470893796">ಎಲ್ಲಾ ಆಯ್ಕೆಯನ್ನು ರದ್ದುಮಾಡಿ</translation> <translation id="6780034285637185932">ಪಿನ್ ಕೋಡ್</translation> +<translation id="6781260999953472352">ಸಿಂಕ್ ಆನ್ ಮಾಡುವುದೇ?</translation> <translation id="6785453220513215166">ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ ...</translation> <translation id="6797885426782475225">ಧ್ವನಿ ಹುಡುಕಾಟ</translation> <translation id="6801927553864092214">ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಲು, ಅಜ್ಞಾತ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Google ಮೂಲಕ ಒದಗಿಸಲಾಗಿದೆ</translation> <translation id="7839985698273989086">ಆಫ್ಲೈನ್ ಪುಟ</translation> <translation id="7840771868269352570">ನೀವು ಆಯ್ಕೆ ಮಾಡಿದ ಐಟಂಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation> +<translation id="784551991304901159">ವಿಷಯವನ್ನು ನೋಡಲು, ಮೆನುವಿನಿಂದ 'ಆನ್ ಮಾಡಿ' ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="7853202427316060426">ಚಟುವಟಿಕೆ</translation> <translation id="7856733331829174190">ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation> <translation id="7859704718976024901">ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index b2826bfe..ed9da7e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">ກ້ອງຖ່າຍຮູບຖືກໃຊ້ຢູ່</translation> <translation id="2691653761409724435">ບໍ່ສາມາດໃຊ້ໄດ້ແບບອອບລາຍ</translation> <translation id="2695507686909505111">ແປໜ້າແລ້ວ</translation> +<translation id="2697526135132990015">ອອກຈາກລະບົບ ແລະ ລຶບລ້າງຂໍ້ມູນ</translation> <translation id="2700241355396984822">ຕົວເລືອກເພື່ອຕັ້ງການອະນຸຍາດ</translation> <translation id="2702801445560668637">ລາຍການທີ່ຈະອ່ານ</translation> <translation id="2704491540504985681">ດາວໂຫລດ</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">ເພື່ອສົ່ງຂໍ້ມູນສົ່ງອອກເຄືອຂ່າຍ, ກະລຸນາປັບຕັ້ງຄ່າບັນຊີອີເມວຂອງທ່ານຢູ່ໃນແອັບການຕັ້ງຄ່າ.</translation> <translation id="4124987746317609294">ຂອບເຂດເວລາ</translation> <translation id="4133265950310064865">ການປົກປ້ອງຂັ້ນສູງ</translation> +<translation id="4148023517926189160">ເວັບໄຊນີ້ຕ້ອງການດາວໂຫຼດໄຟລ໌ ແລະ ເພີ່ມມັນໃສ່ປະຕິທິນຂອງທ່ານ.</translation> <translation id="4152011295694446843">ທ່ານຈະເຫັນບຸກມາກຂອງທ່ານຢູ່ບ່ອນນີ້</translation> <translation id="4172051516777682613">ສະແດງຢູ່ສະເຫມີ</translation> <translation id="418156467088430727">ເບິ່ງເວີຊັນອອບລາຍຢູ່ໃນແຖບໃໝ່</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">ກັບໄປຫາແຖບຫຼ້າສຸດ</translation> <translation id="6762812039470893796">ເຊົາເລືອກທັງໝົດ</translation> <translation id="6780034285637185932">ລະຫັດໄປສະນີ</translation> +<translation id="6781260999953472352">ເປີດໃຊ້ການຊິ້ງຂໍ້ມູນບໍ?</translation> <translation id="6785453220513215166">ກຳລັງສົ່ງລາຍງານການຂັດຂ້ອງ...</translation> <translation id="6797885426782475225">ການຊອກຫາດ້ວຍສຽງ</translation> <translation id="6801927553864092214">ເພື່ອທ່ອງເວັບແບບສ່ວນຕົວ, ກະລຸນາເປີດແຖບບໍ່ເປີດເຜີຍຕົວຕົນ</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">ສະໜອງໃຫ້ໂດຍ Google</translation> <translation id="7839985698273989086">ໜ້າອອບລາຍ</translation> <translation id="7840771868269352570">ລາຍການທີ່ທ່ານເລືອກຈະຖືກລຶບອອກ.</translation> +<translation id="784551991304901159">ເພື່ອເບິ່ງເນື້ອຫາ, ໃຫ້ເລືອກເປີດໃຊ້ຈາກເມນູ</translation> <translation id="7853202427316060426">ການເຄື່ອນໄຫວ</translation> <translation id="7856733331829174190">ບໍ່ສາມາດດາວໂຫລດໄດ້</translation> <translation id="7859704718976024901">ປະຫວັດການທ່ອງເວັບ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb index fd5f953..0b9d7fd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Camera wordt gebruikt</translation> <translation id="2691653761409724435">Niet offline beschikbaar</translation> <translation id="2695507686909505111">Pagina vertaald</translation> +<translation id="2697526135132990015">Uitloggen en gegevens wissen</translation> <translation id="2700241355396984822">Opties om rechten in te stellen</translation> <translation id="2702801445560668637">Leeslijst</translation> <translation id="2704491540504985681">Downloads</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Als je netto-exportgegevens wilt verzenden, configureer je je e-mailaccount in de app Instellingen.</translation> <translation id="4124987746317609294">Periode</translation> <translation id="4133265950310064865">Geoptimaliseerde beveiliging</translation> +<translation id="4148023517926189160">Deze website wil een bestand downloaden en toevoegen aan je agenda.</translation> <translation id="4152011295694446843">Hier vind je je bookmarks</translation> <translation id="4172051516777682613">Altijd bekijken</translation> <translation id="418156467088430727">Offline versie bekijken op nieuw tabblad</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Terug naar recent tabblad</translation> <translation id="6762812039470893796">Alles deselecteren</translation> <translation id="6780034285637185932">Postcode</translation> +<translation id="6781260999953472352">Synchronisatie aanzetten?</translation> <translation id="6785453220513215166">Crashrapport verzenden...</translation> <translation id="6797885426782475225">Gesproken zoekopdracht</translation> <translation id="6801927553864092214">Open een incognitotabblad om privé te browsen</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Geleverd door Google</translation> <translation id="7839985698273989086">Offline pagina</translation> <translation id="7840771868269352570">De geselecteerde items worden verwijderd.</translation> +<translation id="784551991304901159">Als je content wilt zien, selecteer je Aanzetten in het menu</translation> <translation id="7853202427316060426">Activiteit</translation> <translation id="7856733331829174190">Kan niet downloaden</translation> <translation id="7859704718976024901">Browsegeschiedenis</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index 0515214..0f54e82 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">ਕੈਮਰਾ ਵਰਤੋਂ ਵਿੱਚ ਹੈ</translation> <translation id="2691653761409724435">ਆਫ਼ਲਾਈਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</translation> <translation id="2695507686909505111">ਪੰਨੇ ਦਾ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ</translation> +<translation id="2697526135132990015">ਸਾਈਨ-ਆਊਟ ਕਰੋ ਅਤੇ ਡਾਟਾ ਕਲੀਅਰ ਕਰੋ</translation> <translation id="2700241355396984822">ਇਜਾਜ਼ਤਾਂ ਸੈੱਟ ਕਰਨ ਦੇ ਵਿਕਲਪ</translation> <translation id="2702801445560668637">ਵਾਚਣ ਸੂਚੀ</translation> <translation id="2704491540504985681">ਡਾਊਨਲੋਡ</translation> @@ -362,6 +363,7 @@ <translation id="4121993058175073134">ਨੈੱਟ-ਨਿਰਯਾਤ ਡਾਟਾ ਭੇਜਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਸੈਟਿੰਗਾਂ ਐਪ ਵਿੱਚ ਆਪਣਾ ਈਮੇਲ ਖਾਤਾ ਸੰਰੂਪਿਤ ਕਰੋ।</translation> <translation id="4124987746317609294">ਸਮਾਂ ਰੇਂਜ</translation> <translation id="4133265950310064865">ਵਿਸਤ੍ਰਿਤ ਸੁਰੱਖਿਆ</translation> +<translation id="4148023517926189160">ਇਹ ਵੈੱਬਸਾਈਟ ਕੋਈ ਫ਼ਾਈਲ ਡਾਊਨਲੋਡ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੀ ਹੈ।</translation> <translation id="4152011295694446843">ਤੁਹਾਨੂੰ ਆਪਣੇ ਬੁੱਕਮਾਰਕ ਇੱਥੇ ਮਿਲਣਗੇ</translation> <translation id="4172051516777682613">ਹਮੇਸ਼ਾਂ ਦਿਖਾਓ</translation> <translation id="418156467088430727">ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਆਫ਼ਲਾਈਨ ਵਰਜਨ ਦੇਖੋ</translation> @@ -690,6 +692,7 @@ <translation id="6760509555861141183">ਹਾਲੀਆ ਟੈਬ 'ਤੇ ਵਾਪਸ ਜਾਓ</translation> <translation id="6762812039470893796">ਸਭ ਅਣ-ਚੁਣਿਆ ਕਰੋ</translation> <translation id="6780034285637185932">ਜ਼ਿਪ ਕੋਡ</translation> +<translation id="6781260999953472352">ਕੀ ਸਿੰਕ ਚਾਲੂ ਕਰਨਾ ਹੈ?</translation> <translation id="6785453220513215166">ਕ੍ਰੈਸ਼ ਰਿਪੋਰਟ ਭੇਜੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="6797885426782475225">ਅਵਾਜ਼ੀ ਖੋਜ</translation> <translation id="6801927553864092214">ਨਿੱਜੀ ਤੌਰ 'ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਲਈ, ਕੋਈ ਇਨਕੋਗਨਿਟੋ ਟੈਬ ਖੋਲ੍ਹੋ</translation> @@ -802,6 +805,7 @@ <translation id="7807060072011926525">Google ਵੱਲੋਂ ਮੁਹੱਈਆ ਕਰਵਾਈ ਗਈ</translation> <translation id="7839985698273989086">ਆਫ਼ਲਾਈਨ ਪੰਨਾ</translation> <translation id="7840771868269352570">ਤੁਹਾਡੇ ਵੱਲੋਂ ਚੁਣੀਆਂ ਗਈਆਂ ਆਈਟਮਾਂ ਹਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।</translation> +<translation id="784551991304901159">ਸਮੱਗਰੀ ਦੇਖਣ ਲਈ, ਮੀਨੂ ਵਿੱਚੋਂ 'ਚਾਲੂ ਕਰੋ' ਨੂੰ ਚੁਣੋ</translation> <translation id="7853202427316060426">ਸਰਗਰਮੀ</translation> <translation id="7856733331829174190">ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation> <translation id="7859704718976024901">ਬ੍ਰਾਉਜ਼ਿੰਗ ਇਤਿਹਾਸ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index 9e151109..f1bc444 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">A câmara está a ser utilizada</translation> <translation id="2691653761409724435">Não disponível offline</translation> <translation id="2695507686909505111">Página traduzida</translation> +<translation id="2697526135132990015">Terminar sessão e limpar dados</translation> <translation id="2700241355396984822">Opções para definir autorizações</translation> <translation id="2702801445560668637">Lista de leitura</translation> <translation id="2704491540504985681">Transferências</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">P/enviar dados exp. da Int., config. a conta de email na ap. Definiç.</translation> <translation id="4124987746317609294">Intervalo de tempo</translation> <translation id="4133265950310064865">Proteção melhorada</translation> +<translation id="4148023517926189160">Este Website quer transferir um ficheiro e adicioná-lo ao seu calendário.</translation> <translation id="4152011295694446843">Os seus marcadores serão apresentados aqui</translation> <translation id="4172051516777682613">Mostrar sempre</translation> <translation id="418156467088430727">Ver versão offline num novo separador</translation> @@ -450,6 +452,7 @@ <translation id="4840495572919996524">Os seus marcadores, o histórico, as palavras-passe, entre outros, deixam de ser sincronizados com a sua Conta Google.</translation> <translation id="4844899002472726590">Veja e edite tópicos nos quais tem interesse</translation> <translation id="4854345657858711387">Definir um código secreto</translation> +<translation id="4858786880085262208">Sempre que possível, atualize para HTTPS. Os sites seguros podem incorporar conteúdo que não é seguro.</translation> <translation id="4860895144060829044">Telefonar</translation> <translation id="4872323082491632254">Verifique palavras-passe</translation> <translation id="4881695831933465202">Abrir</translation> @@ -691,6 +694,7 @@ <translation id="6760509555861141183">Volte ao separador Recentes</translation> <translation id="6762812039470893796">Desmarcar tudo</translation> <translation id="6780034285637185932">Código postal</translation> +<translation id="6781260999953472352">Ativar a sincronização?</translation> <translation id="6785453220513215166">A enviar relatório de falha...</translation> <translation id="6797885426782475225">Pesquisa por voz</translation> <translation id="6801927553864092214">Para navegar em privado, abra um separador de navegação anónima</translation> @@ -798,10 +802,12 @@ <translation id="7781069478569868053">Página Novo separador</translation> <translation id="7781829728241885113">Ontem</translation> <translation id="778855399387580014">Inicie uma pesquisa no novo separador do Chrome.</translation> +<translation id="7790892308048519147">Tentar usar ligações seguras</translation> <translation id="7791543448312431591">Adicionar</translation> <translation id="7807060072011926525">Disponibilizados pela Google</translation> <translation id="7839985698273989086">Página offline</translation> <translation id="7840771868269352570">Os itens selecionados serão removidos.</translation> +<translation id="784551991304901159">Para ver o conteúdo, selecione Ativar no menu</translation> <translation id="7853202427316060426">Atividade</translation> <translation id="7856733331829174190">Impossível transferir</translation> <translation id="7859704718976024901">Histórico de navegação</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index 7a1b478..369115f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -452,6 +452,7 @@ <translation id="4840495572919996524">Marcajele, istoricul, parolele și alte setări nu vor mai fi sincronizate cu Contul Google.</translation> <translation id="4844899002472726590">Vezi și editează subiectele care te interesează</translation> <translation id="4854345657858711387">Setează o parolă</translation> +<translation id="4858786880085262208">Fă upgrade la HTTPS, dacă este posibil. Site-urile securizate pot încorpora conținut nesigur.</translation> <translation id="4860895144060829044">Apelează</translation> <translation id="4872323082491632254">Verifică parolele</translation> <translation id="4881695831933465202">Deschide</translation> @@ -801,6 +802,7 @@ <translation id="7781069478569868053">Pagina Filă nouă</translation> <translation id="7781829728241885113">Ieri</translation> <translation id="778855399387580014">Începe o căutare într-o filă Chrome nouă.</translation> +<translation id="7790892308048519147">Încearcă să folosești conexiuni securizate</translation> <translation id="7791543448312431591">Adaugă</translation> <translation id="7807060072011926525">Oferit de Google</translation> <translation id="7839985698273989086">Pagină offline</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 05c0181..2c4af99 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -452,6 +452,7 @@ <translation id="4840495572919996524">Vaši zaznamki, zgodovina, gesla in drugo ne bodo več sinhronizirani z Google Računom.</translation> <translation id="4844899002472726590">Ogled in urejanje tem, ki vas zanimajo</translation> <translation id="4854345657858711387">Nastavitev gesla</translation> +<translation id="4858786880085262208">Če je mogoče, nadgradite na HTTPS. Varna spletna mesta morda vdelajo vsebino, ki ni varna.</translation> <translation id="4860895144060829044">Pokličite</translation> <translation id="4872323082491632254">Preverjanje gesel</translation> <translation id="4881695831933465202">Odpri</translation> @@ -801,6 +802,7 @@ <translation id="7781069478569868053">Nov zavihek s povezavami</translation> <translation id="7781829728241885113">Včeraj</translation> <translation id="778855399387580014">Začnite iskanje na novem Chromovem zavihku.</translation> +<translation id="7790892308048519147">Poskusite uporabiti varne povezave</translation> <translation id="7791543448312431591">Dodaj</translation> <translation id="7807060072011926525">Zagotavlja Google</translation> <translation id="7839985698273989086">Stran brez povezave</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb index b97bd66..e6c2344d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera është në përdorim</translation> <translation id="2691653761409724435">Nuk mundësohet jashtë linje</translation> <translation id="2695507686909505111">Faqja u përkthye</translation> +<translation id="2697526135132990015">Dil dhe pastro të dhënat</translation> <translation id="2700241355396984822">Opsionet për të caktuar lejet</translation> <translation id="2702801445560668637">Lista e leximit</translation> <translation id="2704491540504985681">Shkarkime</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Për të dërguar të dhënat neto të eksportuara, konfiguro llogarinë tënde të mail-it në aplikacionin "Cilësimet".</translation> <translation id="4124987746317609294">Shtrirja kohore</translation> <translation id="4133265950310064865">Mbrojtja e përmirësuar</translation> +<translation id="4148023517926189160">Ky sajt uebi dëshiron të shkarkojë një skedar dhe ta shtojë atë në kalendarin tënd.</translation> <translation id="4152011295694446843">Këtu do të gjesh faqeshënuesit e tu</translation> <translation id="4172051516777682613">Trego gjithmonë</translation> <translation id="418156467088430727">Shiko versionin jashtë linje në një skedë të re</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Kthehu te skeda "Të fundit"</translation> <translation id="6762812039470893796">Anulo zgjedhjen për të gjitha</translation> <translation id="6780034285637185932">Kodi postar</translation> +<translation id="6781260999953472352">Të aktivizohet sinkronizimi?</translation> <translation id="6785453220513215166">Po dërgon raportin e ndërprerjeve aksidentale...</translation> <translation id="6797885426782475225">Kërkimi me zë</translation> <translation id="6801927553864092214">Për të shfletuar në mënyrë private, hap një skedë "të fshehtë"</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Ofruar nga Google</translation> <translation id="7839985698273989086">Faqe jashtë linje</translation> <translation id="7840771868269352570">Artikujt që zgjodhe do të hiqen.</translation> +<translation id="784551991304901159">Për të parë përmbajtjen, zgjidh "Aktivizo" nga menyja</translation> <translation id="7853202427316060426">Aktiviteti</translation> <translation id="7856733331829174190">Nuk mundi të shkarkohej</translation> <translation id="7859704718976024901">Historiku i shfletimit</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index 3bf92c9..b0a21f06 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera se koristi</translation> <translation id="2691653761409724435">Nije dostupno oflajn</translation> <translation id="2695507686909505111">Stranica je prevedena</translation> +<translation id="2697526135132990015">Odjavi me i obriši podatke</translation> <translation id="2700241355396984822">Opcije za podešavanje dozvola</translation> <translation id="2702801445560668637">Lista za čitanje</translation> <translation id="2704491540504985681">Preuzimanja</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Za slanje podataka neto izvoza podesite nalog e-pošte u aplikaciji Podešavanja.</translation> <translation id="4124987746317609294">Vremenski opseg</translation> <translation id="4133265950310064865">Napredna zaštita</translation> +<translation id="4148023517926189160">Ovaj veb-sajt želi da preuzme fajl i doda ga u kalendar.</translation> <translation id="4152011295694446843">Ovde ćete pronaći obeleživače</translation> <translation id="4172051516777682613">Uvek prikaži</translation> <translation id="418156467088430727">Prikaži oflajn verziju na novoj kartici</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Nazad na nedavnu karticu</translation> <translation id="6762812039470893796">Poništi izbor svih stavki</translation> <translation id="6780034285637185932">Poštanski broj</translation> +<translation id="6781260999953472352">Želite da uključite sinhronizaciju?</translation> <translation id="6785453220513215166">Slanje izveštaja o otkazivanju...</translation> <translation id="6797885426782475225">Glasovna pretraga</translation> <translation id="6801927553864092214">Da biste pregledali privatno, otvorite karticu bez arhiviranja</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Pruža Google</translation> <translation id="7839985698273989086">Oflajn stranica</translation> <translation id="7840771868269352570">Stavke koje ste izabrali će biti uklonjene.</translation> +<translation id="784551991304901159">Da biste videli sadržaj, izaberite Uključi u meniju</translation> <translation id="7853202427316060426">Aktivnost</translation> <translation id="7856733331829174190">Preuzimanje nije uspelo</translation> <translation id="7859704718976024901">Istorija pregledanja</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index a0735d1..ffc9c29 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Камера се користи</translation> <translation id="2691653761409724435">Није доступно офлајн</translation> <translation id="2695507686909505111">Страница је преведена</translation> +<translation id="2697526135132990015">Одјави ме и обриши податке</translation> <translation id="2700241355396984822">Опције за подешавање дозвола</translation> <translation id="2702801445560668637">Листа за читање</translation> <translation id="2704491540504985681">Преузимања</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">За слање података нето извоза подесите налог е-поште у апликацији Подешавања.</translation> <translation id="4124987746317609294">Временски опсег</translation> <translation id="4133265950310064865">Напредна заштита</translation> +<translation id="4148023517926189160">Овај веб-сајт жели да преузме фајл и дода га у календар.</translation> <translation id="4152011295694446843">Овде ћете пронаћи обележиваче</translation> <translation id="4172051516777682613">Увек прикажи</translation> <translation id="418156467088430727">Прикажи офлајн верзију на новој картици</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Назад на недавну картицу</translation> <translation id="6762812039470893796">Поништи избор свих ставки</translation> <translation id="6780034285637185932">Поштански број</translation> +<translation id="6781260999953472352">Желите да укључите синхронизацију?</translation> <translation id="6785453220513215166">Слање извештаја о отказивању...</translation> <translation id="6797885426782475225">Гласовна претрага</translation> <translation id="6801927553864092214">Да бисте прегледали приватно, отворите картицу без архивирања</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Пружа Google</translation> <translation id="7839985698273989086">Офлајн страница</translation> <translation id="7840771868269352570">Ставке које сте изабрали ће бити уклоњене.</translation> +<translation id="784551991304901159">Да бисте видели садржај, изаберите Укључи у менију</translation> <translation id="7853202427316060426">Активност</translation> <translation id="7856733331829174190">Преузимање није успело</translation> <translation id="7859704718976024901">Историја прегледања</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index c45faec..17bb8f9b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">கேமரா உபயோகத்தில் உள்ளது</translation> <translation id="2691653761409724435">ஆஃப்லைனில் கிடைக்காது</translation> <translation id="2695507686909505111">பக்கம் மொழிபெயர்க்கப்பட்டது</translation> +<translation id="2697526135132990015">வெளியேறு & தரவை அழி</translation> <translation id="2700241355396984822">அனுமதிகளை அமைப்பதற்கான விருப்பங்கள்</translation> <translation id="2702801445560668637">வாசிப்புப் பட்டியல்</translation> <translation id="2704491540504985681">பதிவிறக்கங்கள்</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">மொத்த-ஏற்றுமதி தரவை அனுப்புவதற்கு, அமைப்புகளின் ஆப்ஸில் உங்கள் மின்னஞ்சல் கணக்கை உள்ளமைக்கவும்.</translation> <translation id="4124987746317609294">நேர வரம்பு</translation> <translation id="4133265950310064865">மேம்படுத்தப்பட்ட பாதுகாப்பு</translation> +<translation id="4148023517926189160">இந்த இணையதளம் ஒரு ஃபைலைப் பதிவிறக்கி அதை உங்கள் கேலெண்டரில் சேர்க்க விரும்புகிறது.</translation> <translation id="4152011295694446843">உங்கள் புக்மார்க்குகளை இங்கே பார்ப்பீர்கள்</translation> <translation id="4172051516777682613">எப்போதும் காட்டு</translation> <translation id="418156467088430727">புதிய தாவலில் ஆஃப்லைன் பதிப்பைக் காட்டு</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">சமீபத்திய தாவலுக்குச் செல்</translation> <translation id="6762812039470893796">அனைத்தையும் தேர்வுநீக்கு</translation> <translation id="6780034285637185932">அஞ்சல் குறியீடு</translation> +<translation id="6781260999953472352">ஒத்திசைவை இயக்கவா?</translation> <translation id="6785453220513215166">சிதைவு அறிக்கையை அனுப்புகிறது...</translation> <translation id="6797885426782475225">குரல் தேடல்</translation> <translation id="6801927553864092214">தனிப்பட்ட முறையில் உலாவ, மறைநிலைத் தாவலைத் திறக்கவும்</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Google வழங்கியது</translation> <translation id="7839985698273989086">ஆஃப்லைன் பக்கம்</translation> <translation id="7840771868269352570">நீங்கள் தேர்ந்தெடுத்தவை அகற்றப்படும்.</translation> +<translation id="784551991304901159">உள்ளடக்கத்தைப் பார்க்க, மெனுவில் ‘இயக்கு’ என்பதைத் தேர்ந்தெடுக்கவும்</translation> <translation id="7853202427316060426">செயல்பாடு</translation> <translation id="7856733331829174190">பதிவிறக்க முடியவில்லை</translation> <translation id="7859704718976024901">உலாவல் வரலாறு</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index 04e3a9d..edbf444 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera kullanılıyor</translation> <translation id="2691653761409724435">Çevrimdışı kullanılamaz</translation> <translation id="2695507686909505111">Sayfa Çevrildi</translation> +<translation id="2697526135132990015">Oturumu Kapat ve Verileri Temizle</translation> <translation id="2700241355396984822">İzin Verme Seçenekleri</translation> <translation id="2702801445560668637">Okuma Listesi</translation> <translation id="2704491540504985681">İndirilenler</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Net-export verilerini göndermek için lütfen Ayarlar uygulamasında e-posta hesabınızı yapılandırın.</translation> <translation id="4124987746317609294">Zaman Aralığı</translation> <translation id="4133265950310064865">Gelişmiş Koruma</translation> +<translation id="4148023517926189160">Bu web sitesi bir dosyayı indirip takviminize eklemek istiyor.</translation> <translation id="4152011295694446843">Yer işaretlerinizi burada bulabilirsiniz</translation> <translation id="4172051516777682613">Her zaman göster</translation> <translation id="418156467088430727">Çevrimdışı Sürümü Yeni Sekmede Göster</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Son Sekmeye Dön</translation> <translation id="6762812039470893796">Tümünün Seçimini Kaldır</translation> <translation id="6780034285637185932">Posta Kodu</translation> +<translation id="6781260999953472352">Senkronizasyon açılsın mı?</translation> <translation id="6785453220513215166">Kilitlenme raporu gönderiliyor...</translation> <translation id="6797885426782475225">Sesli Arama</translation> <translation id="6801927553864092214">Gizli olarak göz atmak için Gizli sekme açın</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Google tarafından sağlanır</translation> <translation id="7839985698273989086">Çevrimdışı Sayfa</translation> <translation id="7840771868269352570">Seçtiğiniz öğeler kaldırılacak.</translation> +<translation id="784551991304901159">İçerikleri görmek için menüden "Etkinleştir"i seçin</translation> <translation id="7853202427316060426">Etkinlik</translation> <translation id="7856733331829174190">İndirilemedi</translation> <translation id="7859704718976024901">Tarama Geçmişi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index ee04e36b..8598181 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Kamera band.</translation> <translation id="2691653761409724435">Oflayn rejimda mavjud emas</translation> <translation id="2695507686909505111">Sahifa tarjima qilindi</translation> +<translation id="2697526135132990015">Chiqish va maʼlumotlarni tozalash</translation> <translation id="2700241355396984822">Ruxsatlarni sozlash parametrlari</translation> <translation id="2702801445560668637">Mutolaa ro‘yxati</translation> <translation id="2704491540504985681">Yuklanmalar</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Tozalangan ma’lumotlarni eksport qilish uchun “Sozlamalar” ilovasida yaroqli e-pochta hisobini kiriting.</translation> <translation id="4124987746317609294">Vaqt diapazoni</translation> <translation id="4133265950310064865">Kuchaytirilgan himoya</translation> +<translation id="4148023517926189160">Bu sayt fayl yuklab olishni va uni taqvimga qoʻshishni xohlamoqda.</translation> <translation id="4152011295694446843">Brauzer bukmarklari shu yerda chiqadi</translation> <translation id="4172051516777682613">Doim ko‘rsatilsin</translation> <translation id="418156467088430727">Oflayn versiyasini yangi varaqda ochish</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Oxirgi varaqqa qaytish</translation> <translation id="6762812039470893796">Tanlovni bekor qilish</translation> <translation id="6780034285637185932">Pochta indeksi</translation> +<translation id="6781260999953472352">Sinxronizatsiya yoqilsinmi?</translation> <translation id="6785453220513215166">Ishdan chiqish hisoboti yuborilmoqda...</translation> <translation id="6797885426782475225">Ovozli qidiruv</translation> <translation id="6801927553864092214">Yashirin kezish uchun inkognito rejimida varaq oching</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Google taqdim qilgan</translation> <translation id="7839985698273989086">Oflayn sahifa</translation> <translation id="7840771868269352570">Tanlangan elementlar olib tashlanadi.</translation> +<translation id="784551991304901159">Kontentni koʻrish uchun menyudan Yoqish bandini tanlang</translation> <translation id="7853202427316060426">Harakat</translation> <translation id="7856733331829174190">Yuklab olinmadi</translation> <translation id="7859704718976024901">Veb-sahifalarni ko‘rish tarixi</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index bc2a754..a8d5a62 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -190,6 +190,7 @@ <translation id="2690858294534178585">Ikhamera iyasetshenziswa</translation> <translation id="2691653761409724435">Akutholakali ngokungaxhunyiwe</translation> <translation id="2695507686909505111">Ikhasi lihunyushiwe</translation> +<translation id="2697526135132990015">Phuma Ngemvume futhi Usule Idatha</translation> <translation id="2700241355396984822">Izinketho Zokusetha Izimvume</translation> <translation id="2702801445560668637">Uhlu lokufunda</translation> <translation id="2704491540504985681">Okulandiwe</translation> @@ -364,6 +365,7 @@ <translation id="4121993058175073134">Ukuze uthumele idatha yakho konke ukuthumela, sicela ulungiselele i-akhawunti yakho ye-imeyili kuhlelo lokusebenza lwezilungiselelo.</translation> <translation id="4124987746317609294">Ibanga lesikhathi</translation> <translation id="4133265950310064865">Isivikelo Esigqnyisiwe</translation> +<translation id="4148023517926189160">Le webhusayithi ifuna ukudawuniloda ifayela futhi ilifake ekhalendeni lakho.</translation> <translation id="4152011295694446843">Uzothola amabhukhimakhi wakho lapha</translation> <translation id="4172051516777682613">Bonisa njalo</translation> <translation id="418156467088430727">Buka ungaxhumekile ku-inthanethi kuthebhu entsha</translation> @@ -692,6 +694,7 @@ <translation id="6760509555861141183">Buyela Kuthebhu Yakamuva</translation> <translation id="6762812039470893796">Ungakhethi konke</translation> <translation id="6780034285637185932">Ikhodi ye-Zip</translation> +<translation id="6781260999953472352">Vula Ukuvumelanisa?</translation> <translation id="6785453220513215166">Ithumela umbiko wokuphahlazeka...</translation> <translation id="6797885426782475225">Usesho lwezwi</translation> <translation id="6801927553864092214">Ukuze uphequlule ngokuyimfihlo, vula ithebhu ye-incognito</translation> @@ -804,6 +807,7 @@ <translation id="7807060072011926525">Kuhlinzekwe yi-Google</translation> <translation id="7839985698273989086">Ikhasi Elingaxhunyiwe kwi-Intanethi</translation> <translation id="7840771868269352570">Izinto ozikhethile zizosuswa.</translation> +<translation id="784551991304901159">Ukuze ubone okuqukethwe, khetha okuthi Vula kumenyu</translation> <translation id="7853202427316060426">Umsebenzi</translation> <translation id="7856733331829174190">Ayikwazanga ukulanda</translation> <translation id="7859704718976024901">Umlando wokuphequlula</translation>
diff --git a/ios/chrome/browser/flags/BUILD.gn b/ios/chrome/browser/flags/BUILD.gn index ca2aca3..7e806c7 100644 --- a/ios/chrome/browser/flags/BUILD.gn +++ b/ios/chrome/browser/flags/BUILD.gn
@@ -73,8 +73,8 @@ "//ios/chrome/browser/ui/sync/utils:features", "//ios/chrome/browser/ui/tab_switcher/tab_grid:features", "//ios/chrome/browser/ui/toolbar_container:feature_flags", - "//ios/chrome/browser/ui/upgrade/utils:features", "//ios/chrome/browser/ui/util:features", + "//ios/chrome/browser/upgrade/utils:features", "//ios/chrome/browser/web:feature_flags", "//ios/components/security_interstitials/https_only_mode:feature", "//ios/public/provider/chrome/browser/app_utils:app_utils_api",
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm index e3785ea..325625eb 100644 --- a/ios/chrome/browser/flags/about_flags.mm +++ b/ios/chrome/browser/flags/about_flags.mm
@@ -84,8 +84,8 @@ #import "ios/chrome/browser/ui/tab_switcher/tab_grid/features.h" #import "ios/chrome/browser/ui/toolbar_container/toolbar_container_features.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" -#import "ios/chrome/browser/ui/upgrade/utils/features.h" #include "ios/chrome/browser/ui/util/features.h" +#import "ios/chrome/browser/upgrade/utils/features.h" #include "ios/chrome/browser/web/features.h" #include "ios/chrome/grit/ios_strings.h" #include "ios/components/security_interstitials/https_only_mode/feature.h"
diff --git a/ios/chrome/browser/main/BUILD.gn b/ios/chrome/browser/main/BUILD.gn index b3b3c34..f2c9b6568 100644 --- a/ios/chrome/browser/main/BUILD.gn +++ b/ios/chrome/browser/main/BUILD.gn
@@ -62,6 +62,8 @@ "//ios/chrome/browser/tabs", "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/start_surface", + "//ios/chrome/browser/upgrade", + "//ios/chrome/browser/upgrade/utils:features", "//ios/chrome/browser/url_loading", "//ios/chrome/browser/web", "//ios/chrome/browser/web:delegate",
diff --git a/ios/chrome/browser/main/browser_agent_util.mm b/ios/chrome/browser/main/browser_agent_util.mm index 4d3806f5..2b50413 100644 --- a/ios/chrome/browser/main/browser_agent_util.mm +++ b/ios/chrome/browser/main/browser_agent_util.mm
@@ -22,6 +22,8 @@ #import "ios/chrome/browser/tabs/synced_window_delegate_browser_agent.h" #import "ios/chrome/browser/tabs/tab_parenting_browser_agent.h" #import "ios/chrome/browser/ui/start_surface/start_surface_recent_tab_browser_agent.h" +#import "ios/chrome/browser/upgrade/upgrade_center_browser_agent.h" +#import "ios/chrome/browser/upgrade/utils/features.h" #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h" #import "ios/chrome/browser/url_loading/url_loading_notifier_browser_agent.h" #import "ios/chrome/browser/web/web_navigation_browser_agent.h" @@ -92,6 +94,10 @@ if (!browser->GetBrowserState()->IsOffTheRecord()) StartSurfaceRecentTabBrowserAgent::CreateForBrowser(browser); + if (IsUpgradeCenterRefactorEnabled()) { + UpgradeCenterBrowserAgent::CreateForBrowser(browser); + } + // This needs to be called last in case any downstream browser agents need to // access upstream agents created earlier in this function. ios::provider::AttachBrowserAgents(browser);
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn index 21e8fccd..58bff29 100644 --- a/ios/chrome/browser/ui/browser_view/BUILD.gn +++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -186,6 +186,7 @@ "//ios/chrome/browser/ui/voice", "//ios/chrome/browser/ui/webui", "//ios/chrome/browser/upgrade", + "//ios/chrome/browser/upgrade/utils:features", "//ios/chrome/browser/url_loading", "//ios/chrome/browser/voice:voice", "//ios/chrome/browser/web",
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm index 3ec63a9..84190b7 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -134,6 +134,7 @@ #import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h" #import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller_factory.h" #include "ios/chrome/browser/upgrade/upgrade_center.h" +#import "ios/chrome/browser/upgrade/utils/features.h" #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h" #import "ios/chrome/browser/url_loading/url_loading_notifier_browser_agent.h" #import "ios/chrome/browser/url_loading/url_loading_observer_bridge.h" @@ -4015,8 +4016,11 @@ self.browserContainerViewController.contentView = nil; } - // TODO(crbug.com/1272546): Move UpgradeCenter updates into a browser agent. - [[UpgradeCenter sharedInstance] tabWillClose:webState->GetStableIdentifier()]; + if (!IsUpgradeCenterRefactorEnabled()) { + // TODO(crbug.com/1272546): Move UpgradeCenter updates into a browser agent. + [[UpgradeCenter sharedInstance] + tabWillClose:webState->GetStableIdentifier()]; + } } // Observer method, WebState replaced in |webStateList|. @@ -4048,20 +4052,23 @@ ->IsRestoringSession()) { return; } - // When adding new tabs, check what kind of reminder infobar should - // be added to the new tab. Try to add only one of them. - // This check is done when a new tab is added either through the Tools Menu - // "New Tab", through a long press on the Tab Switcher button "New Tab", and - // through creating a New Tab from the Tab Switcher. This logic needs to - // happen after a new WebState has added and finished initial navigation. If - // this happens earlier, the initial navigation may end up clearing the - // infobar(s) that are just added. - // TODO(crbug.com/1272546): Move UpgradeCenter updates into a browser agent. - infobars::InfoBarManager* infoBarManager = - InfoBarManagerImpl::FromWebState(webState); - NSString* tabID = webState->GetStableIdentifier(); - [[UpgradeCenter sharedInstance] addInfoBarToManager:infoBarManager - forTabId:tabID]; + + if (!IsUpgradeCenterRefactorEnabled()) { + // When adding new tabs, check what kind of reminder infobar should + // be added to the new tab. Try to add only one of them. + // This check is done when a new tab is added either through the Tools Menu + // "New Tab", through a long press on the Tab Switcher button "New Tab", and + // through creating a New Tab from the Tab Switcher. This logic needs to + // happen after a new WebState has added and finished initial navigation. If + // this happens earlier, the initial navigation may end up clearing the + // infobar(s) that are just added. + // TODO(crbug.com/1272546): Move UpgradeCenter updates into a browser agent. + infobars::InfoBarManager* infoBarManager = + InfoBarManagerImpl::FromWebState(webState); + NSString* tabID = webState->GetStableIdentifier(); + [[UpgradeCenter sharedInstance] addInfoBarToManager:infoBarManager + forTabId:tabID]; + } if (!IsDisplaySyncErrorsRefactorEnabled()) { if (!ReSignInInfoBarDelegate::Create(self.browserState, webState,
diff --git a/ios/chrome/browser/ui/follow/BUILD.gn b/ios/chrome/browser/ui/follow/BUILD.gn index 119df632..b887697 100644 --- a/ios/chrome/browser/ui/follow/BUILD.gn +++ b/ios/chrome/browser/ui/follow/BUILD.gn
@@ -61,6 +61,7 @@ ":follow", "//base", "//ios/chrome/app/strings:ios_strings_grit", + "//ios/chrome/browser/ui/icons:symbols", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/favicon", "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/follow/first_follow_view_controller.mm b/ios/chrome/browser/ui/follow/first_follow_view_controller.mm index 28f0e9e..c6846ae 100644 --- a/ios/chrome/browser/ui/follow/first_follow_view_controller.mm +++ b/ios/chrome/browser/ui/follow/first_follow_view_controller.mm
@@ -8,6 +8,7 @@ #import "ios/chrome/browser/ui/follow/first_follow_favicon_data_source.h" #import "ios/chrome/browser/ui/follow/first_follow_view_delegate.h" #import "ios/chrome/browser/ui/follow/followed_web_channel.h" +#import "ios/chrome/browser/ui/icons/chrome_symbol.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_container_view.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" @@ -55,6 +56,9 @@ // Vertical spacing between labels and buttons in stack views. constexpr CGFloat kStackViewVerticalSpacing = 10.0; +// The size of the symbol badge image. +NSInteger kSymbolBadgeImagePointSize = 13; + // Properties of the favicon. constexpr CGFloat kFaviconCornerRadius = 10; constexpr CGFloat kFaviconShadowOffsetX = 0; @@ -158,7 +162,8 @@ UIImageView* faviconBadgeView = [[UIImageView alloc] init]; faviconBadgeView.translatesAutoresizingMaskIntoConstraints = NO; - faviconBadgeView.image = [UIImage systemImageNamed:@"checkmark.circle.fill"]; + faviconBadgeView.image = DefaultSymbolTemplateWithPointSize( + kCheckMarkCircleFillSymbol, kSymbolBadgeImagePointSize); faviconBadgeView.tintColor = [UIColor colorNamed:kGreenColor]; UIView* view = [[UIView alloc] init];
diff --git a/ios/chrome/browser/ui/icons/chrome_symbol.h b/ios/chrome/browser/ui/icons/chrome_symbol.h index 1b453e2..e35e36f 100644 --- a/ios/chrome/browser/ui/icons/chrome_symbol.h +++ b/ios/chrome/browser/ui/icons/chrome_symbol.h
@@ -34,6 +34,8 @@ extern NSString* const kArrowDownCircleFillSymbol; extern NSString* const kWarningFillSymbol; extern NSString* const kHelpFillSymbol; +extern NSString* const kCheckMarkCircleFillSymbol; +extern NSString* const kFailMarkCircleFillSymbol; // Returns a SF symbol named |symbolName| configured with the given // |configuration|.
diff --git a/ios/chrome/browser/ui/icons/chrome_symbol.mm b/ios/chrome/browser/ui/icons/chrome_symbol.mm index 53aef5f7..ccd8344d 100644 --- a/ios/chrome/browser/ui/icons/chrome_symbol.mm +++ b/ios/chrome/browser/ui/icons/chrome_symbol.mm
@@ -72,6 +72,8 @@ NSString* const kArrowDownCircleFillSymbol = @"arrow.down.circle.fill"; NSString* const kWarningFillSymbol = @"exclamationmark.triangle.fill"; NSString* const kHelpFillSymbol = @"questionmark.circle"; +NSString* const kCheckMarkCircleFillSymbol = @"checkmark.circle.fill"; +NSString* const kFailMarkCircleFillSymbol = @"exclamationmark.circle.fill"; UIImage* DefaultSymbolWithConfiguration(NSString* symbolName, UIImageConfiguration* configuration) {
diff --git a/ios/chrome/browser/ui/omnibox/popup/shared/popup_view.swift b/ios/chrome/browser/ui/omnibox/popup/shared/popup_view.swift index 2121576..3094505 100644 --- a/ios/chrome/browser/ui/omnibox/popup/shared/popup_view.swift +++ b/ios/chrome/browser/ui/omnibox/popup/shared/popup_view.swift
@@ -429,7 +429,9 @@ func onNewSections(sections: [PopupMatchSection], scrollProxy: ScrollViewProxy) { // Scroll to the very top of the list. - scrollProxy.scrollTo(IndexPath(row: 0, section: 0), anchor: UnitPoint(x: 0, y: -.infinity)) + if !sections.isEmpty || !sections.first!.matches.isEmpty { + scrollProxy.scrollTo(IndexPath(row: 0, section: 0), anchor: UnitPoint(x: 0, y: -.infinity)) + } } }
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn index 21419f2..d46b938 100644 --- a/ios/chrome/browser/ui/reading_list/BUILD.gn +++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -48,6 +48,7 @@ "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/favicon", + "//ios/chrome/browser/ui/icons:symbols", "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_scene_agent", "//ios/chrome/browser/ui/main:scene_state_header", "//ios/chrome/browser/ui/menu",
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_table_view_item.mm b/ios/chrome/browser/ui/reading_list/reading_list_table_view_item.mm index 06eeaeb..17341cb 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_table_view_item.mm +++ b/ios/chrome/browser/ui/reading_list/reading_list_table_view_item.mm
@@ -10,6 +10,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/url_formatter/elide_url.h" +#import "ios/chrome/browser/ui/icons/chrome_symbol.h" #import "ios/chrome/browser/ui/reading_list/reading_list_list_item_custom_action_factory.h" #import "ios/chrome/browser/ui/reading_list/reading_list_list_item_util.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_url_item.h" @@ -28,9 +29,14 @@ #endif namespace { + +// The size of the symbol badge image. +NSInteger kSymbolBadgeImagePointSize = 13; + // The string format used to append the distillation date to the URL host. NSString* const kURLAndDistillationDateFormat = @"%@ • %@"; -} + +} // namespace @interface ReadingListTableViewItem () @@ -68,11 +74,17 @@ switch (_distillationState) { case ReadingListUIDistillationStatusFailure: self.distillationBadgeImage = - [UIImage imageNamed:@"distillation_fail_new"]; + UseSymbols() + ? DefaultSymbolTemplateWithPointSize(kFailMarkCircleFillSymbol, + kSymbolBadgeImagePointSize) + : [UIImage imageNamed:@"distillation_fail_new"]; break; case ReadingListUIDistillationStatusSuccess: self.distillationBadgeImage = - [UIImage imageNamed:@"table_view_cell_check_mark"]; + UseSymbols() + ? DefaultSymbolTemplateWithPointSize(kCheckMarkCircleFillSymbol, + kSymbolBadgeImagePointSize) + : [UIImage imageNamed:@"table_view_cell_check_mark"]; break; case ReadingListUIDistillationStatusPending: self.distillationBadgeImage = nil;
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn index e384e70..a711f3a2 100644 --- a/ios/chrome/browser/ui/settings/password/BUILD.gn +++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -180,6 +180,7 @@ "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/reauthentication", "//ios/chrome/common/ui/table_view:cells_constants", + "//ios/chrome/test:test_support", "//ios/chrome/test/app:test_support", "//ios/web/public/test", "//testing/gmock",
diff --git a/ios/chrome/browser/ui/settings/password/passwords_coordinator.mm b/ios/chrome/browser/ui/settings/password/passwords_coordinator.mm index 75f995c..8e42ed4 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_coordinator.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_coordinator.mm
@@ -140,6 +140,7 @@ } - (void)stop { + self.passwordsViewController.delegate = nil; self.passwordsViewController = nil; [self.passwordIssuesCoordinator stop];
diff --git a/ios/chrome/browser/ui/settings/password/passwords_mediator.mm b/ios/chrome/browser/ui/settings/password/passwords_mediator.mm index 456d3ea..373ec36 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_mediator.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_mediator.mm
@@ -10,14 +10,13 @@ #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/common/password_manager_features.h" #import "components/signin/public/identity_manager/objc/identity_manager_observer_bridge.h" +#include "components/sync/driver/sync_service_utils.h" #import "ios/chrome/browser/favicon/favicon_loader.h" #import "ios/chrome/browser/net/crurl.h" #include "ios/chrome/browser/passwords/password_check_observer_bridge.h" #import "ios/chrome/browser/passwords/save_passwords_consumer.h" #import "ios/chrome/browser/signin/authentication_service.h" -#include "ios/chrome/browser/signin/identity_manager_factory.h" #include "ios/chrome/browser/sync/sync_observer_bridge.h" -#include "ios/chrome/browser/sync/sync_service_factory.h" #include "ios/chrome/browser/sync/sync_setup_service.h" #import "ios/chrome/browser/ui/settings/password/passwords_consumer.h" #import "ios/chrome/browser/ui/settings/password/saved_passwords_presenter_observer.h" @@ -83,6 +82,9 @@ // favicon images. @property(nonatomic, assign) FaviconLoader* faviconLoader; +// Service to know whether passwords are synced. +@property(nonatomic, assign) syncer::SyncService* syncService; + @end @implementation PasswordsMediator @@ -96,6 +98,7 @@ syncService:(syncer::SyncService*)syncService { self = [super init]; if (self) { + _syncService = syncService; _faviconLoader = faviconLoader; _identityManagerObserver = std::make_unique<signin::IdentityManagerObserverBridge>(identityManager, @@ -152,6 +155,7 @@ - (void)disconnect { _identityManagerObserver.reset(); _syncObserver.reset(); + _syncService = nullptr; } #pragma mark - PasswordsTableViewControllerDelegate @@ -240,6 +244,19 @@ attributes:textAttributes]; } +// Returns the on-device encryption state according to the sync service. +- (OnDeviceEncryptionState)onDeviceEncryptionState { + if (ShouldOfferTrustedVaultOptIn(_syncService)) { + return OnDeviceEncryptionStateOfferOptIn; + } + syncer::SyncUserSettings* syncUserSettings = _syncService->GetUserSettings(); + if (syncUserSettings->GetPassphraseType() == + syncer::PassphraseType::kTrustedVaultPassphrase) { + return OnDeviceEncryptionStateOptedIn; + } + return OnDeviceEncryptionStateNotShown; +} + #pragma mark - PasswordCheckObserver - (void)passwordCheckStateDidChange:(PasswordCheckState)state {
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm index 2045377..b5efa2d 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
@@ -33,7 +33,6 @@ #import "ios/chrome/browser/net/crurl.h" #import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h" #import "ios/chrome/browser/signin/chrome_account_manager_service_observer_bridge.h" -#include "ios/chrome/browser/sync/sync_service_factory.h" #include "ios/chrome/browser/system_flags.h" #import "ios/chrome/browser/ui/elements/home_waiting_view.h" #import "ios/chrome/browser/ui/settings/cells/settings_check_cell.h" @@ -111,27 +110,6 @@ ItemTypeOnDeviceEncryptionOptedInLearnMore, }; -// State of on-device encryption used for -// ItemTypeOnDeviceEncryptionOptInDescription, ItemTypeOnDeviceEncryptionSetUp -// and ItemTypeOnDeviceEncryptionSetUp. -typedef NS_ENUM(NSInteger, OnDeviceEncryptionState) { - // On device encryption is on. - // ItemTypeOnDeviceEncryptionOptInDescription is shown. - OnDeviceEncryptionStateOptedIn, - // User can opt-in on device encryption. - // ItemTypeOnDeviceEncryptionOptInDescription and - // ItemTypeOnDeviceEncryptionSetUp are shown. - OnDeviceEncryptionStateOfferOptIn, - // User can not opt-in in their current state. - // Currently it is either because: - // * User is not signed-in, - // * User hasn’t opted in to or disabled Sync for passwords (or equivalent - // enterprise policies), - // * User has a custom passphrase. - // SectionIdentifierOnDeviceEncryption is hidden. - OnDeviceEncryptionStateNotShown, -}; - std::vector<std::unique_ptr<password_manager::PasswordForm>> CopyOf( const std::vector<password_manager::PasswordForm>& password_list) { std::vector<std::unique_ptr<password_manager::PasswordForm>> @@ -647,36 +625,42 @@ - (void)updateOnDeviceEncryptionSessionWithUpdateTableView: (BOOL)updateTableView { OnDeviceEncryptionState oldState = self.onDeviceEncryptionStateInModel; - OnDeviceEncryptionState newState = [self onDeviceEncryptionState]; + OnDeviceEncryptionState newState = + self.navigationItem.searchController.active + ? OnDeviceEncryptionStateNotShown + : [self.delegate onDeviceEncryptionState]; if (newState == oldState) { return; } self.onDeviceEncryptionStateInModel = newState; TableViewModel* model = self.tableViewModel; - // Index of the OnDeviceEncryption section if it exists. - // Index where it should be added if it does not exists. - NSInteger sectionIdentifierOnDeviceEncryptionIndex = - [model sectionForSectionIdentifier:SectionIdentifierPasswordCheck] + 1; - NSIndexSet* sectionIdentifierOnDeviceEncryptionIndexSet = - [NSIndexSet indexSetWithIndex:sectionIdentifierOnDeviceEncryptionIndex]; - if (newState == OnDeviceEncryptionStateNotShown) { - // Previous state was not `OnDeviceEncryptionStateNotShown`, wich mean the + // Previous state was not `OnDeviceEncryptionStateNotShown`, which means the // section `SectionIdentifierOnDeviceEncryption` exists and must be removed. // It also mean the table view is not yet shown and thus should not be // updated. - DCHECK(!updateTableView); + DCHECK(updateTableView); [self clearSectionWithIdentifier:SectionIdentifierOnDeviceEncryption withRowAnimation:UITableViewRowAnimationAutomatic]; return; } + NSInteger onDeviceEncryptionSectionIndex = NSNotFound; if (oldState == OnDeviceEncryptionStateNotShown) { - [model - insertSectionWithIdentifier:SectionIdentifierOnDeviceEncryption - atIndex:sectionIdentifierOnDeviceEncryptionIndex]; + NSInteger passwordCheckSectionIndex = + [model sectionForSectionIdentifier:SectionIdentifierPasswordCheck]; + DCHECK_NE(NSNotFound, passwordCheckSectionIndex); + onDeviceEncryptionSectionIndex = passwordCheckSectionIndex + 1; + [model insertSectionWithIdentifier:SectionIdentifierOnDeviceEncryption + atIndex:onDeviceEncryptionSectionIndex]; + } else { + onDeviceEncryptionSectionIndex = + [model sectionForSectionIdentifier:SectionIdentifierOnDeviceEncryption]; } + DCHECK_NE(NSNotFound, onDeviceEncryptionSectionIndex); + NSIndexSet* sectionIdentifierOnDeviceEncryptionIndexSet = + [NSIndexSet indexSetWithIndex:onDeviceEncryptionSectionIndex]; [model deleteAllItemsFromSectionWithIdentifier: SectionIdentifierOnDeviceEncryption]; @@ -1853,21 +1837,6 @@ } } -// Returns the on-device encryption state according to the sync service. -- (OnDeviceEncryptionState)onDeviceEncryptionState { - syncer::SyncService* syncService = - SyncServiceFactory::GetForBrowserState(_browserState); - if (ShouldOfferTrustedVaultOptIn(syncService)) { - return OnDeviceEncryptionStateOfferOptIn; - } - syncer::SyncUserSettings* syncUserSettings = syncService->GetUserSettings(); - if (syncUserSettings->GetPassphraseType() == - syncer::PassphraseType::kTrustedVaultPassphrase) { - return OnDeviceEncryptionStateOptedIn; - } - return OnDeviceEncryptionStateNotShown; -} - // Notifies accessibility to focus on the Password Check Status cell when its // layout changed. - (void)focusAccessibilityOnPasswordCheckStatus {
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_delegate.h b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_delegate.h index f2cf44c3..940373a 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_delegate.h +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_delegate.h
@@ -7,6 +7,27 @@ #import <Foundation/Foundation.h> +// State of on-device encryption used for +// ItemTypeOnDeviceEncryptionOptInDescription, ItemTypeOnDeviceEncryptionSetUp +// and ItemTypeOnDeviceEncryptionSetUp. +typedef NS_ENUM(NSInteger, OnDeviceEncryptionState) { + // On device encryption is on. + // ItemTypeOnDeviceEncryptionOptInDescription is shown. + OnDeviceEncryptionStateOptedIn, + // User can opt-in on device encryption. + // ItemTypeOnDeviceEncryptionOptInDescription and + // ItemTypeOnDeviceEncryptionSetUp are shown. + OnDeviceEncryptionStateOfferOptIn, + // User can not opt-in in their current state. + // Currently it is either because: + // * User is not signed-in, + // * User hasn’t opted in to or disabled Sync for passwords (or equivalent + // enterprise policies), + // * User has a custom passphrase. + // SectionIdentifierOnDeviceEncryption is hidden. + OnDeviceEncryptionStateNotShown, +}; + namespace password_manager { struct PasswordForm; } @@ -30,6 +51,9 @@ // Returns detailed information about Password Check error if applicable. - (NSAttributedString*)passwordCheckErrorInfo; +// Returns the on-device encryption state according to the sync service. +- (OnDeviceEncryptionState)onDeviceEncryptionState; + @end #endif // IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORDS_TABLE_VIEW_CONTROLLER_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm index 8878691..0d24f92a 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller_unittest.mm
@@ -39,6 +39,8 @@ #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" +#import "ios/chrome/test/app/sync_test_util.h" +#include "ios/chrome/test/scoped_key_window.h" #include "ios/web/public/test/web_task_environment.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -59,12 +61,28 @@ // Declaration to conformance to SavePasswordsConsumerDelegate and keep tests in // this file working. -@interface PasswordsTableViewController (Test) < - UISearchBarDelegate, - PasswordsConsumer> +@interface PasswordsTableViewController (Test) <PasswordsConsumer, + UISearchBarDelegate, + UISearchControllerDelegate> - (void)updateExportPasswordsButton; @end +// TODO(crbug.com/1324555): Remove this double and uses TestSyncUserSettings +@interface TestPasswordsMediator : PasswordsMediator + +@property(nonatomic) OnDeviceEncryptionState encryptionState; + +@end + +@implementation TestPasswordsMediator + +- (OnDeviceEncryptionState)onDeviceEncryptionState: + (ChromeBrowserState*)browserState { + return self.encryptionState; +} + +@end + namespace { typedef struct { @@ -96,7 +114,7 @@ CreateController(); ChromeBrowserState* browserState = browser_->GetBrowserState(); - mediator_ = [[PasswordsMediator alloc] + mediator_ = [[TestPasswordsMediator alloc] initWithPasswordCheckManager:IOSChromePasswordCheckManagerFactory:: GetForBrowserState(browserState) syncSetupService:nil @@ -287,7 +305,9 @@ web::WebTaskEnvironment task_environment_; std::unique_ptr<TestChromeBrowserState> browser_state_; std::unique_ptr<TestBrowser> browser_; - PasswordsMediator* mediator_; + TestPasswordsMediator* mediator_; + ScopedKeyWindow scoped_window_; + UIViewController* root_view_controller_ = nil; }; // Tests default case has no saved sites and no blocked sites. @@ -524,6 +544,51 @@ UIAccessibilityTraitNotEnabled); } +// Tests that adding "on device encryption" don’t break during search. +TEST_F(PasswordsTableViewControllerTest, TestOnDeviceEncryptionWhileSearching) { + root_view_controller_ = [[UIViewController alloc] init]; + scoped_window_.Get().rootViewController = root_view_controller_; + + PasswordsTableViewController* passwords_controller = + static_cast<PasswordsTableViewController*>(controller()); + + // Present the view controller. + __block bool presentation_finished = NO; + UINavigationController* navigation_controller = + [[UINavigationController alloc] + initWithRootViewController:passwords_controller]; + [root_view_controller_ presentViewController:navigation_controller + animated:NO + completion:^{ + presentation_finished = YES; + }]; + EXPECT_TRUE(base::test::ios::WaitUntilConditionOrTimeout( + base::test::ios::kWaitForUIElementTimeout, ^bool { + return presentation_finished; + })); + + // Disable on device encryption to prepare the state. + mediator_.encryptionState = OnDeviceEncryptionStateNotShown; + [passwords_controller updateOnDeviceEncryptionSessionAndUpdateTableView]; + + // start of the actual test. + passwords_controller.navigationItem.searchController.active = YES; + mediator_.encryptionState = OnDeviceEncryptionStateOptedIn; + [passwords_controller updateOnDeviceEncryptionSessionAndUpdateTableView]; + + passwords_controller.navigationItem.searchController.active = NO; + // Dismiss |view_controller_| and waits for the dismissal to finish. + __block bool dismissal_finished = NO; + [root_view_controller_ dismissViewControllerAnimated:NO + completion:^{ + dismissal_finished = YES; + }]; + EXPECT_TRUE(base::test::ios::WaitUntilConditionOrTimeout( + base::test::ios::kWaitForUIElementTimeout, ^bool { + return dismissal_finished; + })); +} + // Tests that the "Export Passwords..." button is greyed out in edit mode. TEST_F(PasswordsTableViewControllerTest, TestExportButtonDisabledEditMode) { PasswordsTableViewController* passwords_controller =
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm index af45e7a..6f8b473 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/grid/grid_cell.mm
@@ -26,8 +26,8 @@ namespace { -// The size of the xmark symbol image. -NSInteger kXmarkSymbolPointSize = 13; +// The size of symbol icons. +NSInteger kIconSymbolPointSize = 13; // Size of activity indicator replacing fav icon when active. const CGFloat kIndicatorSize = 16.0; @@ -381,7 +381,7 @@ closeIconView.image = UseSymbols() ? DefaultSymbolTemplateWithPointSize(kXMarkSymbol, - kXmarkSymbolPointSize) + kIconSymbolPointSize) : [[UIImage imageNamed:@"grid_cell_close_button"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; @@ -496,9 +496,8 @@ imageWithTintColor:UIColor.systemGray3Color renderingMode:UIImageRenderingModeAlwaysOriginal]; } - return [UIImage systemImageNamed:@"checkmark.circle.fill"]; - NOTREACHED(); - return nil; + return DefaultSymbolTemplateWithPointSize(kCheckMarkCircleFillSymbol, + kIconSymbolPointSize); } // Update constraints of top bar when system font size changes. If accessibility
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm index 8092668..fcd4067 100644 --- a/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm +++ b/ios/chrome/browser/ui/table_view/cells/table_view_url_item.mm
@@ -358,7 +358,7 @@ constraintEqualToAnchor:self.faviconContainerView.centerYAnchor], ]]; [activityView startAnimating]; - activityView.backgroundColor = [UIColor whiteColor]; + activityView.backgroundColor = self.faviconContainerView.backgroundColor; } - (void)stopAnimatingActivityIndicator {
diff --git a/ios/chrome/browser/ui/upgrade/BUILD.gn b/ios/chrome/browser/ui/upgrade/BUILD.gn index ab2cac33..f0ab340 100644 --- a/ios/chrome/browser/ui/upgrade/BUILD.gn +++ b/ios/chrome/browser/ui/upgrade/BUILD.gn
@@ -14,9 +14,9 @@ "//ios/chrome/browser/browser_state", "//ios/chrome/browser/infobars", "//ios/chrome/browser/main:public", - "//ios/chrome/browser/ui/upgrade/utils:features", "//ios/chrome/browser/ui/util", "//ios/chrome/browser/upgrade", + "//ios/chrome/browser/upgrade/utils:features", "//ios/chrome/browser/web_state_list", "//ui/base", ]
diff --git a/ios/chrome/browser/upgrade/BUILD.gn b/ios/chrome/browser/upgrade/BUILD.gn index e7f8af95..698c50c 100644 --- a/ios/chrome/browser/upgrade/BUILD.gn +++ b/ios/chrome/browser/upgrade/BUILD.gn
@@ -7,6 +7,8 @@ sources = [ "upgrade_center.h", "upgrade_center.mm", + "upgrade_center_browser_agent.h", + "upgrade_center_browser_agent.mm", "upgrade_recommended_details.h", ] deps = [ @@ -16,8 +18,13 @@ "//components/infobars/core", "//components/version_info", "//ios/chrome/app/strings", + "//ios/chrome/browser/browser_state", "//ios/chrome/browser/infobars", + "//ios/chrome/browser/main:public", "//ios/chrome/browser/ui/commands", + "//ios/chrome/browser/ui/util", + "//ios/chrome/browser/upgrade/utils:features", + "//ios/chrome/browser/web_state_list", "//ios/web/common", "//net", "//ui/base",
diff --git a/ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.h b/ios/chrome/browser/upgrade/upgrade_center_browser_agent.h similarity index 87% rename from ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.h rename to ios/chrome/browser/upgrade/upgrade_center_browser_agent.h index 03adfaf..59c26a3 100644 --- a/ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.h +++ b/ios/chrome/browser/upgrade/upgrade_center_browser_agent.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 IOS_CHROME_BROWSER_UI_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_ -#define IOS_CHROME_BROWSER_UI_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_ +#ifndef IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_ +#define IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_ #import "ios/chrome/browser/main/browser_observer.h" #import "ios/chrome/browser/main/browser_user_data.h" @@ -44,4 +44,4 @@ Browser* browser_ = nullptr; }; -#endif // IOS_CHROME_BROWSER_UI_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_ +#endif // IOS_CHROME_BROWSER_UPGRADE_UPGRADE_CENTER_BROWSER_AGENT_H_
diff --git a/ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.mm b/ios/chrome/browser/upgrade/upgrade_center_browser_agent.mm similarity index 92% rename from ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.mm rename to ios/chrome/browser/upgrade/upgrade_center_browser_agent.mm index 938e4149..5bbd80a 100644 --- a/ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.mm +++ b/ios/chrome/browser/upgrade/upgrade_center_browser_agent.mm
@@ -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 "ios/chrome/browser/ui/upgrade/upgrade_center_browser_agent.h" +#import "ios/chrome/browser/upgrade/upgrade_center_browser_agent.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/infobars/infobar_manager_impl.h" @@ -21,9 +21,9 @@ browser->GetWebStateList()->AddObserver(this); } -UpgradeCenterBrowserAgent::~UpgradeCenterBrowserAgent() +UpgradeCenterBrowserAgent::~UpgradeCenterBrowserAgent() {} - void UpgradeCenterBrowserAgent::BrowserDestroyed(Browser* browser) { +void UpgradeCenterBrowserAgent::BrowserDestroyed(Browser* browser) { DCHECK(browser); browser->GetWebStateList()->RemoveObserver(this); browser->RemoveObserver(this);
diff --git a/ios/chrome/browser/ui/upgrade/utils/BUILD.gn b/ios/chrome/browser/upgrade/utils/BUILD.gn similarity index 100% rename from ios/chrome/browser/ui/upgrade/utils/BUILD.gn rename to ios/chrome/browser/upgrade/utils/BUILD.gn
diff --git a/ios/chrome/browser/ui/upgrade/utils/features.cc b/ios/chrome/browser/upgrade/utils/features.cc similarity index 87% rename from ios/chrome/browser/ui/upgrade/utils/features.cc rename to ios/chrome/browser/upgrade/utils/features.cc index 15875cf..3c53d47 100644 --- a/ios/chrome/browser/ui/upgrade/utils/features.cc +++ b/ios/chrome/browser/upgrade/utils/features.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 "ios/chrome/browser/ui/upgrade/utils/features.h" +#include "ios/chrome/browser/upgrade/utils/features.h" const base::Feature kUpgradeCenterRefactor{"UpgradeCenterRefactor", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ios/chrome/browser/ui/upgrade/utils/features.h b/ios/chrome/browser/upgrade/utils/features.h similarity index 70% rename from ios/chrome/browser/ui/upgrade/utils/features.h rename to ios/chrome/browser/upgrade/utils/features.h index 60b96f0b..52b81ef 100644 --- a/ios/chrome/browser/ui/upgrade/utils/features.h +++ b/ios/chrome/browser/upgrade/utils/features.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 IOS_CHROME_BROWSER_UI_UPGRADE_UTILS_FEATURES_H_ -#define IOS_CHROME_BROWSER_UI_UPGRADE_UTILS_FEATURES_H_ +#ifndef IOS_CHROME_BROWSER_UPGRADE_UTILS_FEATURES_H_ +#define IOS_CHROME_BROWSER_UPGRADE_UTILS_FEATURES_H_ #include "base/feature_list.h" @@ -13,4 +13,4 @@ // Returns true if UpgradeCenter refactored code is enabled. bool IsUpgradeCenterRefactorEnabled(); -#endif // IOS_CHROME_BROWSER_UI_UPGRADE_UTILS_FEATURES_H_ +#endif // IOS_CHROME_BROWSER_UPGRADE_UTILS_FEATURES_H_
diff --git a/media/capture/video/win/video_capture_device_mf_win.cc b/media/capture/video/win/video_capture_device_mf_win.cc index 8b145c6..3fbcc3b 100644 --- a/media/capture/video/win/video_capture_device_mf_win.cc +++ b/media/capture/video/win/video_capture_device_mf_win.cc
@@ -1143,8 +1143,6 @@ // event. For the lack of any other events indicating success, we have to wait // for the first video frame to arrive before sending our |OnStarted| event to // |client_|. - // We still need to wait for MF_CAPTURE_ENGINE_PREVIEW_STARTED event to ensure - // that we won't call StopPreview before the preview is started. has_sent_on_started_to_client_ = false; hr = engine_->StartPreview(); if (FAILED(hr)) { @@ -1153,14 +1151,11 @@ return; } - hr = WaitOnCaptureEvent(MF_CAPTURE_ENGINE_PREVIEW_STARTED); - if (SUCCEEDED(hr)) { - is_started_ = true; - } - selected_video_capability_ = std::make_unique<CapabilityWin>(best_match_video_capability); + is_started_ = true; + base::UmaHistogramEnumeration( "Media.VideoCapture.Win.Device.InternalPixelFormat", best_match_video_capability.source_pixel_format, @@ -1179,12 +1174,8 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); base::AutoLock lock(lock_); - if (is_started_ && engine_) { - HRESULT hr = engine_->StopPreview(); - if (SUCCEEDED(hr)) { - WaitOnCaptureEvent(MF_CAPTURE_ENGINE_PREVIEW_STOPPED); - } - } + if (is_started_ && engine_) + engine_->StopPreview(); is_started_ = false; client_.reset(); @@ -1768,22 +1759,16 @@ media_event->GetStatus(&hr); media_event->GetExtendedType(&capture_event_guid); + // TODO(http://crbug.com/1093521): Add cases for Start + // MF_CAPTURE_ENGINE_PREVIEW_STARTED and MF_CAPTURE_ENGINE_PREVIEW_STOPPED // When MF_CAPTURE_ENGINE_ERROR is returned the captureengine object is no // longer valid. if (capture_event_guid == MF_CAPTURE_ENGINE_ERROR || FAILED(hr)) { - last_error_hr_ = hr; capture_error_.Signal(); // There should always be a valid error hr = SUCCEEDED(hr) ? E_UNEXPECTED : hr; - } else { - if (capture_event_guid == MF_CAPTURE_ENGINE_INITIALIZED) { - capture_initialize_.Signal(); - } else if (capture_event_guid == MF_CAPTURE_ENGINE_PREVIEW_STOPPED) { - capture_stopped_.Signal(); - } else if (capture_event_guid == MF_CAPTURE_ENGINE_PREVIEW_STARTED) { - capture_started_.Signal(); - } - return; + } else if (capture_event_guid == MF_CAPTURE_ENGINE_INITIALIZED) { + capture_initialize_.Signal(); } // Lock is taken after events are signalled, because if the capture @@ -1860,12 +1845,10 @@ HRESULT hr = S_OK; HANDLE events[] = {nullptr, capture_error_.handle()}; + // TODO(http://crbug.com/1093521): Add cases for Start + // MF_CAPTURE_ENGINE_PREVIEW_STARTED and MF_CAPTURE_ENGINE_PREVIEW_STOPPED if (capture_event_guid == MF_CAPTURE_ENGINE_INITIALIZED) { events[0] = capture_initialize_.handle(); - } else if (capture_event_guid == MF_CAPTURE_ENGINE_PREVIEW_STOPPED) { - events[0] = capture_stopped_.handle(); - } else if (capture_event_guid == MF_CAPTURE_ENGINE_PREVIEW_STARTED) { - events[0] = capture_started_.handle(); } else { // no registered event handle for the event requested hr = E_NOTIMPL; @@ -1883,10 +1866,7 @@ LogError(FROM_HERE, hr); break; default: - hr = last_error_hr_; - if (SUCCEEDED(hr)) { - hr = MF_E_UNEXPECTED; - } + hr = E_UNEXPECTED; LogError(FROM_HERE, hr); break; }
diff --git a/media/capture/video/win/video_capture_device_mf_win.h b/media/capture/video/win/video_capture_device_mf_win.h index 8ac3c7d2..0e7cfb4a 100644 --- a/media/capture/video/win/video_capture_device_mf_win.h +++ b/media/capture/video/win/video_capture_device_mf_win.h
@@ -181,9 +181,6 @@ base::queue<TakePhotoCallback> video_stream_take_photo_callbacks_; base::WaitableEvent capture_initialize_; base::WaitableEvent capture_error_; - base::WaitableEvent capture_stopped_; - base::WaitableEvent capture_started_; - HRESULT last_error_hr_ = S_OK; scoped_refptr<DXGIDeviceManager> dxgi_device_manager_; absl::optional<int> camera_rotation_; VideoCaptureParams params_;
diff --git a/media/capture/video/win/video_capture_device_mf_win_unittest.cc b/media/capture/video/win/video_capture_device_mf_win_unittest.cc index bf4eb40..15812ed 100644 --- a/media/capture/video/win/video_capture_device_mf_win_unittest.cc +++ b/media/capture/video/win/video_capture_device_mf_win_unittest.cc
@@ -575,7 +575,6 @@ IFACEMETHODIMP StartPreview(void) override { OnStartPreview(); - FireCaptureEvent(MF_CAPTURE_ENGINE_PREVIEW_STARTED, S_OK); return S_OK; } @@ -583,7 +582,6 @@ IFACEMETHODIMP StopPreview(void) override { OnStopPreview(); - FireCaptureEvent(MF_CAPTURE_ENGINE_PREVIEW_STOPPED, S_OK); return S_OK; }
diff --git a/net/http/http_stream_factory_job.h b/net/http/http_stream_factory_job.h index 354cf8d..2c3f9af 100644 --- a/net/http/http_stream_factory_job.h +++ b/net/http/http_stream_factory_job.h
@@ -388,7 +388,7 @@ // describe some proxy cases. const bool using_ssl_; - // True if Job actually uses HTTP/2. Note this describes both using QUIC + // True if Job actually uses QUIC. Note this describes both using QUIC // with an HTTPS origin, and proxying a cleartext HTTP request over an QUIC // proxy. This differs from `using_ssl_`, which only describes the origin. const bool using_quic_;
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn index bf915ae6..d50ad56 100644 --- a/net/third_party/quiche/BUILD.gn +++ b/net/third_party/quiche/BUILD.gn
@@ -1251,7 +1251,7 @@ } executable("quic_crypto_message_printer") { - sources = [ "src/quiche/quic/core/crypto/crypto_message_printer_bin.cc" ] + sources = [ "src/quiche/quic/tools/crypto_message_printer_bin.cc" ] configs += [ ":quiche_internal_config" ] public_configs = [ ":quiche_config" ] @@ -1288,7 +1288,7 @@ configs += [ ":quiche_internal_config" ] public_configs = [ ":quiche_config" ] - sources = [ "src/quiche/quic/core/qpack/qpack_offline_decoder_bin.cc" ] + sources = [ "src/quiche/quic/tools/qpack_offline_decoder_bin.cc" ] deps = [ "//base", "//net",
diff --git a/remoting/host/BUILD.gn b/remoting/host/BUILD.gn index 0df13df..a365f43 100644 --- a/remoting/host/BUILD.gn +++ b/remoting/host/BUILD.gn
@@ -559,6 +559,7 @@ deps += [ "//ash", "//remoting/host/chromeos", + "//remoting/host/chromeos:features", "//ui/base/ime/ash", ] @@ -803,6 +804,7 @@ ] deps += [ "//remoting/host/chromeos", + "//remoting/host/chromeos:features", "//remoting/host/chromeos:reporter_unit_tests", "//remoting/host/chromeos:unit_tests", "//ui/message_center:test_support",
diff --git a/remoting/host/chromeos/BUILD.gn b/remoting/host/chromeos/BUILD.gn index 5a9b20a..bcbda06 100644 --- a/remoting/host/chromeos/BUILD.gn +++ b/remoting/host/chromeos/BUILD.gn
@@ -12,8 +12,6 @@ "aura_desktop_capturer.h", "clipboard_aura.cc", "clipboard_aura.h", - "features.cc", - "features.h", "message_box.cc", "message_box.h", "mouse_cursor_monitor_aura.cc", @@ -40,6 +38,7 @@ ] deps = [ + ":features", "//remoting/base:base", "//remoting/host:clipboard", "//ui/aura/cursor", @@ -125,6 +124,7 @@ deps = [ ":chromeos", + ":features", "//base/test:test_support", "//remoting/host:common", "//remoting/host:test_support", @@ -136,3 +136,11 @@ "//ui/display/manager", ] } + +source_set("features") { + sources = [ + "features.cc", + "features.h", + ] + deps = [ "//base" ] +}
diff --git a/remoting/host/chromeos/aura_desktop_capturer.cc b/remoting/host/chromeos/aura_desktop_capturer.cc index 40ffe33..9c3d59e1 100644 --- a/remoting/host/chromeos/aura_desktop_capturer.cc +++ b/remoting/host/chromeos/aura_desktop_capturer.cc
@@ -89,7 +89,7 @@ } bool AuraDesktopCapturer::SelectSource(SourceId id) { - if (!base::FeatureList::IsEnabled(kEnableMultiMonitorsInCrd)) + if (!base::FeatureList::IsEnabled(features::kEnableMultiMonitorsInCrd)) return false; if (!util_.GetDisplayForId(id))
diff --git a/remoting/host/chromeos/aura_desktop_capturer_unittest.cc b/remoting/host/chromeos/aura_desktop_capturer_unittest.cc index 39d7a0f..d501fa3f 100644 --- a/remoting/host/chromeos/aura_desktop_capturer_unittest.cc +++ b/remoting/host/chromeos/aura_desktop_capturer_unittest.cc
@@ -197,7 +197,7 @@ TEST_F(AuraDesktopCapturerTest, ShouldNotAllowSwitchingToSecondaryMonitorIfFeatureFlagIsDisabled) { base::test::ScopedFeatureList features; - features.InitAndDisableFeature(kEnableMultiMonitorsInCrd); + features.InitAndDisableFeature(features::kEnableMultiMonitorsInCrd); display_util().AddDisplayWithId(111); @@ -207,7 +207,7 @@ TEST_F(AuraDesktopCapturerTest, ShouldAllowSwitchingToSecondaryMonitorIfFeatureFlagIsEnabled) { - base::test::ScopedFeatureList features{kEnableMultiMonitorsInCrd}; + base::test::ScopedFeatureList features{features::kEnableMultiMonitorsInCrd}; // We're using a value bigger than 32 bit to ensure nothing gets truncated. constexpr int64_t display_id = 123456789123456789; @@ -225,14 +225,14 @@ } TEST_F(AuraDesktopCapturerTest, ShouldFailSwitchingToNonExistingMonitor) { - base::test::ScopedFeatureList features{kEnableMultiMonitorsInCrd}; + base::test::ScopedFeatureList features{features::kEnableMultiMonitorsInCrd}; capturer_.Start(&desktop_capturer_callback()); EXPECT_FALSE(capturer_.SelectSource(222)); } TEST_F(AuraDesktopCapturerTest, ShouldUseCorrectDisplayAfterSwitching) { - base::test::ScopedFeatureList features{kEnableMultiMonitorsInCrd}; + base::test::ScopedFeatureList features{features::kEnableMultiMonitorsInCrd}; display_util().AddPrimaryDisplay(); display_util().AddDisplayWithId(222);
diff --git a/remoting/host/chromeos/features.cc b/remoting/host/chromeos/features.cc index d0cc8080..1aa7804 100644 --- a/remoting/host/chromeos/features.cc +++ b/remoting/host/chromeos/features.cc
@@ -4,9 +4,9 @@ #include "remoting/host/chromeos/features.h" -namespace remoting { +namespace remoting::features { const base::Feature kEnableMultiMonitorsInCrd{ "EnableMultiMonitorsInCrd", base::FEATURE_DISABLED_BY_DEFAULT}; -} // namespace remoting +} // namespace remoting::features
diff --git a/remoting/host/chromeos/features.h b/remoting/host/chromeos/features.h index 15d50773..e985524 100644 --- a/remoting/host/chromeos/features.h +++ b/remoting/host/chromeos/features.h
@@ -7,11 +7,11 @@ #include "base/feature_list.h" -namespace remoting { +namespace remoting::features { // Enable to allow CRD to stream other monitors than the primary display. extern const base::Feature kEnableMultiMonitorsInCrd; -} // namespace remoting +} // namespace remoting::features #endif // REMOTING_HOST_CHROMEOS_FEATURES_H_
diff --git a/remoting/host/desktop_display_info_loader_chromeos.cc b/remoting/host/desktop_display_info_loader_chromeos.cc index 51a01a81..690de89 100644 --- a/remoting/host/desktop_display_info_loader_chromeos.cc +++ b/remoting/host/desktop_display_info_loader_chromeos.cc
@@ -55,7 +55,7 @@ }; DesktopDisplayInfo DesktopDisplayInfoLoaderChromeOs::GetCurrentDisplayInfo() { - if (!base::FeatureList::IsEnabled(kEnableMultiMonitorsInCrd)) + if (!base::FeatureList::IsEnabled(features::kEnableMultiMonitorsInCrd)) return DesktopDisplayInfo(); const DisplayId primary_display_id =
diff --git a/remoting/host/desktop_display_info_loader_chromeos_unittest.cc b/remoting/host/desktop_display_info_loader_chromeos_unittest.cc index 771e121d..f7e7513f 100644 --- a/remoting/host/desktop_display_info_loader_chromeos_unittest.cc +++ b/remoting/host/desktop_display_info_loader_chromeos_unittest.cc
@@ -74,7 +74,7 @@ private: base::test::SingleThreadTaskEnvironment environment_; - base::test::ScopedFeatureList features_{kEnableMultiMonitorsInCrd}; + base::test::ScopedFeatureList features_{features::kEnableMultiMonitorsInCrd}; test::ScopedFakeAshDisplayUtil display_util_; std::unique_ptr<DesktopDisplayInfoLoader> display_info_loader_ = @@ -84,7 +84,7 @@ TEST_F(DesktopDisplayInfoLoaderChromeOsTest, ShouldReturnNothingIfFeatureIsDisabled) { base::test::ScopedFeatureList features; - features.InitAndDisableFeature(kEnableMultiMonitorsInCrd); + features.InitAndDisableFeature(features::kEnableMultiMonitorsInCrd); display_util().AddPrimaryDisplay(); display_util().AddDisplayWithId(111);
diff --git a/remoting/host/webauthn/BUILD.gn b/remoting/host/webauthn/BUILD.gn index b7e7397e..716e040 100644 --- a/remoting/host/webauthn/BUILD.gn +++ b/remoting/host/webauthn/BUILD.gn
@@ -49,6 +49,7 @@ ":webauthn", "//base", "//mojo/core/embedder:embedder", + "//remoting/base", "//remoting/host:chromoting_host_services_client", "//remoting/host/base", "//remoting/host/native_messaging",
diff --git a/remoting/host/webauthn/remote_webauthn_main.cc b/remoting/host/webauthn/remote_webauthn_main.cc index 71f4c585..a0357ac 100644 --- a/remoting/host/webauthn/remote_webauthn_main.cc +++ b/remoting/host/webauthn/remote_webauthn_main.cc
@@ -8,13 +8,16 @@ #include "base/command_line.h" #include "base/files/file.h" #include "base/logging.h" +#include "base/memory/scoped_refptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/task/single_thread_task_executor.h" +#include "base/task/thread_pool/thread_pool_instance.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "mojo/core/embedder/embedder.h" #include "mojo/core/embedder/scoped_ipc_support.h" +#include "remoting/base/auto_thread_task_runner.h" #include "remoting/base/logging.h" #include "remoting/host/base/host_exit_codes.h" #include "remoting/host/chromoting_host_services_client.h" @@ -87,13 +90,18 @@ #endif // BUILDFLAG(IS_POSIX) auto native_messaging_host = - std::make_unique<RemoteWebAuthnNativeMessagingHost>(task_runner); + std::make_unique<RemoteWebAuthnNativeMessagingHost>( + base::MakeRefCounted<AutoThreadTaskRunner>(task_runner, + run_loop.QuitClosure())); native_messaging_host->Start(&native_messaging_pipe); native_messaging_pipe.Start(std::move(native_messaging_host), std::move(channel)); run_loop.Run(); + // Block until tasks blocking shutdown have completed their execution. + base::ThreadPoolInstance::Get()->Shutdown(); + return kSuccessExitCode; }
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json index 0d3d69d..0a928883 100644 --- a/testing/buildbot/chrome.json +++ b/testing/buildbot/chrome.json
@@ -1911,7 +1911,7 @@ { "args": [], "cros_board": "atlas", - "cros_img": "atlas-release/R103-14792.0.0", + "cros_img": "atlas-release/R103-14800.0.0", "name": "lacros_all_tast_tests ATLAS_RELEASE_LKGM", "resultdb": { "enable": true, @@ -1927,7 +1927,7 @@ { "args": [], "cros_board": "atlas", - "cros_img": "atlas-release/R103-14767.0.0", + "cros_img": "atlas-release/R103-14794.0.0", "name": "lacros_all_tast_tests ATLAS_RELEASE_DEV", "resultdb": { "enable": true, @@ -1943,7 +1943,7 @@ { "args": [], "cros_board": "eve", - "cros_img": "eve-release/R103-14792.0.0", + "cros_img": "eve-release/R103-14800.0.0", "name": "lacros_all_tast_tests EVE_RELEASE_LKGM", "resultdb": { "enable": true, @@ -1959,7 +1959,7 @@ { "args": [], "cros_board": "eve", - "cros_img": "eve-release/R103-14767.0.0", + "cros_img": "eve-release/R103-14794.0.0", "name": "lacros_all_tast_tests EVE_RELEASE_DEV", "resultdb": { "enable": true, @@ -2020,7 +2020,7 @@ { "args": [], "cros_board": "hana", - "cros_img": "hana-release/R103-14792.0.0", + "cros_img": "hana-release/R103-14800.0.0", "name": "lacros_all_tast_tests HANA_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2036,7 +2036,7 @@ { "args": [], "cros_board": "hana", - "cros_img": "hana-release/R103-14767.0.0", + "cros_img": "hana-release/R103-14794.0.0", "name": "lacros_all_tast_tests HANA_RELEASE_DEV", "resultdb": { "enable": true, @@ -2052,7 +2052,7 @@ { "args": [], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14792.0.0", + "cros_img": "jacuzzi-release/R103-14800.0.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2068,7 +2068,7 @@ { "args": [], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14767.0.0", + "cros_img": "jacuzzi-release/R103-14794.0.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_DEV", "resultdb": { "enable": true, @@ -2086,7 +2086,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.ozone_unittests.filter" ], "cros_board": "hana", - "cros_img": "hana-release/R103-14792.0.0", + "cros_img": "hana-release/R103-14800.0.0", "name": "ozone_unittests HANA_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2103,7 +2103,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.ozone_unittests.filter" ], "cros_board": "hana", - "cros_img": "hana-release/R103-14767.0.0", + "cros_img": "hana-release/R103-14794.0.0", "name": "ozone_unittests HANA_RELEASE_DEV", "resultdb": { "enable": true, @@ -2120,7 +2120,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.ozone_unittests.filter" ], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14792.0.0", + "cros_img": "jacuzzi-release/R103-14800.0.0", "name": "ozone_unittests JACUZZI_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2137,7 +2137,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.ozone_unittests.filter" ], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14767.0.0", + "cros_img": "jacuzzi-release/R103-14794.0.0", "name": "ozone_unittests JACUZZI_RELEASE_DEV", "resultdb": { "enable": true, @@ -2154,7 +2154,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.viz_unittests.filter" ], "cros_board": "hana", - "cros_img": "hana-release/R103-14792.0.0", + "cros_img": "hana-release/R103-14800.0.0", "name": "viz_unittests HANA_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2171,7 +2171,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.viz_unittests.filter" ], "cros_board": "hana", - "cros_img": "hana-release/R103-14767.0.0", + "cros_img": "hana-release/R103-14794.0.0", "name": "viz_unittests HANA_RELEASE_DEV", "resultdb": { "enable": true, @@ -2188,7 +2188,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.viz_unittests.filter" ], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14792.0.0", + "cros_img": "jacuzzi-release/R103-14800.0.0", "name": "viz_unittests JACUZZI_RELEASE_LKGM", "resultdb": { "enable": true, @@ -2205,7 +2205,7 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/lacros-arm.viz_unittests.filter" ], "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R103-14767.0.0", + "cros_img": "jacuzzi-release/R103-14794.0.0", "name": "viz_unittests JACUZZI_RELEASE_DEV", "resultdb": { "enable": true,
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index a8b07df..47342395 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5888,21 +5888,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -5914,7 +5914,7 @@ }, "test": "lacros_chrome_browsertests", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -6034,21 +6034,21 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -6060,7 +6060,7 @@ }, "test": "lacros_chrome_browsertests_run_in_series", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests_run_in_series/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 936a4ff..2535335 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -87896,28 +87896,28 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test": "lacros_chrome_browsertests", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -88017,28 +88017,28 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "isolate_profile_data": true, "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test": "lacros_chrome_browsertests_run_in_series", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests_run_in_series/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -89408,20 +89408,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -89434,7 +89434,7 @@ }, "test": "lacros_chrome_browsertests", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -89554,20 +89554,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -89580,7 +89580,7 @@ }, "test": "lacros_chrome_browsertests_run_in_series", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests_run_in_series/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -91113,20 +91113,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -91139,7 +91139,7 @@ }, "test": "lacros_chrome_browsertests", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -91259,20 +91259,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5037.0", + "name": "lacros_chrome_browsertests_run_in_series Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -91285,7 +91285,7 @@ }, "test": "lacros_chrome_browsertests_run_in_series", "test_id_prefix": "ninja://chrome/test:lacros_chrome_browsertests_run_in_series/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [ @@ -92020,20 +92020,20 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome" ], "merge": { "args": [], "script": "//testing/merge_scripts/standard_gtest_merge.py" }, - "name": "interactive_ui_tests Lacros version skew testing ash 103.0.5037.0", + "name": "interactive_ui_tests Lacros version skew testing ash 103.0.5045.0", "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v103.0.5037.0", - "revision": "version:103.0.5037.0" + "location": "lacros_version_skew_tests_v103.0.5045.0", + "revision": "version:103.0.5045.0" } ], "dimension_sets": [ @@ -92046,7 +92046,7 @@ }, "test": "interactive_ui_tests", "test_id_prefix": "ninja://chrome/test:interactive_ui_tests/", - "variant_id": "Lacros version skew testing ash 103.0.5037.0" + "variant_id": "Lacros version skew testing ash 103.0.5045.0" }, { "args": [
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter index ef3c79b7..a9fee65 100644 --- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter +++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
@@ -80,6 +80,7 @@ -EnterpriseEnrollmentTestBase.* -EulaOfflineTest.* -EulaTest.* +-ExistingUserControllerAuthFailureTest.* -FamilyLinkNoticeScreenChildTest.* -FamilyLinkNoticeScreenManagedTest.* -FamilyLinkNoticeScreenTest.*
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter index 4217d29..11a2358 100644 --- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter +++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
@@ -80,6 +80,7 @@ EnterpriseEnrollmentTestBase.* EulaOfflineTest.* EulaTest.* +ExistingUserControllerAuthFailureTest.* FamilyLinkNoticeScreenChildTest.* FamilyLinkNoticeScreenManagedTest.* FamilyLinkNoticeScreenTest.*
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json index bb1b691..15ec9830 100644 --- a/testing/buildbot/internal.chromeos.fyi.json +++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -1126,7 +1126,7 @@ { "args": [], "cros_board": "octopus", - "cros_img": "octopus-release/R103-14792.0.0", + "cros_img": "octopus-release/R103-14800.0.0", "name": "lacros_fyi_tast_tests OCTOPUS_RELEASE_LKGM", "swarming": {}, "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)", @@ -1174,7 +1174,7 @@ { "args": [], "cros_board": "octopus", - "cros_img": "octopus-release/R103-14792.0.0", + "cros_img": "octopus-release/R103-14800.0.0", "name": "ozone_unittests OCTOPUS_RELEASE_LKGM", "swarming": {}, "test": "ozone_unittests", @@ -1226,7 +1226,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14792.0.0", + "cros_img": "strongbad-release/R103-14800.0.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_LKGM", "swarming": {}, "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)", @@ -1238,7 +1238,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14767.0.0", + "cros_img": "strongbad-release/R103-14794.0.0", "name": "lacros_all_tast_tests strongbad_RELEASE_DEV", "swarming": {}, "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)", @@ -1274,7 +1274,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14792.0.0", + "cros_img": "strongbad-release/R103-14800.0.0", "name": "ozone_unittests STRONGBAD_RELEASE_LKGM", "swarming": {}, "test": "ozone_unittests", @@ -1285,7 +1285,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14767.0.0", + "cros_img": "strongbad-release/R103-14794.0.0", "name": "ozone_unittests strongbad_RELEASE_DEV", "swarming": {}, "test": "ozone_unittests", @@ -1318,7 +1318,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14792.0.0", + "cros_img": "strongbad-release/R103-14800.0.0", "name": "viz_unittests STRONGBAD_RELEASE_LKGM", "swarming": {}, "test": "viz_unittests", @@ -1329,7 +1329,7 @@ { "args": [], "cros_board": "strongbad", - "cros_img": "strongbad-release/R103-14767.0.0", + "cros_img": "strongbad-release/R103-14794.0.0", "name": "viz_unittests strongbad_RELEASE_DEV", "swarming": {}, "test": "viz_unittests",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 11537c4c..b74fdd5 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -37,15 +37,15 @@ }, 'LACROS_VERSION_SKEW_DEV': { 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5037.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v103.0.5045.0/test_ash_chrome', ], - 'identifier': 'Lacros version skew testing ash 103.0.5037.0', + 'identifier': 'Lacros version skew testing ash 103.0.5045.0', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v103.0.5037.0', - 'revision': 'version:103.0.5037.0', + 'location': 'lacros_version_skew_tests_v103.0.5045.0', + 'revision': 'version:103.0.5045.0', }, ], }, @@ -896,7 +896,7 @@ 'skylab': { 'cros_board': 'atlas', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'atlas-release/R103-14792.0.0', + 'cros_img': 'atlas-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'ATLAS_RELEASE_LKGM', @@ -904,8 +904,8 @@ 'CROS_ATLAS_RELEASE_DEV': { 'skylab': { 'cros_board': 'atlas', - 'cros_chrome_version': '103.0.5037.0', - 'cros_img': 'atlas-release/R103-14767.0.0', + 'cros_chrome_version': '103.0.5045.0', + 'cros_img': 'atlas-release/R103-14794.0.0', }, 'enabled': True, 'identifier': 'ATLAS_RELEASE_DEV', @@ -914,7 +914,7 @@ 'skylab': { 'cros_board': 'eve', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'eve-release/R103-14792.0.0', + 'cros_img': 'eve-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'EVE_RELEASE_LKGM', @@ -922,8 +922,8 @@ 'CROS_EVE_RELEASE_DEV': { 'skylab': { 'cros_board': 'eve', - 'cros_chrome_version': '103.0.5037.0', - 'cros_img': 'eve-release/R103-14767.0.0', + 'cros_chrome_version': '103.0.5045.0', + 'cros_img': 'eve-release/R103-14794.0.0', }, 'enabled': True, 'identifier': 'EVE_RELEASE_DEV', @@ -941,7 +941,7 @@ 'skylab': { 'cros_board': 'hana', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'hana-release/R103-14792.0.0', + 'cros_img': 'hana-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'HANA_RELEASE_LKGM', @@ -949,8 +949,8 @@ 'CROS_HANA_RELEASE_DEV': { 'skylab': { 'cros_board': 'hana', - 'cros_chrome_version': '103.0.5037.0', - 'cros_img': 'hana-release/R103-14767.0.0', + 'cros_chrome_version': '103.0.5045.0', + 'cros_img': 'hana-release/R103-14794.0.0', }, 'enabled': True, 'identifier': 'HANA_RELEASE_DEV', @@ -959,7 +959,7 @@ 'skylab': { 'cros_board': 'jacuzzi', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'jacuzzi-release/R103-14792.0.0', + 'cros_img': 'jacuzzi-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'JACUZZI_RELEASE_LKGM', @@ -967,8 +967,8 @@ 'CROS_JACUZZI_RELEASE_DEV': { 'skylab': { 'cros_board': 'jacuzzi', - 'cros_chrome_version': '103.0.5037.0', - 'cros_img': 'jacuzzi-release/R103-14767.0.0', + 'cros_chrome_version': '103.0.5045.0', + 'cros_img': 'jacuzzi-release/R103-14794.0.0', }, 'enabled': True, 'identifier': 'JACUZZI_RELEASE_DEV', @@ -986,7 +986,7 @@ 'skylab': { 'cros_board': 'octopus', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'octopus-release/R103-14792.0.0', + 'cros_img': 'octopus-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'OCTOPUS_RELEASE_LKGM', @@ -1022,7 +1022,7 @@ 'skylab': { 'cros_board': 'strongbad', 'cros_chrome_version': '103.0.5045.0', - 'cros_img': 'strongbad-release/R103-14792.0.0', + 'cros_img': 'strongbad-release/R103-14800.0.0', }, 'enabled': True, 'identifier': 'STRONGBAD_RELEASE_LKGM', @@ -1030,8 +1030,8 @@ 'CROS_STRONGBAD_RELEASE_DEV': { 'skylab': { 'cros_board': 'strongbad', - 'cros_chrome_version': '103.0.5037.0', - 'cros_img': 'strongbad-release/R103-14767.0.0', + 'cros_chrome_version': '103.0.5045.0', + 'cros_img': 'strongbad-release/R103-14794.0.0', }, 'enabled': True, 'identifier': 'strongbad_RELEASE_DEV',
diff --git a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json index d8f71d1..1fdceff 100644 --- a/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json +++ b/testing/scripts/representative_perf_test_data/representatives_frame_times_upper_limit.json
@@ -22,7 +22,7 @@ }, "css_transitions_inline_style": { "ci_095": 6.862, - "avg": 23.008, + "avg": 19.535, "cpu_wall_time_ratio": 0.326 }, "aquarium_20k_fast_call": {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 9160f38..69cb6104 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -1396,17 +1396,6 @@ ], "experiments": [ { - "name": "Enabled_All_20220418", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToAds", - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ] - }, - { "name": "Enabled_LazyEmbeds_20220418", "params": { "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed" @@ -1418,29 +1407,6 @@ "disable_features": [ "AutomaticLazyFrameLoadingToAds" ] - }, - { - "name": "Enabled_LazyAds_20220418", - "enable_features": [ - "AutomaticLazyFrameLoadingToAds" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls", - "AutomaticLazyFrameLoadingToEmbeds" - ] - }, - { - "name": "Control_20220418", - "params": { - "allowed_websites": "https://www.youtube.com|/embed,https://www.google.com|/maps/embed" - }, - "enable_features": [ - "AutomaticLazyFrameLoadingToEmbedUrls" - ], - "disable_features": [ - "AutomaticLazyFrameLoadingToAds", - "AutomaticLazyFrameLoadingToEmbeds" - ] } ] } @@ -2197,6 +2163,22 @@ ] } ], + "CoalesceIndependentBeginFrame": [ + { + "platforms": [ + "android", + "android_weblayer" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CoalesceIndependentBeginFrame" + ] + } + ] + } + ], "Collections": [ { "platforms": [
diff --git a/third_party/abseil-cpp/README.chromium b/third_party/abseil-cpp/README.chromium index e6641ac..8d66e0b 100644 --- a/third_party/abseil-cpp/README.chromium +++ b/third_party/abseil-cpp/README.chromium
@@ -4,7 +4,7 @@ License: Apache 2.0 License File: LICENSE Version: 0 -Revision: 8d9cef25c70321c794ff5559cc0b1e0fa5f85e72 +Revision: 5073947530a9c74ce6da63b1fac16cc07564a3b8 Security Critical: yes Description:
diff --git a/third_party/abseil-cpp/absl/base/BUILD.bazel b/third_party/abseil-cpp/absl/base/BUILD.bazel index f6119c6..947e5afc 100644 --- a/third_party/abseil-cpp/absl/base/BUILD.bazel +++ b/third_party/abseil-cpp/absl/base/BUILD.bazel
@@ -75,6 +75,7 @@ ":atomic_hook", ":config", ":core_headers", + ":errno_saver", ":log_severity", ], )
diff --git a/third_party/abseil-cpp/absl/base/BUILD.gn b/third_party/abseil-cpp/absl/base/BUILD.gn index 04a84b4..e4e4637 100644 --- a/third_party/abseil-cpp/absl/base/BUILD.gn +++ b/third_party/abseil-cpp/absl/base/BUILD.gn
@@ -35,6 +35,7 @@ ":atomic_hook", ":config", ":core_headers", + ":errno_saver", ":log_severity", ] visibility = [ "//third_party/abseil-cpp/absl/*" ]
diff --git a/third_party/abseil-cpp/absl/base/CMakeLists.txt b/third_party/abseil-cpp/absl/base/CMakeLists.txt index 0e1e041..ed55093a 100644 --- a/third_party/abseil-cpp/absl/base/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/base/CMakeLists.txt
@@ -66,6 +66,7 @@ absl::atomic_hook absl::config absl::core_headers + absl::errno_saver absl::log_severity COPTS ${ABSL_DEFAULT_COPTS}
diff --git a/third_party/abseil-cpp/absl/base/internal/raw_logging.cc b/third_party/abseil-cpp/absl/base/internal/raw_logging.cc index 509d746..ca2a75f 100644 --- a/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +++ b/third_party/abseil-cpp/absl/base/internal/raw_logging.cc
@@ -14,15 +14,17 @@ #include "absl/base/internal/raw_logging.h" -#include <stddef.h> #include <cstdarg> +#include <cstddef> #include <cstdio> #include <cstdlib> #include <cstring> +#include <string> #include "absl/base/attributes.h" #include "absl/base/config.h" #include "absl/base/internal/atomic_hook.h" +#include "absl/base/internal/errno_saver.h" #include "absl/base/log_severity.h" // We know how to perform low-level writes to stderr in POSIX and Windows. For @@ -78,11 +80,10 @@ // a selected set of platforms for which we expect not to be able to raw log. ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES - absl::base_internal::AtomicHook<LogPrefixHook> - log_prefix_hook; +absl::base_internal::AtomicHook<LogFilterAndPrefixHook> + log_filter_and_prefix_hook; ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES - absl::base_internal::AtomicHook<AbortHook> - abort_hook; +absl::base_internal::AtomicHook<AbortHook> abort_hook; #ifdef ABSL_LOW_LEVEL_WRITE_SUPPORTED constexpr char kTruncated[] = " ... (message truncated)\n"; @@ -151,9 +152,9 @@ } #endif - auto log_prefix_hook_ptr = log_prefix_hook.Load(); - if (log_prefix_hook_ptr) { - enabled = log_prefix_hook_ptr(severity, file, line, &buf, &size); + auto log_filter_and_prefix_hook_ptr = log_filter_and_prefix_hook.Load(); + if (log_filter_and_prefix_hook_ptr) { + enabled = log_filter_and_prefix_hook_ptr(severity, file, line, &buf, &size); } else { if (enabled) { DoRawLog(&buf, &size, "[%s : %d] RAW: ", file, line); @@ -169,7 +170,7 @@ } else { DoRawLog(&buf, &size, "%s", kTruncated); } - SafeWriteToStderr(buffer, strlen(buffer)); + AsyncSignalSafeWriteToStderr(buffer, strlen(buffer)); } #else static_cast<void>(format); @@ -196,8 +197,11 @@ } // namespace -void SafeWriteToStderr(const char *s, size_t len) { +void AsyncSignalSafeWriteToStderr(const char* s, size_t len) { + absl::base_internal::ErrnoSaver errno_saver; #if defined(ABSL_HAVE_SYSCALL_WRITE) + // We prefer calling write via `syscall` to minimize the risk of libc doing + // something "helpful". syscall(SYS_write, STDERR_FILENO, s, len); #elif defined(ABSL_HAVE_POSIX_WRITE) write(STDERR_FILENO, s, len); @@ -230,7 +234,9 @@ absl::base_internal::AtomicHook<InternalLogFunction> internal_log_function(DefaultInternalLog); -void RegisterLogPrefixHook(LogPrefixHook func) { log_prefix_hook.Store(func); } +void RegisterLogFilterAndPrefixHook(LogFilterAndPrefixHook func) { + log_filter_and_prefix_hook.Store(func); +} void RegisterAbortHook(AbortHook func) { abort_hook.Store(func); }
diff --git a/third_party/abseil-cpp/absl/base/internal/raw_logging.h b/third_party/abseil-cpp/absl/base/internal/raw_logging.h index 2bf7aab..0747c9df 100644 --- a/third_party/abseil-cpp/absl/base/internal/raw_logging.h +++ b/third_party/abseil-cpp/absl/base/internal/raw_logging.h
@@ -109,12 +109,9 @@ void RawLog(absl::LogSeverity severity, const char* file, int line, const char* format, ...) ABSL_PRINTF_ATTRIBUTE(4, 5); -// Writes the provided buffer directly to stderr, in a safe, low-level manner. -// -// In POSIX this means calling write(), which is async-signal safe and does -// not malloc. If the platform supports the SYS_write syscall, we invoke that -// directly to side-step any libc interception. -void SafeWriteToStderr(const char *s, size_t len); +// Writes the provided buffer directly to stderr, in a signal-safe, low-level +// manner. +void AsyncSignalSafeWriteToStderr(const char* s, size_t len); // compile-time function to get the "base" filename, that is, the part of // a filename after the last "/" or "\" path separator. The search starts at @@ -148,11 +145,12 @@ // 'severity' is the severity level of the message being written. // 'file' and 'line' are the file and line number where the ABSL_RAW_LOG macro // was located. -// 'buffer' and 'buf_size' are pointers to the buffer and buffer size. If the -// hook writes a prefix, it must increment *buffer and decrement *buf_size +// 'buf' and 'buf_size' are pointers to the buffer and buffer size. If the +// hook writes a prefix, it must increment *buf and decrement *buf_size // accordingly. -using LogPrefixHook = bool (*)(absl::LogSeverity severity, const char* file, - int line, char** buffer, int* buf_size); +using LogFilterAndPrefixHook = bool (*)(absl::LogSeverity severity, + const char* file, int line, char** buf, + int* buf_size); // Function type for a raw_logging customization hook called to abort a process // when a FATAL message is logged. If the provided AbortHook() returns, the @@ -162,7 +160,10 @@ // was located. // The NUL-terminated logged message lives in the buffer between 'buf_start' // and 'buf_end'. 'prefix_end' points to the first non-prefix character of the -// buffer (as written by the LogPrefixHook.) +// buffer (as written by the LogFilterAndPrefixHook.) +// +// The lifetime of the filename and message buffers will not end while the +// process remains alive. using AbortHook = void (*)(const char* file, int line, const char* buf_start, const char* prefix_end, const char* buf_end); @@ -184,7 +185,7 @@ // // These functions are safe to call at any point during initialization; they do // not block or malloc, and are async-signal safe. -void RegisterLogPrefixHook(LogPrefixHook func); +void RegisterLogFilterAndPrefixHook(LogFilterAndPrefixHook func); void RegisterAbortHook(AbortHook func); void RegisterInternalLogFunction(InternalLogFunction func);
diff --git a/third_party/abseil-cpp/absl/container/internal/btree.h b/third_party/abseil-cpp/absl/container/internal/btree.h index da2abcb90..cb39b16 100644 --- a/third_party/abseil-cpp/absl/container/internal/btree.h +++ b/third_party/abseil-cpp/absl/container/internal/btree.h
@@ -191,8 +191,8 @@ // Inherit from checked_compare_base to support function pointers and also // keep empty-base-optimization (EBO) support for classes. // Note: we can't use CompressedTuple here because that would interfere - // with the EBO for `btree::root_`. `btree::root_` is itself a CompressedTuple - // and nested `CompressedTuple`s don't support EBO. + // with the EBO for `btree::rightmost_`. `btree::rightmost_` is itself a + // CompressedTuple and nested `CompressedTuple`s don't support EBO. // TODO(b/214288561): use CompressedTuple instead once it supports EBO for // nested `CompressedTuple`s. struct checked_compare : checked_compare_base<Compare> { @@ -1329,7 +1329,7 @@ public: btree(const key_compare &comp, const allocator_type &alloc) - : root_(comp, alloc, EmptyNode()), rightmost_(EmptyNode()), size_(0) {} + : root_(EmptyNode()), rightmost_(comp, alloc, EmptyNode()), size_(0) {} btree(const btree &other) : btree(other, other.allocator()) {} btree(const btree &other, const allocator_type &alloc) @@ -1337,10 +1337,10 @@ copy_or_move_values_in_order(other); } btree(btree &&other) noexcept - : root_(std::move(other.root_)), - rightmost_(absl::exchange(other.rightmost_, EmptyNode())), + : root_(absl::exchange(other.root_, EmptyNode())), + rightmost_(std::move(other.rightmost_)), size_(absl::exchange(other.size_, 0)) { - other.mutable_root() = EmptyNode(); + other.mutable_rightmost() = EmptyNode(); } btree(btree &&other, const allocator_type &alloc) : btree(other.key_comp(), alloc) { @@ -1365,9 +1365,9 @@ iterator begin() { return iterator(leftmost()); } const_iterator begin() const { return const_iterator(leftmost()); } - iterator end() { return iterator(rightmost_, rightmost_->finish()); } + iterator end() { return iterator(rightmost(), rightmost()->finish()); } const_iterator end() const { - return const_iterator(rightmost_, rightmost_->finish()); + return const_iterator(rightmost(), rightmost()->finish()); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { @@ -1493,7 +1493,7 @@ void swap(btree &other); const key_compare &key_comp() const noexcept { - return root_.template get<0>(); + return rightmost_.template get<0>(); } template <typename K1, typename K2> bool compare_keys(const K1 &a, const K2 &b) const { @@ -1587,10 +1587,17 @@ friend struct btree_access; // Internal accessor routines. - node_type *root() { return root_.template get<2>(); } - const node_type *root() const { return root_.template get<2>(); } - node_type *&mutable_root() noexcept { return root_.template get<2>(); } - key_compare *mutable_key_comp() noexcept { return &root_.template get<0>(); } + node_type *root() { return root_; } + const node_type *root() const { return root_; } + node_type *&mutable_root() noexcept { return root_; } + node_type *rightmost() { return rightmost_.template get<2>(); } + const node_type *rightmost() const { return rightmost_.template get<2>(); } + node_type *&mutable_rightmost() noexcept { + return rightmost_.template get<2>(); + } + key_compare *mutable_key_comp() noexcept { + return &rightmost_.template get<0>(); + } // The leftmost node is stored as the parent of the root node. node_type *leftmost() { return root()->parent(); } @@ -1598,10 +1605,10 @@ // Allocator routines. allocator_type *mutable_allocator() noexcept { - return &root_.template get<1>(); + return &rightmost_.template get<1>(); } const allocator_type &allocator() const noexcept { - return root_.template get<1>(); + return rightmost_.template get<1>(); } // Allocates a correctly aligned node of at least size bytes using the @@ -1709,15 +1716,14 @@ return res; } - // We use compressed tuple in order to save space because key_compare and - // allocator_type are usually empty. - absl::container_internal::CompressedTuple<key_compare, allocator_type, - node_type *> - root_; + node_type *root_; // A pointer to the rightmost node. Note that the leftmost node is stored as - // the root's parent. - node_type *rightmost_; + // the root's parent. We use compressed tuple in order to save space because + // key_compare and allocator_type are usually empty. + absl::container_internal::CompressedTuple<key_compare, allocator_type, + node_type *> + rightmost_; // Number of values. size_type size_; @@ -2141,7 +2147,7 @@ auto btree<P>::insert_unique(const K &key, Args &&... args) -> std::pair<iterator, bool> { if (empty()) { - mutable_root() = rightmost_ = new_leaf_root_node(1); + mutable_root() = mutable_rightmost() = new_leaf_root_node(1); } SearchResult<iterator, is_key_compare_to::value> res = internal_locate(key); @@ -2208,7 +2214,7 @@ template <typename ValueType> auto btree<P>::insert_multi(const key_type &key, ValueType &&v) -> iterator { if (empty()) { - mutable_root() = rightmost_ = new_leaf_root_node(1); + mutable_root() = mutable_rightmost() = new_leaf_root_node(1); } iterator iter = internal_upper_bound(key); @@ -2272,15 +2278,15 @@ using std::swap; if (absl::allocator_traits< allocator_type>::propagate_on_container_copy_assignment::value) { - // Note: `root_` also contains the allocator and the key comparator. swap(root_, other.root_); + // Note: `rightmost_` also contains the allocator and the key comparator. swap(rightmost_, other.rightmost_); swap(size_, other.size_); } else { if (allocator() == other.allocator()) { swap(mutable_root(), other.mutable_root()); swap(*mutable_key_comp(), *other.mutable_key_comp()); - swap(rightmost_, other.rightmost_); + swap(mutable_rightmost(), other.mutable_rightmost()); swap(size_, other.size_); } else { // We aren't allowed to propagate the allocator and the allocator is @@ -2422,8 +2428,7 @@ if (!empty()) { node_type::clear_and_delete(root(), mutable_allocator()); } - mutable_root() = EmptyNode(); - rightmost_ = EmptyNode(); + mutable_root() = mutable_rightmost() = EmptyNode(); size_ = 0; } @@ -2432,15 +2437,15 @@ using std::swap; if (absl::allocator_traits< allocator_type>::propagate_on_container_swap::value) { - // Note: `root_` also contains the allocator and the key comparator. - swap(root_, other.root_); + // Note: `rightmost_` also contains the allocator and the key comparator. + swap(rightmost_, other.rightmost_); } else { // It's undefined behavior if the allocators are unequal here. assert(allocator() == other.allocator()); - swap(mutable_root(), other.mutable_root()); + swap(mutable_rightmost(), other.mutable_rightmost()); swap(*mutable_key_comp(), *other.mutable_key_comp()); } - swap(rightmost_, other.rightmost_); + swap(mutable_root(), other.mutable_root()); swap(size_, other.size_); } @@ -2448,12 +2453,12 @@ void btree<P>::verify() const { assert(root() != nullptr); assert(leftmost() != nullptr); - assert(rightmost_ != nullptr); + assert(rightmost() != nullptr); assert(empty() || size() == internal_verify(root(), nullptr, nullptr)); assert(leftmost() == (++const_iterator(root(), -1)).node_); - assert(rightmost_ == (--const_iterator(root(), root()->finish())).node_); + assert(rightmost() == (--const_iterator(root(), root()->finish())).node_); assert(leftmost()->is_leaf()); - assert(rightmost_->is_leaf()); + assert(rightmost()->is_leaf()); } template <typename P> @@ -2539,7 +2544,7 @@ mutable_root() = parent; // If the former root was a leaf node, then it's now the rightmost node. assert(parent->start_child()->is_internal() || - parent->start_child() == rightmost_); + parent->start_child() == rightmost()); } // Split the node. @@ -2547,7 +2552,7 @@ if (node->is_leaf()) { split_node = new_leaf_node(parent); node->split(insert_position, split_node, mutable_allocator()); - if (rightmost_ == node) rightmost_ = split_node; + if (rightmost() == node) mutable_rightmost() = split_node; } else { split_node = new_internal_node(parent); node->split(insert_position, split_node, mutable_allocator()); @@ -2562,7 +2567,7 @@ template <typename P> void btree<P>::merge_nodes(node_type *left, node_type *right) { left->merge(right, mutable_allocator()); - if (rightmost_ == right) rightmost_ = left; + if (rightmost() == right) mutable_rightmost() = left; } template <typename P> @@ -2627,7 +2632,7 @@ // Deleted the last item on the root node, shrink the height of the tree. if (orig_root->is_leaf()) { assert(size() == 0); - mutable_root() = rightmost_ = EmptyNode(); + mutable_root() = mutable_rightmost() = EmptyNode(); } else { node_type *child = orig_root->start_child(); child->make_root(); @@ -2681,7 +2686,7 @@ old_root->set_finish(old_root->start()); new_root->set_generation(old_root->generation()); node_type::clear_and_delete(old_root, alloc); - mutable_root() = rightmost_ = new_root; + mutable_root() = mutable_rightmost() = new_root; } else { rebalance_or_split(&iter); }
diff --git a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h index 046a693..56251b2 100644 --- a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +++ b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h
@@ -95,14 +95,21 @@ // Storing control bytes in a separate array also has beneficial cache effects, // since more logical slots will fit into a cache line. // +// # Hashing +// +// We compute two separate hashes, `H1` and `H2`, from the hash of an object. +// `H1(hash(x))` is an index into `slots`, and essentially the starting point +// for the probe sequence. `H2(hash(x))` is a 7-bit value used to filter out +// objects that cannot possibly be the one we are looking for. +// // # Table operations. // -// The key operations are `insert`, `find`, and `erase_at`; the operations below +// The key operations are `insert`, `find`, and `erase`. // -// `insert` and `erase` are implemented in terms of find, so we describe that -// one first. To `find` a value `x`, we compute `hash(x)`. From `H1(hash(x))` -// and the capacity, we construct a `probe_seq` that visits every group of -// slots in some interesting order. +// Since `insert` and `erase` are implemented in terms of `find`, we describe +// `find` first. To `find` a value `x`, we compute `hash(x)`. From +// `H1(hash(x))` and the capacity, we construct a `probe_seq` that visits every +// group of slots in some interesting order. // // We now walk through these indices. At each index, we select the entire group // starting with that index and extract potential candidates: occupied slots @@ -112,32 +119,21 @@ // next probe index. Tombstones effectively behave like full slots that never // match the value we're looking for. // -// The `H2` bits ensure that if we perform a ==, a false positive is very very -// rare (assuming the hash function looks enough like a random oracle). To see -// this, note that in a group, there will be at most 8 or 16 `H2` values, but -// an `H2` can be any one of 128 values. Viewed as a birthday attack, we can use -// the rule of thumb that the probability of a collision among n choices of m -// symbols is `p(n, m) ~ n^2/2m. In table form: +// The `H2` bits ensure when we compare a slot to an object with `==`, we are +// likely to have actually found the object. That is, the chance is low that +// `==` is called and returns `false`. Thus, when we search for an object, we +// are unlikely to call `==` many times. This likelyhood can be analyzed as +// follows (assuming that H2 is a random enough hash function). // -// n | p(n) | n | p(n) -// 0 | 0.000 | 8 | 0.250 -// 1 | 0.004 | 9 | 0.316 -// 2 | 0.016 | 10 | 0.391 -// 3 | 0.035 | 11 | 0.473 -// 4 | 0.062 | 12 | 0.562 -// 5 | 0.098 | 13 | 0.660 -// 6 | 0.141 | 14 | 0.766 -// 7 | 0.191 | 15 | 0.879 -// -// The rule of thumb breaks down at around `n = 12`, but such groups would only -// occur for tables close to their max load factor. This is far better than an -// ordinary open-addressing table, which needs to perform an == at every step of -// the probe sequence. These probabilities don't tell the full story (for -// example, because elements are inserted into a group from the front, and -// candidates are =='ed from the front, the collision is only effective in -// rare cases e.g. another probe sequence inserted into a deleted slot in front -// of us). -// +// Let's assume that there are `k` "wrong" objects that must be examined in a +// probe sequence. For example, when doing a `find` on an object that is in the +// table, `k` is the number of objects between the start of the probe sequence +// and the final found object (not including the final found object). The +// expected number of objects with an H2 match is then `k/128`. Measurements +// and analysis indicate that even at high load factors, `k` is less than 32, +// meaning that the number of "false positive" comparisons we must perform is +// less than 1/8 per `find`. + // `insert` is implemented in terms of `unchecked_insert`, which inserts a // value presumed to not be in the table (violating this requirement will cause // the table to behave erratically). Given `x` and its hash `hash(x)`, to insert @@ -232,7 +228,7 @@ // // Currently, the sequence is a triangular progression of the form // -// p(i) := Width * (i^2 - i)/2 + hash (mod mask + 1) +// p(i) := Width * (i^2 + i)/2 + hash (mod mask + 1) // // The use of `Width` ensures that each probe step does not overlap groups; // the sequence effectively outputs the addresses of *groups* (although not @@ -245,6 +241,10 @@ // for selecting candidates. However, when those candidates' slots are // actually inspected, there are no corresponding slots for the cloned bytes, // so we need to make sure we've treated those offsets as "wrapping around". +// +// It turns out that this probe sequence visits every group exactly once if the +// number of groups is a power of two, since (i^2+i)/2 is a bijection in +// Z/(2^m). See https://en.wikipedia.org/wiki/Quadratic_probing template <size_t Width> class probe_seq { public:
diff --git a/third_party/abseil-cpp/absl/debugging/BUILD.bazel b/third_party/abseil-cpp/absl/debugging/BUILD.bazel index 7f5c1cad..dce59e1 100644 --- a/third_party/abseil-cpp/absl/debugging/BUILD.bazel +++ b/third_party/abseil-cpp/absl/debugging/BUILD.bazel
@@ -143,7 +143,6 @@ "//absl/base", "//absl/base:config", "//absl/base:core_headers", - "//absl/base:errno_saver", "//absl/base:raw_logging_internal", ], )
diff --git a/third_party/abseil-cpp/absl/debugging/BUILD.gn b/third_party/abseil-cpp/absl/debugging/BUILD.gn index 9fc3f128..76aaf33 100644 --- a/third_party/abseil-cpp/absl/debugging/BUILD.gn +++ b/third_party/abseil-cpp/absl/debugging/BUILD.gn
@@ -80,7 +80,6 @@ "//third_party/abseil-cpp/absl/base", "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:core_headers", - "//third_party/abseil-cpp/absl/base:errno_saver", "//third_party/abseil-cpp/absl/base:raw_logging_internal", ] }
diff --git a/third_party/abseil-cpp/absl/debugging/CMakeLists.txt b/third_party/abseil-cpp/absl/debugging/CMakeLists.txt index 7507ff3..3295273 100644 --- a/third_party/abseil-cpp/absl/debugging/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/debugging/CMakeLists.txt
@@ -126,7 +126,6 @@ absl::base absl::config absl::core_headers - absl::errno_saver absl::raw_logging_internal PUBLIC )
diff --git a/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc b/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc index 3fe8827..affade3 100644 --- a/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc +++ b/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc
@@ -42,7 +42,6 @@ #include <ctime> #include "absl/base/attributes.h" -#include "absl/base/internal/errno_saver.h" #include "absl/base/internal/raw_logging.h" #include "absl/base/internal/sysinfo.h" #include "absl/debugging/internal/examine_stack.h" @@ -217,8 +216,7 @@ #endif static void WriteToStderr(const char* data) { - absl::base_internal::ErrnoSaver errno_saver; - absl::raw_logging_internal::SafeWriteToStderr(data, strlen(data)); + absl::raw_logging_internal::AsyncSignalSafeWriteToStderr(data, strlen(data)); } static void WriteSignalMessage(int signo, int cpu,
diff --git a/third_party/abseil-cpp/absl/types/optional_test.cc b/third_party/abseil-cpp/absl/types/optional_test.cc index 1846e69..9477c150 100644 --- a/third_party/abseil-cpp/absl/types/optional_test.cc +++ b/third_party/abseil-cpp/absl/types/optional_test.cc
@@ -27,6 +27,11 @@ #include "absl/meta/type_traits.h" #include "absl/strings/string_view.h" +#if defined(__cplusplus) && __cplusplus >= 202002L +// In C++20, volatile-qualified return types are deprecated. +#define ABSL_VOLATILE_RETURN_TYPES_DEPRECATED 1 +#endif + // The following types help test an internal compiler error in GCC5 though // GCC10. The case OptionalTest.InternalCompilerErrorInGcc5ToGcc10 crashes the // compiler without a workaround. This test case should remain at the beginning @@ -231,6 +236,7 @@ EXPECT_TRUE(opt42_copy); EXPECT_EQ(42, *opt42_copy); } +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) { absl::optional<volatile int> empty, opt42 = 42; absl::optional<volatile int> empty_copy(empty); @@ -239,6 +245,7 @@ EXPECT_TRUE(opt42_copy); EXPECT_EQ(42, *opt42_copy); } +#endif // test copyablility EXPECT_TRUE(std::is_copy_constructible<absl::optional<int>>::value); EXPECT_TRUE(std::is_copy_constructible<absl::optional<Copyable>>::value); @@ -250,18 +257,11 @@ EXPECT_FALSE( absl::is_trivially_copy_constructible<absl::optional<Copyable>>::value); -#if defined(ABSL_USES_STD_OPTIONAL) && defined(__GLIBCXX__) - // libstdc++ std::optional implementation (as of 7.2) has a bug: when T is - // trivially copyable, optional<T> is not trivially copyable (due to one of - // its base class is unconditionally nontrivial). -#define ABSL_GLIBCXX_OPTIONAL_TRIVIALITY_BUG 1 -#endif -#ifndef ABSL_GLIBCXX_OPTIONAL_TRIVIALITY_BUG EXPECT_TRUE( absl::is_trivially_copy_constructible<absl::optional<int>>::value); EXPECT_TRUE( absl::is_trivially_copy_constructible<absl::optional<const int>>::value); -#ifndef _MSC_VER +#if !defined(_MSC_VER) && !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) // See defect report "Trivial copy/move constructor for class with volatile // member" at // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2094 @@ -270,8 +270,7 @@ // Also a cv-qualified scalar type should be trivially copyable. EXPECT_TRUE(absl::is_trivially_copy_constructible< absl::optional<volatile int>>::value); -#endif // _MSC_VER -#endif // ABSL_GLIBCXX_OPTIONAL_TRIVIALITY_BUG +#endif // !defined(_MSC_VER) && !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) // constexpr copy constructor for trivially copyable types { @@ -301,17 +300,10 @@ EXPECT_TRUE(absl::is_trivially_copy_constructible< absl::optional<const TrivialCopyable>>::value); #endif - // When testing with VS 2017 15.3, there seems to be a bug in MSVC - // std::optional when T is volatile-qualified. So skipping this test. - // Bug report: - // https://connect.microsoft.com/VisualStudio/feedback/details/3142534 -#if defined(ABSL_USES_STD_OPTIONAL) && defined(_MSC_VER) && _MSC_VER >= 1911 -#define ABSL_MSVC_OPTIONAL_VOLATILE_COPY_BUG 1 -#endif -#ifndef ABSL_MSVC_OPTIONAL_VOLATILE_COPY_BUG +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) EXPECT_FALSE(std::is_copy_constructible< absl::optional<volatile TrivialCopyable>>::value); -#endif +#endif // !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) } } @@ -331,11 +323,9 @@ EXPECT_FALSE(std::is_move_constructible<absl::optional<NonMovable>>::value); // test noexcept EXPECT_TRUE(std::is_nothrow_move_constructible<absl::optional<int>>::value); -#ifndef ABSL_USES_STD_OPTIONAL EXPECT_EQ( absl::default_allocator_is_nothrow::value, std::is_nothrow_move_constructible<absl::optional<MoveableThrow>>::value); -#endif EXPECT_TRUE(std::is_nothrow_move_constructible< absl::optional<MoveableNoThrow>>::value); } @@ -664,8 +654,7 @@ EXPECT_TRUE(absl::is_copy_assignable<NonTrivial>::value); EXPECT_FALSE(absl::is_trivially_copy_assignable<NonTrivial>::value); - // std::optional doesn't support volatile nontrivial types. -#ifndef ABSL_USES_STD_OPTIONAL +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) { StructorListener listener; Listenable::listener = &listener; @@ -684,7 +673,7 @@ EXPECT_EQ(1, listener.destruct); EXPECT_EQ(1, listener.volatile_copy_assign); } -#endif // ABSL_USES_STD_OPTIONAL +#endif // !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) } TEST(optionalTest, MoveAssignment) { @@ -707,8 +696,7 @@ EXPECT_EQ(1, listener.destruct); EXPECT_EQ(1, listener.move_assign); } - // std::optional doesn't support volatile nontrivial types. -#ifndef ABSL_USES_STD_OPTIONAL +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) { StructorListener listener; Listenable::listener = &listener; @@ -728,7 +716,7 @@ EXPECT_EQ(1, listener.destruct); EXPECT_EQ(1, listener.volatile_move_assign); } -#endif // ABSL_USES_STD_OPTIONAL +#endif // !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) EXPECT_FALSE(absl::is_move_assignable<absl::optional<const int>>::value); EXPECT_TRUE(absl::is_move_assignable<absl::optional<Copyable>>::value); EXPECT_TRUE(absl::is_move_assignable<absl::optional<MoveableThrow>>::value); @@ -1064,6 +1052,7 @@ #endif EXPECT_EQ("c&&", TypeQuals(OC(absl::in_place, "xvalue_c").value())); +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) // test on volatile type using OV = absl::optional<volatile int>; OV lvalue_v(absl::in_place, 42); @@ -1071,6 +1060,7 @@ EXPECT_EQ(42, OV(42).value()); EXPECT_TRUE((std::is_same<volatile int&, decltype(lvalue_v.value())>::value)); EXPECT_TRUE((std::is_same<volatile int&&, decltype(OV(42).value())>::value)); +#endif // !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) // test exception throw on value() absl::optional<int> empty; @@ -1113,6 +1103,7 @@ #endif EXPECT_EQ("c&&", TypeQuals(*OC(absl::in_place, "xvalue_c"))); +#if !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) // test on volatile type using OV = absl::optional<volatile int>; OV lvalue_v(absl::in_place, 42); @@ -1120,6 +1111,7 @@ EXPECT_EQ(42, *OV(42)); EXPECT_TRUE((std::is_same<volatile int&, decltype(*lvalue_v)>::value)); EXPECT_TRUE((std::is_same<volatile int&&, decltype(*OV(42))>::value)); +#endif // !defined(ABSL_VOLATILE_RETURN_TYPES_DEPRECATED) constexpr absl::optional<int> opt1(1); static_assert(*opt1 == 1, ""); @@ -1584,12 +1576,10 @@ static_assert( std::is_nothrow_move_constructible<absl::optional<MoveMeNoThrow>>::value, ""); -#ifndef ABSL_USES_STD_OPTIONAL static_assert(absl::default_allocator_is_nothrow::value == std::is_nothrow_move_constructible< absl::optional<MoveMeThrow>>::value, ""); -#endif std::vector<absl::optional<MoveMeNoThrow>> v; for (int i = 0; i < 10; ++i) v.emplace_back(); }
diff --git a/third_party/abseil-cpp/symbols_arm64_dbg.def b/third_party/abseil-cpp/symbols_arm64_dbg.def index d79e100..1dc7ac69 100644 --- a/third_party/abseil-cpp/symbols_arm64_dbg.def +++ b/third_party/abseil-cpp/symbols_arm64_dbg.def
@@ -1395,6 +1395,7 @@ ?AssignLargeString@Cord@absl@@AEAAAEAV12@$$QEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PEAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXPEAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AEAAXAEBV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?At@TimeZone@absl@@QEBA?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QEBA?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Avail@FormatSinkImpl@str_format_internal@absl@@AEBA_KXZ @@ -2065,7 +2066,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQEBQEAXHP6AXPEBDPEAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PEBDHAEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPEBDPEBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPEBX_J@Z@Z @@ -2096,7 +2097,6 @@ ?RoundUp@cord_internal@absl@@YA_K_K0@Z ?RoundUpForTag@cord_internal@absl@@YA_K_K@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QEAA?AUPosition@123@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z
diff --git a/third_party/abseil-cpp/symbols_arm64_rel.def b/third_party/abseil-cpp/symbols_arm64_rel.def index 7e0e42a..8fd13d5 100644 --- a/third_party/abseil-cpp/symbols_arm64_rel.def +++ b/third_party/abseil-cpp/symbols_arm64_rel.def
@@ -121,6 +121,7 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0ChunkIterator@Cord@absl@@AEAA@PEAUCordRep@cord_internal@2@@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z ??0Condition@absl@@AEAA@XZ ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z @@ -255,6 +256,7 @@ ?AssignLargeString@Cord@absl@@AEAAAEAV12@$$QEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PEAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXPEAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AEAAXAEBV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?At@TimeZone@absl@@QEBA?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QEBA?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Await@Mutex@absl@@QEAAXAEBVCondition@2@@Z @@ -670,7 +672,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQEBQEAXHP6AXPEBDPEAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PEBDHAEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPEBDPEBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPEBX_J@Z@Z @@ -691,7 +693,6 @@ ?Rethrow@variant_internal@absl@@YAXXZ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x64_dbg.def b/third_party/abseil-cpp/symbols_x64_dbg.def index fd75a9a6..f41a96f5 100644 --- a/third_party/abseil-cpp/symbols_x64_dbg.def +++ b/third_party/abseil-cpp/symbols_x64_dbg.def
@@ -1398,6 +1398,7 @@ ?AssignLargeString@Cord@absl@@AEAAAEAV12@$$QEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PEAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXPEAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AEAAXAEBV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?At@TimeZone@absl@@QEBA?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QEBA?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Avail@FormatSinkImpl@str_format_internal@absl@@AEBA_KXZ @@ -2066,7 +2067,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQEBQEAXHP6AXPEBDPEAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PEBDHAEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPEBDPEBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPEBX_J@Z@Z @@ -2097,7 +2098,6 @@ ?RoundUp@cord_internal@absl@@YA_K_K0@Z ?RoundUpForTag@cord_internal@absl@@YA_K_K@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QEAA?AUPosition@123@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z
diff --git a/third_party/abseil-cpp/symbols_x64_rel.def b/third_party/abseil-cpp/symbols_x64_rel.def index 8eb3cf3..517fcc6 100644 --- a/third_party/abseil-cpp/symbols_x64_rel.def +++ b/third_party/abseil-cpp/symbols_x64_rel.def
@@ -76,6 +76,8 @@ ??$SetEdge@$0A@@CordRepBtree@cord_internal@absl@@QEAA?AUOpResult@012@_NPEAUCordRep@12@_K@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@2@@Z + ??$ToChronoDuration@V?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z + ??$ToChronoDuration@V?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@__1@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z ??$__emplace_back_slow_path@AEAVstring_view@absl@@AEBV12@AEA_K@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@__1@std@@@__1@std@@AEAAXAEAVstring_view@absl@@AEBV34@AEA_K@Z ??$__emplace_unique_key_args@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@QEAA?AU?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@_N@12@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@12@AEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z @@ -256,6 +258,7 @@ ?AssignLargeString@Cord@absl@@AEAAAEAV12@$$QEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PEAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXPEAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AEAAXAEBV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?At@TimeZone@absl@@QEBA?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QEBA?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Await@Mutex@absl@@QEAAXAEBVCondition@2@@Z @@ -668,7 +671,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQEBQEAXHP6AXPEBDPEAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PEBDHAEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPEBDPEBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPEBX_J@Z@Z @@ -689,7 +692,6 @@ ?Rethrow@variant_internal@absl@@YAXXZ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x64_rel_asan.def b/third_party/abseil-cpp/symbols_x64_rel_asan.def index bec349b..094ff26 100644 --- a/third_party/abseil-cpp/symbols_x64_rel_asan.def +++ b/third_party/abseil-cpp/symbols_x64_rel_asan.def
@@ -75,6 +75,8 @@ ??$SetEdge@$0A@@CordRepBtree@cord_internal@absl@@QEAA?AUOpResult@012@_NPEAUCordRep@12@_K@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@__1@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@2@@Z + ??$ToChronoDuration@V?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0DM@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z + ??$ToChronoDuration@V?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@@time_internal@absl@@YA?AV?$duration@JV?$ratio@$0OBA@$00@__1@std@@@chrono@__1@std@@VDuration@1@@Z ??$__construct_at_end@PEBVFormatArgImpl@str_format_internal@absl@@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@__1@std@@@__1@std@@AEAAXPEBVFormatArgImpl@str_format_internal@absl@@0_K@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@__1@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z ??$__emplace_unique_key_args@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@@23@@__1@std@@QEAA?AU?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__1@std@@PEAX@__1@std@@@__1@std@@_N@12@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@12@AEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@12@$$QEAV?$tuple@$$V@12@@Z @@ -260,6 +262,7 @@ ?AssignLargeString@Cord@absl@@AEAAAEAV12@$$QEAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PEAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXPEAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AEAAXAEBV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?At@TimeZone@absl@@QEBA?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QEBA?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Await@Mutex@absl@@QEAAXAEBVCondition@2@@Z @@ -403,6 +406,7 @@ ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByLength@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByString@absl@@QEBA?AVstring_view@2@V32@_K@Z + ?FindFlatStartPiece@InlineRep@Cord@absl@@QEBA?AVstring_view@3@XZ ?FindPath@GraphCycles@synchronization_internal@absl@@QEBAHUGraphId@23@0HQEAU423@@Z ?FindSlow@CordRepRing@cord_internal@absl@@AEBA?AUPosition@123@I_K@Z ?FindTailSlow@CordRepRing@cord_internal@absl@@AEBA?AUPosition@123@I_K@Z @@ -671,7 +675,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQEBQEAXHP6AXPEBDPEAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PEBDHAEBV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PEBDHPEAPEADPEAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPEBDPEBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPEBX_J@Z@Z @@ -692,7 +696,6 @@ ?Rethrow@variant_internal@absl@@YAXXZ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPEBD_K@Z ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x86_dbg.def b/third_party/abseil-cpp/symbols_x86_dbg.def index d220283f..f6a8978 100644 --- a/third_party/abseil-cpp/symbols_x86_dbg.def +++ b/third_party/abseil-cpp/symbols_x86_dbg.def
@@ -1393,6 +1393,7 @@ ?AssignLargeString@Cord@absl@@AAEAAV12@$$QAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QAEXPAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AAEXABV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPBDI@Z ?At@TimeZone@absl@@QBE?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QBE?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Avail@FormatSinkImpl@str_format_internal@absl@@ABEIXZ @@ -2061,7 +2062,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPBDPBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQBQAXHP6AXPBDPAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PBDHABV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PBDHPAPADPAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PBDHPAPADPAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPBDPBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPBX_J@Z@Z @@ -2092,7 +2093,6 @@ ?RoundUp@cord_internal@absl@@YAIII@Z ?RoundUpForTag@cord_internal@absl@@YAII@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QBE_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPBDI@Z ?SampleSlow@container_internal@absl@@YAPAUHashtablezInfo@12@AAUSamplingState@12@I@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QAE?AUPosition@123@I@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QAE?AVstring_view@3@I@Z
diff --git a/third_party/abseil-cpp/symbols_x86_rel.def b/third_party/abseil-cpp/symbols_x86_rel.def index 671be536..60f9eaa0 100644 --- a/third_party/abseil-cpp/symbols_x86_rel.def +++ b/third_party/abseil-cpp/symbols_x86_rel.def
@@ -253,6 +253,7 @@ ?AssignLargeString@Cord@absl@@AAEAAV12@$$QAV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z ?AssignNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@__1@std@@V?$move_iterator@PAUPayload@status_internal@absl@@@23@@inlined_vector_internal@absl@@QAEXPAUPayload@status_internal@3@@Z ?AssignSlow@InlineRep@Cord@absl@@AAEXABV123@@Z + ?AsyncSignalSafeWriteToStderr@raw_logging_internal@absl@@YAXPBDI@Z ?At@TimeZone@absl@@QBE?AUCivilInfo@12@VTime@2@@Z ?At@TimeZone@absl@@QBE?AUTimeInfo@12@V?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@2@@Z ?Await@Mutex@absl@@QAEXABVCondition@2@@Z @@ -667,7 +668,7 @@ ?RegisterCondVarTracer@absl@@YAXP6AXPBDPBX@Z@Z ?RegisterDebugStackTraceHook@debugging_internal@absl@@YAXP6AXQBQAXHP6AXPBDPAX@Z2@Z@Z ?RegisterInternalLogFunction@raw_logging_internal@absl@@YAXP6AXW4LogSeverity@2@PBDHABV?$basic_string@DU?$char_traits@D@__1@std@@V?$allocator@D@23@@__1@std@@@Z@Z - ?RegisterLogPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PBDHPAPADPAH@Z@Z + ?RegisterLogFilterAndPrefixHook@raw_logging_internal@absl@@YAXP6A_NW4LogSeverity@2@PBDHPAPADPAH@Z@Z ?RegisterMutexProfiler@absl@@YAXP6AX_J@Z@Z ?RegisterMutexTracer@absl@@YAXP6AXPBDPBX_J@Z@Z ?RegisterSpinLockProfiler@base_internal@absl@@YAXP6AXPBX_J@Z@Z @@ -688,7 +689,6 @@ ?Rethrow@variant_internal@absl@@YAXXZ ?ReverseConsume@cord_internal@absl@@YAXPAUCordRep@12@V?$FunctionRef@$$A6AXPAUCordRep@cord_internal@absl@@II@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QBE_NXZ - ?SafeWriteToStderr@raw_logging_internal@absl@@YAXPBDI@Z ?SampleSlow@container_internal@absl@@YAPAUHashtablezInfo@12@AAUSamplingState@12@I@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QAE?AVstring_view@3@I@Z ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QAEXI@Z
diff --git a/third_party/blink/renderer/core/css/media_query.cc b/third_party/blink/renderer/core/css/media_query.cc index 45f9bb3..d34a59a 100644 --- a/third_party/blink/renderer/core/css/media_query.cc +++ b/third_party/blink/renderer/core/css/media_query.cc
@@ -33,6 +33,7 @@ #include "third_party/blink/renderer/core/css/media_query_exp.h" #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h" #include "third_party/blink/renderer/core/media_type_names.h" +#include "third_party/blink/renderer/platform/runtime_enabled_features.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" namespace blink { @@ -92,19 +93,19 @@ MediaQuery::~MediaQuery() = default; MediaQuery::RestrictorType MediaQuery::Restrictor() const { - if (has_unknown_) + if (BehaveAsNotAll()) return MediaQuery::kNot; return restrictor_; } const MediaQueryExpNode* MediaQuery::ExpNode() const { - if (has_unknown_) + if (BehaveAsNotAll()) return nullptr; return exp_node_.get(); } const String& MediaQuery::MediaType() const { - if (has_unknown_) { + if (BehaveAsNotAll()) { DEFINE_STATIC_LOCAL(const AtomicString, all, ("all")); return all; } @@ -116,6 +117,12 @@ return CssText() == other.CssText(); } +bool MediaQuery::BehaveAsNotAll() const { + if (RuntimeEnabledFeatures::CSSMediaQueries4Enabled()) + return false; + return has_unknown_; +} + // https://drafts.csswg.org/cssom/#serialize-a-list-of-media-queries String MediaQuery::CssText() const { if (serialization_cache_.IsNull()) @@ -124,11 +131,4 @@ return serialization_cache_; } -std::unique_ptr<MediaQuery> MediaQuery::CopyIgnoringUnknownForTest() const { - auto query = Copy(); - query->has_unknown_ = false; - query->serialization_cache_ = g_null_atom; - return query; -} - } // namespace blink
diff --git a/third_party/blink/renderer/core/css/media_query.h b/third_party/blink/renderer/core/css/media_query.h index 6b3d4a6..04435e9 100644 --- a/third_party/blink/renderer/core/css/media_query.h +++ b/third_party/blink/renderer/core/css/media_query.h
@@ -70,12 +70,9 @@ return std::make_unique<MediaQuery>(*this); } - // This provides a way to bypass the behavior that MediaQuery objects - // with "unknown" values behave as "not all". - std::unique_ptr<MediaQuery> CopyIgnoringUnknownForTest() const; - private: MediaQuery& operator=(const MediaQuery&) = delete; + bool BehaveAsNotAll() const; RestrictorType restrictor_; String media_type_; @@ -83,7 +80,12 @@ String serialization_cache_; // Set if |exp_node_| contains any MediaQueryUnknownExpNode instances. - // This will cause the MediaQuery to appear as a "not all" query. + // + // If the runtime flag CSSMediaQueries4 is *not* enabled, this will cause the + // MediaQuery to appear as a "not all". + // + // Knowing whether or not something is unknown is useful for use-counting and + // testing purposes. bool has_unknown_; String Serialize() const;
diff --git a/third_party/blink/renderer/core/css/media_query_evaluator_test.cc b/third_party/blink/renderer/core/css/media_query_evaluator_test.cc index 8bfb620..00056d6 100644 --- a/third_party/blink/renderer/core/css/media_query_evaluator_test.cc +++ b/third_party/blink/renderer/core/css/media_query_evaluator_test.cc
@@ -1196,35 +1196,19 @@ {"not ((unknown: 1px) and (width))", false}, }; - { - ScopedCSSMediaQueries4ForTest media_queries_4_flag(true); - - for (const MediaQueryEvaluatorTestCase& test : tests) { - SCOPED_TRACE(test.input); - String input(test.input); - auto query_set = MediaQueryParser::ParseMediaQuerySet(input, nullptr); - ASSERT_TRUE(query_set); - ASSERT_EQ(1u, query_set->QueryVector().size()); - std::unique_ptr<MediaQuery> query = - query_set->QueryVector()[0]->CopyIgnoringUnknownForTest(); - EXPECT_EQ(test.output, media_query_evaluator.Eval(*query)); - } - } - - // Run the same tests again, but avoiding CopyIgnoringUnknownForTest. This - // should make any MediaQuery containing "unknown" effectively behave as "not - // all". + // Run the same tests twice (CSSMediaQueries4 on/off). Vector<bool> flag_values = {true, false}; for (bool flag : flag_values) { - // The runtime flag CSSMediaQueries4 should not affect the results. ScopedCSSMediaQueries4ForTest media_queries_4_flag(flag); for (const MediaQueryEvaluatorTestCase& test : tests) { - SCOPED_TRACE(test.input); + SCOPED_TRACE(String(test.input)); String input(test.input); auto query_set = MediaQueryParser::ParseMediaQuerySet(input, nullptr); ASSERT_TRUE(query_set); - EXPECT_FALSE(media_query_evaluator.Eval(*query_set)); + // Always expect `false` with CSSMediaQueries4 disabled, otherwise + // expect `test.output`. + EXPECT_EQ(flag && test.output, media_query_evaluator.Eval(*query_set)); } } }
diff --git a/third_party/blink/renderer/core/css/media_query_set_test.cc b/third_party/blink/renderer/core/css/media_query_set_test.cc index d17493d1..31903eb 100644 --- a/third_party/blink/renderer/core/css/media_query_set_test.cc +++ b/third_party/blink/renderer/core/css/media_query_set_test.cc
@@ -16,22 +16,29 @@ const char* output; } MediaQuerySetTestCase; -static void TestMediaQuery(MediaQuerySetTestCase test, - MediaQuerySet& query_set) { - StringBuilder output; +// If `unknown_substitute` is non-null, then any unknown queries are +// substituted with that string. +static void TestMediaQuery(const char* input, + const char* output, + MediaQuerySet& query_set, + String unknown_substitute = String()) { + StringBuilder actual; wtf_size_t j = 0; while (j < query_set.QueryVector().size()) { - String query_text = query_set.QueryVector()[j]->CssText(); - output.Append(query_text); + const MediaQuery& query = *query_set.QueryVector()[j]; + if (!unknown_substitute.IsNull() && query.HasUnknown()) + actual.Append(unknown_substitute); + else + actual.Append(query.CssText()); ++j; if (j >= query_set.QueryVector().size()) break; - output.Append(", "); + actual.Append(", "); } - if (test.output) - ASSERT_EQ(test.output, output.ToString()); + if (output) + ASSERT_EQ(output, actual.ToString()); else - ASSERT_EQ(test.input, output.ToString()); + ASSERT_EQ(input, actual.ToString()); } TEST(MediaQuerySetTest, Basic) { @@ -220,14 +227,12 @@ {"(block-size > 0px)", "not all"}, {"(min-block-size: 0px)", "not all"}, {"(max-block-size: 0px)", "not all"}, - {nullptr, nullptr} // Do not remove the terminator line. }; - for (unsigned i = 0; test_cases[i].input; ++i) { - SCOPED_TRACE(test_cases[i].input); - scoped_refptr<MediaQuerySet> query_set = - MediaQuerySet::Create(test_cases[i].input, nullptr); - TestMediaQuery(test_cases[i], *query_set); + for (const MediaQuerySetTestCase& test : test_cases) { + SCOPED_TRACE(String(test.input)); + TestMediaQuery(test.input, test.output, + *MediaQuerySet::Create(test.input, nullptr)); } } @@ -241,19 +246,12 @@ {"screen and (width: 100px) or (width: 200px)", "not all"}, {"(height: 100px) and (width: 100px) or (width: 200px)", "not all"}, {"(height: 100px) or (width: 100px) and (width: 200px)", "not all"}, - {"(width: 100px) or (max-width: 50%)", "not all"}, {"((width: 100px))", nullptr}, {"(((width: 100px)))", nullptr}, {"( ( (width: 100px) ) )", "(((width: 100px)))"}, {"(width: 100px) or ((width: 200px) or (width: 300px))", nullptr}, {"(width: 100px) and ((width: 200px) or (width: 300px))", nullptr}, {"(width: 100px) or ((width: 200px) and (width: 300px))", nullptr}, - {"(width: 100px) or ((width: 200px) and (width: 300px) or (width: " - "400px))", - "not all"}, - {"(width: 100px) or ((width: 200px) or (width: 300px) and (width: " - "400px))", - "not all"}, {"(width: 100px) or ((width: 200px) and (width: 300px)) and (width: " "400px)", "not all"}, @@ -293,91 +291,97 @@ {"(width=100px)", "(width = 100px)"}, {"(200px>=width > 100px)", "(200px >= width > 100px)"}, {"(200px>=width>100px)", "(200px >= width > 100px)"}, - {"(width < 50%)", "not all"}, - {"(width < 100px nonsense)", "not all"}, - {"(100px nonsense < 100px)", "not all"}, - {"(width == 100px)", "not all"}, - {"(width << 100px)", "not all"}, - {"(width <> 100px)", "not all"}, - {"(100px == width)", "not all"}, - {"(100px < = width)", "not all"}, - {"(100px > = width)", "not all"}, - {"(100px==width)", "not all"}, - {"(100px , width)", "not all"}, - {"(100px,width)", "not all"}, - {"(100px ! width)", "not all"}, - {"(1px < width > 2px)", "not all"}, - {"(1px > width < 2px)", "not all"}, - {"(1px <= width > 2px)", "not all"}, - {"(1px > width <= 2px)", "not all"}, - {"(1px = width = 2px)", "not all"}, - {"(min-width < 10px)", "not all"}, - {"(max-width < 10px)", "not all"}, - {"(10px < min-width)", "not all"}, - {"(10px < min-width < 20px)", "not all"}, - {"(100px ! width < 200px)", "not all"}, - {"(100px < width ! 200px)", "not all"}, - {"(100px <)", "not all"}, - {"(100px < )", "not all"}, - {"(100px < width <)", "not all"}, - {"(100px < width < )", "not all"}, - {"(50% < width < 200px)", "not all"}, - {"(100px < width < 50%)", "not all"}, - {"(100px nonsense < width < 200px)", "not all"}, - {"(100px < width < 200px nonsense)", "not all"}, - {"(100px < width : 200px)", "not all"}, }; for (const MediaQuerySetTestCase& test : test_cases) { SCOPED_TRACE(String(test.input)); - TestMediaQuery(test, *MediaQuerySet::Create(test.input, nullptr)); + TestMediaQuery(test.input, test.output, + *MediaQuerySet::Create(test.input, nullptr), "<unknown>"); } } +// https://drafts.csswg.org/mediaqueries-4/#typedef-general-enclosed TEST(MediaQuerySetTest, GeneralEnclosed) { ScopedCSSMediaQueries4ForTest media_queries_4_flag(true); - MediaQuerySetTestCase test_cases[] = { - {"()", nullptr}, - {"( )", nullptr}, - {"(1)", nullptr}, - {"( 1 )", nullptr}, - {"(1px)", nullptr}, - {"(unknown)", nullptr}, - {"(unknown: 50kg)", nullptr}, - {"unknown()", nullptr}, - {"unknown(1)", nullptr}, - {"(a b c)", nullptr}, - {"(width <> height)", nullptr}, - {"( a! b; )", nullptr}, - {"not screen and (unknown)", nullptr}, - {"not all and (unknown)", nullptr}, - {"not all and (width) and (unknown)", nullptr}, - {"not all and (not ((width) or (unknown)))", nullptr}, - {"(])", "not all"}, - {"(url(as'df))", "not all"}, + const char* unknown_cases[] = { + "()", + "( )", + "(1)", + "( 1 )", + "(1px)", + "(unknown)", + "(unknown: 50kg)", + "unknown()", + "unknown(1)", + "(a b c)", + "(width <> height)", + "( a! b; )", + "not screen and (unknown)", + "not all and (unknown)", + "not all and (width) and (unknown)", + "not all and (not ((width) or (unknown)))", + "(width: 100px) or (max-width: 50%)", + "(width: 100px) or ((width: 200px) and (width: 300px) or (width: " + "400px))", + "(width: 100px) or ((width: 200px) or (width: 300px) and (width: " + "400px))", + "(width < 50%)", + "(width < 100px nonsense)", + "(100px nonsense < 100px)", + "(width == 100px)", + "(width << 100px)", + "(width <> 100px)", + "(100px == width)", + "(100px < = width)", + "(100px > = width)", + "(100px==width)", + "(100px , width)", + "(100px,width)", + "(100px ! width)", + "(1px < width > 2px)", + "(1px > width < 2px)", + "(1px <= width > 2px)", + "(1px > width <= 2px)", + "(1px = width = 2px)", + "(min-width < 10px)", + "(max-width < 10px)", + "(10px < min-width)", + "(10px < min-width < 20px)", + "(100px ! width < 200px)", + "(100px < width ! 200px)", + "(100px <)", + "(100px < )", + "(100px < width <)", + "(100px < width < )", + "(50% < width < 200px)", + "(100px < width < 50%)", + "(100px nonsense < width < 200px)", + "(100px < width < 200px nonsense)", + "(100px < width : 200px)", }; - for (const MediaQuerySetTestCase& test : test_cases) { - String input(test.input); - SCOPED_TRACE(input); - auto query_set = MediaQuerySet::Create(input, nullptr); - ASSERT_TRUE(query_set); - ASSERT_EQ(1u, query_set->QueryVector().size()); - std::unique_ptr<MediaQuery> query = - query_set->QueryVector()[0]->CopyIgnoringUnknownForTest(); - const char* expected = test.output ? test.output : test.input; - EXPECT_EQ(expected, query->CssText()); + for (const char* input : unknown_cases) { + SCOPED_TRACE(String(input)); + TestMediaQuery(input, input, *MediaQuerySet::Create(input, nullptr)); + + // When we parse something as <general-enclosed>, we'll serialize whatever + // was specified, so it's not clear if we took the <general-enclosed> path + // during parsing or not. In order to verify this, run the same test again, + // substituting unknown queries with + // "<unknown>". + TestMediaQuery(input, "<unknown>", *MediaQuerySet::Create(input, nullptr), + "<unknown>"); } - // Run same tests again, except this time avoid CopyIgnoringUnknownForTest(). - // This should result in a serialization of "not all". - for (const MediaQuerySetTestCase& test : test_cases) { - String input(test.input); - SCOPED_TRACE(input); - auto query_set = MediaQuerySet::Create(input, nullptr); - ASSERT_TRUE(query_set); - EXPECT_EQ("not all", query_set->MediaText()); + const char* invalid_cases[] = { + "(])", + "(url(as'df))", + }; + + for (const char* input : invalid_cases) { + SCOPED_TRACE(String(input)); + TestMediaQuery(input, "not all", *MediaQuerySet::Create(input, nullptr)); } } @@ -415,13 +419,12 @@ {"(unknown)", "not all"}, {"unknown()", "not all"}, {"(1px)", "not all"}, - {nullptr, nullptr} // Do not remove the terminator line. }; - for (unsigned i = 0; test_cases[i].input; ++i) { - scoped_refptr<MediaQuerySet> query_set = - MediaQuerySet::Create(test_cases[i].input, nullptr); - TestMediaQuery(test_cases[i], *query_set); + for (const MediaQuerySetTestCase& test : test_cases) { + SCOPED_TRACE(String(test.input)); + TestMediaQuery(test.input, test.output, + *MediaQuerySet::Create(test.input, nullptr)); } }
diff --git a/third_party/blink/renderer/core/frame/attribution_response_parsing.cc b/third_party/blink/renderer/core/frame/attribution_response_parsing.cc index 183c44c..a471200 100644 --- a/third_party/blink/renderer/core/frame/attribution_response_parsing.cc +++ b/third_party/blink/renderer/core/frame/attribution_response_parsing.cc
@@ -156,9 +156,11 @@ "Bump the version for histogram Conversions.AggregatableKeysPerSource"); const auto* array = JSONArray::Cast(json.get()); - const wtf_size_t num_keys = array->size(); + if (!array) + return false; - if (!array || num_keys > kMaxAttributionAggregatableKeysPerSourceOrTrigger) + const wtf_size_t num_keys = array->size(); + if (num_keys > kMaxAttributionAggregatableKeysPerSourceOrTrigger) return false; base::UmaHistogramCounts100("Conversions.AggregatableKeysPerSource", @@ -373,12 +375,12 @@ "Conversions.AggregatableTriggerDataLength"); const auto* array = JSONArray::Cast(json.get()); - const wtf_size_t num_trigger_data = array->size(); - - if (!array || - array->size() > kMaxAttributionAggregatableTriggerDataPerTrigger) { + if (!array) return false; - } + + const wtf_size_t num_trigger_data = array->size(); + if (num_trigger_data > kMaxAttributionAggregatableTriggerDataPerTrigger) + return false; base::UmaHistogramCounts100("Conversions.AggregatableTriggerDataLength", num_trigger_data);
diff --git a/third_party/blink/renderer/core/frame/attribution_response_parsing_test.cc b/third_party/blink/renderer/core/frame/attribution_response_parsing_test.cc index 38f7253..8040708 100644 --- a/third_party/blink/renderer/core/frame/attribution_response_parsing_test.cc +++ b/third_party/blink/renderer/core/frame/attribution_response_parsing_test.cc
@@ -111,6 +111,8 @@ mojom::blink::AttributionAggregatableSource::New()}, {"Invalid JSON", "{", false, mojom::blink::AttributionAggregatableSource::New()}, + {"Not an array", "{}", false, + mojom::blink::AttributionAggregatableSource::New()}, {"Missing id field", R"([{"key_piece":"0x159"}])", false, mojom::blink::AttributionAggregatableSource::New()}, {"Missing key_piece field", R"([{"id":"key"}])", false, @@ -226,6 +228,8 @@ mojom::blink::AttributionAggregatableTrigger::New()}, {"Invalid JSON", "{", false, mojom::blink::AttributionAggregatableTrigger::New()}, + {"Not an array", "{}", false, + mojom::blink::AttributionAggregatableTrigger::New()}, {"Missing source_keys field", R"([{"key_piece":"0x400"}])", false, mojom::blink::AttributionAggregatableTrigger::New()}, {"Missing key_piece field", R"([{"source_keys":["key"]}])", false,
diff --git a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc index d97b9e205..7edd345 100644 --- a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc
@@ -802,6 +802,19 @@ if (!payment->hasIsPayment() || !payment->isPayment()) return true; + if (!IsSameOriginWithAncestors(resolver->DomWindow()->GetFrame())) { + bool has_user_activation = LocalFrame::ConsumeTransientUserActivation( + resolver->DomWindow()->GetFrame(), + UserActivationUpdateSource::kRenderer); + if (!has_user_activation) { + resolver->Reject(MakeGarbageCollected<DOMException>( + DOMExceptionCode::kSecurityError, + "A user activation is required to create a credential in a " + "cross-origin iframe.")); + return false; + } + } + const auto* context = resolver->GetExecutionContext(); DCHECK(RuntimeEnabledFeatures::SecurePaymentConfirmationEnabled(context));
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 250a636..2108cf3 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -815,7 +815,7 @@ }, { name: "DeflateRawCompressionFormat", - status: "experimental", + status: "stable", }, { name: "DelegatedInkTrails",
diff --git a/third_party/blink/renderer/platform/wtf/allocator/partitions.cc b/third_party/blink/renderer/platform/wtf/allocator/partitions.cc index 25e5b34..1e0035f6 100644 --- a/third_party/blink/renderer/platform/wtf/allocator/partitions.cc +++ b/third_party/blink/renderer/platform/wtf/allocator/partitions.cc
@@ -65,9 +65,11 @@ // These statics are inlined, so cannot be LazyInstances. We create the values, // and then set the pointers correctly in Initialize(). -base::ThreadSafePartitionRoot* Partitions::fast_malloc_root_ = nullptr; -base::ThreadSafePartitionRoot* Partitions::array_buffer_root_ = nullptr; -base::ThreadSafePartitionRoot* Partitions::buffer_root_ = nullptr; +partition_alloc::ThreadSafePartitionRoot* Partitions::fast_malloc_root_ = + nullptr; +partition_alloc::ThreadSafePartitionRoot* Partitions::array_buffer_root_ = + nullptr; +partition_alloc::ThreadSafePartitionRoot* Partitions::buffer_root_ = nullptr; // static void Partitions::Initialize() {
diff --git a/third_party/blink/renderer/platform/wtf/allocator/partitions.h b/third_party/blink/renderer/platform/wtf/allocator/partitions.h index 9ee03d4..3d8ff11 100644 --- a/third_party/blink/renderer/platform/wtf/allocator/partitions.h +++ b/third_party/blink/renderer/platform/wtf/allocator/partitions.h
@@ -58,13 +58,15 @@ return array_buffer_root_ != nullptr; } - ALWAYS_INLINE static base::ThreadSafePartitionRoot* ArrayBufferPartition() { + ALWAYS_INLINE static partition_alloc::ThreadSafePartitionRoot* + ArrayBufferPartition() { DCHECK(initialized_); DCHECK(ArrayBufferPartitionInitialized()); return array_buffer_root_; } - ALWAYS_INLINE static base::ThreadSafePartitionRoot* BufferPartition() { + ALWAYS_INLINE static partition_alloc::ThreadSafePartitionRoot* + BufferPartition() { DCHECK(initialized_); return buffer_root_; } @@ -98,7 +100,8 @@ static void HandleOutOfMemory(size_t size); private: - ALWAYS_INLINE static base::ThreadSafePartitionRoot* FastMallocPartition() { + ALWAYS_INLINE static partition_alloc::ThreadSafePartitionRoot* + FastMallocPartition() { DCHECK(initialized_); return fast_malloc_root_; } @@ -108,9 +111,9 @@ static bool initialized_; static bool scan_is_enabled_; // See Allocator.md for a description of these partitions. - static base::ThreadSafePartitionRoot* fast_malloc_root_; - static base::ThreadSafePartitionRoot* array_buffer_root_; - static base::ThreadSafePartitionRoot* buffer_root_; + static partition_alloc::ThreadSafePartitionRoot* fast_malloc_root_; + static partition_alloc::ThreadSafePartitionRoot* array_buffer_root_; + static partition_alloc::ThreadSafePartitionRoot* buffer_root_; }; } // namespace WTF
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base.py b/third_party/blink/tools/blinkpy/web_tests/port/base.py index 7f52c9f9..15d352ea 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/base.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/base.py
@@ -1551,7 +1551,8 @@ [name, value] = string_variable.split('=', 1) clean_env[name] = value - if self.host.platform.is_linux(): + if self.host.platform.is_linux() and not self.use_system_httpd(): + # set up LD_LIBRARY_PATH when we are using httpd built from 3pp. path_to_libs = self._filesystem.join(self.apache_server_root(), 'lib') if clean_env.get('LD_LIBRARY_PATH'): clean_env['LD_LIBRARY_PATH'] = path_to_libs + ':' + clean_env['LD_LIBRARY_PATH'] @@ -1909,6 +1910,10 @@ def clobber_old_port_specific_results(self): pass + def use_system_httpd(self): + # We use system httpd on linux-arm64 and BSD + return False + # FIXME: This does not belong on the port object. @memoized def path_to_apache(self):
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/linux.py b/third_party/blink/tools/blinkpy/web_tests/port/linux.py index 88bffad..114aa5f 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/linux.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/linux.py
@@ -115,9 +115,15 @@ def operating_system(self): return 'linux' + def use_system_httpd(self): + if (self.host.platform.is_linux() and + self.host.platform.get_machine() == 'x86_64'): + return False + # use the system httpd on linux-arm64 and freebsd + return True + def path_to_apache(self): - if self.host.platform.is_linux(): - # use the system httpd on freebsd + if not self.use_system_httpd(): return self._path_from_chromium_base( 'third_party', 'apache-linux', 'bin', 'httpd') # The Apache binary path can vary depending on OS and distribution
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 480f481e..0d890005 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -202,7 +202,10 @@ # --- Skia roll test suppressions +crbug.com/1320294 virtual/oopr-canvas2d/fast/canvas/canvas-arc-circumference.html [ Failure Pass ] crbug.com/1320294 virtual/oopr-canvas2d/fast/canvas/canvas-ellipse-circumference.html [ Failure Pass ] +crbug.com/1320294 virtual/oopr-canvas2d/fast/canvas/canvas-ellipse-connecting-line.html [ Failure Pass ] +crbug.com/1320294 virtual/oopr-canvas2d/fast/canvas/canvas-zero-length-lineCap.html [ Failure Pass ] # --- END Skia roll test suppresions @@ -3050,9 +3053,6 @@ # WebRTC: there's an open bug with some capture scenarios not working. crbug.com/1156408 external/wpt/webrtc/RTCPeerConnection-relay-canvas.https.html [ Failure Pass Timeout ] -# Temporarily allow pass or failure while new WebRTC stats are added and rolled into Chromium. -crbug.com/webrtc/14022 external/wpt/webrtc-stats/supported-stats.html [ Failure Pass ] - crbug.com/1074547 external/wpt/css/css-transitions/transitioncancel-002.html [ Timeout ] crbug.com/1024156 external/wpt/css/css-pseudo/cascade-highlight-004.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version index 908aed15..3739688 100644 --- a/third_party/blink/web_tests/external/Version +++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@ -Version: 8eee6cf740061db1509cb8266e616aa184be9647 +Version: f0d42096e3a2032b63924f2b53f4dac5a01250d7
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 8824179..287c26df 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -148385,7 +148385,7 @@ ] ], "backdrop-animate-002.html": [ - "1facc170fccf1a200b0c0c30ba6491cd4c411a93", + "500fb403bd738d6ca77d3acac399cb7f9ab1398d", [ null, [ @@ -148394,7 +148394,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 1, + 1 + ], + [ + 472272, + 472272 + ] + ] + ] + ] + } ] ], "before-after-dynamic-custom-property-001.html": [ @@ -293632,6 +293648,10 @@ "direct-sockets-disabled-by-permissions-policy.https.sub.html.headers": [ "ba6f09f55b393880aadf79a41d9220313ed294c8", [] + ], + "direct-sockets-disabled-by-permissions-policy.js": [ + "fd0b100ca5ccab4db741fc9d3b216758e769a649", + [] ] }, "docs": { @@ -317806,12 +317826,6 @@ ] } }, - "mediacapture-region": { - "MediaDevices-produceCropId.https.html": [ - "682caad7e7de5e79bae3a5b8d2b0da1bdfbb498f", - [] - ] - }, "mediacapture-streams": { "DIR_METADATA": [ "914b263a9ad0c34d7a2d75c935a1addc64e60045", @@ -357979,6 +357993,13 @@ {} ] ], + "frame-ancestors-sandbox-same-origin-self.html": [ + "4a2a19698d3ce4a907ff2b67defbf3a814681d19", + [ + null, + {} + ] + ], "frame-ancestors-self-allow.html": [ "a8a295dfc40cb49f76b8b9aa3f2dd137910029ec", [ @@ -397380,7 +397401,7 @@ }, "direct-sockets": { "direct-sockets-disabled-by-permissions-policy.https.sub.html": [ - "5d5533613c96ccd659f62dc9edc0a6596cb49414", + "9e81223de1c90ff83bf09c5d6701e02f442a5b15", [ null, { @@ -430760,6 +430781,41 @@ } ] ], + "indexeddb.tentative.https.window.js": [ + "197d7828c84bee8f87a0a1cd7765445d3e7a1eba", + [ + "html/anonymous-iframe/indexeddb.tentative.https.window.html", + { + "script_metadata": [ + [ + "timeout", + "long" + ], + [ + "script", + "/common/get-host-info.sub.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/html/cross-origin-embedder-policy/credentialless/resources/common.js" + ], + [ + "script", + "./resources/common.js" + ] + ], + "timeout": "long" + } + ] + ], "local-storage.tentative.https.window.js": [ "4ccb4c2eb12bb9e485d5a5b6e92bb130ec208756", [ @@ -467292,7 +467348,7 @@ ] ], "type-change-state.html": [ - "35f151b12d682a367ebcbbcc6dcf64f42fba0f97", + "b2ceb517f3d7fa3cab1420dc30105d39250120de", [ null, {} @@ -484827,6 +484883,15 @@ ] } }, + "mediacapture-region": { + "MediaDevices-produceCropId.https.html": [ + "8b381b82fde6a6d5ac1e83686e2eca8ad72d69cb", + [ + null, + {} + ] + ] + }, "mediacapture-streams": { "GUM-api.https.html": [ "148317017692e935a936eb007ed90fd9ceb29825",
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/type-change-state.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/type-change-state.html index 35f151b..b2ceb517 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/type-change-state.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/type-change-state.html
@@ -130,6 +130,7 @@ input.type = types[j].type; // change state + var preSanitizeValue = expected; // type[j] sanitization if (types[j].sanitizer) { expected = types[j].sanitizer(expected); @@ -146,9 +147,12 @@ if (nowSelectable) { if (previouslySelectable) { - assert_equals(input.selectionStart, selectionStart, "selectionStart should be unchanged"); - assert_equals(input.selectionEnd, selectionEnd, "selectionEnd should be unchanged"); - assert_equals(input.selectionDirection, selectionDirection, "selectionDirection should be unchanged"); + // Value might change after sanitization. The following checks are only valid when the value stays the same. + if (preSanitizeValue === expected) { + assert_equals(input.selectionStart, selectionStart, "selectionStart should be unchanged"); + assert_equals(input.selectionEnd, selectionEnd, "selectionEnd should be unchanged"); + assert_equals(input.selectionDirection, selectionDirection, "selectionDirection should be unchanged"); + } } else { assert_equals(input.selectionStart, 0, "selectionStart should be 0"); assert_equals(input.selectionEnd, 0, "selectionEnd should be 0");
diff --git a/third_party/blink/web_tests/external/wpt/permissions-policy/resources/permissions-policy-payment-extension.html b/third_party/blink/web_tests/external/wpt/permissions-policy/resources/permissions-policy-payment-extension.html index a97de546..86f0ea3 100644 --- a/third_party/blink/web_tests/external/wpt/permissions-policy/resources/permissions-policy-payment-extension.html +++ b/third_party/blink/web_tests/external/wpt/permissions-policy/resources/permissions-policy-payment-extension.html
@@ -47,6 +47,7 @@ }, } }; + await window.test_driver.bless('user activation'); await navigator.credentials.create({ publicKey });
diff --git a/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https.html b/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https.html index 0efc9eb..ad03941 100644 --- a/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https.html +++ b/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https.html
@@ -27,6 +27,19 @@ frame.src = 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + '/secure-payment-confirmation/resources/iframe-enroll.html'; + // Wait for the iframe to load. + const readyPromise = new Promise(resolve => { + window.addEventListener('message', function handler(evt) { + if (evt.source === frame.contentWindow && evt.data.type == 'loaded') { + window.removeEventListener('message', handler); + + resolve(evt.data); + } + }); + }); + document.body.appendChild(frame); + await readyPromise; + const resultPromise = new Promise(resolve => { window.addEventListener('message', function handler(evt) { if (evt.source === frame.contentWindow) { @@ -36,13 +49,14 @@ } }); }); - document.body.appendChild(frame); + frame.contentWindow.postMessage({ userActivation: true }, '*'); const result = await resultPromise; - // Because we specified the 'payment' permission, the enrollment should work. + // Because we specified the 'payment' permission and the iframe had a user + // activation, the enrollment should work. + assert_equals(result.error, null); assert_own_property(result, 'id'); assert_own_property(result, 'rawId'); - assert_not_own_property(result, 'error'); }, 'SPC enrollment in cross-origin iframe'); promise_test(async t => { @@ -58,11 +72,73 @@ }); const frame = document.createElement('iframe'); + frame.allow = 'payment'; + frame.src = 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + + '/secure-payment-confirmation/resources/iframe-enroll.html'; + + // Wait for the iframe to load. + const readyPromise = new Promise(resolve => { + window.addEventListener('message', function handler(evt) { + if (evt.source === frame.contentWindow && evt.data.type == 'loaded') { + window.removeEventListener('message', handler); + + resolve(evt.data); + } + }); + }); + document.body.appendChild(frame); + await readyPromise; + + const resultPromise = new Promise(resolve => { + window.addEventListener('message', function handler(evt) { + if (evt.source === frame.contentWindow) { + window.removeEventListener('message', handler); + document.body.removeChild(frame); + resolve(evt.data); + } + }); + }); + frame.contentWindow.postMessage({ userActivation: false }, '*'); + const result = await resultPromise; + + // Without a user activation, we expect a SecurityError. + assert_true(result.error instanceof DOMException); + assert_equals(result.error.name, 'SecurityError'); + assert_not_own_property(result, 'id'); + assert_not_own_property(result, 'rawId'); +}, 'SPC enrollment in cross-origin iframe fails without user activation'); + +promise_test(async t => { + // Make sure that we are testing enrolling an SPC credential in a + // cross-origin iframe. + assert_not_equals(window.location.hostname, '{{hosts[alt][]}}', + 'This test must not be run on the alt hostname.'); + + const authenticator = await window.test_driver.add_virtual_authenticator( + AUTHENTICATOR_OPTS); + t.add_cleanup(() => { + return window.test_driver.remove_virtual_authenticator(authenticator); + }); + + const frame = document.createElement('iframe'); // This iframe does *not* have a payments permission specified on it, and so // should not allow SPC credential creation. frame.src = 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + '/secure-payment-confirmation/resources/iframe-enroll.html'; + // Wait for the iframe to load. + const readyPromise = new Promise(resolve => { + window.addEventListener('message', function handler(evt) { + if (evt.source === frame.contentWindow && evt.data.type == 'loaded') { + window.removeEventListener('message', handler); + + resolve(evt.data); + } + }); + }); + document.body.appendChild(frame); + await readyPromise; + const resultPromise = new Promise(resolve => { window.addEventListener('message', function handler(evt) { if (evt.source === frame.contentWindow) { @@ -72,7 +148,7 @@ } }); }); - document.body.appendChild(frame); + frame.contentWindow.postMessage({ userActivation: true }, '*'); const result = await resultPromise; // Because we didn't specify the 'payment' permission, the enrollment should
diff --git a/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/resources/iframe-enroll.html b/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/resources/iframe-enroll.html index fa55214aa..0238e39 100644 --- a/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/resources/iframe-enroll.html +++ b/third_party/blink/web_tests/external/wpt/secure-payment-confirmation/resources/iframe-enroll.html
@@ -1,14 +1,28 @@ <!DOCTYPE html> <meta charset="utf-8"> <title>SPC Enrollment iframe</title> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> <script src="../utils.sub.js"></script> <script> 'use strict'; -// Assume that our parent has already created a virtual authenticator device. -createCredential().then(credential => { - parent.postMessage({id: credential.id, rawId: credential.rawId}, '*'); -}).catch(e => { - parent.postMessage({error: e}, '*'); +// Setup the listener first, to avoid race conditions. +window.addEventListener('message', async function handler(evt) { + window.removeEventListener('message', handler); + + if (evt.data.userActivation) { + test_driver.set_test_context(window.parent); + await test_driver.bless('user activation'); + } + // Assume that our parent has already created a virtual authenticator device. + await createCredential().then(credential => { + parent.postMessage({id: credential.id, rawId: credential.rawId, error: null}, '*'); + }).catch(e => { + parent.postMessage({error: e}, '*'); + }); }); + +// Now let our parent know that we are ready to enroll. +window.parent.postMessage({ type: 'loaded' }, '*'); </script>
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/authenticate.py b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/authenticate.py new file mode 100644 index 0000000..037a7c1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/authenticate.py
@@ -0,0 +1,32 @@ + +def main(request, response): + def fmt(x): + return f'"{x.decode("utf-8")}"' if x is not None else "undefined" + + purpose = request.headers.get("Purpose", b"").decode("utf-8") + sec_purpose = request.headers.get("Sec-Purpose", b"").decode("utf-8") + + headers = [(b"Content-Type", b"text/html"), (b'WWW-Authenticate', 'Basic')] + status = 200 if request.auth.username is not None or sec_purpose.startswith( + "prefetch") else 401 + + content = f''' + <!DOCTYPE html> + <script src="/common/dispatcher/dispatcher.js"></script> + <script src="utils.sub.js"></script> + <script> + window.requestHeaders = {{ + purpose: "{purpose}", + sec_purpose: "{sec_purpose}" + }}; + + window.requestCredentials = {{ + username: {fmt(request.auth.username)}, + password: {fmt(request.auth.password)} + }}; + + const uuid = new URLSearchParams(location.search).get('uuid'); + window.executor = new Executor(uuid); + </script> + ''' + return status, headers, content
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/utils.sub.js b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/utils.sub.js index 8dba95c..f9895add 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/utils.sub.js +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/resources/utils.sub.js
@@ -14,7 +14,7 @@ } getExecutorURL(options = {}) { - let {hostname, protocol, executor, ...extra} = options; + let {hostname, username, password, protocol, executor, ...extra} = options; let params = new URLSearchParams({uuid: this.context_id, ...extra}); if(executor === undefined) { executor = "executor.sub.html"; @@ -23,6 +23,12 @@ if(hostname !== undefined) { url.hostname = hostname; } + if(username !== undefined) { + url.username = username; + } + if(password !== undefined) { + url.password = password; + } if(protocol !== undefined) { url.protocol = protocol; url.port = protocol === "https" ? "{{ports[https][0]}}" : "{{ports[http][0]}}"; @@ -48,6 +54,8 @@ location.href = url; }); }, [url]); + url.username = ''; + url.password = ''; assert_equals( await this.execute_script(() => location.href), url.toString(), @@ -73,6 +81,10 @@ async getRequestCookies() { return this.execute_script(() => window.requestCookies); } + + async getRequestCredentials() { + return this.execute_script(() => window.requestCredentials); + } } // Produces n URLs with unique UUIDs which will record when they are prefetched. @@ -98,9 +110,8 @@ // Must also include /common/utils.js and /common/dispatcher/dispatcher.js to use this. async function spawnWindow(t, options = {}) { - let {executor, ...extra} = options; let agent = new PrefetchAgent(token(), t); - let w = window.open(agent.getExecutorURL({executor}), extra); + let w = window.open(agent.getExecutorURL(options), options); t.add_cleanup(() => w.close()); return agent; }
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/user-pass.https.html b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/user-pass.https.html new file mode 100644 index 0000000..94748f1e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/user-pass.https.html
@@ -0,0 +1,44 @@ +<!DOCTYPE html> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> +<script src="/common/utils.js"></script> +<script src="resources/utils.sub.js"></script> +<meta name="variant" content="?cross-origin=true"> +<meta name="variant" content="?cross-origin=false"> +<script> + let cross_origin = Object.fromEntries(new URLSearchParams(location.search))["cross-origin"] === "true"; + promise_test(async t => { + assert_implements(HTMLScriptElement.supports('speculationrules'), "Speculation Rules not supported"); + + let executor = "authenticate.py"; + let credentials = { username: "user", password: "pass" }; + let agent = await spawnWindow(t, { executor, ...credentials }); + let request_credentials = await agent.getRequestCredentials(); + assert_equals(request_credentials.username, credentials.username); + assert_equals(request_credentials.password, credentials.password); + + let host = cross_origin ? { hostname: PREFETCH_PROXY_BYPASS_HOST } : {}; + let nextUrl = agent.getExecutorURL({ page: 2, executor, ...host }); + await agent.forceSinglePrefetch(nextUrl, { requires: ["anonymous-client-ip-when-cross-origin"] }); + await agent.navigate(nextUrl); + + let requestHeaders = await agent.getRequestHeaders(); + request_credentials = await agent.getRequestCredentials(); + if (cross_origin) { + assert_equals(request_credentials.username, undefined); + assert_equals(request_credentials.password, undefined); + + assert_in_array(requestHeaders.purpose, ["", "prefetch"]); + assert_equals(requestHeaders.sec_purpose, "prefetch;anonymous-client-ip"); + } + else { + assert_equals(request_credentials.username, credentials.username); + assert_equals(request_credentials.password, credentials.password); + + assert_prefetched(await agent.getRequestHeaders()); + } + + }, "test www-authenticate basic does not forward credentials to cross-origin pages."); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-transport-stats.https.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-transport-stats.https.html index 2240bc4..3dfba16 100644 --- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-transport-stats.https.html +++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-transport-stats.https.html
@@ -40,6 +40,7 @@ }); assert_equals(transportStats.iceRole, 'controlling'); assert_equals(transportStats.iceLocalUsernameFragment, iceParameters.usernameFragment); + assert_equals(transportStats.iceState, 'new'); assert_equals(transportStats.selectedCandidatePairChanges, 0); }, 'ICE statistics on transport-stats after setLocalDescription'); </script>
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt index 30ef5f2..9c25f92 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 462 tests; 446 PASS, 16 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 462 tests; 450 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS change state from hidden to text PASS change state from hidden to search PASS change state from hidden to tel @@ -24,7 +24,7 @@ PASS change state from text to hidden PASS change state from text to search PASS change state from text to tel -FAIL change state from text to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from text to url PASS change state from text to email PASS change state from text to password PASS change state from text to datetime-local @@ -45,7 +45,7 @@ PASS change state from search to hidden PASS change state from search to text PASS change state from search to tel -FAIL change state from search to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from search to url PASS change state from search to email PASS change state from search to password PASS change state from search to datetime-local @@ -66,7 +66,7 @@ PASS change state from tel to hidden PASS change state from tel to text PASS change state from tel to search -FAIL change state from tel to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from tel to url PASS change state from tel to email PASS change state from tel to password PASS change state from tel to datetime-local @@ -130,7 +130,7 @@ PASS change state from password to text PASS change state from password to search PASS change state from password to tel -FAIL change state from password to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from password to url PASS change state from password to email PASS change state from password to datetime-local PASS change state from password to date
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https-expected.txt index a0cabf07..b4b7dfa1 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/secure-payment-confirmation/enrollment-in-iframe.sub.https-expected.txt
@@ -1,5 +1,6 @@ This is a testharness.js-based test. -FAIL SPC enrollment in cross-origin iframe assert_own_property: expected property "id" missing +FAIL SPC enrollment in cross-origin iframe assert_equals: expected null but got object "NotSupportedError: The user agent does not support public key credentials." +PASS SPC enrollment in cross-origin iframe fails without user activation PASS SPC enrollment in cross-origin iframe without payment permission Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/webrtc-stats/supported-stats-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/webrtc-stats/supported-stats-expected.txt index dda82813..09420f17 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/webrtc-stats/supported-stats-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/webrtc-stats/supported-stats-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 311 tests; 208 PASS, 103 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 311 tests; 209 PASS, 102 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS getStats succeeds PASS Validating stats PASS codec's payloadType
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt new file mode 100644 index 0000000..30ef5f2 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac10.14/external/wpt/html/semantics/forms/the-input-element/type-change-state-expected.txt
@@ -0,0 +1,466 @@ +This is a testharness.js-based test. +Found 462 tests; 446 PASS, 16 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS change state from hidden to text +PASS change state from hidden to search +PASS change state from hidden to tel +PASS change state from hidden to url +PASS change state from hidden to email +PASS change state from hidden to password +PASS change state from hidden to datetime-local +PASS change state from hidden to date +PASS change state from hidden to month +PASS change state from hidden to week +PASS change state from hidden to time +PASS change state from hidden to number +PASS change state from hidden to range +PASS change state from hidden to color +PASS change state from hidden to checkbox +PASS change state from hidden to radio +PASS change state from hidden to file +PASS change state from hidden to submit +PASS change state from hidden to image +PASS change state from hidden to reset +PASS change state from hidden to button +PASS change state from text to hidden +PASS change state from text to search +PASS change state from text to tel +FAIL change state from text to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from text to email +PASS change state from text to password +PASS change state from text to datetime-local +PASS change state from text to date +PASS change state from text to month +PASS change state from text to week +PASS change state from text to time +PASS change state from text to number +PASS change state from text to range +PASS change state from text to color +PASS change state from text to checkbox +PASS change state from text to radio +PASS change state from text to file +PASS change state from text to submit +PASS change state from text to image +PASS change state from text to reset +PASS change state from text to button +PASS change state from search to hidden +PASS change state from search to text +PASS change state from search to tel +FAIL change state from search to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from search to email +PASS change state from search to password +PASS change state from search to datetime-local +PASS change state from search to date +PASS change state from search to month +PASS change state from search to week +PASS change state from search to time +PASS change state from search to number +PASS change state from search to range +PASS change state from search to color +PASS change state from search to checkbox +PASS change state from search to radio +PASS change state from search to file +PASS change state from search to submit +PASS change state from search to image +PASS change state from search to reset +PASS change state from search to button +PASS change state from tel to hidden +PASS change state from tel to text +PASS change state from tel to search +FAIL change state from tel to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from tel to email +PASS change state from tel to password +PASS change state from tel to datetime-local +PASS change state from tel to date +PASS change state from tel to month +PASS change state from tel to week +PASS change state from tel to time +PASS change state from tel to number +PASS change state from tel to range +PASS change state from tel to color +PASS change state from tel to checkbox +PASS change state from tel to radio +PASS change state from tel to file +PASS change state from tel to submit +PASS change state from tel to image +PASS change state from tel to reset +PASS change state from tel to button +PASS change state from url to hidden +PASS change state from url to text +PASS change state from url to search +PASS change state from url to tel +PASS change state from url to email +PASS change state from url to password +PASS change state from url to datetime-local +PASS change state from url to date +PASS change state from url to month +PASS change state from url to week +PASS change state from url to time +PASS change state from url to number +PASS change state from url to range +PASS change state from url to color +PASS change state from url to checkbox +PASS change state from url to radio +PASS change state from url to file +PASS change state from url to submit +PASS change state from url to image +PASS change state from url to reset +PASS change state from url to button +PASS change state from email to hidden +PASS change state from email to text +PASS change state from email to search +PASS change state from email to tel +PASS change state from email to url +PASS change state from email to password +PASS change state from email to datetime-local +PASS change state from email to date +PASS change state from email to month +PASS change state from email to week +PASS change state from email to time +PASS change state from email to number +PASS change state from email to range +PASS change state from email to color +PASS change state from email to checkbox +PASS change state from email to radio +PASS change state from email to file +PASS change state from email to submit +PASS change state from email to image +PASS change state from email to reset +PASS change state from email to button +PASS change state from password to hidden +PASS change state from password to text +PASS change state from password to search +PASS change state from password to tel +FAIL change state from password to url assert_equals: selectionStart should be unchanged expected 2 but got 6 +PASS change state from password to email +PASS change state from password to datetime-local +PASS change state from password to date +PASS change state from password to month +PASS change state from password to week +PASS change state from password to time +PASS change state from password to number +PASS change state from password to range +PASS change state from password to color +PASS change state from password to checkbox +PASS change state from password to radio +PASS change state from password to file +PASS change state from password to submit +PASS change state from password to image +PASS change state from password to reset +PASS change state from password to button +PASS change state from datetime-local to hidden +PASS change state from datetime-local to text +PASS change state from datetime-local to search +PASS change state from datetime-local to tel +PASS change state from datetime-local to url +PASS change state from datetime-local to email +PASS change state from datetime-local to password +PASS change state from datetime-local to date +PASS change state from datetime-local to month +PASS change state from datetime-local to week +PASS change state from datetime-local to time +PASS change state from datetime-local to number +PASS change state from datetime-local to range +PASS change state from datetime-local to color +FAIL change state from datetime-local to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from datetime-local to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from datetime-local to file +PASS change state from datetime-local to submit +PASS change state from datetime-local to image +PASS change state from datetime-local to reset +PASS change state from datetime-local to button +PASS change state from date to hidden +PASS change state from date to text +PASS change state from date to search +PASS change state from date to tel +PASS change state from date to url +PASS change state from date to email +PASS change state from date to password +PASS change state from date to datetime-local +PASS change state from date to month +PASS change state from date to week +PASS change state from date to time +PASS change state from date to number +PASS change state from date to range +PASS change state from date to color +FAIL change state from date to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from date to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from date to file +PASS change state from date to submit +PASS change state from date to image +PASS change state from date to reset +PASS change state from date to button +PASS change state from month to hidden +PASS change state from month to text +PASS change state from month to search +PASS change state from month to tel +PASS change state from month to url +PASS change state from month to email +PASS change state from month to password +PASS change state from month to datetime-local +PASS change state from month to date +PASS change state from month to week +PASS change state from month to time +PASS change state from month to number +PASS change state from month to range +PASS change state from month to color +FAIL change state from month to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from month to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from month to file +PASS change state from month to submit +PASS change state from month to image +PASS change state from month to reset +PASS change state from month to button +PASS change state from week to hidden +PASS change state from week to text +PASS change state from week to search +PASS change state from week to tel +PASS change state from week to url +PASS change state from week to email +PASS change state from week to password +PASS change state from week to datetime-local +PASS change state from week to date +PASS change state from week to month +PASS change state from week to time +PASS change state from week to number +PASS change state from week to range +PASS change state from week to color +FAIL change state from week to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from week to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from week to file +PASS change state from week to submit +PASS change state from week to image +PASS change state from week to reset +PASS change state from week to button +PASS change state from time to hidden +PASS change state from time to text +PASS change state from time to search +PASS change state from time to tel +PASS change state from time to url +PASS change state from time to email +PASS change state from time to password +PASS change state from time to datetime-local +PASS change state from time to date +PASS change state from time to month +PASS change state from time to week +PASS change state from time to number +PASS change state from time to range +PASS change state from time to color +FAIL change state from time to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from time to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from time to file +PASS change state from time to submit +PASS change state from time to image +PASS change state from time to reset +PASS change state from time to button +PASS change state from number to hidden +PASS change state from number to text +PASS change state from number to search +PASS change state from number to tel +PASS change state from number to url +PASS change state from number to email +PASS change state from number to password +PASS change state from number to datetime-local +PASS change state from number to date +PASS change state from number to month +PASS change state from number to week +PASS change state from number to time +PASS change state from number to range +PASS change state from number to color +FAIL change state from number to checkbox assert_equals: input.value should be 'on' after change of state expected "on" but got "" +FAIL change state from number to radio assert_equals: input.value should be 'on' after change of state expected "on" but got "" +PASS change state from number to file +PASS change state from number to submit +PASS change state from number to image +PASS change state from number to reset +PASS change state from number to button +PASS change state from range to hidden +PASS change state from range to text +PASS change state from range to search +PASS change state from range to tel +PASS change state from range to url +PASS change state from range to email +PASS change state from range to password +PASS change state from range to datetime-local +PASS change state from range to date +PASS change state from range to month +PASS change state from range to week +PASS change state from range to time +PASS change state from range to number +PASS change state from range to color +PASS change state from range to checkbox +PASS change state from range to radio +PASS change state from range to file +PASS change state from range to submit +PASS change state from range to image +PASS change state from range to reset +PASS change state from range to button +PASS change state from color to hidden +PASS change state from color to text +PASS change state from color to search +PASS change state from color to tel +PASS change state from color to url +PASS change state from color to email +PASS change state from color to password +PASS change state from color to datetime-local +PASS change state from color to date +PASS change state from color to month +PASS change state from color to week +PASS change state from color to time +PASS change state from color to number +PASS change state from color to range +PASS change state from color to checkbox +PASS change state from color to radio +PASS change state from color to file +PASS change state from color to submit +PASS change state from color to image +PASS change state from color to reset +PASS change state from color to button +PASS change state from checkbox to hidden +PASS change state from checkbox to text +PASS change state from checkbox to search +PASS change state from checkbox to tel +PASS change state from checkbox to url +PASS change state from checkbox to email +PASS change state from checkbox to password +PASS change state from checkbox to datetime-local +PASS change state from checkbox to date +PASS change state from checkbox to month +PASS change state from checkbox to week +PASS change state from checkbox to time +PASS change state from checkbox to number +PASS change state from checkbox to range +PASS change state from checkbox to color +PASS change state from checkbox to radio +PASS change state from checkbox to file +PASS change state from checkbox to submit +PASS change state from checkbox to image +PASS change state from checkbox to reset +PASS change state from checkbox to button +PASS change state from radio to hidden +PASS change state from radio to text +PASS change state from radio to search +PASS change state from radio to tel +PASS change state from radio to url +PASS change state from radio to email +PASS change state from radio to password +PASS change state from radio to datetime-local +PASS change state from radio to date +PASS change state from radio to month +PASS change state from radio to week +PASS change state from radio to time +PASS change state from radio to number +PASS change state from radio to range +PASS change state from radio to color +PASS change state from radio to checkbox +PASS change state from radio to file +PASS change state from radio to submit +PASS change state from radio to image +PASS change state from radio to reset +PASS change state from radio to button +PASS change state from file to hidden +PASS change state from file to text +PASS change state from file to search +PASS change state from file to tel +PASS change state from file to url +PASS change state from file to email +PASS change state from file to password +PASS change state from file to datetime-local +PASS change state from file to date +PASS change state from file to month +PASS change state from file to week +PASS change state from file to time +PASS change state from file to number +PASS change state from file to range +PASS change state from file to color +PASS change state from file to checkbox +PASS change state from file to radio +PASS change state from file to submit +PASS change state from file to image +PASS change state from file to reset +PASS change state from file to button +PASS change state from submit to hidden +PASS change state from submit to text +PASS change state from submit to search +PASS change state from submit to tel +PASS change state from submit to url +PASS change state from submit to email +PASS change state from submit to password +PASS change state from submit to datetime-local +PASS change state from submit to date +PASS change state from submit to month +PASS change state from submit to week +PASS change state from submit to time +PASS change state from submit to number +PASS change state from submit to range +PASS change state from submit to color +PASS change state from submit to checkbox +PASS change state from submit to radio +PASS change state from submit to file +PASS change state from submit to image +PASS change state from submit to reset +PASS change state from submit to button +PASS change state from image to hidden +PASS change state from image to text +PASS change state from image to search +PASS change state from image to tel +PASS change state from image to url +PASS change state from image to email +PASS change state from image to password +PASS change state from image to datetime-local +PASS change state from image to date +PASS change state from image to month +PASS change state from image to week +PASS change state from image to time +PASS change state from image to number +PASS change state from image to range +PASS change state from image to color +PASS change state from image to checkbox +PASS change state from image to radio +PASS change state from image to file +PASS change state from image to submit +PASS change state from image to reset +PASS change state from image to button +PASS change state from reset to hidden +PASS change state from reset to text +PASS change state from reset to search +PASS change state from reset to tel +PASS change state from reset to url +PASS change state from reset to email +PASS change state from reset to password +PASS change state from reset to datetime-local +PASS change state from reset to date +PASS change state from reset to month +PASS change state from reset to week +PASS change state from reset to time +PASS change state from reset to number +PASS change state from reset to range +PASS change state from reset to color +PASS change state from reset to checkbox +PASS change state from reset to radio +PASS change state from reset to file +PASS change state from reset to submit +PASS change state from reset to image +PASS change state from reset to button +PASS change state from button to hidden +PASS change state from button to text +PASS change state from button to search +PASS change state from button to tel +PASS change state from button to url +PASS change state from button to email +PASS change state from button to password +PASS change state from button to datetime-local +PASS change state from button to date +PASS change state from button to month +PASS change state from button to week +PASS change state from button to time +PASS change state from button to number +PASS change state from button to range +PASS change state from button to color +PASS change state from button to checkbox +PASS change state from button to radio +PASS change state from button to file +PASS change state from button to submit +PASS change state from button to image +PASS change state from button to reset +Harness: the test ran to completion. +
diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc index 7b9044d..4283ed0 100644 --- a/third_party/protobuf/src/google/protobuf/port_def.inc +++ b/third_party/protobuf/src/google/protobuf/port_def.inc
@@ -277,18 +277,18 @@ #endif #if defined(__has_cpp_attribute) -#define PROTOBUF_HAS_ATTRIBUTE(attr) __has_cpp_attribute(attr) +#define HAS_ATTRIBUTE(attr) __has_cpp_attribute(attr) #else -#define PROTOBUF_HAS_ATTRIBUTE(attr) 0 +#define HAS_ATTRIBUTE(attr) 0 #endif -#if PROTOBUF_HAS_ATTRIBUTE(unused) || (defined(__GNUC__) && !defined(__clang__)) +#if HAS_ATTRIBUTE(unused) || (defined(__GNUC__) && !defined(__clang__)) #define PROTOBUF_UNUSED __attribute__((__unused__)) #else #define PROTOBUF_UNUSED #endif -#undef PROTOBUF_HAS_ATTRIBUTE +#undef HAS_ATTRIBUTE #ifdef _MSC_VER #define PROTOBUF_LONGLONG(x) x##I64
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index d3735048..43a2900 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -292,7 +292,7 @@ 'Libfuzzer Upload Linux32 V8-ARM ASan': 'libfuzzer_asan_release_bot_x86_v8_arm_reclient', 'Libfuzzer Upload Linux32 V8-ARM ASan Debug': 'libfuzzer_asan_debug_bot_x86_v8_arm_reclient', 'Libfuzzer Upload Mac ASan': 'libfuzzer_mac_asan_shared_release_bot', - 'Libfuzzer Upload Windows ASan': 'libfuzzer_windows_asan_release_bot_reclient', + 'Libfuzzer Upload Windows ASan': 'libfuzzer_windows_asan_release_bot', 'Libfuzzer Upload iOS Catalyst Debug': 'ios_catalyst_debug_static_bot_compile_only_libfuzzer_asan_no_dsyms_no_remoting', 'MSAN Release (chained origins)': 'msan_release_bot_reclient', 'MSAN Release (no origins)': 'msan_no_origins_release_bot_reclient', @@ -430,7 +430,7 @@ 'win-fieldtrial-rel': 'gpu_tests_release_bot_minimal_symbols_reclient', 'win-pixel-builder-rel': 'release_bot_reclient', 'win-upload-perfetto': 'release_bot_perfetto_zlib_reclient', - 'win10-code-coverage': 'clang_code_coverage_reclient', + 'win10-code-coverage': 'clang_code_coverage', 'win32-archive-rel-goma-rbe-canary': 'release_bot_x86_minimal_symbols_enable_archive_compression', 'win32-archive-rel-goma-rbe-latest': 'release_bot_x86_minimal_symbols_enable_archive_compression', 'win32-arm64-rel': 'win32_arm64_release_bot_reclient', @@ -725,7 +725,7 @@ 'Win x64 Builder': 'gpu_tests_release_bot_minimal_symbols_reclient', 'Win x64 Builder (dbg)': 'gpu_tests_debug_bot_reclient', 'Win x64 Builder Code Coverage': 'gpu_tests_release_bot_minimal_symbols_code_coverage', - 'Windows deterministic': 'release_bot_x86_minimal_symbols_reclient', + 'Windows deterministic': 'release_bot_x86_minimal_symbols', }, 'client.devtools-frontend.integration': { @@ -2174,10 +2174,6 @@ 'use_clang_coverage', 'debug_static_bot', 'x64', 'ios', 'xctest', 'ios_disable_xcode_project_generation', ], - 'clang_code_coverage_reclient': [ - 'release_bot_reclient', 'clang', 'use_clang_coverage', 'no_symbols', - ], - 'clang_tot_asan_lsan_static_release': [ 'clang_tot', 'asan', 'lsan', 'static', 'release', ], @@ -2942,13 +2938,6 @@ 'libfuzzer', 'asan', 'release_bot', 'chrome_with_codecs', 'pdf_xfa', 'disable_nacl', 'minimal_symbols', 'mojo_fuzzer', ], - # Note that because of optimize_for_fuzzing, Windows cannot share a config - # with other libFuzzer builds. optimize_for_fuzzing is used by the other - # libFuzzer build configs but it does not work on Windows. - 'libfuzzer_windows_asan_release_bot_reclient': [ - 'libfuzzer', 'asan', 'release_bot_reclient', 'chrome_with_codecs', 'pdf_xfa', 'disable_nacl', 'minimal_symbols', 'mojo_fuzzer', - ], - 'libfuzzer_windows_asan_release_trybot': [ 'libfuzzer', 'asan', 'release_trybot', 'chrome_with_codecs', 'pdf_xfa', 'disable_nacl', 'mojo_fuzzer', 'skip_generate_fuzzer_owners', 'no_symbols', ], @@ -3276,10 +3265,6 @@ 'release_bot', 'x86', 'minimal_symbols', 'no_com_init_hooks', 'chrome_with_codecs' ], - 'release_bot_x86_minimal_symbols_reclient': [ - 'release_bot_reclient', 'x86', 'minimal_symbols', - ], - 'release_fuchsia_arm64': [ 'release', 'official_optimize_goma', 'fuchsia', 'arm64' ],
diff --git a/tools/mb/mb_config_expectations/chromium.fuzz.json b/tools/mb/mb_config_expectations/chromium.fuzz.json index ac3ba14a..2446ab12 100644 --- a/tools/mb/mb_config_expectations/chromium.fuzz.json +++ b/tools/mb/mb_config_expectations/chromium.fuzz.json
@@ -357,9 +357,8 @@ "pdf_enable_xfa": true, "proprietary_codecs": true, "symbol_level": 1, - "use_libfuzzer": true, - "use_rbe": true, - "use_remoteexec": true + "use_goma": true, + "use_libfuzzer": true } }, "Libfuzzer Upload iOS Catalyst Debug": {
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json index 3f28e21..cdffc7e 100644 --- a/tools/mb/mb_config_expectations/chromium.fyi.json +++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -1381,8 +1381,7 @@ "is_debug": false, "symbol_level": 0, "use_clang_coverage": true, - "use_rbe": true, - "use_remoteexec": true + "use_goma": true } }, "win32-archive-rel-goma-rbe-canary": {
diff --git a/tools/mb/mb_config_expectations/chromium.win.json b/tools/mb/mb_config_expectations/chromium.win.json index cd801fa..cd051043 100644 --- a/tools/mb/mb_config_expectations/chromium.win.json +++ b/tools/mb/mb_config_expectations/chromium.win.json
@@ -67,8 +67,7 @@ "is_debug": false, "symbol_level": 1, "target_cpu": "x86", - "use_rbe": true, - "use_remoteexec": true + "use_goma": true } } } \ No newline at end of file
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index ff2ee68..21e69b2 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -19471,7 +19471,10 @@ <action name="MobileTabSwitched" not_user_triggered="true"> <owner>Please list the metric's owners. Add more owner tags as needed.</owner> - <description>Please enter the description of this user action.</description> + <description> + User actively switched to a different tab. This does not include tab refocus + caused by cancelling a tab closure. + </description> </action> <action name="MobileTabSwitched.TabletTabStrip" not_user_triggered="true">
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 1183de5..7299a8f 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -24395,6 +24395,7 @@ <int value="53" label="Console Sidebar opened"/> <int value="54" label="User imported a trace into the performance panel"/> <int value="55" label="User exported a trace from the performance panel"/> + <int value="56" label="Stack frame restarted"/> </enum> <enum name="DevToolsBackgroundService"> @@ -59225,6 +59226,7 @@ <int value="1090442943" label="SemanticColorDebugOverride:enabled"/> <int value="1091624595" label="BluetoothAdvertisementMonitoring:enabled"/> <int value="1091631619" label="disable-accelerated-video-encode"/> + <int value="1092296990" label="EnableMultiMonitorsInCrd:disabled"/> <int value="1092896354" label="EnableFullscreenAppList:disabled"/> <int value="1093859961" label="RelatedSearchesSimplifiedUx:disabled"/> <int value="1094095931" label="enable-vulkan"/> @@ -59685,6 +59687,7 @@ <int value="1395175083" label="PrivacyGuide:enabled"/> <int value="1397053154" label="ContextualSearchLiteralSearchTap:enabled"/> <int value="1397069250" label="NetworkService:disabled"/> + <int value="1397169840" label="EnableMultiMonitorsInCrd:enabled"/> <int value="1398044738" label="EchePhoneHubPermissionsOnboarding:enabled"/> <int value="1398049903" label="WebUIDarkMode:disabled"/> <int value="1398333721" label="ForceEnableDevicesPage:disabled"/> @@ -72876,6 +72879,24 @@ <int value="2" label="Malformed response"/> </enum> +<enum name="PasswordManager.LoadingDialogOutcome"> + <int value="0" label="Loading finished before dialog"> + The loading dialog was requested but the loading finished before it got + shown. + </int> + <int value="1" label="Loaded finished with dialog"> + The loading dialog was shown, loading finished and dialog was automatically + dismissed. + </int> + <int value="2" label="Loading cancelled by user"> + The loading dialog was shown and cancelled by user before the loading + finished. + </int> + <int value="3" label="Loading timed out"> + The loading dialog was shown and timed out before the loading finished. + </int> +</enum> + <enum name="PasswordManager.MoveToAccountStoreTrigger"> <summary> Triggers that will cause Chrome to offer to move a password from the profile @@ -85231,6 +85252,8 @@ <int value="71" label="Rotation of the device trust key failed."/> <int value="72" label="Rotation of the device trust key succeeded."/> <int value="73" label="Creation of shortcuts succeeded."/> + <int value="74" label="DMToken deletion failed."/> + <int value="75" label="DMToken deletion succeeded."/> </enum> <enum name="SetupInstallServiceInstallResult">
diff --git a/tools/metrics/histograms/metadata/password/histograms.xml b/tools/metrics/histograms/metadata/password/histograms.xml index 3a30324..dae0cf1 100644 --- a/tools/metrics/histograms/metadata/password/histograms.xml +++ b/tools/metrics/histograms/metadata/password/histograms.xml
@@ -1232,7 +1232,8 @@ Records whether the provided intent to launch the Credential Manager for the {ProfileType} could be used successfully. This is recorded right after calling send() on the intent which happens when the async call to get the - intent from Google Play Services returns. + intent from Google Play Services returns. Metric will not be reported when + the Loading dialog is cancelled by user or timed out. </summary> <token key="ProfileType" variants="ProfileType"/> </histogram> @@ -1847,6 +1848,22 @@ </summary> </histogram> +<histogram name="PasswordManager.ModalLoadingDialog.{IntentType}.Outcome" + enum="PasswordManager.LoadingDialogOutcome" expires_after="M106"> + <owner>maxan@chromium.org</owner> + <owner>fhorschig@chromium.org</owner> + <summary> + Records the outcome of the GMS Core UI loading dialog shown when the user + launches the {IntentType}. Recorded for both successful and failed attempts + to get and launch the {IntentType}. The outcome is recorded right before + attempting to send the {IntentType} PendingIntent. + </summary> + <token key="IntentType"> + <variant name="CredentialManager"/> + <variant name="PasswordCheckup"/> + </token> +</histogram> + <histogram name="PasswordManager.MoveUIDismissalReason" enum="PasswordManagerUIDismissalReason" expires_after="2022-10-16"> <!-- Name completed by histogram_suffixes name="PasswordAccountStorageUserState" --> @@ -1958,7 +1975,8 @@ Records whether the provided intent to launch the Password Checkup could be used successfully. This is recorded right after calling send() on the intent which happens when the async call to get the intent from Google Play - Services returns. + Services returns. Metric will not be reported when the Loading dialog is + cancelled by user or timed out. </summary> </histogram>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 848c057..1d4c132a 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -13,16 +13,16 @@ "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell" }, "mac": { - "hash": "c1affa19478fea5d3b605bdffd0023bfb97467fe", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/a942004e951f2d6ccd726fc6ee4e62e5f08c2e62/trace_processor_shell" + "hash": "7d24e1bbb6c3e957962f3341559c4e7a825225e1", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/fbdedcfb33db2b18f8679550a31e2a062f466dab/trace_processor_shell" }, "mac_arm64": { "hash": "e1ad4861384b06d911a65f035317914b8cc975c6", "full_remote_path": "perfetto-luci-artifacts/v25.0/mac-arm64/trace_processor_shell" }, "linux": { - "hash": "ffbd563cac673fb2ddc6c8ae87b1746081c4079c", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/a942004e951f2d6ccd726fc6ee4e62e5f08c2e62/trace_processor_shell" + "hash": "c0bff359879951f085fa474c3748f76fd29e9255", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/0d5910799e4742b15383c203b3c9a0583c9f1f88/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_hy.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_hy.xtb index ba7ddc1..73c8abb 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_hy.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_hy.xtb
@@ -1,7 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="hy"> -<translation id="1287053896835709737">Դեղինը սևի վրա</translation> +<translation id="1287053896835709737">Դեղին՝ սևի վրա</translation> <translation id="1408730541890277710">Փոխարինել պատկերները այլընտրանքային տեքստով</translation> <translation id="145360476452865422">Շարժապատկերների քաղաքականություն՝</translation> <translation id="1555130319947370107">Կապույտ</translation>
diff --git a/ui/android/java/src/org/chromium/ui/modaldialog/DialogDismissalCause.java b/ui/android/java/src/org/chromium/ui/modaldialog/DialogDismissalCause.java index eaa3c9e..af9d14f 100644 --- a/ui/android/java/src/org/chromium/ui/modaldialog/DialogDismissalCause.java +++ b/ui/android/java/src/org/chromium/ui/modaldialog/DialogDismissalCause.java
@@ -18,7 +18,7 @@ DialogDismissalCause.WEB_CONTENTS_DESTROYED, DialogDismissalCause.DIALOG_INTERACTION_DEFERRED, DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED, - DialogDismissalCause.ACTION_ON_DIALOG_NOT_POSSIBLE}) + DialogDismissalCause.ACTION_ON_DIALOG_NOT_POSSIBLE, DialogDismissalCause.CLIENT_TIMEOUT}) @Retention(RetentionPolicy.SOURCE) public @interface DialogDismissalCause { // Dismissal causes that are fully controlled by clients (i.e. are not used inside the @@ -68,4 +68,8 @@ * validate after the action was taken on the dialog content. */ int ACTION_ON_DIALOG_NOT_POSSIBLE = 14; + /** + * Controlled by client: The dialog was automatically dismissed after a timeout. + */ + int CLIENT_TIMEOUT = 15; }
diff --git a/ui/webui/BUILD.gn b/ui/webui/BUILD.gn index eab7404..a883f68c 100644 --- a/ui/webui/BUILD.gn +++ b/ui/webui/BUILD.gn
@@ -25,7 +25,10 @@ "//services/service_manager/public/cpp", ] - public_deps = [ "//ui/webui/resources/js/browser_command:mojo_bindings" ] + public_deps = [ + "//ui/webui/resources/js/browser_command:mojo_bindings", + "//ui/webui/resources/js/metrics_reporter:mojo_bindings", + ] if (!is_android && !is_ios) { public_deps += [
diff --git a/ui/webui/resources/js/metrics_reporter/metrics_reporter.ts b/ui/webui/resources/js/metrics_reporter/metrics_reporter.ts index fade7db8..d44ec1f5 100644 --- a/ui/webui/resources/js/metrics_reporter/metrics_reporter.ts +++ b/ui/webui/resources/js/metrics_reporter/metrics_reporter.ts
@@ -45,23 +45,51 @@ * metricsReporter.umaReportTime( * metricsReporter.measure('StartMark')); * } + * + * Caveats: + * 1. measure() will assert if the mark is not available. You can use + * the following code to prevent execution from being interrupted. + * + * metricsReporter.measure('StartMark').then(duration => + * metricsReporter.umaReportTime('Your.Histogram', duration)) + * + * 2. measure() will record inaccurate time if a mark is reused for + * overlapping measurements. To prevent this from happening, you + * can use hasLocalMark() to test before calling mark() and use + * clearMark() to erase the mark after measure(). */ -export class MetricsReporter { + +export interface MetricsReporter { + mark(name: string): void; + measure(startMark: string, endMark?: string): Promise<bigint>; + hasMark(name: string): Promise<boolean>; + hasLocalMark(name: string): boolean; + clearMark(name: string): void; + umaReportTime(histogram: string, time: bigint): void; +} + +export class MetricsReporterImpl implements MetricsReporter { private marks_: Map<string, bigint> = new Map(); private browserProxy_: BrowserProxy = BrowserProxyImpl.getInstance(); constructor() { const callbackRouter = this.browserProxy_.getCallbackRouter(); - callbackRouter.onGetMark.addListener((name: string) => { - return this.marks_.has(name) ? timeToMojo(this.marks_.get(name)!) : null; - }); + callbackRouter.onGetMark.addListener( + (name: string) => ({ + markedTime: + this.marks_.has(name) ? timeToMojo(this.marks_.get(name)!) : null + })); callbackRouter.onClearMark.addListener( (name: string) => this.marks_.delete(name)); } static getInstance(): MetricsReporter { - return instance || (instance = new MetricsReporter()); + return instance || (instance = new MetricsReporterImpl()); + } + + static setInstanceForTest(newInstance: MetricsReporter) { + instance = newInstance; } mark(name: string) { @@ -100,8 +128,12 @@ return remoteMark !== null && remoteMark.markedTime !== null; } + hasLocalMark(name: string): boolean { + return this.marks_.has(name); + } + clearMark(name: string) { - assert(this.marks_.delete(name)); + this.marks_.delete(name); this.browserProxy_.clearMark(name); }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantDependencies.java b/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantDependencies.java index 5eba39e..e984358b 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantDependencies.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantDependencies.java
@@ -8,12 +8,15 @@ import android.view.View; import android.view.ViewGroup; +import androidx.annotation.Nullable; + import org.chromium.base.lifetime.Destroyable; import org.chromium.components.autofill_assistant.AssistantBrowserControlsFactory; import org.chromium.components.autofill_assistant.AssistantDependencies; import org.chromium.components.autofill_assistant.AssistantSnackbarFactory; import org.chromium.components.autofill_assistant.AssistantTabChangeObserver; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerProvider; import org.chromium.content_public.browser.WebContents; import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.base.ApplicationViewportInsetSupplier; @@ -29,40 +32,55 @@ maybeUpdateDependencies(webContents); } + /** + * Returns true if all dependencies are available. + */ @Override public boolean maybeUpdateDependencies(WebContents webContents) { - // TODO(b/222671580): Implement - return true; + assert webContents == mWebContents; + return getWindowAndroid() != null && getActivity() != null; } @Override - public Activity getActivity() { - // TODO(b/222671580): Implement - return null; - } - - @Override + @Nullable public WindowAndroid getWindowAndroid() { - // TODO(b/222671580): Implement - return null; + return mWebContents.getTopLevelNativeWindow(); } @Override + @Nullable + public Activity getActivity() { + WindowAndroid windowAndroid = getWindowAndroid(); + if (windowAndroid == null) return null; + + return windowAndroid.getActivity().get(); + } + + @Override + @Nullable public BottomSheetController getBottomSheetController() { - // TODO(b/222671580): Implement - return null; + WindowAndroid windowAndroid = getWindowAndroid(); + if (windowAndroid == null) return null; + + return BottomSheetControllerProvider.from(windowAndroid); } @Override + @Nullable public KeyboardVisibilityDelegate getKeyboardVisibilityDelegate() { - // TODO(b/222671580): Implement - return null; + WindowAndroid windowAndroid = getWindowAndroid(); + if (windowAndroid == null) return null; + + return windowAndroid.getKeyboardDelegate(); } @Override + @Nullable public ApplicationViewportInsetSupplier getBottomInsetProvider() { - // TODO(b/222671580): Implement - return null; + WindowAndroid windowAndroid = getWindowAndroid(); + if (windowAndroid == null) return null; + + return windowAndroid.getApplicationBottomInsetProvider(); } @Override
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantStaticDependencies.java b/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantStaticDependencies.java index c491dba..de9e45ae 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantStaticDependencies.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/autofill_assistant/WebLayerAssistantStaticDependencies.java
@@ -43,7 +43,7 @@ @JNINamespace("weblayer") public class WebLayerAssistantStaticDependencies implements AssistantStaticDependencies, SimpleFactoryKeyHandle { - private final WebContents mWebContents; + protected final WebContents mWebContents; WebLayerAssistantStaticDependencies(WebContents webContents) { mWebContents = webContents;