diff --git a/DEPS b/DEPS index 99920f9f..159d0aa 100644 --- a/DEPS +++ b/DEPS
@@ -156,7 +156,7 @@ # luci-go CIPD package version. # Make sure the revision is uploaded by infra-packagers builder. # https://ci.chromium.org/p/infra-internal/g/infra-packagers/console - 'luci_go': 'git_revision:3d22d4e5a77a3d9cbe4b1bf5ed2fc85b61c1e3e6', + 'luci_go': 'git_revision:de73cf6c4bde86f0a9c8d54151b69b0154a398f1', # This can be overridden, e.g. with custom_vars, to build clang from HEAD # instead of downloading the prebuilt pinned revision. @@ -175,11 +175,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '80f8325046b957cb130c258f87e081c06651efdf', + 'skia_revision': '2e307968fd54a22783cec8d5e58b8313c7506cbd', # 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': '40d81599a6c45b4bd2f5226c8586e761416c98cd', + 'v8_revision': 'c98aec6a776cebf4ab20b562c7a950fe29227cb6', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -187,7 +187,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': 'e18f749d97e87129bfaa3cc89a8a428a58b8cdaf', + 'angle_revision': '4f10b113a1914ea554eac86855eec5fd0a78e30e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -246,7 +246,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': 'ed60bec01fc798222eb1367cd74a8302e353d3ae', + 'devtools_frontend_revision': 'eaadca132fce10a1cd0b4c97cebdd6958fd15d5c', # 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. @@ -286,7 +286,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. - 'spv_tools_revision': '4c027048d88bcdd047ddace38081b6d6f896aba4', + 'spv_tools_revision': 'dd3d91691f1e1dc4c0f42818756cf5e165c8918c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -1250,7 +1250,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'da7205379701737a529aa67b4b0d3cd3cf9ec832', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '82e00fd235e4269372200867ae6eb9eb3a7e62a4', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1454,7 +1454,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'ec18cc3262922e7dcdbe70243c6f40606f979144', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'a2cb93d8b9659292f7ec73db53421d481f84c22c', + Var('webrtc_git') + '/src.git' + '@' + 'b2678cfefeddc9291863f560f417b64949eac8ac', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1529,7 +1529,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@3310ddd30e3b675aeeeb4ac1f98130f3fa9111a1', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e1f6408da19a12fb2a9adac9f9a05923d69f34a8', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/browser/gfx/deferred_gpu_command_service.cc b/android_webview/browser/gfx/deferred_gpu_command_service.cc index 008c9e9..ef68607 100644 --- a/android_webview/browser/gfx/deferred_gpu_command_service.cc +++ b/android_webview/browser/gfx/deferred_gpu_command_service.cc
@@ -31,7 +31,6 @@ gpu_service->gpu_feature_info(), gpu_service->sync_point_manager(), gpu_service->mailbox_manager(), - nullptr, gl::GLSurfaceFormat(), gpu_service->shared_image_manager(), nullptr), @@ -74,4 +73,10 @@ return nullptr; } +scoped_refptr<gl::GLShareGroup> DeferredGpuCommandService::GetShareGroup() { + if (!share_group_) + share_group_ = base::MakeRefCounted<gl::GLShareGroup>(); + return share_group_; +} + } // namespace android_webview
diff --git a/android_webview/browser/gfx/deferred_gpu_command_service.h b/android_webview/browser/gfx/deferred_gpu_command_service.h index f1736257..ffc6da7 100644 --- a/android_webview/browser/gfx/deferred_gpu_command_service.h +++ b/android_webview/browser/gfx/deferred_gpu_command_service.h
@@ -8,6 +8,10 @@ #include "base/macros.h" #include "gpu/ipc/command_buffer_task_executor.h" +namespace gl { +class GLShareGroup; +} + namespace android_webview { class GpuServiceWebView; @@ -26,6 +30,7 @@ void ScheduleDelayedWork(base::OnceClosure task) override; void PostNonNestableToClient(base::OnceClosure callback) override; scoped_refptr<gpu::SharedContextState> GetSharedContextState() override; + scoped_refptr<gl::GLShareGroup> GetShareGroup() override; protected: ~DeferredGpuCommandService() override; @@ -40,6 +45,7 @@ TaskQueueWebView* task_queue_; GpuServiceWebView* gpu_service_; + scoped_refptr<gl::GLShareGroup> share_group_; DISALLOW_COPY_AND_ASSIGN(DeferredGpuCommandService); };
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb index 821197e..8c990d2 100644 --- a/ash/strings/ash_strings_af.xtb +++ b/ash/strings/ash_strings_af.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Laekraglaaier gekoppel</translation> <translation id="8683506306463609433">Werkverrigtingnasporing is aktief</translation> +<translation id="8712637175834984815">Het dit</translation> <translation id="8721053961083920564">Wissel volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Dit kan dalk probeer om jou sleuteldrukke te steel</translation> <translation id="8735953464173050365">Wys sleutelbordinstellings. <ph name="KEYBOARD_NAME" /> is gekies</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index edf0e28..339ac69 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">አነስተኛ ኃይል ያለው ባትሪ መሙያ ተገናኝቷል</translation> <translation id="8683506306463609433">የአፈጻጸም ክትትል ገቢር ነው</translation> +<translation id="8712637175834984815">ገባኝ</translation> <translation id="8721053961083920564">ድምፅን ቀያይር። <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">የእርስዎን የቁልፍ ጭረቶች ለመስረቅ እየሞከረ ሊሆን ይችላል</translation> <translation id="8735953464173050365">የቁልፍ ሰሌዳ ቅንብሮችን አሳይ። <ph name="KEYBOARD_NAME" /> ተመርጧል</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index 0033d3d..06f0b95f 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270 درجة</translation> <translation id="8676770494376880701">تمّ توصيل شاحن منخفض الطاقة</translation> <translation id="8683506306463609433">تتبّع الأداء نشط</translation> +<translation id="8712637175834984815">تم</translation> <translation id="8721053961083920564">تبديل مستوى الصوت. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">قد تحاول لوحة المفاتيح سرقة ضغطات المفاتيح.</translation> <translation id="8735953464173050365">عرض إعدادات لوحة المفاتيح. تم اختيار <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 6265aa4..0a060a3 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -587,6 +587,7 @@ <translation id="8673028979667498656">২৭০°</translation> <translation id="8676770494376880701">কম শক্তিযুক্ত চ্চাৰ্জাৰ সংযোগ কৰা হৈছে</translation> <translation id="8683506306463609433">কার্যদক্ষতা ট্ৰে’চ কৰাটো সক্ৰিয় অৱস্থাত আছে</translation> +<translation id="8712637175834984815">বুজি পালোঁ</translation> <translation id="8721053961083920564">ভলিউম ট’গল কৰক। <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">এইটোৱে আপোনাৰ কীষ্ট্র’ক চুৰ কৰিব চেষ্টা কৰি থাকিব পাৰে</translation> <translation id="8735953464173050365">কীব'ৰ্ডৰ ছেটিংসমূহ দেখুৱাওক। <ph name="KEYBOARD_NAME" /> বাছনি কৰা হৈছে।</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 2e10b05..84334900 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Enerjiyə qənaət edən şarjer qoşuldu</translation> <translation id="8683506306463609433">Performansın izlənməsi aktivdir</translation> +<translation id="8712637175834984815">Anladım</translation> <translation id="8721053961083920564">Səsi aktiv edin. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Bu düymələrininızı oğurlamağa cəhd edə bilər</translation> <translation id="8735953464173050365">Klaviatura ayarlarını göstərin. <ph name="KEYBOARD_NAME" /> seçilib</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index d5f3ac0c..5b50c15f 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Падключана зарадная прылада малой магутнасці</translation> <translation id="8683506306463609433">Ажыццяўляецца трасіроўка прадукцыйнасці</translation> +<translation id="8712637175834984815">Зразумела</translation> <translation id="8721053961083920564">Уключыць або выключыць гук. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Клавіятура можа спрабаваць адсочваць і перадаваць націсканні клавіш</translation> <translation id="8735953464173050365">Паказаць налады клавіятуры. Выбрана: <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index c1eb5a7..ca2ec73a 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Свързано е зарядно устройство с малка мощност</translation> <translation id="8683506306463609433">Проследяването на ефективността е активно</translation> +<translation id="8712637175834984815">Разбрах</translation> <translation id="8721053961083920564">Превключване на звука. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Тя може да се опитва да записва кои клавиши натискате</translation> <translation id="8735953464173050365">Показване на настройките на клавиатурата. Избран метод на въвеждане: <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index 29c2becd..1b2b60e 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">২৭০°</translation> <translation id="8676770494376880701">নিম্ন শক্তির চার্জার সংযুক্ত করা হয়েছে</translation> <translation id="8683506306463609433">পারফরম্যান্স ট্রেস করার বিকল্প চালু আছে</translation> +<translation id="8712637175834984815">বুঝেছি</translation> <translation id="8721053961083920564">ভলিউম টগল করুন। <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">এটি আপনার পাসওয়ার্ড চুরি করার চেষ্টা করতে পারে</translation> <translation id="8735953464173050365">কীবোর্ড সেটিংস দেখান। <ph name="KEYBOARD_NAME" /> বেছে নেওয়া হয়েছে</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index 2fe5de9..070bbaf5 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> <translation id="8683506306463609433">Praćenje performansi je aktivno</translation> +<translation id="8712637175834984815">Razumijem</translation> <translation id="8721053961083920564">Uključivanje/isključivanje zvuka. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Možda neko pokušava ukrasti vaše otkucaje na tastaturi</translation> <translation id="8735953464173050365">Pogledajte postavke tastature. Izabrana je tastatura <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index 6298584..39ef9aec 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">S'ha connectat un carregador de baix consum</translation> <translation id="8683506306463609433">Traça del rendiment activa</translation> +<translation id="8712637175834984815">Entesos</translation> <translation id="8721053961083920564">Activa o desactiva el volum. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Pot ser que estigui provant de robar-te les combinacions de tecles</translation> <translation id="8735953464173050365">Mostra la configuració del teclat. S'ha seleccionat <ph name="KEYBOARD_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb index 17143fa..173ad30 100644 --- a/ash/strings/ash_strings_cs.xtb +++ b/ash/strings/ash_strings_cs.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Byla připojena nabíječka s nízkým napětím</translation> <translation id="8683506306463609433">Trasování výkonu je aktivní</translation> +<translation id="8712637175834984815">Hotovo</translation> <translation id="8721053961083920564">Zapnout či vypnout zvuk. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Je možné, že se pokouší odcizit vaše stisknutí kláves.</translation> <translation id="8735953464173050365">Zobrazit nastavení klávesnice. Je vybrána klávesnice <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index d775ee06..c015149 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Oplader med lav kraft er tilsluttet</translation> <translation id="8683506306463609433">Sporing af effektivitet er aktiv</translation> +<translation id="8712637175834984815">Forstået</translation> <translation id="8721053961083920564">Slå lyden til/fra. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Det forsøger muligvis at stjæle dine indtastninger</translation> <translation id="8735953464173050365">Vis tastaturindstillinger. <ph name="KEYBOARD_NAME" /> er valgt</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index c24493a..1d3079b 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Leistungsschwaches Ladegerät angeschlossen</translation> <translation id="8683506306463609433">Leistungsverfolgung ist aktiv</translation> +<translation id="8712637175834984815">Alles klar</translation> <translation id="8721053961083920564">Ton ein- oder ausschalten. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Möglicherweise versucht jemand, darüber Ihre Tastatureingaben zu erfassen</translation> <translation id="8735953464173050365">Tastatureinstellungen anzeigen. <ph name="KEYBOARD_NAME" /> ist ausgewählt.</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index b338199f..f4c86b5 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Ο συνδεδεμένος φορτιστής παρέχει χαμηλή ισχύ</translation> <translation id="8683506306463609433">Ενεργή παρακολούθηση απόδοσης</translation> +<translation id="8712637175834984815">Κατάλαβα!</translation> <translation id="8721053961083920564">Εναλλαγή έντασης ήχου. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Μπορεί να επιχειρεί να υποκλέψει τα πατήματα πλήκτρων σας</translation> <translation id="8735953464173050365">Εμφάνιση ρυθμίσεων πληκτρολογίου. Έχει επιλεχθεί το πληκτρολόγιο <ph name="KEYBOARD_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index 0642397..325559e 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Low-power charger connected</translation> <translation id="8683506306463609433">Performance tracing active</translation> +<translation id="8712637175834984815">Got it</translation> <translation id="8721053961083920564">Toggle volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">It may be attempting to steal your keystrokes</translation> <translation id="8735953464173050365">Show keyboard settings. <ph name="KEYBOARD_NAME" /> is selected</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 6ac18c8..598327f 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Cargador de baja potencia conectado</translation> <translation id="8683506306463609433">Registro del rendimiento activado</translation> +<translation id="8712637175834984815">Entendido</translation> <translation id="8721053961083920564">Activa o desactiva el volumen. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Es posible que alguien esté intentando determinar qué teclas presionaste</translation> <translation id="8735953464173050365">Mostrar la configuración del teclado: Está seleccionado el teclado <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index b26bd6fb..1a30bd0 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Cargador de baja potencia conectado</translation> <translation id="8683506306463609433">Control del rendimiento activo</translation> +<translation id="8712637175834984815">Listo</translation> <translation id="8721053961083920564">Activar o desactivar el volumen. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Es posible que esté intentando captar tus pulsaciones de teclas</translation> <translation id="8735953464173050365">Muestra la configuración de teclado. Actualmente está seleccionado <ph name="KEYBOARD_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index 790269e..7a2b2de 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Väikese energiakuluga laadija on ühendatud</translation> <translation id="8683506306463609433">Toimivuse jälgimine on aktiivne</translation> +<translation id="8712637175834984815">Selge</translation> <translation id="8721053961083920564">Lülitage helitugevus sisse. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">See võib üritada varastada teie klahvivajutusi</translation> <translation id="8735953464173050365">Kuvab klaviatuuriseaded. Valitud on <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index fce09d9..8d9c2cd8 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Potentzia txikiko kargagailua konektatu da</translation> <translation id="8683506306463609433">Aktibo dago funtzionamenduaren jarraipena egiteko aukera</translation> +<translation id="8712637175834984815">Ados</translation> <translation id="8721053961083920564">Aldatu bolumena. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Agian sakatzen ari zaren teklak erregistratzen ari da, pasahitzak lapurtzeko asmoz.</translation> <translation id="8735953464173050365">Erakutsi teklatuaren ezarpenak. <ph name="KEYBOARD_NAME" /> dago hautatuta.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index e6fb380f..b52323d 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">۲۷۰°</translation> <translation id="8676770494376880701">شارژر برق متصل شده ضعیف است</translation> <translation id="8683506306463609433">ردیابی عملکرد فعال است</translation> +<translation id="8712637175834984815">متوجه شدم</translation> <translation id="8721053961083920564">تغییر وضعیت میزان صدا. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ممکن است تلاش کند ضربهکلیدهای شما را به سرقت ببرد</translation> <translation id="8735953464173050365">نمایش تنظیمات صفحهکلید. <ph name="KEYBOARD_NAME" /> انتخاب شده است</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index 25b9482..07de6902 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -592,6 +592,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Pienitehoinen laturi kytketty</translation> <translation id="8683506306463609433">Tehokkuuden seuranta aktiivinen</translation> +<translation id="8712637175834984815">Ymmärretty</translation> <translation id="8721053961083920564">Muuta äänenvoimakkuutta. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Sillä voidaan yrittää kaapata näppäinpainalluksesi</translation> <translation id="8735953464173050365">Näytä näppäimistöasetukset. <ph name="KEYBOARD_NAME" /> on valittuna.</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 5f7647ce..b7523bb 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Nakakabit ang low-power charger</translation> <translation id="8683506306463609433">Aktibo ang pag-trace ng performance</translation> +<translation id="8712637175834984815">Nakuha ko</translation> <translation id="8721053961083920564">I-toggle ang Volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Maaaring sinusubukan nitong nakawin ang iyong mga keystroke</translation> <translation id="8735953464173050365">Ipakita ang mga setting ng keyboard. Napili ang <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index da17e1698..7460ee71e 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Chargeur de faible puissance connecté</translation> <translation id="8683506306463609433">Suivi des performances activé</translation> +<translation id="8712637175834984815">OK</translation> <translation id="8721053961083920564">Activer/Désactiver le volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Il essaie peut-être de récupérer les touches que vous avez utilisées</translation> <translation id="8735953464173050365">Afficher les paramètres du clavier. <ph name="KEYBOARD_NAME" /> est sélectionné</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index a9757a0..6a839e8 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Chargeur de faible puissance connecté</translation> <translation id="8683506306463609433">Suivi des performances actif</translation> +<translation id="8712637175834984815">OK</translation> <translation id="8721053961083920564">Activer/désactiver le volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Il est possible que cet autre clavier tente d'enregistrer les touches sur lesquelles vous appuyez afin de vous soutirer des informations</translation> <translation id="8735953464173050365">Afficher les paramètres du clavier. <ph name="KEYBOARD_NAME" /> est sélectionné</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index e3165f09b4..10c921e29 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Cargador de baixa potencia conectado</translation> <translation id="8683506306463609433">O rastrexo do seguimento está activo</translation> +<translation id="8712637175834984815">De acordo</translation> <translation id="8721053961083920564">Activar ou desactivar o volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">É posible que estea tentando detectar as teclas que premes</translation> <translation id="8735953464173050365">Mostrar a configuración do teclado. Está seleccionado o seguinte: <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 58467333..0efb11d 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">નિમ્ન-પાવર ચાર્જર કનેક્ટ કર્યું છે</translation> <translation id="8683506306463609433">કાર્યપ્રદર્શનની નોંધ રાખવાનું સક્રિય છે</translation> +<translation id="8712637175834984815">સમજાઈ ગયું</translation> <translation id="8721053961083920564">વૉલ્યૂમ ટૉગલ કરો. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">તે તમારા કીસ્ટ્રોકની ચોરી કરવાનો પ્રયાસ કરતું હોઈ શકે છે</translation> <translation id="8735953464173050365">કીબોર્ડ સેટિંગ બતાવો. <ph name="KEYBOARD_NAME" /> પસંદ કરેલું છે</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index cac9ae0b..5dd85fd1 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">कम-शक्ति वाला चार्जर</translation> <translation id="8683506306463609433">'परफ़ॉर्मेंस ट्रेसिंग' चालू है</translation> +<translation id="8712637175834984815">समझ लिया</translation> <translation id="8721053961083920564">आवाज़ टॉगल करें. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">यह आपके कीस्ट्रोक चुराने की कोशिश कर सकता है</translation> <translation id="8735953464173050365">कीबोर्ड सेटिंग दिखाएं. <ph name="KEYBOARD_NAME" /> चुना गया है</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index 457aec54..a4912866 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Priključen je punjač male snage</translation> <translation id="8683506306463609433">Aktivno je praćenje izvedbe</translation> +<translation id="8712637175834984815">Shvaćam</translation> <translation id="8721053961083920564">Uključivanje ili isključivanje zvuka. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Možda pokušava ukrasti podatke o pritisnutim tipkama</translation> <translation id="8735953464173050365">Prikaz postavki tipkovnice. Odabrana je tipkovnica <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index 18abb29..2635eeb7 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Kis teljesítményű töltő csatlakoztatva</translation> <translation id="8683506306463609433">A teljesítménykövetés aktív</translation> +<translation id="8712637175834984815">Sikerült</translation> <translation id="8721053961083920564">Hang ki-, illetve bekapcsolása. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Előfordulhat, hogy így kísérlik meg a billentyűleütések rögzítését</translation> <translation id="8735953464173050365">A billentyűzet beállításainak megjelenítése. <ph name="KEYBOARD_NAME" /> van kiválasztva</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index cbd0551..96538ac 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Կապակցվել է թույլ լիցքով լիցքավորիչ</translation> <translation id="8683506306463609433">Արդյունավետության հետագծումն ակտիվ է</translation> +<translation id="8712637175834984815">Պատրաստ է</translation> <translation id="8721053961083920564">Միացնել/անջատել ձայնը: <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Հնարավոր է՝ ինչ-որ մեկը փորձում է իմանալ, թե ինչ ստեղներ եք սեղմում։</translation> <translation id="8735953464173050365">Ցուցադրել ստեղնաշարի կարգավորումները: Ընտրված է <ph name="KEYBOARD_NAME" />ը</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index 3db15cc8..e5bce1e 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Pengisi daya rendah terpasang</translation> <translation id="8683506306463609433">Pelacakan performa aktif</translation> +<translation id="8712637175834984815">Mengerti</translation> <translation id="8721053961083920564">Ubah Volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Keyboard mungkin mencoba mencuri ketukan tombol Anda</translation> <translation id="8735953464173050365">Tampilkan setelan keyboard. <ph name="KEYBOARD_NAME" /> dipilih</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index dbc6f93..4794b80 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Afllítið hleðslutæki tengt</translation> <translation id="8683506306463609433">Afkastarakning virk</translation> +<translation id="8712637175834984815">Ég skil</translation> <translation id="8721053961083920564">Kveikja/slökkva á hljóði. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Það gæti verið að reyna að stela lyklaborðsinnslætti</translation> <translation id="8735953464173050365">Sýna lyklaborðsstillingar. <ph name="KEYBOARD_NAME" /> er valið</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index 2814db5b..d12d067a 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Caricabatterie a basso consumo collegato</translation> <translation id="8683506306463609433">Traccia delle prestazioni attiva</translation> +<translation id="8712637175834984815">Fatto</translation> <translation id="8721053961083920564">Attiva/disattiva volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Potrebbe essere un tentativo di rubare i tasti premuti</translation> <translation id="8735953464173050365">Mostra impostazioni tastiera. La selezione attiva è <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 8cf9f4f..586fe1a5 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -592,6 +592,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">חובר מטען בעל מתח נמוך</translation> <translation id="8683506306463609433">מעקב הביצועים פעיל</translation> +<translation id="8712637175834984815">הבנתי</translation> <translation id="8721053961083920564">השמעה או השתקה של צלילים. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ייתכן שהיא מנסה לתעד את ההקשות שלך.</translation> <translation id="8735953464173050365">צפייה בהגדרות המקלדת. המקלדת שנבחרה היא <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 896f28ab..c62e4588 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">低電力の充電器に接続されています</translation> <translation id="8683506306463609433">パフォーマンス追跡機能が有効</translation> +<translation id="8712637175834984815">閉じる</translation> <translation id="8721053961083920564">音量を切り替えます。<ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">キー入力が読み取られる可能性があります</translation> <translation id="8735953464173050365">キーボード設定を表示します。<ph name="KEYBOARD_NAME" /> が選択されています</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 5a897e2..4063b8f2 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">დაბალი სიმძლავრის დამტენი დაკავშირებულია</translation> <translation id="8683506306463609433">ეფექტურობის ტრასირება გააქტიურებულია</translation> +<translation id="8712637175834984815">კარგი</translation> <translation id="8721053961083920564">ხმის გადართვა. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ეს შეიძლება იყოს თქვენ მიერ აკრეფილი ტექსტის მოპარვის მცდელობა</translation> <translation id="8735953464173050365">კლავიატურის პარამეტრების ჩვენება. არჩეულია <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index cd1ca1e..f295fa17 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Төмен қуат зарядтағышы қосылды</translation> <translation id="8683506306463609433">Жұмыс өнімділігін қадағалау функциясы іске қосылды</translation> +<translation id="8712637175834984815">Түсінікті</translation> <translation id="8721053961083920564">Дыбыс деңгейін ауыстыру. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Ол басылған пернелерді "ұрлап алу" әрекетін жасауы мүмкін.</translation> <translation id="8735953464173050365">Пернетақта параметрлерін көрсету. <ph name="KEYBOARD_NAME" /> таңдалды</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index 4878671..3c8ede44 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">ឆ្នាំងសាកដែលមានថាមពលទាបត្រូវបានភ្ជាប់</translation> <translation id="8683506306463609433">ការតាមដានប្រតិបត្តិការកំពុងបើកដំណើរការ</translation> +<translation id="8712637175834984815">យល់ហើយ</translation> <translation id="8721053961083920564">បិទ/បើកកម្រិតសំឡេង។ <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">វាអាចនឹងព្យាយាមលួចការចុចរបស់អ្នក</translation> <translation id="8735953464173050365">បង្ហាញការកំណត់ក្ដារចុច។ <ph name="KEYBOARD_NAME" /> ត្រូវបានជ្រើសរើស</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index 59d7518a..8eead89 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ</translation> <translation id="8683506306463609433">ಕಾರ್ಯಕ್ಷಮತೆಯ ಟ್ರೇಸಿಂಗ್ ಸಕ್ರಿಯವಾಗಿದೆ</translation> +<translation id="8712637175834984815">ಅರ್ಥವಾಯಿತು</translation> <translation id="8721053961083920564">ವಾಲ್ಯೂಮ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ನಿಮ್ಮ ಕೀಸ್ಟ್ರೋಕ್ಗಳನ್ನು ಕಳವು ಮಾಡಲು ಇದು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು</translation> <translation id="8735953464173050365">ಕೀಬೋರ್ಡ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೋರಿಸಿ. <ph name="KEYBOARD_NAME" /> ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index a541200e..2708eea 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">저출력 충전기 연결됨</translation> <translation id="8683506306463609433">성능 추적 활성화</translation> +<translation id="8712637175834984815">확인</translation> <translation id="8721053961083920564">볼륨 변경. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">키 입력 내용을 도용하려는 시도일 수 있습니다.</translation> <translation id="8735953464173050365">키보드 설정을 표시합니다. <ph name="KEYBOARD_NAME" />이(가) 선택되었습니다.</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index ccdab90..097add0 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Кубаты төмөн кубаттагыч туташтырылды</translation> <translation id="8683506306463609433">Майнаптуулукка көз салуу жигердүү</translation> +<translation id="8712637175834984815">Түшүндүм</translation> <translation id="8721053961083920564">Үндү өчүрүү/күйгүзүү. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Ал сырсөзүңүздү тергенде баскан баскычтарды билип алууга аракет кылышы мүмкүн</translation> <translation id="8735953464173050365">Баскычтоптун жөндөөлөрүн көрсөтүү. <ph name="KEYBOARD_NAME" /> тандалды</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index b060fdee..6efa496aa 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">ເຄື່ອງສາກແບບໃຊ້ໄຟຕໍ່າເຊື່ອມຕໍ່ແລ້ວ</translation> <translation id="8683506306463609433">ການຕິດຕາມປະສິດທິພາບເປີດນຳໃຊ້ຢູ່</translation> +<translation id="8712637175834984815">ເຂົ້າໃຈແລ້ວ</translation> <translation id="8721053961083920564">ເປີດລະດັບສຽງ. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ມັນອາດຈະກຳລັງພະຍາຍາມລັກໃຊ້ການກົດແປ້ນພິມຂອງທ່ານຢູ່</translation> <translation id="8735953464173050365">ສະແດງການຕັ້ງຄ່າແປ້ນພິມ. ເລືອກ <ph name="KEYBOARD_NAME" /> ແລ້ວ</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb index 431bfcf..21731b5 100644 --- a/ash/strings/ash_strings_lt.xtb +++ b/ash/strings/ash_strings_lt.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Prijungtas mažos galios įkroviklis</translation> <translation id="8683506306463609433">Našumo stebėjimas aktyvus</translation> +<translation id="8712637175834984815">Supratau</translation> <translation id="8721053961083920564">Perjungti garsumą. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Gali būti bandoma pavogti jūsų klavišų paspaudimus</translation> <translation id="8735953464173050365">Rodyti klaviatūros nustatymus. Pasirinkta „<ph name="KEYBOARD_NAME" />“</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index 37da25e..c0cd590c 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Pievienots lādētājs ar mazu strāvas padevi</translation> <translation id="8683506306463609433">Veiktspējas izsekošana ir aktīva</translation> +<translation id="8712637175834984815">Sapratu!</translation> <translation id="8721053961083920564">Skaļuma regulēšana. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Tā, iespējams, mēģina piesavināties jūsu taustiņsitienus</translation> <translation id="8735953464173050365">Rādīt tastatūras iestatījumus. Ir atlasīta tastatūra <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index a26a9cd0..a8e662c 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Поврзан е полнач со ниско напојување</translation> <translation id="8683506306463609433">Следењето на изведбата е активно</translation> +<translation id="8712637175834984815">Сфатив</translation> <translation id="8721053961083920564">Вклучување/исклучување звук. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Можеби се обидува да ви ги украде ударите на тастатурата</translation> <translation id="8735953464173050365">Прикажи ги поставките за тастатура. Избрана е <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index e5ff5ce..39846316 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">കുറഞ്ഞ തോതിൽ വൈദ്യുതി പ്രവഹിക്കുന്ന ചാർജർ കണക്റ്റുചെയ്തു</translation> <translation id="8683506306463609433">പ്രകടനം പിന്തുടരൽ സജീവം</translation> +<translation id="8712637175834984815">മനസ്സിലായി</translation> <translation id="8721053961083920564">വോളിയം മാറ്റുക. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ഇത് നിങ്ങളുടെ കീസ്ട്രോക്കുകൾ മോഷ്ടിക്കാൻ ശ്രമിച്ചേക്കാം.</translation> <translation id="8735953464173050365">കീബോഡ് ക്രമീകരണം കാണിക്കുക. <ph name="KEYBOARD_NAME" /> തിരഞ്ഞെടുത്തിരിക്കുന്നു</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index caa5a277..18ab950 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -592,6 +592,7 @@ <translation id="8673028979667498656">270 °</translation> <translation id="8676770494376880701">Цэнэглэгчийг холбосон байна</translation> <translation id="8683506306463609433">Гүйцэтгэлийн хяналт идэвхтэй байна</translation> +<translation id="8712637175834984815">Ойлголоо</translation> <translation id="8721053961083920564">Дууг хаах/нээх. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Энэ нь таны түлхүүрийн цуглуулгыг хулгайлахаар оролдож байж болзошгүй</translation> <translation id="8735953464173050365">Гарын тохиргоог харуулна уу. <ph name="KEYBOARD_NAME" />-г сонгосон</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 018b223..3a531197 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">निम्न-उर्जेचे चार्जर कनेक्ट केले</translation> <translation id="8683506306463609433">परफॉर्मंस ट्रेसिंग ॲक्टिव्ह आहे</translation> +<translation id="8712637175834984815">समजले</translation> <translation id="8721053961083920564">व्हॉल्यूम टॉगल करा. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">तो कदाचित तुमचे कीस्ट्रोक चोरण्याचा प्रयत्न करत असेल.</translation> <translation id="8735953464173050365">कीबोर्ड सेटिंग्ज दाखवा. <ph name="KEYBOARD_NAME" /> निवडले आहे</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index aab672fd..d1069c0 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Pengecas berkuasa rendah disambungkan</translation> <translation id="8683506306463609433">Pengesanan prestasi aktif</translation> +<translation id="8712637175834984815">Faham</translation> <translation id="8721053961083920564">Togol Kelantangan. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Papan kekunci mungkin sedang cuba mencuri ketukan kekunci anda</translation> <translation id="8735953464173050365">Tunjukkan tetapan papan kekunci. <ph name="KEYBOARD_NAME" /> dipilih</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 1c93fa5..eca6ce0 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">၂၇၀ ဒီဂရီ</translation> <translation id="8676770494376880701">ပါဝါနှိမ့် အားသွင်းကိရိယာ ချိတ်ဆက်ထားသည်</translation> <translation id="8683506306463609433">စွမ်းဆောင်ရည် မှတ်တမ်းတင်ခြင်းကို လက်ရှိဖွင့်ထားသည်</translation> +<translation id="8712637175834984815">ရပါပြီ!</translation> <translation id="8721053961083920564">အသံခလုတ်ကို နှိပ်ပါ။ <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">၎င်းသည် သင်၏ ခလုတ်နှိပ်ချက်များကို ခိုးယူရန် ကြိုးပမ်းနိုင်သည်။</translation> <translation id="8735953464173050365">ကီးဘုတ်ဆက်တင်များကို ပြရန်။ <ph name="KEYBOARD_NAME" /> ကို ရွေးထားသည်</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb index d638c577..1b662f9 100644 --- a/ash/strings/ash_strings_ne.xtb +++ b/ash/strings/ash_strings_ne.xtb
@@ -587,6 +587,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">अल्प-पावर चार्जर जडित</translation> <translation id="8683506306463609433">प्रदर्शन ट्रेस सक्रिय छ</translation> +<translation id="8712637175834984815">भयो</translation> <translation id="8721053961083920564">भोल्युम टगल गर्नुहोस्। <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">यसले तपाईंका किस्ट्रोकहरू चोर्न खोजिरहेको हुन सक्छ</translation> <translation id="8735953464173050365">किबोर्डका सेटिङहरू देखाउनुहोस्। <ph name="KEYBOARD_NAME" /> चयन गरिएको छ</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index 03f9416..87acfcd3 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Laag-vermogen-lader aangesloten</translation> <translation id="8683506306463609433">Bijhouden van prestaties is actief</translation> +<translation id="8712637175834984815">Begrepen</translation> <translation id="8721053961083920564">Volume in-/uitschakelen. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Mogelijk wordt geprobeerd om je toetsaanslagen te stelen</translation> <translation id="8735953464173050365">Toetsenbordinstellingen weergeven. <ph name="KEYBOARD_NAME" /> is geselecteerd</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index d4f26e0..12ab0d8 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Laveffektslader er tilkoblet</translation> <translation id="8683506306463609433">Ytelsessporing er aktiv</translation> +<translation id="8712637175834984815">Skjønner</translation> <translation id="8721053961083920564">Slå lyden av/på. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Det brukes kanskje til å stjele tastetrykkene dine.</translation> <translation id="8735953464173050365">Vis tastaturinnstillinger. <ph name="KEYBOARD_NAME" /> er valgt</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 6e466a8..e94f3224 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">ନିମ୍ନ-ଶକ୍ତିର ଚାର୍ଜର୍ ସଂଯୋଗ କରାଯାଇଛି</translation> <translation id="8683506306463609433">କାର୍ଯ୍ୟଦକ୍ଷତା ଟ୍ରେସିଂ ସକ୍ରିୟ ଅଛି</translation> +<translation id="8712637175834984815">ବୁଝିଗଲି</translation> <translation id="8721053961083920564">ଭଲ୍ୟୁମ୍ ଟୋଗଲ୍ କରନ୍ତୁ। <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ଆପଣଙ୍କ କୀ'ଷ୍ଟ୍ରୋକ୍କୁ ଚୋରି କରିବାକୁ ଏହା ଏକ ପ୍ରୟାସ ହୋଇପାରେ</translation> <translation id="8735953464173050365">କୀ'ବୋର୍ଡ ସେଟିଂସ୍ ଦେଖାନ୍ତୁ। <ph name="KEYBOARD_NAME" />କୁ ଚୟନ କରାଯାଇଛି</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 31ca25ea..8937037 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">ਘੱਟ-ਪਾਵਰ ਦਾ ਚਾਰਜਰ ਕਨੈਕਟ ਕੀਤਾ</translation> <translation id="8683506306463609433">ਪ੍ਰਦਰਸ਼ਨ ਟ੍ਰੇਸਿੰਗ ਕਿਰਿਆਸ਼ੀਲ ਹੈ</translation> +<translation id="8712637175834984815">ਸਮਝ ਲਿਆ</translation> <translation id="8721053961083920564">ਅਵਾਜ਼ ਨੂੰ ਟੌਗਲ ਕਰੋ। <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਤੁਹਾਡੇ ਕੀਸਟ੍ਰੋਕ ਚੋਰੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੋਵੇ</translation> <translation id="8735953464173050365">ਕੀ-ਬੋਰਡ ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ। <ph name="KEYBOARD_NAME" /> ਚੁਣਿਆ ਹੋਇਆ ਹੈ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb index 9a34c4f..1c08548a 100644 --- a/ash/strings/ash_strings_pl.xtb +++ b/ash/strings/ash_strings_pl.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Podłączono ładowarkę o małej mocy</translation> <translation id="8683506306463609433">Śledzenie wydajności jest aktywne</translation> +<translation id="8712637175834984815">Rozumiem</translation> <translation id="8721053961083920564">Przełącz głośność. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Klawiatura może próbować przechwycić naciskane klawisze</translation> <translation id="8735953464173050365">Pokaż ustawienia klawiatury. Wybrana jest: <ph name="KEYBOARD_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index 378abdef..fc60b7b9e 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Carregador de baixa potência conectado</translation> <translation id="8683506306463609433">Acompanhamento de desempenho ativo</translation> +<translation id="8712637175834984815">Entendi</translation> <translation id="8721053961083920564">Altere o volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Ele pode estar tentando capturar sua digitação</translation> <translation id="8735953464173050365">Mostrar configurações do teclado. <ph name="KEYBOARD_NAME" /> está selecionado</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb index 83bae5d5..d97c69a 100644 --- a/ash/strings/ash_strings_pt-PT.xtb +++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Carregador de baixo consumo ligado</translation> <translation id="8683506306463609433">O rastreio do desempenho está ativo.</translation> +<translation id="8712637175834984815">Entendido</translation> <translation id="8721053961083920564">Ative/desative o volume. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">É possível que esteja a tentar roubar os seus toques de teclas.</translation> <translation id="8735953464173050365">Mostrar definições do teclado. <ph name="KEYBOARD_NAME" /> está selecionado</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb index 69c056fd..0331697 100644 --- a/ash/strings/ash_strings_ro.xtb +++ b/ash/strings/ash_strings_ro.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">A fost conectat un încărcător de putere joasă</translation> <translation id="8683506306463609433">Urmărirea performanțelor este activă</translation> +<translation id="8712637175834984815">Am înțeles</translation> <translation id="8721053961083920564">Activează sau dezactivează volumul: <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Aceasta ar putea încerca să înregistreze ce taste apeși</translation> <translation id="8735953464173050365">Afișează setările pentru tastatură. Este selectată <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index db2912a..9c03a09 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Подключено маломощное зарядное устройство</translation> <translation id="8683506306463609433">Отслеживание эффективности</translation> +<translation id="8712637175834984815">Готово</translation> <translation id="8721053961083920564">Включить или выключить звук. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Это может быть попыткой узнать, какие клавиши вы нажимаете.</translation> <translation id="8735953464173050365">Показать настройки клавиатуры. Выбрана клавиатура "<ph name="KEYBOARD_NAME" />".</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb index 8829198..ccd194ca 100644 --- a/ash/strings/ash_strings_si.xtb +++ b/ash/strings/ash_strings_si.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">අඩු-බල ආරෝපකය සමබන්ධ කර ඇත</translation> <translation id="8683506306463609433">කාර්ය සාධන අනුරේඛනය සක්රියයි</translation> +<translation id="8712637175834984815">එය ලැබුණා</translation> <translation id="8721053961083920564">හඬ ටොගල් කරන්න. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">එය ඔබගේ යතුරු පහර සොරකම් කිරීමට උත්සාහ ගන්නවා විය හැක</translation> <translation id="8735953464173050365">යතුරුපුවරු සැකසීම් පෙන්වන්න. <ph name="KEYBOARD_NAME" /> තෝරාගෙන ඇත</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index efd9ffa..8e1cd96 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270 °</translation> <translation id="8676770494376880701">Pripojila sa nabíjačka s nízkym výkonom</translation> <translation id="8683506306463609433">Trasovanie výkonnosti je aktívne</translation> +<translation id="8712637175834984815">Dobre</translation> <translation id="8721053961083920564">Prepínač zvuku. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Je možné, že sa pokúša ukradnúť vaše stlačenia klávesov</translation> <translation id="8735953464173050365">Zobraziť nastavenia klávesnice. Vybraná klávesnica: <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index adf3f79..6668701 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Priključen je nizkoenergijski polnilnik</translation> <translation id="8683506306463609433">Sledenje učinkovitosti delovanja je aktivno</translation> +<translation id="8712637175834984815">Razumem</translation> <translation id="8721053961083920564">Preklop glasnosti. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Morda poskuša beležiti vse, kar natipkate</translation> <translation id="8735953464173050365">Prikaz nastavitev tipkovnice. Izbrana je tipkovnica <ph name="KEYBOARD_NAME" />.</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index ce42d1ba..d7ad4a7d 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Është lidhur karikues me fuqi të ulët</translation> <translation id="8683506306463609433">Gjurmimi i cilësisë së funksionimit është aktiv</translation> +<translation id="8712637175834984815">E kuptova</translation> <translation id="8721053961083920564">Ndërro volumin. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Ajo ndoshta po përpiqet të regjistrojë goditjet e tasteve</translation> <translation id="8735953464173050365">Shfaq cilësimet e tastierës. Është zgjedhur <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index 893362bf..536ced69 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Повезан је пуњач мале снаге</translation> <translation id="8683506306463609433">Праћење учинка је активно</translation> +<translation id="8712637175834984815">Важи</translation> <translation id="8721053961083920564">Укључите/искључите звук. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Можда покушава да украде вашу комбинацију тастера</translation> <translation id="8735953464173050365">Прегледајте подешавања тастатуре. Изабрана је <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index f57c6a3..4a2fc164 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Laddare med låg effekt ansluten</translation> <translation id="8683506306463609433">Prestandaspårning är aktiv</translation> +<translation id="8712637175834984815">Uppfattat</translation> <translation id="8721053961083920564">Ljud på/av. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Det kan försöka stjäla dina tangenttryckningar</translation> <translation id="8735953464173050365">Visa tangentbordsinställningar. Inställt på <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 9086470..6cb97ad 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Chaja ya nguvu ya chini imeunganishwa</translation> <translation id="8683506306463609433">Kipengele cha ufuatiliaji wa utendaji kinatumika</translation> +<translation id="8712637175834984815">Nimeelewa</translation> <translation id="8721053961083920564">Swichi ya Sauti. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Huenda inajaribu kuiba mibofyo yako</translation> <translation id="8735953464173050365">Onyesha mipangilio ya kibodi. Umechagua <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 8288452..e365b11 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -580,6 +580,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">குறைந்த சக்தியிலான சார்ஜர் இணைக்கப்பட்டுள்ளது</translation> <translation id="8683506306463609433">செயல்திறன் டிரேஸிங் இயக்கத்தில்</translation> +<translation id="8712637175834984815">புரிந்தது</translation> <translation id="8721053961083920564">ஒலியை இயக்கும். <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">அது உங்கள் விசை அழுத்தங்களைத் திருட முயற்சித்துக் கொண்டிருக்கக்கூடும்</translation> <translation id="8735953464173050365">கீபோர்ட் அமைப்புகளைக் காண்பிக்கும். <ph name="KEYBOARD_NAME" /> தேர்ந்தெடுக்கப்பட்டுள்ளது</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index 9059e04..ce4d397 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -588,6 +588,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">తక్కువ-పవర్ గల ఛార్జర్ కనెక్ట్ చేయబడింది</translation> <translation id="8683506306463609433">పనితీరు స్థితిగతి కనుగొనడం యాక్టివ్గా ఉంది</translation> +<translation id="8712637175834984815">అర్థమైంది</translation> <translation id="8721053961083920564">వాల్యూమ్ను టోగుల్ చేయండి. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">మీ కీస్ట్రోక్లను దొంగిలించడానికి ఇది ప్రయత్నిస్తుండవచ్చు</translation> <translation id="8735953464173050365">కీబోర్డ్ సెట్టింగ్లను చూపుతుంది. <ph name="KEYBOARD_NAME" /> ఎంపిక చేయబడింది</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index 0e443f2..b1b61129 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">เชื่อมต่อกับที่ชาร์จพลังงานต่ำ</translation> <translation id="8683506306463609433">ใช้งานการติดตามประสิทธิภาพอยู่</translation> +<translation id="8712637175834984815">สำเร็จ</translation> <translation id="8721053961083920564">สลับเปิด/ปิดระดับเสียง <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">แป้นพิมพ์นี้อาจพยายามขโมยการกดแป้นพิมพ์ของคุณ</translation> <translation id="8735953464173050365">แสดงการตั้งค่าแป้นพิมพ์ เลือก<ph name="KEYBOARD_NAME" />ไว้</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index e546163..e5c60e9 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -591,6 +591,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Düşük güçlü şarj cihazı bağlandı</translation> <translation id="8683506306463609433">Performans izleme etkin</translation> +<translation id="8712637175834984815">Anlaşıldı</translation> <translation id="8721053961083920564">Sesi Aç/Kapat. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Bu klavye, tuş vuruşlarınızı çalmaya çalışıyor olabilir</translation> <translation id="8735953464173050365">Klavye ayarlarını göster. <ph name="KEYBOARD_NAME" /> seçildi</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index 9d9f8f1..dea78227 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Зарядний пристрій низької потужності підключено</translation> <translation id="8683506306463609433">Відстеження ефективності активне</translation> +<translation id="8712637175834984815">Виконано</translation> <translation id="8721053961083920564">Увімкнути або вимкнути гучність. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Можливо, це спроба викрасти введенні символи.</translation> <translation id="8735953464173050365">Показати налаштування клавіатури. Вибрано: <ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index 9576853..11c270e 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">کم پاور چارجر منسلک ہوگیا</translation> <translation id="8683506306463609433">کارکردگی کا پتا لگانا فعال ہے</translation> +<translation id="8712637175834984815">سمجھ آ گئی</translation> <translation id="8721053961083920564">والیوم ٹوگل کریں۔ <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">ممکن ہے یہ آپ کی کلید کے اسٹروکس کو چوری کرنے کی کوشش کر رہا ہو</translation> <translation id="8735953464173050365">کی بورڈ کی ترتیبات دکھائیں۔ <ph name="KEYBOARD_NAME" /> منتخب ہے</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 7d09243..a481231ab 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Kam quvvatli zaryadlash vositasi</translation> <translation id="8683506306463609433">Unumdorlik kuzatilmoqda</translation> +<translation id="8712637175834984815">Tushunarli</translation> <translation id="8721053961083920564">Tovushlar: <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Bu bosilayotgan tugmalarni kuzatish urinishi bo‘lishi mumkin.</translation> <translation id="8735953464173050365">Klaviatura sozlamalarini ochish. <ph name="KEYBOARD_NAME" /> tanlandi</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index da719e6..3bbd9a0 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Đã kết nối bộ sạc công suất thấp</translation> <translation id="8683506306463609433">Tính năng theo dõi hiệu suất đang hoạt động</translation> +<translation id="8712637175834984815">Bỏ qua</translation> <translation id="8721053961083920564">Bật/tắt tiếng. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Bàn phím này có thể đang cố gắng đánh cắp thao tác nhấn phím của bạn</translation> <translation id="8735953464173050365">Hiển thị các tùy chọn cài đặt bàn phím. <ph name="KEYBOARD_NAME" /> được chọn</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 67d1a76..b5fbaf4 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">已连接低功率充电器</translation> <translation id="8683506306463609433">正在跟踪性能</translation> +<translation id="8712637175834984815">知道了</translation> <translation id="8721053961083920564">开启/关闭声音。<ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">当前连接的键盘可能会试图窃取您的击键操作</translation> <translation id="8735953464173050365">显示键盘设置。已选择<ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 35832f65..8c0fb531 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270 度</translation> <translation id="8676770494376880701">已連接低功率充電器</translation> <translation id="8683506306463609433">效能追蹤使用中</translation> +<translation id="8712637175834984815">我知道了</translation> <translation id="8721053961083920564">切換音量設定。<ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">鍵盤可能會嘗試盜取您的按鍵操作</translation> <translation id="8735953464173050365">顯示鍵盤設定。已選擇<ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index b6165266..f00df45 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270 度</translation> <translation id="8676770494376880701">已連接低功率充電器</translation> <translation id="8683506306463609433">效能追蹤已啟用</translation> +<translation id="8712637175834984815">我瞭解了</translation> <translation id="8721053961083920564">切換音量設定。<ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">你的按鍵行為可能會遭到側錄</translation> <translation id="8735953464173050365">顯示鍵盤設定。已選取<ph name="KEYBOARD_NAME" /></translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 2c1ae053..366092ee 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -590,6 +590,7 @@ <translation id="8673028979667498656">270°</translation> <translation id="8676770494376880701">Ishaja yamandla amancane ixhunyiwe</translation> <translation id="8683506306463609433">Ukulandelela kokusebenza kuyasebenza</translation> +<translation id="8712637175834984815">Ngiyitholile</translation> <translation id="8721053961083920564">Guqula ivolumu. <ph name="STATE_TEXT" /></translation> <translation id="8734991477317290293">Ingazama ukutshontsha okhiye bakho</translation> <translation id="8735953464173050365">Bonisa izilungiselelo zekhibhodi. <ph name="KEYBOARD_NAME" /> ikhethiwe</translation>
diff --git a/base/debug/activity_tracker.cc b/base/debug/activity_tracker.cc index 88a1a97..18ca4ef5a 100644 --- a/base/debug/activity_tracker.cc +++ b/base/debug/activity_tracker.cc
@@ -685,6 +685,10 @@ tracker_->PopActivity(activity_id_); } +bool ThreadActivityTracker::ScopedActivity::IsRecorded() { + return tracker_ && tracker_->IsRecorded(activity_id_); +} + void ThreadActivityTracker::ScopedActivity::ChangeTypeAndData( Activity::Type type, const ActivityData& data) { @@ -855,6 +859,10 @@ header_->data_version.fetch_add(1, std::memory_order_release); } +bool ThreadActivityTracker::IsRecorded(ActivityId id) { + return id < stack_slots_; +} + std::unique_ptr<ActivityUserData> ThreadActivityTracker::GetUserData( ActivityId id, ActivityTrackerMemoryAllocator* allocator) {
diff --git a/base/debug/activity_tracker.h b/base/debug/activity_tracker.h index c3fe9f8..652833d 100644 --- a/base/debug/activity_tracker.h +++ b/base/debug/activity_tracker.h
@@ -639,6 +639,11 @@ const ActivityData& data); ~ScopedActivity(); + // Indicates if this activity is actually being recorded. It may not be if + // (a) activity tracking is not enabled globally or + // (b) there was insufficient stack space to hold it. + bool IsRecorded(); + // Changes some basic metadata about the activity. void ChangeTypeAndData(Activity::Type type, const ActivityData& data); @@ -693,6 +698,9 @@ // Indicates that an activity has completed. void PopActivity(ActivityId id); + // Indicates if an activity is actually being recorded. + bool IsRecorded(ActivityId id); + // Sets the user-data information for an activity. std::unique_ptr<ActivityUserData> GetUserData( ActivityId id,
diff --git a/base/debug/activity_tracker_unittest.cc b/base/debug/activity_tracker_unittest.cc index 51147dbb..74f431e 100644 --- a/base/debug/activity_tracker_unittest.cc +++ b/base/debug/activity_tracker_unittest.cc
@@ -219,6 +219,7 @@ ScopedTaskRunActivity activity1(task1); ActivityUserData& user_data1 = activity1.user_data(); (void)user_data1; // Tell compiler it's been used. + EXPECT_TRUE(activity1.IsRecorded()); ASSERT_TRUE(tracker->CreateSnapshot(&snapshot)); ASSERT_EQ(1U, snapshot.activity_stack_depth);
diff --git a/base/task/sequence_manager/task_queue_selector.cc b/base/task/sequence_manager/task_queue_selector.cc index 7c0091dc..ad1a803d 100644 --- a/base/task/sequence_manager/task_queue_selector.cc +++ b/base/task/sequence_manager/task_queue_selector.cc
@@ -178,17 +178,18 @@ // priority. TaskQueue::QueuePriority priority = active_priority_tracker_.HighestActivePriority(); - bool chose_delayed_over_immediate; WorkQueue* queue = #if DCHECK_IS_ON() - random_task_selection_ ? ChooseWithPriority<SetOperationRandom>( - priority, &chose_delayed_over_immediate) + random_task_selection_ ? ChooseWithPriority<SetOperationRandom>(priority) : #endif - ChooseWithPriority<SetOperationOldest>( - priority, &chose_delayed_over_immediate); - if (chose_delayed_over_immediate) { + ChooseWithPriority<SetOperationOldest>(priority); + + // If we have selected a delayed task while having an immediate task of the + // same priority, increase the starvation count. + if (queue->queue_type() == WorkQueue::QueueType::kDelayed && + !immediate_work_queue_sets_.IsSetEmpty(priority)) { immediate_starvation_count_++; } else { immediate_starvation_count_ = 0;
diff --git a/base/task/sequence_manager/task_queue_selector.h b/base/task/sequence_manager/task_queue_selector.h index 6cef0e08f..9df9ac8a 100644 --- a/base/task/sequence_manager/task_queue_selector.h +++ b/base/task/sequence_manager/task_queue_selector.h
@@ -89,11 +89,7 @@ return &immediate_work_queue_sets_; } - // Return true if |out_queue| contains the queue with the oldest pending task - // from the set of queues of |priority|, or false if all queues of that - // priority are empty. In addition |out_chose_delayed_over_immediate| is set - // to true iff we chose a delayed work queue in favour of an immediate work - // queue. This method will force select an immediate task if those are being + // This method will force select an immediate task if those are being // starved by delayed tasks. void SetImmediateStarvationCountForTest(size_t immediate_starvation_count); @@ -172,19 +168,16 @@ #endif // DCHECK_IS_ON() template <typename SetOperation> - WorkQueue* ChooseWithPriority(TaskQueue::QueuePriority priority, - bool* out_chose_delayed_over_immediate) const { + WorkQueue* ChooseWithPriority(TaskQueue::QueuePriority priority) const { // Select an immediate work queue if we are starving immediate tasks. if (immediate_starvation_count_ >= kMaxDelayedStarvationTasks) { - *out_chose_delayed_over_immediate = false; WorkQueue* queue = SetOperation::GetWithPriority(immediate_work_queue_sets_, priority); if (queue) return queue; return SetOperation::GetWithPriority(delayed_work_queue_sets_, priority); } - return ChooseImmediateOrDelayedTaskWithPriority<SetOperation>( - priority, out_chose_delayed_over_immediate); + return ChooseImmediateOrDelayedTaskWithPriority<SetOperation>(priority); } private: @@ -200,10 +193,8 @@ template <typename SetOperation> WorkQueue* ChooseImmediateOrDelayedTaskWithPriority( - TaskQueue::QueuePriority priority, - bool* out_chose_delayed_over_immediate) const { + TaskQueue::QueuePriority priority) const { EnqueueOrder immediate_enqueue_order; - *out_chose_delayed_over_immediate = false; WorkQueue* immediate_queue = SetOperation::GetWithPriorityAndEnqueueOrder( immediate_work_queue_sets_, priority, &immediate_enqueue_order); if (immediate_queue) { @@ -216,7 +207,6 @@ if (immediate_enqueue_order < delayed_enqueue_order) { return immediate_queue; } else { - *out_chose_delayed_over_immediate = true; return delayed_queue; } }
diff --git a/base/task/sequence_manager/task_queue_selector_unittest.cc b/base/task/sequence_manager/task_queue_selector_unittest.cc index c2d5a4c..1ec6bdc 100644 --- a/base/task/sequence_manager/task_queue_selector_unittest.cc +++ b/base/task/sequence_manager/task_queue_selector_unittest.cc
@@ -365,13 +365,11 @@ } TEST_F(TaskQueueSelectorTest, ChooseWithPriority_Empty) { - bool chose_delayed_over_immediate = false; EXPECT_EQ( nullptr, selector_ .ChooseWithPriority<TaskQueueSelectorForTest::SetOperationOldest>( - TaskQueue::kNormalPriority, &chose_delayed_over_immediate)); - EXPECT_FALSE(chose_delayed_over_immediate); + TaskQueue::kNormalPriority)); } TEST_F(TaskQueueSelectorTest, ChooseWithPriority_OnlyDelayed) { @@ -379,13 +377,11 @@ Task(PostedTask(nullptr, test_closure_, FROM_HERE), TimeTicks(), EnqueueOrder(), EnqueueOrder::FromIntForTesting(2))); - bool chose_delayed_over_immediate = false; EXPECT_EQ( task_queues_[0]->delayed_work_queue(), selector_ .ChooseWithPriority<TaskQueueSelectorForTest::SetOperationOldest>( - TaskQueue::kNormalPriority, &chose_delayed_over_immediate)); - EXPECT_FALSE(chose_delayed_over_immediate); + TaskQueue::kNormalPriority)); } TEST_F(TaskQueueSelectorTest, ChooseWithPriority_OnlyImmediate) { @@ -393,13 +389,11 @@ Task(PostedTask(nullptr, test_closure_, FROM_HERE), TimeTicks(), EnqueueOrder(), EnqueueOrder::FromIntForTesting(2))); - bool chose_delayed_over_immediate = false; EXPECT_EQ( task_queues_[0]->immediate_work_queue(), selector_ .ChooseWithPriority<TaskQueueSelectorForTest::SetOperationOldest>( - TaskQueue::kNormalPriority, &chose_delayed_over_immediate)); - EXPECT_FALSE(chose_delayed_over_immediate); + TaskQueue::kNormalPriority)); } TEST_F(TaskQueueSelectorTest, TestObserverWithOneBlockedQueue) { @@ -490,14 +484,12 @@ int immediate_task_enqueue_order; int immediate_starvation_count; const char* expected_work_queue_name; - bool expected_did_starve_immediate_queue; }; static const ChooseWithPriorityTestParam kChooseWithPriorityTestCases[] = { - {1, 2, 0, "delayed", true}, {1, 2, 1, "delayed", true}, - {1, 2, 2, "delayed", true}, {1, 2, 3, "immediate", false}, - {1, 2, 4, "immediate", false}, {2, 1, 4, "immediate", false}, - {2, 1, 4, "immediate", false}, + {1, 2, 0, "delayed"}, {1, 2, 1, "delayed"}, {1, 2, 2, "delayed"}, + {1, 2, 3, "immediate"}, {1, 2, 4, "immediate"}, {2, 1, 4, "immediate"}, + {2, 1, 4, "immediate"}, }; class ChooseWithPriorityTest @@ -519,15 +511,12 @@ selector_.SetImmediateStarvationCountForTest( GetParam().immediate_starvation_count); - bool chose_delayed_over_immediate = false; WorkQueue* chosen_work_queue = selector_ .ChooseWithPriority<TaskQueueSelectorForTest::SetOperationOldest>( - TaskQueue::kNormalPriority, &chose_delayed_over_immediate); + TaskQueue::kNormalPriority); EXPECT_EQ(chosen_work_queue->task_queue(), task_queues_[0].get()); EXPECT_STREQ(chosen_work_queue->name(), GetParam().expected_work_queue_name); - EXPECT_EQ(chose_delayed_over_immediate, - GetParam().expected_did_starve_immediate_queue); } INSTANTIATE_TEST_SUITE_P(ChooseWithPriorityTest,
diff --git a/base/threading/hang_watcher.cc b/base/threading/hang_watcher.cc index 30960066..0d7ef9ae6 100644 --- a/base/threading/hang_watcher.cc +++ b/base/threading/hang_watcher.cc
@@ -5,6 +5,7 @@ #include "base/threading/hang_watcher.h" #include <algorithm> +#include <atomic> #include <utility> #include "base/bind.h" @@ -71,6 +72,7 @@ HangWatchScope::~HangWatchScope() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + internal::HangWatchState* current_hang_watch_state = internal::HangWatchState::GetHangWatchStateForCurrentThread()->Get(); @@ -80,6 +82,10 @@ return; } + // If a hang is currently being captured we should block here so execution + // stops and the relevant stack frames are recorded. + base::HangWatcher::GetInstance()->BlockIfCaptureInProgress(); + #if DCHECK_IS_ON() // Verify that no Scope was destructed out of order. DCHECK_EQ(this, current_hang_watch_state->GetCurrentHangWatchScope()); @@ -194,9 +200,14 @@ } if (must_invoke_hang_closure) { + capture_in_progress.store(true, std::memory_order_relaxed); + base::AutoLock scope_lock(capture_lock_); + // Invoke the closure outside the scope of |watch_state_lock_| // to prevent lock reentrancy. on_hang_closure_.Run(); + + capture_in_progress.store(false, std::memory_order_relaxed); } if (after_monitor_closure_for_testing_) { @@ -217,6 +228,16 @@ monitor_event_.Signal(); } +void HangWatcher::BlockIfCaptureInProgress() { + // Makes a best-effort attempt to block execution if a hang is currently being + // captured.Only block on |capture_lock| if |capture_in_progress| hints that + // it's already held to avoid serializing all threads on this function when no + // hang capture is in-progress. + if (capture_in_progress.load(std::memory_order_relaxed)) { + base::AutoLock hang_lock(capture_lock_); + } +} + void HangWatcher::UnregisterThread() { AutoLock auto_lock(watch_state_lock_);
diff --git a/base/threading/hang_watcher.h b/base/threading/hang_watcher.h index 7a577c0..24232a6 100644 --- a/base/threading/hang_watcher.h +++ b/base/threading/hang_watcher.h
@@ -13,6 +13,7 @@ #include "base/callback.h" #include "base/callback_helpers.h" #include "base/feature_list.h" +#include "base/synchronization/lock.h" #include "base/threading/simple_thread.h" #include "base/threading/thread_checker.h" #include "base/threading/thread_local.h" @@ -118,6 +119,11 @@ // HangWatcher thread is sleeping. Use only for testing. void SignalMonitorEventForTesting(); + // Use to block until the hang is recorded. Allows the caller to halt + // execution so it does not overshoot the hang watch target and result in a + // non-actionable stack trace in the crash recorded. + void BlockIfCaptureInProgress(); + private: THREAD_CHECKER(thread_checker_); @@ -160,6 +166,9 @@ base::RepeatingClosure after_monitor_closure_for_testing_; + base::Lock capture_lock_; + std::atomic<bool> capture_in_progress{false}; + FRIEND_TEST_ALL_PREFIXES(HangWatcherTest, NestedScopes); };
diff --git a/base/threading/hang_watcher_unittest.cc b/base/threading/hang_watcher_unittest.cc index c782246..cbf3207e 100644 --- a/base/threading/hang_watcher_unittest.cc +++ b/base/threading/hang_watcher_unittest.cc
@@ -264,4 +264,104 @@ ASSERT_FALSE(hang_event_.IsSignaled()); } +class HangWatchScopeBlockingTest : public testing::Test { + public: + void SetUp() override { + // Start the HangWatcher. + hang_watcher_ = + std::make_unique<HangWatcher>(base::BindLambdaForTesting([&] { + capture_started_.Signal(); + // Simulate capturing that takes a long time. + PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); + completed_capture_ = true; + })); + + hang_watcher_->SetAfterMonitorClosureForTesting( + base::BindLambdaForTesting([&]() { + // Simulate monitoring that takes a long time. + PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); + completed_monitoring_.Signal(); + })); + + // Make sure no periodic monitoring takes place. + hang_watcher_->SetMonitoringPeriodForTesting(base::TimeDelta::Max()); + + // Register the test main thread for hang watching. + unregister_thread_closure_ = hang_watcher_->RegisterThread(); + } + + void VerifyScopesDontBlock() { + // Start a hang watch scope that cannot possibly cause a hang to be + // detected. + { + HangWatchScope long_scope(base::TimeDelta::Max()); + + // Manually trigger a monitoring. + hang_watcher_->SignalMonitorEventForTesting(); + + // Execution has to continue freely here as no capture is in progress. + } + + // Monitoring should not be over yet because the test code should execute + // faster when not blocked. + EXPECT_FALSE(completed_monitoring_.IsSignaled()); + + // Wait for the full monitoring process to be complete. This is to prove + // that monitoring truly executed and that we raced the signaling. + completed_monitoring_.Wait(); + + // No hang means no capture. + EXPECT_FALSE(completed_capture_); + } + + protected: + base::WaitableEvent capture_started_; + base::WaitableEvent completed_monitoring_; + + // No need for this to be atomic because in tests with no capture the variable + // is not even written to by the HangWatcher thread and in tests with a + // capture the accesses are serialized by the blocking in ~HangWatchScope(). + bool completed_capture_ = false; + + std::unique_ptr<HangWatcher> hang_watcher_; + base::ScopedClosureRunner unregister_thread_closure_; +}; + +// Tests that execution is unimpeded by ~HangWatchScope() when no capture ever +// takes place. +TEST_F(HangWatchScopeBlockingTest, ScopeDoesNotBlocksWithoutCapture) { + VerifyScopesDontBlock(); +} + +// Test that execution blocks in ~HangWatchScope() for a thread under watch +// during the capturing of a hang. +TEST_F(HangWatchScopeBlockingTest, ScopeBlocksDuringCapture) { + // Start a hang watch scope that expires in the past already. Ensures that the + // first monitor will detect a hang. + { + HangWatchScope already_over(base::TimeDelta::FromDays(-1)); + + // Manually trigger a monitoring. + hang_watcher_->SignalMonitorEventForTesting(); + + // Ensure that the hang capturing started. + capture_started_.Wait(); + + // Execution will get stuck in this scope because execution does not escape + // ~HangWatchScope() if a hang capture is under way. + } + + // A hang was in progress so execution should have been blocked in + // BlockWhileCaptureInProgress() until capture finishes. + EXPECT_TRUE(completed_capture_); + + // Reset expectations + completed_monitoring_.Reset(); + capture_started_.Reset(); + completed_capture_ = false; + + // Verify that scopes don't block just because a capture happened in the past. + VerifyScopesDontBlock(); +} + } // namespace base
diff --git a/base/trace_event/memory_infra_background_whitelist.cc b/base/trace_event/memory_infra_background_whitelist.cc index 8b93016..71e2bd5 100644 --- a/base/trace_event/memory_infra_background_whitelist.cc +++ b/base/trace_event/memory_infra_background_whitelist.cc
@@ -298,6 +298,7 @@ "v8/utility/code_stats", "v8/utility/contexts/detached_context", "v8/utility/contexts/native_context", + "v8/utility/global_handles", "v8/utility/heap/code_space", "v8/utility/heap/code_large_object_space", "v8/utility/heap/large_object_space", @@ -311,6 +312,7 @@ "v8/workers/code_stats/isolate_0x?", "v8/workers/contexts/detached_context/isolate_0x?", "v8/workers/contexts/native_context/isolate_0x?", + "v8/workers/global_handles/isolate_0x?", "v8/workers/heap/code_space/isolate_0x?", "v8/workers/heap/code_large_object_space/isolate_0x?", "v8/workers/heap/large_object_space/isolate_0x?",
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 42667ab..8f7fcc3 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -1539,13 +1539,6 @@ # valid on Windows, which is LLP64. "-Wno-microsoft-cast", ] - - if (llvm_force_head_revision && is_win) { - cflags += [ - # TODO(https://crbug.com/1059231): Clean up, enable. - "-Wno-pointer-to-int-cast", - ] - } } } }
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index 68d6d8f..6b7d397 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20200310.1.1 \ No newline at end of file +0.20200310.2.1 \ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index 68d6d8f..6b7d397 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20200310.1.1 \ No newline at end of file +0.20200310.2.1 \ No newline at end of file
diff --git a/cc/animation/element_animations_unittest.cc b/cc/animation/element_animations_unittest.cc index fe0eab53..34debd1 100644 --- a/cc/animation/element_animations_unittest.cc +++ b/cc/animation/element_animations_unittest.cc
@@ -1590,7 +1590,7 @@ std::unique_ptr<KeyframeModel> to_add(CreateKeyframeModel( std::unique_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)), 1, TargetProperty::OPACITY)); - to_add->set_iterations(-1); + to_add->set_iterations(std::numeric_limits<double>::infinity()); animation_->AddKeyframeModel(std::move(to_add)); animation_->Tick(kInitialTickTime);
diff --git a/cc/animation/keyframe_model.cc b/cc/animation/keyframe_model.cc index f81acea..25e2c6d2 100644 --- a/cc/animation/keyframe_model.cc +++ b/cc/animation/keyframe_model.cc
@@ -172,7 +172,7 @@ if (playback_rate_ == 0) return false; - return run_state_ == RUNNING && iterations_ >= 0 && + return run_state_ == RUNNING && std::isfinite(iterations_) && (curve_->Duration() * (iterations_ / std::abs(playback_rate_))) <= (ConvertMonotonicTimeToLocalTime(monotonic_time) + time_offset_); } @@ -205,8 +205,7 @@ // TODO(crbug.com/909794): By spec end time = max(start delay + duration + // end delay, 0). The logic should be updated once "end delay" is supported. base::TimeDelta active_after_boundary_time = - // Negative iterations_ represents "infinite iterations". - iterations_ >= 0 + std::isfinite(iterations_) ? std::max(opposite_time_offset + active_duration, base::TimeDelta()) : base::TimeDelta::Max(); if (local_time > active_after_boundary_time || @@ -230,7 +229,7 @@ return local_time + time_offset_; case KeyframeModel::Phase::AFTER: if (fill_mode_ == FillMode::FORWARDS || fill_mode_ == FillMode::BOTH) { - DCHECK_GE(iterations_, 0); + DCHECK_NE(iterations_, std::numeric_limits<double>::infinity()); base::TimeDelta active_duration = curve_->Duration() * iterations_ / std::abs(playback_rate_); return std::max(std::min(local_time + time_offset_, active_duration), @@ -289,6 +288,7 @@ // Calculate the scaled active time base::TimeDelta scaled_active_time; if (playback_rate_ < 0) { + DCHECK(std::isfinite(iterations_)); scaled_active_time = ((active_time - active_duration) * playback_rate_) + start_offset; } else {
diff --git a/cc/animation/keyframe_model_unittest.cc b/cc/animation/keyframe_model_unittest.cc index aca5fda5..2d4e94b 100644 --- a/cc/animation/keyframe_model_unittest.cc +++ b/cc/animation/keyframe_model_unittest.cc
@@ -94,7 +94,8 @@ } TEST(KeyframeModelTest, TrimTimeInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity())); EXPECT_EQ(0.0, keyframe_model->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) .InSecondsF()); @@ -110,7 +111,8 @@ } TEST(KeyframeModelTest, TrimTimeReverse) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity())); keyframe_model->set_direction(KeyframeModel::Direction::REVERSE); EXPECT_EQ(1.0, keyframe_model->TrimTimeToCurrentIteration(TicksFromSecondsF(0)) @@ -133,7 +135,8 @@ } TEST(KeyframeModelTest, TrimTimeAlternateInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity())); keyframe_model->set_direction(KeyframeModel::Direction::ALTERNATE_NORMAL); EXPECT_EQ(0.0, keyframe_model->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) @@ -249,7 +252,8 @@ } TEST(KeyframeModelTest, TrimTimeAlternateReverseInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity())); keyframe_model->set_direction(KeyframeModel::Direction::ALTERNATE_REVERSE); EXPECT_EQ(1.0, keyframe_model->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) @@ -650,7 +654,8 @@ } TEST(KeyframeModelTest, IsFinishedAtInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity())); keyframe_model->SetRunState(KeyframeModel::RUNNING, TicksFromSecondsF(0.0)); EXPECT_FALSE(keyframe_model->IsFinishedAt(TicksFromSecondsF(0.0))); EXPECT_FALSE(keyframe_model->IsFinishedAt(TicksFromSecondsF(0.5))); @@ -882,7 +887,8 @@ } TEST(KeyframeModelTest, TrimTimePlaybackFastInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1, 4, 4)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity(), 4, 4)); EXPECT_EQ(0, keyframe_model->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) .InSecondsF()); @@ -1324,7 +1330,8 @@ } TEST(KeyframeModelTest, InEffectFillModeWithInfiniteIterations) { - std::unique_ptr<KeyframeModel> keyframe_model(CreateKeyframeModel(-1, 1)); + std::unique_ptr<KeyframeModel> keyframe_model( + CreateKeyframeModel(std::numeric_limits<double>::infinity(), 1)); keyframe_model->set_fill_mode(KeyframeModel::FillMode::NONE); EXPECT_FALSE(keyframe_model->InEffect(TicksFromSecondsF(-1.0))); EXPECT_TRUE(keyframe_model->InEffect(TicksFromSecondsF(0.0)));
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index 613438c..bcb3ba4 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -889,6 +889,7 @@ sources = [ "$root_out_dir/egl_intermediates/libEGL.dylib", "$root_out_dir/egl_intermediates/libGLESv2.dylib", + "$root_out_dir/egl_intermediates/libvulkan.dylib", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ] public_deps = [ "//ui/gl:angle_library_copy" ] @@ -899,9 +900,14 @@ sources = [ "$root_out_dir/egl_intermediates/libswiftshader_libEGL.dylib", "$root_out_dir/egl_intermediates/libswiftshader_libGLESv2.dylib", + "$root_out_dir/vk_intermediates/libvk_swiftshader.dylib", + "$root_out_dir/vk_intermediates/vk_swiftshader_icd.json", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ] - public_deps = [ "//ui/gl:swiftshader_library_copy" ] + public_deps = [ + "//ui/gl:swiftshader_egl_library_copy", + "//ui/gl:swiftshader_vk_library_copy", + ] } }
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 6fc7e4d..5e58522c 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -262,7 +262,6 @@ "//chrome/android/webapk/libs/common:common_java", "//chrome/android/webapk/libs/common:splash_java", "//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java", - "//chrome/browser/android/lifecycle:java", "//chrome/browser/android/thin_webview:factory_java", "//chrome/browser/android/thin_webview:java", "//chrome/browser/download/android:java", @@ -287,6 +286,7 @@ "//chrome/browser/ui/messages/android:java", "//chrome/browser/util:java", "//chrome/browser/xsurface:java", + "//chrome/lib/lifecycle/public/android:java", "//components/autofill/android:autofill_java", "//components/autofill_assistant/browser:proto_java", "//components/background_task_scheduler:background_task_scheduler_java", @@ -804,7 +804,6 @@ "//chrome/android/third_party/compositor_animator:compositor_animator_java", "//chrome/android/webapk/libs/client:client_java", "//chrome/android/webapk/libs/common:common_java", - "//chrome/browser/android/lifecycle:java", "//chrome/browser/android/metrics:ukm_java_test_support", "//chrome/browser/android/metrics:ukm_javatests", "//chrome/browser/download/android:java", @@ -819,6 +818,7 @@ "//chrome/browser/ui/android/appmenu:test_support_java", "//chrome/browser/ui/messages/android:java", "//chrome/browser/util:java", + "//chrome/lib/lifecycle/public/android:java", "//chrome/test/android:chrome_java_test_support", "//chrome/test/android/test_trusted_web_activity:test_trusted_web_activity_java", "//components/autofill/android:autofill_java", @@ -841,6 +841,7 @@ "//components/download/public/common:public_java", "//components/embedder_support/android:content_view_java", "//components/embedder_support/android:web_contents_delegate_java", + "//components/external_intents/android:java", "//components/feature_engagement:feature_engagement_java", "//components/gcm_driver/android:gcm_driver_java", "//components/gcm_driver/instance_id/android:instance_id_driver_java", @@ -2778,6 +2779,7 @@ "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTask.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskScheduler.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java", + "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchNotificationServiceBridge.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchedPagesNotifier.java", "java/src/org/chromium/chrome/browser/omaha/notification/UpdateNotificationServiceBridge.java", "java/src/org/chromium/chrome/browser/omnibox/ChromeAutocompleteSchemeClassifier.java",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 161d133..e3f493ae 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -1094,6 +1094,7 @@ "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTask.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskScheduler.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java", + "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchNotificationServiceBridge.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchPrefs.java", "java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchedPagesNotifier.java", "java/src/org/chromium/chrome/browser/omaha/ExponentialBackoffScheduler.java",
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn index 4c2e199..09235e6 100644 --- a/chrome/android/features/autofill_assistant/BUILD.gn +++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -196,6 +196,7 @@ "java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataNativeDelegate.java", + "java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantDateTime.java", ] }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantGenericUiDelegate.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantGenericUiDelegate.java index 272bf6a..39076871 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantGenericUiDelegate.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantGenericUiDelegate.java
@@ -35,6 +35,13 @@ value); } + void onCalendarPopupDateChanged(String identifier, AssistantValue value) { + assert mNativeAssistantGenericUiDelegate != 0; + AssistantGenericUiDelegateJni.get().onCalendarPopupDateChanged( + mNativeAssistantGenericUiDelegate, AssistantGenericUiDelegate.this, identifier, + value); + } + @CalledByNative private void clearNativePtr() { mNativeAssistantGenericUiDelegate = 0; @@ -46,5 +53,7 @@ String identifier); void onListPopupSelectionChanged(long nativeAssistantGenericUiDelegate, AssistantGenericUiDelegate caller, String identifier, AssistantValue value); + void onCalendarPopupDateChanged(long nativeAssistantGenericUiDelegate, + AssistantGenericUiDelegate caller, String identifier, AssistantValue value); } }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantValue.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantValue.java index fe66db6..2fc5ada5 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantValue.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantValue.java
@@ -8,8 +8,11 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.chrome.browser.autofill_assistant.user_data.AssistantDateTime; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** The Java equivalent to {@code ValueProto}. */ @JNINamespace("autofill_assistant") @@ -17,29 +20,41 @@ private final String[] mStrings; private final boolean[] mBooleans; private final int[] mIntegers; + private final List<AssistantDateTime> mDateTimes; AssistantValue() { mStrings = null; mBooleans = null; mIntegers = null; + mDateTimes = null; } public AssistantValue(String[] strings) { mStrings = strings; mBooleans = null; mIntegers = null; + mDateTimes = null; } public AssistantValue(boolean[] booleans) { mStrings = null; mBooleans = booleans; mIntegers = null; + mDateTimes = null; } public AssistantValue(int[] integers) { mStrings = null; mBooleans = null; mIntegers = integers; + mDateTimes = null; + } + + public AssistantValue(List<AssistantDateTime> dateTimes) { + mStrings = null; + mBooleans = null; + mIntegers = null; + mDateTimes = dateTimes; } @CalledByNative @@ -63,6 +78,21 @@ } @CalledByNative + public static AssistantValue createForDateTimes(List<AssistantDateTime> values) { + return new AssistantValue(values); + } + + @CalledByNative + private static List<AssistantDateTime> createDateTimeList() { + return new ArrayList<>(); + } + + @CalledByNative + private static void addDateTimeToList(List<AssistantDateTime> list, AssistantDateTime value) { + list.add(value); + } + + @CalledByNative public String[] getStrings() { return mStrings; } @@ -77,6 +107,25 @@ return mIntegers; } + @CalledByNative + public List<AssistantDateTime> getDateTimes() { + return mDateTimes; + } + + public static boolean isDateSingleton(AssistantValue value) { + return value != null && value.mDateTimes != null && value.mDateTimes.size() == 1; + } + + @CalledByNative + private static int getListSize(List list) { + return list.size(); + } + + @CalledByNative + private static Object getListAt(List list, int index) { + return list.get(index); + } + @Override public boolean equals(@Nullable Object obj) { if (obj == this) {
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantViewInteractions.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantViewInteractions.java index 64b9802b..982e2d5 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantViewInteractions.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/generic_ui/AssistantViewInteractions.java
@@ -4,16 +4,22 @@ package org.chromium.chrome.browser.autofill_assistant.generic_ui; +import static org.chromium.chrome.browser.autofill_assistant.generic_ui.AssistantValue.isDateSingleton; + import android.content.Context; +import android.support.annotation.Nullable; import android.view.View; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.chrome.browser.autofill_assistant.user_data.AssistantDateTime; import org.chromium.content.browser.input.PopupItemType; import org.chromium.content.browser.input.SelectPopupDialog; import org.chromium.content.browser.input.SelectPopupItem; +import org.chromium.content.browser.picker.InputDialogContainer; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** JNI bridge between {@code interaction_handler_android} and Java. */ @@ -42,4 +48,41 @@ popupItems, multiple, selectedItems); dialog.show(); } + + @CalledByNative + private static boolean showCalendarPopup(Context context, @Nullable AssistantValue initialDate, + AssistantValue minDate, AssistantValue maxDate, String outputIdentifier, + AssistantGenericUiDelegate delegate) { + if ((initialDate != null && !isDateSingleton(initialDate)) || !isDateSingleton(minDate) + || !isDateSingleton(maxDate)) { + return false; + } + + InputDialogContainer inputDialogContainer = + new InputDialogContainer(context, new InputDialogContainer.InputActionDelegate() { + @Override + public void cancelDateTimeDialog() { + // Do nothing. + } + + @Override + public void replaceDateTime(double value) { + // User tapped the 'clear' button. + if (Double.isNaN(value)) { + delegate.onCalendarPopupDateChanged(outputIdentifier, null); + } else { + delegate.onCalendarPopupDateChanged(outputIdentifier, + AssistantValue.createForDateTimes(Collections.singletonList( + new AssistantDateTime((long) value)))); + } + } + }); + + inputDialogContainer.showDialog(org.chromium.ui.base.ime.TextInputType.DATE, + initialDate != null ? initialDate.getDateTimes().get(0).getTimeInUtcMillis() + : Double.NaN, + minDate.getDateTimes().get(0).getTimeInUtcMillis(), + maxDate.getDateTimes().get(0).getTimeInUtcMillis(), -1, null); + return true; + } }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantDateTime.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantDateTime.java index a7b91f3..ca1af81 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantDateTime.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantDateTime.java
@@ -4,6 +4,9 @@ package org.chromium.chrome.browser.autofill_assistant.user_data; +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.JNINamespace; + import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -17,6 +20,7 @@ * Note that this class does not make any guarantees with respect to the validity of the represented * date/time. */ +@JNINamespace("autofill_assistant") public class AssistantDateTime { /** Year, e.g., 2019. */ private int mYear; @@ -31,6 +35,7 @@ /** Second in [0-59]. */ private int mSecond; + @CalledByNative public AssistantDateTime(int year, int month, int day, int hour, int minute, int second) { set(year, month, day, hour, minute, second); } @@ -75,14 +80,17 @@ return calendar.getTimeInMillis(); } + @CalledByNative public int getYear() { return mYear; } + @CalledByNative public int getMonth() { return mMonth; } + @CalledByNative public int getDay() { return mDay; }
diff --git a/chrome/android/features/autofill_assistant/javatests/DEPS b/chrome/android/features/autofill_assistant/javatests/DEPS index b7155a83..652f717 100644 --- a/chrome/android/features/autofill_assistant/javatests/DEPS +++ b/chrome/android/features/autofill_assistant/javatests/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+chrome/lib/image_fetcher", "+components/browser_ui/widget/android", "+content/public/android/java/src/org/chromium/content_public/browser", ]
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java index edeafa2..ec4aeb4 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
@@ -8,11 +8,13 @@ import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.assertion.PositionAssertions.isLeftAlignedWith; import static android.support.test.espresso.assertion.ViewAssertions.matches; +import static android.support.test.espresso.contrib.PickerActions.setDate; import static android.support.test.espresso.matcher.RootMatchers.isDialog; import static android.support.test.espresso.matcher.ViewMatchers.assertThat; import static android.support.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isEnabled; +import static android.support.test.espresso.matcher.ViewMatchers.withClassName; import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import static android.support.test.espresso.matcher.ViewMatchers.withTagValue; import static android.support.test.espresso.matcher.ViewMatchers.withText; @@ -20,6 +22,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.isIn; import static org.hamcrest.Matchers.iterableWithSize; @@ -28,6 +31,7 @@ import android.support.test.InstrumentationRegistry; import android.support.test.filters.MediumTest; +import android.widget.DatePicker; import org.junit.Before; import org.junit.Rule; @@ -49,6 +53,8 @@ import org.chromium.chrome.browser.autofill_assistant.proto.CollectUserDataResultProto; import org.chromium.chrome.browser.autofill_assistant.proto.ColorProto; import org.chromium.chrome.browser.autofill_assistant.proto.ComputeValueProto; +import org.chromium.chrome.browser.autofill_assistant.proto.DateList; +import org.chromium.chrome.browser.autofill_assistant.proto.DateProto; import org.chromium.chrome.browser.autofill_assistant.proto.DividerViewProto; import org.chromium.chrome.browser.autofill_assistant.proto.DrawableProto; import org.chromium.chrome.browser.autofill_assistant.proto.EndActionProto; @@ -70,6 +76,7 @@ import org.chromium.chrome.browser.autofill_assistant.proto.SetModelValueProto; import org.chromium.chrome.browser.autofill_assistant.proto.SetUserActionsProto; import org.chromium.chrome.browser.autofill_assistant.proto.ShapeDrawableProto; +import org.chromium.chrome.browser.autofill_assistant.proto.ShowCalendarPopupProto; import org.chromium.chrome.browser.autofill_assistant.proto.ShowGenericUiProto; import org.chromium.chrome.browser.autofill_assistant.proto.ShowInfoPopupProto; import org.chromium.chrome.browser.autofill_assistant.proto.ShowListPopupProto; @@ -958,4 +965,125 @@ IntList.newBuilder().addValues(1))) .build())); } + + /** + * Displays a calendar popup and interacts with it. + */ + @Test + @MediumTest + public void testCalendarPopup() { + List<ModelProto.ModelValue> modelValues = new ArrayList<>(); + modelValues.add( + (ModelProto.ModelValue) ModelProto.ModelValue.newBuilder() + .setIdentifier("date") + .setValue(ValueProto.newBuilder().setDates(DateList.newBuilder().addValues( + DateProto.newBuilder().setYear(2020).setMonth(4).setDay(15)))) + .build()); + modelValues.add( + (ModelProto.ModelValue) ModelProto.ModelValue.newBuilder() + .setIdentifier("min_date") + .setValue(ValueProto.newBuilder().setDates(DateList.newBuilder().addValues( + DateProto.newBuilder().setYear(2020).setMonth(1).setDay(1)))) + .build()); + modelValues.add( + (ModelProto.ModelValue) ModelProto.ModelValue.newBuilder() + .setIdentifier("max_date") + .setValue(ValueProto.newBuilder().setDates(DateList.newBuilder().addValues( + DateProto.newBuilder().setYear(2020).setMonth(12).setDay(31)))) + .build()); + modelValues.add( + (ModelProto.ModelValue) ModelProto.ModelValue.newBuilder() + .setIdentifier("chips") + .setValue(ValueProto.newBuilder().setUserActions( + UserActionList.newBuilder().addValues( + UserActionProto.newBuilder() + .setChip(ChipProto.newBuilder() + .setText("Done") + .setType(ChipType.NORMAL_ACTION)) + .setIdentifier("done_chip")))) + .build()); + + List<InteractionProto> interactions = new ArrayList<>(); + interactions.add( + (InteractionProto) InteractionProto.newBuilder() + .setTriggerEvent(EventProto.newBuilder().setOnValueChanged( + OnModelValueChangedEventProto.newBuilder().setModelIdentifier( + "chips"))) + .addCallbacks(CallbackProto.newBuilder().setSetUserActions( + SetUserActionsProto.newBuilder().setModelIdentifier("chips"))) + .build()); + interactions.add((InteractionProto) InteractionProto.newBuilder() + .setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled( + OnUserActionCalled.newBuilder().setUserActionIdentifier( + "done_chip"))) + .addCallbacks(CallbackProto.newBuilder().setEndAction( + EndActionProto.newBuilder().setStatus( + ProcessedActionStatusProto.ACTION_APPLIED))) + .build()); + interactions.add((InteractionProto) InteractionProto.newBuilder() + .setTriggerEvent(EventProto.newBuilder().setOnViewClicked( + OnViewClickedEventProto.newBuilder().setViewIdentifier( + "text_view"))) + .addCallbacks(CallbackProto.newBuilder().setShowCalendarPopup( + ShowCalendarPopupProto.newBuilder() + .setDateModelIdentifier("date") + .setMinDateModelIdentifier("min_date") + .setMaxDateModelIdentifier("max_date"))) + .build()); + + GenericUserInterfaceProto genericUserInterface = + (GenericUserInterfaceProto) GenericUserInterfaceProto.newBuilder() + .setRootView(createTextView("Click me", "text_view")) + .setInteractions( + InteractionsProto.newBuilder().addAllInteractions(interactions)) + .setModel(ModelProto.newBuilder().addAllValues(modelValues)) + .build(); + + ArrayList<ActionProto> list = new ArrayList<>(); + list.add((ActionProto) ActionProto.newBuilder() + .setShowGenericUi(ShowGenericUiProto.newBuilder() + .setGenericUserInterface(genericUserInterface) + .addOutputModelIdentifiers("date")) + .build()); + AutofillAssistantTestScript script = new AutofillAssistantTestScript( + (SupportedScriptProto) SupportedScriptProto.newBuilder() + .setPath("form_target_website.html") + .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( + ChipProto.newBuilder().setText("Autostart"))) + .build(), + list); + + AutofillAssistantTestService testService = + new AutofillAssistantTestService(Collections.singletonList(script)); + startAutofillAssistant(mTestRule.getActivity(), testService); + + waitUntilViewMatchesCondition(withText("Done"), isCompletelyDisplayed()); + + onView(withText("Click me")).perform(click()); + onView(withClassName(equalTo(DatePicker.class.getName()))) + .inRoot(isDialog()) + .perform(setDate(2020, 7, 13)); + onView(withText(R.string.date_picker_dialog_set)).inRoot(isDialog()).perform(click()); + + int numNextActionsCalled = testService.getNextActionsCounter(); + onView(withContentDescription("Done")).perform(click()); + testService.waitUntilGetNextActions(numNextActionsCalled + 1); + + List<ProcessedActionProto> processedActions = testService.getProcessedActions(); + assertThat(processedActions, iterableWithSize(1)); + assertThat( + processedActions.get(0).getStatus(), is(ProcessedActionStatusProto.ACTION_APPLIED)); + ShowGenericUiProto.Result result = processedActions.get(0).getShowGenericUiResult(); + List<ModelProto.ModelValue> resultModelValues = result.getModel().getValuesList(); + assertThat(resultModelValues, iterableWithSize(1)); + assertThat(resultModelValues.get(0), + is((ModelProto.ModelValue) ModelProto.ModelValue.newBuilder() + .setIdentifier("date") + .setValue(ValueProto.newBuilder().setDates( + DateList.newBuilder().addValues(DateProto.newBuilder() + .setYear(2020) + .setMonth(7) + .setDay(13)))) + .build())); + } }
diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java index d8e6c26..84ad17f 100644 --- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java +++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
@@ -121,6 +121,12 @@ } @CalledByNative + private void addOptionToggleToAccessorySheetData(Object objAccessorySheetData, + String displayText, boolean enabled, @AccessoryAction int accessoryAction) { + // TODO(crbug.com/1044930): Implement this. + } + + @CalledByNative private Object addUserInfoToAccessorySheetData( Object objAccessorySheetData, String origin, boolean isPslMatch) { UserInfo userInfo = new UserInfo(origin, isPslMatch);
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn index ec9600bd..0987740 100644 --- a/chrome/android/features/tab_ui/BUILD.gn +++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -125,11 +125,11 @@ "//chrome/android/features/start_surface/internal:java", "//chrome/android/public/profiles:java", "//chrome/app:java_strings_grd", - "//chrome/browser/android/lifecycle:java", "//chrome/browser/flags:java", "//chrome/browser/ui/android/strings:ui_strings_grd", "//chrome/browser/ui/messages/android:java", "//chrome/browser/util:java", + "//chrome/lib/lifecycle/public/android:java", "//components/browser_ui/styles/android:java", "//components/browser_ui/widget/android:java", "//components/embedder_support/android:util_java",
diff --git a/chrome/android/features/tab_ui/java/DEPS b/chrome/android/features/tab_ui/java/DEPS index 1f4ffc0c..14ea45f 100644 --- a/chrome/android/features/tab_ui/java/DEPS +++ b/chrome/android/features/tab_ui/java/DEPS
@@ -1,5 +1,5 @@ include_rules = [ - "+chrome/browser/android/lifecycle", + "+chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle", "+chrome/browser/ui/messages/android/java", "+chrome/browser/util", "+components/browser_ui/styles/android",
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java index 228ea261..d45b1e70 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMenuItemBinder.java
@@ -7,6 +7,7 @@ import android.view.View; import android.widget.TextView; +import org.chromium.chrome.tab_ui.R; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; @@ -16,7 +17,8 @@ public class TabGridDialogMenuItemBinder { public static void binder(PropertyModel model, View view, PropertyKey propertyKey) { if (propertyKey == TabGridDialogMenuItemProperties.TITLE) { - ((TextView) view).setText(model.get(TabGridDialogMenuItemProperties.TITLE)); + TextView textView = view.findViewById(R.id.menu_item_text); + textView.setText(model.get(TabGridDialogMenuItemProperties.TITLE)); } } }
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java index 7e191a4..82bcb602 100644 --- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java +++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java
@@ -505,7 +505,7 @@ private void verifyTabGridDialogToolbarMenuItem(ListView listView, int index, String text) { View menuItemView = listView.getChildAt(index); - TextView menuItemText = menuItemView.findViewById(R.id.menu_item); + TextView menuItemText = menuItemView.findViewById(R.id.menu_item_text); assertEquals(text, menuItemText.getText()); }
diff --git a/chrome/android/features/tab_ui/junit/DEPS b/chrome/android/features/tab_ui/junit/DEPS index ee28923..1c62038d 100644 --- a/chrome/android/features/tab_ui/junit/DEPS +++ b/chrome/android/features/tab_ui/junit/DEPS
@@ -1,7 +1,7 @@ include_rules = [ - "+chrome/browser/android/lifecycle", "+chrome/browser/util", "+content/public/android/java/src/org/chromium/content_public/browser", "+components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement", "+components/search_engines/android/java/src/org/chromium/components/search_engines", + "+chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle" ]
diff --git a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrShell.java b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrShell.java index de16d31b..af6a2b2e 100644 --- a/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrShell.java +++ b/chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrShell.java
@@ -233,7 +233,7 @@ mTabRedirectHandler = new TabRedirectHandler() { @Override - public boolean shouldStayInChrome(boolean hasExternalProtocol) { + public boolean shouldStayInApp(boolean hasExternalProtocol) { return !hasExternalProtocol; } };
diff --git a/chrome/android/feed/DEPS b/chrome/android/feed/DEPS index f541e4b..ce99f7f5 100644 --- a/chrome/android/feed/DEPS +++ b/chrome/android/feed/DEPS
@@ -1,6 +1,6 @@ include_rules = [ - "+chrome/browser/android/lifecycle", "+chrome/browser/ui/messages/android/java", + "+chrome/lib/lifecycle/public", "+components/background_task_scheduler", "+components/feature_engagement", "+components/feed",
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java index 0afcba3..c19d00b 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedConfiguration.java
@@ -26,7 +26,7 @@ private static final String CARD_MENU_TOOLTIP_ELIGIBLE = "card_menu_tooltip_eligible"; /** Default value for if card menus should have tooltips enabled. */ - public static final boolean CARD_MENU_TOOLTIP_ELIGIBLE_DEFAULT = false; + public static final boolean CARD_MENU_TOOLTIP_ELIGIBLE_DEFAULT = true; private static final String CONSUME_SYNTHETIC_TOKENS = "consume_synthetic_tokens_bool"; /** Default value for whether to consumer synthetic tokens on load. */ @@ -99,7 +99,7 @@ private static final String MANAGE_INTERESTS_ENABLED = "manage_interests_enabled"; /** Default value for whether to use menu options to launch interest management page. */ - public static final boolean MANAGE_INTERESTS_ENABLED_DEFAULT = false; + public static final boolean MANAGE_INTERESTS_ENABLED_DEFAULT = true; private static final String SEND_FEEDBACK_ENABLED = "send_feedback_enabled"; @@ -141,7 +141,7 @@ private static final String UNDOABLE_ACTIONS_ENABLED = "undoable_actions_enabled"; /** Default value for if undoable actions should be presented to the user. */ - public static final boolean UNDOABLE_ACTIONS_ENABLED_DEFAULT = false; + public static final boolean UNDOABLE_ACTIONS_ENABLED_DEFAULT = true; private static final String USE_SECONDARY_PAGE_REQUEST = "use_secondary_page_request"; /** Default value for pagination behavior. */
diff --git a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java index 449c8de..9890167 100644 --- a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java +++ b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/FeedConfigurationTest.java
@@ -427,8 +427,8 @@ Configuration configuration = FeedConfiguration.createConfiguration(); Assert.assertFalse( configuration.getValueOrDefault(ConfigKey.ABANDON_RESTORE_BELOW_FOLD, true)); - Assert.assertFalse( - configuration.getValueOrDefault(ConfigKey.CARD_MENU_TOOLTIP_ELIGIBLE, true)); + Assert.assertTrue( + configuration.getValueOrDefault(ConfigKey.CARD_MENU_TOOLTIP_ELIGIBLE, false)); Assert.assertFalse( configuration.getValueOrDefault(ConfigKey.CONSUME_SYNTHETIC_TOKENS, true)); Assert.assertTrue(configuration.getValueOrDefault( @@ -462,8 +462,8 @@ Assert.assertEquals((long) FeedConfiguration.LOGGING_IMMEDIATE_CONTENT_THRESHOLD_MS_DEFAULT, configuration.getValueOrDefault( ConfigKey.LOGGING_IMMEDIATE_CONTENT_THRESHOLD_MS, 0L)); - Assert.assertFalse( - configuration.getValueOrDefault(ConfigKey.MANAGE_INTERESTS_ENABLED, true)); + Assert.assertTrue( + configuration.getValueOrDefault(ConfigKey.MANAGE_INTERESTS_ENABLED, false)); Assert.assertEquals((long) FeedConfiguration.MAXIMUM_GC_ATTEMPTS_DEFAULT, configuration.getValueOrDefault(ConfigKey.MAXIMUM_GC_ATTEMPTS, 0L)); Assert.assertEquals((long) FeedConfiguration.NON_CACHED_MIN_PAGE_SIZE_DEFAULT, @@ -481,8 +481,8 @@ configuration.getValueOrDefault(ConfigKey.STORAGE_MISS_THRESHOLD, 0L)); Assert.assertFalse( configuration.getValueOrDefault(ConfigKey.TRIGGER_IMMEDIATE_PAGINATION, true)); - Assert.assertFalse( - configuration.getValueOrDefault(ConfigKey.UNDOABLE_ACTIONS_ENABLED, true)); + Assert.assertTrue( + configuration.getValueOrDefault(ConfigKey.UNDOABLE_ACTIONS_ENABLED, false)); Assert.assertTrue(configuration.getValueOrDefault(ConfigKey.USE_TIMEOUT_SCHEDULER, false)); Assert.assertFalse( configuration.getValueOrDefault(ConfigKey.USE_SECONDARY_PAGE_REQUEST, true));
diff --git a/chrome/android/feed/dummy/DEPS b/chrome/android/feed/dummy/DEPS index ffd92b39..09da6d1 100644 --- a/chrome/android/feed/dummy/DEPS +++ b/chrome/android/feed/dummy/DEPS
@@ -1,5 +1,5 @@ include_rules = [ "-components/feed", - "+chrome/browser/android/lifecycle", + "+chrome/lib/lifecycle/public", "+components/background_task_scheduler" ]
diff --git a/chrome/android/java/DEPS b/chrome/android/java/DEPS index 34f727e7..984e44da 100644 --- a/chrome/android/java/DEPS +++ b/chrome/android/java/DEPS
@@ -1,7 +1,6 @@ include_rules = [ "-chrome/android/features/keyboard_accessory/internal", - "+chrome/browser/android/lifecycle", "+chrome/browser/android/thin_webview/java", "+chrome/browser/flags/android", "+chrome/browser/share/android", @@ -17,6 +16,7 @@ "+chrome/browser/preferences/android/java", "+chrome/browser/settings/android/java", "+chrome/browser/util/android/java", + "+chrome/lib/lifecycle/public", "+components/autofill/android/java/src/org/chromium/components/autofill", "+components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler", "+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
diff --git a/chrome/android/java/res/layout/video_player.xml b/chrome/android/java/res/layout/video_player.xml index 2114d0f..46ea7ff4 100644 --- a/chrome/android/java/res/layout/video_player.xml +++ b/chrome/android/java/res/layout/video_player.xml
@@ -49,7 +49,7 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|start" android:layout_marginStart="16dp" - android:importantForAccessibility="yes" + android:clickable="true" android:paddingBottom="24dp" style="@style/TextAppearance.TextMedium.Primary.Light" /> <ImageView @@ -66,6 +66,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom|center" + android:clickable="true" style="@style/PhotoPicker.SeekBar" /> </FrameLayout> </FrameLayout>
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 6dd0224..e610dac8 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
@@ -197,7 +197,7 @@ // Create tab menu mTabMenu = new ListPopupWindow(mContext); - mTabMenu.setAdapter(new ArrayAdapter<String>(mContext, R.layout.list_menu_item, + mTabMenu.setAdapter(new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, new String[] { mContext.getString(!mIncognito ? R.string.menu_close_all_tabs : R.string.menu_close_all_incognito_tabs)}));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java index c80917cf..3fbfd99 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -27,10 +27,10 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.tab.TabRedirectHandler; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.external_intents.ExternalIntentsSwitches; +import org.chromium.components.external_intents.RedirectHandler; import org.chromium.content_public.common.ContentUrlConstants; import org.chromium.ui.base.PageTransition; import org.chromium.url.URI; @@ -330,10 +330,10 @@ */ private boolean handleCCTRedirectsToInstantApps(ExternalNavigationParams params, boolean isExternalProtocol, boolean incomingIntentRedirect) { - TabRedirectHandler handler = params.getRedirectHandler(); + RedirectHandler handler = params.getRedirectHandler(); if (handler == null) return false; if (handler.isFromCustomTabIntent() && !isExternalProtocol && incomingIntentRedirect - && !handler.shouldNavigationTypeStayInChrome() + && !handler.shouldNavigationTypeStayInApp() && mDelegate.maybeLaunchInstantApp( params.getUrl(), params.getReferrerUrl(), true)) { if (DEBUG) { @@ -346,11 +346,11 @@ private boolean redirectShouldStayInChrome( ExternalNavigationParams params, boolean isExternalProtocol, Intent targetIntent) { - TabRedirectHandler handler = params.getRedirectHandler(); + RedirectHandler handler = params.getRedirectHandler(); if (handler == null) return false; - boolean shouldStayInChrome = handler.shouldStayInChrome( + boolean shouldStayInApp = handler.shouldStayInApp( isExternalProtocol, mDelegate.isIntentForTrustedCallingApp(targetIntent)); - if (shouldStayInChrome || handler.shouldNotOverrideUrlLoading()) { + if (shouldStayInApp || handler.shouldNotOverrideUrlLoading()) { if (DEBUG) Log.i(TAG, "RedirectHandler decision"); return true; } @@ -999,7 +999,7 @@ // status in one shot. In order to prevent this scenario, we notify redirection // handler that redirection from the current navigation should stay in Chrome. if (params.getRedirectHandler() != null) { - params.getRedirectHandler().setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); + params.getRedirectHandler().setShouldNotOverrideUrlLoadingOnCurrentRedirectChain(); } if (DEBUG) Log.i(TAG, "clobberCurrentTab called"); return mDelegate.clobberCurrentTab(browserFallbackUrl, params.getReferrerUrl());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java index acc32069..ef3f78c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java
@@ -4,7 +4,7 @@ package org.chromium.chrome.browser.externalnav; -import org.chromium.chrome.browser.tab.TabRedirectHandler; +import org.chromium.components.external_intents.RedirectHandler; /** * A container object for passing navigation parameters to {@link ExternalNavigationHandler}. @@ -29,7 +29,7 @@ private final boolean mApplicationMustBeInForeground; /** A redirect handler. */ - private final TabRedirectHandler mRedirectHandler; + private final RedirectHandler mRedirectHandler; /** Whether the intent should force a new tab to open. */ private final boolean mOpenInNewTab; @@ -57,7 +57,7 @@ private ExternalNavigationParams(String url, boolean isIncognito, String referrerUrl, int pageTransition, boolean isRedirect, boolean appMustBeInForeground, - TabRedirectHandler redirectHandler, boolean openInNewTab, + RedirectHandler redirectHandler, boolean openInNewTab, boolean isBackgroundTabNavigation, boolean isMainFrame, String nativeClientPackageName, boolean hasUserGesture, boolean shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent) { @@ -108,7 +108,7 @@ } /** @return The redirect handler. */ - public TabRedirectHandler getRedirectHandler() { + public RedirectHandler getRedirectHandler() { return mRedirectHandler; } @@ -172,7 +172,7 @@ private boolean mApplicationMustBeInForeground; /** A redirect handler. */ - private TabRedirectHandler mRedirectHandler; + private RedirectHandler mRedirectHandler; /** Whether the intent should force a new tab to open. */ private boolean mOpenInNewTab; @@ -219,7 +219,7 @@ } /** Sets a tab redirect handler. */ - public Builder setRedirectHandler(TabRedirectHandler handler) { + public Builder setRedirectHandler(RedirectHandler handler) { mRedirectHandler = handler; return this; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/DEPS new file mode 100644 index 0000000..1bc3de68 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/DEPS
@@ -0,0 +1,3 @@ +include_rules = { + "+chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle", +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTask.java index c50e7c0..b6e8ef4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTask.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTask.java
@@ -14,6 +14,7 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.chrome.browser.DeviceConditions; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; @@ -163,7 +164,12 @@ if (!contentHost.isEmpty()) { PrefetchPrefs.setNotificationLastShownTime(getCurrentTimeMillis()); - PrefetchedPagesNotifier.getInstance().showNotification(contentHost); + if (ChromeFeatureList.isEnabled( + ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION)) { + PrefetchNotificationServiceBridge.getInstance().schedule(contentHost); + } else { + PrefetchedPagesNotifier.getInstance().showNotification(contentHost); + } } // There is either no fresh content, or we just showed a notification - which implies there
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchNotificationServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchNotificationServiceBridge.java new file mode 100644 index 0000000..18f4cb19 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchNotificationServiceBridge.java
@@ -0,0 +1,67 @@ +// 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. + +package org.chromium.chrome.browser.offlinepages.prefetch; + +import android.content.Context; + +import org.chromium.base.ContextUtils; +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.JNINamespace; +import org.chromium.base.annotations.NativeMethods; +import org.chromium.chrome.browser.download.DownloadOpenSource; +import org.chromium.chrome.browser.download.DownloadUtils; + +/** + * Glue @link{OfflineNotificationBackgroundTask} and PrefetchNotificationService in native side. + */ +@JNINamespace("offline_pages::prefetch") +public class PrefetchNotificationServiceBridge { + private static final class LazyHolder { + private static final PrefetchNotificationServiceBridge INSTANCE = + new PrefetchNotificationServiceBridge(); + } + + private PrefetchNotificationServiceBridge() {} + + public static PrefetchNotificationServiceBridge getInstance() { + return LazyHolder.INSTANCE; + } + + /** + * Schedules the prefetch notification using notification scheduler framework. + * @param origin The origin of the prefetched page. + */ + public void schedule(String origin) { + Context context = ContextUtils.getApplicationContext(); + String title = String.format( + context.getString( + org.chromium.chrome.R.string.offline_pages_prefetch_notification_title), + context.getString(org.chromium.chrome.R.string.app_name)); + String text = String.format( + context.getString( + org.chromium.chrome.R.string.offline_pages_prefetch_notification_text), + origin); + PrefetchNotificationServiceBridgeJni.get().schedule(title, text); + } + + @NativeMethods + interface Natives { + /** + * Schedules a prefetch notification through scheduling system. + * @param title The title string of notification context. + * @param message The body string of notification context. + */ + void schedule(String title, String message); + } + + /** + * Launches Download Home and show offline pages panel. + */ + @CalledByNative + private static void launchDownloadHome() { + DownloadUtils.showDownloadManager(null, null, + DownloadOpenSource.OFFLINE_CONTENT_NOTIFICATION, true /*showPrefetchedContent*/); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java index aff93c1f7..98d212b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
@@ -63,10 +63,12 @@ public static class VersionConfig { public final String latestVersion; public final String downloadUrl; + public final int serverDate; - protected VersionConfig(String latestVersion, String downloadUrl) { + protected VersionConfig(String latestVersion, String downloadUrl, int serverDate) { this.latestVersion = latestVersion; this.downloadUrl = downloadUrl; + this.serverDate = serverDate; } } @@ -76,6 +78,7 @@ static final String PREF_INSTALL_SOURCE = "installSource"; static final String PREF_LATEST_VERSION = "latestVersion"; static final String PREF_MARKET_URL = "marketURL"; + static final String PREF_SERVER_DATE = "serverDate"; static final String PREF_PERSISTED_REQUEST_ID = "persistedRequestID"; static final String PREF_SEND_INSTALL_EVENT = "sendInstallEvent"; static final String PREF_TIMESTAMP_FOR_NEW_REQUEST = "timestampForNewRequest"; @@ -85,6 +88,8 @@ static final int MIN_API_JOB_SCHEDULER = Build.VERSION_CODES.M; + private static final int UNKNOWN_DATE = -2; + /** Whether or not the Omaha server should really be contacted. */ private static boolean sIsDisabled; @@ -125,6 +130,7 @@ private long mTimestampOfInstall; private long mTimestampForNextPostAttempt; private long mTimestampForNewRequest; + private int mServerDate; private String mInstallSource; protected VersionConfig mVersionConfig; protected boolean mSendInstallEvent; @@ -242,8 +248,9 @@ currentTimestamp, mTimestampOfInstall, mCurrentRequest.isSendInstallEvent()); String version = VersionNumberGetter.getInstance().getCurrentlyUsedVersion(getContext()); - String xml = getRequestGenerator().generateXML( - sessionID, version, installAgeInDays, mCurrentRequest); + String xml = getRequestGenerator().generateXML(sessionID, version, installAgeInDays, + mVersionConfig == null ? UNKNOWN_DATE : mVersionConfig.serverDate, + mCurrentRequest); // Send the request to the server & wait for a response. String response = postRequest(currentTimestamp, xml); @@ -538,10 +545,14 @@ versionConfig == null ? "" : versionConfig.latestVersion); editor.putString( OmahaBase.PREF_MARKET_URL, versionConfig == null ? "" : versionConfig.downloadUrl); + if (versionConfig != null) { + editor.putInt(OmahaBase.PREF_SERVER_DATE, versionConfig.serverDate); + } } static VersionConfig getVersionConfig(SharedPreferences sharedPref) { return new VersionConfig(sharedPref.getString(OmahaBase.PREF_LATEST_VERSION, ""), - sharedPref.getString(OmahaBase.PREF_MARKET_URL, "")); + sharedPref.getString(OmahaBase.PREF_MARKET_URL, ""), + sharedPref.getInt(OmahaBase.PREF_SERVER_DATE, -2)); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/RequestGenerator.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/RequestGenerator.java index de8922a..f59540e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/RequestGenerator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/RequestGenerator.java
@@ -70,7 +70,7 @@ * with some additional dummy values supplied. */ public String generateXML(String sessionID, String versionName, long installAge, - RequestData data) throws RequestFailureException { + int lastCheckDate, RequestData data) throws RequestFailureException { XmlSerializer serializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); try { @@ -86,6 +86,7 @@ serializer.attribute(null, "sessionid", "{" + sessionID + "}"); serializer.attribute(null, "installsource", data.getInstallSource()); serializer.attribute(null, "userid", "{" + getDeviceID() + "}"); + serializer.attribute(null, "dedup", "uid"); // Set up <os platform="android"... /> serializer.startTag(null, "os"); @@ -124,9 +125,11 @@ serializer.startTag(null, "updatecheck"); serializer.endTag(null, "updatecheck"); - // Set up <ping active="1" /> + // Set up <ping active="1" rd="..." ad="..." /> serializer.startTag(null, "ping"); serializer.attribute(null, "active", "1"); + serializer.attribute(null, "ad", String.valueOf(lastCheckDate)); + serializer.attribute(null, "rd", String.valueOf(lastCheckDate)); serializer.endTag(null, "ping"); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/ResponseParser.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/ResponseParser.java index 573c9eb..2d4f063 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/ResponseParser.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/ResponseParser.java
@@ -15,7 +15,7 @@ * * Expects XML formatted like: * <?xml version="1.0" encoding="UTF-8"?> - * <daystart elapsed_seconds="65524"/> + * <daystart elapsed_days="4804" elapsed_seconds="65524"/> * <app appid="{appid}" status="ok"> * <updatecheck status="ok"> * <urls> @@ -58,6 +58,7 @@ private final boolean mStrictParsingMode; private Integer mDaystartSeconds; + private Integer mDaystartDays; private String mAppStatus; private String mUpdateStatus; @@ -86,7 +87,7 @@ XMLParser parser = new XMLParser(xml); Node rootNode = parser.getRootNode(); parseRootNode(rootNode); - return new VersionConfig(getNewVersion(), getURL()); + return new VersionConfig(getNewVersion(), getURL(), getDaystartDays()); } public int getDaystartSeconds() { @@ -94,6 +95,11 @@ return mDaystartSeconds; } + public int getDaystartDays() { + if (mDaystartDays == null) return 0; + return mDaystartDays; + } + public String getNewVersion() { return mNewVersion; } @@ -181,6 +187,7 @@ private boolean parseDaystartNode(Node node) throws RequestFailureException { try { mDaystartSeconds = Integer.parseInt(node.attributes.get("elapsed_seconds")); + mDaystartDays = Integer.parseInt(node.attributes.get("elapsed_days")); } catch (NumberFormatException e) { return logError(node, RequestFailureException.ERROR_PARSE_DAYSTART); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilder.java index ce6b13e..55df79b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilder.java
@@ -10,7 +10,7 @@ import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; -import android.text.style.StyleSpan; +import android.text.style.TextAppearanceSpan; import androidx.core.app.NotificationManagerCompat; @@ -138,8 +138,9 @@ SpannableStringBuilder builder = new SpannableStringBuilder(); SpannableString nameString = new SpannableString(permission.name); - final StyleSpan boldSpan = new StyleSpan(android.graphics.Typeface.BOLD); - nameString.setSpan(boldSpan, 0, nameString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + final TextAppearanceSpan span = + new TextAppearanceSpan(mContext, R.style.TextAppearance_TextMediumThick_Primary); + nameString.setSpan(span, 0, nameString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); builder.append(nameString); builder.append(" – "); // en-dash.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS index 866c9b40..796d5933 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
@@ -13,9 +13,9 @@ "+chrome/android/java/src/org/chromium/chrome/browser/ui/TabObscuringHandler.java", "+chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java", "+chrome/browser/flags", - "+chrome/browser/android/lifecycle", "+chrome/browser/preferences", "+chrome/browser/ui/android/native_page", + "+chrome/lib/lifecycle/public/android", "+components/browser_ui/styles/android", "+components/browser_ui/widget/android", "+content/public/android/java/src/org/chromium/content_public",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabRedirectHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabRedirectHandler.java index 92f1222..c8df1b7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabRedirectHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabRedirectHandler.java
@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.LaunchIntentDispatcher; import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider; import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.components.external_intents.RedirectHandler; import org.chromium.ui.base.PageTransition; import java.util.HashSet; @@ -29,7 +30,7 @@ /** * This class contains the logic to determine effective navigation/redirect. */ -public class TabRedirectHandler extends EmptyTabObserver implements UserData { +public class TabRedirectHandler extends EmptyTabObserver implements UserData, RedirectHandler { private static final Class<TabRedirectHandler> USER_DATA_KEY = TabRedirectHandler.class; /** * An invalid entry index. @@ -55,7 +56,7 @@ private int mInitialNavigationType; private int mLastCommittedEntryIndexBeforeStartingNavigation; - private boolean mShouldNotOverrideUrlLoadingUntilNewUrlLoading; + private boolean mShouldNotOverrideUrlLoadingOnCurrentRedirectChain; /** * Returns {@link TabRedirectHandler} that hangs on to a given {@link Tab}. @@ -167,11 +168,12 @@ mInitialNavigationType = NAVIGATION_TYPE_NONE; mIsOnEffectiveRedirectChain = false; mLastCommittedEntryIndexBeforeStartingNavigation = 0; - mShouldNotOverrideUrlLoadingUntilNewUrlLoading = false; + mShouldNotOverrideUrlLoadingOnCurrentRedirectChain = false; } - public void setShouldNotOverrideUrlLoadingUntilNewUrlLoading() { - mShouldNotOverrideUrlLoadingUntilNewUrlLoading = true; + @Override + public void setShouldNotOverrideUrlLoadingOnCurrentRedirectChain() { + mShouldNotOverrideUrlLoadingOnCurrentRedirectChain = true; } /** @@ -232,7 +234,7 @@ } mIsOnEffectiveRedirectChain = false; mLastCommittedEntryIndexBeforeStartingNavigation = lastCommittedEntryIndex; - mShouldNotOverrideUrlLoadingUntilNewUrlLoading = false; + mShouldNotOverrideUrlLoadingOnCurrentRedirectChain = false; } else if (mInitialNavigationType != NAVIGATION_TYPE_NONE) { // Redirect chain starts from the second url loading. mIsOnEffectiveRedirectChain = true; @@ -242,6 +244,7 @@ /** * @return whether on effective intent redirect chain or not. */ + @Override public boolean isOnEffectiveIntentRedirectChain() { return mInitialNavigationType == NAVIGATION_TYPE_FROM_INTENT && mIsOnEffectiveRedirectChain; } @@ -250,8 +253,8 @@ * @param hasExternalProtocol whether the destination URI has an external protocol or not. * @return whether we should stay in Chrome or not. */ - public boolean shouldStayInChrome(boolean hasExternalProtocol) { - return shouldStayInChrome(hasExternalProtocol, false); + public boolean shouldStayInApp(boolean hasExternalProtocol) { + return shouldStayInApp(hasExternalProtocol, false); } /** @@ -260,22 +263,23 @@ * Chrome. * @return whether we should stay in Chrome or not. */ - public boolean shouldStayInChrome(boolean hasExternalProtocol, - boolean isForTrustedCallingApp) { + @Override + public boolean shouldStayInApp(boolean hasExternalProtocol, boolean isForTrustedCallingApp) { // http://crbug/424029 : Need to stay in Chrome for an intent heading explicitly to Chrome. // http://crbug/881740 : Relax stay in Chrome restriction for Custom Tabs. return (mIsInitialIntentHeadingToChrome && !hasExternalProtocol) - || shouldNavigationTypeStayInChrome(isForTrustedCallingApp); + || shouldNavigationTypeStayInApp(isForTrustedCallingApp); } /** * @return Whether the current navigation is of the type that should always stay in Chrome. */ - public boolean shouldNavigationTypeStayInChrome() { - return shouldNavigationTypeStayInChrome(false); + @Override + public boolean shouldNavigationTypeStayInApp() { + return shouldNavigationTypeStayInApp(false); } - private boolean shouldNavigationTypeStayInChrome(boolean isForTrustedCallingApp) { + private boolean shouldNavigationTypeStayInApp(boolean isForTrustedCallingApp) { // http://crbug.com/162106: Never leave Chrome from a refresh. if (mInitialNavigationType == NAVIGATION_TYPE_FROM_RELOAD) return true; @@ -290,6 +294,7 @@ /** * @return Whether this navigation is initiated by a Custom Tabs {@link Intent}. */ + @Override public boolean isFromCustomTabIntent() { return mIsCustomTabIntent; } @@ -297,6 +302,7 @@ /** * @return whether navigation is from a user's typing or not. */ + @Override public boolean isNavigationFromUserTyping() { return mInitialNavigationType == NAVIGATION_TYPE_FROM_USER_TYPING; } @@ -304,8 +310,9 @@ /** * @return whether we should stay in Chrome or not. */ + @Override public boolean shouldNotOverrideUrlLoading() { - return mShouldNotOverrideUrlLoadingUntilNewUrlLoading; + return mShouldNotOverrideUrlLoadingOnCurrentRedirectChain; } /** @@ -325,6 +332,7 @@ /** * @return whether |intent| has a new resolver against |mIntentHistory| or not. */ + @Override public boolean hasNewResolver(List<ResolveInfo> resolvingInfos) { if (mInitialIntent == null) { return !resolvingInfos.isEmpty();
diff --git a/chrome/android/javatests/DEPS b/chrome/android/javatests/DEPS index 6d7182f..7a170d4a 100644 --- a/chrome/android/javatests/DEPS +++ b/chrome/android/javatests/DEPS
@@ -1,12 +1,12 @@ include_rules = [ "+chrome/app", - "+chrome/browser/android/lifecycle", "+chrome/browser/preferences/android/java", "+chrome/browser/thumbnail/generator/android/java", "+chrome/browser/ui/android/appmenu", "-chrome/browser/ui/android/appmenu/internal", "+chrome/browser/ui/messages/android/java", "+chrome/browser/util/android", + "+chrome/lib/lifecycle/public", "+components/autofill/android/java/src/org/chromium/components/autofill", "+components/background_task_scheduler/android/java", "+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/OmahaBaseTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/OmahaBaseTest.java index 3e88f81..826a3e42 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/OmahaBaseTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/OmahaBaseTest.java
@@ -622,7 +622,7 @@ String response = ""; response += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; response += "<response protocol=\"3.0\" server=\"prod\">"; - response += "<daystart elapsed_seconds=\"12345\"/>"; + response += "<daystart elapsed_days=\"4088\" elapsed_seconds=\"12345\"/>"; response += "<app appid=\""; response += (isOnTablet ? MockRequestGenerator.UUID_TABLET : MockRequestGenerator.UUID_PHONE);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/RequestGeneratorTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/RequestGeneratorTest.java index 1f8b308..a9fa50ab 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/RequestGeneratorTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/RequestGeneratorTest.java
@@ -185,6 +185,7 @@ String requestId = "random_request_id"; String version = "1.2.3.4"; long installAge = 42; + int dateLastActive = 4088; MockRequestGenerator generator = new MockRequestGenerator(context, deviceType, signInStatus); @@ -192,7 +193,7 @@ String xml = null; try { RequestData data = new RequestData(sendInstallEvent, 0, requestId, INSTALL_SOURCE); - xml = generator.generateXML(sessionId, version, installAge, data); + xml = generator.generateXML(sessionId, version, installAge, dateLastActive, data); } catch (RequestFailureException e) { Assert.fail("XML generation failed."); } @@ -220,6 +221,8 @@ Assert.assertFalse("Update check and install event are mutually exclusive", checkForTag(xml, "event")); checkForAttributeAndValue(xml, "ping", "active", "1"); + checkForAttributeAndValue(xml, "ping", "rd", String.valueOf(dateLastActive)); + checkForAttributeAndValue(xml, "ping", "ad", String.valueOf(dateLastActive)); Assert.assertTrue("Update check and install event are mutually exclusive", checkForTag(xml, "updatecheck")); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java index 719273d1..42fc9fd 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateTest.java
@@ -208,6 +208,6 @@ Assert.assertTrue(mNavParamHistory.get(2).isExternalProtocol); Assert.assertFalse(mNavParamHistory.get(2).isMainFrame); Assert.assertTrue( - mExternalNavParamHistory.get(2).getRedirectHandler().shouldStayInChrome(true)); + mExternalNavParamHistory.get(2).getRedirectHandler().shouldStayInApp(true, false)); } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabRedirectHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabRedirectHandlerTest.java index f06ec7d..23c4f4f 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabRedirectHandlerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabRedirectHandlerTest.java
@@ -226,15 +226,15 @@ fooIntent.putExtra(Browser.EXTRA_APPLICATION_ID, TEST_PACKAGE_NAME); handler.updateIntent(fooIntent); Assert.assertFalse(handler.isOnNavigation()); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, false, false, 0, 0); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -242,8 +242,8 @@ SystemClock.sleep(1); handler.updateNewUrlLoading( PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -284,15 +284,15 @@ fooIntent.setPackage(TEST_PACKAGE_NAME); handler.updateIntent(fooIntent); Assert.assertFalse(handler.isOnNavigation()); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading(TRANS_TYPE_OF_LINK_FROM_INTENT, false, false, 0, 0); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -300,8 +300,8 @@ SystemClock.sleep(1); handler.updateNewUrlLoading( PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -319,7 +319,7 @@ Assert.assertFalse(handler.shouldNotOverrideUrlLoading()); handler.updateNewUrlLoading(PageTransition.LINK, false, true, 0, 0); - handler.setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); + handler.setShouldNotOverrideUrlLoadingOnCurrentRedirectChain(); handler.updateNewUrlLoading(PageTransition.LINK, true, false, 0, 0); Assert.assertTrue(handler.shouldNotOverrideUrlLoading()); @@ -333,7 +333,7 @@ Assert.assertFalse(handler.shouldNotOverrideUrlLoading()); handler.updateNewUrlLoading(PageTransition.LINK, false, true, 0, 0); - handler.setShouldNotOverrideUrlLoadingUntilNewUrlLoading(); + handler.setShouldNotOverrideUrlLoadingOnCurrentRedirectChain(); // Effective redirection occurred. handler.updateNewUrlLoading(PageTransition.LINK, false, false, 0, 1); @@ -358,17 +358,17 @@ TabRedirectHandler handler = TabRedirectHandler.create(); handler.updateIntent(sYtIntent); Assert.assertFalse(handler.isOnNavigation()); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading( PageTransition.LINK, false, false, SystemClock.elapsedRealtime(), 0); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); handler.updateNewUrlLoading( PageTransition.LINK, false, false, SystemClock.elapsedRealtime(), 1); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -376,8 +376,8 @@ SystemClock.sleep(1); handler.updateNewUrlLoading( PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -391,17 +391,17 @@ TabRedirectHandler handler = TabRedirectHandler.create(); handler.updateIntent(sYtIntent); Assert.assertFalse(handler.isOnNavigation()); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading( PageTransition.RELOAD, false, false, SystemClock.elapsedRealtime(), 0); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); handler.updateNewUrlLoading( PageTransition.LINK, false, false, SystemClock.elapsedRealtime(), 1); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -409,8 +409,8 @@ SystemClock.sleep(1); handler.updateNewUrlLoading( PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -424,17 +424,17 @@ TabRedirectHandler handler = TabRedirectHandler.create(); handler.updateIntent(sYtIntent); Assert.assertFalse(handler.isOnNavigation()); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); handler.updateNewUrlLoading(PageTransition.FORM_SUBMIT | PageTransition.FORWARD_BACK, false, true, SystemClock.elapsedRealtime(), 0); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); handler.updateNewUrlLoading( PageTransition.LINK, false, false, SystemClock.elapsedRealtime(), 1); - Assert.assertTrue(handler.shouldStayInChrome(false)); - Assert.assertTrue(handler.shouldStayInChrome(true)); + Assert.assertTrue(handler.shouldStayInApp(false)); + Assert.assertTrue(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(0, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -442,8 +442,8 @@ SystemClock.sleep(1); handler.updateNewUrlLoading( PageTransition.LINK, false, true, SystemClock.elapsedRealtime(), 2); - Assert.assertFalse(handler.shouldStayInChrome(false)); - Assert.assertFalse(handler.shouldStayInChrome(true)); + Assert.assertFalse(handler.shouldStayInApp(false)); + Assert.assertFalse(handler.shouldStayInApp(true)); Assert.assertTrue(handler.isOnNavigation()); Assert.assertEquals(2, handler.getLastCommittedEntryIndexBeforeStartingNavigation()); @@ -479,8 +479,8 @@ Assert.assertFalse(handler.isOnNavigation()); handler.updateNewUrlLoading(PageTransition.CLIENT_REDIRECT, false, false, 0, 0); - Assert.assertTrue(handler.shouldStayInChrome(true)); - Assert.assertFalse(handler.shouldStayInChrome(true, true)); + Assert.assertTrue(handler.shouldStayInApp(true)); + Assert.assertFalse(handler.shouldStayInApp(true, true)); } private static class TestPackageManager extends MockPackageManager {
diff --git a/chrome/android/junit/DEPS b/chrome/android/junit/DEPS index 9ec15a5c..2b48467 100644 --- a/chrome/android/junit/DEPS +++ b/chrome/android/junit/DEPS
@@ -1,6 +1,6 @@ include_rules = [ "!clank/java/src/org/chromium/chrome/browser/AppHooksImpl.java", - "+chrome/browser/android/lifecycle", + "+chrome/lib/lifecycle/public", "+chrome/browser/flags/android", "+chrome/browser/image_fetcher", "+chrome/browser/preferences/android/java",
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTaskUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTaskUnitTest.java index e8dba30..94822de 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTaskUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/prefetch/OfflineNotificationBackgroundTaskUnitTest.java
@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.DeviceConditions; import org.chromium.chrome.browser.ShadowDeviceConditions; import org.chromium.chrome.browser.background_task_scheduler.ChromeNativeBackgroundTaskDelegate; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.BrowserParts; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; @@ -58,6 +59,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; /** Unit tests for {@link OfflineNotificationBackgroundTask}. */ @@ -116,6 +118,10 @@ @SuppressWarnings("unchecked") @Before public void setUp() { + Map<String, Boolean> features = new HashMap<>(); + features.put(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION, false); + ChromeFeatureList.setTestFeatures(features); + MockitoAnnotations.initMocks(this); mOfflineNotificationBackgroundTask.setDelegate(new ChromeNativeBackgroundTaskDelegate()); // Set up the context.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omaha/ResponseParserTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omaha/ResponseParserTest.java index b01e87f..1339117 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/omaha/ResponseParserTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omaha/ResponseParserTest.java
@@ -49,9 +49,9 @@ * @param updateStatus Status to use for the <updatecheck> element. * @return The completed XML. */ - private static String createTestXML(String xmlProtocol, String elapsedSeconds, - String appStatus, boolean addInstall, boolean addPing, String updateStatus, - String updateUrl) { + private static String createTestXML(String xmlProtocol, String elapsedDays, + String elapsedSeconds, String appStatus, boolean addInstall, boolean addPing, + String updateStatus, String updateUrl) { StringWriter writer = new StringWriter(); try { XmlSerializer serializer = Xml.newSerializer(); @@ -66,9 +66,14 @@ } // Create <daystart> element. - if (elapsedSeconds != null) { + if (elapsedSeconds != null || elapsedDays != null) { serializer.startTag(null, "daystart"); - serializer.attribute(null, "elapsed_seconds", elapsedSeconds); + if (elapsedDays != null) { + serializer.attribute(null, "elapsed_days", elapsedDays); + } + if (elapsedSeconds != null) { + serializer.attribute(null, "elapsed_seconds", elapsedSeconds); + } serializer.endTag(null, "daystart"); } @@ -190,13 +195,14 @@ */ private static void runSuccessTest(String appStatus, boolean addInstall, boolean addPing, String updateStatus) throws RequestFailureException { - String xml = - createTestXML("3.0", "12345", appStatus, addInstall, addPing, updateStatus, URL); + String xml = createTestXML( + "3.0", "4088", "12345", appStatus, addInstall, addPing, updateStatus, URL); ResponseParser parser = new ResponseParser(true, "{APP_ID}", addInstall, addPing, updateStatus != null); OmahaBase.VersionConfig versionConfig = parser.parseResponse(xml); Assert.assertEquals("elapsed_seconds doesn't match.", 12345, parser.getDaystartSeconds()); + Assert.assertEquals("elapsed_days doesn't match.", 4088, parser.getDaystartDays()); Assert.assertEquals("<app> status doesn't match.", appStatus, parser.getAppStatus()); Assert.assertEquals( "<updatecheck> status doesn't match.", updateStatus, parser.getUpdateStatus()); @@ -297,64 +303,79 @@ @Test @Feature({"Omaha"}) public void testBadResponseProtocol() { - String xml = - createTestXML("2.0", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "2.0", "4088", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_RESPONSE, false, false, false); } @Test @Feature({"Omaha"}) public void testFailMissingDaystart() { - String xml = - createTestXML("3.0", null, APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", null, null, APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + runFailureTest(xml, RequestFailureException.ERROR_PARSE_DAYSTART, false, false, true); + } + + @Test + @Feature({"Omaha"}) + public void testFailMissingDaystartSeconds() { + String xml = createTestXML( + "3.0", "4088", null, APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + runFailureTest(xml, RequestFailureException.ERROR_PARSE_DAYSTART, false, false, true); + } + + @Test + @Feature({"Omaha"}) + public void testFailMissingDaystartDays() { + String xml = createTestXML( + "3.0", null, "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_DAYSTART, false, false, true); } @Test @Feature({"Omaha"}) public void testAppTagMissingUpdatecheck() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, true, false, null, URL); + String xml = createTestXML("3.0", "4088", "12345", APP_STATUS_OK, true, false, null, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_UPDATECHECK, true, false, true); } @Test @Feature({"Omaha"}) public void testAppTagUnexpectedUpdatecheck() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, true, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", "4088", "12345", APP_STATUS_OK, true, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_UPDATECHECK, true, false, false); } @Test @Feature({"Omaha"}) public void testAppTagMissingPing() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", "4088", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_PING, false, true, true); } @Test @Feature({"Omaha"}) public void testAppTagUnexpectedPing() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, false, true, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", "4088", "12345", APP_STATUS_OK, false, true, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_PING, false, false, true); } @Test @Feature({"Omaha"}) public void testAppTagMissingInstall() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", "4088", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_EVENT, true, false, true); } @Test @Feature({"Omaha"}) public void testAppTagUnexpectedInstall() { - String xml = - createTestXML("3.0", "12345", APP_STATUS_OK, true, false, UPDATE_STATUS_OK, URL); + String xml = createTestXML( + "3.0", "4088", "12345", APP_STATUS_OK, true, false, UPDATE_STATUS_OK, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_EVENT, false, false, true); } @@ -362,7 +383,7 @@ @Feature({"Omaha"}) public void testAppTagStatusError() { String xml = - createTestXML("3.0", "12345", APP_STATUS_ERROR, false, false, null, URL); + createTestXML("3.0", "4088", "12345", APP_STATUS_ERROR, false, false, null, URL); runFailureTest(xml, RequestFailureException.ERROR_PARSE_APP, false, false, false); } @@ -370,7 +391,7 @@ @Feature({"Omaha"}) public void testUpdatecheckMissingUrl() { String xml = createTestXML( - "3.0", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, null); + "3.0", "4088", "12345", APP_STATUS_OK, false, false, UPDATE_STATUS_OK, null); runFailureTest(xml, RequestFailureException.ERROR_PARSE_URLS, false, false, true); } }
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index a89f22b..8402da7c 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-82.0.4079.0_rc-r1-merged.afdo.bz2 \ No newline at end of file +chromeos-chrome-amd64-82.0.4081.0_rc-r1-merged.afdo.bz2 \ No newline at end of file
diff --git a/chrome/android/public/profiles/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java b/chrome/android/public/profiles/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java index 13991e4b..2ca6977 100644 --- a/chrome/android/public/profiles/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java +++ b/chrome/android/public/profiles/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java
@@ -23,10 +23,28 @@ ProfileKeyJni.get().isOffTheRecord(mNativeProfileKeyAndroid, ProfileKey.this); } + /** + * Returns the original profile key, even if it is called in an incognito context. + * + * https://crbug.com/1041781: Remove after auditing and replacing all usecases. + * + * @deprecated use {@link #getLastUsedRegularProfileKey()} instead. + */ + @Deprecated public static ProfileKey getLastUsedProfileKey() { + return getLastUsedRegularProfileKey(); + } + + /** + * Returns the regular (i.e., not off-the-record) profile key. + * + * Note: The function name uses the "last used" terminology for consistency with + * profile_manager.cc which supports multiple regular profiles. + */ + public static ProfileKey getLastUsedRegularProfileKey() { // TODO(mheikal): Assert at least reduced mode is started when https://crbug.com/973241 is // fixed. - return (ProfileKey) ProfileKeyJni.get().getLastUsedProfileKey(); + return (ProfileKey) ProfileKeyJni.get().getLastUsedRegularProfileKey(); } public ProfileKey getOriginalKey() { @@ -55,7 +73,7 @@ @NativeMethods interface Natives { - Object getLastUsedProfileKey(); + Object getLastUsedRegularProfileKey(); Object getOriginalKey(long nativeProfileKeyAndroid, ProfileKey caller); boolean isOffTheRecord(long nativeProfileKeyAndroid, ProfileKey caller); }
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index ac04535..ae23a51 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -1070,8 +1070,7 @@ Sign-in failed because your access token could not be retrieved. Please check your network connection and try again. </message> <message name="IDS_LOGIN_SAML_INTERSTITIAL_MESSAGE" desc="Message to show on the SAML interstitial page to tell the user to continue signing in using their enterprise account."> - This device is managed by <ph name="BEGIN_BOLD"><strong></ph><ph name="DOMAIN">$1<ex>acmecorp.com</ex></ph><ph name="END_BOLD"></strong></ph>. - Please click "Next" to continue signing in to your <ph name="BEGIN_BOLD"><strong></ph><ph name="DOMAIN">$1<ex>acmecorp.com</ex></ph><ph name="END_BOLD"></strong></ph> account. + This device is managed by <ph name="DOMAIN">$1<ex>acmecorp.com</ex></ph> and requires you to sign in every time. </message> <message name="IDS_LOGIN_SAML_INTERSTITIAL_CHANGE_ACCOUNT_LINK_TEXT" desc="Text of the link that allows the user to change the login account."> Sign in with a different account
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 955ac33..0667b923 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -5904,6 +5904,9 @@ <message name="IDS_PASSWORD_MANAGER_UPDATE_BUTTON" desc="Label for the 'update' button in the Update Password infobar. This infobar asks if the user wishes to update the saved password for a site to a new password the user has just entered; the button applies the suggested update."> Update </message> + <message name="IDS_PASSWORD_SAVING_STATUS_TOGGLE" desc="Label for the toggle that shows whether saving passwords for the current site is enabled or disabled."> + Save passwords for this site + </message> <message name="IDS_PASSWORD_MANAGER_ACCESSORY_PASSWORD_DESCRIPTION" desc="Description for a field containing a password that belongs to a user."> Password for <ph name="username">$1<ex>Alexander</ex></ph> </message>
diff --git a/chrome/app/generated_resources_grd/IDS_PASSWORD_SAVING_STATUS_TOGGLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PASSWORD_SAVING_STATUS_TOGGLE.png.sha1 new file mode 100644 index 0000000..0f60f3a --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_PASSWORD_SAVING_STATUS_TOGGLE.png.sha1
@@ -0,0 +1 @@ +7831bd7cea14eba60618f36107cbfe9963bb913f \ 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 4d073fc..e51a5749 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Het programdata gehuisves</translation> <translation id="1776712937009046120">Voeg gebruiker by</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Hierdie toestel word bestuur deur <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Klik asseblief "Volgende" om voort te gaan om by jou <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-rekening aan te meld.</translation> <translation id="1779652936965200207">Voer asseblief hierdie wagsleutel op "<ph name="DEVICE_NAME" />" in:</translation> <translation id="177989070088644880">Program (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Maak groep toe</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Kon nie drukkers lys nie. Sommige van jou drukkers het dalk nie suksesvol by <ph name="CLOUD_PRINT_NAME" /> geregistreer nie.</translation> <translation id="2203682048752833055">Soekenjin wat in die <ph name="BEGIN_LINK" />adresbalk<ph name="END_LINK" /> gebruik word</translation> <translation id="2204034823255629767">Lees en verander enigiets wat jy invoer</translation> -<translation id="220792432208469595">Stuur gebruik- en diagnostiese data. Hierdie toestel stuur tans diagnostiese, toestel- en programgebruikdata outomaties na Google toe. Dit sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. Hierdie instelling word deur die eienaar afgedwing. As jou bykomende Web- en Programaktiwiteit-instelling aangeskakel is, kan hierdie data in jou Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Voer hierdie PIN-kode op "<ph name="DEVICE_NAME" />" in.</translation> <translation id="2212565012507486665">Laat webkoekies toe</translation> <translation id="2213140827792212876">Verwyder deling</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Die alternatiewe blaaier kon nie oopgemaak word nie</translation> <translation id="2804667941345577550">Jy sal by hierdie werf afgemeld word, insluitend in oop oortjies</translation> <translation id="2804680522274557040">Kamera is afgeskakel</translation> -<translation id="2805539617243680210">Jy's gereed!</translation> <translation id="2805646850212350655">Microsoft-enkripterende lêerstelsel</translation> <translation id="2805756323405976993">Programme</translation> <translation id="2805770823691782631">Bykomende besonderhede</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Skermkiekie geneem</translation> <translation id="3742666961763734085">Kan nie 'n organisatoriese eenheid met daardie naam kry nie. Probeer asseblief weer.</translation> <translation id="3744111561329211289">Agtergrondsinkronisering</translation> +<translation id="3747077776423672805">Gaan na Instellings > Google Play Winkel > Bestuur Android-voorkeure > Programme of Programbestuurder om programme te verwyder. Tik dan op die program wat jy wil deïnstalleer (jy sal dalk links of regs moet swiep om die program te kry). Tik dan op Deïnstalleer of Deaktiveer.</translation> <translation id="3748026146096797577">Nie gekoppel nie</translation> <translation id="3752582316358263300">OK …</translation> <translation id="3752673729237782832">My toestelle</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Jy gebruik tans 'n sleutel wat nie by hierdie webwerf geregistreer is nie</translation> <translation id="4788092183367008521">Gaan jou netwerkverbinding na en probeer weer.</translation> <translation id="4792711294155034829">Meld 'n probleem aan …</translation> -<translation id="4795022432560487924">Stuur gebruik- en diagnostiese data. Help om jou kind se Android-ervaring beter te maak deur diagnostiese, toestel- en programgebruikdata outomaties na Google toe te stuur. Dit sal nie gebruik word om jou kind te identifiseer nie en sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. Hierdie instelling word deur die eienaar afgedwing. Die eienaar kan kies om diagnostiese en gebruikdata vir hierdie toestel na Google toe te stuur. As die bykomende Web- en Programaktiwiteit-instelling vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webbladsy, net HTML</translation> <translation id="4798236378408895261">Heg <ph name="BEGIN_LINK" />Bluetooth-loglêers<ph name="END_LINK" /> aan (Google intern)</translation> <translation id="4801448226354548035">Versteek rekeninge</translation> @@ -3592,7 +3588,6 @@ <translation id="5941711191222866238">Maak kleiner</translation> <translation id="5942964813783878922">Jou <ph name="DEVICE_TYPE" /> sal ná hierdie opdatering herbegin. Toekomstige sagteware- en sekuriteitopdaterings sal outomaties geïnstalleer word.</translation> <translation id="5944869793365969636">Skandeer QR-kode</translation> -<translation id="5945188205370098537">Stuur gebruik- en diagnostiese data. Help om jou Android-ervaring beter te maak deur diagnostiese, toestel- en programgebruikdata outomaties na Google toe te stuur. Dit sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. As jou bykomende Web- en Programaktiwiteit-instelling aangeskakel is, kan hierdie data in jou Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Verslag-ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Kan nie lêer ontleed nie</translation> <translation id="5955282598396714173">Jou wagwoord het verval. Meld af en meld dan weer aan om dit te verander.</translation> @@ -3778,6 +3773,7 @@ <translation id="6185132558746749656">Toestelligging</translation> <translation id="6186394685773237175">Geen gekompromitteerde wagwoorde gekry nie</translation> <translation id="6195693561221576702">Hierdie toestel kan nie in vanlyn demonstrasiemodus opgestel word nie.</translation> +<translation id="6196640612572343990">Blokkeer derdeparty-webkoekies</translation> <translation id="6196854373336333322">Die uitbreiding "<ph name="EXTENSION_NAME" />" het beheer oor jou instaanbedienerinstellings oorgeneem, wat beteken dat dit enigiets wat jy aanlyn doen, kan verander of breek of daarop kan inluister. As jy nie seker is hoekom hierdie verandering plaasgevind het nie, wil jy dit waarskynlik nie hê nie.</translation> <translation id="6198102561359457428">Meld af en meld dan weer aan …</translation> <translation id="6198252989419008588">Verander PIN</translation> @@ -4444,7 +4440,6 @@ <translation id="711902386174337313">Lees die lys van jou aangemelde toestelle</translation> <translation id="7120865473764644444">Kon nie aan die sinkroniseringbediener koppel nie. Herprobeer tans …</translation> <translation id="7121362699166175603">Vee geskiedenis en outovoltooide items in die adresbalk uit. Jou Google-rekening kan dalk ander vorme van blaaigeskiedenis hê by <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Stuur gebruik- en diagnostiese data. Hierdie toestel stuur tans diagnostiese, toestel- en programgebruikdata outomaties na Google toe. Dit sal nie gebruik word om jou kind te identifiseer nie en sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. As die bykomende Web- en Programaktiwiteit-instelling vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Ontwikkelaarmodus</translation> <translation id="7121728544325372695">Slimaandagstrepe</translation> <translation id="7123360114020465152">Nie meer gesteun nie</translation> @@ -4559,7 +4554,6 @@ <translation id="7280041992884344566">Iets was fout terwyl Chrome na skadelike sagteware gesoek het</translation> <translation id="7280649757394340890">Teks-na-spraak-steminstellings</translation> <translation id="7280877790564589615">Toestemming versoek</translation> -<translation id="7281268427852119151">Gebruik jou blaaigeskiedenis om Search, advertensies en ander Google-dienste te personaliseer</translation> <translation id="7282992757463864530">Inligtingbalk</translation> <translation id="7287143125007575591">Toegang geweier.</translation> <translation id="7287411021188441799">Laai verstekagtergrond terug</translation> @@ -5233,7 +5227,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Skuif oortjie na nuwe venster toe}other{Skuif oortjies na nuwe venster toe}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">bladsy</translation> -<translation id="8180294223783876911">Stuur gebruik- en diagnostiese data. Hierdie toestel stuur tans diagnostiese, toestel- en programgebruikdata outomaties na Google toe. Dit sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. As jou bykomende Web- en Programaktiwiteit-instelling aangeskakel is, kan hierdie data in jou Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" kan prente, video en klanklêers by die gemerkte liggings lees en uitvee.</translation> <translation id="8181215761849004992">Kan nie by die domein aansluit nie. Gaan jou rekening na om te sien of jy genoeg voorregte het om toestelle by te voeg.</translation> <translation id="8182105986296479640">Program reageer nie.</translation> @@ -5255,7 +5248,6 @@ <translation id="8203732864715032075">Stuur vir jou kennisgewings en stel dit as verstek om hierdie rekenaar vir Boodskappe te onthou. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" word deur jou ouer geblokkeer. Vra jou ouer vir toestemming om hierdie program te gebruik.</translation> <translation id="820568752112382238">Mees besoekte werwe</translation> -<translation id="8206581664590136590">Stuur gebruik- en diagnostiese data. Help om jou kind se Android-ervaring beter te maak deur diagnostiese, toestel- en programgebruikdata outomaties na Google toe te stuur. Dit sal nie gebruik word om jou kind te identifiseer nie en sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. As die bykomende Web- en Programaktiwiteit-instelling vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blues</translation> <translation id="8206859287963243715">Sellulêr</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Aflaai is aan die gang}other{Aflaaie is aan die gang}}</translation> @@ -5801,7 +5793,6 @@ <translation id="8912362522468806198">Google-rekening</translation> <translation id="8912793549644936705">Rek</translation> <translation id="8912810933860534797">Aktiveer outoskandering</translation> -<translation id="891365694296252935">Stuur gebruik- en diagnostiese data. Hierdie toestel stuur tans diagnostiese, toestel- en programgebruikdata outomaties na Google toe. Dit sal nie gebruik word om jou kind te identifiseer nie en sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. Hierdie instelling word deur die eienaar afgedwing. As bykomende Web- en Programaktiwiteit vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Laai tans voorstel</translation> <translation id="8916476537757519021">Incognitosubraam: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verifieer tans jou sekuriteitsleutel …</translation> @@ -5938,7 +5929,6 @@ <translation id="9101691533782776290">Begin program</translation> <translation id="9102610709270966160">Aktiveer uitbreiding</translation> <translation id="9103868373786083162">Druk om terug te gaan, kontekskieslys om geskiedenis te sien</translation> -<translation id="9104396740804929809">Stuur gebruik- en diagnostiese data. Help om jou Android-ervaring beter te maak deur diagnostiese, toestel- en programgebruikdata outomaties na Google toe te stuur. Dit sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. Hierdie instelling word deur die eienaar afgedwing. Die eienaar kan kies om diagnostiese en gebruikdata vir hierdie toestel na Google toe te stuur. As jou bykomende Web- en Programaktiwiteit-instelling aangeskakel is, kan hierdie data in jou Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Vee lêers uit toestelberging om spasie beskikbaar te maak.</translation> <translation id="9109283579179481106">Koppel aan selnetwerk</translation> <translation id="9111102763498581341">Ontsluit</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 082239f4..c9e66d4 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">የተስተናገደ የመተግበሪያ ውሂብ</translation> <translation id="1776712937009046120">ተጠቃሚን ያክሉ</translation> <translation id="1776883657531386793"><ph name="OID" />፦ <ph name="INFO" /></translation> -<translation id="1777310661937894236">ይህ መሣሪያ በ<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ነው የሚቀናበረው። - ወደ የእርስዎ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> መለያ መግባቱን ለመቀጠል እባክዎ «ቀጣይ»ን ጠቅ ያድርጉ።</translation> <translation id="1779652936965200207">እባክዎ ይህን የይለፍ ቁልፍ በ«<ph name="DEVICE_NAME" />» ላይ ያስገቡ፦</translation> <translation id="177989070088644880">መተግበሪያ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ቡድንን ዝጋ</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">አታሚዎችን መዘርዘር ላይ ችግር ነበር። አንዳንድ አታሚዎችዎ በተሳካ ሁኔታ <ph name="CLOUD_PRINT_NAME" /> ላይ አልተመዘገቡም።</translation> <translation id="2203682048752833055">በ<ph name="BEGIN_LINK" />አድራሻ አሞሌው<ph name="END_LINK" /> ላይ ሥራ ላይ የዋለው የፍለጋ ፕሮግራም</translation> <translation id="2204034823255629767">የሚተይቡትን ማንኛውም ነገር ያነብባል እና ይቀይራል</translation> -<translation id="220792432208469595">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። ይህ መሣሪያ በአሁኑ ጊዜ በራስ-ሰር የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ ወደ Google እየላከ ነው። ይህ የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። ይህ ቅንብር በባለቤቱ ተፈጻሚ ይደረጋል። የእርስዎ የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ቅንብር በርቶ ከሆነ ይህ ውሂብ በGoogle መለያዎ ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="220858061631308971">እባክዎ ይህን የፒን ኮድ በ«<ph name="DEVICE_NAME" />» ላይ ያስገቡት፦</translation> <translation id="2212565012507486665">ኩኪዎችን ፍቀድ</translation> <translation id="2213140827792212876">ማጋራትን አስወግድ</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">ተለዋጩ አሳሽ ሊከፈት አይችልም</translation> <translation id="2804667941345577550">ክፍት ትሮችን ጨምሮ፣ ከዚህ ጣቢያ ዘግተው እንዲወጡ ይደረጋሉ</translation> <translation id="2804680522274557040">ካሜራ ጠፍቷል</translation> -<translation id="2805539617243680210">በሙሉ ተዘጋጅተዋል!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> <translation id="2805770823691782631">ተጨማሪ ዝርዝሮች</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">ቅጽበታዊ ገጽ እይታ ተነስቷል</translation> <translation id="3742666961763734085">ይህ ስም ያለው ድርጅታዊ አሃድ ማግኘት አልተቻለም። እባክዎ እንደገና ይሞክሩ።</translation> <translation id="3744111561329211289">የዳራ ስምረት</translation> +<translation id="3747077776423672805">መተግበሪያዎችን ለማስወገድ ወደ ቅንብሮች > > Google Play መደብር > የAndroid ምርጫዎችን ያስተዳድሩ >መተግበሪያዎች ወይም የመተግበሪያ አስተዳዳሪ ይሂዱ። ከዚያ ለማራገፍ የሚፈልጉትን መተግበሪያ መታ ያድርጉ (መተግበሪያውን ለማግኘት ወደ ቀኝ ወይም ወደ ግራ ማንሸራተት ሊኖርብዎት ይችላል)። ከዚያ አራግፍ ወይም አሰናክል የሚለውን መታ ያድርጉ።</translation> <translation id="3748026146096797577">አልተገናኘም</translation> <translation id="3752582316358263300">እሺ...</translation> <translation id="3752673729237782832">የእኔ መሣሪያዎች</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">በዚህ ድር ጣቢያ ያልተመዘገበ የደህንነት ቁልፍ እየተጠቀሙ ነው</translation> <translation id="4788092183367008521">እባክዎ የአውታረ መረብ ግንኙነትዎን ይፈትሹትና እንደገና ይሞክሩ።</translation> <translation id="4792711294155034829">&ችግር ሪፖርት ያድርጉ...</translation> -<translation id="4795022432560487924">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ በራስ-ሰር ወደ Google በመላክ የልጅዎን የAndroid ተሞክሮ እንዲሻሻል ያግዙ። ይህ ልጅዎን ለመለየት ስራ ላይ አይውልም፣ እና የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። ይህ ቅንብር በባለቤቱ ተፈጻሚ ይደረጋል። ባለቤቱ የዚህ መሣሪያ የምርመራ እና የአጠቃቀም ለGoogle ለመላክ ሊመርጥ ይችላሉ። የተጨማሪ የድር እና መተግበሪያ እንቅስቃሴ ቅንብር ለልጅዎ በርቶ ከሆነ ይህ ውሂብ ወደ የGoogle መለያቸው ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ድረ-ገጽ፣ ኤች ቲ ኤም ኤል ብቻ</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />የብሉቱዝ ምዝግብ ማስታወሻ<ph name="END_LINK" />ን ያያይዙ (Google ውስጣዊ)</translation> <translation id="4801448226354548035">መለያዎችን ደብቅ</translation> @@ -3358,6 +3354,7 @@ <translation id="5649053991847567735">ራስ-ሰር ውርዶች</translation> <translation id="5653154844073528838">የተቀመጡ <ph name="PRINTER_COUNT" /> አታሚዎች አልዎት።</translation> <translation id="5656845498778518563">ግብረመልስ ወደ Google ይላኩ</translation> +<translation id="5657156137487675418">ሁሉንም ኩኪዎች ፍቀድ</translation> <translation id="5657667036353380798">ውጫዊ ቅጥያው እንዲጫን የchrome ስሪት <ph name="MINIMUM_CHROME_VERSION" /> ወይም ከዚያ በላይ መጫን አለበት።</translation> <translation id="5658415415603568799">ለተጨማሪ ደህንነት ሲባል Smart Lock ከ20 ሰዓቶች በኋላ የእርስዎን የይለፍ ቃል እንዲያስገቡ ይጠይቀዎታል።</translation> <translation id="5659593005791499971">ኢሜይል</translation> @@ -3564,7 +3561,6 @@ <translation id="5941711191222866238">አሳንስ</translation> <translation id="5942964813783878922">የእርስዎ <ph name="DEVICE_TYPE" /> ከዚህ ዝማኔ በኋላ እንደገና ይጀምራል። ወደፊት ሶፍትዌር እና ደህንነት ዝማኔዎች በራስሰር ይጫናሉ።</translation> <translation id="5944869793365969636">የQR ኮድ ይቃኙ</translation> -<translation id="5945188205370098537">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ በራስ-ሰር ወደ በራስ-ሰር ወደ Google በመላክ የAndroid ተሞክሮዎ እንዲሻሻል ያግዙ። ይህ የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። የእርስዎ የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ቅንብር በርቶ ከሆነ ይህ ውሂብ በGoogle መለያዎ ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">የሪፖርት መታወቂያ <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ፋይልን መተንተን አልተቻለም</translation> <translation id="5955282598396714173">የእርስዎ የይለፍ ቃል ጊዜው አልፎበታል። ለመቀየር እባክዎ ዘግተው ይውጡና እንደገና ይግቡ።</translation> @@ -3748,6 +3744,7 @@ <translation id="6185132558746749656">የመሣሪያ አካባቢ</translation> <translation id="6186394685773237175">ምንም የተጠለፈ የይለፍ ቃል አልተገኘም</translation> <translation id="6195693561221576702">ይህ መሣሪያ በመስመር ውጭ የቅንጭብ ማሳያ ሁነታ ላይ ሊቀናበር አይችልም።</translation> +<translation id="6196640612572343990">የሦስተኛ ወገን ኩኪዎችን አግድ</translation> <translation id="6196854373336333322">ይህ «<ph name="EXTENSION_NAME" />» ቅጥያ የተኪ ቅንብሮችዎን ተቆጣጥሯል፣ ይሄ ማለት መስመር ላይ የሚያደርጉት ማንኛውም ነገር ሊቀይር፣ ሊሰብር ወይም በድብቅ ሊከታተል ይችላል። ይሄ ለውጥ ለምን እንደተከሰተ እርግጠኛ ካልሆኑ የማይፈልጉት ነገር ሳይሆን አይቀርም።</translation> <translation id="6198102561359457428">ዘግተው ይውጡና ከዚያ እንደገና ይግቡ...</translation> <translation id="6198252989419008588">ፒን ይቀይሩ</translation> @@ -4411,7 +4408,6 @@ <translation id="711902386174337313">በመለያ የገቡ የእርስዎ መሣሪያዎች ዝርዝር ያነብባል</translation> <translation id="7120865473764644444">ከስምረት አገልጋዩ ጋር መገናኘት አልተቻለም። ዳግም በመሞከር ላይ...</translation> <translation id="7121362699166175603">በአድራሻ አሞሌው ላይ ታሪክን እና ራስ-ማጠናቀቆችን ያጸዳል። የእርስዎ Google መለያ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ አይነቶች ሊኖሩት ይችላል።</translation> -<translation id="7121389946694989825">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። ይህ መሣሪያ በአሁኑ ጊዜ በራስ-ሰር የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ ወደ Google እየላከ ነው። ይህ ልጅዎን ለመለየት ስራ ላይ አይውልም፣ እና የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። የተጨማሪ የድር እና መተግበሪያ እንቅስቃሴ ቅንብር ለልጅዎ በርቶ ከሆነ ይህ ውሂብ ወደ የGoogle መለያቸው ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">የገንቢ ሁነታ</translation> <translation id="7121728544325372695">ዘመናዊ ዳሾች</translation> <translation id="7123360114020465152">ከአሁን በኋላ አይደገፍም</translation> @@ -5198,7 +5194,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ትር ወደ አዲስ መስኮት ውሰድ}one{ትሮችን ወደ አዲስ መስኮት ውሰድ}other{ትሮችን ወደ አዲስ መስኮት ውሰድ}}</translation> <translation id="8179976553408161302">አስገባ</translation> <translation id="8180239481735238521">ገፅ</translation> -<translation id="8180294223783876911">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። ይህ መሣሪያ በአሁኑ ጊዜ በራስ-ሰር የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ ወደ Google እየላከ ነው። ይህ የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። የእርስዎ የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ቅንብር በርቶ ከሆነ ይህ ውሂብ በGoogle መለያዎ ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">«<ph name="EXTENSION" />» ምልክት በተደረገባቸው አካባቢዎች ላይ ያሉ ምስሎችን፣ ቪዲዮ እና የድምጽ ፋይሎችን ማንበብ እና መሰረዝ ይችላል።</translation> <translation id="8181215761849004992">ጎራውን መቀላቀል አልተቻለም። መሣሪያዎችን ለማክከል በቂ ልዩ መብቶች ካለዎት ለማረጋገጥ መለያዎን ይመልከቱ።</translation> <translation id="8182105986296479640">መተግበሪያ ምላሽ እየሰጠ አይደለም።</translation> @@ -5220,7 +5215,6 @@ <translation id="8203732864715032075">ማሳወቂያዎችን ለእርስዎ ይልካል እና ይህን ኮምፒውተር ለመልዕክቶች በነባሪነት ያስታውሳል። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation> <translation id="8204129288640092672">«<ph name="APP_NAME" />» በወላጅዎ ታግዷል። ወላጅዎ ይህን መተግበሪያ እንዲጠቀሙ ፈቃድ ይጠይቋቸው።</translation> <translation id="820568752112382238">በብዛት የተጎበኙ ጣቢያዎች</translation> -<translation id="8206581664590136590">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ በራስ-ሰር ወደ Google በመላክ የልጅዎን የAndroid ተሞክሮ እንዲሻሻል ያግዙ። ይህ ልጅዎን ለመለየት ስራ ላይ አይውልም፣ እና የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። የተጨማሪ የድር እና መተግበሪያ እንቅስቃሴ ቅንብር ለልጅዎ በርቶ ከሆነ ይህ ውሂብ ወደ የGoogle መለያቸው ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">ሴሉላር</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ማውረድ በሂደት ላይ ነው}one{ውርዶች በሂደት ላይ ናቸው}other{ውርዶች በሂደት ላይ ናቸው}}</translation> @@ -5760,7 +5754,6 @@ <translation id="8912362522468806198">የGoogle መለያ</translation> <translation id="8912793549644936705">ወጥር</translation> <translation id="8912810933860534797">ራስ-ቃኝን አንቃ</translation> -<translation id="891365694296252935">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። ይህ መሣሪያ በአሁኑ ጊዜ በራስ-ሰር የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ ወደ Google እየላከ ነው። ይህ ልጅዎን ለመለየት ስራ ላይ አይውልም፣ እና የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። ይህ ቅንብር በባለቤቱ ተፈጻሚ ይደረጋል። የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ለልጅዎ በርቶ ከሆነ ይህ ውሂብ አሁን በGoogle መለያቸው ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">የጥቆማ አስተያየት በመጫን ላይ</translation> <translation id="8916476537757519021">ማንነት የማያሳውቅ ንዑስ ክፈፍ፦ <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">የደህንነት ቁልፍዎን በማረጋገጥ ላይ...</translation> @@ -5897,7 +5890,6 @@ <translation id="9101691533782776290">መተግበሪያ አስጀምር</translation> <translation id="9102610709270966160">ቅጥያውን አንቃ</translation> <translation id="9103868373786083162">ለመመለስ ይጫኑ፣ ታሪክን ለማየት የአውድ ምናሌ</translation> -<translation id="9104396740804929809">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ በራስ-ሰር ወደ በራስ-ሰር ወደ Google በመላክ የAndroid ተሞክሮዎ እንዲሻሻል ያግዙ። ይህ የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። ይህ ቅንብር በባለቤቱ ተፈጻሚ ይደረጋል። ባለቤቱ የዚህ መሣሪያ የምርመራ እና የአጠቃቀም ለGoogle ለመላክ ሊመርጥ ይችላሉ። የእርስዎ የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ቅንብር በርቶ ከሆነ ይህ ውሂብ በGoogle መለያዎ ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ባዶ ቦታ ለማስለቀቅ ከመሣሪያ ማከማቻ ፋይሎችን ይሰርዙ።</translation> <translation id="9109283579179481106">ወደ ሞባይል አውታረመረብ ያገናኙ</translation> <translation id="9111102763498581341">ክፈት</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 31fa4319..2a1c72b 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">بيانات التطبيق المستضافة</translation> <translation id="1776712937009046120">إضافة مستخدم</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">يخضع هذا الجهاز لإدارة <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - يُرجى النقر على "التالي" لمواصلة تسجيل الدخول إلى حسابك على <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">يُرجى إدخال مفتاح المرور هذا على "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">تطبيق (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">إغلاق المجموعة</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">حدثت مشكلة أثناء إدراج الطابعات. ربما لا يتم تسجيل بعض الطابعات بنجاح في <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">محرك البحث الذي تم استخدامه في <ph name="BEGIN_LINK" />شريط العناوين<ph name="END_LINK" /></translation> <translation id="2204034823255629767">قراءة وتغيير أي شيء تكتبه</translation> -<translation id="220792432208469595">يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. سيساعد ذلك في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. ويفرض المالك هذا الإعداد. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات"، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="220858061631308971">يُرجى إدخال رمز رقم التعريف الشخصي هذا على "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">السماح بملفات تعريف الارتباط</translation> <translation id="2213140827792212876">إزالة المشاركة</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">تعذَّر فتح المتصفّح البديل</translation> <translation id="2804667941345577550">سيتم تسجيل خروجك من هذا الموقع الإلكتروني، بما في ذلك ضمن علامات التبويب المفتوحة.</translation> <translation id="2804680522274557040">تم إيقاف الكاميرا</translation> -<translation id="2805539617243680210">انتهت عملية الإعداد.</translation> <translation id="2805646850212350655">نظام ترميز الملفات لـ Microsoft</translation> <translation id="2805756323405976993">التطبيقات</translation> <translation id="2805770823691782631">تفاصيل إضافية</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">تم التقاط لقطة الشاشة</translation> <translation id="3742666961763734085">لم يتم إيجاد وحدة تنظيمية تحمل هذا الاسم. يُرجى إعادة المحاولة.</translation> <translation id="3744111561329211289">المزامنة في الخلفية</translation> +<translation id="3747077776423672805">لإزالة التطبيقات، انتقِل إلى "الإعدادات" > "متجر Google Play" > إدارة إعدادات Android المفضّلة > "التطبيقات" أو "مدير التطبيقات". ثم انقر على التطبيق الذي تريد إلغاء تثبيته (عليك التمرير السريع لليمين أو اليسار للعثور على التطبيق)، ثم انقر على "إلغاء التثبيت" أو "إيقاف".</translation> <translation id="3748026146096797577">غير متصل</translation> <translation id="3752582316358263300">حسنًا...</translation> <translation id="3752673729237782832">أجهزتي</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">أنت تستخدم مفتاح أمان غير مُسجَّل مع هذا الموقع الإلكتروني</translation> <translation id="4788092183367008521">يُرجى التحقُّق من الاتصال بالشبكة وإعادة المحاولة.</translation> <translation id="4792711294155034829">&الإبلاغ عن مشكلة...</translation> -<translation id="4795022432560487924">يمكنك إرسال بيانات الاستخدام والتشخيص. يمكنك المساعدة في تحسين تجربة نظام التشغيل Android على حسابك الفرعي من خلال إرسال بيانات التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام ذلك لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. ويفرض المالك هذا الإعداد. قد يختار المالك إرسال بيانات الاستخدام والتشخيص لهذا الجهاز إلى Google. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="479536056609751218">صفحة الويب، HTML فقط</translation> <translation id="4798236378408895261">إرفاق <ph name="BEGIN_LINK" />سجلّات بلوتوث<ph name="END_LINK" /> (Google الداخلي)</translation> <translation id="4801448226354548035">إخفاء الحسابات</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">عمليات التنزيل التلقائية</translation> <translation id="5653154844073528838">يتوفّر لديك <ph name="PRINTER_COUNT" /> طابعة محفوظة.</translation> <translation id="5656845498778518563">إرسال تعليقات إلى Google</translation> +<translation id="5657156137487675418">السماح بملفّات تعريف الارتباط كلّها</translation> <translation id="5657667036353380798">تتطلب الإضافة الخارجية تثبيت chrome الإصدار <ph name="MINIMUM_CHROME_VERSION" /> أو أعلى.</translation> <translation id="5658415415603568799">لمزيد من الأمان، سيطلب منك Smart Lock إدخال كلمة مرورك بعد مرور 20 ساعة.</translation> <translation id="5659593005791499971">البريد الإلكتروني</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">تصغير</translation> <translation id="5942964813783878922">ستتم إعادة تشغيل <ph name="DEVICE_TYPE" /> بعد هذا التحديث. سيتم تثبيت تحديثات البرامج والأمان المستقبلية تلقائيًا.</translation> <translation id="5944869793365969636">مسح رمز الاستجابة السريعة</translation> -<translation id="5945188205370098537">يمكنك إرسال بيانات الاستخدام والتشخيص. يمكنك المساعدة في تحسين تجربة نظام التشغيل Android من خلال إرسال بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. سيساعد ذلك في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات"، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">معرف التقرير: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">تعذَّر تحليل الملف</translation> <translation id="5955282598396714173">انتهت صلاحية كلمة المرور. يُرجى الخروج ثم تسجيل الدخول مجددًا لتغييرها.</translation> @@ -3750,6 +3746,7 @@ <translation id="6185132558746749656">موقع الجهاز</translation> <translation id="6186394685773237175">لم يتم العثور على أي كلمات مرور محتمَل تعرّضها للاختراق.</translation> <translation id="6195693561221576702">لا يمكن إعداد الجهاز في الوضع التجريبي بلا إنترنت.</translation> +<translation id="6196640612572343990">حظر ملفات تعريف الارتباط للجهات الخارجية</translation> <translation id="6196854373336333322">أصبح بإمكان الإضافة "<ph name="EXTENSION_NAME" />" التحكم في إعدادات الخادم الوكيل التابعة لك، مما يعني أن بإمكانها تغيير أي إجراء لك على الإنترنت أو قطعه أو التجسس عليه. إذا كنت غير متيقن من سبب حدوث هذا التغيير، فأنت لا ترغب فيه على الأرجح.</translation> <translation id="6198102561359457428">الخروج ثم إعادة تسجيل الدخول...</translation> <translation id="6198252989419008588">تغيير رقم التعريف الشخصي</translation> @@ -4413,7 +4410,6 @@ <translation id="711902386174337313">الاطّلاع على قائمة بالأجهزة التي سجلت الدخول</translation> <translation id="7120865473764644444">تعذر الاتصال بخادم المزامنة. جارٍ إعادة المحاولة...</translation> <translation id="7121362699166175603">يتم محو السجلّ وعمليات الإكمال التلقائي في شريط العناوين. وقد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح في <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام ذلك لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">وضع مطوِّر البرامج</translation> <translation id="7121728544325372695">الشرطات الذكية</translation> <translation id="7123360114020465152">الطابعة ليست مدعومة بعد الآن.</translation> @@ -5196,7 +5192,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{نقل علامة تبويب واحدة إلى نافذة جديدة}zero{نقل علامات تبويب إلى نافذة جديدة}two{نقل علامتَي تبويب إلى نافذة جديدة}few{نقل علامات تبويب إلى نافذة جديدة}many{نقل علامات تبويب إلى نافذة جديدة}other{نقل علامات تبويب إلى نافذة جديدة}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">صفحة</translation> -<translation id="8180294223783876911">يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. سيساعد ذلك في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات"، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">يمكن لـ "<ph name="EXTENSION" />" قراءة الصور والفيديوهات وملفات الصوت في المواقع المحددة وحذفها.</translation> <translation id="8181215761849004992">يتعذَّر ضم الجهاز إلى النطاق. يُرجى التحقُّق من حسابك للتأكُّد من أنّك تحظى بالامتيازات الكافية لإضافة الأجهزة.</translation> <translation id="8182105986296479640">التطبيق لا يستجيب.</translation> @@ -5218,7 +5213,6 @@ <translation id="8203732864715032075">تُرسِل إليك الإشعارات وتتذكر جهاز الكمبيوتر هذا لميزة "الرسائل". <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> <translation id="8204129288640092672">حظَر أحد الوالدَين تطبيق "<ph name="APP_NAME" />". اطلب الإذن من والدك لاستخدام هذا التطبيق.</translation> <translation id="820568752112382238">المواقع الأكثر زيارة</translation> -<translation id="8206581664590136590">يمكنك إرسال بيانات الاستخدام والتشخيص. يمكنك المساعدة في تحسين تجربة نظام التشغيل Android على حسابك الفرعي من خلال إرسال بيانات التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام ذلك لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">موسيقي</translation> <translation id="8206859287963243715">خلوي</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{جارٍ تنزيل عنصر واحد}zero{جارٍ تنزيل عدّة عناصر}two{جارِ تنزيل عنصرين}few{جارٍ تنزيل عدّة عناصر}many{جارٍ تنزيل عدّة عناصر}other{جارٍ تنزيل عدّة عناصر}}</translation> @@ -5758,7 +5752,6 @@ <translation id="8912362522468806198">حساب Google</translation> <translation id="8912793549644936705">تمدد</translation> <translation id="8912810933860534797">تفعيل المسح التلقائي</translation> -<translation id="891365694296252935">يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام ذلك لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. ويفرض المالك هذ الإعداد. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">جارٍ تحميل الاقتراح</translation> <translation id="8916476537757519021">الإطار الفرعي للتصفح المتخفي: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">جارٍ التحقُّق من مفتاح الأمان...</translation> @@ -5895,7 +5888,6 @@ <translation id="9101691533782776290">إطلاق التطبيق</translation> <translation id="9102610709270966160">تفعيل الإضافة</translation> <translation id="9103868373786083162">اضغط للرجوع، وقائمة السياقات لمشاهدة السجلّ.</translation> -<translation id="9104396740804929809">يمكنك إرسال بيانات الاستخدام والتشخيص. يمكنك المساعدة في تحسين تجربة نظام التشغيل Android من خلال إرسال بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. سيساعد ذلك في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. ويفرض المالك هذ الإعداد. قد يختار المالك إرسال بيانات الاستخدام والتشخيص لهذا الجهاز إلى Google. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات"، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">لتفريغ مساحة، احذف الملفات من مساحة تخزين الجهاز.</translation> <translation id="9109283579179481106">الاتصال بشبكة الجوّال</translation> <translation id="9111102763498581341">فتح القفل</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 9bb557e1..920d724f 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">হ’ষ্ট কৰা এপৰ ডেটা</translation> <translation id="1776712937009046120">ব্যৱহাৰকাৰী যোগ কৰক</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">এই ডিভাইচটো <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />এ পৰিচালনা কৰে। - আপোনাৰ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> একাউণ্টত ছাইন ইনৰ প্ৰক্ৰিয়াটো অব্যাহত ৰাখিবলৈ অনুগ্ৰহ কৰি "পৰৱর্তী"ত ক্লিক কৰক।</translation> <translation id="1779652936965200207">অনুগ্ৰহ কৰি এই পাছকীটো "<ph name="DEVICE_NAME" />"ত দিয়ক:</translation> <translation id="177989070088644880">এপ্ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">গোটটো বন্ধ কৰক</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">প্ৰিন্টাৰসমূহ সূচীবদ্ধ কৰাত কিবা সমস্যা হৈছে। আপোনাৰ কিছুমান প্ৰিণ্টাৰ <ph name="CLOUD_PRINT_NAME" />ত পঞ্জীয়ন কৰা নাথাকিব পাৰে।</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ঠিকনাৰ বাৰ<ph name="END_LINK" />ত ব্যৱহাৰ কৰা সন্ধানৰ ইঞ্জিন</translation> <translation id="2204034823255629767">আপুনি টাইপ কৰা যিকোনো সমল পঢ়ক আৰু সলনি কৰক</translation> -<translation id="220792432208469595">ব্যৱহাৰ আৰু ডায়গন'ষ্টিক ডেটা পঠিয়াওক। বর্তমান এই ডিভাইচে স্বয়ংক্ৰিয়ভাৱে Googleলৈ ডায়গন'ষ্টিক, ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আছে। এই কার্যয়ে ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান সামগ্ৰিক ডেটায়েও Google এপ্ আৰু অংশীদাৰক সহায় কৰে, যেনে Android বিকাশকর্তা। এই ছেটিংটো গৰাকীয়ে বলৱৎ কৰিছে। যদি আপোনাৰ অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপৰ ছেটিং অন কৰা হয় তেন্তে এই ডেটা আপোনাৰ Google একাউণ্টত ছেভ হ'ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="220858061631308971">অনুগ্ৰহ কৰি এই পিনক‘ডটো "<ph name="DEVICE_NAME" />"ত দিয়ক:</translation> <translation id="2212565012507486665">কুকিসমূহক অনুমতি দিয়ক</translation> <translation id="2213140827792212876">শ্বেয়াৰ কৰাটো আঁতৰাওক</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">বিকল্প ব্ৰাউজাৰটো খুলিব পৰা নগ'ল</translation> <translation id="2804667941345577550">খোলা থকা টেবসমূহকে ধৰি আপুনি এই ছাইটটোৰ পৰা ছাইন আউট হৈ যাব</translation> <translation id="2804680522274557040">কেমেৰা অফ কৰা আছে</translation> -<translation id="2805539617243680210">আপুনি সম্পূৰ্ণ সাজু!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">এপ্</translation> <translation id="2805770823691782631">অতিৰিক্ত সবিশেষ</translation> @@ -2748,7 +2744,6 @@ <translation id="4785719467058219317">আপুনি ব্যৱহাৰ কৰি থকা সুৰক্ষা চাবিটো এই ৱেবছাইটটোত পঞ্জীকৃত নহয়</translation> <translation id="4788092183367008521">আপোনাৰ নেটৱৰ্ক সংযোগ পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক।</translation> <translation id="4792711294155034829">কোনো সমস্যাৰ বিষয়ে &অভিযোগ কৰক...</translation> -<translation id="4795022432560487924">ব্যৱহাৰ আৰু ডায়গনষ্টিক ডেটা পঠিয়াওক। Googleলৈ স্বয়ংক্ৰিয়ভাৱে ডায়গন’ষ্টিকৰ লগতে ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আপোনাৰ শিশুৰ Android ব্যৱহাৰৰ অভিজ্ঞতা উন্নত কৰক। এই ডেটাখনি আপোনাৰ শিশুক চিনাক্ত কৰিবলৈ ব্যৱহাৰ কৰা নহয় আৰু ই ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। এই ছেটিংটো গৰাকীয়ে বলৱৎ কৰিছে। গৰাকীজনে Googleলৈ ডাইগন‘ষ্টিক আৰু ব্যৱহাৰৰ ডেটা পঠিয়াবলৈ বাছনি কৰিব পাৰিব পাৰে। যদি আপোনাৰ শিশুৰ বাবে অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপ অন কৰা হৈছে, তেন্তে এই ডেটা তেওঁলোকৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ৱেবপৃষ্ঠা, কেৱল HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ব্লুটুথ লগ<ph name="END_LINK" /> (Google অভ্যন্তৰীণ) সংলগ্ন কৰক</translation> <translation id="4801448226354548035">একাউণ্ট লুকুৱাওক</translation> @@ -3580,7 +3575,6 @@ <translation id="5941711191222866238">সৰু কৰক</translation> <translation id="5942964813783878922">আপোনাৰ <ph name="DEVICE_TYPE" /> এই আপডে’ট হোৱাৰ পাছত ৰিষ্টাৰ্ট হ’ব। ভৱিষ্যতৰ ছফ্টৱেৰ আৰু সুৰক্ষাৰ আপডে’টসমূহ স্বয়ংক্ৰিয়ভাৱে ইনষ্টল হ’ব।</translation> <translation id="5944869793365969636">কিউআৰ ক’ড স্কেন কৰক</translation> -<translation id="5945188205370098537">ব্যৱহাৰ আৰু ডায়গন'ষ্টিক ডেটা পঠিয়াওক। Googleলৈ স্বয়ংক্ৰিয়ভাৱে ডায়গন'ষ্টিকৰ লগতে ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আপোনাৰ Androidৰ অভিজ্ঞতা উন্নত কৰক। এইটোৱে ছিষ্টেম তথা এপৰ স্থিৰতা বৃদ্ধি কৰাত আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। যদি আপোনাৰ অতিৰিক্ত ৱেব আৰু এপ্ কাৰ্যকলাপ ছেটিংটো সক্ষম কৰা থাকে, তেন্তে এই ডেটা আপোনাৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ৰিপ’ৰ্টৰ আইডি <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ফাইল পার্ছ কৰিব পৰা নগ’ল</translation> <translation id="5955282598396714173">আপোনাৰ পাছৱৰ্ডটোৰ ম্যাদ উকলিছে। এইটো সলনি কৰিবলৈ অনুগ্ৰহ কৰি ছাইন আউট কৰি আকৌ ছাইন ইন কৰক।</translation> @@ -3766,6 +3760,7 @@ <translation id="6185132558746749656">ডিভাইচৰ অৱস্থান</translation> <translation id="6186394685773237175">হেক হোৱা কোনো পাছৱর্ড পোৱা নাই</translation> <translation id="6195693561221576702">এই ডিভাইচটো অফলাইন ডেম' ম'ডত ছেট আপ কৰিব নোৱাৰি।</translation> +<translation id="6196640612572343990">তৃতীয়-পক্ষৰ কুকিসমূহ অৱৰোধ কৰক</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" এক্সটেনশ্বনটোৱে আপোনাৰ প্ৰক্সিৰ ছেটিংসমূহৰ নিয়ন্ত্ৰণ লৈছে যাৰ অৰ্থ হৈছে ই আপুনি অনলাইনত কৰা যিকোনো কাৰ্য সলনি কৰিব পাৰে, ভাঙিব পাৰে বা গোপনে নজৰ ৰাখিব পাৰে। আপুনি যদি এই সালসলনিখিনি কিয় হৈছে সেয়া নিশ্চিতকৈ নাজানে, আপুনি চাগে সেইখিনি নিবিচাৰে।</translation> <translation id="6198102561359457428">ছাইন আউট কৰি পুনৰ ছাইন ইন কৰক…</translation> <translation id="6198252989419008588">পিন সলনি কৰক</translation> @@ -4428,7 +4423,6 @@ <translation id="711902386174337313">আপুনি ছাইন হৈ থকা ডিভাইচসমূহৰ সূচীখন পঢ়ক</translation> <translation id="7120865473764644444">ছার্ভাৰত সংযোগ কৰিব পৰা নগ’ল। আকৌ চেষ্টা কৰি থকা হৈছে…</translation> <translation id="7121362699166175603">ঠিকনাৰ বাৰত ইতিহাস আৰু স্বয়ংক্ৰিয়ভাৱে পুৰ হোৱা তথ্য মচে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ত আপোনাৰ Google একাউণ্টৰ অন্য প্ৰকাৰৰ ব্ৰাউজিং ইতিহাস থাকিব পাৰে।</translation> -<translation id="7121389946694989825">ব্যৱহাৰ আৰু ডায়গনষ্টিক ডেটা পঠিয়াওক। বর্তমান এই ডিভাইচে স্বয়ংক্ৰিয়ভাৱে Googleলৈ ডায়গন’ষ্টিক, ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আছে। এই ডেটাখিনি আপোনাৰ শিশুক চিনাক্ত কৰিবলৈ ব্যৱহাৰ কৰা নহয় আৰু ই ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। যদি আপোনাৰ শিশুৰ বাবে অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপ অন কৰা হয়, তেন্তে এই ডেটা তেওঁলোকৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">বিকাশকর্তাৰ ম’ড</translation> <translation id="7121728544325372695">স্মাৰ্ট ডেশ্বসমূহ</translation> <translation id="7123360114020465152">এতিয়া আৰু সমৰ্থিত নহয়</translation> @@ -4543,7 +4537,6 @@ <translation id="7280041992884344566">Chromeএ ক্ষতিকাৰক ছফ্টৱেৰ সন্ধান কৰি থকাৰ সময়ত কিবা আসোঁৱাহ হৈছে</translation> <translation id="7280649757394340890">পাঠৰ পৰা কথন-ৰ কণ্ঠস্বৰৰ ছেটিংসমূহ</translation> <translation id="7280877790564589615">অনুমতি বিচাৰি অনুৰোধ কৰা হৈছে</translation> -<translation id="7281268427852119151">Search, বিজ্ঞাপন আৰু অন্য Google সুবিধাসমূহ ব্যক্তিগতকৃত কৰিবলৈ আপোনাৰ ব্ৰাউজিঙৰ ইতিহাস ব্যৱহাৰ কৰক</translation> <translation id="7282992757463864530">ইনফ’বাৰ</translation> <translation id="7287143125007575591">এক্সেছ অস্বীকাৰ কৰা হৈছে।</translation> <translation id="7287411021188441799">ডিফ'ল্ট নেপথ্য পুনঃস্থাপন কৰক</translation> @@ -5215,7 +5208,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{টেবটো নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}one{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}other{টেবসমূহ নতুন ৱিণ্ড’লৈ স্থানান্তৰ কৰক}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">পৃষ্ঠা</translation> -<translation id="8180294223783876911">ব্যৱহাৰ আৰু ডায়গন’ষ্টিক ডেটা পঠিয়াওক। ডিভাইচটোৱে বর্তমান স্বয়ংক্ৰিয়ভাৱে Googleলৈ ডায়েগন’ষ্টিক, ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আছে। এইটোৱে ছিষ্টেম তথা এপৰ স্থিৰতা বৃদ্ধি কৰাত আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান একত্ৰিত তথ্যই Google এপ্ আৰু Android বিকাশকৰ্তাৰ দৰে অংশীদাৰকো সহায় কৰিব। যদি আপোনাৰ অতিৰিক্ত ৱেব আৰু এপ্ কাৰ্যকলাপ ছেটিংটো সক্ষম কৰা থাকে, তেন্তে এই ডেটা আপোনাৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">চিহ্নিত কৰা ফ’ল্ডাৰসমূহত "<ph name="EXTENSION" />"এ প্ৰতিচ্ছবি, ভিডিঅ’ আৰু শব্দৰ ফাইল পঢ়িব আৰু মচিব পাৰে।</translation> <translation id="8181215761849004992">ড’মেইনত যোগদান কৰিব নোৱাৰি। ডিভাইচ যোগ কৰিব পৰাকৈ আপোনাৰ পৰ্যাপ্ত বিশেষাধিকাৰ আছেনে সেয়া জানিবলৈ নিজৰ একাউণ্টটো চাই লওক।</translation> <translation id="8182105986296479640">এপ্লিকেশ্বনটোৱে সঁহাৰি দিয়া নাই।</translation> @@ -5237,7 +5229,6 @@ <translation id="8203732864715032075">আপোনালৈ জাননী পঠিয়াই আৰু বার্তাৰ বাবে এই কম্পিউটাৰক ডিফ’ল্ট হিচাপে মনত ৰাখে। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="8204129288640092672">আপোনাৰ অভিভাৱকে "<ph name="APP_NAME" />" অৱৰোধ কৰিছে। এই এপ্টো ব্যৱহাৰ কৰিবলৈ আপোনাৰ অভিভাৱকৰ পৰা অনুমতি বিচাৰক।</translation> <translation id="820568752112382238">সকলোতকৈ বেছিকৈ চোৱা ছাইটসমূহ</translation> -<translation id="8206581664590136590">ব্যৱহাৰ আৰু ডায়গন’ষ্টিক ডেটা পঠিয়াওক। Googleলৈ স্বয়ংক্ৰিয়ভাৱে ডায়গন'ষ্টিকৰ লগতে ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আপোনাৰ শিশুৰ Android ব্যৱহাৰৰ অভিজ্ঞতা উন্নত কৰক। এই ডেটাখিনি আপোনাৰ শিশুক চিনাক্ত কৰিবলৈ ব্যৱহাৰ কৰা নহয় আৰু ই ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। যদি আপোনাৰ শিশুৰ বাবে অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপ অন কৰা হৈছে, তেন্তে এই ডেটা তেওঁলোকৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">চেলুলাৰ</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ডাউনল’ড হৈ আছে}one{ডাউনল’ড হৈ আছে}other{ডাউনল’ড হৈ আছে}}</translation> @@ -5782,7 +5773,6 @@ <translation id="8912362522468806198">Google একাউণ্ট</translation> <translation id="8912793549644936705">সম্প্ৰসাৰণ কৰক</translation> <translation id="8912810933860534797">স্বয়ং-স্কেন সক্ষম কৰক</translation> -<translation id="891365694296252935">ব্যৱহাৰ আৰু ডায়গন’ষ্টিক ডেটা পঠিয়াওক। ডিভাইচটোৱে বর্তমান স্বয়ংক্ৰিয়ভাৱে Googleলৈ ডায়গন’ষ্টিক, ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আছে। এই ডেটাখিনি আপোনাৰ শিশুক চিনাক্ত কৰিবলৈ ব্যৱহাৰ কৰা নহয় আৰু ই ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। এই ছেটিংটো গৰাকীয়ে বলৱৎ কৰিছে। যদি আপোনাৰ শিশুৰ বাবে অতিৰিক্ত ৱেব আৰু এপৰ কার্যকলাপ অন কৰা হৈছে, তেন্তে এই ডেটা তেওঁলোকৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">পৰামর্শ ল'ড কৰি থকা হৈছে</translation> <translation id="8916476537757519021">ইনক’গনিট’ ছাবফ্ৰেম: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">আপোনাৰ নিৰাপত্তা চাবি সত্যাপন কৰি থকা হৈছে…</translation> @@ -5919,7 +5909,6 @@ <translation id="9101691533782776290">এপ্ লঞ্চ কৰক</translation> <translation id="9102610709270966160">এক্সটেনশ্বন সক্ষম কৰক</translation> <translation id="9103868373786083162">উভতি যাবলৈ টিপক, ইতিহাস চাবলৈ প্ৰসংগ মেনুলৈ যাওক</translation> -<translation id="9104396740804929809">ব্যৱহাৰ আৰু ডায়গন’ষ্টিক ডেটা পঠিয়াওক। Googleলৈ স্বয়ংক্ৰিয়ভাৱে ডায়গন’ষ্টিকৰ লগতে ডিভাইচ আৰু এপ্ ব্যৱহাৰৰ ডেটা পঠিয়াই আপোনাৰ Androidৰ অভিজ্ঞতা উন্নত কৰক। এই কার্যটোৱে ছিষ্টেম আৰু এপৰ স্থিৰতা আৰু অন্য উন্নয়নত সহায় কৰিব। কিছুমান ডেটাৰ সমষ্টিয়ে লগতে Google এপ্ আৰু অংশীদাৰ, যেনে Androidৰ বিকাশকর্তাকো সহায় কৰিব। এই ছেটিংটো গৰাকীয়ে বলৱৎ কৰিছে। গৰাকীজনে Googleলৈ এই ডিভাইচটোৰ ডায়েগন’ষ্টিক আৰু ব্যৱহাৰৰ ডেটা পঠিওৱাৰ সিদ্ধান্ত ল’ব পাৰে। যদি আপোনাৰ অতিৰিক্ত ৱেব আৰু এপ্ কাৰ্যকলাপ ছেটিংটো সক্ষম কৰা থাকে, তেন্তে এই ডেটাখিনি আপোনাৰ Google একাউণ্টত ছেভ কৰা হ’ব পাৰে। <ph name="BEGIN_LINK1" />অধিক জানক<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ঠাই খালী কৰিবলৈ ডিভাইচৰ সঞ্চয়াগাৰৰ পৰা ফাইল মচক।</translation> <translation id="9109283579179481106">ম’বাইল নেটৱৰ্কৰ সৈতে সংযোগ কৰক</translation> <translation id="9111102763498581341">আনলক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index b0d0ced3..e502cc7 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -569,8 +569,6 @@ <translation id="177336675152937177">Aparıcı Tətbiq datası</translation> <translation id="1776712937009046120">İstifadəçi əlavə edin</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Bu cihaz <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tərəfindən idarə olunur. - <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hesabınıza daxil olmaq üçün "Növbəti" düyməsinə toxunun.</translation> <translation id="1779652936965200207">Bu parolu "<ph name="DEVICE_NAME" />" üzərinə daxil edin:</translation> <translation id="177989070088644880">Tətbiq (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Qrupu bağlayın</translation> @@ -883,7 +881,6 @@ <translation id="2202898655984161076">Printerlərin siyahısını tərtib edərkən xəta baş verdi. Bəzi printerləriniz <ph name="CLOUD_PRINT_NAME" /> ilə uğurla qeydiyyat olunmayıb..</translation> <translation id="2203682048752833055">Axtarış sistemi <ph name="BEGIN_LINK" />ünvan panelində<ph name="END_LINK" /> istifadə edildi</translation> <translation id="2204034823255629767">Oxuyun və yazdığınız istənilən şeyi dəyişin</translation> -<translation id="220792432208469595">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərir. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Bu PIN kodu "<ph name="DEVICE_NAME" />" cihazına daxil edin:</translation> <translation id="2212565012507486665">Kukilərə icazə verin</translation> <translation id="2213140827792212876">Paylaşımı silin</translation> @@ -1338,7 +1335,6 @@ <translation id="2804043232879091219">Alternativ brauzeri açmaq mümkün olmadı</translation> <translation id="2804667941345577550">Açıq tablar da daxil olmaqla, bu saytdan çıxmış olacaqsınız</translation> <translation id="2804680522274557040">Kamera deaktivdir</translation> -<translation id="2805539617243680210">Hər şey hazırdır!</translation> <translation id="2805646850212350655">Microsoft Şifrələmə Fayl Sistemi</translation> <translation id="2805756323405976993">Tətbiq</translation> <translation id="2805770823691782631">Əlavə məlumatlar</translation> @@ -2016,6 +2012,7 @@ <translation id="3742055079367172538">Skrinşot çəkildi</translation> <translation id="3742666961763734085">Bu adda təşkilatı vahid tapılmadı. Yenidən cəhd edin.</translation> <translation id="3744111561329211289">Arxa fon sinx</translation> +<translation id="3747077776423672805">Tətbiqləri silmək üçün Ayarlar > Google Play Market > Android tərcihlərini idarə edin > Tətbiqlər və ya Tətbiq meneceri bölməsinə daxil olun. Sonra quraşdırılmasını ləğv etmək istədiyiniz tətbiqə klikləyin (tətbiqi tapmaq üçün sağa və ya sola sürüşdürməlisiniz). Quraşdırılmanı Ləğv Edin və ya Deaktiv Edin seçiminə klikləyin.</translation> <translation id="3748026146096797577">Qoşulmayıb</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Cihazlarım</translation> @@ -2734,7 +2731,6 @@ <translation id="4785719467058219317">Bu veb saytda qeydiyyatda olmayan təhlükəsizlik açarından istifadə edirsiniz</translation> <translation id="4788092183367008521">Şəbəkə bağlantınızı yoxlayıb yenidən cəhd edin.</translation> <translation id="4792711294155034829">Problemi xəbər verin...</translation> -<translation id="4795022432560487924">İstifadə və diaqnostika datasını göndərin. Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərməklə övladınızın Android təcrübəsini təkmilləşdirin. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Sahibi bu cihaz üçün diaqnostika və istifadə datasını Google'a göndərməyi seçə bilər. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Veb səhifə, yalnız HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth Girişləri<ph name="END_LINK" /> əlavə edin (Google daxili)</translation> <translation id="4801448226354548035">Hesabları gizlədin</translation> @@ -3558,7 +3554,6 @@ <translation id="5941711191222866238">Minimallaşdırın</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> bu güncəlləmədən sonra yenidən başlayacaq. Gələcək proqram və təhlükəsizlik güncəlləmələri avtomatik quraşdırılacaq.</translation> <translation id="5944869793365969636">QR kodunu skan edin</translation> -<translation id="5945188205370098537">İstifadə və diaqnostika datasını göndərin. Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərməklə Android təcrübəsini təkmilləşdirin. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Raport ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Faylı təhlil etmək alınmır</translation> <translation id="5955282598396714173">Parolun müddəti bitib. Dəyişmək üçün hesabdan çıxın və təkrar daxil olun.</translation> @@ -3742,6 +3737,7 @@ <translation id="6185132558746749656">Cihaz Məkanı</translation> <translation id="6186394685773237175">Oğurlanmış parol tapılmadı</translation> <translation id="6195693561221576702">Bu cihazı oflayn demo rejimində quraşdırmaq mümkün deyil.</translation> +<translation id="6196640612572343990">Üçüncü tərəf kukiləri blok edin</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" artırması proksi ayarlarınıza nəzarət edir, bu o dəməkdir ki, onlayn etdiyiniz hər bir şey üzərində dəyişdirə, poza və gizli izləyə bilər. Bu dəyişikliyin niyə baş verdiyinə əmin deyilsinizsə, yəqin Siz bunu istəməmisiniz.</translation> <translation id="6198102561359457428">Hesabdan çıxın və yenidən daxil olun...</translation> <translation id="6198252989419008588">PİN kodu dəyişdirin</translation> @@ -4405,7 +4401,6 @@ <translation id="711902386174337313">Hesaba daxil olduğunuz cihazların siyahısına baxın</translation> <translation id="7120865473764644444">Sinxronizasiya serverine qoşula bilmədi. Yenidən cəhd olunur...</translation> <translation id="7121362699166175603">Ünvan penelindəki tarixçə və avtomatik tamamlamanı silir. <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> linkində Google Hesabına məxsus axtarış tarixçəsinin başqa formaları ola bilər.</translation> -<translation id="7121389946694989825">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərir. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Tərtibatçı Rejimi</translation> <translation id="7121728544325372695">Ağıllı Tirelər</translation> <translation id="7123360114020465152">Daha dəstəklənmir</translation> @@ -5186,7 +5181,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Tabeli yeni pəncərəyə köçürün}other{Tabelləri yeni pəncərəyə köçürün}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">səhifə</translation> -<translation id="8180294223783876911">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərir. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" yoxlanılmış məkanlarda şəkil, video və səs fayllarını oxuya və silə bilər.</translation> <translation id="8181215761849004992">Cihaz domenə qoşulmadı.Cihaz əlavə etmək imtiyazınızın olub-olmadığını yoxlamaq üçün hesabınıza baxın.</translation> <translation id="8182105986296479640">Tətbiq cavab vermir.</translation> @@ -5208,7 +5202,6 @@ <translation id="8203732864715032075">Bu kompüteri Mesajlaşma üçün xatırlatmaq məqsədilə ona bildirişlər və defoltlar göndərin. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" valideyniniz tərəfindən bloklanıb. Valideyninizdən bu tətbiqi istifadə etmək üçün icazə istəyin.</translation> <translation id="820568752112382238">Ən çox daxil olduğunuz saytlar</translation> -<translation id="8206581664590136590">İstifadə və diaqnostika datasını göndərin. Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərməklə övladınızın Android təcrübəsini təkmilləşdirin. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blyuz</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Endirmə gözlənilir}other{Endirmə gözlənilir}}</translation> @@ -5746,7 +5739,6 @@ <translation id="8912362522468806198">Google Hesabı</translation> <translation id="8912793549644936705">Dartın</translation> <translation id="8912810933860534797">Avtomatik skanı aktiv edin</translation> -<translation id="891365694296252935">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərir. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti aktiv edilərsə, həmin data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Təklif yüklənir</translation> <translation id="8916476537757519021">Gizli Altkadr: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Təhlükəsizlik açarınız doğrulanır..</translation> @@ -5883,7 +5875,6 @@ <translation id="9101691533782776290">Tətbiqi işə salın</translation> <translation id="9102610709270966160">Artırmanı Aktiv Edin</translation> <translation id="9103868373786083162">Geri qayıtmaq üçün basın və tarixməni görmək üçün kontekst menyuya basın</translation> -<translation id="9104396740804929809">İstifadə və diaqnostika datasını göndərin. Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərməklə Android təcrübəsini təkmilləşdirin. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Sahibi bu cihaz üçün diaqnostika və istifadə datasını Google'a göndərməyi seçə bilər. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Yaddaşı boşaltmaq üçün faylları silin.</translation> <translation id="9109283579179481106">Mobil şəbəkəyə qoşulun</translation> <translation id="9111102763498581341">Kiliddən çıxarın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 3c140e1..02eaf3b 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Даныя размешчанай праграмы</translation> <translation id="1776712937009046120">Дадаванне карыстальніка</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Гэта прылада знаходзіцца пад кіраваннем дамена <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Каб працягнуць уваход ва ўліковы запіс <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, націсніце "Далей".</translation> <translation id="1779652936965200207">Увядзіце гэты ключ доступу на прыладзе "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Праграма (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Закрыць групу</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Узнікла праблема пры падрыхтоўцы спіса прынтараў. Магчыма, некаторыя прынтары не ўдалося зарэгістраваць у <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Пошукавая сістэма, якая выкарыстоўваецца ў <ph name="BEGIN_LINK" />адрасным радку<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Прагляд і змяненне таго, што вы набіраеце</translation> -<translation id="220792432208469595">Адпраўка даных пра выкарыстанне і дыягностыку. Зараз прылада аўтаматычна адпраўляе ў Google даныя дыягностыкі і звесткі аб выкарыстанні прылады і праграм. Яны будуць карысныя для паляпшэння стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Гэта налада ўключана ўладальнікам. Калі налада "Дадатковая гісторыя дзеянняў у інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Увядзіце гэты PIN-код на прыладзе "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Дазволіць файлы cookie</translation> <translation id="2213140827792212876">Спыніць абагульванне</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Не ўдалося адкрыць альтэрнатыўны браўзер</translation> <translation id="2804667941345577550">Будзе выкананы выхад з гэтага сайта, у тым ліку на адкрытых укладках</translation> <translation id="2804680522274557040">Камера выключана</translation> -<translation id="2805539617243680210">Усё гатова!</translation> <translation id="2805646850212350655">Шыфраваная файлавая сістэма Microsoft</translation> <translation id="2805756323405976993">Праграмы</translation> <translation id="2805770823691782631">Падрабязныя звесткі</translation> @@ -2739,7 +2735,6 @@ <translation id="4785719467058219317">Вы выкарыстоўваеце ключ бяспекі, не зарэгістраваны на гэтым вэб-сайце</translation> <translation id="4788092183367008521">Праверце падключэнне да сеткі і паўтарыце спробу.</translation> <translation id="4792711294155034829">&Паведаміць аб праблеме...</translation> -<translation id="4795022432560487924">Адпраўка даных пра выкарыстанне і дыягностыку. Дапамажыце палепшыць функцыянальнасць прылады Android для дзіцяці шляхам аўтаматычнай адпраўкі даных пра дыягностыку, выкарыстанне прылады і праграм у Google. Яны не будуць выкарыстаны для ідэнтыфікацыі асобы дзіцяці, але дапамогуць у паляпшэнні стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Гэта налада ўключана ўладальнікам. Уладальнік можа ўключыць адпраўку даных пра выкарыстанне і дыягностыку гэтай прылады ў Google. Калі для вашага дзіцяці ўключана налада дадатковай гісторыі дзеянняў у інтэрнэце і праграмах, то адпаведныя даныя могуць захоўвацца ў яго Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Вэб-старонка, толькі HTML</translation> <translation id="4798236378408895261">Далучыць <ph name="BEGIN_LINK" />журналы Bluetooth<ph name="END_LINK" /> (для ўнутранага выкарыстання ў Google)</translation> <translation id="4801448226354548035">Схаваць уліковыя запісы</translation> @@ -3565,7 +3560,6 @@ <translation id="5941711191222866238">Згарнуць</translation> <translation id="5942964813783878922">Пасля ўсталявання абнаўлення <ph name="DEVICE_TYPE" /> перазапусціцца. Наступныя версіі праграмнага забеспячэння і абнаўленні сістэмы бяспекі будуць усталёўвацца аўтаматычна.</translation> <translation id="5944869793365969636">Сканіраваць QR-код</translation> -<translation id="5945188205370098537">Адпраўка даных пра выкарыстанне і дыягностыку. Дапамажыце палепшыць функцыянальнасць прылады Android шляхам аўтаматычнай адпраўкі ў Google даных пра дыягностыку, выкарыстанне прылады і праграм. Яны будуць карысныя для паляпшэння стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Калі налада "Дадатковыя дзеянні ў інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Ідэнтыфікатар справаздачы <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Не атрымалася прааналізаваць файл</translation> <translation id="5955282598396714173">Тэрмін дзеяння пароля скончыўся. Для змянення пароля выйдзіце і зноў увайдзіце ва ўліковы запіс.</translation> @@ -3749,6 +3743,7 @@ <translation id="6185132558746749656">Месцазнаходжанне прылады</translation> <translation id="6186394685773237175">Не знойдзена раскрытых пароляў</translation> <translation id="6195693561221576702">Гэту прыладу нельга наладзіць у пазасеткавым дэманстрацыйным рэжыме.</translation> +<translation id="6196640612572343990">Блакіраваць староннія файлы cookie</translation> <translation id="6196854373336333322">Пашырэнне "<ph name="EXTENSION_NAME" />" узяло пад кантроль налады проксі-сервера: яно можа змяняць, пашкоджваць і праслухоўваць усе даныя падчас вашай працы ў інтэрнэце. Калі вы не ведаеце, чаму гэта адбылося, хутчэй за ўсё, гэта непатрэбная вам змена.</translation> <translation id="6198102561359457428">Выйдзіце і ўвайдзіце зноў...</translation> <translation id="6198252989419008588">Змяніць PIN-код</translation> @@ -4412,7 +4407,6 @@ <translation id="711902386174337313">Доступ да спіса прылад, на якіх выкананы ўваход</translation> <translation id="7120865473764644444">Не ўдалося падключыцца да сервера сінхранізацыі. Паўторная спроба...</translation> <translation id="7121362699166175603">Ачышчае гісторыю і гісторыю аўтазапаўнення ў адрасным радку. На сайце <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> размешчаны іншыя формы запісу гісторыі прагляду сайтаў для вашага Уліковага запісу Google.</translation> -<translation id="7121389946694989825">Адпраўка даных пра выкарыстанне і дыягностыку. Зараз прылада аўтаматычна адпраўляе ў Google даныя дыягностыкі і звесткі аб выкарыстанні прылады і праграм. Яны не будуць выкарыстаны для ідэнтыфікацыі асобы дзіцяці, але дапамогуць у паляпшэнні стабільнасці сістэмы і праграм і іншых удасканаленнях. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Калі для вашага дзіцяці ўключана налада "Дадатковыя дзеянні ў інтэрнэце і праграмах", то адпаведныя даныя могуць захоўвацца ў яго Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Рэжым распрацоўшчыка</translation> <translation id="7121728544325372695">Пераўтварэнне працяжнікаў</translation> <translation id="7123360114020465152">Больш не падтрымліваецца</translation> @@ -5194,7 +5188,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Перамясціць укладку ў новае акно}one{Перамясціць укладкі ў новае акно}few{Перамясціць укладкі ў новае акно}many{Перамясціць укладкі ў новае акно}other{Перамясціць укладкі ў новае акно}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">старонка</translation> -<translation id="8180294223783876911">Адпраўка даных пра выкарыстанне і дыягностыку. Зараз прылада аўтаматычна адпраўляе ў Google даныя дыягностыкі і звесткі аб выкарыстанні прылады і праграм. Яны будуць карысныя для паляпшэння стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Калі налада "Дадатковая гісторыя дзеянняў у інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" можа чытаць і выдаляць відарысы, відэа- і аўдыяфайлы ў адзначаных месцах.</translation> <translation id="8181215761849004992">Не ўдаецца далучыцца да дамена. Праверце, ці мае ваш уліковы запіс дастатковыя паўнамоцтвы, каб дадаваць прылады.</translation> <translation id="8182105986296479640">Праграма не адказвае.</translation> @@ -5216,7 +5209,6 @@ <translation id="8203732864715032075">Адпраўляць вам апавяшчэнні і зрабіць гэты камп'ютар стандартным для праграмы "Паведамленні". <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Праграма "<ph name="APP_NAME" />" заблакіравана бацькамі – запытай у іх дазвол на яе выкарыстанне.</translation> <translation id="820568752112382238">Сайты, якія часцей за ўсё наведваліся</translation> -<translation id="8206581664590136590">Адпраўка даных пра выкарыстанне і дыягностыку. Дапамажыце палепшыць функцыянальнасць прылады Android для дзіцяці шляхам аўтаматычнай адпраўкі даных пра дыягностыку, выкарыстанне прылады і праграм у Google. Яны не будуць выкарыстаны для ідэнтыфікацыі асобы дзіцяці, але дапамогуць у паляпшэнні стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Калі для вашага дзіцяці ўключана налада дадатковых дзеянняў у інтэрнэце і праграмах, то адпаведныя даныя могуць захоўвацца ў яго Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блюзавы</translation> <translation id="8206859287963243715">Мабільная сетка</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ажыццяўляецца спампоўка}one{Ажыццяўляюцца спампоўкі}few{Ажыццяўляюцца спампоўкі}many{Ажыццяўляюцца спампоўкі}other{Ажыццяўляюцца спампоўкі}}</translation> @@ -5756,7 +5748,6 @@ <translation id="8912362522468806198">Уліковы запіс Google</translation> <translation id="8912793549644936705">Расцягнуць</translation> <translation id="8912810933860534797">Уключыць аўтаматычнае сканіраванне</translation> -<translation id="891365694296252935">Адпраўка даных пра выкарыстанне і дыягностыку. Зараз прылада аўтаматычна адпраўляе ў Google даныя дыягностыкі і звесткі аб выкарыстанні прылады і праграм. Яны не будуць выкарыстаны для ідэнтыфікацыі асобы дзіцяці, але дапамогуць у паляпшэнні стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Гэта налада ўключана ўладальнікам. Калі налада "Дадатковыя дзеянні ў інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google дзіцяці. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Загрузка прапановы</translation> <translation id="8916476537757519021">Субфрэйм інкогніта: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Ідзе спраўджанне вашага ключа бяспекі…</translation> @@ -5893,7 +5884,6 @@ <translation id="9101691533782776290">Запусціць праграму</translation> <translation id="9102610709270966160">Уключыць пашырэнне</translation> <translation id="9103868373786083162">Націсніце гэту кнопку, каб перайсці назад, кантэкстнае меню – для прагляду гісторыі</translation> -<translation id="9104396740804929809">Адпраўка даных пра выкарыстанне і дыягностыку. Дапамажыце палепшыць функцыянальнасць прылады Android шляхам аўтаматычнай адпраўкі ў Google даных пра дыягностыку, выкарыстанне прылады і праграм. Яны будуць карысныя для паляпшэння стабільнасці сістэмы і праграм і для іншых удасканаленняў. Некаторыя згрупаваныя даныя таксама будуць карысныя для праграм і партнёраў Google, напрыклад распрацоўшчыкаў Android. Гэта налада ўключана ўладальнікам. Уладальнік можа ўключыць адпраўку ў Google даных пра выкарыстанне і дыягностыку гэтай прылады. Калі налада "Дадатковая гісторыя дзеянняў у інтэрнэце і праграмах" уключана, адпаведныя даныя могуць захоўвацца ва Уліковым запісе Google. <ph name="BEGIN_LINK1" />Даведацца больш<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Каб вызваліць месца, выдаліце файлы са сховішча прылады.</translation> <translation id="9109283579179481106">Падключэнне да мабільнай сеткі</translation> <translation id="9111102763498581341">Разблакіраваць</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index a2696f7..29a15db 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">Данни на хостваните приложения</translation> <translation id="1776712937009046120">Добавяне на потребител</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Това устройство се управлява от <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Моля, кликнете върху „Напред“, за да продължите с влизането в профила си в(ъв) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Моля, въведете този ключ за достъп на „<ph name="DEVICE_NAME" />“:</translation> <translation id="177989070088644880">Приложение (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Затваряне на групата</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">При изреждането на принтерите възникна проблем. Възможно е някои от тях да не са регистрирани успешно с/ъс <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Търсеща машина, използвана в <ph name="BEGIN_LINK" />адресната лента<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Четене и промяна на всичко, което въвеждате</translation> -<translation id="220792432208469595">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Това ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за вас, тези данни може да се запазват в профила ви в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Моля, въведете този ПИН код на „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Разрешаване на „бисквитките“</translation> <translation id="2213140827792212876">Премахване на споделянето</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">Алтернативният браузър не можа да се отвори</translation> <translation id="2804667941345577550">Ще излезете от профила си в този сайт, включително в отворените раздели</translation> <translation id="2804680522274557040">Камерата е изключена</translation> -<translation id="2805539617243680210">Всичко е готово!</translation> <translation id="2805646850212350655">Шифроване на файлова система от Microsoft</translation> <translation id="2805756323405976993">Приложения</translation> <translation id="2805770823691782631">Допълнителни подробности</translation> @@ -2032,6 +2028,7 @@ <translation id="3742055079367172538">Направена бе екранна снимка</translation> <translation id="3742666961763734085">Не бе намерена организационна единица с това име. Моля, опитайте отново.</translation> <translation id="3744111561329211289">Синхронизиране на заден план</translation> +<translation id="3747077776423672805">За да премахнете приложения, отворете „Настройки“ > „Google Play Магазин“ > „Управление на предпочитанията за Android“ > „Приложения“ или мениджъра на приложенията. Докоснете това, което искате да деинсталирате (може да се наложи да прекарате пръст надясно или наляво, за да го намерите). Докоснете „Деинсталиране“ или „Деактивиране“.</translation> <translation id="3748026146096797577">Няма връзка</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Моите устройства</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Използвате ключ за сигурност, който не е регистриран в този уебсайт</translation> <translation id="4788092183367008521">Моля, проверете връзката си с мрежата и опитайте отново.</translation> <translation id="4792711294155034829">&Подаване на сигнал за проблем...</translation> -<translation id="4795022432560487924">Изпращане на данни за употребата и диагностиката. Помогнете за подобряването на работата на детето ви с Android, като автоматично изпращате до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Той може да избере до Google да се изпращат диагностична информация и данни за употребата на това устройство. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Уеб страница, само HTML</translation> <translation id="4798236378408895261">Прикачване на <ph name="BEGIN_LINK" />регистрационните файлове за Bluetooth<ph name="END_LINK" /> (вътрешно за Google)</translation> <translation id="4801448226354548035">Скриване на профилите</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Автоматични изтегляния</translation> <translation id="5653154844073528838">Имате <ph name="PRINTER_COUNT" /> запазени принтера.</translation> <translation id="5656845498778518563">Изпращане на отзиви до Google</translation> +<translation id="5657156137487675418">Разрешаване на всички „бисквитки“</translation> <translation id="5657667036353380798">За външното разширение се изисква да е инсталирана версия <ph name="MINIMUM_CHROME_VERSION" /> на Chrome или по-нова.</translation> <translation id="5658415415603568799">За допълнителна сигурност Smart Lock ще ви помоли да въведете паролата си след 20 часа.</translation> <translation id="5659593005791499971">Имейл</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Намаляване</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> ще се рестартира след тази актуализация. Бъдещите актуализации на софтуера и тези за сигурност ще се инсталират автоматично.</translation> <translation id="5944869793365969636">Сканиране на QR кода</translation> -<translation id="5945188205370098537">Изпращане на данни за употребата и диагностиката. Помогнете за подобряването на работата си с Android, като автоматично изпращате до Google диагностична информация и данни за употребата на устройството и приложенията. Това ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за вас, тези данни може да се запазват в профила ви в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Идентификатор на отчета: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Файлът не може да се анализира синтактично</translation> <translation id="5955282598396714173">Паролата ви е изтекла. Моля, излезте от профила си и влезте отново в него, за да я промените.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Местоположение на устройството</translation> <translation id="6186394685773237175">Няма намерени компрометирани пароли</translation> <translation id="6195693561221576702">Това устройство не може да бъде настроено в офлайн демонстрационен режим.</translation> +<translation id="6196640612572343990">Блокиране на „бисквитките“ на трети страни</translation> <translation id="6196854373336333322">Разширението „<ph name="EXTENSION_NAME" />“ е поело контрол над настройките ви за прокси сървър. Това означава, че то може да променя, прекъсва или следи всичко, което правите онлайн. Ако не сте сигурни какво е причинило тази промяна, вероятно не искате тя да остава в сила.</translation> <translation id="6198102561359457428">Излезте от профила си и влезте отново...</translation> <translation id="6198252989419008588">Промяна на ПИН</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Четене на списъка с устройства, на които сте влезли в профила си</translation> <translation id="7120865473764644444">Не можа да се установи връзка със синхронизиращия сървър. Извършва се нов опит...</translation> <translation id="7121362699166175603">Изчиства историята и автоматичните довършвания в адресната лента. В профила ви в Google може да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Режим за програмисти</translation> <translation id="7121728544325372695">Smart Dashes</translation> <translation id="7123360114020465152">Вече не се поддържа</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Възникна грешка, докато Chrome търсеше опасен софтуер</translation> <translation id="7280649757394340890">Настройки за гласовете за синтезиран говор</translation> <translation id="7280877790564589615">Изисква се разрешение</translation> -<translation id="7281268427852119151">Използване на историята ви на сърфиране за персонализиране на търсенето, рекламите и други услуги на Google</translation> <translation id="7282992757463864530">Информационна лента</translation> <translation id="7287143125007575591">Достъпът е отказан.</translation> <translation id="7287411021188441799">Възстановяване на стандартния фон</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Преместване на раздела в нов прозорец}other{Преместване на разделите в нов прозорец}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">страница</translation> -<translation id="8180294223783876911">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Това ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за вас, тези данни може да се запазват в профила ви в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="8180786512391440389"><ph name="EXTENSION" /> може да чете и изтрива изображения, видео- и звукови файлове в местоположенията с отметка.</translation> <translation id="8181215761849004992">Присъединяването към домейна не успя. Проверете дали профилът ви има достатъчно права за добавяне на устройства.</translation> <translation id="8182105986296479640">Приложението не реагира.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Функция, която ви изпраща известия и по подразбиране запомня този компютър за Messages. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Приложението <ph name="APP_NAME" /> е блокирано от родителя ви. Поискайте от него разрешение да използвате приложението.</translation> <translation id="820568752112382238">Най-посещавани сайтове</translation> -<translation id="8206581664590136590">Изпращане на данни за употребата и диагностиката. Помогнете за подобряването на работата на детето ви с Android, като автоматично изпращате до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Музикант</translation> <translation id="8206859287963243715">Клетъчно</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Изтегля се файл}other{Изтеглят се файлове}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Профил в Google</translation> <translation id="8912793549644936705">Разтегляне</translation> <translation id="8912810933860534797">Активиране на автоматичното сканиране</translation> -<translation id="891365694296252935">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Предложението се зарежда</translation> <translation id="8916476537757519021">Подрамка в режим „инкогнито“: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Ключът ви за сигурност се потвърждава...</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Стартиране на приложението</translation> <translation id="9102610709270966160">Активиране на разширението</translation> <translation id="9103868373786083162">Натиснете, за да се върнете назад. Използвайте контекстното меню, за да видите историята</translation> -<translation id="9104396740804929809">Изпращане на данни за употребата и диагностиката. Помогнете за подобряването на работата си с Android, като автоматично изпращате до Google диагностична информация и данни за употребата на устройството и приложенията. Това ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Той може да избере до Google да се изпращат диагностична информация и данни за употребата на това устройство. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за вас, тези данни може да се запазват в профила ви в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">За да освободите място, изтрийте файлове от хранилището на устройството.</translation> <translation id="9109283579179481106">Свързване с мобилна мрежа</translation> <translation id="9111102763498581341">Отключване</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index d9046c72..74c6aad86 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">হোস্ট করা অ্যাপ্লিকেশান ডেটা</translation> <translation id="1776712937009046120">ব্যবহারকারী যুক্ত করুন</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ডোমেন এই ডিভাইসটি ম্যানেজ করে। - আপনার <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> অ্যাকাউন্টে সাইন-ইন চালিয়ে যেতে "পরবর্তী" বোতামে ক্লিক করুন।</translation> <translation id="1779652936965200207">দয়া করে "<ph name="DEVICE_NAME" />"-এ পাসকীটি লিখুন:</translation> <translation id="177989070088644880">অ্যাপ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">গ্রুপ বন্ধ করুন</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">মুদ্রকগুলি তালিকাকরণে একটি সমস্যা ছিল৷ আপনার মুদ্রকগুলির মধ্যে কয়েকটি সফলভাবে <ph name="CLOUD_PRINT_NAME" />তে নিবন্ধীকৃত নাও থাকতে পারে৷</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />অ্যাড্রেস বারে<ph name="END_LINK" /> যে সার্চ ইঞ্জিন ব্যবহার করা হয়েছে</translation> <translation id="2204034823255629767">আপনি যা টাইপ করেন তা পড়ুন এবং পরিবর্তন করুন</translation> -<translation id="220792432208469595">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। এই সেটিং মালিকের নিয়ন্ত্রণে রয়েছে। আপনার অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিং চালু থাকলে, এই ডেটা আপনার Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="220858061631308971">দয়া করে <ph name="DEVICE_NAME" /> "-এ পিন কোড লিখুন:</translation> <translation id="2212565012507486665">কুকিগুলিকে অনুমতি দিন</translation> <translation id="2213140827792212876">শেয়ার করা বন্ধ করুন</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">অন্য ব্রাউজারটি খোলা যায়নি</translation> <translation id="2804667941345577550">খোলা ট্যাবগুলি ছাড়াও এই সাইট থেকে সাইন-আউট হয়ে যাবেন</translation> <translation id="2804680522274557040">ক্যামেরা বন্ধ করা আছে</translation> -<translation id="2805539617243680210">এবার আপনি লগ-ইন করে ডিভাইসটি ব্যবহার করতে পারবেন!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">অ্যাপ্স</translation> <translation id="2805770823691782631">অতিরিক্ত বিবরণ</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">স্ক্রিনশট নেওয়া হয়েছে</translation> <translation id="3742666961763734085">এই নামের কোনও প্রতিষ্ঠানের ইউনিট খুঁজে পাওয়া যাচ্ছে না। অনুগ্রহ করে আবার চেষ্টা করুন।</translation> <translation id="3744111561329211289">পটভূমি সিঙ্ক</translation> +<translation id="3747077776423672805">অ্যাপগুলি সরাতে, সেটিংস > Google Play স্টোর > Android অভিরুচি ম্যানেজ করুন > অ্যাপ বা অ্যাপ্লিকেশন ম্যানেজার বিকল্পে যান। এরপর যে অ্যাপটিকে আনইনস্টল করতে চান তাতে ট্যাপ করুন (অ্যাপটি খোঁজার জন্য আপনাকে ডানদিক বা বাঁদিকে সোয়াইপ করতে হতে পারে)। এরপর আনইনস্টল করুন বা বন্ধ করুন বিকল্পে ট্যাপ করুন।</translation> <translation id="3748026146096797577">সংযুক্ত নয়</translation> <translation id="3752582316358263300">ঠিক আছে...</translation> <translation id="3752673729237782832">আমার ডিভাইসগুলি</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">আপনি এমন একটি নিরাপত্তা কী ব্যবহার করছেন যেটি এই ওয়েবসাইটের সাথে রেজিস্টার করা নেই</translation> <translation id="4788092183367008521">আপনার নেটওয়ার্ক কানেকশন পরীক্ষা করে আবার চেষ্টা করুন।</translation> <translation id="4792711294155034829">&কোনও সমস্যা অভিযোগ করুন...</translation> -<translation id="4795022432560487924">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। Google-এ নিজে থেকে ডায়াগনস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠিয়ে, আপনার সন্তানের Android অভিজ্ঞতাকে উন্নত করতে সাহায্য করুন। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। এই সেটিং মালিকের নিয়ন্ত্রণে রয়েছে। এই ডিভাইসের জন্য Google-কে ডায়গনস্টিক এবং ব্যবহারের ডেটা পাঠানোর বিষয়টি মালিক বেছে নিতে পারেন। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webpage, HTML Only</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ব্লুটুথ লগ<ph name="END_LINK" /> যোগ করুন (Google ইন্টারনাল)</translation> <translation id="4801448226354548035">অ্যাকাউন্টগুলি লুকান</translation> @@ -3360,6 +3356,7 @@ <translation id="5649053991847567735">অটোমেটিক ডাউনলোডগুলি</translation> <translation id="5653154844073528838">আপনার কাছে আগে থেকেই <ph name="PRINTER_COUNT" />টি প্রিন্টার সেভ করা আছে।</translation> <translation id="5656845498778518563">Google-এ মতামত জানান</translation> +<translation id="5657156137487675418">সকল কুকিজ মঞ্জুর করুন</translation> <translation id="5657667036353380798">বাহ্যিক এক্সটেনশনটির জন্য chrome এর <ph name="MINIMUM_CHROME_VERSION" /> ভার্সন বা তার পরবর্তী ভার্সন ইনস্টল থাকা প্রয়োজন৷</translation> <translation id="5658415415603568799">অতিরিক্ত নিরাপত্তার জন্য, ২০ ঘণ্টা পরে Smart Lock আপনাকে পাসওয়ার্ড দিতে বলবে।</translation> <translation id="5659593005791499971">ইমেল আইডি</translation> @@ -3566,7 +3563,6 @@ <translation id="5941711191222866238">ছোট করুন</translation> <translation id="5942964813783878922">আপডেট হয়ে গেলে আপনার <ph name="DEVICE_TYPE" /> রিস্টার্ট হয়ে যাবে। ভবিষ্যতে সফ্টওয়্যার এবং সুরক্ষা সংক্রান্ত আপডেট অটোমেটিক ইনস্টল হয়ে যাবে।</translation> <translation id="5944869793365969636">QR কোড স্ক্যান করুন</translation> -<translation id="5945188205370098537">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। Google-এ নিজে থেকে ডায়াগনস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠিয়ে, আপনার Android অভিজ্ঞতাকে উন্নত করতে সাহায্য করুন। এটি সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। আপনার অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিং চালু থাকলে, এই ডেটা আপনার Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">আইডি অভিযোগ করুন <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ফাইল বিশ্লেষণ করতে বন্ধ</translation> <translation id="5955282598396714173">আপনার পাসওয়ার্ডের মেয়াদ শেষ হয়ে গেছে। পাসওয়ার্ড পাল্টানোর জন্য সাইন-আউট করে আবার সাইন-ইন করুন।</translation> @@ -3751,6 +3747,7 @@ <translation id="6185132558746749656">ডিভাইসের লোকেশন</translation> <translation id="6186394685773237175">অন্য কারও সাথে শেয়ার করা হয়েছে এমন পাসওয়ার্ড খুঁজে পাওয়া যায়নি</translation> <translation id="6195693561221576702">এই ডিভাইসটি অফলাইন ডেমো মোডে সেট-আপ করা যাবে না।</translation> +<translation id="6196640612572343990">তৃতীয় পক্ষের কুকিজ অবরুদ্ধ করুন</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" এক্সটেনশন আপনার প্রক্সী সেটিংস নিয়ন্ত্রণ করছে, যার মানে হল আপনি অনলাইনে যাই করুন না কেন এটি তার পরিবর্তন করতে, সেখানে জোর করে প্রবেশ বা সেটি লুকিয়ে দেখতে পারবে। আপনি যদি বুঝতে না পারেন কেন এই পরিবর্তনটি হয়েছে তাহলে আপনি সম্ভবত এটি চাইছেন না।</translation> <translation id="6198102561359457428">সাইন-আউট করুন করে আবার সাইন-ইন করুন...</translation> <translation id="6198252989419008588">পিন পরিবর্তন করুন</translation> @@ -4414,7 +4411,6 @@ <translation id="711902386174337313">আপনার সাইন-ইন করা ডিভাইসগুলির তালিকা পড়ুন</translation> <translation id="7120865473764644444">সিঙ্ক সার্ভারের সাথে সংযোগ স্থাপন করা যায়নি। আবার চেষ্টা করছে...</translation> <translation id="7121362699166175603">অ্যাড্রেস বারের ইতিহাস এবং অটোকমপ্লিট তথ্য মুছে ফেলে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation> -<translation id="7121389946694989825">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ডেভেলপার মোড</translation> <translation id="7121728544325372695">স্মার্ট ড্যাশ</translation> <translation id="7123360114020465152">আর সমর্থিত নয়</translation> @@ -5195,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ট্যাবটি নতুন উইন্ডোতে খুলুন}one{ট্যাবগুলি নতুন উইন্ডোতে খুলুন}other{ট্যাবগুলি নতুন উইন্ডোতে খুলুন}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">পৃষ্ঠা</translation> -<translation id="8180294223783876911">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। আপনার অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিং চালু থাকলে, এই ডেটা আপনার Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" উল্লিখিত অবস্থানগুলিতে ছবি, ভিডিও এবং শব্দের ফাইলগুলি পড়তে ও মুছতে পারে৷</translation> <translation id="8181215761849004992">ডোমেনে যোগ করা যাবে না। আপনার অ্যাকাউন্টে ডিভাইস যোগ করার সুবিধাগুলি যথাযথ আছে কিনা তা যাচাই করুন।</translation> <translation id="8182105986296479640">অ্যাপ্লিকেশন উত্তর দিচ্ছে না।</translation> @@ -5217,7 +5212,6 @@ <translation id="8203732864715032075">আপনাকে বিজ্ঞপ্তি পাঠায় এবং মেসেজের জন্য এই কম্পিউটারকে ডিফল্ট হিসেবে মনে রাখে। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="8204129288640092672">অভিভাবক "<ph name="APP_NAME" />" ব্লক করে দিয়েছেন। এই অ্যাপ ব্যবহার করতে আপনার অভিভাবকের থেকে অনুমতি নিন</translation> <translation id="820568752112382238">সবচেয়ে বেশিবার দেখা সাইট</translation> -<translation id="8206581664590136590">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। Google-এ নিজে থেকে ডায়াগনস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠিয়ে, আপনার সন্তানের Android অভিজ্ঞতাকে উন্নত করতে সাহায্য করুন। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ব্লুজস</translation> <translation id="8206859287963243715">সেলুলার</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ডাউনলোড করা হচ্ছে}one{ডাউনলোডগুলি করা হচ্ছে}other{ডাউনলোডগুলি করা হচ্ছে}}</translation> @@ -5757,7 +5751,6 @@ <translation id="8912362522468806198">Google অ্যাকাউন্ট</translation> <translation id="8912793549644936705">বিস্তার</translation> <translation id="8912810933860534797">অটো-স্ক্যান চালু করুন</translation> -<translation id="891365694296252935">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। এই সেটিং মালিকের নিয়ন্ত্রণে রয়েছে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">লোড করার প্রস্তাব</translation> <translation id="8916476537757519021">ছদ্মবেশী সাবফ্রেম: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">আপনার নিরাপত্তা কী যাচাই করা হচ্ছে...</translation> @@ -5894,7 +5887,6 @@ <translation id="9101691533782776290">অ্যাপ্লিকেশন লঞ্চ করুন</translation> <translation id="9102610709270966160">এক্সটেনশন চালু করুন</translation> <translation id="9103868373786083162">ইতিহাস দেখার জন্য ফিরে গিয়ে সংশ্লিষ্ট মেনুতে যেতে টিপুন</translation> -<translation id="9104396740804929809">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। Google-এ নিজে থেকে ডায়াগনস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠিয়ে, আপনার Android অভিজ্ঞতাকে উন্নত করতে সাহায্য করুন। এটি সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। এই সেটিং মালিকের নিয়ন্ত্রণে রয়েছে। এই ডিভাইসের জন্য Google-কে ডায়গনস্টিক এবং ব্যবহারের ডেটা পাঠানোর বিষয়টি মালিক বেছে নিতে পারেন। আপনার অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিং চালু থাকলে, এই ডেটা আপনার Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">জায়গা খালি করার জন্য, ডিভাইস স্টোরেজ থেকে ফাইল মুছুন।</translation> <translation id="9109283579179481106">মোবাইল নেটওয়ার্কে কানেক্ট করুন</translation> <translation id="9111102763498581341">আনলক</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 9dba44c..442cd241 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Podaci hostirane aplikacije</translation> <translation id="1776712937009046120">Dodaj korisnika</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Ovim uređajem upravlja <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kliknite "Naprijed" da nastavite s prijavom na <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> račun.</translation> <translation id="1779652936965200207">Unesite ključ za pristup na uređaju "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplikacija (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zatvori grupu</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Došlo je do problema prilikom navođenja štampača. Moguće je da neki od vaših štampača nisu uspješno registrirani na serveru <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Pretraživač korišten u <ph name="BEGIN_LINK" />traci za adresu<ph name="END_LINK" /></translation> <translation id="2204034823255629767">ČItanje i mijenjanje svega što unesete</translation> -<translation id="220792432208469595">Šaljite podatke o upotrebi i dijagnostici. Ovaj uređaj trenutno automatski Googleu šalje podatke o dijagnostici, uređaju i korištenju aplikacija. Ovo će pomoći poboljšati stabilnost sistema i aplikacija i još mnogo toga. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su Android programeri. Ovu postavku je primijenio vlasnik. Ako je uključena postavka dodatna Aktivnost na webu i u aplikacijama, ovi podaci će možda biti sačuvani na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Unesite ovaj PIN kod na "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Dozvoli kolačiće</translation> <translation id="2213140827792212876">Ukloni dijeljenje</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Otvaranje alternativnog preglednika nije uspjelo</translation> <translation id="2804667941345577550">Odjavit ćete se s ove web lokacije, uključujući otvorene kartice</translation> <translation id="2804680522274557040">Kamera je isključena</translation> -<translation id="2805539617243680210">Sve je spremno!</translation> <translation id="2805646850212350655">Microsoft sistem za šifriranje fajlova</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatni detalji</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Snimak ekrana je napravljen</translation> <translation id="3742666961763734085">Nije moguće pronaći organizacionu jedinicu pod tim imenom. Pokušajte ponovo.</translation> <translation id="3744111561329211289">Sinhronizacija u pozadini</translation> +<translation id="3747077776423672805">Za uklanjanje aplikacija idite na Postavke > Trgovina Play > Upravljanje postavkama Androida > Aplikacije ili Upravitelj aplikacija. Zatim dodirnite aplikaciju koju želite deinstalirati (možda ćete morati prijeći prstom udesno ili ulijevo kako biste pronašli aplikaciju). Zatim dodirnite Deinstaliraj ili Onemogući.</translation> <translation id="3748026146096797577">Nije povezano</translation> <translation id="3752582316358263300">Uredu...</translation> <translation id="3752673729237782832">Moji uređaji</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Koristite sigurnosni ključ koji nije registriran na ovoj web lokaciji</translation> <translation id="4788092183367008521">Provjerite mrežnu vezu i pokušajte ponovo.</translation> <translation id="4792711294155034829">&Prijavi problem...</translation> -<translation id="4795022432560487924">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati djetetov doživljaj Androida automatskim slanjem dijagnostičkih podataka i podataka o upotrebi uređaja i aplikacija Googleu. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Vlasnik može Googleu slati dijagnostiku i podatke o upotrebi za ovaj uređaj. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Web stranica, samo HTML</translation> <translation id="4798236378408895261">Priloži <ph name="BEGIN_LINK" />Bluetooth zapisnike<ph name="END_LINK" /> (Google interno)</translation> <translation id="4801448226354548035">Sakrij račune</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatska preuzimanja</translation> <translation id="5653154844073528838">Imate sljedeći broj sačuvanih štampača: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Pošaljite povratne informacije Googleu</translation> +<translation id="5657156137487675418">Dopusti sve kolačiće</translation> <translation id="5657667036353380798">Eksterna ekstenzija za instaliranje zahtijeva verziju Chromea <ph name="MINIMUM_CHROME_VERSION" /> ili noviju.</translation> <translation id="5658415415603568799">Radi dodatne sigurnosti Smart Lock će od vas tražiti da unesete lozinku nakon 20 sati.</translation> <translation id="5659593005791499971">E-pošta</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimiziraj</translation> <translation id="5942964813783878922">Vaš uređaj <ph name="DEVICE_TYPE" /> će se ponovo pokrenuti nakon ovog ažuriranja. Buduća ažuriranja softvera i sigurnosna ažuriranja će se automatski instalirati.</translation> <translation id="5944869793365969636">Skenirajte QR kôd</translation> -<translation id="5945188205370098537">Šalji podatke o korištenju i dijagnostici. Poboljšajte svoje iskustvo s Androidom automatskim slanjem podataka o dijagnostici, uređaju i korištenju aplikacija Googleu. Ovo će pomoći stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su Android programeri. Ako je uključena postavka dodatne Aktivnosti na webu i u aplikacijama, ti podaci se mogu sačuvati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID izvještaja <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Nije moguće raščlaniti fajl</translation> <translation id="5955282598396714173">Vaša lozinka je istekla. Odjavite se pa se ponovo prijavite da biste je promijenili.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Lokacija uređaja</translation> <translation id="6186394685773237175">Nisu pronađene ugrožene lozinke</translation> <translation id="6195693561221576702">Ovaj uređaj se ne može postaviti u demo načinu rada van mreže.</translation> +<translation id="6196640612572343990">Blokiraj kolačiće trećih strana</translation> <translation id="6196854373336333322">Ekstenzija "<ph name="EXTENSION_NAME" />" je preuzela kontrolu nad postavkama vašeg proksi servera, što znači da može promijeniti, prekinuti ili prisluškivati sve što radite na mreži. Ako niste sigurni zašto je došlo do ove promjene, vjerovatno je i ne želite.</translation> <translation id="6198102561359457428">Odjavite se i ponovo se prijavite…</translation> <translation id="6198252989419008588">Promijeni PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Čitanje liste prijavljenih uređaja</translation> <translation id="7120865473764644444">Povezivanje sa serverom za sinhronizaciju nije uspjelo. Ponovni pokušaj...</translation> <translation id="7121362699166175603">Briše historiju i automatsko dovršavanje na traci za adresu. Vaš Google račun može imati druge oblike historije pregledanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Šaljite podatke o upotrebi i dijagnostici. Ovaj uređaj trenutno automatski šalje Googleu podatke o dijagnostici, uređaju i korištenju aplikacija. Ovo se neće koristiti za identifikaciju vašeg djeteta, a pomoći će stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ako je za vaše dijete uključena postavka za dodatnu Aktivnost na webu i u aplikacijama, ovi podaci mogu biti sačuvani na Google računu djeteta. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Način rada za programere</translation> <translation id="7121728544325372695">Pametne crtice</translation> <translation id="7123360114020465152">Nije više podržan</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Došlo je do greške dok je Chrome tražio ima li štetnog softvera</translation> <translation id="7280649757394340890">Postavke glasa za pretvaranje teksta u govor</translation> <translation id="7280877790564589615">Upućen je zahtjev za odobrenje</translation> -<translation id="7281268427852119151">Koristite historiju pregledanja da personalizirate Pretraživanje, oglase i druge Googleove usluge</translation> <translation id="7282992757463864530">Infotraka</translation> <translation id="7287143125007575591">Pristup je odbijen.</translation> <translation id="7287411021188441799">Vrati zadanu pozadinu</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Premjesti karticu u novi prozor}one{Premjesti kartice u novi prozor}few{Premjesti kartice u novi prozor}other{Premjesti kartice u novi prozor}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">stranica</translation> -<translation id="8180294223783876911">Šaljite podatke o korištenju i dijagnostici. Ovaj uređaj trenutno automatski šalje Googleu podatke o dijagnostici, uređaju i korištenju aplikacija. Ovo će pomoći poboljšati stabilnost sistema i aplikacija i još mnogo toga. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su Android programeri. Ako vam je uključena postavka dodatna Aktivnost na webu i u aplikacijama, ti podaci će možda biti sačuvani na vašem Google računu. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" može čitati i brisati slike, videozapise i zvučne fajlove na označenim lokacijama.</translation> <translation id="8181215761849004992">Nije se moguće pridružiti domeni. Provjerite račun da vidite imate li dovoljno privilegija za dodavanje uređaja.</translation> <translation id="8182105986296479640">Aplikacija ne reagira.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Šalje vam obavještenja i kao zadanu postavku pamti ovaj računar za Messages. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Aplikaciju "<ph name="APP_NAME" />" je blokirao tvoj roditelj. Traži od roditelja odobrenje da koristiš ovu aplikaciju.</translation> <translation id="820568752112382238">Najposjećenije web lokacije</translation> -<translation id="8206581664590136590">Šaljite podatke o upotrebi i dijagnostici. Poboljšajte iskustvo korištenja Androida svog djeteta automatskim slanjem podataka o dijagnostici, uređaju i korištenju aplikacija Googleu. Ovo se neće koristiti za identifikaciju vašeg djeteta, a pomoći će stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki prikupljeni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ako je za vaše dijete uključena postavka dodatna Aktivnost na webu i u aplikacijama, ovi podaci mogu biti sačuvati u njihovom Google računu. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Mobitel</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Preuzimanje je u toku}one{Preuzimanja su u toku}few{Preuzimanja su u toku}other{Preuzimanja su u toku}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google račun</translation> <translation id="8912793549644936705">Razvučeno</translation> <translation id="8912810933860534797">Omogući automatsko skeniranje</translation> -<translation id="891365694296252935">Šaljite podatke o upotrebi i dijagnostici. Ovaj uređaj trenutno automatski šalje Googleu podatke o dijagnostici, uređaju i korištenju aplikacija. Ovo se neće koristiti za identifikaciju vašeg djeteta, a pomoći će stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki prikupljeni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ove postavke je nametnuo vlasnik. Ako je za vaše dijete uključena dodatna Aktivnost na webu i u aplikacijama, ovi podaci mogu biti sačuvani na njegovom Google računu. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Učitavanje prijedloga</translation> <translation id="8916476537757519021">Podokvir anonimnog načina: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Potvrđivanje vašeg sigurnosnog ključa...</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Pokreni aplikaciju</translation> <translation id="9102610709270966160">Omogući ekstenziju</translation> <translation id="9103868373786083162">Pritisnite da se vratite nazad i na kontekstni meni da pogledate historiju</translation> -<translation id="9104396740804929809">Šaljite podatke o korištenju i dijagnostici. Poboljšajte svoje iskustvo korištenja Androida automatskim slanjem podataka o dijagnostici, uređaju i korištenju aplikacija Googleu. Ovo će pomoći poboljšati stabilnost sistema i aplikacija i još mnogo toga. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su Android programeri. Ovu postavku je nametnuo vlasnik. Vlasnik može odabrati slanje podataka o dijagnostici i korištenju ovog uređaja Googleu. Ako je uključena postavka dodatne Aktivnosti na webu i u aplikacijama, ti podaci se mogu sačuvati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Da oslobodite prostor, izbrišite fajlove iz pohrane uređaja.</translation> <translation id="9109283579179481106">Povežite se na mobilnu mrežu</translation> <translation id="9111102763498581341">Otključaj</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index f9003f6..1a4515b0 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dades d'aplicacions allotjades</translation> <translation id="1776712937009046120">Afegeix un usuari</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Aquest dispositiu està gestionat per <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Fes clic a Següent per continuar l'inici de sessió al teu compte del domini <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Introduïu aquesta contrasenya a "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplicació (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Tanca el grup</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">S'ha produït un problema en enumerar les impressores. Pot ser que algunes impressores no s'hagin registrat correctament a <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Motor de cerca utilitzat a la <ph name="BEGIN_LINK" />barra d'adreces<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Llegir i canviar tot el que s'escrigui</translation> -<translation id="220792432208469595">Envia dades d'ús i de diagnòstic. En aquests moments aquest dispositiu envia automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. El propietari ha aplicat aquesta opció de configuració. Si tens activada l'opció Activitat al web i en aplicacions addicional, és possible que aquestes dades es desin al teu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Introduïu aquest codi PIN a "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permet les galetes</translation> <translation id="2213140827792212876">Deixa de compartir</translation> @@ -1352,7 +1349,6 @@ <translation id="2804043232879091219">No s'ha pogut obrir el navegador alternatiu</translation> <translation id="2804667941345577550">Se't tancarà la sessió d'aquest lloc web, també de les pestanyes obertes</translation> <translation id="2804680522274557040">La càmera està desactivada</translation> -<translation id="2805539617243680210">Ja està tot a punt</translation> <translation id="2805646850212350655">Sistema de xifratge de fitxers de Microsoft</translation> <translation id="2805756323405976993">Aplicacions</translation> <translation id="2805770823691782631">Detalls addicionals</translation> @@ -2032,6 +2028,7 @@ <translation id="3742055079367172538">Captura de pantalla feta</translation> <translation id="3742666961763734085">No es troba cap unitat organitzativa amb aquest nom. Torna-ho a provar.</translation> <translation id="3744111561329211289">Sincronització en segon pla</translation> +<translation id="3747077776423672805">Per suprimir una aplicació, ves a Configuració > Google Play Store > Gestiona les preferències d'Android > Aplicacions o Gestor d'aplicacions. A continuació, toca l'aplicació que vulguis desinstal·lar (és possible que hagis de lliscar cap a la dreta o cap a l'esquerra per trobar-la). Tot seguit, toca Desinstal·la o Desactiva.</translation> <translation id="3748026146096797577">Desconnectat</translation> <translation id="3752582316358263300">D'acord...</translation> <translation id="3752673729237782832">Els meus dispositius</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">Estàs utilitzant una clau de seguretat que no està registrada en aquest lloc web</translation> <translation id="4788092183367008521">Comprova la connexió a la xarxa i torna-ho a provar.</translation> <translation id="4792711294155034829">&Informa d'un problema...</translation> -<translation id="4795022432560487924">Envia dades d'ús i de diagnòstic. Ajuda a millorar l'experiència a Android del teu fill enviant automàticament a Google dades de diagnòstic, del dispositiu i d'ús d'aplicacions. Aquestes dades no es faran servir per identificar el teu fill i ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. El propietari ha aplicat aquesta opció de configuració. És possible que el propietari decideixi enviar a Google dades de diagnòstic i d'ús sobre aquest dispositiu. Si l'opció Activitat al web i en aplicacions addicional està activada per al teu fill, és possible que aquestes dades es desin al seu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Pàgina web, només HTML</translation> <translation id="4798236378408895261">Adjunta <ph name="BEGIN_LINK" />registres de Bluetooth<ph name="END_LINK" /> (ús intern de Google)</translation> <translation id="4801448226354548035">Amaga els comptes</translation> @@ -3383,6 +3379,7 @@ <translation id="5649053991847567735">Baixades automàtiques</translation> <translation id="5653154844073528838">Tens <ph name="PRINTER_COUNT" /> impressores desades.</translation> <translation id="5656845498778518563">Envia suggeriments a Google</translation> +<translation id="5657156137487675418">Mostra totes les galetes</translation> <translation id="5657667036353380798">L'extensió externa requereix que tingueu instal·lada la versió de Chrome <ph name="MINIMUM_CHROME_VERSION" /> o una de posterior.</translation> <translation id="5658415415603568799">Per a més seguretat, Smart Lock et demanarà que introdueixis la contrasenya al cap de 20 hores.</translation> <translation id="5659593005791499971">Correu electrònic</translation> @@ -3590,7 +3587,6 @@ <translation id="5941711191222866238">Minimitza</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> es reiniciarà després d'aquesta actualització. Les properes actualitzacions de seguretat i de programari s'instal·laran automàticament.</translation> <translation id="5944869793365969636">Escaneja un codi QR</translation> -<translation id="5945188205370098537">Envia dades d'ús i de diagnòstic. Ajuda a millorar la teva experiència a Android enviant automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. Si tens activada l'opció Activitat al web i en aplicacions addicional, és possible que aquestes dades es desin al teu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Identificador de l'informe: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">No es pot analitzar el fitxer</translation> <translation id="5955282598396714173">La contrasenya ha caducat. Tanca la sessió i torna-la a iniciar per canviar-la.</translation> @@ -3776,6 +3772,7 @@ <translation id="6185132558746749656">Ubicació del dispositiu</translation> <translation id="6186394685773237175">No s'ha trobat cap contrasenya en perill</translation> <translation id="6195693561221576702">Aquest dispositiu no es pot configurar en mode de demostració sense connexió.</translation> +<translation id="6196640612572343990">Bloqueja les galetes de tercers</translation> <translation id="6196854373336333322">L'extensió <ph name="EXTENSION_NAME" /> ha passat a controlar la configuració del servidor intermediari. Això vol dir que pot modificar, desfer o espiar qualsevol acció que feu en línia. Si no esteu segur del motiu d'aquest canvi, és possible que no el vulgueu aplicar.</translation> <translation id="6198102561359457428">Tanca la sessió i torna-la a iniciar...</translation> <translation id="6198252989419008588">Canvia el PIN</translation> @@ -4442,7 +4439,6 @@ <translation id="711902386174337313">Accedeix a la llista de dispositius en què tens la sessió iniciada</translation> <translation id="7120865473764644444">No s'ha pogut connectar amb el servidor de sincronització. S'està tornant a provar…</translation> <translation id="7121362699166175603">Esborra l'historial i les complecions automàtiques a la barra d'adreces. A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> trobaràs altres maneres d'explorar l'historial de navegació del Compte de Google.</translation> -<translation id="7121389946694989825">Envia dades d'ús i de diagnòstic. En aquests moments aquest dispositiu envia automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades no es faran servir per identificar el teu fill i ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. Si l'opció Activitat al web i en aplicacions addicional està activada per al teu fill, és possible que aquestes dades es desin al seu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Mode de desenvolupador</translation> <translation id="7121728544325372695">Guions intel·ligents</translation> <translation id="7123360114020465152">Ja no s'admet</translation> @@ -4557,7 +4553,6 @@ <translation id="7280041992884344566">S'ha produït un error mentre Chrome cercava programari nociu</translation> <translation id="7280649757394340890">Configuració de la veu de text a parla</translation> <translation id="7280877790564589615">Permís sol·licitat</translation> -<translation id="7281268427852119151">Utilitza l'historial de navegació per personalitzar la Cerca, els anuncis i altres serveis de Google</translation> <translation id="7282992757463864530">Barra d'informació</translation> <translation id="7287143125007575591">Accés denegat.</translation> <translation id="7287411021188441799">Restaura el fons predeterminat</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mou la pestanya a una finestra nova}other{Mou les pestanyes a una finestra nova}}</translation> <translation id="8179976553408161302">Retorn</translation> <translation id="8180239481735238521">pàgina</translation> -<translation id="8180294223783876911">Envia dades d'ús i de diagnòstic. En aquests moments aquest dispositiu envia automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. Si tens activada l'opció Activitat al web i en aplicacions addicional, és possible que aquestes dades es desin al teu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" pot llegir imatges, vídeos i fitxers d'àudio a les ubicacions marcades, així com suprimir aquest contingut.</translation> <translation id="8181215761849004992">No es pot connectar el domini. Comprova al compte si tens prou privilegis per afegir-hi dispositius.</translation> <translation id="8182105986296479640">L'aplicació no respon.</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">Rep notificacions en aquest ordinador i estableix-lo com a predeterminat per a Missatges. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation> <translation id="8204129288640092672">El teu pare o la teva mare ha bloquejat "<ph name="APP_NAME" />". Demana-li permís per utilitzar aquesta aplicació.</translation> <translation id="820568752112382238">Els llocs web més visitats</translation> -<translation id="8206581664590136590">Envia dades d'ús i de diagnòstic. Ajuda a millorar l'experiència a Android del teu fill enviant automàticament a Google dades de diagnòstic, del dispositiu i d'ús d'aplicacions. Aquestes dades no es faran servir per identificar el teu fill i ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. Si l'opció Activitat al web i en aplicacions addicional està activada per al teu fill, és possible que aquestes dades es desin al seu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Música</translation> <translation id="8206859287963243715">Cel·lular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Baixada en curs}other{Baixades en curs}}</translation> @@ -5800,7 +5793,6 @@ <translation id="8912362522468806198">Compte de Google</translation> <translation id="8912793549644936705">Amplia</translation> <translation id="8912810933860534797">Activa la cerca automàtica</translation> -<translation id="891365694296252935">Envia dades d'ús i de diagnòstic. En aquests moments aquest dispositiu envia automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades no es faran servir per identificar el teu fill i ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. El propietari ha aplicat aquesta opció de configuració. Si l'opció Activitat al web i en aplicacions addicional està activada per al teu fill, és possible que aquestes dades es desin al seu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">S'estan carregant els suggeriments</translation> <translation id="8916476537757519021">Submarc d'incògnit: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">S'està verificant la clau de seguretat...</translation> @@ -5937,7 +5929,6 @@ <translation id="9101691533782776290">Inicia l'aplicació</translation> <translation id="9102610709270966160">Activa l'extensió</translation> <translation id="9103868373786083162">Premeu per anar cap enrere, menú contextual per veure l'historial</translation> -<translation id="9104396740804929809">Envia dades d'ús i de diagnòstic. Ajuda a millorar la teva experiència a Android enviant automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. El propietari ha aplicat aquesta opció de configuració. És possible que el propietari decideixi enviar a Google dades de diagnòstic i d'ús sobre aquest dispositiu. Si tens activada l'opció Activitat al web i en aplicacions addicional, és possible que aquestes dades es desin al teu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Per alliberar espai, suprimeix fitxers de l'emmagatzematge del dispositiu.</translation> <translation id="9109283579179481106">Connecta't a la xarxa mòbil</translation> <translation id="9111102763498581341">Desbloqueja</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 7902f6b5..dc856944 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Údaje hostovaných aplikací</translation> <translation id="1776712937009046120">Přidat uživatele</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Toto zařízení spravuje organizace <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Chcete-li pokračovat s přihlášením k účtu <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, klikněte na Další.</translation> <translation id="1779652936965200207">Zadejte prosím přístupové heslo v zařízení <ph name="DEVICE_NAME" />:</translation> <translation id="177989070088644880">Aplikace (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zavřít skupinu</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Při vytváření seznamu tiskáren se vyskytla chyba. Některé vaše tiskárny možná nebyly ve službě <ph name="CLOUD_PRINT_NAME" /> úspěšně zaregistrovány.</translation> <translation id="2203682048752833055">Vyhledávač používaný v <ph name="BEGIN_LINK" />adresním řádku<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Číst a upravovat vše, co napíšete</translation> -<translation id="220792432208469595">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nám pomohou se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Toto nastavení je vyžadováno vlastníkem. Pokud máte zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do vašeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Zadejte prosím v zařízení <ph name="DEVICE_NAME" /> tento kód PIN:</translation> <translation id="2212565012507486665">Povolit cookies</translation> <translation id="2213140827792212876">Odstranit sdílení</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">Alternativní prohlížeč se nepodařilo otevřít</translation> <translation id="2804667941345577550">Z tohoto webu budete odhlášení (i na otevřených kartách)</translation> <translation id="2804680522274557040">Kamera je vypnutá</translation> -<translation id="2805539617243680210">Vše je nastaveno.</translation> <translation id="2805646850212350655">Systém souborů Microsoft EFS</translation> <translation id="2805756323405976993">Aplikace</translation> <translation id="2805770823691782631">Další podrobnosti</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">Byl vytvořen snímek obrazovky</translation> <translation id="3742666961763734085">Organizační jednotku s daným názvem nelze najít. Zkuste to prosím znovu.</translation> <translation id="3744111561329211289">Synchronizace na pozadí</translation> +<translation id="3747077776423672805">Chcete-li odstranit aplikace, přejděte do Nastavení > Obchod Google Play > Spravovat nastavení aplikací Android > Aplikace nebo Správce aplikací. Poté klepněte na aplikaci, kterou chcete odinstalovat (možná bude třeba aplikacemi listovat doprava či doleva). Následně klepněte na Odinstalovat nebo Deaktivovat.</translation> <translation id="3748026146096797577">Nepřipojeno</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Má zařízení</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">Používáte bezpečnostní klíč, který pro tento web není zaregistrován</translation> <translation id="4788092183367008521">Zkontrolujte připojení k síti a zkuste to znovu.</translation> <translation id="4792711294155034829">&Nahlásit problém...</translation> -<translation id="4795022432560487924">Odesílat údaje o využití a diagnostice. Pomozte prostředí Android svého dítěte zlepšit tím, že necháte do Googlu automaticky odesílat diagnostické údaje a údaje o využití zařízení a aplikací. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Toto nastavení je vyžadováno vlastníkem. Vlastník může zvolit, že se diagnostické údaje a údaje o využití z tohoto zařízení mají odesílat do Googlu. Pokud má dítě zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webová stránka, pouze HTML</translation> <translation id="4798236378408895261">Připojit <ph name="BEGIN_LINK" />Protokoly rozhraní Bluetooth<ph name="END_LINK" /> (interní funkce Google)</translation> <translation id="4801448226354548035">Skrýt účty</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">Automatické stahování</translation> <translation id="5653154844073528838">Máte tento počet uložených tiskáren: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Odeslat Googlu zpětnou vazbu</translation> +<translation id="5657156137487675418">Povolit všechny soubory cookie</translation> <translation id="5657667036353380798">k instalaci tohoto externího rozšíření je vyžadován Chrome verze <ph name="MINIMUM_CHROME_VERSION" /> nebo vyšší.</translation> <translation id="5658415415603568799">Z důvodu lepšího zabezpečení vás Smart Lock po 20 hodinách požádá o opětovné zadání hesla.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">Minimalizovat</translation> <translation id="5942964813783878922">Po této aktualizaci se zařízení <ph name="DEVICE_TYPE" /> restartuje. Budoucí aktualizace softwaru a zabezpečení se nainstalují automaticky.</translation> <translation id="5944869793365969636">Naskenovat QR kód</translation> -<translation id="5945188205370098537">Odesílat údaje o využití a diagnostice. Pomozte se zlepšením prostředí Android tím, že budete do Googlu automaticky odesílat diagnostická data a údaje o využití zařízení a aplikací. Tyto údaje nám pomohou se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Pokud máte zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do vašeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID hlášení <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Soubor nelze analyzovat</translation> <translation id="5955282598396714173">Platnost vašeho hesla vypršela. Odhlaste se a poté se znovu přihlaste a změňte jej.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">Poloha zařízení</translation> <translation id="6186394685773237175">Nebylo nalezeno žádné prolomené heslo</translation> <translation id="6195693561221576702">Toto zařízení nelze nastavit v offline ukázkovém režimu.</translation> +<translation id="6196640612572343990">Blokovat soubory cookie třetích stran</translation> <translation id="6196854373336333322">Rozšíření <ph name="EXTENSION_NAME" /> převzalo kontrolu nad nastavením proxy serveru, což znamená, že může změnit, narušit nebo sledovat vše, co děláte na internetu. Pokud si nejste jisti, proč k tomu došlo, zřejmě se jedná o nežádoucí změnu.</translation> <translation id="6198102561359457428">Odhlaste se a poté se znovu přihlaste...</translation> <translation id="6198252989419008588">Změnit kód PIN</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">Číst seznam zařízení, ve kterých jste přihlášeni</translation> <translation id="7120865473764644444">K synchronizačnímu serveru se nelze připojit. Další pokus...</translation> <translation id="7121362699166175603">Vymaže historii a automatická dokončení v adresním řádku. Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation> -<translation id="7121389946694989825">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Pokud má dítě zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Vývojářský režim</translation> <translation id="7121728544325372695">Chytré pomlčky</translation> <translation id="7123360114020465152">Již není podporováno</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Přesunout kartu do nového okna}few{Přesunout karty do nového okna}many{Přesunout karty do nového okna}other{Přesunout karty do nového okna}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">stránka</translation> -<translation id="8180294223783876911">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nám pomohou se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Pokud máte zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do vašeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Rozšíření <ph name="EXTENSION" /> může číst obrázky, video a zvukové soubory v povolených umístěních a mazat je.</translation> <translation id="8181215761849004992">Přidání do domény se nezdařilo. Zkontrolujte, zda má váš účet k přidávání zařízení dostatečná oprávnění.</translation> <translation id="8182105986296479640">Aplikace neodpovídá.</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">Odesílat vám oznámení a zapamatovat si tento počítač pro Zprávy. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Aplikace <ph name="APP_NAME" /> je blokována rodičem. O oprávnění používat tuto aplikaci požádejte rodiče.</translation> <translation id="820568752112382238">Nejnavštěvovanější weby</translation> -<translation id="8206581664590136590">Odesílat údaje o využití a diagnostice. Pomozte prostředí Android svého dítěte zlepšit tím, že necháte do Googlu automaticky odesílat diagnostické údaje a údaje o využití zařízení a aplikací. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Pokud má dítě zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Melodie</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Probíhá stahování}few{Probíhají stahování}many{Probíhají stahování}other{Probíhají stahování}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Účet Google</translation> <translation id="8912793549644936705">Roztáhnout</translation> <translation id="8912810933860534797">Zapnout automatické prohledávání</translation> -<translation id="891365694296252935">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Toto nastavení je vyžadováno vlastníkem. Bude-li mít dítě zapnutou ještě Aktivitu na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Načítá se návrh</translation> <translation id="8916476537757519021">Anonymní podrámec: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Ověřování bezpečnostního klíče...</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">Spustit aplikaci</translation> <translation id="9102610709270966160">Aktivovat rozšíření</translation> <translation id="9103868373786083162">Stisknutím přejdete zpět. V kontextové nabídce můžete zobrazit historii</translation> -<translation id="9104396740804929809">Odesílat údaje o využití a diagnostice. Pomozte se zlepšením prostředí Android tím, že budete do Googlu automaticky odesílat diagnostická data a údaje o využití zařízení a aplikací. Tyto údaje nám pomohou se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Toto nastavení je vyžadováno vlastníkem. Vlastník může zvolit, že se diagnostické údaje a údaje o využití z tohoto zařízení mají odesílat do Googlu. Pokud máte zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do vašeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Uvolněte místo smazáním souborů z úložiště zařízení.</translation> <translation id="9109283579179481106">Připojení k mobilní síti</translation> <translation id="9111102763498581341">Odemknout</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index cde0e3d..9627e24 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Hostede appdata</translation> <translation id="1776712937009046120">Tilføj bruger</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Denne enhed administreres af <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Klik på "Næste" for at fortsætte med at logge ind på din konto på din <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-konto.</translation> <translation id="1779652936965200207">Angiv denne adgangsnøgle på "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Luk gruppe</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Der opstod et problem under fortegnelsen af printere. Nogle af dine printere er muligvis ikke registreret korrekt hos <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Den søgemaskine, der bruges i <ph name="BEGIN_LINK" />adresselinjen<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Læs og rediger alt, hvad du indtaster</translation> -<translation id="220792432208469595">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Dataene bruges til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Denne indstilling håndhæves af ejeren. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret, gemmes disse data muligvis på din Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Angiv denne pinkode på "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Tillad cookies</translation> <translation id="2213140827792212876">Fjern deling</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Den alternative browser kunne ikke åbnes</translation> <translation id="2804667941345577550">Du logges ud af dette website, også i åbne faner.</translation> <translation id="2804680522274557040">Kameraet er deaktiveret</translation> -<translation id="2805539617243680210">Nu er du klar.</translation> <translation id="2805646850212350655">Filsystem til Microsoft-kryptering</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Yderligere oplysninger</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Screenshottet blev gemt</translation> <translation id="3742666961763734085">Der kunne ikke findes nogen organisationsenhed med det pågældende navn. Prøv igen.</translation> <translation id="3744111561329211289">Synkronisering i baggrunden</translation> +<translation id="3747077776423672805">Hvis du vil fjerne apps, skal du gå til Indstillinger > Google Play Butik > Administrer dine Android-præferencer > Apps eller Administration af apps. Tryk derefter på den app, du vil afinstallere (du skal muligvis stryge til højre eller venstre for at finde appen). Tryk derefter på Afinstaller eller Deaktiver.</translation> <translation id="3748026146096797577">Ikke forbundet</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mine enheder</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Du bruger en sikkerhedsnøgle, som ikke er registreret på dette website</translation> <translation id="4788092183367008521">Tjek din netværksforbindelse, og prøv igen.</translation> <translation id="4792711294155034829">&Rapporter et problem...</translation> -<translation id="4795022432560487924">Send brugs- og diagnosticeringsdata. Hjælp med at forbedre dit barns Android-oplevelse ved automatisk at sende diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Denne indstilling håndhæves af ejeren. Ejeren kan vælge at sende diagnosticerings- og brugsdata for denne enhed til Google. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webside, kun HTML</translation> <translation id="4798236378408895261">Vedhæft <ph name="BEGIN_LINK" />Bluetooth-logfiler<ph name="END_LINK" /> (internt hos Google)</translation> <translation id="4801448226354548035">Skjul konti</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatiske downloads</translation> <translation id="5653154844073528838">Du har <ph name="PRINTER_COUNT" /> gemte printere.</translation> <translation id="5656845498778518563">Send feedback til Google</translation> +<translation id="5657156137487675418">Tillad alle cookies</translation> <translation id="5657667036353380798">Den eksterne udvidelse kræver Chrome-versionen <ph name="MINIMUM_CHROME_VERSION" /> eller nyere for at blive installeret.</translation> <translation id="5658415415603568799">Af sikkerhedshensyn beder Smart Lock dig om at angive din adgangskode efter 20 timer.</translation> <translation id="5659593005791499971">Mail</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimer</translation> <translation id="5942964813783878922">Din <ph name="DEVICE_TYPE" /> genstarter efter denne opdatering. Fremtidige software- og sikkerhedsopdateringer installeres automatisk.</translation> <translation id="5944869793365969636">Scan QR-kode</translation> -<translation id="5945188205370098537">Send brugs- og diagnosticeringsdata. Hjælp med at forbedre din Android-oplevelse ved automatisk at sende diagnosticerings- og enhedsdata samt data om brug af apps til Google. Dataene bruges til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret, gemmes disse data muligvis på din Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Rapport-id <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Filen kan ikke parses</translation> <translation id="5955282598396714173">Din adgangskode er udløbet. Log ud, og log derefter ind igen for at ændre den.</translation> @@ -3778,6 +3774,7 @@ <translation id="6185132558746749656">Enhedsplacering</translation> <translation id="6186394685773237175">Der blev ikke fundet nogen kompromitterede adgangskoder</translation> <translation id="6195693561221576702">Enheden kan ikke konfigureres i offlinedemotilstand.</translation> +<translation id="6196640612572343990">Bloker cookies fra tredjeparter</translation> <translation id="6196854373336333322">Udvidelsen <ph name="EXTENSION_NAME" /> har taget kontrol over dine proxyindstillinger, hvilket betyder, at den kan ændre, ødelægge eller aflytte alt, hvad du foretager dig på nettet. Hvis du ikke er sikker på, hvorfor denne ændring er sket, er den sandsynligvis uønsket.</translation> <translation id="6198102561359457428">Log ud, og log derefter ind igen...</translation> <translation id="6198252989419008588">Skift pinkode</translation> @@ -4444,7 +4441,6 @@ <translation id="711902386174337313">Læs listen over de enheder, hvor du er logget ind</translation> <translation id="7120865473764644444">Der kunne ikke oprettes forbindelse til synkroniseringsserveren. Prøver igen…</translation> <translation id="7121362699166175603">Rydder historikken og autofuldførelser i adresselinjen. Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Udviklertilstand</translation> <translation id="7121728544325372695">Smarte bindestreger</translation> <translation id="7123360114020465152">Printeren understøttes ikke længere</translation> @@ -4559,7 +4555,6 @@ <translation id="7280041992884344566">Der opstod en fejl i Chrome ved søgningen efter skadelig software</translation> <translation id="7280649757394340890">Taleindstillinger for oplæsning</translation> <translation id="7280877790564589615">Der er anmodet om tilladelse</translation> -<translation id="7281268427852119151">Brug din browserhistorik til at tilpasse Søgning, annoncer og andre Google-tjenester personligt til dig</translation> <translation id="7282992757463864530">Oplysningsbjælke</translation> <translation id="7287143125007575591">Adgang nægtet.</translation> <translation id="7287411021188441799">Gendan standardbaggrund</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flyt fanen til et nyt vindue}one{Flyt fanen til et nyt vindue}other{Flyt fanerne til et nyt vindue}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">side</translation> -<translation id="8180294223783876911">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Dataene bruges til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret, gemmes disse data muligvis på din Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" har læse- og sletterettigheder til billed-, video- og lydfiler på de markerede placeringer.</translation> <translation id="8181215761849004992">Enheden kunne ikke knyttes til domænet. Sørg for, at din konto har de påkrævede tilladelser til at tilføje enheder.</translation> <translation id="8182105986296479640">Appen svarer ikke.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Sende dig notifikationer og huske denne computer som standard til Beskeder. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" er blokeret af din forælder. Bed din forælder om at give dig tilladelse til at bruge denne app.</translation> <translation id="820568752112382238">Mest besøgte websites</translation> -<translation id="8206581664590136590">Send brugs- og diagnosticeringsdata. Hjælp med at forbedre dit barns Android-oplevelse ved automatisk at sende diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">BB King</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Downloaden er i gang}one{Downloaden er i gang}other{Downloadene er i gang}}</translation> @@ -5802,7 +5795,6 @@ <translation id="8912362522468806198">Google-konto</translation> <translation id="8912793549644936705">Stræk</translation> <translation id="8912810933860534797">Aktivér automatisk scanning</translation> -<translation id="891365694296252935">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Denne indstilling håndhæves af ejeren. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Indlæser forslag</translation> <translation id="8916476537757519021">Underramme for inkognitotilstand: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Bekræfter din sikkerhedsnøgle...</translation> @@ -5939,7 +5931,6 @@ <translation id="9101691533782776290">Åbn appen</translation> <translation id="9102610709270966160">Aktivér udvidelse</translation> <translation id="9103868373786083162">Tryk for at gå tilbage til genvejsmenuen for at se historik</translation> -<translation id="9104396740804929809">Send brugs- og diagnosticeringsdata. Hjælp med at forbedre din Android-oplevelse ved automatisk at sende diagnosticerings- og enhedsdata samt data om brug af apps til Google. Dataene bruges til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Denne indstilling håndhæves af ejeren. Ejeren kan vælge at sende diagnosticerings- og brugsdata for denne enhed til Google. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret, gemmes disse data muligvis på din Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Slet filer fra lageret på din enhed for at frigøre plads.</translation> <translation id="9109283579179481106">Opret forbindelse til mobilnetværk</translation> <translation id="9111102763498581341">Lås op</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 32cc5f7..409bfd7 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">Gehostete App-Daten</translation> <translation id="1776712937009046120">Nutzer hinzufügen</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Dieses Gerät wird von <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> verwaltet. - Klicken Sie auf "Weiter", um sich in Ihrem <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-Konto anzumelden.</translation> <translation id="1779652936965200207">Bitte geben Sie diesen Zugangscode auf "<ph name="DEVICE_NAME" />" ein:</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Gruppe schließen</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">Problem beim Erstellen der Druckerliste. Einige Ihrer Drucker wurden möglicherweise nicht richtig bei <ph name="CLOUD_PRINT_NAME" /> registriert.</translation> <translation id="2203682048752833055">In der <ph name="BEGIN_LINK" />Adressleiste<ph name="END_LINK" /> verwendete Suchmaschine</translation> <translation id="2204034823255629767">Ihre Eingaben lesen und ändern</translation> -<translation id="220792432208469595">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Die Daten helfen unter anderem dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Diese Einstellung wird vom Inhaber erzwungen. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" aktiviert ist, werden diese Daten eventuell in Ihrem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Geben Sie diesen PIN-Code bitte auf "<ph name="DEVICE_NAME" /> " ein:</translation> <translation id="2212565012507486665">Cookies zulassen</translation> <translation id="2213140827792212876">Freigabe beenden</translation> @@ -1339,7 +1336,6 @@ <translation id="2804043232879091219">Der alternative Browser konnte nicht geöffnet werden</translation> <translation id="2804667941345577550">Sie werden von dieser Website abgemeldet, auch in offenen Tabs</translation> <translation id="2804680522274557040">Kamera ausgeschaltet</translation> -<translation id="2805539617243680210">Fertig!</translation> <translation id="2805646850212350655">Verschlüsselndes Microsoft-Dateisystem</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Zusätzliche Informationen</translation> @@ -2017,6 +2013,7 @@ <translation id="3742055079367172538">Screenshot erstellt</translation> <translation id="3742666961763734085">Keine Organisationseinheit mit diesem Namen vorhanden. Versuchen Sie es noch einmal.</translation> <translation id="3744111561329211289">Hintergrundsynchronisierung</translation> +<translation id="3747077776423672805">Wenn Sie eine App entfernen möchten, gehen Sie zu "Einstellungen" > "Google Play Store" > "Android-Einstellungen verwalten" > "Apps" oder rufen Sie den Anwendungsmanager auf. Tippen Sie dann auf die App, die Sie deinstallieren möchten, und wählen Sie "Deinstallieren" oder "Deaktivieren" aus. Möglicherweise müssen Sie nach rechts oder links wischen, um die App zu finden.</translation> <translation id="3748026146096797577">Nicht verbunden</translation> <translation id="3752582316358263300">Ok</translation> <translation id="3752673729237782832">Meine Geräte</translation> @@ -2737,7 +2734,6 @@ <translation id="4785719467058219317">Sie verwenden einen Sicherheitsschlüssel, der nicht auf dieser Website registriert ist</translation> <translation id="4788092183367008521">Bitte überprüfen Sie die Netzwerkverbindung und versuchen Sie es noch einmal.</translation> <translation id="4792711294155034829">&Probleme melden...</translation> -<translation id="4795022432560487924">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Sie können uns helfen, Android für Ihr Kind zu verbessern, indem Sie zulassen, dass Diagnose- sowie Geräte- und App-Nutzungsdaten automatisch an Google gesendet werden. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Diese Einstellung wird vom Inhaber erzwungen. Der Inhaber kann festlegen, ob Diagnose- und Nutzungsdaten von diesem Gerät an Google gesendet werden. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webseite, nur HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth-Protokolle<ph name="END_LINK" /> anhängen (Google-intern)</translation> <translation id="4801448226354548035">Konten ausblenden</translation> @@ -3357,6 +3353,7 @@ <translation id="5649053991847567735">Auto-Downloads</translation> <translation id="5653154844073528838">Sie haben <ph name="PRINTER_COUNT" /> gespeicherte Drucker.</translation> <translation id="5656845498778518563">Feedback an Google senden</translation> +<translation id="5657156137487675418">Alle Cookies zulassen</translation> <translation id="5657667036353380798">Für die externe Erweiterung muss die Chrome-Version <ph name="MINIMUM_CHROME_VERSION" /> oder höher installiert sein.</translation> <translation id="5658415415603568799">Aus Sicherheitsgründen werden Sie von Smart Lock gebeten, Ihr Passwort nach 20 Stunden noch einmal einzugeben.</translation> <translation id="5659593005791499971">E-Mail-Adresse</translation> @@ -3563,7 +3560,6 @@ <translation id="5941711191222866238">Verkleinern</translation> <translation id="5942964813783878922">Ihr <ph name="DEVICE_TYPE" /> wird nach diesem Update neu gestartet. Künftige Software- und Sicherheitsupdates werden automatisch installiert.</translation> <translation id="5944869793365969636">QR-Code scannen</translation> -<translation id="5945188205370098537">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Sie können uns helfen, Android zu verbessern, indem Sie zulassen, dass Diagnose- sowie Geräte- und App-Nutzungsdaten automatisch an Google gesendet werden. Die Daten helfen unter anderem dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" aktiviert ist, werden diese Daten eventuell in Ihrem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Bericht-ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Datei kann nicht geparst werden</translation> <translation id="5955282598396714173">Ihr Passwort ist abgelaufen. Melden Sie sich ab und dann wieder an, um es zu ändern.</translation> @@ -3747,6 +3743,7 @@ <translation id="6185132558746749656">Gerätestandort</translation> <translation id="6186394685773237175">Keine gehackten Passwörter gefunden</translation> <translation id="6195693561221576702">Dieses Gerät kann nicht im Offlinedemomodus eingerichtet werden.</translation> +<translation id="6196640612572343990">Drittanbieter-Cookies blockieren</translation> <translation id="6196854373336333322">Die Erweiterung <ph name="EXTENSION_NAME" /> hat die Kontrolle über Ihre Proxyeinstellungen übernommen. Das bedeutet, dass sie sämtliche Onlineaktivitäten ändern, abbrechen oder überwachen kann. Wenn Sie nicht sicher sind, wie es zu dieser Änderung gekommen ist, war sie wahrscheinlich nicht beabsichtigt.</translation> <translation id="6198102561359457428">Abmelden und dann erneut anmelden...</translation> <translation id="6198252989419008588">PIN ändern</translation> @@ -4410,7 +4407,6 @@ <translation id="711902386174337313">Liste der angemeldeten Geräte lesen</translation> <translation id="7120865473764644444">Verbindung zum Synchronisierungsserver konnte nicht hergestellt werden. Neuer Versuch...</translation> <translation id="7121362699166175603">Löscht den Verlauf und Autovervollständigungen in der Adressleiste. Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation> -<translation id="7121389946694989825">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Entwicklermodus</translation> <translation id="7121728544325372695">Intelligente Gedankenstriche</translation> <translation id="7123360114020465152">Wird nicht mehr unterstützt</translation> @@ -5192,7 +5188,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Tab in ein neues Fenster verschieben}other{Tabs in ein neues Fenster verschieben}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">Seite</translation> -<translation id="8180294223783876911">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Die Daten helfen unter anderem dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" aktiviert ist, werden diese Daten eventuell in Ihrem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" kann Bilder, Video- und Sounddateien an den angegebenen Orten lesen und löschen.</translation> <translation id="8181215761849004992">Beitritt zur Domain nicht möglich. Prüfen Sie in Ihrem Konto, ob Sie Geräte hinzufügen dürfen.</translation> <translation id="8182105986296479640">App antwortet nicht.</translation> @@ -5214,7 +5209,6 @@ <translation id="8203732864715032075">Messages sendet Benachrichtigungen und merkt sich diesen Computer. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> wurde von einem Elternteil blockiert. Bitte deine Eltern um Erlaubnis, diese App zu nutzen.</translation> <translation id="820568752112382238">Am häufigsten besuchte Websites</translation> -<translation id="8206581664590136590">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Sie können uns helfen, Android für Ihr Kind zu verbessern, indem Sie zulassen, dass Diagnose- sowie Geräte- und App-Nutzungsdaten automatisch an Google gesendet werden. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blues</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download wird ausgeführt}other{Downloads werden ausgeführt}}</translation> @@ -5754,7 +5748,6 @@ <translation id="8912362522468806198">Google-Konto</translation> <translation id="8912793549644936705">Strecken</translation> <translation id="8912810933860534797">Automatischen Scan aktivieren</translation> -<translation id="891365694296252935">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Diese Einstellung wird vom Inhaber erzwungen. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Vorschläge werden geladen</translation> <translation id="8916476537757519021">Inkognito-Subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Sicherheitsschlüssel wird geprüft…</translation> @@ -5891,7 +5884,6 @@ <translation id="9101691533782776290">App starten</translation> <translation id="9102610709270966160">Erweiterung aktivieren</translation> <translation id="9103868373786083162">Drücken, um zurückzugehen. Kontextmenü, um Verlauf aufzurufen</translation> -<translation id="9104396740804929809">Du hast die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Du kannst uns helfen, Android zu verbessern, indem du zulässt, dass Diagnose- sowie Geräte- und App-Nutzungsdaten automatisch an Google gesendet werden. Die Daten helfen unter anderem dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Diese Einstellung wird vom Inhaber erzwungen. Der Inhaber kann festlegen, ob Diagnose- und Nutzungsdaten von diesem Gerät an Google gesendet werden. Wenn zusätzlich die Einstellung "Web- & App-Aktivitäten" aktiviert ist, werden diese Daten eventuell in deinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Löschen Sie Dateien aus dem Gerätespeicher, um Speicherplatz freizugeben.</translation> <translation id="9109283579179481106">Verbindung mit Mobilfunknetz herstellen</translation> <translation id="9111102763498581341">Entsperren</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 3fab62c0..7d69f7320 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Δεδομένα φιλοξενούμενης εφαρμογής</translation> <translation id="1776712937009046120">Προσθήκη χρήστη</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Η διαχείριση αυτής της συσκευής γίνεται από τον τομέα <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Κάντε κλικ στο κουμπί Επόμενο, για να συνεχίσετε τη σύνδεση στον λογαριασμό σας <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Εισαγάγετε αυτό το κλειδί πρόσβασης στη συσκευή "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Εφαρμογή (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Κλείσιμο ομάδας</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Προέκυψε πρόβλημα κατά την καταχώριση εκτυπωτών. Μερικοί από τους εκτυπωτές σας ενδέχεται να μην έχουν καταχωρηθεί σωστά με το <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Μηχανή αναζήτησης που χρησιμοποιείται στη <ph name="BEGIN_LINK" />γραμμή διεύθυνσης<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Ανάγνωση και αλλαγή όσων πληκτρολογείτε</translation> -<translation id="220792432208469595">Αποστολή δεδομένων χρήσης και διαγνωστικών. Επί του παρόντος, αυτή η συσκευή στέλνει αυτόματα διαγνωστικά δεδομένα, δεδομένα συσκευής και χρήσης εφαρμογών στην Google. Με αυτόν τον τρόπο βελτιώνεται η σταθερότητα του συστήματος και των εφαρμογών και παρέχονται επιπλέον βελτιώσεις. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Αυτή η ρύθμιση επιβάλλεται από τον κάτοχο. Εάν η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών είναι ενεργοποιημένη, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό σας Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Εισαγάγετε αυτόν τον κωδικό PIN στη συσκευή "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Αποδοχή cookie</translation> <translation id="2213140827792212876">Κατάργηση κοινοποίησης</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Δεν ήταν δυνατό το άνοιγμα του εναλλακτικού προγράμματος περιήγησης</translation> <translation id="2804667941345577550">Θα αποσυνδεθείτε από αυτόν τον ιστότοπο, συμπεριλαμβανομένων όσων εμφανίζονται σε ανοικτές καρτέλες</translation> <translation id="2804680522274557040">Απενεργοποιημένη κάμερα</translation> -<translation id="2805539617243680210">Είστε έτοιμοι!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Εφαρμογές </translation> <translation id="2805770823691782631">Πρόσθετες λεπτομέρειες</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Το στιγμιότυπο οθόνης έχει ληφθεί</translation> <translation id="3742666961763734085">Δεν είναι δυνατή η εύρεση μιας μονάδας οργάνωσης με αυτό το όνομα. Προσπαθήστε ξανά.</translation> <translation id="3744111561329211289">Συγχρονισμός παρασκηνίου</translation> +<translation id="3747077776423672805">Για να καταργήσετε εφαρμογές, μεταβείτε στις Ρυθμίσεις > Google Play Store > Διαχείριση προτιμήσεων Android > Εφαρμογές ή Διαχείριση εφαρμογών. Έπειτα, πατήστε την εφαρμογή που θέλετε να απεγκαταστήσετε (μπορεί να χρειαστεί να σύρετε προς τα δεξιά ή προς τα αριστερά για να βρείτε την εφαρμογή). Στη συνέχεια, πατήστε Απεγκατάσταση ή Απενεργοποίηση.</translation> <translation id="3748026146096797577">Εκτός σύνδεσης</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Οι συσκευές μου</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Χρησιμοποιείτε ένα κλειδί ασφαλείας το οποίο δεν είναι εγγεγραμμένο σε αυτόν τον ιστότοπο</translation> <translation id="4788092183367008521">Ελέγξτε τη σύνδεση δικτύου σας και δοκιμάστε ξανά.</translation> <translation id="4792711294155034829">&Αναφορά προβλήματος...</translation> -<translation id="4795022432560487924">Αποστολή δεδομένων χρήσης και διαγνωστικών. Συμβάλλετε στη βελτίωση της εμπειρίας Android του παιδιού σας με την αυτόματη αποστολή διαγνωστικών δεδομένων και δεδομένων συσκευής και χρήσης εφαρμογών στην Google. Αυτά τα δεδομένα δεν θα χρησιμοποιηθούν για την ταυτοποίηση του παιδιού σας και θα βοηθήσουν με τη σταθερότητα του συστήματος και των εφαρμογών και την παροχή άλλων βελτιώσεων. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Αυτή η ρύθμιση επιβάλλεται από τον κάτοχο. Ο κάτοχος μπορεί να επιλέξει να στέλνει διαγνωστικά δεδομένα και δεδομένα χρήσης για αυτήν τη συσκευή στην Google. Εάν είναι ενεργή η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Ιστοσελίδα, μόνο HTML</translation> <translation id="4798236378408895261">Επισυνάψτε <ph name="BEGIN_LINK" />αρχεία καταγραφής Bluetooth<ph name="END_LINK" /> (για εσωτερική χρήση από την Google)</translation> <translation id="4801448226354548035">Απόκρυψη λογαριασμών</translation> @@ -3385,6 +3381,7 @@ <translation id="5649053991847567735">Αυτόματες λήψεις</translation> <translation id="5653154844073528838">Έχετε <ph name="PRINTER_COUNT" /> αποθηκευμένους εκτυπωτές.</translation> <translation id="5656845498778518563">Αποστολή σχολίων στην Google</translation> +<translation id="5657156137487675418">Επιτρέπονται όλα τα cookies</translation> <translation id="5657667036353380798">Η εξωτερική επέκταση απαιτεί την εγκατάσταση έκδοσης chrome <ph name="MINIMUM_CHROME_VERSION" /> ή μεταγενέστερης.</translation> <translation id="5658415415603568799">Για πρόσθετη ασφάλεια, το Smart Lock θα σας ζητήσει να καταχωρίσετε τον κωδικό πρόσβασης μετά από 20 ώρες.</translation> <translation id="5659593005791499971">Διεύθυνση ηλεκτρονικού ταχυδρομείου</translation> @@ -3592,7 +3589,6 @@ <translation id="5941711191222866238">Ελαχιστοποίηση</translation> <translation id="5942964813783878922">Η συσκευή <ph name="DEVICE_TYPE" /> θα επανεκκινηθεί μετά από αυτήν την ενημέρωση. Οι μελλοντικές ενημερώσεις λογισμικού και ασφαλείας θα εγκαθίστανται αυτόματα.</translation> <translation id="5944869793365969636">Σάρωση κωδικού QR</translation> -<translation id="5945188205370098537">Αποστολή δεδομένων χρήσης και διαγνωστικών. Συμβάλετε στη βελτίωση της εμπειρίας Android με αυτόματη αποστολή διαγνωστικών δεδομένων και δεδομένων συσκευής και χρήσης εφαρμογών στην Google. Με αυτόν τον τρόπο βελτιώνεται η σταθερότητα του συστήματος και των εφαρμογών και παρέχονται επιπλέον βελτιώσεις. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Εάν η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών είναι ενεργοποιημένη, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό σας Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Αναγνωριστικό αναφοράς <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Δεν είναι δυνατή η ανάλυση του αρχείου</translation> <translation id="5955282598396714173">Ο κωδικός πρόσβασής σας έληξε. Αποσυνδεθείτε και συνδεθείτε ξανά για να τον αλλάξετε.</translation> @@ -3778,6 +3774,7 @@ <translation id="6185132558746749656">Τοποθεσία συσκευής</translation> <translation id="6186394685773237175">Δεν βρέθηκαν παραβιασμένοι κωδικοί πρόσβασης.</translation> <translation id="6195693561221576702">Δεν είναι δυνατή η ρύθμιση αυτής της συσκευής σε λειτουργία επίδειξης εκτός σύνδεσης.</translation> +<translation id="6196640612572343990">Αποκλεισμός cookie τρίτων</translation> <translation id="6196854373336333322">Η επέκταση "<ph name="EXTENSION_NAME" />" ελέγχει τις ρυθμίσεις διακομιστή μεσολάβησης. Αυτό σημαίνει ότι μπορεί να αλλάξει, να διακόψει ή να παρακολουθήσει όλες τις ενέργειες που εκτελείτε στο διαδίκτυο. Εάν δεν είστε βέβαιοι για το λόγο αυτής της αλλαγής, πιθανότατα να μην την επιθυμούσατε.</translation> <translation id="6198102561359457428">Αποσυνδεθείτε και συνδεθείτε ξανά...</translation> <translation id="6198252989419008588">Αλλαγή PIN</translation> @@ -4444,7 +4441,6 @@ <translation id="711902386174337313">Ανάγνωση της λίστας με τις συνδεδεμένες συσκευές σας</translation> <translation id="7120865473764644444">Δεν ήταν δυνατή η σύνδεση στον διακομιστή συγχρονισμού. Επανάληψη…</translation> <translation id="7121362699166175603">Διαγράφει το ιστορικό και τα στοιχεία αυτόματης συμπλήρωσης στη γραμμή διευθύνσεων. Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Αποστολή δεδομένων χρήσης και διαγνωστικών. Επί του παρόντος, αυτή η συσκευή στέλνει αυτόματα διαγνωστικά δεδομένα, δεδομένα συσκευής και χρήσης εφαρμογών στην Google. Αυτά τα δεδομένα δεν θα χρησιμοποιηθούν για την ταυτοποίηση του παιδιού σας και θα βοηθήσουν με τη σταθερότητα του συστήματος και των εφαρμογών και την παροχή άλλων βελτιώσεων. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Εάν είναι ενεργή η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Λειτουργία προγραμματιστή</translation> <translation id="7121728544325372695">Έξυπνες παύλες</translation> <translation id="7123360114020465152">Δεν υποστηρίζεται πλέον</translation> @@ -4559,7 +4555,6 @@ <translation id="7280041992884344566">Παρουσιάστηκε ένα σφάλμα κατά την αναζήτηση επιβλαβούς λογισμικού από το Chrome</translation> <translation id="7280649757394340890">Ρυθμίσεις φωνής μετατροπής κειμένου σε ομιλία</translation> <translation id="7280877790564589615">Αίτημα άδειας</translation> -<translation id="7281268427852119151">Χρησιμοποιήστε το ιστορικό περιήγησης για εξατομίκευση της Αναζήτησης, των διαφημίσεων και των υπηρεσιών Google</translation> <translation id="7282992757463864530">Γραμμή πληροφοριών</translation> <translation id="7287143125007575591">Δεν επιτρέπεται η πρόσβαση.</translation> <translation id="7287411021188441799">Επαναφορά προεπιλεγμένου φόντου</translation> @@ -5234,7 +5229,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Μετακίνηση καρτέλας σε νέο παράθυρο}other{Μετακίνηση καρτελών σε νέο παράθυρο}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">σελίδα</translation> -<translation id="8180294223783876911">Αποστολή δεδομένων χρήσης και διαγνωστικών. Επί του παρόντος, αυτή η συσκευή στέλνει αυτόματα διαγνωστικά δεδομένα, δεδομένα συσκευής και χρήσης εφαρμογών στην Google. Με αυτόν τον τρόπο βελτιώνεται η σταθερότητα του συστήματος και των εφαρμογών και παρέχονται επιπλέον βελτιώσεις. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Εάν η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών είναι ενεργοποιημένη, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό σας Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Η επέκταση "<ph name="EXTENSION" />" μπορεί να διαβάσει και να εγγράψει εικόνες, βίντεο και αρχεία ήχου σε επιλεγμένες τοποθεσίες.</translation> <translation id="8181215761849004992">Δεν είναι δυνατή η σύνδεση στον τομέα. Ελέγξτε τον λογαριασμό σας, για να δείτε εάν έχετε επαρκή προνόμια για την προσθήκη συσκευών.</translation> <translation id="8182105986296479640">Η εφαρμογή δεν αποκρίνεται.</translation> @@ -5256,7 +5250,6 @@ <translation id="8203732864715032075">Να λαμβάνετε ειδοποιήσεις και να οριστεί ως προεπιλογή η απομνημόνευση αυτού του υπολογιστή για τα Μηνύματα. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Η εφαρμογή <ph name="APP_NAME" /> έχει αποκλειστεί από τον γονέα σου. Ζήτησε άδεια από τον γονέα σου για να χρησιμοποιήσεις την εφαρμογή.</translation> <translation id="820568752112382238">Ιστότοποι με τις περισσότερες επισκέψεις</translation> -<translation id="8206581664590136590">Αποστολή δεδομένων χρήσης και διαγνωστικών. Συμβάλλετε στη βελτίωση της εμπειρίας Android του παιδιού σας με την αυτόματη αποστολή διαγνωστικών δεδομένων και δεδομένων συσκευής και χρήσης εφαρμογών στην Google. Αυτά τα δεδομένα δεν θα χρησιμοποιηθούν για την ταυτοποίηση του παιδιού σας και θα βοηθήσουν με τη σταθερότητα του συστήματος και των εφαρμογών και την παροχή άλλων βελτιώσεων. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Εάν είναι ενεργή η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Μπλουζ</translation> <translation id="8206859287963243715">Κινητό</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Λήψη σε εξέλιξη}other{Λήψεις σε εξέλιξη}}</translation> @@ -5800,7 +5793,6 @@ <translation id="8912362522468806198">Λογαριασμός Google</translation> <translation id="8912793549644936705">Επέκταση</translation> <translation id="8912810933860534797">Ενεργοποίηση αυτόματης σάρωσης</translation> -<translation id="891365694296252935">Αποστολή δεδομένων χρήσης και διαγνωστικών. Επί του παρόντος, αυτή η συσκευή στέλνει αυτόματα διαγνωστικά δεδομένα, δεδομένα συσκευής και χρήσης εφαρμογών στην Google. Αυτά τα δεδομένα δεν θα χρησιμοποιηθούν για την ταυτοποίηση του παιδιού σας και θα βοηθήσουν με τη σταθερότητα του συστήματος και των εφαρμογών και την παροχή άλλων βελτιώσεων. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Αυτή η ρύθμιση επιβάλλεται από τον κάτοχο. Εάν είναι ενεργή η πρόσθετη Δραστηριότητα ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Φόρτωση πρότασης</translation> <translation id="8916476537757519021">Υποπλαίσιο ανώνυμης περιήγησης: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Επαλήθευση του κλειδιού ασφαλείας σας…</translation> @@ -5937,7 +5929,6 @@ <translation id="9101691533782776290">Εκκίνηση εφαρμογής</translation> <translation id="9102610709270966160">Ενεργοποίηση επέκτασης</translation> <translation id="9103868373786083162">Πατήστε για να επιστρέψετε στο μενού περιβάλλοντος για να δείτε το ιστορικό</translation> -<translation id="9104396740804929809">Αποστολή δεδομένων χρήσης και διαγνωστικών. Συμβάλετε στη βελτίωση της εμπειρίας Android με αυτόματη αποστολή διαγνωστικών δεδομένων και δεδομένων συσκευής και χρήσης εφαρμογών στην Google. Με αυτόν τον τρόπο βελτιώνεται η σταθερότητα του συστήματος και των εφαρμογών και παρέχονται επιπλέον βελτιώσεις. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Αυτή η ρύθμιση επιβάλλεται από τον κάτοχο. Ο κάτοχος μπορεί να επιλέξει να στέλνει διαγνωστικά δεδομένα και δεδομένα χρήσης για αυτήν τη συσκευή στην Google. Εάν η ρύθμιση της πρόσθετης Δραστηριότητας ιστού και εφαρμογών είναι ενεργοποιημένη, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό σας Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Για να ελευθερώσετε χώρο, διαγράψτε αρχεία από τον αποθηκευτικό χώρο της συσκευής.</translation> <translation id="9109283579179481106">Σύνδεση σε δίκτυο κινητής τηλεφωνίας</translation> <translation id="9111102763498581341">Ξεκλείδωμα</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 7620355..769b17e 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Hosted app data</translation> <translation id="1776712937009046120">Add user</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">This device is managed by <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Please click 'Next' to continue signing in to your <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> account.</translation> <translation id="1779652936965200207">Please enter this passkey on "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880"><ph name="ANDROID_PACKAGE_NAME" />, app</translation> <translation id="1780152987505130652">Close Group</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">There was a problem while listing printers. Some of your printers may not have registered successfully with <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Search engine used in the <ph name="BEGIN_LINK" />address bar<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Read and change anything that you type</translation> -<translation id="220792432208469595">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. If your additional Web & App Activity setting is turned on, this data may be saved to your Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Please enter this PIN code on "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Allow cookies</translation> <translation id="2213140827792212876">Remove sharing</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">The alternative browser could not be opened</translation> <translation id="2804667941345577550">You’ll be signed out of this site, including in open tabs</translation> <translation id="2804680522274557040">Camera turned off</translation> -<translation id="2805539617243680210">You're ready!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Additional details</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Screenshot taken</translation> <translation id="3742666961763734085">Can’t find an organisational unit with that name. Please try again.</translation> <translation id="3744111561329211289">Background sync</translation> +<translation id="3747077776423672805">To remove apps, go to Settings > Google Play Store > Manage Android preferences > Apps or Application manager. Then tap the app that you want to uninstall (you may need to swipe right or left to find the app). Then tap Uninstall or Disable.</translation> <translation id="3748026146096797577">Not Connected</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">My devices</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">You're using a security key that's not registered with this website</translation> <translation id="4788092183367008521">Please check your network connection and try again.</translation> <translation id="4792711294155034829">&Report an Issue...</translation> -<translation id="4795022432560487924">Send usage and diagnostic data. Help improve your child's Android experience by automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. The owner may choose to send diagnostic and usage data for this device to Google. If additional Web & App Activity setting is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Web Page, HTML Only</translation> <translation id="4798236378408895261">Attach <ph name="BEGIN_LINK" />Bluetooth Logs<ph name="END_LINK" /> (Google internal)</translation> <translation id="4801448226354548035">Hide accounts</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatic downloads</translation> <translation id="5653154844073528838">You have <ph name="PRINTER_COUNT" /> saved printers.</translation> <translation id="5656845498778518563">Send Feedback to Google</translation> +<translation id="5657156137487675418">Allow all cookies</translation> <translation id="5657667036353380798">The external extension requires chrome version <ph name="MINIMUM_CHROME_VERSION" /> or greater to be installed.</translation> <translation id="5658415415603568799">For added security, Smart Lock will ask you to enter your password after 20 hours.</translation> <translation id="5659593005791499971">Email</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimise</translation> <translation id="5942964813783878922">Your <ph name="DEVICE_TYPE" /> will restart after this update. Future software and security updates will install automatically.</translation> <translation id="5944869793365969636">Scan QR code</translation> -<translation id="5945188205370098537">Send usage and diagnostic data. Help improve your Android experience by automatically sending diagnostic, device and app usage data to Google. This will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If your additional Web & App Activity setting is turned on, this data may be saved to your Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Report ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Unable to parse file</translation> <translation id="5955282598396714173">Your password has expired. Please sign out then sign in again to change it.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Device Location</translation> <translation id="6186394685773237175">No compromised passwords found</translation> <translation id="6195693561221576702">This device cannot be set up in offline demo mode.</translation> +<translation id="6196640612572343990">Block third-party cookies</translation> <translation id="6196854373336333322">The extension "<ph name="EXTENSION_NAME" />" has taken control of your proxy settings, which means it can change, break or eavesdrop on anything you do online. If you aren't sure why this change happened, you probably don't want it.</translation> <translation id="6198102561359457428">Sign out then sign in again...</translation> <translation id="6198252989419008588">Change PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Read the list of your signed-in devices</translation> <translation id="7120865473764644444">Couldn't connect to the sync server. Retrying...</translation> <translation id="7121362699166175603">Clears history and auto-completions in the address bar. Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If additional Web & App Activity setting is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Developer mode</translation> <translation id="7121728544325372695">Smart Dashes</translation> <translation id="7123360114020465152">No longer supported</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">An error occurred while Chrome was searching for harmful software</translation> <translation id="7280649757394340890">Text-to-Speech voice settings</translation> <translation id="7280877790564589615">Permission requested</translation> -<translation id="7281268427852119151">Use your browsing history to personalise Search, ads and other Google services</translation> <translation id="7282992757463864530">Infobar</translation> <translation id="7287143125007575591">Access denied</translation> <translation id="7287411021188441799">Restore default background</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Move tab to new window}other{Move tabs to new window}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">page</translation> -<translation id="8180294223783876911">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If your additional Web & App Activity setting is turned on, this data may be saved to your Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" can read and delete images, video and sound files in the ticked locations.</translation> <translation id="8181215761849004992">Can't join the domain. Check your account to see if you have sufficient privileges to add devices.</translation> <translation id="8182105986296479640">Application not responding.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Send you notifications and default to remembering this computer for Messages. <ph name="LINK_BEGIN" />Find out more<ph name="LINK_END" /></translation> <translation id="8204129288640092672">'<ph name="APP_NAME" />' is blocked by your parent. Ask your parent for permission to use this app.</translation> <translation id="820568752112382238">Most-visited sites</translation> -<translation id="8206581664590136590">Send usage and diagnostic data. Help improve your child's Android experience by automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If additional Web & App Activity setting is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Mobile</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download is in progress}other{Downloads are in progress}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google Account</translation> <translation id="8912793549644936705">Stretch</translation> <translation id="8912810933860534797">Enable auto-scan</translation> -<translation id="891365694296252935">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. If additional Web & App Activity is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Loading suggestion</translation> <translation id="8916476537757519021">Incognito Subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verifying your security key...</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Launch app</translation> <translation id="9102610709270966160">Enable Extension</translation> <translation id="9103868373786083162">Press to go back, context menu to see history</translation> -<translation id="9104396740804929809">Send usage and diagnostic data. Help improve your Android experience by automatically sending diagnostic, device and app usage data to Google. This will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. The owner may choose to send diagnostic and usage data for this device to Google. If your additional Web & App Activity setting is turned on, this data may be saved to your Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">To free up space, delete files from device storage.</translation> <translation id="9109283579179481106">Connect to mobile network</translation> <translation id="9111102763498581341">Unlock</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index cff03f9..8fca6905 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">Datos de aplicaciones alojadas</translation> <translation id="1776712937009046120">Agregar usuario</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> administra este dispositivo. - Haz clic en "Siguiente" para continuar con el acceso a tu cuenta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Ingresa esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Cerrar grupo</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">Hubo un problema al enumerar las impresoras. Algunas de tus impresoras pueden no haberse registrado con éxito con <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">El motor de búsqueda que se usa en la <ph name="BEGIN_LINK" />barra de direcciones<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Leer y cambiar todo lo que escribas</translation> -<translation id="220792432208469595">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. El propietario controla esta configuración. Si habilitaste la "Actividad de web y de aplicaciones adicional", es posible que se almacenen estos datos en tu Cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Ingresa este código PIN en "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2213140827792212876">Dejar de compartir</translation> @@ -1340,7 +1337,6 @@ <translation id="2804043232879091219">No se pudo abrir el otro navegador</translation> <translation id="2804667941345577550">Saldrás de este sitio y de las pestañas abiertas</translation> <translation id="2804680522274557040">Se desactivó la cámara</translation> -<translation id="2805539617243680210">¡Todo listo!</translation> <translation id="2805646850212350655">Sistema de encriptación de archivos de Microsoft</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805770823691782631">Detalles adicionales</translation> @@ -2018,6 +2014,7 @@ <translation id="3742055079367172538">Captura de pantalla tomada</translation> <translation id="3742666961763734085">No se encontró ninguna unidad organizacional con ese nombre. Vuelve a intentarlo.</translation> <translation id="3744111561329211289">Sincronización en segundo plano</translation> +<translation id="3747077776423672805">Para quitar apps, ve a Configuración > Google Play Store > Administrar preferencias de Android > Apps o Administrador de aplicaciones. Luego, presiona la app que quieras desinstalar (es posible que debas deslizar el dedo hacia la derecha o la izquierda para encontrarla). A continuación, presiona Desinstalar o Inhabilitar.</translation> <translation id="3748026146096797577">Sin conexión</translation> <translation id="3752582316358263300">Aceptar</translation> <translation id="3752673729237782832">Mis dispositivos</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">Estás usando una llave de seguridad que no se registró con este sitio web</translation> <translation id="4788092183367008521">Comprueba la conexión de red y vuelve a intentarlo.</translation> <translation id="4792711294155034829">Informar de un &problema...</translation> -<translation id="4795022432560487924">Envía datos de uso y diagnóstico. Para ayudar a mejorar la experiencia de Android de tu hijo, envía a Google datos de diagnóstico y uso de dispositivos y apps de forma automática. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. El propietario controla esta configuración. Es posible que el propietario decida enviar a Google datos de uso y diagnóstico de este dispositivo. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Página web, HTML únicamente</translation> <translation id="4798236378408895261">Adjuntar <ph name="BEGIN_LINK" />registros de Bluetooth<ph name="END_LINK" /> (para uso interno de Google)</translation> <translation id="4801448226354548035">Ocultar cuentas</translation> @@ -3358,6 +3354,7 @@ <translation id="5649053991847567735">Descargas automáticas</translation> <translation id="5653154844073528838">Tienes <ph name="PRINTER_COUNT" /> impresoras guardadas.</translation> <translation id="5656845498778518563">Enviar comentarios a Google</translation> +<translation id="5657156137487675418">Mostrar todas las cookies</translation> <translation id="5657667036353380798">La extensión externa requiere que esté instalada la versión <ph name="MINIMUM_CHROME_VERSION" /> o una versión posterior de Chrome.</translation> <translation id="5658415415603568799">Para mejorar la seguridad, Smart Lock te pedirá que ingreses tu contraseña después de 20 horas.</translation> <translation id="5659593005791499971">Correo electrónico</translation> @@ -3564,7 +3561,6 @@ <translation id="5941711191222866238">Minimizar</translation> <translation id="5942964813783878922">Tu <ph name="DEVICE_TYPE" /> se reiniciará después de esta actualización. Se instalarán automáticamente las futuras versiones del software y las actualizaciones de seguridad.</translation> <translation id="5944869793365969636">Escanea el código QR</translation> -<translation id="5945188205370098537">Envía datos de uso y diagnóstico. Para ayudar a mejorar tu experiencia de Android, envía a Google datos de diagnóstico y uso de dispositivos y apps de forma automática. Esta información ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional", es posible que se almacenen estos datos en tu Cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID de informe: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">No se puede analizar el archivo</translation> <translation id="5955282598396714173">Tu contraseña caducó. Para cambiarla, sal de la cuenta y vuelve a acceder.</translation> @@ -3748,6 +3744,7 @@ <translation id="6185132558746749656">Ubicación del dispositivo</translation> <translation id="6186394685773237175">No se encontraron contraseñas hackeadas</translation> <translation id="6195693561221576702">Este dispositivo no puede configurarse en el modo de demostración sin conexión.</translation> +<translation id="6196640612572343990">Bloquear cookies de terceros</translation> <translation id="6196854373336333322">La extensión "<ph name="EXTENSION_NAME" />" tomó el control de la configuración de proxy, lo que significa que puede modificar, dañar o espiar cualquier actividad que lleves a cabo en línea. Si no sabes con certeza por qué se produjo este cambio, probablemente no lo desees.</translation> <translation id="6198102561359457428">Salir y volver a acceder</translation> <translation id="6198252989419008588">Cambiar PIN</translation> @@ -4411,7 +4408,6 @@ <translation id="711902386174337313">Leer la lista de los dispositivos a los que accediste</translation> <translation id="7120865473764644444">No se pudo conectar al servidor de sincronización. Intentando nuevamente…</translation> <translation id="7121362699166175603">Borra el historial y las sugerencias de autocompletado en la barra de direcciones. Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modo de desarrollador</translation> <translation id="7121728544325372695">Guiones inteligentes</translation> <translation id="7123360114020465152">Ya no es compatible</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover la pestaña a una ventana nueva}other{Mover las pestañas a una ventana nueva}}</translation> <translation id="8179976553408161302">Intro</translation> <translation id="8180239481735238521">página</translation> -<translation id="8180294223783876911">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional", es posible que se almacenen estos datos en tu Cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" puede leer y eliminar imágenes, videos y archivos de sonido en las ubicaciones marcadas.</translation> <translation id="8181215761849004992">No se puede unir al dominio. Verifica que tu cuenta tenga privilegios suficientes para agregar dispositivos.</translation> <translation id="8182105986296479640">La app no responde.</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">Te envía notificaciones y establece esta computadora como la opción predeterminada para la app de Mensajes. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Tu padre o madre bloqueó "<ph name="APP_NAME" />". Si quieres usar esa app, pídele permiso.</translation> <translation id="820568752112382238">Sitios más visitados</translation> -<translation id="8206581664590136590">Envía datos de uso y diagnóstico. Para ayudar a mejorar la experiencia de Android de tu hijo, envía a Google datos de diagnóstico y uso de dispositivos y apps de forma automática. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Musical</translation> <translation id="8206859287963243715">Celular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descarga en curso}other{Descargas en curso}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Cuenta de Google</translation> <translation id="8912793549644936705">Expandir</translation> <translation id="8912810933860534797">Habilitar la búsqueda automática</translation> -<translation id="891365694296252935">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. El propietario controla esta configuración. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Cargando sugerencia</translation> <translation id="8916476537757519021">Submarco incógnito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verificando la llave de seguridad…</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">Iniciar aplicación</translation> <translation id="9102610709270966160">Habilitar extensión</translation> <translation id="9103868373786083162">Presiona para retroceder; usa el menú contextual para consultar el historial</translation> -<translation id="9104396740804929809">Envía datos de uso y diagnóstico. Para ayudar a mejorar tu experiencia de Android, envía a Google datos de diagnóstico y uso de dispositivos y apps de forma automática. Esta información ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. El propietario controla esta configuración. Es posible que el propietario decida enviar a Google datos de uso y diagnóstico de este dispositivo. Si habilitaste la "Actividad de web y de aplicaciones adicional", es posible que se almacenen estos datos en tu Cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Para liberar espacio, borra archivos del almacenamiento del dispositivo.</translation> <translation id="9109283579179481106">Conéctate a una red móvil</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index ff1d826..76b27ea 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Datos de aplicaciones alojadas</translation> <translation id="1776712937009046120">Añadir usuario</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Este dispositivo está administrado por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Haz clic en Siguiente para seguir iniciando sesión con tu cuenta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Introduce esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplicación (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Cerrar grupo</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Se ha producido un error al mostrar las impresoras. Es posible que algunas impresoras no se hayan registrado correctamente en <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Buscador utilizado en la <ph name="BEGIN_LINK" />barra de direcciones<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Leer y modificar todo lo que escribas</translation> -<translation id="220792432208469595">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos servirán para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. El propietario ha aplicado este ajuste. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en tu cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Introduce este código PIN en "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2213140827792212876">Dejar de compartir</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">No se ha podido abrir el navegador alternativo</translation> <translation id="2804667941345577550">Se cerrará tu sesión en este sitio web (también en las pestañas abiertas)</translation> <translation id="2804680522274557040">Cámara desactivada</translation> -<translation id="2805539617243680210">¡Todo listo!</translation> <translation id="2805646850212350655">Sistema de archivos de cifrado de Microsoft</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805770823691782631">Información adicional</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Captura de pantalla hecha</translation> <translation id="3742666961763734085">No se puede encontrar una unidad organizativa con ese nombre. Inténtalo de nuevo.</translation> <translation id="3744111561329211289">Sincronización en segundo plano</translation> +<translation id="3747077776423672805">Para desinstalar aplicaciones, ve a Ajustes > Google Play Store > Gestionar las preferencias de Android > Aplicaciones o Administrador de aplicaciones. A continuación, toca la aplicación que quieras desinstalar (es posible que tengas que deslizar el dedo hacia la derecha o hacia la izquierda para encontrar la aplicación) y toca Desinstalar o Inhabilitar.</translation> <translation id="3748026146096797577">No conectado</translation> <translation id="3752582316358263300">Aceptar...</translation> <translation id="3752673729237782832">Mis dispositivos</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Estás usando una llave de seguridad que no se ha registrado en este sitio web</translation> <translation id="4788092183367008521">Revisa tu conexión de red y vuelve a intentarlo.</translation> <translation id="4792711294155034829">&Notificar un error...</translation> -<translation id="4795022432560487924">Enviar datos de uso y diagnóstico. Contribuye a mejorar la experiencia de Android de tu hijo enviando automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. El propietario ha aplicado este ajuste. El propietario puede elegir si se envían a Google datos de uso y diagnóstico de este dispositivo. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Página web (solo HTML)</translation> <translation id="4798236378408895261">Adjuntar <ph name="BEGIN_LINK" />registros de Bluetooth<ph name="END_LINK" /> (opción interna de Google)</translation> <translation id="4801448226354548035">Ocultar cuentas</translation> @@ -3383,6 +3379,7 @@ <translation id="5649053991847567735">Descargas automáticas</translation> <translation id="5653154844073528838">Tienes <ph name="PRINTER_COUNT" /> impresoras guardadas.</translation> <translation id="5656845498778518563">Enviar comentarios a Google</translation> +<translation id="5657156137487675418">Permitir todas las cookies</translation> <translation id="5657667036353380798">La extensión externa requiere que esté instalada la versión <ph name="MINIMUM_CHROME_VERSION" /> o una versión posterior de Chrome.</translation> <translation id="5658415415603568799">Para mayor seguridad, Smart Lock te pedirá que introduzcas la contraseña después de 20 horas.</translation> <translation id="5659593005791499971">Correo electrónico</translation> @@ -3590,7 +3587,6 @@ <translation id="5941711191222866238">Minimizar</translation> <translation id="5942964813783878922">Tu <ph name="DEVICE_TYPE" /> se reiniciará después de esta actualización. Las futuras actualizaciones de software y seguridad se instalarán automáticamente.</translation> <translation id="5944869793365969636">Escanear código QR</translation> -<translation id="5945188205370098537">Enviar datos de uso y diagnóstico. Contribuye a mejorar tu experiencia de Android enviando automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos servirán para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en tu cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID de informe <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">No se ha podido analizar el archivo</translation> <translation id="5955282598396714173">Tu contraseña ha caducado. Cierra la sesión y vuelve a iniciarla para cambiarla.</translation> @@ -3776,6 +3772,7 @@ <translation id="6185132558746749656">Ubicación del dispositivo</translation> <translation id="6186394685773237175">No se ha encontrado ninguna contraseña vulnerada</translation> <translation id="6195693561221576702">Este dispositivo no se puede configurar en el modo de demostración sin conexión.</translation> +<translation id="6196640612572343990">Bloquear cookies de terceros</translation> <translation id="6196854373336333322">La extensión <ph name="EXTENSION_NAME" /> ahora controla la configuración del proxy, lo que significa que puede cambiar, deshacer o espiar cualquier acción que hagas online. Si no estás seguro de los motivos por los que se ha producido este cambio, probablemente no haya sido intencionado.</translation> <translation id="6198102561359457428">Cerrar y volver a iniciar sesión...</translation> <translation id="6198252989419008588">Cambiar PIN</translation> @@ -4442,7 +4439,6 @@ <translation id="711902386174337313">Leer la lista de los dispositivos en los que has iniciado sesión</translation> <translation id="7120865473764644444">No se ha podido conectar con el servidor de sincronización. Reintentando...</translation> <translation id="7121362699166175603">Borra el historial y los autocompletados de la barra de direcciones. Es posible que tu cuenta de Google tenga otros tipos de historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modo desarrollador</translation> <translation id="7121728544325372695">Guiones inteligentes</translation> <translation id="7123360114020465152">Ya no es compatible</translation> @@ -4557,7 +4553,6 @@ <translation id="7280041992884344566">Chrome no ha podido buscar software dañino</translation> <translation id="7280649757394340890">Ajustes de voz de síntesis de voz</translation> <translation id="7280877790564589615">Permiso solicitado</translation> -<translation id="7281268427852119151">Utiliza tu historial de navegación para personalizar la Búsqueda, los anuncios y otros Servicios de Google</translation> <translation id="7282992757463864530">Barra de información</translation> <translation id="7287143125007575591">Acceso denegado</translation> <translation id="7287411021188441799">Recuperar fondo predeterminado</translation> @@ -5232,7 +5227,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover pestaña a una nueva ventana}other{Mover pestañas a una nueva ventana}}</translation> <translation id="8179976553408161302">Intro</translation> <translation id="8180239481735238521">página</translation> -<translation id="8180294223783876911">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos servirán para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en tu cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" puede leer y eliminar imágenes, vídeos y archivos de sonido en las ubicaciones seleccionadas.</translation> <translation id="8181215761849004992">No se puede vincular el dispositivo. Consulta en tu cuenta si tienes permisos suficientes para añadir dispositivos.</translation> <translation id="8182105986296479640">La aplicación no responde.</translation> @@ -5254,7 +5248,6 @@ <translation id="8203732864715032075">Recibir notificaciones en este ordenador y establecerlo como predeterminado para enviar y recibir mensajes. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Tu padre o tu madre ha bloqueado <ph name="APP_NAME" />. Pídele permiso para usar esta aplicación.</translation> <translation id="820568752112382238">Sitios web más visitados</translation> -<translation id="8206581664590136590">Enviar datos de uso y diagnóstico. Contribuye a mejorar la experiencia de Android de tu hijo enviando automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Música</translation> <translation id="8206859287963243715">Móvil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descarga en curso}other{Descargas en curso}}</translation> @@ -5800,7 +5793,6 @@ <translation id="8912362522468806198">cuenta de Google</translation> <translation id="8912793549644936705">Expandir</translation> <translation id="8912810933860534797">Habilitar búsqueda automática</translation> -<translation id="891365694296252935">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. El propietario ha aplicado este ajuste. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Cargando sugerencia</translation> <translation id="8916476537757519021">Submarco incógnito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verificando la llave de seguridad...</translation> @@ -5937,7 +5929,6 @@ <translation id="9101691533782776290">Iniciar aplicación</translation> <translation id="9102610709270966160">Habilitar extensión</translation> <translation id="9103868373786083162">Pulsa para ir hacia atrás y acceder al menú contextual para ver el historial</translation> -<translation id="9104396740804929809">Enviar datos de uso y diagnóstico. Contribuye a mejorar tu experiencia de Android enviando automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos servirán para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. El propietario ha aplicado este ajuste. El propietario puede elegir si se envían a Google datos de uso y diagnóstico de este dispositivo. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en tu cuenta de Google. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Para liberar espacio, elimina archivos del almacenamiento del dispositivo.</translation> <translation id="9109283579179481106">Conectarse a una red móvil</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index c178403..7052db7 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Hostitud rakenduste andmed</translation> <translation id="1776712937009046120">Lisa kasutaja</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Seda seadet haldab <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Domeeni <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kontole sisselogimise jätkamiseks klõpsake valikul „Järgmine”.</translation> <translation id="1779652936965200207">Sisestage seadmesse „<ph name="DEVICE_NAME" />” pääsukood:</translation> <translation id="177989070088644880">Rakendus (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Grupi sulgemine</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Printerite kirjendamisel oli viga. Mõne printeri registreerimine rakendusega <ph name="CLOUD_PRINT_NAME" /> ei õnnestunud.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Aadressiribal<ph name="END_LINK" /> kasutatud otsingumootor</translation> <translation id="2204034823255629767">Sisestatava teksti lugemine ja muutmine</translation> -<translation id="220792432208469595">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. See aitab parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Selle seade on jõustanud omanik. Kui täiendavad veebi- ja rakendustegevused on sisse lülitatud, võidakse need andmed salvestada teie Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Sisestage seadmes „<ph name="DEVICE_NAME" />” see PIN-kood:</translation> <translation id="2212565012507486665">Luba küpsisefailid</translation> <translation id="2213140827792212876">Jagamise eemaldamine</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Alternatiivset brauserit ei õnnestunud avada</translation> <translation id="2804667941345577550">Teid logitakse sellelt saidilt (sh avatud vahelehtedel) välja</translation> <translation id="2804680522274557040">Kaamera on välja lülitatud</translation> -<translation id="2805539617243680210">Kõik on valmis!</translation> <translation id="2805646850212350655">Microsofti failisüsteemi krüptimine</translation> <translation id="2805756323405976993">Rakendused</translation> <translation id="2805770823691782631">Täiendavad üksikasjad</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Ekraanipilt on tehtud</translation> <translation id="3742666961763734085">Selle nimega organisatsiooniüksust ei leitud. Proovige uuesti.</translation> <translation id="3744111561329211289">Taustal sünkroonimine</translation> +<translation id="3747077776423672805">Rakenduste eemaldamiseks avage menüü Seaded> Google Play pood > Androidi eelistuste haldamine > Rakendused või Rakenduste haldur. Seejärel puudutage rakendust, mille soovite desinstallida (rakenduse leidmiseks peate võib-olla paremale või vasakule pühkima). Seejärel puudutage käsku Desinstalli või Keela.</translation> <translation id="3748026146096797577">Ühendus puudub</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Minu seadmed</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Kasutate turvavõtit, mis ei ole sellel veebisaidil registreeritud</translation> <translation id="4788092183367008521">Kontrollige võrguühendust ja proovige uuesti.</translation> <translation id="4792711294155034829">&Teata probleemist ...</translation> -<translation id="4795022432560487924">Saada kasutus- ja diagnostikaandmeid. Aidake täiustada oma lapse Androidi kasutuskogemust, saates Google'ile automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Selle seade on jõustanud omanik. Omanik võib otsustada saata Google'ile selle seadme diagnostika- ja kasutusandmeid. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Veebileht, ainult HTML</translation> <translation id="4798236378408895261">Manusta <ph name="BEGIN_LINK" />Bluetoothi logid<ph name="END_LINK" /> (Google'ile sisemiseks kasutamiseks)</translation> <translation id="4801448226354548035">Peida kontod</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automaatsed allalaadimised</translation> <translation id="5653154844073528838">Teil on <ph name="PRINTER_COUNT" /> salvestatud printerit.</translation> <translation id="5656845498778518563">Google’ile tagasiside saatmine</translation> +<translation id="5657156137487675418">Luba kõik küpsised</translation> <translation id="5657667036353380798">Väline laiend nõuab, et installitud oleks Chrome <ph name="MINIMUM_CHROME_VERSION" /> või uuem versioon.</translation> <translation id="5658415415603568799">Turvalisuse suurendamiseks palub Smart Lock teil 20 tunni möödudes sisestada parooli.</translation> <translation id="5659593005791499971">Meil</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimeeri</translation> <translation id="5942964813783878922">Pärast värskendamist teie seade <ph name="DEVICE_TYPE" /> taaskäivitatakse. Tulevased tarkvara- ja turvavärskendused installitakse automaatselt.</translation> <translation id="5944869793365969636">QR-koodi skannimine</translation> -<translation id="5945188205370098537">Saada kasutus- ja diagnostikaandmeid. Aidake täiustada Androidi kasutuskogemust, saates Google'ile automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. See aitab parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Kui täiendavad veebi- ja rakendustegevused on sisse lülitatud, võidakse need andmed salvestada teie Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Aruande ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Faili ei saa sõeluda</translation> <translation id="5955282598396714173">Teie parool on aegunud. Selle muutmiseks logige välja ja seejärel uuesti sisse.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Seadme asukoht</translation> <translation id="6186394685773237175">Ohustatud paroole ei leitud</translation> <translation id="6195693561221576702">Seadet ei saa võrguühenduseta demorežiimis seadistada.</translation> +<translation id="6196640612572343990">Blokeeri kolmanda osapoole küpsisefailid</translation> <translation id="6196854373336333322">Laiendus „<ph name="EXTENSION_NAME" />” on hõivanud puhverserveri seaded, mis tähendab, et see saab muuta, lõhkuda või kuulata pealt kogu teie veebitegevust. Kui te pole kindel, miks see muudatus toimus, siis te tõenäoliselt ei taha seda.</translation> <translation id="6198102561359457428">Logige välja ja uuesti sisse ...</translation> <translation id="6198252989419008588">Muuda PIN-koodi</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Sisselogitud seadmete loendi lugemine</translation> <translation id="7120865473764644444">Sünkroonimisserveriga ei saanud ühendust luua. Uuesti proovimine …</translation> <translation id="7121362699166175603">Kustutab aadressiribalt ajaloo ja automaatse täitmise andmed. Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu.</translation> -<translation id="7121389946694989825">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Arendaja režiim</translation> <translation id="7121728544325372695">Nutikad sidekriipsud</translation> <translation id="7123360114020465152">Enam ei toetata</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Chrome'is ohtliku tarkvara otsimisel ilmnes viga</translation> <translation id="7280649757394340890">Kõnesünteesi hääle seaded</translation> <translation id="7280877790564589615">Luba on taotletud</translation> -<translation id="7281268427852119151">Kasutage oma sirvimisajalugu otsingu, reklaamide ja muude Google'i teenuste isikupärastamiseks</translation> <translation id="7282992757463864530">Teaberiba</translation> <translation id="7287143125007575591">Juurdepääs on keelatud.</translation> <translation id="7287411021188441799">Vaiketausta taastamine</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Teisalda vaheleht uude aknasse}other{Teisalda vahelehed uude aknasse}}</translation> <translation id="8179976553408161302">Sisestusklahv</translation> <translation id="8180239481735238521">lk</translation> -<translation id="8180294223783876911">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. See aitab parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Kui täiendavad veebi- ja rakendustegevused on sisse lülitatud, võidakse need andmed salvestada teie Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />” saab märgitud asukohtade pildi-, video- ja helifaile lugeda ning kirjutada.</translation> <translation id="8181215761849004992">Domeeniga ei saa liituda. Kontrollige oma kontot ja veenduge, et teil oleks seadmete lisamiseks piisavad õigused.</translation> <translation id="8182105986296479640">Rakendus ei reageeri.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">See arvuti jäetakse rakenduse Messages jaoks meelde ning teile saadetakse sõnumite kohta märguandeid. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Rakenduse „<ph name="APP_NAME" />” blokeeris sinu vanem. Küsi vanemalt luba selle rakenduse kasutamiseks.</translation> <translation id="820568752112382238">Enim külastatavad saidid</translation> -<translation id="8206581664590136590">Saada kasutus- ja diagnostikaandmeid. Aidake täiustada oma lapse Androidi kasutuskogemust, saates Google'ile automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluusilik</translation> <translation id="8206859287963243715">Mobiil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Allalaadimine on pooleli}other{Allalaadimised on pooleli}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google'i konto</translation> <translation id="8912793549644936705">Venitatud</translation> <translation id="8912810933860534797">Automaatse skannimise lubamine</translation> -<translation id="891365694296252935">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Selle seade on jõustanud omanik. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Soovituste laadimine</translation> <translation id="8916476537757519021">Inkognito alamraam: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Turvavõtme kinnitamine …</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Rakenduse käivitamine</translation> <translation id="9102610709270966160">Luba laiendus</translation> <translation id="9103868373786083162">Vajutage tagasiliikumiseks, kontekstimenüüd ajaloo nägemiseks</translation> -<translation id="9104396740804929809">Saada kasutus- ja diagnostikaandmeid. Aidake täiustada Androidi kasutuskogemust, saates Google'ile automaatselt seadme teavet ning rakenduse kasutus- ja diagnostikaandmeid. See aitab parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Selle seade on jõustanud omanik. Omanik võib otsustada saata Google'ile selle seadme diagnostika- ja kasutusandmeid. Kui täiendavad veebi- ja rakendustegevused on sisse lülitatud, võidakse need andmed salvestada teie Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Ruumi vabastamiseks kustutage seadme salvestusruumist faile.</translation> <translation id="9109283579179481106">Mobiilsidevõrguga ühendamine</translation> <translation id="9111102763498581341">Ava lukk</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index e8f54b9..0abf0e81 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Aplikazio ostatatuen datuak</translation> <translation id="1776712937009046120">Gehitu erabiltzailea</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> da gailuaren kudeatzailea. -<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kontuan saioa hasteko, sakatu "Hurrengoa".</translation> <translation id="1779652936965200207">Idazti pasagako hau "<ph name="DEVICE_NAME" />" gailuan:</translation> <translation id="177989070088644880">Aplikazioa (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Itxi taldea</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Arazo bat izan da inprimagailuak zerrendatzean. Agian inprimagailuetako batzuk ez dira behar bezala erregistratu <ph name="CLOUD_PRINT_NAME" /> zerbitzuan.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Helbide-barran<ph name="END_LINK" /> egiten diren bilaketetarako erabiltzen den bilatzailea</translation> <translation id="2204034823255629767">Irakurri eta aldatu idazten duzuna</translation> -<translation id="220792432208469595">Bidali erabilera- eta diagnostiko-datuak. Gailu honek automatikoki bidaltzen dizkio Google-ri diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak. Horri esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Jabeak konfiguratu du ezarpen hori. Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Idatzi PIN kodea "<ph name="DEVICE_NAME" />" gailuan:</translation> <translation id="2212565012507486665">Onartu cookieak</translation> <translation id="2213140827792212876">Kendu partekatzeko aukera</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Ezin izan da ireki beste arakatzaile bat</translation> <translation id="2804667941345577550">Webguneko saioa amaituko da, baita irekita dauden fitxetakoa ere</translation> <translation id="2804680522274557040">Kamera erabiltzeko baimena desaktibatuta dago</translation> -<translation id="2805539617243680210">Dena prest!</translation> <translation id="2805646850212350655">Fitxategiak enkriptatzeko Microsoft sistema (EFS)</translation> <translation id="2805756323405976993">Aplikazioak</translation> <translation id="2805770823691782631">Xehetasun gehigarriak</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Pantaila-argazkia hartu da</translation> <translation id="3742666961763734085">Ez da aurkitu izen hori duen antolamendu-unitaterik. Saiatu berriro.</translation> <translation id="3744111561329211289">Atzeko planoko sinkronizazioa</translation> +<translation id="3747077776423672805">Aplikazioak kentzeko, joan Ezarpenak > Google Play Store > Kudeatu Android hobespenak > Aplikazioak edo Aplikazioen kudeatzailea atalera. Sakatu desinstalatu nahi duzun aplikazioa (baliteke hatza eskuinera edo ezkerrera pasatu behar izatea hura aurkitzeko). Ondoren, sakatu Desinstalatu edo Desgaitu.</translation> <translation id="3748026146096797577">Konektatu gabe</translation> <translation id="3752582316358263300">Ados…</translation> <translation id="3752673729237782832">Nire gailuak</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Webgune honetan erregistratuta ez dagoen segurtasun-giltza bat erabiltzen ari zara</translation> <translation id="4788092183367008521">Egiaztatu sarera konektatuta zaudela eta saiatu berriro.</translation> <translation id="4792711294155034829">Eman a&razo baten berri…</translation> -<translation id="4795022432560487924">Bidali erabilera- eta diagnostiko-datuak. Bidali diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak Google-ri automatikoki haurrak darabiltzan Android zerbitzuak hobetzen laguntzeko. Informazio hori ez da erabiliko haurra identifikatzeko eta, hari esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Jabeak konfiguratu du ezarpen hori. Gailu honen diagnostikoak eta erabilera-datuak Google-ri bidaltzea aukera dezake jabeak. Haurraren kontuko Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek haren Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Web-orria, HTML soilik</translation> <translation id="4798236378408895261">Erantsi <ph name="BEGIN_LINK" />Bluetooth konexioari buruzko erregistroak<ph name="END_LINK" /> (Google barnekoa)</translation> <translation id="4801448226354548035">Ezkutatu kontuak</translation> @@ -3567,7 +3563,6 @@ <translation id="5941711191222866238">Minimizatu</translation> <translation id="5942964813783878922">Eguneratzen amaitutakoan, berrabiarazi egingo da <ph name="DEVICE_TYPE" />. Aurrerantzean, automatikoki instalatuko dira software- eta segurtasun-eguneratzeak.</translation> <translation id="5944869793365969636">Eskaneatu QR kodea</translation> -<translation id="5945188205370098537">Bidali erabilera- eta diagnostiko-datuak. Bidali diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak Google-ri automatikoki haurrak darabiltzan Android zerbitzuak hobetzen laguntzeko. Horri esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Txostenaren IDa: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Ezin da analizatu fitxategia</translation> <translation id="5955282598396714173">Pasahitza iraungi egin da. Aldatzeko, amaitu saioa eta has ezazu berriro.</translation> @@ -3751,6 +3746,7 @@ <translation id="6185132558746749656">Gailuaren kokapena</translation> <translation id="6186394685773237175">Ez da aurkitu arriskuan dagoen pasahitzik</translation> <translation id="6195693561221576702">Ezin da konfiguratu gailua konexiorik gabeko demo moduan.</translation> +<translation id="6196640612572343990">Blokeatu hirugarrenen cookieak</translation> <translation id="6196854373336333322"><ph name="EXTENSION_NAME" /> luzapenak zure proxy-ezarpenen kontrola hartu du; alegia, sarean egiten duzun edozer alda, honda edo zelata dezake. Aldaketa zergatik gertatu den ziur ez badakizu, baliteke aldaketa nahi ez izatea.</translation> <translation id="6198102561359457428">Amaitu saioa eta hasi berriro</translation> <translation id="6198252989419008588">Aldatu PIN kodea</translation> @@ -4414,7 +4410,6 @@ <translation id="711902386174337313">Irakurri saioa hasita daukaten gailuen zerrenda</translation> <translation id="7120865473764644444">Ezin izan da konektatu sinkronizazio-zerbitzarira. Berriro saiatzen…</translation> <translation id="7121362699166175603">Helbide-barrako historia eta osatze automatikoak garbitzen ditu. Google-ko kontuko historia arakatzeko beste modu batzuk aurki zenitzake <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webgunean.</translation> -<translation id="7121389946694989825">Bidali erabilera- eta diagnostiko-datuak. Gailu honek automatikoki bidaltzen dizkio Google-ri diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak. Informazio hori ez da erabiliko haurra identifikatzeko eta, hari esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Haurraren kontuko Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek haren Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Garatzaileen modua</translation> <translation id="7121728544325372695">Marra adimendunak</translation> <translation id="7123360114020465152">Ez da onartzen jada</translation> @@ -5196,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Eraman fitxa leiho berri batera}other{Eraman fitxak leiho berri batera}}</translation> <translation id="8179976553408161302">Sartu</translation> <translation id="8180239481735238521">orria</translation> -<translation id="8180294223783876911">Bidali erabilera- eta diagnostiko-datuak. Gailu honek automatikoki bidaltzen dizkio Google-ri diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak. Horri esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" luzapenak markatutako kokapenetako irudiak, bideoak eta soinu-fitxategiak irakur eta ezaba ditzake.</translation> <translation id="8181215761849004992">Ezin da sartu domeinuan. Gailuak gehitzeko pribilegioak dituzula ziurtatzeko, egiaztatu kontua.</translation> <translation id="8182105986296479640">Aplikazioak ez du erantzuten.</translation> @@ -5218,7 +5212,6 @@ <translation id="8203732864715032075">Jaso jakinarazpenak eta ezarri ordenagailua lehenetsi gisa Mezuak aplikazioan gogoratzeko. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Guraso batek blokeatu du "<ph name="APP_NAME" />". Eska iezaiozu baimena aplikazioa erabiltzeko.</translation> <translation id="820568752112382238">Gehien bisitatutako webguneak</translation> -<translation id="8206581664590136590">Bidali erabilera- eta diagnostiko-datuak. Bidali diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak Google-ri automatikoki haurrak darabiltzan Android zerbitzuak hobetzen laguntzeko. Informazio hori ez da erabiliko haurra identifikatzeko eta, hari esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Haurraren kontuko Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek haren Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blues-zalea</translation> <translation id="8206859287963243715">Konexio mugikorra</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Deskarga abian da}other{Deskargak abian dira}}</translation> @@ -5758,7 +5751,6 @@ <translation id="8912362522468806198">Google-ko kontua</translation> <translation id="8912793549644936705">Zabaldu</translation> <translation id="8912810933860534797">Gaitu bilaketa automatikoa</translation> -<translation id="891365694296252935">Bidali erabilera- eta diagnostiko-datuak. Gailu honek automatikoki bidaltzen dizkio Google-ri diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak. Informazio hori ez da erabiliko haurra identifikatzeko eta, hari esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Jabeak konfiguratu du ezarpen hori. Haurraren kontuko Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek haren Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Iradokizuna kargatzen</translation> <translation id="8916476537757519021">Ezkutuko moduko azpimarkoa: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Segurtasun-giltza egiaztatzen…</translation> @@ -5895,7 +5887,6 @@ <translation id="9101691533782776290">Abiarazi aplikazioa</translation> <translation id="9102610709270966160">Gaitu luzapena</translation> <translation id="9103868373786083162">Sakatu itzultzeko, laster-menua historia ikusteko</translation> -<translation id="9104396740804929809">Bidali erabilera- eta diagnostiko-datuak. Bidali diagnostikoak eta gailu zein aplikazioen erabilerari buruzko datuak Google-ri automatikoki haurrak darabiltzan Android zerbitzuak hobetzen laguntzeko. Horri esker, sistemaren eta aplikazioen egonkortasuna hobetuko da, besteak beste. Gainera, multzokatutako datu batzuk oso baliagarriak izango dira Google-ren aplikazioak hobetzeko eta bazkideei laguntzeko (adibidez, Android-en garatzaileei). Jabeak konfiguratu du ezarpen hori. Gailu honen diagnostikoak eta erabilera-datuak Google-ri bidaltzea aukera dezake jabeak. Sareko eta aplikazioetako jarduera gehigarriak ezarpena aktibatuta badago, baliteke datu horiek Google-ko kontuan gordetzea. <ph name="BEGIN_LINK1" />Lortu informazio gehiago<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Tokia egiteko, ezabatu gailuko memorian dauden fitxategiak.</translation> <translation id="9109283579179481106">Konektatu sare mugikorrera</translation> <translation id="9111102763498581341">Desblokeatu</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 4541587..d11d3b5 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">داده های برنامه میزبانی شده</translation> <translation id="1776712937009046120">افزودن کاربر</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">این دستگاه را <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> مدیریت میکند. - برای ادامه ورود به سیستم در حساب <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> خود، لطفاً روی «بعدی» کلیک کنید.</translation> <translation id="1779652936965200207">لطفاً این کلیدواژه را در "<ph name="DEVICE_NAME" />" وارد کنید:</translation> <translation id="177989070088644880">برنامه (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">بستن گروه</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">هنگام فهرست کردن چاپگرها مشکلی روی داد. برخی از چاپگرهای شما با <ph name="CLOUD_PRINT_NAME" /> با موفقیت ثبت نشدهاند.</translation> <translation id="2203682048752833055">موتور جستجوی مورداستفاده در <ph name="BEGIN_LINK" />نوار نشانی<ph name="END_LINK" /></translation> <translation id="2204034823255629767">خواندن و تغییر هر موردی که تایپ میکنید</translation> -<translation id="220792432208469595">دادههای استفاده و عیبیابی را ارسال کنید. این دستگاه درحالحاضر بهصورت خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه را برای Google ارسال میکند. این دادهها به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. این تنظیم توسط مالک اعمال میشود. اگر تنظیم «فعالیت وب و برنامه» تکمیلی روشن باشد، ممکن است این دادهها در حساب Google شما ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="220858061631308971">لطفاً این کد پین را در "<ph name="DEVICE_NAME" />" وارد کنید:</translation> <translation id="2212565012507486665">مجاز کردن کوکی ها</translation> <translation id="2213140827792212876">برداشتن اشتراکگذاری</translation> @@ -1340,7 +1337,6 @@ <translation id="2804043232879091219">مرورگر جایگزین باز نشد</translation> <translation id="2804667941345577550">از سیستم این سایت (ازجمله در برگههای باز) خارج خواهید شد</translation> <translation id="2804680522274557040">دوربین خاموش است</translation> -<translation id="2805539617243680210">همه چیز آماده است!</translation> <translation id="2805646850212350655">سیستم فایل رمزگذاری Microsoft</translation> <translation id="2805756323405976993">برنامهها</translation> <translation id="2805770823691782631">جزئیات دیگر</translation> @@ -2018,6 +2014,7 @@ <translation id="3742055079367172538">عکس صفحهنمایش گرفته شد</translation> <translation id="3742666961763734085">واحد سازمانی با این نام پیدا نشد. لطفاً دوباره امتحان کنید.</translation> <translation id="3744111561329211289">همگامسازی پسزمینه</translation> +<translation id="3747077776423672805">برای حذف برنامهها به «تنظیمات > فروشگاه Google Play > مدیریت اولویتهای Android > برنامهها یا مدیر برنامه» بروید. سپس روی برنامهای که میخواهید حذف نصب شود ضربه بزنید (ممکن است برای پیدا کردن برنامه نیاز باشد صفحه را تند به راست یا چپ بکشید). سپس روی «حذف نصب» یا «غیرفعال کردن» ضربه بزنید.</translation> <translation id="3748026146096797577">متصل نیست</translation> <translation id="3752582316358263300">تأیید...</translation> <translation id="3752673729237782832">دستگاههای من</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">شما از کلید امنیتی استفاده میکنید که در این وبسایت ثبت نشده است</translation> <translation id="4788092183367008521">لطفاً اتصال شبکهتان را بررسی کنید و دوباره امتحان کنید.</translation> <translation id="4792711294155034829">&گزارش یک مشکل...</translation> -<translation id="4795022432560487924">دادههای استفاده و عیبیابی را ارسال کنید. با ارسال خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه به Google به بهبود تجربه Android خود کمک کنید. این دادهها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. این تنظیم توسط مالک اعمال میشود. ممکن است مالک انتخاب کند دادههای استفاده و عیبیابی این دستگاه به Google ارسال شود. اگر تنظیم «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این دادهها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="479536056609751218">صفحهٔ وب، فقط HTML</translation> <translation id="4798236378408895261">پیوست <ph name="BEGIN_LINK" />گزارشهای بلوتوث<ph name="END_LINK" /> (داخلی Google)</translation> <translation id="4801448226354548035">پنهانسازی حسابها</translation> @@ -3358,6 +3354,7 @@ <translation id="5649053991847567735">بارگیریهای خودکار</translation> <translation id="5653154844073528838"><ph name="PRINTER_COUNT" /> چاپگر ذخیرهشده دارید.</translation> <translation id="5656845498778518563">ارسال بازخورد به Google</translation> +<translation id="5657156137487675418">مجازبودن همه کوکیها</translation> <translation id="5657667036353380798">برنامه افزودنی خارجی برای نصب شدن به Chrome نسخه <ph name="MINIMUM_CHROME_VERSION" /> یا بالاتر نیاز دارد.</translation> <translation id="5658415415603568799">برای امنیت بیشتر، Smart Lock درخواست میکند گذرواژهتان را بعد از ۲۰ ساعت وارد کنید.</translation> <translation id="5659593005791499971">ایمیل</translation> @@ -3564,7 +3561,6 @@ <translation id="5941711191222866238">کوچک کردن</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> شما بعد از این بهروزرسانی بازراهاندازی خواهد شد. بهروزرسانیهای امنیتی و نرمافزار درآینده بهطور خودکار نصب میشوند.</translation> <translation id="5944869793365969636">اسکن کد QR</translation> -<translation id="5945188205370098537">دادههای استفاده و عیبیابی را ارسال کنید. با ارسال خودکار دادههای تشخیص عیب و دادههای استفاده از دستگاه و برنامه به Google، به بهبود تجربه استفاده از Android کمک کنید. این دادهها به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. اگر تنظیم «فعالیت وب و برنامه» تکمیلی روشن باشد، ممکن است این دادهها در حساب Google شما ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">شناسه گزارش <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">تجزیه فایل امکانپذیر نیست</translation> <translation id="5955282598396714173">گذرواژهتان منقضی شده است. لطفاً برای تغییر آن از سیستم خارج شوید و دوباره به سیستم وارد شوید.</translation> @@ -3748,6 +3744,7 @@ <translation id="6185132558746749656">مکان دستگاه</translation> <translation id="6186394685773237175">گذرواژه لورفتهای پیدا نشد</translation> <translation id="6195693561221576702">این دستگاه روی حالت نمایشی آفلاین تنظیم نمیشود.</translation> +<translation id="6196640612572343990">مسدود کردن کوکیهای شخص ثالث</translation> <translation id="6196854373336333322">افزونه «<ph name="EXTENSION_NAME" />»، کنترل تنظیمات پروکسی شما را در اختیار گرفته است یعنی میتواند هر چیزی که در حالت آنلاین انجام میدهید تغییر دهد، خراب کند یا استراق سمع کند. اگر مطمئن نیستید چرا این تغییر انجام شده است، احتمالاً این افزونه را نمیخواهید.</translation> <translation id="6198102561359457428">خارج شده و دوباره وارد سیستم شوید...</translation> <translation id="6198252989419008588">تغییر دادن پین</translation> @@ -4411,7 +4408,6 @@ <translation id="711902386174337313">خواندن فهرست دستگاههایتان که وارد سیستم هستند</translation> <translation id="7120865473764644444">اتصال به سرور همگامسازی امکانپذیر نیست. درحال امتحان مجدد…</translation> <translation id="7121362699166175603">سابقه و تکمیلهای خودکار را در نوار نشانی پاک میکند. ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation> -<translation id="7121389946694989825">دادههای استفاده و عیبیابی را ارسال کنید. این دستگاه درحالحاضر بهصورت خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه را برای Google ارسال میکند. این دادهها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. اگر تنظیم «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این دادهها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">حالت تولیدکننده</translation> <translation id="7121728544325372695">خط تیرههای هوشمند</translation> <translation id="7123360114020465152">دیگر پشتیبانی نمیشود</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{انتقال دادن برگه به پنجره جدید}one{انتقال دادن برگهها به پنجره جدید}other{انتقال دادن برگهها به پنجره جدید}}</translation> <translation id="8179976553408161302">ورود</translation> <translation id="8180239481735238521">صفحه</translation> -<translation id="8180294223783876911">دادههای استفاده و عیبیابی را ارسال کنید. این دستگاه درحالحاضر بهصورت خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه را برای Google ارسال میکند. این دادهها به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. اگر تنظیم «فعالیت وب و برنامه» تکمیلی روشن باشد، ممکن است این دادهها در حساب Google شما ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">«<ph name="EXTENSION" />» میتواند تصاویر، ویدئوها و فایلهای صوتی را در مکانهای انتخاب شده بخواند یا حذف کند.</translation> <translation id="8181215761849004992">نمیتوان به دامنه وصل شد. حسابتان را بررسی کنید تا ببینید آیا دسترسیهای کافی برای اضافه کردن دستگاه دارید.</translation> <translation id="8182105986296479640">برنامه پاسخ نمیدهد</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">ارسال اعلان برای شما و بهخاطرسپردن این رایانه بهعنوان پیشفرض برای «پیامها». <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ولی شما «<ph name="APP_NAME" />» را مسدود کرده است. از ولیتان بخواهید استفاده از این برنامه را مجاز کند.</translation> <translation id="820568752112382238">سایتهایی که بیشتر بازدید شده</translation> -<translation id="8206581664590136590">دادههای استفاده و عیبیابی را ارسال کنید. با ارسال خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه به Google به بهبود تجربه Android خود کمک کنید. این دادهها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. اگر تنظیم «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این دادهها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">بلوزی</translation> <translation id="8206859287963243715">سلولی</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{بارگیری درحال انجام است}one{بارگیری درحال انجام است}other{بارگیری درحال انجام است}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">حساب Google</translation> <translation id="8912793549644936705">گسترده کردن</translation> <translation id="8912810933860534797">فعال کردن اسکن خودکار</translation> -<translation id="891365694296252935">دادههای استفاده و عیبیابی را ارسال کنید. این دستگاه درحالحاضر بهصورت خودکار دادههای عیبیابی و دادههای استفاده از دستگاه و برنامه را برای Google ارسال میکند. این دادهها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. این تنظیم توسط مالک اعمال میشود. اگر «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این دادهها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">در حال بارگیری پیشنهادات</translation> <translation id="8916476537757519021">قاب فرعی ناشناس: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">درحال تأیید کردن کلید امنیتی…</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">راهاندازی برنامه</translation> <translation id="9102610709270966160">فعال کردن افزونه</translation> <translation id="9103868373786083162">برای دیدن سابقه، دکمه را فشار دهید تا به عقب، و به منوی بافت برگردید</translation> -<translation id="9104396740804929809">دادههای استفاده و عیبیابی را ارسال کنید. با ارسال خودکار دادههای تشخیص عیب و دادههای استفاده از دستگاه و برنامه به Google، به بهبود تجربه استفاده از Android کمک کنید. این دادهها به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی دادههای انبوه نیز به برنامهها و شرکای Google (مانند برنامهنویسهای Android) کمک میکند. این تنظیم توسط مالک اعمال میشود. ممکن است مالک انتخاب کند دادههای استفاده و عیبیابی این دستگاه به Google ارسال شود. اگر تنظیم «فعالیت وب و برنامه» تکمیلی روشن باشد، ممکن است این دادهها در حساب Google شما ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">برای آزاد کردن فضا، فایلها را در حافظه دستگاه حذف کنید.</translation> <translation id="9109283579179481106">اتصال به شبکه تلفن همراه</translation> <translation id="9111102763498581341">باز کردن قفل</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index bf72949..e3b509823 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Isännöidyn sovelluksen tiedot</translation> <translation id="1776712937009046120">Lisää käyttäjä</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Tätä laitetta hallinnoi <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Jatka tilillesi (<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />) kirjautumista valitsemalla Seuraava.</translation> <translation id="1779652936965200207">Kirjoita tämä salasana laitteelle <ph name="DEVICE_NAME" />:</translation> <translation id="177989070088644880">Sovellus (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Sulje ryhmä</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Tulostimien luetteloinnissa tapahtui virhe. Kaikkia tulostimiasi ei ole välttämättä rekisteröity palveluun <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Hakukone, jota käytetään <ph name="BEGIN_LINK" />osoitepalkissa<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lukea ja muuttaa kaikkea kirjoittamaasi</translation> -<translation id="220792432208469595">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Datan avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Omistaja on ottanut tämän asetuksen käyttöön. Jos olet ottanut käyttöön muun verkko- ja sovellustoiminnan asetuksen, tätä dataa voidaan tallentaa Google-tilillesi. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Syötä tämä PIN-koodi laitteella <ph name="DEVICE_NAME" />:</translation> <translation id="2212565012507486665">Salli evästeet</translation> <translation id="2213140827792212876">Poista jakaminen</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Toisen selaimen avaaminen epäonnistui</translation> <translation id="2804667941345577550">Sinut kirjataan ulos tältä sivustolta, myös avoimilta välilehdiltä.</translation> <translation id="2804680522274557040">Kamera poistettiin käytöstä</translation> -<translation id="2805539617243680210">Kaikki on valmista.</translation> <translation id="2805646850212350655">Microsoftin tietojärjestelmän salaus</translation> <translation id="2805756323405976993">Sovellukset</translation> <translation id="2805770823691782631">Lisätietoja</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Kuvakaappaus otettu</translation> <translation id="3742666961763734085">Tämännimistä organisaatioyksikköä ei löydy. Yritä uudelleen.</translation> <translation id="3744111561329211289">Taustasynkronointi</translation> +<translation id="3747077776423672805">Jos haluat poistaa sovelluksia, valitse Asetukset > Google Play Kauppa > Hallitse Android-asetuksia > Sovellukset tai Sovellusten hallinta. Valitse sitten sovellus, jonka haluat poistaa (jos sovellusta ei näy, pyyhkäise oikealle tai vasemmalle). Valitse sitten Poista tai Poista käytöstä.</translation> <translation id="3748026146096797577">Ei yhteyttä</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Omat laitteet</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">Käytät suojausavainta, jota ei ole rekisteröity tällä sivustolla.</translation> <translation id="4788092183367008521">Tarkista verkkoyhteys ja yritä uudelleen.</translation> <translation id="4792711294155034829">&Ilmoita ongelmasta...</translation> -<translation id="4795022432560487924">Lähetä käyttö- ja diagnostiikkadataa. Auta parantamaan lapsesi Android-käyttökokemusta lähettämällä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Omistaja on ottanut tämän asetuksen käyttöön. Omistaja voi lähettää tätä laitetta koskevaa diagnostiikka- ja käyttödataa Googlelle. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Verkkosivu, vain HTML</translation> <translation id="4798236378408895261">Liitä <ph name="BEGIN_LINK" />Bluetooth-lokit<ph name="END_LINK" /> (Googlen sisäinen)</translation> <translation id="4801448226354548035">Piilota tilit</translation> @@ -3381,6 +3377,7 @@ <translation id="5649053991847567735">Automaattiset lataukset</translation> <translation id="5653154844073528838">Sinulla on <ph name="PRINTER_COUNT" /> tallennettua tulostinta</translation> <translation id="5656845498778518563">Lähetä palautetta Googlelle</translation> +<translation id="5657156137487675418">Salli kaikki evästeet</translation> <translation id="5657667036353380798">Ulkoinen laajennus vaatii Chrome-version <ph name="MINIMUM_CHROME_VERSION" /> tai uudemman.</translation> <translation id="5658415415603568799">Turvallisuussyistä Smart Lock pyytää antamaan salasanan, kun 20 tuntia on kulunut.</translation> <translation id="5659593005791499971">Sähköposti</translation> @@ -3588,7 +3585,6 @@ <translation id="5941711191222866238">Pienennä</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> käynnistyy uudelleen päivityksen jälkeen. Tulevat ohjelmistot ja tietoturvapäivitykset asennetaan automaattisesti.</translation> <translation id="5944869793365969636">Skannaa QR-koodi</translation> -<translation id="5945188205370098537">Lähetä käyttö- ja diagnostiikkadataa. Auta parantamaan Android-käyttökokemusta lähettämällä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Datan avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Jos olet ottanut käyttöön muun verkko- ja sovellustoiminnan asetuksen, tätä dataa voidaan tallentaa Google-tilillesi. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Raporttitunnus: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Tiedoston jäsentäminen ei onnistu.</translation> <translation id="5955282598396714173">Salasana on vanhentunut. Kirjaudu ulos ja uudelleen sisään, niin voit vaihtaa sen.</translation> @@ -3776,6 +3772,7 @@ <translation id="6185132558746749656">Laitteen sijainti</translation> <translation id="6186394685773237175">Vaarantuneita salasanoja ei löytynyt</translation> <translation id="6195693561221576702">Tätä laitetta ei voi määrittää offline-demotilassa.</translation> +<translation id="6196640612572343990">Estä kolmannen osapuolen evästeet</translation> <translation id="6196854373336333322">Välityspalvelimesi asetuksia hallinnoi tällä hetkellä tämä laajennus <ph name="EXTENSION_NAME" />, joka voi muokata, haitata tai salakuunnella kaikkia verkkotoimiasi. Jos et tiedä, miksi tämä muutos tehtiin, et luultavasti halua käyttää sitä.</translation> <translation id="6198102561359457428">Kirjaudu ulos ja kirjaudu uudelleen sisään...</translation> <translation id="6198252989419008588">Vaihda PIN-koodi</translation> @@ -4442,7 +4439,6 @@ <translation id="711902386174337313">Käyttää kirjautuneiden laitteidesi luetteloa</translation> <translation id="7120865473764644444">Synkronointipalvelimeen ei saada yhteyttä. Yritetään uudelleen…</translation> <translation id="7121362699166175603">Tyhjentää historian ja osoitekentän automaattiset täydennykset. Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Kehittäjätila</translation> <translation id="7121728544325372695">Älykkäät väliviivat</translation> <translation id="7123360114020465152">Ei enää tueta</translation> @@ -4557,7 +4553,6 @@ <translation id="7280041992884344566">Chromen etsiessä haittaohjelmia tapahtui virhe.</translation> <translation id="7280649757394340890">Tekstistä puheeksi ‑ääniasetukset</translation> <translation id="7280877790564589615">Käyttölupapyyntö</translation> -<translation id="7281268427852119151">Personoi Hakua, mainoksia ja muita Googlen palveluja selaushistoriasi perusteella</translation> <translation id="7282992757463864530">Tietopalkki</translation> <translation id="7287143125007575591">Pääsy evätty.</translation> <translation id="7287411021188441799">Palauta oletustausta</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Siirrä välilehti uuteen ikkunaan}other{Siirrä välilehdet uuteen ikkunaan}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">sivu</translation> -<translation id="8180294223783876911">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Datan avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Jos olet ottanut käyttöön muun verkko- ja sovellustoiminnan asetuksen, tätä dataa voidaan tallentaa Google-tilillesi. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="8180786512391440389"><ph name="EXTENSION" /> voi lukea ja poistaa kuva-, video- ja äänitiedostoja valituissa sijainneissa.</translation> <translation id="8181215761849004992">Verkkotunnukseen liittyminen ei onnistu. Katso tililtäsi, onko sinulla laitteiden lisäämisoikeudet.</translation> <translation id="8182105986296479640">Sovellus ei vastaa.</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">Voit saada ilmoituksia, ja tämä tietokone voidaan muistaa oletuksena Messages-sovellusta käytettäessä. <ph name="LINK_BEGIN" />Lisätietoja<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> on vanhempasi estämä. Pyydä vanhemmaltasi lupaa käyttää tätä sovellusta.</translation> <translation id="820568752112382238">Useimmin vieraillut sivustot</translation> -<translation id="8206581664590136590">Lähetä käyttö- ja diagnostiikkadataa. Auta parantamaan lapsesi Android-käyttökokemusta lähettämällä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Muusikko</translation> <translation id="8206859287963243715">Matkapuhelin</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Lataus on käynnissä}other{Latauksia on käynnissä}}</translation> @@ -5799,7 +5792,6 @@ <translation id="8912362522468806198">Google-tilisi avulla</translation> <translation id="8912793549644936705">Venytä</translation> <translation id="8912810933860534797">Ota automaattinen skannaus käyttöön</translation> -<translation id="891365694296252935">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Omistaja on ottanut tämän asetuksen käyttöön. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Ladataan ehdotusta</translation> <translation id="8916476537757519021">Incognito-alakehys: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Vahvistetaan suojausavainta…</translation> @@ -5936,7 +5928,6 @@ <translation id="9101691533782776290">Käynnistä sovellus</translation> <translation id="9102610709270966160">Ota laajennus käyttöön</translation> <translation id="9103868373786083162">Siirry taaksepäin painamalla tai avaa historia kontekstivalikon kautta.</translation> -<translation id="9104396740804929809">Lähetä käyttö- ja diagnostiikkadataa. Auta parantamaan Android-käyttökokemusta lähettämällä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Datan avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Omistaja on ottanut tämän asetuksen käyttöön. Omistaja voi lähettää tätä laitetta koskevaa diagnostiikka- ja käyttödataa Googlelle. Jos olet ottanut käyttöön muun verkko- ja sovellustoiminnan asetuksen, tätä dataa voidaan tallentaa Google-tilillesi. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Vapauta tilaa poistamalla laitteeseen tallennettuja tiedostoja.</translation> <translation id="9109283579179481106">Yhdistä mobiiliverkkoon</translation> <translation id="9111102763498581341">Poista lukitus</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 4b00a25..8e57e8d 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Naka-host na data ng app</translation> <translation id="1776712937009046120">Magdagdag ng user</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Pinapamahalaan ng <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ang device na ito. - Paki-click ang "Susunod" para magpatuloy sa pag-sign in sa iyong <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> account.</translation> <translation id="1779652936965200207">Pakilagay ang passkey na ito sa "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Isara ang Grupo</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Nagkaproblema sa paglilista ng mga printer. Maaaring hindi matagumpay na nairehistro ang ilan sa iyong mga printer <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Search engine na ginagamit sa <ph name="BEGIN_LINK" />address bar<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Basahin at baguhin ang anumang tina-type mo</translation> -<translation id="220792432208469595">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Kung naka-on ang iyong karagdagang setting ng Aktibidad sa Web at App, maaaring ma-save ang data na ito sa Google Account mo. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Pakilagay ang PIN code na ito sa "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Payagan ang cookies</translation> <translation id="2213140827792212876">Alisin ang pagbabahagi</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Hindi mabuksan ang alternatibong browser</translation> <translation id="2804667941345577550">Masa-sign out ka sa site na ito, pati na rin sa mga nakabukas na tab</translation> <translation id="2804680522274557040">Naka-off ang camera</translation> -<translation id="2805539617243680210">Handa ka na!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Mga App</translation> <translation id="2805770823691782631">Mga karagdagang detalye</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Nakakuha na ng screenshot</translation> <translation id="3742666961763734085">Hindi makahanap ng unit ng organisasyon na may ganyang pangalan. Pakisubukang muli.</translation> <translation id="3744111561329211289">Pag-sync sa background</translation> +<translation id="3747077776423672805">Para mag-alis ng mga app, pumunta sa Mga Setting > Google Play Store > Pamahalaan ang mga kagustuhan sa Android > Mga App o Application manager. Pagkatapos ay i-tap ang app na gusto mong i-uninstall (maaaring kailanganin mong mag-swipe pakanan o pakaliwa para mahanap ang app). Pagkatapos, i-tap ang I-uninstall o I-disable.</translation> <translation id="3748026146096797577">Hindi Nakakonekta</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Aking mga device</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Gumagamit ka ng security key na hindi nakarehistro sa website na ito</translation> <translation id="4788092183367008521">Pakisuri ang iyong koneksyon sa network at subukang muli.</translation> <translation id="4792711294155034829">&Mag-ulat ng Isyu...</translation> -<translation id="4795022432560487924">Magpadala ng data ng paggamit at diagnostic na data. Tumulong sa pagpapaganda ng karanasan ng iyong anak sa Android sa pamamagitan ng awtomatikong pagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Maaaring piliin ng may-aring magpadala ng diagnostic na data at data ng paggamit para sa device na ito sa Google. Kung naka-on ang karagdagang setting ng Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webpage, HTML Lamang</translation> <translation id="4798236378408895261">Mag-attach ng <ph name="BEGIN_LINK" />Mga Log ng Bluetooth<ph name="END_LINK" /> (Google internal)</translation> <translation id="4801448226354548035">Itago ang mga account</translation> @@ -3361,6 +3357,7 @@ <translation id="5649053991847567735">Mga awtomatikong pag-download</translation> <translation id="5653154844073528838">May <ph name="PRINTER_COUNT" /> kang naka-save na printer.</translation> <translation id="5656845498778518563">Magpadala ng Feedback sa Google</translation> +<translation id="5657156137487675418">Pahintulutan ang lahat ng cookies</translation> <translation id="5657667036353380798">Kinakailangan ng external na extension ang bersyon ng Chrome na <ph name="MINIMUM_CHROME_VERSION" /> o mas mataas upang ma-install.</translation> <translation id="5658415415603568799">Para sa karagdagang seguridad, hihilingin sa iyo ng Smart Lock na ilagay ang iyong password pagkatapos ng 20 oras.</translation> <translation id="5659593005791499971">Email</translation> @@ -3567,7 +3564,6 @@ <translation id="5941711191222866238">Minimize</translation> <translation id="5942964813783878922">Magre-restart ang iyong <ph name="DEVICE_TYPE" /> pagkatapos ng update na ito. Awtomatikong mag-i-install ang mga update sa software at seguridad sa hinaharap.</translation> <translation id="5944869793365969636">I-scan ang QR code</translation> -<translation id="5945188205370098537">Magpadala ng data ng paggamit at diagnostic na data. Tumulong sa pagpapaganda ng iyong karanasan sa Android sa pamamagitan ng awtomatikong pagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Kung naka-on ang iyong karagdagang setting ng Aktibidad sa Web at App, maaaring ma-save ang data na ito sa Google Account mo. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Report ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Hindi ma-parse ang file</translation> <translation id="5955282598396714173">Nag-expire na ang iyong password. Mag-sign out at muling mag-sign in upang palitan ito.</translation> @@ -3751,6 +3747,7 @@ <translation id="6185132558746749656">Lokasyon ng Device</translation> <translation id="6186394685773237175">Walang nakitang nakompromisong password</translation> <translation id="6195693561221576702">Hindi ma-set up ang device na ito sa offline na demo mode.</translation> +<translation id="6196640612572343990">I-block ang mga third-party na cookie</translation> <translation id="6196854373336333322">Kinokontrol na ng extension na "<ph name="EXTENSION_NAME" />" ang iyong mga setting ng proxy, na ang ibig sabihin ay maaari nitong baguhin, sirain o alamin ang anumang bagay na gagawin mo online. Kung hindi ka sigurado kung bakit naganap ang pagbabagong ito, malamang ay hindi mo ito ginustong mangyari.</translation> <translation id="6198102561359457428">Mag-sign out pagkatapos ay mag-sign in muli...</translation> <translation id="6198252989419008588">Palitan ang PIN</translation> @@ -4414,7 +4411,6 @@ <translation id="711902386174337313">Basahin ang listahan ng iyong mga naka-sign in na device</translation> <translation id="7120865473764644444">Hindi makakonekta sa server ng pag-sync. Muling sinusubukan...</translation> <translation id="7121362699166175603">Kini-clear ang history at mga autocompletion sa address bar. Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Kung naka-on ang karagdagang setting ng Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Developer Mode</translation> <translation id="7121728544325372695">Mga Smart na Gitling</translation> <translation id="7123360114020465152">Hindi na sinusuportahan</translation> @@ -5197,7 +5193,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Ilipat ang tab sa bagong window}one{Maglipat ng mga tab sa bagong window}other{Maglipat ng mga tab sa bagong window}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">pahina</translation> -<translation id="8180294223783876911">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Kung naka-on ang iyong karagdagang setting ng Aktibidad sa Web at App, maaaring ma-save ang data na ito sa Google Account mo. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Magagawa ng "<ph name="EXTENSION" />" na magbasa at magtanggal ng mga larawan, video, at sound file sa mga may check na lokasyon.</translation> <translation id="8181215761849004992">Hindi maisali sa domain. Suriin ang iyong account para makita kung mayroon kang sapat na mga pribilehiyo para magdagdag ng mga device.</translation> <translation id="8182105986296479640">Hindi tumutugon ang application.</translation> @@ -5219,7 +5214,6 @@ <translation id="8203732864715032075">Papadalhan ka ng mga notification at aalalahanin ang computer na ito para sa Messages bilang default. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Na-block ng iyong magulang ang "<ph name="APP_NAME" />." Humiling sa iyong magulang ng pahintulot na gamitin ang app na ito.</translation> <translation id="820568752112382238">Mga pinakamadalas bisitahing site</translation> -<translation id="8206581664590136590">Magpadala ng data ng paggamit at diagnostic na data. Tumulong sa pagpapaganda ng karanasan ng iyong anak sa Android sa pamamagitan ng awtomatikong pagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Kung naka-on ang karagdagang setting ng Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Musika</translation> <translation id="8206859287963243715">Cellular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Kasalukuyang isinasagawa ang pag-download}one{Kasalukuyang isinasagawa ang mga pag-download}other{Kasalukuyang isinasagawa ang mga pag-download}}</translation> @@ -5761,7 +5755,6 @@ <translation id="8912362522468806198">Google Account</translation> <translation id="8912793549644936705">Naka-stretch</translation> <translation id="8912810933860534797">I-enable ang awtomatikong pag-scan</translation> -<translation id="891365694296252935">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Kung naka-on ang karagdagang Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Nilo-load ang suhestiyon</translation> <translation id="8916476537757519021">Incognito na Subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Vine-verify ang iyong security key...</translation> @@ -5898,7 +5891,6 @@ <translation id="9101691533782776290">Ilunsad ang app</translation> <translation id="9102610709270966160">I-enable ang Extension</translation> <translation id="9103868373786083162">Pindutin upang bumalik, gamitin ang menu ng konteksto upang makita ang history</translation> -<translation id="9104396740804929809">Magpadala ng data ng paggamit at diagnostic na data. Tumulong sa pagpapaganda ng iyong karanasan sa Android sa pamamagitan ng awtomatikong pagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Maaaring piliin ng may-aring magpadala ng diagnostic na data at data ng paggamit para sa device na ito sa Google. Kung naka-on ang iyong karagdagang setting ng Aktibidad sa Web at App, maaaring ma-save ang data na ito sa Google Account mo. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Upang magbakante ng espasyo, mag-delete ng mga file mula sa storage ng device.</translation> <translation id="9109283579179481106">Kumonekta sa mobile network</translation> <translation id="9111102763498581341">I-unlock</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index 2d001e02..57581bb 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Données d'application hébergée</translation> <translation id="1776712937009046120">Ajouter un utilisateur</translation> <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation> -<translation id="1777310661937894236">Cet appareil est géré par <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Veuillez cliquer sur « Suivant » pour continuer à vous connecter à votre compte <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Veuillez entrer cette clé d'accès sur « <ph name="DEVICE_NAME" /> » :</translation> <translation id="177989070088644880">Application (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Fermer le groupe</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Un problème est survenu lors de la création de la liste des imprimantes. Certaines de vos imprimantes ne sont peut-être pas correctement enregistrées dans <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Moteur de recherche utilisé dans la <ph name="BEGIN_LINK" />barre d'adresse<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lire et modifier tout ce que vous tapez</translation> -<translation id="220792432208469595">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. Cela nous permettra d'assurer la stabilité du système et des applications, et d'apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Ce paramètre est appliqué par le propriétaire du compte. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Veuillez entrer ce NIP sur l'appareil « <ph name="DEVICE_NAME" /> » :</translation> <translation id="2212565012507486665">Autoriser les témoins</translation> <translation id="2213140827792212876">Supprimer le partage</translation> @@ -1344,7 +1341,6 @@ <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation> <translation id="2804667941345577550">Vous serez déconnecté de ce site, y compris dans les onglets ouverts</translation> <translation id="2804680522274557040">Appareil photo désactivé</translation> -<translation id="2805539617243680210">Tout est en ordre!</translation> <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2805770823691782631">Détails supplémentaires</translation> @@ -2022,6 +2018,7 @@ <translation id="3742055079367172538">Saisie d'écran enregistrée</translation> <translation id="3742666961763734085">Impossible de trouver une unité organisationnelle qui porte ce nom. Veuillez réessayer.</translation> <translation id="3744111561329211289">Synchronisation en arrière-plan</translation> +<translation id="3747077776423672805">Pour supprimer des applications, sélectionnez Paramètres > Google Play Store > Gérer les préférences Android > Applications ou Gestionnaire d'applications. Ensuite, touchez l'application que vous souhaitez désinstaller (vous devrez peut-être balayer l'écran à droite ou à gauche pour trouver l'application). Enfin, touchez Désinstaller ou Désactiver.</translation> <translation id="3748026146096797577">Non connecté</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mes appareils</translation> @@ -2742,7 +2739,6 @@ <translation id="4785719467058219317">Vous utilisez une clé de sécurité qui n'est pas enregistrée auprès de ce site Web</translation> <translation id="4788092183367008521">Veuillez vérifier votre connexion réseau et réessayer.</translation> <translation id="4792711294155034829">&Signaler un problème…</translation> -<translation id="4795022432560487924">Envoyer les données d'utilisation et de diagnostic. Aidez-nous à améliorer l'expérience Android de votre enfant en envoyant automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. L'envoi de ces données ne sera pas utilisé pour identifier votre enfant, mais pour assurer la stabilité du système et des applications, et pour apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Ce paramètre est appliqué par le propriétaire du compte. C'est à lui de choisir d'envoyer ou non à Google les données de diagnostic et d'utilisation de cet appareil. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Page Web, HTML uniquement</translation> <translation id="4798236378408895261">Associer les <ph name="BEGIN_LINK" />journaux Bluetooth<ph name="END_LINK" /> (données internes de Google)</translation> <translation id="4801448226354548035">Masquer les comptes</translation> @@ -3568,7 +3564,6 @@ <translation id="5941711191222866238">Réduire</translation> <translation id="5942964813783878922">Votre <ph name="DEVICE_TYPE" /> redémarrera après cette mise à jour. Les versions à venir des logiciels et les mises à jour de sécurité s'installeront automatiquement.</translation> <translation id="5944869793365969636">Numériser le code QR</translation> -<translation id="5945188205370098537">Envoyer les données d'utilisation et de diagnostic. Aidez-nous à améliorer votre expérience Android en envoyant automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. Cela nous permettra d'assurer la stabilité du système et des applications, et d'apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Identifiant de rapport <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Impossible d'analyser le fichier</translation> <translation id="5955282598396714173">Votre mot de passe est expiré. Veuillez vous déconnecter, puis vous reconnecter pour le modifier.</translation> @@ -3752,6 +3747,7 @@ <translation id="6185132558746749656">Position de l'appareil</translation> <translation id="6186394685773237175">Aucun mot de passe compromis n'a été trouvé</translation> <translation id="6195693561221576702">Cet appareil ne peut pas être configuré en mode démo hors ligne.</translation> +<translation id="6196640612572343990">Bloquer les témoins de tiers</translation> <translation id="6196854373336333322">L'extension « <ph name="EXTENSION_NAME" /> » a pris le contrôle de vos paramètres de mandataire, ce qui signifie qu'elle peut modifier ou espionner tout ce que vous faites en ligne. Si vous ne savez pas pourquoi ce changement s'est produit, vous ne voulez probablement pas l'accepter.</translation> <translation id="6198102561359457428">Déconnectez-vous, puis connectez-vous de nouveau...</translation> <translation id="6198252989419008588">Modifier le NIP</translation> @@ -4415,7 +4411,6 @@ <translation id="711902386174337313">Consulter la liste de vos appareils sur lesquels vous êtes connectés</translation> <translation id="7120865473764644444">Impossible de se connecter au serveur de synchronisation. Nouvelle tentative...</translation> <translation id="7121362699166175603">Efface l'historique et les saisies semi-automatiques dans la barre d'adresse. D'autres formes d'historique de navigation peuvent exister sur votre compte Google à l'adresse <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. L'envoi de ces données ne sera pas utilisé pour identifier votre enfant, mais pour assurer la stabilité du système et des applications, et pour apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Mode Concepteur</translation> <translation id="7121728544325372695">Tirets intelligents</translation> <translation id="7123360114020465152">N'est plus prise en charge</translation> @@ -5197,7 +5192,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Déplacer l'onglet vers une nouvelle fenêtre}one{Déplacer l'onglet vers une nouvelle fenêtre}other{Déplacer les onglets vers une nouvelle fenêtre}}</translation> <translation id="8179976553408161302">Entrée</translation> <translation id="8180239481735238521">page</translation> -<translation id="8180294223783876911">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. Cela nous permettra d'assurer la stabilité du système et des applications, et d'apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">« <ph name="EXTENSION" /> » dispose d'un droit d'accès en lecture et en écriture aux images, aux vidéos et aux fichiers audio figurant dans les dossiers sélectionnés.</translation> <translation id="8181215761849004992">Impossible d'associer le domaine. Vérifiez votre compte pour vous assurer que vous disposez de privilèges suffisants pour ajouter des appareils.</translation> <translation id="8182105986296479640">L'application ne répond pas.</translation> @@ -5219,7 +5213,6 @@ <translation id="8203732864715032075">Vous envoyer des notifications et mémoriser cet ordinateur par défaut pour les messages. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="8204129288640092672">L'application « <ph name="APP_NAME" /> » est bloquée par ton parent. Pour l'utiliser, demande l'autorisation à ton parent.</translation> <translation id="820568752112382238">Sites les plus visités</translation> -<translation id="8206581664590136590">Envoyer les données d'utilisation et de diagnostic. Aidez-nous à améliorer l'expérience Android de votre enfant en envoyant automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. L'envoi de ces données ne sera pas utilisé pour identifier votre enfant, mais pour assurer la stabilité du système et des applications, et pour apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Mélodie</translation> <translation id="8206859287963243715">Cellulaire</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Téléchargement en cours…}one{Téléchargement en cours…}other{Téléchargements en cours…}}</translation> @@ -5759,7 +5752,6 @@ <translation id="8912362522468806198">Compte Google</translation> <translation id="8912793549644936705">Étirer</translation> <translation id="8912810933860534797">Activer l'analyse automatique</translation> -<translation id="891365694296252935">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. L'envoi de ces données ne sera pas utilisé pour identifier votre enfant, mais pour assurer la stabilité du système et des applications, et pour apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Ce paramètre est appliqué par le propriétaire du compte. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Chargement des suggestions en cours…</translation> <translation id="8916476537757519021">Sous-cadre de navigation privée : <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Vérification de votre clé de sécurité en cours…</translation> @@ -5896,7 +5888,6 @@ <translation id="9101691533782776290">Lancer l'application</translation> <translation id="9102610709270966160">Activer l'extension</translation> <translation id="9103868373786083162">Appuyez pour revenir en arrière, menu contextuel pour voir l'historique</translation> -<translation id="9104396740804929809">Envoyer les données d'utilisation et de diagnostic. Aidez-nous à améliorer votre expérience Android en envoyant automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. Cela nous permettra d'assurer la stabilité du système et des applications, et d'apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Ce paramètre est appliqué par le propriétaire du compte. C'est à lui de choisir d'envoyer ou non à Google les données de diagnostic et d'utilisation de cet appareil. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Pour libérer de l'espace, supprimez des fichiers de l'espace de stockage de l'appareil.</translation> <translation id="9109283579179481106">Connexion au réseau cellulaire</translation> <translation id="9111102763498581341">Déverrouiller</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 47432d4..33331849 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Données d'application hébergée</translation> <translation id="1776712937009046120">Ajouter un utilisateur</translation> <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation> -<translation id="1777310661937894236">Cet appareil est géré par <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Veuillez cliquer sur "Suivant" pour poursuivre la connexion à votre compte <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Saisissez cette clé d'accès sur "<ph name="DEVICE_NAME" />" :</translation> <translation id="177989070088644880">Application (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Fermer le groupe</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Un problème est survenu lors de l'affichage de la liste des imprimantes. Certaines de vos imprimantes ne sont peut-être pas correctement enregistrées dans <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Moteur de recherche utilisé dans la <ph name="BEGIN_LINK" />barre d'adresse<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Accéder au contenu que vous saisissez et le modifier</translation> -<translation id="220792432208469595">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ce processus permettra d'améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Ce paramètre est appliqué par le propriétaire. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Veuillez saisir le code d'accès de "<ph name="DEVICE_NAME" />" :</translation> <translation id="2212565012507486665">Autoriser les cookies</translation> <translation id="2213140827792212876">Supprimer le partage</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation> <translation id="2804667941345577550">Vous allez être déconnecté de ce site, y compris dans les onglets ouverts</translation> <translation id="2804680522274557040">Caméra désactivée</translation> -<translation id="2805539617243680210">Tout est prêt !</translation> <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft </translation> <translation id="2805756323405976993">Applications</translation> <translation id="2805770823691782631">Informations supplémentaires</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Capture d'écran réalisée</translation> <translation id="3742666961763734085">Impossible de trouver une unité organisationnelle portant ce nom. Veuillez réessayer.</translation> <translation id="3744111561329211289">Synchronisation en arrière-plan</translation> +<translation id="3747077776423672805">Pour supprimer des applications, sélectionnez Paramètres > Google Play Store > Gérer les préférences Android > Applications ou Gestionnaire d'applications, puis appuyez sur l'application que vous souhaitez désinstaller. Vous devrez peut-être balayer l'écran vers la droite ou la gauche pour localiser l'application. Ensuite, appuyez sur "Désinstaller" ou "Désactiver".</translation> <translation id="3748026146096797577">Non connecté</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mes appareils</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">La clé de sécurité n'est pas enregistrée auprès de ce site Web</translation> <translation id="4788092183367008521">Veuillez vérifier votre connexion réseau, puis réessayer.</translation> <translation id="4792711294155034829">&Signaler un problème...</translation> -<translation id="4795022432560487924">Envoyer des données d'utilisation et de diagnostic. Contribuez à l'amélioration de l'expérience de votre enfant sur Android en envoyant automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Ce paramètre est appliqué par le propriétaire. Le propriétaire de cet appareil peut choisir d'envoyer à Google des données de diagnostic et d'utilisation. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Page Web, HTML uniquement</translation> <translation id="4798236378408895261">Joindre les <ph name="BEGIN_LINK" />journaux Bluetooth<ph name="END_LINK" /> (usage interne de Google)</translation> <translation id="4801448226354548035">Masquer les comptes</translation> @@ -3362,6 +3358,7 @@ <translation id="5649053991847567735">Téléchargements automatiques</translation> <translation id="5653154844073528838">Vous avez <ph name="PRINTER_COUNT" /> imprimantes enregistrées.</translation> <translation id="5656845498778518563">Envoyer des commentaires à Google</translation> +<translation id="5657156137487675418">Autoriser tous les cookies</translation> <translation id="5657667036353380798">L'extension externe nécessite que la version <ph name="MINIMUM_CHROME_VERSION" /> ou une version ultérieure de Chrome soit installée.</translation> <translation id="5658415415603568799">Pour plus de sécurité, Smart Lock vous invitera à saisir votre mot de passe 20 heures après.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3568,7 +3565,6 @@ <translation id="5941711191222866238">Réduire</translation> <translation id="5942964813783878922">Votre <ph name="DEVICE_TYPE" /> redémarrera après cette mise à jour. Les prochaines mises à jour logicielles et de sécurité seront installées automatiquement.</translation> <translation id="5944869793365969636">Scanner le code QR</translation> -<translation id="5945188205370098537">Envoyer des données d'utilisation et de diagnostic. Contribuez à l'amélioration de votre expérience sur Android en envoyant automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ce processus permettra d'améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Identifiant de rapport <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Impossible d'analyser le fichier</translation> <translation id="5955282598396714173">Votre mot de passe est arrivé à expiration. Veuillez vous déconnecter, puis vous reconnecter pour le modifier.</translation> @@ -3752,6 +3748,7 @@ <translation id="6185132558746749656">Position de l'appareil</translation> <translation id="6186394685773237175">Aucun mot de passe compromis trouvé</translation> <translation id="6195693561221576702">Impossible de configurer cet appareil en mode de démonstration hors connexion.</translation> +<translation id="6196640612572343990">Bloquer les cookies tiers</translation> <translation id="6196854373336333322">L'extension <ph name="EXTENSION_NAME" /> a pris le contrôle de vos paramètres de proxy, ce qui signifie que toutes vos activités en ligne peuvent être modifiées, interrompues ou espionnées. Si vous ne savez pas pourquoi cette modification s'est produite, c'est qu'elle est probablement indésirable.</translation> <translation id="6198102561359457428">Se déconnecter, puis se connecter de nouveau…</translation> <translation id="6198252989419008588">Modifier le code</translation> @@ -4415,7 +4412,6 @@ <translation id="711902386174337313">Accéder à la liste de vos appareils connectés</translation> <translation id="7120865473764644444">Impossible de se connecter au serveur de synchronisation. Nouvelle tentative…</translation> <translation id="7121362699166175603">Efface l'historique et les saisies semi-automatiques dans la barre d'adresse. Votre compte Google conserve peut-être d'autres formes d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Mode développeur</translation> <translation id="7121728544325372695">Tirets longs</translation> <translation id="7123360114020465152">L'imprimante est désormais incompatible</translation> @@ -5198,7 +5194,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Déplacer l'onglet vers une nouvelle fenêtre}one{Move tabs to new window}other{Déplacer les onglets vers une nouvelle fenêtre}}</translation> <translation id="8179976553408161302">Entrée</translation> <translation id="8180239481735238521">page</translation> -<translation id="8180294223783876911">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ce processus permettra d'améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" dispose d'un droit d'accès en lecture/écriture sur les images, les vidéos et les fichiers audio figurant aux emplacements indiqués.</translation> <translation id="8181215761849004992">Impossible d'effectuer l'association au domaine. Vérifiez dans votre compte si vous disposez de droits suffisants pour ajouter des appareils.</translation> <translation id="8182105986296479640">L'application ne répond pas.</translation> @@ -5220,7 +5215,6 @@ <translation id="8203732864715032075">Vous envoyer des notifications et mémoriser cet ordinateur pour l'utilisation de l'appli Messages. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="8204129288640092672">L'application <ph name="APP_NAME" /> est bloquée par tes parents. Tu as besoin de leur autorisation pour l'utiliser.</translation> <translation id="820568752112382238">Sites les plus consultés</translation> -<translation id="8206581664590136590">Envoyer des données d'utilisation et de diagnostic. Contribuez à l'amélioration de l'expérience de votre enfant sur Android en envoyant automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Musique</translation> <translation id="8206859287963243715">Mobile</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Téléchargement en cours}one{Téléchargement en cours}other{Téléchargements en cours}}</translation> @@ -5760,7 +5754,6 @@ <translation id="8912362522468806198">Compte Google</translation> <translation id="8912793549644936705">Étirer</translation> <translation id="8912810933860534797">Activer la recherche automatique</translation> -<translation id="891365694296252935">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Ce paramètre est appliqué par le propriétaire. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Chargement des suggestions en cours…</translation> <translation id="8916476537757519021">Sous-cadre de navigation privée : <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Validation de votre clé de sécurité…</translation> @@ -5897,7 +5890,6 @@ <translation id="9101691533782776290">Lancer l'application</translation> <translation id="9102610709270966160">Activer l'extension</translation> <translation id="9103868373786083162">Appuyer pour revenir en arrière, menu contextuel pour afficher l'historique</translation> -<translation id="9104396740804929809">Envoyer des données d'utilisation et de diagnostic. Contribuez à l'amélioration de votre expérience sur Android en envoyant automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ce processus permettra d'améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Ce paramètre est appliqué par le propriétaire. Le propriétaire de cet appareil peut choisir d'envoyer à Google des données de diagnostic et d'utilisation. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications, ces données peuvent être enregistrées dans votre compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Pour libérer de l'espace, supprimez des fichiers de l'espace de stockage de l'appareil.</translation> <translation id="9109283579179481106">Se connecter au réseau mobile</translation> <translation id="9111102763498581341">Déverrouiller</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 74513a1..1cc21896 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -576,8 +576,6 @@ <translation id="177336675152937177">Datos da aplicación aloxada</translation> <translation id="1776712937009046120">Engadir usuario</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> xestiona este dispositivo. - Para seguir iniciando sesión na túa conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, fai clic en Seguinte.</translation> <translation id="1779652936965200207">Introduce esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplicación (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Pechar grupo</translation> @@ -891,7 +889,6 @@ <translation id="2202898655984161076">Produciuse un problema ao enumerar as impresoras. É posible que algunhas das túas impresoras non se rexistrasen correctamente con <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">O motor de busca que se utiliza na <ph name="BEGIN_LINK" />barra de enderezos<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Ler e modificar todo o que escribas</translation> -<translation id="220792432208469595">Enviar datos de uso e de diagnóstico. Este dispositivo envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google. Esta información permitirá aumentar a estabilidade do sistema e das aplicacións, e realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Esta opción de configuración contrólaa o propietario. Se está activada a opción Actividade web e das aplicacións adicional, estes datos pódense gardar na túa Conta de Google. <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Introduce este código PIN en "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permitir uso de cookies</translation> <translation id="2213140827792212876">Deixar de compartir</translation> @@ -1352,7 +1349,6 @@ <translation id="2804043232879091219">Non se puido abrir o navegador alternativo</translation> <translation id="2804667941345577550">Pecharase sesión neste sitio, aínda que o teñas aberto en pestanas</translation> <translation id="2804680522274557040">Desactivouse a cámara</translation> -<translation id="2805539617243680210">Todo listo</translation> <translation id="2805646850212350655">Sistema de ficheiros de cifrado de Microsoft</translation> <translation id="2805756323405976993">Aplicacións</translation> <translation id="2805770823691782631">Detalles adicionais</translation> @@ -2033,6 +2029,7 @@ <translation id="3742055079367172538">Captura de pantalla feita</translation> <translation id="3742666961763734085">Non se atopou ningunha unidade organizativa con ese nome. Téntao outra vez.</translation> <translation id="3744111561329211289">Sincronización en segundo plano</translation> +<translation id="3747077776423672805">Para eliminar aplicacións, accede a Configuración > Google Play Store > Xestionar preferencias de Android > Aplicacións —ou Xestionar aplicacións— e toca a aplicación que queiras desinstalar (é posible que debas pasar o dedo cara á dereita ou á esquerda para atopala). Despois, toca Desinstalar ou Desactivar.</translation> <translation id="3748026146096797577">Non conectado</translation> <translation id="3752582316358263300">Aceptar...</translation> <translation id="3752673729237782832">Os meus dispositivos</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Estás utilizando unha chave de seguranza que non está rexistrada neste sitio web</translation> <translation id="4788092183367008521">Comproba a conexión de rede e téntao de novo.</translation> <translation id="4792711294155034829">&Informar dun problema...</translation> -<translation id="4795022432560487924">Enviar datos de uso e de diagnóstico. Envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google para axudar a mellorar a experiencia do teu fillo en Android. Esta información non se utilizará para identificar o teu fillo, senón co obxectivo de aumentar a estabilidade do sistema e das aplicacións, e de realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Esta opción de configuración contrólaa o propietario. O cal pode optar por enviar datos de diagnóstico e uso deste dispositivo a Google. Se está activada a opción de configuración Actividade web e das aplicacións adicional para o teu fillo, estes datos pódense gardar na súa Conta de Google <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Páxina web, só HTML</translation> <translation id="4798236378408895261">Achegar <ph name="BEGIN_LINK" />rexistros de Bluetooth<ph name="END_LINK" /> (uso interno de Google)</translation> <translation id="4801448226354548035">Ocultar contas</translation> @@ -3590,7 +3586,6 @@ <translation id="5941711191222866238">Minimizar</translation> <translation id="5942964813783878922">O dispositivo <ph name="DEVICE_TYPE" /> reiniciarase despois desta actualización. As futuras actualizacións de software e de seguranza instalaranse automaticamente.</translation> <translation id="5944869793365969636">Escanear o código QR</translation> -<translation id="5945188205370098537">Enviar datos de uso e de diagnóstico. Envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google para axudar a mellorar a túa experiencia en Android. Esta información permitirá aumentar a estabilidade do sistema e das aplicacións, e realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Se está activada a opción Actividade web e das aplicacións adicional, estes datos pódense gardar na túa Conta de Google. <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID de informe <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Non se pode analizar o ficheiro</translation> <translation id="5955282598396714173">O teu contrasinal caducou. Pecha sesión e volve iniciala para cambialo.</translation> @@ -3776,6 +3771,7 @@ <translation id="6185132558746749656">Localización do dispositivo</translation> <translation id="6186394685773237175">Non se atoparon contrasinais vulnerados</translation> <translation id="6195693561221576702">Este dispositivo non se pode configurar no modo de demostración sen conexión.</translation> +<translation id="6196640612572343990">Bloquear cookies de terceiros</translation> <translation id="6196854373336333322">A extensión "<ph name="EXTENSION_NAME" />" asumiu o control da túa configuración de proxy, o que significa que pode cambiar, anular ou espiar todo o que fagas en liña. Se non estás seguro de por que se produciu este cambio, é probable que non che interese conservalo.</translation> <translation id="6198102561359457428">Pechar sesión e iniciala de novo...</translation> <translation id="6198252989419008588">Cambiar PIN</translation> @@ -4442,7 +4438,6 @@ <translation id="711902386174337313">Ler a lista de dispositivos en que iniciaches sesión</translation> <translation id="7120865473764644444">Non se puido conectar co servidor de sincronización. Tentándoo de novo...</translation> <translation id="7121362699166175603">Borra o historial e os completados automáticos na barra de enderezos. É posible que a túa conta de Google teña outras formas do historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Enviar datos de uso e de diagnóstico. Este dispositivo envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google. Esta información non se utilizará para identificar o teu fillo, senón co obxectivo de aumentar a estabilidade do sistema e das aplicacións, e de realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Se está activada a opción de configuración Actividade web e das aplicacións adicional para o teu fillo, estes datos pódense gardar na súa Conta de Google <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modo de programador</translation> <translation id="7121728544325372695">Trazos intelixentes</translation> <translation id="7123360114020465152">A impresora xa non é compatible</translation> @@ -4557,7 +4552,6 @@ <translation id="7280041992884344566">Produciuse un erro mentres Chrome buscaba software daniño</translation> <translation id="7280649757394340890">Configuración da síntese de voz</translation> <translation id="7280877790564589615">Solicitouse permiso</translation> -<translation id="7281268427852119151">Utiliza o teu historial de navegación para personalizar a Busca, os anuncios e outros servizos de Google</translation> <translation id="7282992757463864530">Barra de información</translation> <translation id="7287143125007575591">Denegouse o acceso.</translation> <translation id="7287411021188441799">Restaurar fondo predeterminado</translation> @@ -5231,7 +5225,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover pestana a unha ventá nova}other{Mover pestanas a unha ventá nova}}</translation> <translation id="8179976553408161302">Intro</translation> <translation id="8180239481735238521">páxina</translation> -<translation id="8180294223783876911">Enviar datos de uso e de diagnóstico. Este dispositivo envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google. Esta información permitirá aumentar a estabilidade do sistema e das aplicacións, e realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Se está activada a opción Actividade web e das aplicacións adicional, estes datos pódense gardar na túa Conta de Google. <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" pode ler e eliminar ficheiros de imaxes, vídeo e son nas localizacións seleccionadas.</translation> <translation id="8181215761849004992">O dispositivo non se puido vincular ao dominio. Comproba a túa conta para ver se tes privilexios suficientes para engadir dispositivos.</translation> <translation id="8182105986296479640">A aplicación non responde.</translation> @@ -5253,7 +5246,6 @@ <translation id="8203732864715032075">Envíache notificacións e lembra de modo predeterminado este ordenador para Mensaxes. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Teu pai ou túa nai bloqueou <ph name="APP_NAME" />. Pídelle permiso para utilizar esta aplicación.</translation> <translation id="820568752112382238">Sitios máis visitados</translation> -<translation id="8206581664590136590">Enviar datos de uso e de diagnóstico. Envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google para axudar a mellorar a experiencia do teu fillo en Android. Esta información non se utilizará para identificar o teu fillo, senón co obxectivo de aumentar a estabilidade do sistema e das aplicacións, e de realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Se está activada a opción de configuración Actividade web e das aplicacións adicional para o teu fillo, estes datos pódense gardar na súa Conta de Google <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Tipo blues</translation> <translation id="8206859287963243715">Móbil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{A descarga está en curso}other{As descargas están en curso}}</translation> @@ -5799,7 +5791,6 @@ <translation id="8912362522468806198">Conta de Google</translation> <translation id="8912793549644936705">Estricar</translation> <translation id="8912810933860534797">Activar a exploración automática</translation> -<translation id="891365694296252935">Enviar datos de uso e de diagnóstico. Este dispositivo envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google. Esta información non se utilizará para identificar o teu fillo, senón co obxectivo de aumentar a estabilidade do sistema e das aplicacións, e de realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Esta opción de configuración contrólaa o propietario. Se está activada a opción Actividade web e das aplicacións adicional para o teu fillo, estes datos pódense gardar na súa Conta de Google <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Cargando suxestión</translation> <translation id="8916476537757519021">Submarco de incógnito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verificando a chave de seguranza...</translation> @@ -5936,7 +5927,6 @@ <translation id="9101691533782776290">Iniciar aplicación</translation> <translation id="9102610709270966160">Activar extensión</translation> <translation id="9103868373786083162">Preme para retroceder e acceder ao menú contextual para ver o historial</translation> -<translation id="9104396740804929809">Enviar datos de uso e de diagnóstico. Envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google para axudar a mellorar a túa experiencia en Android. Esta información permitirá aumentar a estabilidade do sistema e das aplicacións, e realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Esta opción de configuración contrólaa o propietario. O cal pode optar por enviar datos de diagnóstico e uso deste dispositivo a Google. Se está activada a opción Actividade web e das aplicacións adicional, estes datos pódense gardar na túa Conta de Google. <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Para liberar espazo, elimina ficheiros do almacenamento do dispositivo.</translation> <translation id="9109283579179481106">Conectarse a unha rede de telefonía móbil</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index d14bf156..a221a83a 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -569,8 +569,6 @@ <translation id="177336675152937177">હોસ્ટ કરેલ ઍપ્લિકેશન ડેટા</translation> <translation id="1776712937009046120">વપરાશકર્તા ઉમેરો</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">આ ડિવાઇસ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> દ્વારા સંચાલિત છે. - તમારા <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> એકાઉન્ટમાં સાઇન ઇન કરવાનું ચાલુ રાખવા માટે કૃપા કરીને "આગલું" પર ક્લિક કરો.</translation> <translation id="1779652936965200207">કૃપા કરીને "<ph name="DEVICE_NAME" />" પર આ પાસકી દાખલ કરો:</translation> <translation id="177989070088644880">ઍપ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ગ્રૂપ બંધ કરો</translation> @@ -883,7 +881,6 @@ <translation id="2202898655984161076">પિંટર્સની સૂચિ બનાવવામાં સમસ્યા આવી. તમારા કેટલાક પ્રિંટર્સ<ph name="CLOUD_PRINT_NAME" /> સાથે સફળતાપૂર્વક નોંધાઈ શક્યા નથી.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />સરનામાં બાર<ph name="END_LINK" />માં ઉપયોગમાં લેવામાં આવેલ શોધ એંજિન</translation> <translation id="2204034823255629767">તમે જે કંઈ લખો છો તેને વાંચો અને બદલો</translation> -<translation id="220792432208469595">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આ સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. આ સેટિંગ માલિક દ્વારા લાગુ કરવામાં આવેલ છે. જો તમારી વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તમારા Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="220858061631308971">કૃપા કરીને "<ph name="DEVICE_NAME" />" પર આ પિન કોડ દાખલ કરો:</translation> <translation id="2212565012507486665">કુકીને મંજૂરી આપો</translation> <translation id="2213140827792212876">શેરિંગ કાઢી નાખો</translation> @@ -1339,7 +1336,6 @@ <translation id="2804043232879091219">વૈકલ્પિક બ્રાઉઝર ખોલી શકાયું નથી</translation> <translation id="2804667941345577550">ખુલ્લા ટૅબ સહિત, આ સાઇટમાંથી તમને સાઇન આઉટ કરવામાં આવશે</translation> <translation id="2804680522274557040">કૅમેરા બંધ કર્યો</translation> -<translation id="2805539617243680210">આગળ વધવા માટે તમે સંપૂર્ણ રીતે સજ્જ છો!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">એપ્સ</translation> <translation id="2805770823691782631">વધારાની વિગતો</translation> @@ -2017,6 +2013,7 @@ <translation id="3742055079367172538">સ્ક્રીનશૉટ લેવાયો</translation> <translation id="3742666961763734085">તે નામવાળો કોઈ સંસ્થાકીય એકમ શોધી શકાયો નથી. કૃપા કરીને ફરી પ્રયત્ન કરો.</translation> <translation id="3744111561329211289">પૃષ્ઠભૂમિ સમન્વયન</translation> +<translation id="3747077776423672805">ઍપને કાઢી નાખવા માટે, સેટિંગ > Google Play સ્ટોર > Android પસંદગીઓ મેનેજ કરો > ઍપ અથવા ઍપ્લિકેશન મેનેજર પર જાઓ. પછી તમે અનઇન્સ્ટૉલ કરવા માગો છો તે ઍપ પર ટૅપ કરો (ઍપ શોધવા માટે તમારે જમણે અથવા ડાબે સ્વાઇપ કરવું જરૂરી હોય શકે છે). પછી અનઇન્સ્ટૉલ કરો અથવા બંધ કરો પર ટૅપ કરો.</translation> <translation id="3748026146096797577">કનેક્ટેડ નથી</translation> <translation id="3752582316358263300">બરાબર, સમજાઇ ગયું...</translation> <translation id="3752673729237782832">મારા ઉપકરણો</translation> @@ -2737,7 +2734,6 @@ <translation id="4785719467058219317">તમે આ વેબસાઇટમાં રજિસ્ટર ન થયેલા સુરક્ષા કોડનો ઉપયોગ કરી રહ્યા છો</translation> <translation id="4788092183367008521">કૃપા કરીને તમારું નેટવર્ક કનેક્શન ચેક કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="4792711294155034829">&સમસ્યાની જાણ કરો...</translation> -<translation id="4795022432560487924">વપરાશ અને નિદાનનો ડેટા મોકલો. Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલીને તમારા બાળકના Android અનુભવને બહેતર બનાવવામાં સહાય કરો. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. આ સેટિંગ માલિક દ્વારા લાગુ કરવામાં આવેલ છે. માલિક, Googleને આ ડિવાઇસ માટે નિદાન અને વપરાશ ડેટા મોકલવાનું પસંદ કરી શકે છે. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="479536056609751218">વેબપેજ, ફક્ત HTML</translation> <translation id="4798236378408895261">જોડો <ph name="BEGIN_LINK" />બ્લૂટૂથ લૉગ<ph name="END_LINK" /> (Google આંતરિક)</translation> <translation id="4801448226354548035">એકાઉન્ટ્સ છુપાવો</translation> @@ -3358,6 +3354,7 @@ <translation id="5649053991847567735">આપમેળે ડાઉનલોડ્સ</translation> <translation id="5653154844073528838">તમારી પાસે <ph name="PRINTER_COUNT" /> સાચવેલા પ્રિન્ટર છે.</translation> <translation id="5656845498778518563">Googleને પ્રતિસાદ મોકલો</translation> +<translation id="5657156137487675418">બધી કૂકીઝને મંજૂરી આપો</translation> <translation id="5657667036353380798">બાહ્ય એક્સ્ટેંશન માટે chrome વર્ઝન <ph name="MINIMUM_CHROME_VERSION" /> અથવા તેનાથી મોટું વર્ઝન ઇન્સ્ટૉલ કરેલ હોવું જરૂરી છે.</translation> <translation id="5658415415603568799">વધારાની સુરક્ષા માટે, Smart Lock તમને 20 કલાક પછી તમારો પાસવર્ડ દાખલ કરવાનું કહેશે.</translation> <translation id="5659593005791499971">ઇમેઇલ</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">નાનું કરો</translation> <translation id="5942964813783878922">આ અપડેટ પૂર્ણ થયા પછી, તમારું <ph name="DEVICE_TYPE" /> ફરી શરૂ થશે. ભાવિ સૉફ્ટવેર અને સુરક્ષા અપડેટ ઑટોમૅટિક રીતે ઇન્સ્ટૉલ કરવામાં આવશે.</translation> <translation id="5944869793365969636">QR કોડ સ્કૅન કરો</translation> -<translation id="5945188205370098537">વપરાશ અને નિદાનનો ડેટા મોકલો. Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલીને તમારા Android અનુભવને બહેતર બનાવવામાં સહાય કરો. આ સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારી વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તમારા Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">રીપોર્ટ ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ફાઇલનું વિશ્લેષણ કરવામાં અસમર્થ</translation> <translation id="5955282598396714173">તમારા પાસવર્ડનો સમય પૂરો થઈ ગયો છે. કૃપા કરીને સાઇન આઉટ કરો પછી તેને બદલવા માટે ફરીથી સાઇન ઇન કરો.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">ઉપકરણનું સ્થાન</translation> <translation id="6186394685773237175">ચેડાં કરાયેલો કોઈ પાસવર્ડ મળ્યો નથી</translation> <translation id="6195693561221576702">આ ડિવાઇસ ઇન્ટરનેટ વગર ડેમો મોડમાં સેટઅપ કરી શકાતું નથી.</translation> +<translation id="6196640612572343990">તૃતીય પક્ષની કુકીઝ અવરોધિત કરો</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" એક્સ્ટેન્શને તમારા પ્રૉક્સી સેટિંગનું નિયંત્રણ લઈ લીધું છે, એનો અર્થ છે કે તમે જે કંઈ પણ ઓનલાઇન કરો છો એને એ બદલી, ભંગ કરી કે છુપાઈને પારકી વાતો સાંભળી શકે છે. આ ફેરફાર કેમ થયો એ અંગે જો તમને ખાતરી નથી, તો સંભવિત રૂપે એ તમને જોઈતું નહિ હોય.</translation> <translation id="6198102561359457428">સાઇન આઉટ કરો પછી ફરી સાઇન કરો...</translation> <translation id="6198252989419008588">PIN બદલો</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">તમારા સાઇન ઇન કરેલા ઉપકરણોની સૂચિને વાંચો</translation> <translation id="7120865473764644444">સમન્વયન સર્વર સાથે કનેક્ટ કરી શકાયું નથી. ફરી પ્રયાસ કરી રહ્યાં છે...</translation> <translation id="7121362699166175603">ઍડ્રેસ બારમાં ઇતિહાસ અને ઑટોમૅટિક રીતે પૂર્ણતા સાફ કરે છે. તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation> -<translation id="7121389946694989825">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ડેવલપર મોડ</translation> <translation id="7121728544325372695">સ્માર્ટ ડૅશ</translation> <translation id="7123360114020465152">હવે સમર્થિત રહ્યું નથી</translation> @@ -5189,7 +5185,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ટૅબને નવી વિંડોમાં ખસેડો}one{ટૅબને નવી વિંડોમાં ખસેડો}other{ટૅબને નવી વિંડોમાં ખસેડો}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521"> પૃષ્ઠ</translation> -<translation id="8180294223783876911">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આ સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારી વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તમારા Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" આ તપાસાયેલા સ્થાનોમાં ફોટા, વીડિયો અને સાઉન્ડ ફાઇલોને વાંચી શકે છે.</translation> <translation id="8181215761849004992">ડોમેન જોડી શકાતું નથી. અમારી પાસે ઉપકરણો ઉમેરવા માટેના વિશેષાધિકાર છે કે નહીં તે જોવા માટે તમારું એકાઉન્ટ ચેક કરો.</translation> <translation id="8182105986296479640">ઍપ્લિકેશન ચાલી રહી નથી.</translation> @@ -5211,7 +5206,6 @@ <translation id="8203732864715032075">તમને નોટિફિકેશન મોકલે અને સંદેશ માટે ડિફૉલ્ટ રૂપે આ કમ્પ્યુટરને યાદ રાખે. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />"ને તમારા માતાપિતા દ્વારા બ્લૉક કરવામાં આવી છે. આ ઍપનો ઉપયોગ કરવા માટે તમારા માતાપિતા પાસે પરવાનગી માગો.</translation> <translation id="820568752112382238">સૌથી વધુ મુલાકાત લેવાયેલી સાઇટ</translation> -<translation id="8206581664590136590">વપરાશ અને નિદાનનો ડેટા મોકલો. Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલીને તમારા બાળકના Android અનુભવને બહેતર બનાવવામાં સહાય કરો. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">બ્લુસી</translation> <translation id="8206859287963243715">સેલ્યુલર</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ડાઉનલોડ ચાલુ છે}one{ડાઉનલોડ ચાલુ છે}other{ડાઉનલોડ ચાલુ છે}}</translation> @@ -5751,7 +5745,6 @@ <translation id="8912362522468806198">Google એકાઉન્ટ</translation> <translation id="8912793549644936705">ખેંચો</translation> <translation id="8912810933860534797">ઑટો સ્કૅન ચાલુ કરો</translation> -<translation id="891365694296252935">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. આ સેટિંગ માલિક દ્વારા લાગુ કરવામાં આવેલ છે. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">સૂચનને લોડ કરી રહ્યું છે</translation> <translation id="8916476537757519021">છુપો મોડ સબફ્રેમ: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">તમારો સુરક્ષા કોડ ચકાસી રહ્યાં છીએ...</translation> @@ -5888,7 +5881,6 @@ <translation id="9101691533782776290">ઍપ્લિકેશન લોન્ચ કરો</translation> <translation id="9102610709270966160">એક્સ્ટેંશન ચાલુ કરો</translation> <translation id="9103868373786083162">પાછા જવા માટે દબાવો, ઇતિહાસ જોવા માટે સંદર્ભ મેનૂ પર જાઓ</translation> -<translation id="9104396740804929809">વપરાશ અને નિદાનનો ડેટા મોકલો. Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલીને તમારા Android અનુભવને બહેતર બનાવવામાં સહાય કરો. આ સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. આ સેટિંગ માલિક દ્વારા લાગુ કરવામાં આવેલ છે. માલિક, Googleને આ ડિવાઇસ માટે નિદાન અને વપરાશ ડેટા મોકલવાનું પસંદ કરી શકે છે. જો તમારી વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તમારા Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">સ્થાન ખાલી કરવા માટે, ડ્રાઇવ સ્ટોરેજમાંથી ફાઇલો ડિલીટ કરો.</translation> <translation id="9109283579179481106">મોબાઇલ નેટવર્ક સાથે કનેક્ટ થાઓ</translation> <translation id="9111102763498581341">અનલોક કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 6d0898a7..0619310 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">होस्ट किया गया ऐप्लिकेशन डेटा</translation> <translation id="1776712937009046120">उपयोगकर्ता जोड़ें</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> इस डिवाइस को प्रबंधित करता है. - कृपया अपने <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> खाते में साइन इन जारी रखने के लिए "आगे बढ़ें" पर क्लिक करें.</translation> <translation id="1779652936965200207">कृपया यह पासकुंजी "<ph name="DEVICE_NAME" />" पर दर्ज करें:</translation> <translation id="177989070088644880">ऐप्लिकेशन (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ग्रुप बंद करें</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">प्रिंटरों को सूचीबद्ध करने में कोई समस्या थी. आपके प्रिंटरों में से कुछ <ph name="CLOUD_PRINT_NAME" /> के साथ सफलतापूर्वक पंजीकृत नहीं हो सके हैं.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />पता बार<ph name="END_LINK" /> में इस्तेमाल किया गया सर्च इंजन</translation> <translation id="2204034823255629767">आप जो कुछ भी लिखते हैं उसे पढ़ें और बदलें</translation> -<translation id="220792432208469595">इस्तेमाल और निदान से जुड़ा डेटा भेजें. यह डिवाइस फ़िलहाल Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेज रहा है. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. यह सेटिंग डिवाइस के मालिक ने लागू की है. अगर आपकी दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा आपके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="220858061631308971">कृपया इस पिन कोड को "<ph name="DEVICE_NAME" />" पर दर्ज करें:</translation> <translation id="2212565012507486665">कुकी की अनुमति दें</translation> <translation id="2213140827792212876">शेयर की गई फ़ाइलें हटाएं</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउज़र नहीं खोला जा सका</translation> <translation id="2804667941345577550">आपको इस साइट और खुले हुए टैब से साइन आउट कर दिया जाएगा</translation> <translation id="2804680522274557040">कैमरा बंद किया गया</translation> -<translation id="2805539617243680210">अब आप बिल्कुल तैयार हैं!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ऐप्स</translation> <translation id="2805770823691782631">ज़्यादा जानकारी</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">स्क्रीनशॉट लिया गया</translation> <translation id="3742666961763734085">इस नाम की संगठनात्मक इकाई नहीं मिल पा रही है. कृपया फिर से कोशिश करें.</translation> <translation id="3744111561329211289">बैकग्राउंड सिंक</translation> +<translation id="3747077776423672805">ऐप्लिकेशन हटाने के लिए, सेटिंग > 'Google Play स्टोर' > Android से जुड़ी पसंद प्रबंधित करें > ऐप्लिकेशन या ऐप्लिकेशन मैनेजर पर जाएं. उसके बाद उस ऐप्लिकेशन पर टैप करें जिसे आप अनइंस्टॉल करना चाहते हैं (ऐप्लिकेशन ढूंढने के लिए आपको दाएं या बाएं स्वाइप करना पड़ सकता है). फिर 'अनइंस्टॉल करें' या 'बंद करें' पर टैप करें.</translation> <translation id="3748026146096797577">कनेक्ट नहीं है</translation> <translation id="3752582316358263300">ठीक है...</translation> <translation id="3752673729237782832">मेरे डिवाइस</translation> @@ -2740,7 +2737,6 @@ <translation id="4785719467058219317">आप एक ऐसी 'सुरक्षा चाबी' इस्तेमाल कर रहे हैं जिसे इस वेबसाइट पर रजिस्टर नहीं किया गया है</translation> <translation id="4788092183367008521">कृपया अपना नेटवर्क कनेक्शन जाँच लें और फिर से कोशिश करें.</translation> <translation id="4792711294155034829">किसी समस्या की &रिपोर्ट करें...</translation> -<translation id="4795022432560487924">इस्तेमाल और निदान से जुड़ा डेटा भेजें. Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेजकर, अपने बच्चे के Android अनुभव को बेहतर बनाने में मदद करें. इसका इस्तेमाल आपके बच्चे की पहचान करने के लिए नहीं किया जाएगा. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. यह सेटिंग डिवाइस के मालिक ने लागू की है. डिवाइस का मालिक यह चुन सकता है कि निदान और इस डिवाइस के इस्तेमाल से जुड़ा डेटा Google को भेजना है. अगर आपके बच्चे के लिए दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा उसके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="479536056609751218">वेबपेज, केवल HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ब्लूटूथ लॉग<ph name="END_LINK" /> अटैच करें (Google का अंदरूनी मामला)</translation> <translation id="4801448226354548035">खाते छिपाएं</translation> @@ -3360,6 +3356,7 @@ <translation id="5649053991847567735">अपने आप होने वाले डाउनलोड</translation> <translation id="5653154844073528838">आपके पास <ph name="PRINTER_COUNT" /> सेव किए गए प्रिंटर हैं.</translation> <translation id="5656845498778518563">Google को सुझाव भेजें</translation> +<translation id="5657156137487675418">सभी कुकी को अनुमति दें</translation> <translation id="5657667036353380798">बाहरी एक्सटेंशन को इंस्टॉल होने के लिए chrome के <ph name="MINIMUM_CHROME_VERSION" /> या उच्चतर वर्शन की आवश्यकता होती है.</translation> <translation id="5658415415603568799">अतिरिक्त सुरक्षा के लिए, Smart Lock आपसे 20 घंटों के बाद अपना पासवर्ड डालने के लिए कहेगा.</translation> <translation id="5659593005791499971">ईमेल</translation> @@ -3566,7 +3563,6 @@ <translation id="5941711191222866238">छोटा करें</translation> <translation id="5942964813783878922">इस अपडेट के बाद आपका <ph name="DEVICE_TYPE" /> रीस्टार्ट हो जाएगा. आने वाले सॉफ़्टवेयर और सुरक्षा के अपडेट अपने आप इंस्टॉल हो जाएंगे.</translation> <translation id="5944869793365969636">क्यूआर कोड स्कैन करें</translation> -<translation id="5945188205370098537">इस्तेमाल और निदान से जुड़ा डेटा भेजें. Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेजकर, अपने Android अनुभव को बेहतर बनाने में मदद करें. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. अगर आपकी दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा आपके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">रिपोर्ट आईडी <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">फ़ाइल को पार्स नहीं किया जा सका</translation> <translation id="5955282598396714173">आपके पासवर्ड की समय-सीमा खत्म हो गई है. इसे बदलने के लिए कृपया साइन आउट करके फिर से साइन इन करें.</translation> @@ -3750,6 +3746,7 @@ <translation id="6185132558746749656">डिवाइस स्थान</translation> <translation id="6186394685773237175">ऐसा कोई भी पासवर्ड नहीं मिला जो या तो हैक हुआ है या चोरी हुआ है</translation> <translation id="6195693561221576702">यह डिवाइस ऑफ़लाइन डेमो मोड में सेट अप नहीं किया जा सकता.</translation> +<translation id="6196640612572343990">तीसरे पक्ष की कुकी ब्लॉक करें</translation> <translation id="6196854373336333322">एक्सटेंशन "<ph name="EXTENSION_NAME" />" ने आपकी प्रॉक्सी सेटिंग पर नियंत्रण कर लिया है, जिसका अर्थ है कि यह ऑनलाइन किए जाने वाले काम को बदल सकता है, रोक सकता है या उसे छिप कर सुन सकता है. अगर आप पक्का नहीं हैं कि यह बदलाव क्यों हुआ है, तो संभवत: आप उसे नहीं चाहते हैं.</translation> <translation id="6198102561359457428">साइन आउट करें और फिर से साइन इन करें...</translation> <translation id="6198252989419008588">पिन बदलें</translation> @@ -4413,7 +4410,6 @@ <translation id="711902386174337313">अपने प्रवेश किए गए डिवाइस की सूची ऐक्सेस करें</translation> <translation id="7120865473764644444">सिंक सर्वर से कनेक्ट नहीं किया जा सका. पुनः प्रयास किया जा रहा है...</translation> <translation id="7121362699166175603">पता बार मेंअपने-आपपूर्णता और इतिहास को हटाता है. आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर अन्य प्रकार के ब्राउज़िंग इतिहास हो सकतेे हैं.</translation> -<translation id="7121389946694989825">इस्तेमाल और निदान से जुड़ा डेटा भेजें. यह डिवाइस फ़िलहाल Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेज रहा है. इसका इस्तेमाल आपके बच्चे की पहचान करने के लिए नहीं किया जाएगा. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. अगर आपके बच्चे के लिए दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा उसके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">डेवलपर मोड</translation> <translation id="7121728544325372695">Smart Dashes</translation> <translation id="7123360114020465152">अब काम नहीं करता है</translation> @@ -5195,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{टैब को नई विंडो पर ले जाएं}one{टैब को नई विंडो पर ले जाएं}other{टैब को नई विंडो पर ले जाएं}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521"> पेज</translation> -<translation id="8180294223783876911">इस्तेमाल और निदान से जुड़ा डेटा भेजें. यह डिवाइस फ़िलहाल Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेज रहा है. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. अगर आपकी दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा आपके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" चेक किए गए स्थानों में इमेज, वीडियो, और ध्वनि फ़ाइलों को पढ़ सकता है और मिटा सकता है.</translation> <translation id="8181215761849004992">डोमेन से नहीं जोड़ सकते. यह जानने के लिए अपना खाता देखें कि आपके पास डिवाइस जोड़ने के खास अधिकार हैं या नहीं.</translation> <translation id="8182105986296479640">ऐप्लिकेशन काम नहीं कर रहा है</translation> @@ -5217,7 +5212,6 @@ <translation id="8203732864715032075">आपको सूचनाएं भेजती है और यह याद रखती है कि मैसेज के लिए यह कंप्यूटर डिफ़ॉल्ट है. <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation> <translation id="8204129288640092672">आपके माता-पिता ने "<ph name="APP_NAME" />" को ब्लॉक किया है. उनसे इस ऐप्लिकेशन का इस्तेमाल करने की अनुमति लें.</translation> <translation id="820568752112382238">सबसे ज़्यादा देखी गई साइटें</translation> -<translation id="8206581664590136590">इस्तेमाल और निदान से जुड़ा डेटा भेजें. Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेजकर, अपने बच्चे के Android अनुभव को बेहतर बनाने में मदद करें. इसका इस्तेमाल आपके बच्चे की पहचान करने के लिए नहीं किया जाएगा. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. अगर आपके बच्चे के लिए दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा उसके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ब्लुसी</translation> <translation id="8206859287963243715">सेलुलर</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड जारी है}one{डाउनलोड जारी हैं}other{डाउनलोड जारी हैं}}</translation> @@ -5757,7 +5751,6 @@ <translation id="8912362522468806198">Google खाता</translation> <translation id="8912793549644936705">खींचें</translation> <translation id="8912810933860534797">अपने आप स्कैन करने की सुविधा चालू करें</translation> -<translation id="891365694296252935">इस्तेमाल और निदान से जुड़ा डेटा भेजें. यह डिवाइस फ़िलहाल Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेज रहा है. इसका इस्तेमाल आपके बच्चे की पहचान करने के लिए नहीं किया जाएगा. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. यह सेटिंग डिवाइस के मालिक ने लागू की है. अगर आपके बच्चे के लिए दूसरी 'वेब और ऐप्लिकेशन गतिविधि' चालू है, तो यह डेटा उसके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">सुझाव लोड हो रहे हैं</translation> <translation id="8916476537757519021">गुप्त सबफ़्रेम: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">आपकी 'सुरक्षा चाबी' की पुष्टि की जा रही है...</translation> @@ -5894,7 +5887,6 @@ <translation id="9101691533782776290">ऐप्लिकेशन लॉन्च करें</translation> <translation id="9102610709270966160">एक्सटेंशन चालू करें</translation> <translation id="9103868373786083162">वापस जाने के लिए इसे दबाएं, इतिहास देखने के लिए संदर्भ मेन्यू पर जाएं</translation> -<translation id="9104396740804929809">इस्तेमाल और निदान से जुड़ा डेटा भेजें. Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेजकर, अपने Android अनुभव को बेहतर बनाने में मदद करें. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. यह सेटिंग डिवाइस के मालिक ने लागू की है. डिवाइस का मालिक यह चुन सकता है कि निदान और इस डिवाइस के इस्तेमाल से जुड़ा डेटा Google को भेजना है. अगर आपकी दूसरी 'वेब और ऐप्लिकेशन गतिविधि' सेटिंग चालू है, तो यह डेटा आपके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">जगह खाली करने के लिए, डिवाइस की मेमोरी से फ़ाइलों को मिटाएं.</translation> <translation id="9109283579179481106">मोबाइल नेटवर्क से कनेक्ट करें</translation> <translation id="9111102763498581341">अनलॉक करें</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index e9d6776..b908ba7 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Podaci hostiranih aplikacija</translation> <translation id="1776712937009046120">Dodaj korisnika</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Uređajem upravlja <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kliknite "Dalje" da biste se nastavili prijavljivati na <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> račun.</translation> <translation id="1779652936965200207">Unesite ovu zaporku na uređaju "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplikacija (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zatvori grupu</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Postojao je problem s navođenjem pisača. Neki od pisača možda se nisu uspješno prijavili na <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Tražilica koja se upotrebljava na <ph name="BEGIN_LINK" />adresnoj traci<ph name="END_LINK" /></translation> <translation id="2204034823255629767">čitati i mijenjati sve što pišete</translation> -<translation id="220792432208469595">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti podaci pomoći će poboljšati stabilnost sustava, aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Ako je uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Unesite ovaj PIN kôd na uređaj "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Dopusti kolačiće</translation> <translation id="2213140827792212876">Ukloni dijeljenje</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nije bilo moguće otvoriti zamjenski preglednik</translation> <translation id="2804667941345577550">Odjavit ćete se s ove stranice, uključujući i prijave na otvorenim karticama</translation> <translation id="2804680522274557040">Kamera je isključena</translation> -<translation id="2805539617243680210">Spremni ste!</translation> <translation id="2805646850212350655">Microsoftov sustav šifriranja datoteke</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatne pojedinosti</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Izrađena je snimka zaslona</translation> <translation id="3742666961763734085">Nije moguće pronaći organizacijsku jedinicu s tim nazivom. Pokušajte ponovo.</translation> <translation id="3744111561329211289">Sinkronizacija u pozadini</translation> +<translation id="3747077776423672805">Za uklanjanje aplikacija idite na Postavke > Trgovina Play > Upravljanje postavkama Androida > Aplikacije ili Upravitelj aplikacija. Zatim dodirnite aplikaciju koju želite deinstalirati (možda ćete morati prijeći prstom udesno ili ulijevo kako biste pronašli aplikaciju). Zatim dodirnite Deinstaliraj ili Onemogući.</translation> <translation id="3748026146096797577">Nije povezano</translation> <translation id="3752582316358263300">U redu...</translation> <translation id="3752673729237782832">Moji uređaji</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Upotrebljavate sigurnosni ključ koji nije registriran na toj web-lokaciji</translation> <translation id="4788092183367008521">Provjerite mrežnu vezu i pokušajte ponovo.</translation> <translation id="4792711294155034829">&Prijavljivanje problema...</translation> -<translation id="4795022432560487924">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati djetetov doživljaj Androida automatskim slanjem dijagnostičkih podataka i podataka o upotrebi uređaja i aplikacija Googleu. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Vlasnik može Googleu slati dijagnostiku i podatke o upotrebi za ovaj uređaj. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Web-stranica, samo HTML</translation> <translation id="4798236378408895261">Priloži <ph name="BEGIN_LINK" />Bluetooth zapisnike<ph name="END_LINK" /> (Google interno)</translation> <translation id="4801448226354548035">Sakrij račune</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatska preuzimanja</translation> <translation id="5653154844073528838">Imate još spremljenih pisača: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Pošaljite Googleu povratne informacije</translation> +<translation id="5657156137487675418">Dopusti sve kolačiće</translation> <translation id="5657667036353380798">Vanjsko proširenje zahtijeva instaliranje verzije Chromea <ph name="MINIMUM_CHROME_VERSION" /> ili novije.</translation> <translation id="5658415415603568799">Za dodatnu sigurnost Smart Lock će tražiti da unesete zaporku nakon 20 sati.</translation> <translation id="5659593005791499971">E-pošta</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimiziraj</translation> <translation id="5942964813783878922">Vaš <ph name="DEVICE_TYPE" /> ponovno će se pokrenuti nakon ovog ažuriranja. Buduća ažuriranja softvera i sigurnosna ažuriranja instalirat će se automatski.</translation> <translation id="5944869793365969636">Skeniranje QR koda</translation> -<translation id="5945188205370098537">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati Android automatskim slanjem dijagnostičkih podataka te podataka o upotrebi uređaja i aplikacija Googleu. Ti podaci pomoći će poboljšati stabilnost sustava, aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID izvješća <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Nije moguće analizirati datoteku</translation> <translation id="5955282598396714173">Zaporka je istekla. Odjavite se pa se ponovo prijavite da biste je promijenili.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Lokacija uređaja</translation> <translation id="6186394685773237175">Nije pronađena nijedna ugrožena zaporka</translation> <translation id="6195693561221576702">Uređaj nije moguće postaviti u izvanmrežnom demo načinu.</translation> +<translation id="6196640612572343990">Blokiraj kolačiće trećih strana</translation> <translation id="6196854373336333322">Proširenje "<ph name="EXTENSION_NAME" />" preuzelo je kontrolu nad vašim postavkama proxyja, a to znači da može promijeniti, prekinuti ili prisluškivati sve što radite na mreži. Ako niste sigurni kako je došlo do te promjene, vjerojatno je ne želite.</translation> <translation id="6198102561359457428">Odjavite se, a zatim ponovo prijavite...</translation> <translation id="6198252989419008588">Promijeni PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">pročitati popis uređaja na koje ste prijavljeni</translation> <translation id="7120865473764644444">Povezivanje s poslužiteljem za sinkronizaciju nije uspjelo. Ponovni pokušaj...</translation> <translation id="7121362699166175603">Briše povijest i automatska dovršavanja u adresnoj traci. Na vašem Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Način razvojnog programera</translation> <translation id="7121728544325372695">Pametne crtice</translation> <translation id="7123360114020465152">Više nije podržan</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Došlo je do pogreške dok je Chrome tražio štetni softver</translation> <translation id="7280649757394340890">Postavke glasa za pretvaranje teksta u govor</translation> <translation id="7280877790564589615">Traženje dopuštenja</translation> -<translation id="7281268427852119151">Upotrijebite povijest pregledavanja da biste prilagodili pretraživanje, oglase i ostale Googleove usluge</translation> <translation id="7282992757463864530">Infotraka</translation> <translation id="7287143125007575591">Pristup je odbijen.</translation> <translation id="7287411021188441799">Vratite zadanu pozadinu</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Premjesti karticu u novi prozor}one{Premjesti kartice u novi prozor}few{Premjesti kartice u novi prozor}other{Premjesti kartice u novi prozor}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">stranica</translation> -<translation id="8180294223783876911">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti podaci pomoći će poboljšati stabilnost sustava, aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" može čitati i brisati slikovne, video i audiodatoteke na označenim lokacijama.</translation> <translation id="8181215761849004992">Pridruživanje domeni nije uspjelo. Na računu provjerite imate li dovoljno ovlasti za dodavanje uređaja.</translation> <translation id="8182105986296479640">Aplikacija ne reagira.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Slanje obavijesti i vraćanje na postavku pamćenja ovog računala za Poruke. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Aplikaciju "<ph name="APP_NAME" />" blokirao je tvoj roditelj. Ako želiš koristiti tu aplikaciju, traži dopuštenje od roditelja.</translation> <translation id="820568752112382238">Najposjećenije web-lokacije</translation> -<translation id="8206581664590136590">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati djetetov doživljaj Androida automatskim slanjem dijagnostičkih podataka i podataka o upotrebi uređaja i aplikacija Googleu. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Mobitel</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Preuzimanje u tijeku}one{Preuzimanja u tijeku}few{Preuzimanja u tijeku}other{Preuzimanja u tijeku}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google Račun</translation> <translation id="8912793549644936705">Rastegni</translation> <translation id="8912810933860534797">Omogući automatsko traženje</translation> -<translation id="891365694296252935">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Učitavanje prijedloga</translation> <translation id="8916476537757519021">Anonimni podokvir: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Potvrđivanje sigurnosnog ključa...</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Pokreni aplikaciju</translation> <translation id="9102610709270966160">Omogući proširenje</translation> <translation id="9103868373786083162">Pritisnite za povratak, kontekstni izbornik za prikaz povijesti</translation> -<translation id="9104396740804929809">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati Android automatskim slanjem dijagnostičkih podataka te podataka o upotrebi uređaja i aplikacija Googleu. Ti podaci pomoći će poboljšati stabilnost sustava, aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Vlasnik može Googleu slati dijagnostiku i podatke o upotrebi za ovaj uređaj. Ako je uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na vaš Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Da biste oslobodili prostor, izbrišite datoteke iz pohrane uređaja.</translation> <translation id="9109283579179481106">Povežite se s mobilnom mrežom</translation> <translation id="9111102763498581341">Otključaj</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 484be63..777c9b2 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Tárolt alkalmazás adatai</translation> <translation id="1776712937009046120">Felhasználó hozzáadása</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Ezt az eszközt a következő kezeli: <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kattintson a „Tovább” lehetőségre a(z) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> fiókba való bejelentkezés folytatásához.</translation> <translation id="1779652936965200207">Kérjük, írja be ezt az azonosítókulcsot a(z) " <ph name="DEVICE_NAME" /> " eszközön:</translation> <translation id="177989070088644880">Alkalmazás (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Csoport bezárása</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Hiba történt a nyomtatók felsorolása közben. Lehet, hogy néhány nyomtató nem regisztrálható itt: <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">A <ph name="BEGIN_LINK" />címsávban<ph name="END_LINK" /> használt keresőmotor</translation> <translation id="2204034823255629767">Bárminek az olvasása és módosítása, amit Ön begépel</translation> -<translation id="220792432208469595">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ezt a beállítást kötelezővé tette az eszköz tulajdonosa. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva, akkor a rendszer ezeket az adatokat az Ön Google-fiókjába is mentheti. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Kérjük, adja meg a PIN kódot a(z) "<ph name="DEVICE_NAME" />" eszközhöz:</translation> <translation id="2212565012507486665">Cookie-k engedélyezése</translation> <translation id="2213140827792212876">Megosztás visszavonása</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nem sikerült megnyitni a másik böngészőt</translation> <translation id="2804667941345577550">A rendszer kijelentkezteti erről a webhelyről (a megnyitott lapok esetében is)</translation> <translation id="2804680522274557040">Kamera kikapcsolva</translation> -<translation id="2805539617243680210">Készen is van!</translation> <translation id="2805646850212350655">Microsoft - fájlrendszer titkosítása</translation> <translation id="2805756323405976993">Alkalmazások</translation> <translation id="2805770823691782631">További adatok</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Képernyőkép elkészítve</translation> <translation id="3742666961763734085">Nem található szervezeti egység ezzel a névvel. Próbálkozzon újra.</translation> <translation id="3744111561329211289">Szinkronizálás a háttérben</translation> +<translation id="3747077776423672805">Az alkalmazásokat a Beállítások > Google Play Áruház > Android-beállítások kezelése > Alkalmazások vagy Alkalmazáskezelő menüben távolíthatja el. Koppintson a törölni kívánt alkalmazásra (lehet, hogy jobbra vagy balra kell csúsztatnia az alkalmazásokat, hogy megtalálja), majd az Eltávolítás vagy Letiltás lehetőségre.</translation> <translation id="3748026146096797577">Nincs kapcsolódva</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Saját eszközök</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Olyan biztonsági hardverkulcsot használ, amely nincs regisztrálva ezen a webhelyen</translation> <translation id="4788092183367008521">Ellenőrizze a hálózati kapcsolatot, és próbálkozzon újra.</translation> <translation id="4792711294155034829">&Hibabejelentés...</translation> -<translation id="4795022432560487924">Használati és diagnosztikai adatok küldése. Segítsen gyermeke Android-élményének továbbfejlesztésében azzal, hogy automatikusan diagnosztikai, valamint eszköz- és alkalmazáshasználati adatokat küld a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ezt a beállítást kötelezővé tette az eszköz tulajdonosa. A tulajdonos dönthet úgy, hogy elküldi az eszközzel kapcsolatos diagnosztikai és használati adatokat a Google-nak. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Weboldal -- csak HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth-naplók<ph name="END_LINK" /> csatolása (a Google általi belső felhasználásra)</translation> <translation id="4801448226354548035">Fiókok elrejtése</translation> @@ -3385,6 +3381,7 @@ <translation id="5649053991847567735">Automatikus letöltések</translation> <translation id="5653154844073528838"><ph name="PRINTER_COUNT" /> mentett nyomtató található.</translation> <translation id="5656845498778518563">Visszajelzés küldése a Google-nak</translation> +<translation id="5657156137487675418">Összes cookie engedélyezése</translation> <translation id="5657667036353380798">A külső bővítményhez a Chrome <ph name="MINIMUM_CHROME_VERSION" /> vagy újabb verziójának telepítése szükséges.</translation> <translation id="5658415415603568799">A nagyobb biztonság érdekében a Smart Lock 20 óra elteltével megkéri, hogy adja meg jelszavát.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3592,7 +3589,6 @@ <translation id="5941711191222866238">Kicsinyítés</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> eszköze újraindul a frissítés után. A továbbiakban a biztonsági és szoftverfrissítéseket automatikusan telepíti a rendszer.</translation> <translation id="5944869793365969636">QR-kód beolvasása</translation> -<translation id="5945188205370098537">Használati és diagnosztikai adatok küldése. Segítsen az Android-élmény továbbfejlesztésében azzal, hogy automatikusan diagnosztikai, valamint eszköz- és alkalmazáshasználati adatokat küld a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva, akkor a rendszer ezeket az adatokat az Ön Google-fiókjába is mentheti. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Jelentésazonosító: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">A fájl szintaktikai elemzése sikertelen</translation> <translation id="5955282598396714173">A jelszó lejárt. A megváltoztatásához jelentkezzen ki, majd jelentkezzen be újra.</translation> @@ -3778,6 +3774,7 @@ <translation id="6185132558746749656">Eszközhely</translation> <translation id="6186394685773237175">Nincs nyilvánosságra került jelszó</translation> <translation id="6195693561221576702">Ezt az eszközt nem lehet offline demó módban beállítani.</translation> +<translation id="6196640612572343990">Harmadik féltől származó cookie-k letiltása</translation> <translation id="6196854373336333322">A(z) <ph name="EXTENSION_NAME" /> bővítmény átvette az irányítást proxybeállításai felett, ami azt jelenti, hogy a bővítmény minden internetes tevékenységét módosíthatja, feltörheti vagy lehallgathatja. Ha nem biztos benne, hogy miért történt a változás, akkor valószínűleg nem is akarja azt.</translation> <translation id="6198102561359457428">Jelentkezzen ki, majd jelentkezzen be újra...</translation> <translation id="6198252989419008588">PIN-kód megváltoztatása</translation> @@ -4444,7 +4441,6 @@ <translation id="711902386174337313">A bejelentkezett eszközök listájának olvasása</translation> <translation id="7120865473764644444">Nem sikerült csatlakozni a szinkronizáló szerverhez. Újrapróbálkozás…</translation> <translation id="7121362699166175603">Törli a címsávban található előzményeket és automatikus kiegészítéseket. Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen.</translation> -<translation id="7121389946694989825">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Fejlesztői mód</translation> <translation id="7121728544325372695">Intelligens kötőjelek</translation> <translation id="7123360114020465152">Már nem támogatott</translation> @@ -4559,7 +4555,6 @@ <translation id="7280041992884344566">Hiba történt, miközben a Chrome kártékony szoftvereket keresett</translation> <translation id="7280649757394340890">A szövegfelolvasó hangbeállításai</translation> <translation id="7280877790564589615">Engedély kérelmezve</translation> -<translation id="7281268427852119151">Az Ön böngészési előzményeinek használata a Keresés, a hirdetések és más Google-szolgáltatások személyre szabására</translation> <translation id="7282992757463864530">Információs sáv</translation> <translation id="7287143125007575591">Hozzáférés megtagadva.</translation> <translation id="7287411021188441799">Alapértelmezett háttér visszaállítása</translation> @@ -5234,7 +5229,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Lap áthelyezése új ablakba}other{Lapok áthelyezése új ablakba}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">oldal</translation> -<translation id="8180294223783876911">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva, akkor a rendszer ezeket az adatokat az Ön Google-fiókjába is mentheti. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">A(z) „<ph name="EXTENSION" />” olvashat és törölhet képeket, videókat és hangfájlokat a megjelölt helyeken.</translation> <translation id="8181215761849004992">Nem sikerült a csatlakozás a domainhez. Ellenőrizze fiókját, hogy meggyőződhessen, elegendő jogosultsággal rendelkezik az eszközök hozzáadásához.</translation> <translation id="8182105986296479640">Az alkalmazás nem válaszol.</translation> @@ -5256,7 +5250,6 @@ <translation id="8203732864715032075">Értesítések küldése, valamint a számítógép alapértelmezettként való megjegyzése a Messages alkalmazásban. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation> <translation id="8204129288640092672">A(z) „<ph name="APP_NAME" />” alkalmazást a szülőd letiltotta. Kérj engedélyt tőle az alkalmazás használatára.</translation> <translation id="820568752112382238">Leggyakrabban felkeresett webhelyek</translation> -<translation id="8206581664590136590">Használati és diagnosztikai adatok küldése. Segítsen gyermeke Android-élményének továbbfejlesztésében azzal, hogy automatikusan diagnosztikai, valamint eszköz- és alkalmazáshasználati adatokat küld a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Énekes</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Letöltés folyamatban}other{Letöltések folyamatban}}</translation> @@ -5802,7 +5795,6 @@ <translation id="8912362522468806198">Google Fiókjába</translation> <translation id="8912793549644936705">Nyújtva</translation> <translation id="8912810933860534797">Automatikus keresés engedélyezése</translation> -<translation id="891365694296252935">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ezt a beállítást kötelezővé tette az eszköz tulajdonosa. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Javaslatok betöltése</translation> <translation id="8916476537757519021">Inkognitó subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Biztonsági hardverkulcs ellenőrzése…</translation> @@ -5939,7 +5931,6 @@ <translation id="9101691533782776290">Alkalmazás indítása</translation> <translation id="9102610709270966160">Bővítmény engedélyezése</translation> <translation id="9103868373786083162">Nyomja meg a visszalépéshez, illetve választhatja a helyi menüt az előzmények megtekintéséshez</translation> -<translation id="9104396740804929809">Használati és diagnosztikai adatok küldése. Segítsen az Android-élmény továbbfejlesztésében azzal, hogy automatikusan diagnosztikai, valamint eszköz- és alkalmazáshasználati adatokat küld a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ezt a beállítást kötelezővé tette az eszköz tulajdonosa. A tulajdonos dönthet úgy, hogy elküldi az eszközzel kapcsolatos diagnosztikai és használati adatokat a Google-nak. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva, akkor a rendszer ezeket az adatokat az Ön Google-fiókjába is mentheti. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Tárhely felszabadításához töröljön fájlokat az eszköz tárhelyéből.</translation> <translation id="9109283579179481106">Csatlakozás mobilhálózathoz</translation> <translation id="9111102763498581341">Feloldás</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 7c5d973b..60e4a388 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -577,9 +577,6 @@ <translation id="177336675152937177">Խնամվող հավելվածների տվյալները</translation> <translation id="1776712937009046120">Ավելացնել օգտատեր</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Այս սարքը կառավարվում է <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> տիրույթի կողմից: - - Սեղմեք «Հաջորդը» կոճակը՝ ձեր <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> հաշիվ մտնելու համար:</translation> <translation id="1779652936965200207">Մուտքագրեք այս մուտքի բանալին «<ph name="DEVICE_NAME" />» սարքում`</translation> <translation id="177989070088644880">Հավելված (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Փակել խումբը</translation> @@ -893,7 +890,6 @@ <translation id="2202898655984161076">Տպիչների ցանկը կազմելիս խնդիր առաջացավ: Հնարավոր է, ձեր տպիչներից մի քանիսը բարեհաջող չեն գրանցվել <ph name="CLOUD_PRINT_NAME" />-ում:</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Հասցեագոտում<ph name="END_LINK" /> օգտագործվող որոնիչը</translation> <translation id="2204034823255629767">Կարդալ և փոխել այն ամենն, ինչ դուք մուտքագրում եք</translation> -<translation id="220792432208469595">Օգտագործման և ախտորոշման տվյալների ուղարկում Ներկայումս այս սարքը ախտորոշման, սարքի և հավելվածի օգտագործման տվյալներն ավտոմատ ուղարկում է Google-ին: Այս տեղեկությունները կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Այս կարգավորումը պարտադրված է սեփականատիրոջ կողմից: Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն ձեր Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Մուտքագրեք այս PIN կոդը «<ph name="DEVICE_NAME" />»-ում՝</translation> <translation id="2212565012507486665">Թույլատրել քուքիները</translation> <translation id="2213140827792212876">Հեռացնել ընդհանուր հասանելիությունը</translation> @@ -1354,7 +1350,6 @@ <translation id="2804043232879091219">Չհաջողվեց բացել այլընտրանքային դիտարկիչը</translation> <translation id="2804667941345577550">Դուք դուրս կգրվեք հաշվից այս կայքում և բաց ներդիրներում</translation> <translation id="2804680522274557040">Տեսախցիկն անջատած է</translation> -<translation id="2805539617243680210">Պատրաստ է</translation> <translation id="2805646850212350655">Microsoft-ի գաղտնագրված ֆայլային համակարգ</translation> <translation id="2805756323405976993">Հավելվածներ</translation> <translation id="2805770823691782631">Լրացուցիչ տեղեկություններ</translation> @@ -2035,6 +2030,7 @@ <translation id="3742055079367172538">Սքրինշոթը ստեղծված է</translation> <translation id="3742666961763734085">Չհաջողվեց գտնել այդ անունով ստորաբաժանում: Նորից փորձեք:</translation> <translation id="3744111561329211289">Ֆոնային համաժամացում</translation> +<translation id="3747077776423672805">Հավելվածներ հեռացնելու համար անցեք Կարգավորումներ > Google Play Խանութ > Կառավարել Android-ի կարգավորումները > Հավելվածներ կամ Հավելվածների կառավարիչ: Այնուհետև հպեք այն հավելվածին, որը ցանկանում եք հեռացնել (անհրաժեշտ հավելվածը գտնելու համար, հնարավոր է, պահանջվի թերթել աջ կամ ձախ): Ապա սեղմեք Հեռացնել կամ Անջատել կոճակը:</translation> <translation id="3748026146096797577">Միացված չէ</translation> <translation id="3752582316358263300">Եղավ…</translation> <translation id="3752673729237782832">Իմ սարքերը</translation> @@ -2758,7 +2754,6 @@ <translation id="4785719467058219317">Դուք օգտագործում եք անվտանգության բանալի, որը գրանցված չէ այս կայքում</translation> <translation id="4788092183367008521">Ստուգեք կապը և նորից փորձեք:</translation> <translation id="4792711294155034829">&Հաղորդել խնդրի մասին…</translation> -<translation id="4795022432560487924">Օգտագործման և ախտորոշման տվյալների ուղարկում Օգնեք բարելավել ձեր երեխայի Android-ի աշխատանքը՝ Google-ին ավտոմատ ուղարկելով ախտորոշման, ինչպես նաև սարքի ու հավելվածի օգտագործման տվյալներ: Այս տեղեկությունները չեն օգտագործվի ձեր երեխային նույնականացնելու համար և կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Այս կարգավորումը պարտադրված է սեփականատիրոջ կողմից: Սեփականատերը կարող է թույլատրել, որ այս սարքի ախտորոշման և օգտագործման տվյալներն ուղարկվեն Google-ին: Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն երեխայի Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Վեբէջ, միայն HTML</translation> <translation id="4798236378408895261">Կցել <ph name="BEGIN_LINK" />Bluetooth-ի մատյանները<ph name="END_LINK" /> (հասանելի է միայն Google-ի աշխատողներին)</translation> <translation id="4801448226354548035">Թաքցնել հաշիվները</translation> @@ -3595,7 +3590,6 @@ <translation id="5941711191222866238">Նվազեցնել</translation> <translation id="5942964813783878922">Ձեր <ph name="DEVICE_TYPE" /> սարքը կվերագործարկվի այս թարմացումից հետո: Ծրագրակազմի և անվտանգության համակարգի հետագա թարմացումները կտեղադրվեն ավտոմատ կերպով:</translation> <translation id="5944869793365969636">Սկանավորեք QR կոդը</translation> -<translation id="5945188205370098537">Օգտագործման և ախտորոշման տվյալների ուղարկում Օգնեք բարելավել Android-ի աշխատանքը՝ Google-ին ավտոմատ ուղարկելով ախտորոշման, ինչպես նաև սարքի ու հավելվածի օգտագործման տվյալներ: Այս տեղեկությունները կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն ձեր Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Հաշվետվության ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Հնարավոր չէ վերլուծել ֆայլը</translation> <translation id="5955282598396714173">Ձեր գաղտնաբառի ժամկետը սպառվել է։ Գաղտնաբառը փոխելու համար դուրս եկեք հաշվից ու նորից մուտք գործեք։</translation> @@ -3781,6 +3775,7 @@ <translation id="6185132558746749656">Սարքի տեղադրությունը</translation> <translation id="6186394685773237175">Կոտրված գաղտնաբառեր չեն գտնվել</translation> <translation id="6195693561221576702">Անցանց դեմո ռեժիմն այս սարքի համար հասանելի չէ։</translation> +<translation id="6196640612572343990">Արգելափակել երրորդ կողմի քուքիները</translation> <translation id="6196854373336333322">Ձեր պրոքսիի կարգավորումները վերահսկվում են «<ph name="EXTENSION_NAME" />» ընդլայնման կողմից: Դա նշանակում է, որ այն կարող է փոխել, խափանել կամ աննկատ գրառել այն ամենը, ինչ անում եք առցանց: Եթե չգիտեք, թե ինչու է այդ փոփոխությունը տեղի ունեցել, հավանաբար դուք դա չէիք ուզում:</translation> <translation id="6198102561359457428">Դուրս գրվել և նորից մուտք գործել…</translation> <translation id="6198252989419008588">Փոխել PIN-ը</translation> @@ -4447,7 +4442,6 @@ <translation id="711902386174337313">Տեսնել ձեր մուտք գործած սարքերի ցանկը</translation> <translation id="7120865473764644444">Չհաջողվեց միանալ համաժամացման սերվերին: Նորից ենք փորձում…</translation> <translation id="7121362699166175603">Մաքրում է պատմությունն ու ինքնալրացումները հասցեագոտում: Ձեր Google հաշվում կարող են լինել այցելությունների պատմության այլ ձևեր ևս: Դրանք կարող եք գտնել <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> էջում:</translation> -<translation id="7121389946694989825">Օգտագործման և ախտորոշման տվյալների ուղարկում Ներկայումս այս սարքը ախտորոշման, սարքի և հավելվածի օգտագործման տվյալներն ավտոմատ ուղարկում է Google-ին: Այս տեղեկությունները չեն օգտագործվի ձեր երեխային նույնականացնելու համար և կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն երեխայի Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Մշակողի ռեժիմ</translation> <translation id="7121728544325372695">Խելացի գծիկներ</translation> <translation id="7123360114020465152">Այլևս չի աջակցվում</translation> @@ -4562,7 +4556,6 @@ <translation id="7280041992884344566">Վնասաբեր ծրագրեր որոնելիս սխալ առաջացավ</translation> <translation id="7280649757394340890">Տեքստի հնչեցման կարգավորումներ</translation> <translation id="7280877790564589615">Թույլտվության հարցումն ուղարկված է</translation> -<translation id="7281268427852119151">Օգտագործեք այցելությունների պատմությունը՝ գովազդը, Որոնումը և Google-ի մյուս ծառայություններն անհատականացնելու համար</translation> <translation id="7282992757463864530">Տեղեկագոտի</translation> <translation id="7287143125007575591">Մուտքը մերժված է:</translation> <translation id="7287411021188441799">Վերականգնել կանխադրված ֆոնը</translation> @@ -5235,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Բացել ներդիրը նոր պատուհանում}one{Բացել ներդիրները նոր պատուհանում}other{Բացել ներդիրները նոր պատուհանում}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">էջ</translation> -<translation id="8180294223783876911">Օգտագործման և ախտորոշման տվյալների ուղարկում Ներկայումս այս սարքը ախտորոշման, սարքի և հավելվածի օգտագործման տվյալներն ավտոմատ ուղարկում է Google-ին: Այս տեղեկությունները կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն ձեր Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">«<ph name="EXTENSION" />» ընդլայնումը կարող է նշված պանակներում կարդալ և ջնջել պատկերները, տեսանյութերը և ձայնային ֆայլերը:</translation> <translation id="8181215761849004992">Չհաջողվեց միանալ տիրույթին: Ստուգեք ձեր հաշիվը՝ համոզվելու, որ սարքեր ավելացնելու արտոնություններ ունեք:</translation> <translation id="8182105986296479640">Հավելվածը չի արձագանքում:</translation> @@ -5257,7 +5249,6 @@ <translation id="8203732864715032075">Ցուցադրել ծանուցումներ՝ հեռախոսում ստացած հաղորդագրությունների մասին։ <ph name="LINK_BEGIN" />Մանրամասն<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Ձեր ծնողն արգելափակել է <ph name="APP_NAME" /> հավելվածը։ Խնդրեք նրան տրամադրել ձեզ հավելվածի օգտագործման թույլտվություն։</translation> <translation id="820568752112382238">Հաճախ այցելած կայքեր</translation> -<translation id="8206581664590136590">Օգտագործման և ախտորոշման տվյալների ուղարկում Օգնեք բարելավել ձեր երեխայի Android-ի աշխատանքը՝ Google-ին ավտոմատ ուղարկելով ախտորոշման, ինչպես նաև սարքի ու հավելվածի օգտագործման տվյալներ: Այս տեղեկությունները չեն օգտագործվի ձեր երեխային նույնականացնելու համար և կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն երեխայի Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Բլյուզ</translation> <translation id="8206859287963243715">Բջջային</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ներբեռնումն ընթացքում է}one{Ներբեռնումն ընթացքում է}other{Ներբեռնումներն ընթացքում են}}</translation> @@ -5803,7 +5794,6 @@ <translation id="8912362522468806198">Google հաշիվ</translation> <translation id="8912793549644936705">Ձգել</translation> <translation id="8912810933860534797">Միացնել ավտոմատ որոնումը</translation> -<translation id="891365694296252935">Օգտագործման և ախտորոշման տվյալների ուղարկում Ներկայումս այս սարքը ախտորոշման, սարքի և հավելվածի օգտագործման տվյալներն ավտոմատ ուղարկում է Google-ին: Այս տեղեկությունները չեն օգտագործվի ձեր երեխային նույնականացնելու համար և կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Այս կարգավորումը պարտադրված է սեփականատիրոջ կողմից: Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն երեխայի Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Առաջարկը բեռնվում է</translation> <translation id="8916476537757519021">Ինկոգնիտո ռեժիմի ենթաշրջանակ՝ <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Անվտանգության բանալու հաստատում...</translation> @@ -5940,7 +5930,6 @@ <translation id="9101691533782776290">Գործարկել հավելվածը</translation> <translation id="9102610709270966160">Միացնել ընդլայնումը</translation> <translation id="9103868373786083162">Սեղմեք՝ հետ գնալու համար, բացեք տեղային ընտրացանկը՝ պատմությունը տեսնելու համար</translation> -<translation id="9104396740804929809">Օգտագործման և ախտորոշման տվյալների ուղարկում Օգնեք բարելավել Android-ի աշխատանքը՝ Google-ին ավտոմատ ուղարկելով ախտորոշման, ինչպես նաև սարքի ու հավելվածի օգտագործման տվյալներ: Այս տեղեկությունները կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Այս կարգավորումը պարտադրված է սեփականատիրոջ կողմից: Սեփականատերը կարող է թույլատրել, որ այս սարքի ախտորոշման և օգտագործման տվյալներն ուղարկվեն Google-ին: Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն ձեր Google հաշվում։ <ph name="BEGIN_LINK1" />Մանրամասն<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Տարածք ազատելու համար սարքի հիշողությունից ֆայլեր ջնջեք:</translation> <translation id="9109283579179481106">Միացեք բջջային ցանցին</translation> <translation id="9111102763498581341">Ապակողպել</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 6d0b1166..515bfa2e 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Data aplikasi yang dihosting</translation> <translation id="1776712937009046120">Tambahkan pengguna</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Perangkat ini dikelola oleh <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Klik "Berikutnya" untuk melanjutkan login ke akun <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> Anda.</translation> <translation id="1779652936965200207">Masukkan kunci sandi ini di "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Apl (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Tutup Grup</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Ada masalah dengan pencantuman printer. Beberapa printer Anda mungkin tidak berhasil didaftarkan ke <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Mesin telusur yang digunakan di <ph name="BEGIN_LINK" />kolom URL<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Membaca dan mengubah apa saja yang Anda ketik</translation> -<translation id="220792432208469595">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini akan membantu sistem dan stabilitas aplikasi serta peningkatan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Setelan ini diterapkan oleh pemilik. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan, data ini mungkin akan disimpan ke Akun Google Anda. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Masukkan kode PIN ini ke "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Izinkan cookie</translation> <translation id="2213140827792212876">Hapus folder bersama</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Browser alternatif tidak dapat dibuka</translation> <translation id="2804667941345577550">Anda akan logout dari situs ini, termasuk di tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dinonaktifkan</translation> -<translation id="2805539617243680210">Anda sudah siap.</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2805770823691782631">Detail tambahan</translation> @@ -2019,6 +2015,7 @@ <translation id="3742055079367172538">Screenshot telah diambil</translation> <translation id="3742666961763734085">Tidak dapat menemukan unit organisasi dengan nama tersebut. Coba lagi.</translation> <translation id="3744111561329211289">Sinkronisasi latar belakang</translation> +<translation id="3747077776423672805">Untuk menghapus aplikasi, buka Setelan > Google Play Store > Kelola preferensi Android > Aplikasi atau Pengelola aplikasi. Kemudian, ketuk aplikasi yang ingin di-uninstal (Anda mungkin perlu menggeser ke kanan atau ke kiri untuk menemukan aplikasi). Setelah itu, ketuk Uninstal atau Nonaktifkan.</translation> <translation id="3748026146096797577">Tidak Tersambung</translation> <translation id="3752582316358263300">Oke...</translation> <translation id="3752673729237782832">Perangkat saya</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">Anda menggunakan kunci keamanan yang tidak terdaftar di situs ini</translation> <translation id="4788092183367008521">Periksa sambungan jaringan Anda, lalu coba lagi.</translation> <translation id="4792711294155034829">Lapo&rkan Masalah...</translation> -<translation id="4795022432560487924">Kirim data penggunaan dan diagnostik. Bantu sempurnakan pengalaman Android Anak Anda dengan otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta penyempurnaan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Setelan ini diterapkan oleh pemilik. Pemilik dapat memilih untuk mengirim data diagnostik dan penggunaan untuk perangkat ini ke Google. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Halaman Web, HTML Saja</translation> <translation id="4798236378408895261">Lampirkan <ph name="BEGIN_LINK" />Log Bluetooth<ph name="END_LINK" /> (internal Google)</translation> <translation id="4801448226354548035">Sembunyikan akun</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">Download otomatis</translation> <translation id="5653154844073528838">Anda memiliki <ph name="PRINTER_COUNT" /> printer tersimpan.</translation> <translation id="5656845498778518563">Kirim Masukan ke Google</translation> +<translation id="5657156137487675418">Izinkan semua cookie</translation> <translation id="5657667036353380798">Ekstensi eksternal memerlukan versi chrome <ph name="MINIMUM_CHROME_VERSION" /> atau lebih tinggi untuk dipasang.</translation> <translation id="5658415415603568799">Untuk tambahan keamanan, Smart Lock akan meminta Anda memasukkan sandi setelah 20 jam.</translation> <translation id="5659593005791499971">Email</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">Perkecil</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> Anda akan dimulai ulang setelah update ini. Update software dan keamanan berikutnya akan diinstal secara otomatis.</translation> <translation id="5944869793365969636">Pindai kode QR</translation> -<translation id="5945188205370098537">Kirim data penggunaan dan diagnostik. Bantuan sempurnakan pengalaman Android Anda dengan otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini akan membantu sistem dan stabilitas aplikasi serta peningkatan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan, data ini mungkin akan disimpan ke Akun Google Anda. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID Laporan <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Tidak dapat mengurai file</translation> <translation id="5955282598396714173">Sandi Anda sudah tidak berlaku. Harap logout, lalu login kembali untuk mengubahnya.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">Lokasi Perangkat</translation> <translation id="6186394685773237175">Tidak ditemukan sandi yang telah dibobol</translation> <translation id="6195693561221576702">Perangkat ini tidak dapat disiapkan dalam mode demo offline.</translation> +<translation id="6196640612572343990">Blokir cookie pihak ketiga</translation> <translation id="6196854373336333322">Ekstensi "<ph name="EXTENSION_NAME" />" telah mengambil alih kontrol setelan proxy Anda, yang berarti ekstensi dapat mengubah, merusak, atau menyadap apa pun yang Anda lakukan secara online. Jika tidak yakin mengapa perubahan ini terjadi, mungkin Anda tidak menginginkannya.</translation> <translation id="6198102561359457428">Keluar kemudian masuk lagi...</translation> <translation id="6198252989419008588">Ubah PIN</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">Membaca daftar perangkat tempat Anda telah masuk</translation> <translation id="7120865473764644444">Tidak dapat terhubung ke server sinkronisasi. Mencoba lagi...</translation> <translation id="7121362699166175603">Menghapus histori dan pelengkapan otomatis di kolom URL. Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta penyempurnaan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Mode Developer</translation> <translation id="7121728544325372695">Smart Dashes</translation> <translation id="7123360114020465152">Tidak didukung lagi</translation> @@ -5195,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Pindahkan tab ke jendela baru}other{Pindahkan beberapa tab ke jendela baru}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">halaman</translation> -<translation id="8180294223783876911">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini akan membantu sistem dan stabilitas aplikasi serta peningkatan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan, data ini mungkin akan disimpan ke Akun Google Anda. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" dapat membaca dan menghapus file gambar, video, dan suara di lokasi yang dicentang.</translation> <translation id="8181215761849004992">Tidak dapat bergabung dengan domain. Periksa akun untuk mengetahui apakah Anda memiliki hak istimewa yang memadai untuk menambahkan perangkat.</translation> <translation id="8182105986296479640">Aplikasi tidak merespons.</translation> @@ -5217,7 +5212,6 @@ <translation id="8203732864715032075">Mengirim notifikasi dan secara default mengingat komputer ini untuk Message. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" diblokir oleh orang tuamu. Minta izin orang tuamu untuk menggunakan aplikasi ini.</translation> <translation id="820568752112382238">Situs yang paling sering dikunjungi</translation> -<translation id="8206581664590136590">Kirim data penggunaan dan diagnostik. Bantu sempurnakan pengalaman Android Anak Anda dengan otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta penyempurnaan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Jazzy</translation> <translation id="8206859287963243715">Seluler</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Proses download sedang berlangsung}other{Proses download sedang berlangsung}}</translation> @@ -5757,7 +5751,6 @@ <translation id="8912362522468806198">Akun Google</translation> <translation id="8912793549644936705">Meregang</translation> <translation id="8912810933860534797">Aktifkan pindai otomatis</translation> -<translation id="891365694296252935">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta penyempurnaan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Setelan ini diterapkan oleh pemilik. Jika Aktivitas Web & Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Memuat saran</translation> <translation id="8916476537757519021">Subframe Mode Samaran: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Memverifikasi kunci keamanan...</translation> @@ -5894,7 +5887,6 @@ <translation id="9101691533782776290">Luncurkan aplikasi</translation> <translation id="9102610709270966160">Aktifkan Ekstensi</translation> <translation id="9103868373786083162">Tekan untuk kembali ke menu konteks guna melihat histori</translation> -<translation id="9104396740804929809">Kirim data penggunaan dan diagnostik. Bantuan sempurnakan pengalaman Android Anda dengan otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini akan membantu sistem dan stabilitas aplikasi serta peningkatan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Setelan ini diterapkan oleh pemilik. Pemilik dapat memilih untuk mengirim data diagnostik dan penggunaan untuk perangkat ini ke Google. Jika setelan Aktivitas Web & Aplikasi tambahan diaktifkan, data ini mungkin akan disimpan ke Akun Google Anda. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Untuk mengosongkan ruang, hapus file dari penyimpanan perangkat.</translation> <translation id="9109283579179481106">Hubungkan ke jaringan seluler</translation> <translation id="9111102763498581341">Buka kunci</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 2b7aa9b6..cc3753bd 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Gögn hýstra forrita</translation> <translation id="1776712937009046120">Bæta notanda við</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Þessu tæki er stjórnað af <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Smelltu á „Áfram“ til að halda áfram og skrá þig inn á reikninginn hjá <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Sláðu þennan aðgangslykil inn í „<ph name="DEVICE_NAME" />“:</translation> <translation id="177989070088644880">Forrit (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Loka hópi</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Vandamál kom upp við að birta prentara. Sumir prentaranna þinna eru ef til vill ekki skráðir á fullnægjandi hátt hjá <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Leitarvél notuð í <ph name="BEGIN_LINK" />veffangastiku<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lesa og breyta því sem þú skrifar</translation> -<translation id="220792432208469595">Senda notkunar- og greiningargögn. Þetta tæki sendir núna sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Eigandi valdi þessa stillingu. Ef kveikt er á ítarlegri vef- og forritavirkni geta þessi gögn verið vistuð á Google reikningnum þínum. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Sláðu þetta PIN-númer inn í „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Leyfa fótspor</translation> <translation id="2213140827792212876">Fjarlægja deilingu</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Ekki var hægt að opna hinn vafrann</translation> <translation id="2804667941345577550">Þú verður skráð(ur) út af þessu vefsvæði, þar á meðal opnum flipum</translation> <translation id="2804680522274557040">Slökkt á myndavél</translation> -<translation id="2805539617243680210">Allt til reiðu!</translation> <translation id="2805646850212350655">Dulkóðunarskráakerfi Microsoft</translation> <translation id="2805756323405976993">Forrit</translation> <translation id="2805770823691782631">Viðbótarupplýsingar</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Skjámynd tekin</translation> <translation id="3742666961763734085">Skipulagseining með þessu heiti fannst ekki. Reyndu aftur.</translation> <translation id="3744111561329211289">Samstilling í bakgrunni</translation> +<translation id="3747077776423672805">Til að fjarlægja forrit skaltu fara í Stillingar > Google Play Store > Hafa umsjón með stillingum Android > Forrit eða Forritastjórnun. Ýttu síðan á forritið sem þú vilt fjarlægja (þú gætir þurft að fletta til hægri eða vinstri til að finna forritið). Ýttu svo á „Fjarlægja“ eða „Gera óvirkt“.</translation> <translation id="3748026146096797577">Ótengt</translation> <translation id="3752582316358263300">Í lagi...</translation> <translation id="3752673729237782832">Tækin mín</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Þú ert að nota öryggislykil sem er ekki skráður hjá þessu vefsvæði</translation> <translation id="4788092183367008521">Athugaðu nettenginguna og reyndu aftur.</translation> <translation id="4792711294155034829">Tilkynna vandamál...</translation> -<translation id="4795022432560487924">Senda notkunar- og greiningargögn. Hjálpaðu okkur að bæta Android fyrir barnið þitt með því að senda sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta verður ekki notað til að bera kennsl á barnið þitt og mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Eigandi valdi þessa stillingu. Eigandi getur kosið að senda greiningar- og notkunargögn þessa tækis til Google. Ef kveikt er á ítarlegri vef- og forritavirkni fyrir barnið geta þessi gögn verið vistuð á Google reikningi barnsins. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Vefsíða, aðeins HTML</translation> <translation id="4798236378408895261">Hengja við <ph name="BEGIN_LINK" />Bluetooth-skrár<ph name="END_LINK" /> (innanhúss hjá Google)</translation> <translation id="4801448226354548035">Fela reikninga</translation> @@ -3591,7 +3587,6 @@ <translation id="5941711191222866238">Minnka</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> endurræsist eftir þessa uppfærslu. Nýjar hugbúnaðar- og öryggisuppfærslur verða settar upp sjálfkrafa.</translation> <translation id="5944869793365969636">Skanna QR-kóða</translation> -<translation id="5945188205370098537">Senda notkunar- og greiningargögn. Hjálpaðu okkur að bæta Android fyrir þig með því að senda sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Ef kveikt er á ítarlegri vef- og forritavirkni geta þessi gögn verið vistuð á Google reikningnum þínum. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Auðkenni tilkynningar <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Ekki er hægt að þátta skrá</translation> <translation id="5955282598396714173">Aðgangsorðið er útrunnið. Skráðu þig út og aftur inn til að breyta því.</translation> @@ -3777,6 +3772,7 @@ <translation id="6185132558746749656">Staðsetning tækis</translation> <translation id="6186394685773237175">Engin aðgangsorð í hættu fundust</translation> <translation id="6195693561221576702">Ekki er hægt að setja þetta tæki upp í ótengdri prufustillingu.</translation> +<translation id="6196640612572343990">Loka á fótspor frá þriðja aðila</translation> <translation id="6196854373336333322">Viðbótin „<ph name="EXTENSION_NAME" />“ hefur tekið að sér stjórn yfir proxy-stillingunum þínum, sem þýðir að hún getur breytt, slitið eða hlerað allt sem þú gerir á netinu. Ef þú veist ekki hvernig þetta gerðist er þetta líklega eitthvað sem þú vilt ekki.</translation> <translation id="6198102561359457428">Skráðu þig út og svo inn aftur...</translation> <translation id="6198252989419008588">Breyta PIN-númeri</translation> @@ -4443,7 +4439,6 @@ <translation id="711902386174337313">Lesa lista yfir innskráð tæki sem þú átt</translation> <translation id="7120865473764644444">Ekki var hægt að tengjast samstillingarþjóninum. Reynir aftur...</translation> <translation id="7121362699166175603">Hreinsar ferilinn og sjálfvirka útfyllingu í veffangastikunni. Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil á <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Senda notkunar- og greiningargögn. Þetta tæki sendir núna sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta verður ekki notað til að bera kennsl á barnið þitt og mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Ef kveikt er á ítarlegri vef- og forritavirkni fyrir barnið geta þessi gögn verið vistuð á Google reikningi barnsins. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Forritarastilling</translation> <translation id="7121728544325372695">Sjálfvirk bandstrik</translation> <translation id="7123360114020465152">Ekki lengur stutt</translation> @@ -4558,7 +4553,6 @@ <translation id="7280041992884344566">Villa kom upp þegar Chrome leitaði að skaðlegum hugbúnaði</translation> <translation id="7280649757394340890">Raddstillingar talgervils</translation> <translation id="7280877790564589615">Heimildar krafist</translation> -<translation id="7281268427852119151">Nota vafraferilinn til að sérsníða leitina, auglýsingar og aðra þjónustu Google</translation> <translation id="7282992757463864530">Upplýsingastika</translation> <translation id="7287143125007575591">Aðgangur ekki veittur.</translation> <translation id="7287411021188441799">Endurheimta sjálfgefinn bakgrunn</translation> @@ -5232,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Færa flipa í nýjan glugga}one{Færa flipa í nýjan glugga}other{Færa flipa í nýjan glugga}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">síða</translation> -<translation id="8180294223783876911">Senda notkunar- og greiningargögn. Þetta tæki sendir núna sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Ef kveikt er á ítarlegri vef- og forritavirkni geta þessi gögn verið vistuð á Google reikningnum þínum. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />“ getur lesið og eytt myndum, myndskeiðum og hljóðskrám á stöðunum sem merkt er við</translation> <translation id="8181215761849004992">Ekki tókst að tengjast léninu. Skoðaðu reikninginn þinn til að athuga hvort þú hafir réttindi til að bæta við tækjum.</translation> <translation id="8182105986296479640">Forrit svarar ekki.</translation> @@ -5254,7 +5247,6 @@ <translation id="8203732864715032075">Fáðu sendar tilkynningar og láttu muna eftir þessari tölvu fyrir Messages. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Foreldri þitt hefur lokað á „<ph name="APP_NAME" />“. Biddu foreldri þitt um leyfi til að nota þetta forrit.</translation> <translation id="820568752112382238">Mest heimsóttu vefsvæðin</translation> -<translation id="8206581664590136590">Senda notkunar- og greiningargögn. Hjálpaðu okkur að bæta Android fyrir barnið þitt með því að senda sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta verður ekki notað til að bera kennsl á barnið þitt og mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Ef kveikt er á ítarlegri vef- og forritavirkni fyrir barnið geta þessi gögn verið vistuð á Google reikningi barnsins. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blúsaður</translation> <translation id="8206859287963243715">Farsímakerfi</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Niðurhal er í gangi}one{Niðurhal er í gangi}other{Niðurhal er í gangi}}</translation> @@ -5800,7 +5792,6 @@ <translation id="8912362522468806198">Google reikningur</translation> <translation id="8912793549644936705">Teygja</translation> <translation id="8912810933860534797">Kveikja á sjálfvirkri skönnun</translation> -<translation id="891365694296252935">Senda notkunar- og greiningargögn. Þetta tæki sendir núna sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta verður ekki notað til að bera kennsl á barnið þitt og mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Eigandi valdi þessa stillingu. Ef kveikt er á ítarlegri vef- og forritavirkni fyrir barnið geta þessi gögn verið vistuð á Google reikningi barnsins. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Hleður tillögu</translation> <translation id="8916476537757519021">Huliðsundirrammi: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Staðfestir öryggislykilinn...</translation> @@ -5937,7 +5928,6 @@ <translation id="9101691533782776290">Ræsa forrit</translation> <translation id="9102610709270966160">Virkja viðbót</translation> <translation id="9103868373786083162">Ýttu til að fara til baka, farðu í efnisvalmyndina til að sjá ferilinn</translation> -<translation id="9104396740804929809">Senda notkunar- og greiningargögn. Hjálpaðu okkur að bæta Android fyrir þig með því að senda sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Eigandi valdi þessa stillingu. Eigandi getur kosið að senda greiningar- og notkunargögn þessa tækis til Google. Ef kveikt er á ítarlegri vef- og forritavirkni geta þessi gögn verið vistuð á Google reikningnum þínum. <ph name="BEGIN_LINK1" />Frekari upplýsingar<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Eyddu skrám úr geymslu tækisins til að losa um pláss.</translation> <translation id="9109283579179481106">Tengjast farsímakerfi</translation> <translation id="9111102763498581341">Taka úr lás</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 22ef0fc..652ab33 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dati app in hosting</translation> <translation id="1776712937009046120">Aggiungi utente</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Questo dispositivo è gestito da <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Fai clic su "Avanti" per continuare ad accedere al tuo account <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Inserisci questa passkey su "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Chiudi gruppo</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Si è verificato un problema nella visualizzazione dell'elenco di stampanti. È possibile che alcune stampanti non siano state registrate correttamente con <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Motore di ricerca utilizzato nella <ph name="BEGIN_LINK" />barra degli indirizzi<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lettura e modifica del testo digitato</translation> -<translation id="220792432208469595">Invia dati diagnostici e sull'utilizzo. Questo dispositivo attualmente invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Tali dati contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Questa impostazione è applicata dal proprietario. Se hai attivato l'impostazione Attività web e app aggiuntiva, queste informazioni potrebbero essere salvate nel tuo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Inserisci questo codice PIN su "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Consenti cookie</translation> <translation id="2213140827792212876">Rimuovi condivisione</translation> @@ -1352,7 +1349,6 @@ <translation id="2804043232879091219">Impossibile aprire il browser alternativo</translation> <translation id="2804667941345577550">Uscirai da questo sito (schede aperte incluse)</translation> <translation id="2804680522274557040">Fotocamera disattivata</translation> -<translation id="2805539617243680210">Ecco fatto.</translation> <translation id="2805646850212350655">Crittografia file system Microsoft</translation> <translation id="2805756323405976993">App</translation> <translation id="2805770823691782631">Dettagli aggiuntivi</translation> @@ -2033,6 +2029,7 @@ <translation id="3742055079367172538">Screenshot acquisito</translation> <translation id="3742666961763734085">Impossibile trovare un'unità organizzativa con il nome indicato. Riprova.</translation> <translation id="3744111561329211289">Sincronizzazione in background</translation> +<translation id="3747077776423672805">Per rimuovere le app apri Impostazioni > Google Play Store > Gestisci le preferenze Android > App o Gestione applicazioni, quindi tocca l'app che vuoi disinstallare (potresti dover scorrere verso sinistra o verso destra per trovarla) e infine tocca Disinstalla o Disattiva.</translation> <translation id="3748026146096797577">Non connesso</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">I miei dispositivi</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Stai usando un token di sicurezza non registrato su questo sito web</translation> <translation id="4788092183367008521">Controlla la connessione di rete e riprova.</translation> <translation id="4792711294155034829">&Segnala un problema...</translation> -<translation id="4795022432560487924">Invia dati diagnostici e sull'utilizzo. Contribuisci a migliorare l'esperienza Android di tuo figlio tramite l'invio automatico a Google di dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Questa impostazione è applicata dal proprietario. Il proprietario potrebbe decidere di inviare a Google dati di diagnostica e utilizzo relativi a questo dispositivo. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, questi dati potrebbero essere salvati nel suo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Pagina web, solo HTML</translation> <translation id="4798236378408895261">Allega <ph name="BEGIN_LINK" />log Bluetooth<ph name="END_LINK" /> (interno di Google)</translation> <translation id="4801448226354548035">Nascondi account</translation> @@ -3383,6 +3379,7 @@ <translation id="5649053991847567735">Download automatici</translation> <translation id="5653154844073528838">Hai <ph name="PRINTER_COUNT" /> stampanti salvate.</translation> <translation id="5656845498778518563">Invia feedback a Google</translation> +<translation id="5657156137487675418">Accetta tutti i cookie</translation> <translation id="5657667036353380798">Per poter installare l'estensione esterna occorre la versione di Chrome <ph name="MINIMUM_CHROME_VERSION" /> o successiva.</translation> <translation id="5658415415603568799">Per maggiore sicurezza, Smart Lock ti chiederà di inserire la password dopo 20 ore.</translation> <translation id="5659593005791499971">Email</translation> @@ -3590,7 +3587,6 @@ <translation id="5941711191222866238">Riduci a icona</translation> <translation id="5942964813783878922">Il dispositivo <ph name="DEVICE_TYPE" /> si riavvierà dopo questo aggiornamento. I futuri aggiornamenti software e della sicurezza verranno installati automaticamente.</translation> <translation id="5944869793365969636">Scansiona codice QR</translation> -<translation id="5945188205370098537">Invia dati diagnostici e sull'utilizzo. Contribuisci a migliorare la tua esperienza Android tramite l'invio automatico a Google di dati diagnostici e sull'utilizzo delle app e del dispositivo. Tali dati contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Se hai attivato l'impostazione Attività web e app aggiuntiva, queste informazioni potrebbero essere salvate nel tuo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID rapporto <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Impossibile analizzare il file</translation> <translation id="5955282598396714173">La password è scaduta. Esci e accedi nuovamente per modificarla.</translation> @@ -3776,6 +3772,7 @@ <translation id="6185132558746749656">Posizione del dispositivo</translation> <translation id="6186394685773237175">Non sono state trovate password compromesse</translation> <translation id="6195693561221576702">Impossibile configurare il dispositivo in modalità demo offline.</translation> +<translation id="6196640612572343990">Blocca cookie di terze parti</translation> <translation id="6196854373336333322">L'estensione "<ph name="EXTENSION_NAME" />" ha assunto il controllo delle tue impostazioni proxy, il che significa che può cambiare, interrompere o intercettare tutto ciò che fai online. Se non sei sicuro del motivo per cui si sia verificato questo cambiamento, è probabile che sia indesiderato.</translation> <translation id="6198102561359457428">Esci e accedi di nuovo...</translation> <translation id="6198252989419008588">Modifica PIN</translation> @@ -4442,7 +4439,6 @@ <translation id="711902386174337313">Lettura dell'elenco di dispositivi su cui è stato eseguito l'accesso</translation> <translation id="7120865473764644444">Impossibile collegarsi al server di sincronizzazione. Nuovo tentativo...</translation> <translation id="7121362699166175603">Consente di cancellare la cronologia e i completamenti automatici nella barra degli indirizzi. Il tuo Account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Invia dati diagnostici e sull'utilizzo. Questo dispositivo attualmente invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, questi dati potrebbero essere salvati nel suo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modalità sviluppatore</translation> <translation id="7121728544325372695">Trattini smart</translation> <translation id="7123360114020465152">La stampante non è più supportata</translation> @@ -4557,7 +4553,6 @@ <translation id="7280041992884344566">Si è verificato un errore in Chrome durante la ricerca di software dannoso</translation> <translation id="7280649757394340890">Impostazioni voce per sintesi vocale</translation> <translation id="7280877790564589615">Richiesta di autorizzazione</translation> -<translation id="7281268427852119151">Utilizza la tua cronologia di navigazione per personalizzare la Ricerca, gli annunci e altri servizi Google</translation> <translation id="7282992757463864530">Barra delle informazioni</translation> <translation id="7287143125007575591">Accesso negato.</translation> <translation id="7287411021188441799">Ripristina sfondo predefinito</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Sposta scheda in una nuova finestra}other{Sposta schede in una nuova finestra}}</translation> <translation id="8179976553408161302">Invio</translation> <translation id="8180239481735238521">pagina</translation> -<translation id="8180294223783876911">Invia dati diagnostici e sull'utilizzo. Questo dispositivo attualmente invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Tali dati contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Se hai attivato l'impostazione Attività web e app aggiuntiva, queste informazioni potrebbero essere salvate nel tuo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">L'estensione "<ph name="EXTENSION" />" può leggere ed eliminare file di immagini, video e audio nelle posizioni selezionate.</translation> <translation id="8181215761849004992">Impossibile aggiungere al dominio. Controlla il tuo account per verificare se hai privilegi sufficienti per aggiungere dispositivi.</translation> <translation id="8182105986296479640">L'applicazione non risponde.</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">Ricevere notifiche e impostare come predefinita la memorizzazione di questo computer per Messaggi. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation> <translation id="8204129288640092672">L'app "<ph name="APP_NAME" />" è stata bloccata da uno dei tuoi genitori. Chiedi al tuo genitore l'autorizzazione per poter usare l'app.</translation> <translation id="820568752112382238">Siti più visitati</translation> -<translation id="8206581664590136590">Invia dati diagnostici e sull'utilizzo. Contribuisci a migliorare l'esperienza Android di tuo figlio tramite l'invio automatico a Google di dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, questi dati potrebbero essere salvati nel suo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Cellulare</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download in corso}other{Download in corso}}</translation> @@ -5799,7 +5792,6 @@ <translation id="8912362522468806198">Google Account</translation> <translation id="8912793549644936705">Allunga</translation> <translation id="8912810933860534797">Attiva scansione automatica</translation> -<translation id="891365694296252935">Invia dati diagnostici e sull'utilizzo. Questo dispositivo attualmente invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Questa impostazione è applicata dal proprietario. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, queste informazioni potrebbero essere salvate nel suo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Caricamento suggerimento</translation> <translation id="8916476537757519021">Frame secondario modalità di navigazione in incognito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verifica del token di sicurezza…</translation> @@ -5936,7 +5928,6 @@ <translation id="9101691533782776290">Avvia app</translation> <translation id="9102610709270966160">Attiva estensione</translation> <translation id="9103868373786083162">Premi per tornare indietro, menu contestuale per visualizzare la cronologia</translation> -<translation id="9104396740804929809">Invia dati diagnostici e sull'utilizzo. Contribuisci a migliorare la tua esperienza Android tramite l'invio automatico a Google di dati diagnostici e sull'utilizzo delle app e del dispositivo. Tali dati contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Questa impostazione è applicata dal proprietario. Il proprietario potrebbe decidere di inviare a Google dati di diagnostica e utilizzo relativi a questo dispositivo. Se hai attivato l'impostazione Attività web e app aggiuntiva, queste informazioni potrebbero essere salvate nel tuo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Per liberare spazio, elimina i file dallo spazio di archiviazione del dispositivo.</translation> <translation id="9109283579179481106">Collegati alla rete mobile</translation> <translation id="9111102763498581341">Sblocca</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index af7420e..1d07953 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">נתוני יישומים מתארחים</translation> <translation id="1776712937009046120">הוסף משתמש</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">המכשיר הזה מנוהל על ידי <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - כדי להמשיך בכניסה לחשבון <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, יש ללחוץ על "הבא".</translation> <translation id="1779652936965200207">הזן את סיסמה זו ב-"<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">אפליקציה (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">סגירת הקבוצה</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">היתה בעיה ברישום מדפסות. ייתכן שחלק מהמדפסות שלך לא נרשמו בהצלחה ב-<ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">מנוע החיפוש שבאמצעותו מבוצע חיפוש מ<ph name="BEGIN_LINK" />שורת כתובת האתר<ph name="END_LINK" /></translation> <translation id="2204034823255629767">לקרוא ולשנות את כל מה שאתה מקליד</translation> -<translation id="220792432208469595">שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. ההגדרה הזו נאכפת על-ידי הבעלים. אם הופעלה האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="220858061631308971">הזן את קוד PIN זה ב-"<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">אישור קובצי cookie</translation> <translation id="2213140827792212876">הסרת השיתוף</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">לא ניתן לפתוח את הדפדפן החלופי</translation> <translation id="2804667941345577550">המערכת תוציא אותך מהאתר הזה, כולל בכרטיסיות הפתוחות</translation> <translation id="2804680522274557040">המצלמה מושבתת</translation> -<translation id="2805539617243680210">הכול מוכן!</translation> <translation id="2805646850212350655">מערכת קבצים מצפינה של Microsoft</translation> <translation id="2805756323405976993">אפליקציות</translation> <translation id="2805770823691782631">פרטים נוספים</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">צילום המסך בוצע</translation> <translation id="3742666961763734085">לא ניתן למצוא יחידה ארגונית בשם הזה. יש לנסות שוב.</translation> <translation id="3744111561329211289">סינכרון ברקע</translation> +<translation id="3747077776423672805">כדי להסיר אפליקציות, צריך לעבור אל 'הגדרות' > 'חנות Google Play' > 'ניהול העדפות Android' >'אפליקציות' או 'מנהל אפליקציות'. לאחר מכן צריך להקיש על האפליקציה שיש להסיר (ייתכן שיהיה צורך להחליק ימינה או שמאלה כדי למצוא את האפליקציה). לסיום, יש להקיש על 'הסרת התקנה' או 'השבתה'.</translation> <translation id="3748026146096797577">לא מחובר</translation> <translation id="3752582316358263300">אישור...</translation> <translation id="3752673729237782832">המכשירים שלי</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">בחרת להשתמש במפתח אבטחה שלא רשום עבור האתר הזה</translation> <translation id="4788092183367008521">כדאי לבדוק את החיבור לרשת ולנסות שוב.</translation> <translation id="4792711294155034829">&דווח על בעיה...</translation> -<translation id="4795022432560487924">שליחה של נתוני אבחון ונתונים על השימוש. אפשר לעזור בשיפור החוויה של הילד/ה שלך ב-Android. לשם כך יש לשלוח אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. ההגדרה הזו נאכפת על-ידי הבעלים. ייתכן שהבעלים יבחרו לשלוח אל Google נתוני אבחון ונתונים לגבי אופן השימוש במכשיר הזה. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="479536056609751218">דף אינטרנט, HTML בלבד</translation> <translation id="4798236378408895261">צירוף של <ph name="BEGIN_LINK" />יומני Bluetooth<ph name="END_LINK" /> (מידע פנימי של Google)</translation> <translation id="4801448226354548035">הסתר חשבונות</translation> @@ -3381,6 +3377,7 @@ <translation id="5649053991847567735">הורדות אוטומטיות</translation> <translation id="5653154844073528838">יש לך <ph name="PRINTER_COUNT" /> מדפסות שמורות.</translation> <translation id="5656845498778518563">שליחת משוב ל-Google</translation> +<translation id="5657156137487675418">קבל את כל קובצי ה-Cookie</translation> <translation id="5657667036353380798">על מנת להתקין את התוסף החיצוני, על Chrome להיות מגרסה <ph name="MINIMUM_CHROME_VERSION" /> ומעלה.</translation> <translation id="5658415415603568799">לשיפור האבטחה, אחרי 20 שעות תוצג לך בקשה מ-Smart Lock להזין את הסיסמה שלך.</translation> <translation id="5659593005791499971">אימייל</translation> @@ -3588,7 +3585,6 @@ <translation id="5941711191222866238">מזער</translation> <translation id="5942964813783878922">ה-<ph name="DEVICE_TYPE" /> יופעל מחדש אחרי העדכון הזה. עדכוני תוכנה ואבטחה עתידיים יותקנו באופן אוטומטי.</translation> <translation id="5944869793365969636">סריקת קוד QR</translation> -<translation id="5945188205370098537">שליחה של נתוני אבחון ונתונים על השימוש. אפשר לעזור בשיפור החוויה ב-Android. לשם כך יש לשלוח אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. אם הופעלה האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">מזהה דיווח <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">לא ניתן לנתח את הקובץ</translation> <translation id="5955282598396714173">תוקף הסיסמה פג. כדי לשנות אותה, צא ולאחר מכן היכנס מחדש.</translation> @@ -3774,6 +3770,7 @@ <translation id="6185132558746749656">מיקום מכשיר</translation> <translation id="6186394685773237175">לא נמצאו סיסמאות שנחשפו</translation> <translation id="6195693561221576702">אי אפשר להגדיר את המכשיר הזה במצב הדגמה לא מקוון.</translation> +<translation id="6196640612572343990">חסום קובצי Cookie של צד שלישי</translation> <translation id="6196854373336333322">התוסף "<ph name="EXTENSION_NAME" />" השתלט על הגדרות שרת ה-Proxy. פירוש הדבר שהוא יכול לשנות ולקטוע לכל פעולה שתבצע באינטרנט או לצותת לה. אם אינך יודע בוודאות מדוע שינוי זה התרחש, סביר להניח שזהו שינוי לא רצוי.</translation> <translation id="6198102561359457428">צא והיכנס שוב...</translation> <translation id="6198252989419008588">שנה PIN</translation> @@ -4440,7 +4437,6 @@ <translation id="711902386174337313">קריאה של רשימת ההתקנים המחוברים שלך</translation> <translation id="7120865473764644444">לא ניתן היה להתחבר אל שרת הסנכרון. מנסה שוב...</translation> <translation id="7121362699166175603">ניקוי ההיסטוריה וההשלמות האוטומטיות בשורת כתובת האתר. ייתכן שלחשבון Google שלך יהיו צורות אחרות של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">מצב מפתח</translation> <translation id="7121728544325372695">מקפים חכמים</translation> <translation id="7123360114020465152">התמיכה הופסקה</translation> @@ -4555,7 +4551,6 @@ <translation id="7280041992884344566">אירעה שגיאה בזמן ש-Chrome חיפש תוכנות מזיקות</translation> <translation id="7280649757394340890">הגדרות קול של המרת טקסט לדיבור</translation> <translation id="7280877790564589615">התבקשה הרשאה</translation> -<translation id="7281268427852119151">בהיסטוריית הגלישה אפשר להתאים אישית את החיפוש, את המודעות ושירותי Google אחרים</translation> <translation id="7282992757463864530">סרגל מידע</translation> <translation id="7287143125007575591">אין גישה</translation> <translation id="7287411021188441799">שחזור רקע ברירת מחדל</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{העברת כרטיסייה לחלון חדש}two{העברת כרטיסיות לחלון חדש}many{העברת כרטיסיות לחלון חדש}other{העברת כרטיסיות לחלון חדש}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">דף</translation> -<translation id="8180294223783876911">שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. אם הופעלה האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" יכול לקרוא ולמחוק קובצי תמונות, וידאו ואודיו במיקומים המסומנים.</translation> <translation id="8181215761849004992">לא ניתן להצטרף לדומיין. יש לבדוק את החשבון כדי לראות אם יש לך הרשאות מתאימות להוספת מכשירים.</translation> <translation id="8182105986296479640">האפליקציה לא מגיבה</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">המערכת שולחת לך התראות ומגדירה את המחשב הזה כברירת מחדל לשליחת ההודעות. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="8204129288640092672">האפליקציה "<ph name="APP_NAME" />" נחסמה על ידי ההורה שלך. יש לבקש רשות מההורה כדי להשתמש באפליקציה הזו.</translation> <translation id="820568752112382238">האתרים שאליהם נכנסת בתדירות הגבוהה ביותר</translation> -<translation id="8206581664590136590">שליחה של נתוני אבחון ונתונים על השימוש. אפשר לעזור בשיפור החוויה של הילד/ה שלך ב-Android. לשם כך יש לשלוח אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">בלוז</translation> <translation id="8206859287963243715">סלולארי</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{הורדה מתבצעת}two{הורדות מתבצעות}many{הורדות מתבצעות}other{הורדות מתבצעות}}</translation> @@ -5799,7 +5792,6 @@ <translation id="8912362522468806198">חשבון Google</translation> <translation id="8912793549644936705">מתח</translation> <translation id="8912810933860534797">הפעלת סריקה אוטומטית</translation> -<translation id="891365694296252935">שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. ההגדרה הזו נאכפת על-ידי הבעלים. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">טוען הצעה...</translation> <translation id="8916476537757519021">תת-מסגרת לגלישה בסתר: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">המערכת מאמתת את מפתח האבטחה...</translation> @@ -5936,7 +5928,6 @@ <translation id="9101691533782776290">הפעל את היישום</translation> <translation id="9102610709270966160">הפעל תוסף</translation> <translation id="9103868373786083162">לחץ כדי לחזור אחורה, תפריט הקשר כדי לראות היסטוריה</translation> -<translation id="9104396740804929809">שליחה של נתוני אבחון ונתונים על השימוש. אפשר לעזור בשיפור החוויה ב-Android. לשם כך יש לשלוח אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. ההגדרה הזו נאכפת על-ידי הבעלים. ייתכן שהבעלים יבחרו לשלוח אל Google נתוני אבחון ונתונים לגבי אופן השימוש במכשיר הזה. אם הופעלה האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">כדי לפנות שטח, מחק קבצים מאחסון המכשיר.</translation> <translation id="9109283579179481106">חיבור לרשת סלולרית</translation> <translation id="9111102763498581341">בטל נעילה</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 600609ec..a347b6d1 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ホストされているアプリデータ</translation> <translation id="1776712937009046120">ユーザーを追加</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">このデバイスは <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> によって管理されています。 - このまま <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> アカウントにログインするには [次へ] をクリックしてください。</translation> <translation id="1779652936965200207">「<ph name="DEVICE_NAME" />」でこのパスキーを入力してください:</translation> <translation id="177989070088644880">アプリ(<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">グループを閉じる</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">プリンタのリスト作成中に問題が発生しました。一部のプリンタが <ph name="CLOUD_PRINT_NAME" /> に正常に登録されていない可能性があります。</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />アドレスバー<ph name="END_LINK" />で使用される検索エンジン</translation> <translation id="2204034823255629767">すべての入力内容の読み取りと変更</translation> -<translation id="220792432208469595">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この設定は所有者によって管理されています。[その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータは Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="220858061631308971">「<ph name="DEVICE_NAME" />」の PIN コードを入力してください:</translation> <translation id="2212565012507486665">Cookie を許可</translation> <translation id="2213140827792212876">共有を解除します</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">代替ブラウザを開けませんでした</translation> <translation id="2804667941345577550">開いているすべてのタブで、このサイトからログアウトします</translation> <translation id="2804680522274557040">カメラがオフになっています</translation> -<translation id="2805539617243680210">これで準備完了です。</translation> <translation id="2805646850212350655">Microsoft 暗号化ファイル システム</translation> <translation id="2805756323405976993">アプリ</translation> <translation id="2805770823691782631">詳細</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">スクリーンショット撮影完了</translation> <translation id="3742666961763734085">この名前の組織部門が見つかりません。もう一度お試しください。</translation> <translation id="3744111561329211289">バックグラウンド同期</translation> +<translation id="3747077776423672805">アプリを削除するには、まず [設定] > [Google Play ストア] > [Android 設定を管理] > [アプリ] または [アプリケーション管理] に移動して、アンインストールするアプリをタップします(必要であれば左右にスワイプしてアプリを見つけます)。次に、[アンインストール] または [無効にする] をタップします。</translation> <translation id="3748026146096797577">接続されていません</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">マイ デバイス</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">このウェブサイトに登録されていないセキュリティ キーを使用しています</translation> <translation id="4788092183367008521">ネットワーク接続を確認してからもう一度お試しください。</translation> <translation id="4792711294155034829">問題の報告(&R)...</translation> -<translation id="4795022432560487924">使用状況データや診断データを送信します。診断データやデバイスとアプリの使用状況データを Google に自動送信して、お子様向けの Android 機能の向上にご協力ください。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この設定は所有者によって管理されています。このデバイスの診断データや使用状況データを Google に送信するよう所有者が設定している可能性があります。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ウェブページ、HTML のみ</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth ログ<ph name="END_LINK" />を添付する(Google 内部)</translation> <translation id="4801448226354548035">アカウントを非表示にする</translation> @@ -3361,6 +3357,7 @@ <translation id="5649053991847567735">自動ダウンロード</translation> <translation id="5653154844073528838">保存済みのプリンタは <ph name="PRINTER_COUNT" /> 件です。</translation> <translation id="5656845498778518563">Google にフィードバックを送信</translation> +<translation id="5657156137487675418">Cookie をすべて受け入れる</translation> <translation id="5657667036353380798">外部の拡張機能で、Chrome バージョン <ph name="MINIMUM_CHROME_VERSION" /> 以上がインストールされていることが要件となっています。</translation> <translation id="5658415415603568799">セキュリティ強化のため、Smart Lock では 20 時間が経過するとパスワードの入力が求められます。</translation> <translation id="5659593005791499971">メール</translation> @@ -3567,7 +3564,6 @@ <translation id="5941711191222866238">最小化</translation> <translation id="5942964813783878922">この更新が行われた後、<ph name="DEVICE_TYPE" /> は再起動します。今後はソフトウェアとセキュリティに関するアップデートが自動的にインストールされます。</translation> <translation id="5944869793365969636">QR コードのスキャン</translation> -<translation id="5945188205370098537">使用状況データや診断データを送信します。診断データやデバイスとアプリの使用状況データを Google に自動送信して、Android の機能向上にご協力ください。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。[その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータは Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">レポート ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ファイルを解析できません</translation> <translation id="5955282598396714173">パスワードの有効期限が切れています。パスワードを変更するには、いったんログアウトして再度ログインしてください。</translation> @@ -3751,6 +3747,7 @@ <translation id="6185132558746749656">デバイスの位置情報</translation> <translation id="6186394685773237175">不正使用されたパスワードは見つかりませんでした</translation> <translation id="6195693561221576702">このデバイスはオフライン デモモードで設定できません。</translation> +<translation id="6196640612572343990">サードパーティの Cookie をブロックする</translation> <translation id="6196854373336333322">拡張機能「<ph name="EXTENSION_NAME" />」によってプロキシ設定が制御されています。オンラインで行う操作は、この拡張機能によって変更、遮断、傍受される可能性があります。この変更が行われた理由に心当たりがない場合、これは不正な変更と考えられます。</translation> <translation id="6198102561359457428">ログアウトしてから再度ログイン...</translation> <translation id="6198252989419008588">PIN を変更</translation> @@ -4414,7 +4411,6 @@ <translation id="711902386174337313">ログインしたデバイスのリストの読み取り</translation> <translation id="7120865473764644444">同期サーバーに接続できませんでした。再試行しています...</translation> <translation id="7121362699166175603">アドレスバーの履歴とオートコンプリートを削除します。お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります。</translation> -<translation id="7121389946694989825">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">デベロッパー モード</translation> <translation id="7121728544325372695">スマート ダッシュ</translation> <translation id="7123360114020465152">サポートが終了しています</translation> @@ -5197,7 +5193,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{タブを新しいウィンドウに移動}other{タブを新しいウィンドウに移動}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">ページ</translation> -<translation id="8180294223783876911">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。[その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータは Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">「<ph name="EXTENSION" />」は、チェックした場所にある画像、動画、音声ファイルの読み取りと削除ができます。</translation> <translation id="8181215761849004992">ドメインを追加できません。アカウントにデバイスを追加する権限があるかどうかご確認ください。</translation> <translation id="8182105986296479640">アプリケーションから応答がありません。</translation> @@ -5219,7 +5214,6 @@ <translation id="8203732864715032075">デフォルトでこのパソコンにメッセージの通知を送信する<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation> <translation id="8204129288640092672">「<ph name="APP_NAME" />」は保護者によってブロックされています。このアプリを使用するには、保護者の許可が必要です。</translation> <translation id="820568752112382238">よくアクセスするサイト</translation> -<translation id="8206581664590136590">使用状況データや診断データを送信します。診断データやデバイスとアプリの使用状況データを Google に自動送信して、お子様向けの Android 機能の向上にご協力ください。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ブルース</translation> <translation id="8206859287963243715">携帯電話</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ダウンロードが進行中です}other{ダウンロードが進行中です}}</translation> @@ -5759,7 +5753,6 @@ <translation id="8912362522468806198">Google アカウントを使用</translation> <translation id="8912793549644936705">拡大</translation> <translation id="8912810933860534797">自動スキャンを有効にする</translation> -<translation id="891365694296252935">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この設定は所有者によって管理されています。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">候補を読み込んでいます</translation> <translation id="8916476537757519021">シークレット サブフレーム: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">セキュリティ キーの確認中...</translation> @@ -5896,7 +5889,6 @@ <translation id="9101691533782776290">アプリを起動</translation> <translation id="9102610709270966160">拡張機能を有効にする</translation> <translation id="9103868373786083162">ボタンを押して前に戻ります。履歴を表示するにはコンテキスト メニューを選択します</translation> -<translation id="9104396740804929809">使用状況データや診断データを送信します。診断データやデバイスとアプリの使用状況データを Google に自動送信して、Android の機能向上にご協力ください。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この設定は所有者によって管理されています。このデバイスの診断データや使用状況データを Google に送信するよう所有者が設定している可能性があります。[その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータは Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">空き領域を確保するために、デバイスのストレージからファイルを削除してください。</translation> <translation id="9109283579179481106">モバイル ネットワークへの接続</translation> <translation id="9111102763498581341">ロック解除</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index a02a89c..44e787b6 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ჰოსტის პროგრამის მონაცემები</translation> <translation id="1776712937009046120">მომხმარებლის დამატება</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ამ მოწყობილობას მართავს <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - თქვენს <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ანგარიშში შესვლის გასაგრძელებლად დაწკაპუნებით აირჩიეთ „შემდეგი“.</translation> <translation id="1779652936965200207">შეიყვანეთ ეს კოდი „<ph name="DEVICE_NAME" />“-ში:</translation> <translation id="177989070088644880">აპი (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ჯგუფის დახურვა</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">პრინტერების ჩამოთვლისას პრობლემა წარმოიქმნა. შესაძლოა, ზოგიერთი პრინტერი წარმატებით ვერ დარეგისტრირდა <ph name="CLOUD_PRINT_NAME" />-ში.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />მისამართთა ზოლში<ph name="END_LINK" /> გამოყენებული საძიებო სისტემა</translation> <translation id="2204034823255629767">თქვენს მიერ ნებისმიერი აკრეფილი ტექსტის წაკითხვა და შეცვლა</translation> -<translation id="220792432208469595">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ეს მოწყობილობა ამჟამად ავტომატურად უგზავნის Google-ს დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემებს. აღნიშნული მონაცემები დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. ეს პარამეტრი არის იძულებით გააქტიურებული მფლობელის მიერ. თუ ჩართული გაქვთ ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს თქვენს Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="220858061631308971">გთხოვთ შეიყვანეთ ეს PIN კოდი „<ph name="DEVICE_NAME" />“-ზე:</translation> <translation id="2212565012507486665">ქუქი-ჩანაწერების დაშვება</translation> <translation id="2213140827792212876">გაზიარების გაუქმება</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">ალტერნატიული ბრაუზერის გახსნა ვერ მოხერხდა</translation> <translation id="2804667941345577550">თქვენ გამოხვალთ ამ საიტიდან, მათ შორის, გახსნილ ჩანართებზე</translation> <translation id="2804680522274557040">კამერა გამორთულია</translation> -<translation id="2805539617243680210">ყველაფერი მზადაა!</translation> <translation id="2805646850212350655">Microsoft დაშიფვრის ფაილის სისტემა</translation> <translation id="2805756323405976993">პროგრამები</translation> <translation id="2805770823691782631">დამატებითი დეტალები</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">ეკრანის ანაბეჭდი გადაღებულია</translation> <translation id="3742666961763734085">ამ სახელის მქონე ორგანიზაციული ერთეული ვერ მოიძებნა. გთხოვთ, სცადოთ ხელახლა.</translation> <translation id="3744111561329211289">ფონური სინქრონიზაცია</translation> +<translation id="3747077776423672805">აპების ამოსაშლელად გადადით აქ: პარამეტრები > Google Play Store > Android პარამეტრების მართვა > აპები ან აპლიკაციების მენეჯერი. შემდეგ შეეხეთ აპს, რომლის დეინსტალაციაც გსურთ (აპის საპოვნელად შეიძლება დაგჭირდეთ მარჯვნივ ან მარცხნივ გადაფურცვლა). ბოლოს კი შეეხეთ დეინსტალაციას ან გათიშვას.</translation> <translation id="3748026146096797577">არ არის დაკავშირებული</translation> <translation id="3752582316358263300">კარგი...</translation> <translation id="3752673729237782832">ჩემი მოწყობილობები</translation> @@ -2740,7 +2737,6 @@ <translation id="4785719467058219317">თქვენ მიერ გამოყენებული უსაფრთხოების გასაღები არ არის რეგისტრირებული ამ ვებსაიტზე</translation> <translation id="4788092183367008521">გთხოვთ, შეამოწმოთ თქვენი კავშირი ქსელთან და ხელახლა ცადოთ.</translation> <translation id="4792711294155034829">&მოხსენება პრობლემის შესახებ…</translation> -<translation id="4795022432560487924">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას თქვენი შვილისთვის, დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. ეს პარამეტრი არის იძულებით გააქტიურებული მფლობელის მიერ. მფლობელს შეუძლია ამ მოწყობილობის დიაგნოსტიკისა და გამოყენების მონაცემების Google-ისთვის გაგზავნის დაშვება. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ვებგვერდი, მხოლოდ HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth ჟურნალების<ph name="END_LINK" /> დართვა (Google-ის შიდა გამოყენებისთვის)</translation> <translation id="4801448226354548035">ანგარიშების დამალვა</translation> @@ -3566,7 +3562,6 @@ <translation id="5941711191222866238">ჩაკეცვა</translation> <translation id="5942964813783878922">განახლების შემდეგ თქვენი <ph name="DEVICE_TYPE" /> გადაიტვირთება. პროგრამული უზრუნველყოფა და უსაფრთხოების განახლებები მომავალში ავტომატურად დაინსტალირდება.</translation> <translation id="5944869793365969636">დაასკანირეთ QR კოდი</translation> -<translation id="5945188205370098537">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ ჩართული გაქვთ ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს თქვენს Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ანგარიშის ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ფაილის გაანალიზება ვერ ხერხდება</translation> <translation id="5955282598396714173">თქვენი პაროლის მოქმედების ვადა ამოიწურა. მის შესაცვლელად გადით და ხელახლა შედით სისტემაში.</translation> @@ -3750,6 +3745,7 @@ <translation id="6185132558746749656">მოწყობილობის მდებარეობა</translation> <translation id="6186394685773237175">გატეხილი პაროლები არ მოიძებნა</translation> <translation id="6195693561221576702">ამ მოწყობილობის ხაზგარეშე დემო-რეჟიმში დაყენება ვერ მოხერხდება.</translation> +<translation id="6196640612572343990">მესამე მხარის ქუქი-ჩანაწერების დაბლოკვა</translation> <translation id="6196854373336333322">გაფართოება „<ph name="EXTENSION_NAME" />“ ახლა თქვენი პროქსის პარამეტრებს აკონტროლებს, რაც იმას ნიშნავს, რომ მას თქვენი ონლაინ საქმიანობის შეცვლა, შეწყვეტა ან მასზე ფარულად თვალთვალი შეუძლია. თუ ეს ცვლილება გაურკვეველი ხასიათისაა, შესაძლოა, იგი თქვენი ნებართვის გარეშე განხორციელდა.</translation> <translation id="6198102561359457428">გამოდით, შემდეგ ისევ შედით…</translation> <translation id="6198252989419008588">შეცვალეთ PIN-ი</translation> @@ -4413,7 +4409,6 @@ <translation id="711902386174337313">თქვენი ავტორიზებული მოწყობილობების სიის წაკითხვა</translation> <translation id="7120865473764644444">სინქრონიზაციის სერვერთან დაკავშირება ვერ მოხერხდა. მიმდინარეობს ხელახლა ცდა…</translation> <translation id="7121362699166175603">მისამართთა ზოლში გაასუფთავებს ისტორიასა და ავტომატურ დასრულებებს. თქვენს Google ანგარიშში შეიძლება ინახებოდეს სხვა ტიპის დათვალიერების ისტორიაც, რომელიც ხელმისაწვდომია მისამართზე: <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ეს მოწყობილობა ამჟამად ავტომატურად უგზავნის Google-ს დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემებს. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">შემმუშავებლის რეჟიმი</translation> <translation id="7121728544325372695">გონიერი ტირეები</translation> <translation id="7123360114020465152">აღარ არის მხარდაჭერილი</translation> @@ -5194,7 +5189,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ჩანართის ახალ ფანჯარაში გადატანა}other{ჩანართების ახალ ფანჯარაში გადატანა}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">გვერდი</translation> -<translation id="8180294223783876911">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ეს მოწყობილობა ამჟამად ავტომატურად უგზავნის Google-ს დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემებს. აღნიშნული მონაცემები დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ ჩართული გაქვთ ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს თქვენს Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />“-ს შეუძლია გამოსახულებების, ვიდეოს და ხმოვანი ფაილების წაკითხვა და წაშლა დაფიქსირებულ ადგილებში.</translation> <translation id="8181215761849004992">დომენში გაწევრიანება ვერ მოხერხდა. შეამოწმეთ, აქვს თუ არა თქვენს ანგარიშს მოწყობილობების დამატების უფლება.</translation> <translation id="8182105986296479640">აპლიკაცია არ რეაგირებს.</translation> @@ -5216,7 +5210,6 @@ <translation id="8203732864715032075">თქვენთვის შეტყობინებების გამოგზავნა და ნაგულისხმევად ამ კომპიუტერის დამახსოვრება Messages-თვის. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="8204129288640092672">„<ph name="APP_NAME" />“ დაბლოკილია მშობლის მიერ. ამ აპის გამოსაყენებლად დაგჭირდებათ მშობლის ნებართვა.</translation> <translation id="820568752112382238">ყველაზე ხშირად მონახულებადი საიტები</translation> -<translation id="8206581664590136590">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას თქვენი შვილისთვის, დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ბლუზი</translation> <translation id="8206859287963243715">ფიჭური</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{მიმდინარეობს ჩამოტვირთვა}other{მიმდინარეობს ჩამოტვირთვები}}</translation> @@ -5756,7 +5749,6 @@ <translation id="8912362522468806198">Google ანგარიში</translation> <translation id="8912793549644936705">გაწელვა</translation> <translation id="8912810933860534797">ავტომატური სკანირების ჩართვა</translation> -<translation id="891365694296252935">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ეს მოწყობილობა ამჟამად ავტომატურად უგზავნის Google-ს დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემებს. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. ეს პარამეტრი არის იძულებით გააქტიურებული მფლობელის მიერ. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">შემოთავაზების ჩატვირთვა</translation> <translation id="8916476537757519021">ანონიმური ქვეჩარჩო: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">მიმდინარეობს თქვენი უსაფრთხოების გასაღების დადასტურება…</translation> @@ -5893,7 +5885,6 @@ <translation id="9101691533782776290">აპლ.გაშვება</translation> <translation id="9102610709270966160">გაფართოების ჩართვა</translation> <translation id="9103868373786083162">დააჭირეთ უკან გასასვლელად, კონტექსტურ მენიუს ისტორიის სანახავად.</translation> -<translation id="9104396740804929809">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. ეს პარამეტრი არის იძულებით გააქტიურებული მფლობელის მიერ. მფლობელს შეუძლია ამ მოწყობილობის დიაგნოსტიკისა და გამოყენების მონაცემების Google-ისთვის გაგზავნის დაშვება. თუ ჩართული გაქვთ ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს თქვენს Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">მეხსიერების გამოთავისუფლება მოწყობილობიდან ფაილების წაშლით შეგიძლიათ.</translation> <translation id="9109283579179481106">დაუკავშირდით მობილურ ქსელს</translation> <translation id="9111102763498581341">განბლოკვა</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 3793ad9..de3d1ba 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">Орналастырылатын қолданба деректері</translation> <translation id="1776712937009046120">Пайдаланушыны енгізу</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Бұл құрылғыны <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> басқарады. - <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> есептік жазбасына кіру үшін "Келесі" түймесін басыңыз.</translation> <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" құрылғысында осы негізгі кілтті енгізіңіз:</translation> <translation id="177989070088644880">Қолданба (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Топты жабу</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">Принтерлерді көрсету кезінде қате орын алды. Кейбір принтерлеріңіз <ph name="CLOUD_PRINT_NAME" /> арқылы сәтті тіркелмеген болуы мүмкін.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Мекенжай жолында<ph name="END_LINK" /> пайдаланылатын іздеу жүйесі</translation> <translation id="2204034823255629767">Барлық тергендеріңізді оқу және өзгерту</translation> -<translation id="220792432208469595">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Бұл құрылғыдан Google-ға диагностика, құрылғы мен қолданбаны пайдалану деректері автоматты түрде жіберіліп тұрады. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Бұл параметрді иесі орнатқан. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер сіздің Google есептік жазбаңызға сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Бұл PIN кодын "<ph name="DEVICE_NAME" />" құрылғысына енгізіңіз:</translation> <translation id="2212565012507486665">Cookie файлдарына рұқсат беру</translation> <translation id="2213140827792212876">Бөлісу мүмкіндігін өшіру</translation> @@ -1340,7 +1337,6 @@ <translation id="2804043232879091219">Балама браузер ашылмады.</translation> <translation id="2804667941345577550">Осы сайттан, оның ішінде ашық қойындылардан шығып кетесіз.</translation> <translation id="2804680522274557040">Камера өшірулі</translation> -<translation id="2805539617243680210">Барлығы дайын!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Қолданбалар</translation> <translation id="2805770823691782631">Қосымша мәліметтер</translation> @@ -2018,6 +2014,7 @@ <translation id="3742055079367172538">Скриншот түсірілді</translation> <translation id="3742666961763734085">Мұндай атаулы ұйым бірлігі табылмады. Әрекетті қайталаңыз.</translation> <translation id="3744111561329211289">Фондық синхрондау</translation> +<translation id="3747077776423672805">Қолданбаларды өшіру үшін "Параметрлер > Google Play Store > Android параметрлерін басқару > Қолданбалар немесе қолданба реттеушісі" тармағына өтіңіз. Одан кейін өшірілетін қолданбаны (қолданбаны табу үшін оңға немесе солға сырғыту керек) және "Жою" немесе "Өшіру" опциясын түртіңіз.</translation> <translation id="3748026146096797577">Қосылмаған</translation> <translation id="3752582316358263300">Жарайды…</translation> <translation id="3752673729237782832">Құрылғыларым</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">Веб-сайтта тіркелмеген қауіпсіздік кілтін пайдаланып жатырсыз.</translation> <translation id="4788092183367008521">Желі байланысын тексеріп, әрекетті қайталаңыз.</translation> <translation id="4792711294155034829">&Мәселе туралы хабарлау…</translation> -<translation id="4795022432560487924">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Диагностикалық деректерді, сондай-ақ құрылғы мен қолданбаларды пайдалану деректерін Google қызметіне автоматты түрде жіберу арқылы балаңыздың Android жүйесін пайдалану тәжірибесін жақсартуға көмектесіңіз. Бұл деректер баланың жеке басын анықтауға пайдаланылмайды. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Бұл параметрді иесі орнатқан. Иесі бұл құрылғының диагностикасы және пайдаланылуы туралы деректерді Google қызметіне жіберуге рұқсат бере алады. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер балаңыздың Google есептік жазбасына сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-бет, HTML ғана</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth журналдарын<ph name="END_LINK" /> (Google-де ішкі пайдалану үшін) тіркеңіз</translation> <translation id="4801448226354548035">Есептік жазбаларды жасыру</translation> @@ -3564,7 +3560,6 @@ <translation id="5941711191222866238">Жию</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> құрылғыңыз осы жаңартудан кейін қайта қосылады. Алдағы бағдарламалық құрал мен қауіпсіздік жаңартулары автоматты түрде орнатылады.</translation> <translation id="5944869793365969636">QR кодын сканерлеу</translation> -<translation id="5945188205370098537">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Диагностикалық деректерді, сондай-ақ құрылғы мен қолданбаларды пайдалану деректерін Google қызметіне автоматты түрде жіберу арқылы Android жүйесін пайдалану тәжірибесін жақсартуға көмектесіңіз. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер сіздің Google есептік жазбаңызға сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Есеп идентификаторы <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Файлды талдау мүмкін емес</translation> <translation id="5955282598396714173">Құпия сөзіңіздің мерзімі аяқталған. Оны өзгерту үшін жүйеден шығып, қайта кіріңіз.</translation> @@ -3748,6 +3743,7 @@ <translation id="6185132558746749656">Құрылғының орналасқан жері</translation> <translation id="6186394685773237175">Ешқандай құпия сөз ұрланбаған.</translation> <translation id="6195693561221576702">Бұл құрылғы офлайн демо режимінде реттелмейді.</translation> +<translation id="6196640612572343990">Үшінші тарап cookie файлдарын бөгеу</translation> <translation id="6196854373336333322">«<ph name="EXTENSION_NAME" />» кеңейтімі прокси-сервер параметрлерін бақылауға алды, яғни сіздің онлайн орындайтын кез келген әрекетіңізді өзгерте, бұза немесе ұстап қала алады. Ондай бақылаудың жасалуын қаламасаңыз, кеңейтімді өшіргеніңіз жөн болар.</translation> <translation id="6198102561359457428">Шығып, қайта кіріңіз…</translation> <translation id="6198252989419008588">PIN кодын өзгерту</translation> @@ -4411,7 +4407,6 @@ <translation id="711902386174337313">Кірген құрылғыларыңыздың тізімін оқу</translation> <translation id="7120865473764644444">Синхрондау серверімен байланыс орнатылмады. Әрекет қайталануда…</translation> <translation id="7121362699166175603">Мекенжай жолағында тарих пен автотолтыруларды өшіреді. <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> сайтында Google есептік жазбасымен шолу тарихының басқа да үлгілері болуы мүмкін.</translation> -<translation id="7121389946694989825">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Бұл құрылғыдан Google-ға диагностика, құрылғы мен қолданбаны пайдалану деректері автоматты түрде жіберіліп тұрады. Бұл деректер баланың жеке басын анықтауға пайдаланылмайды. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер балаңыздың Google есептік жазбасына сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Әзірлеуші режимі</translation> <translation id="7121728544325372695">Смарт сызықшалар</translation> <translation id="7123360114020465152">Бұдан былай қолдау көрсетілмейді</translation> @@ -5193,7 +5188,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Қойындыны жаңа терезеден ашу}other{Қойындыларды жаңа терезеден ашу}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">бет</translation> -<translation id="8180294223783876911">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Бұл құрылғыдан Google-ға диагностика, құрылғы мен қолданбаны пайдалану деректері автоматты түрде жіберіліп тұрады. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер сіздің Google есептік жазбаңызға сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" белгіленген орындарда кескіндерді, бейнені және дыбыстық файлдарды оқи және жоя алады.</translation> <translation id="8181215761849004992">Доменге қосылу мүмкін емес. Есептік жазба мәліметтерін қарап, құрылғы енгізуге құқығыңыз бар ма екенін тексеріңіз.</translation> <translation id="8182105986296479640">Қолданба жауап бермейді.</translation> @@ -5215,7 +5209,6 @@ <translation id="8203732864715032075">Телефонға келген хабарлар туралы осы компьютерде хабарландыру алу. <ph name="LINK_BEGIN" />Толығырақ ақпарат<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" қолданбасына ата-анаңыз тыйым салды. Оны пайдалану үшін ата-анаңыздан рұқсат сұраңыз.</translation> <translation id="820568752112382238">Көп кіретін сайттар</translation> -<translation id="8206581664590136590">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Диагностикалық деректерді, сондай-ақ құрылғы мен қолданбаларды пайдалану деректерін Google қызметіне автоматты түрде жіберу арқылы балаңыздың Android жүйесін пайдалану тәжірибесін жақсартуға көмектесіңіз. Бұл деректер баланың жеке басын анықтауға пайдаланылмайды. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер балаңыздың Google есептік жазбасына сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блюз</translation> <translation id="8206859287963243715">Ұялы</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Файл жүктеп алынуда}other{Файлдар жүктеп алынуда}}</translation> @@ -5755,7 +5748,6 @@ <translation id="8912362522468806198">Google есептік жазбасы</translation> <translation id="8912793549644936705">Созу</translation> <translation id="8912810933860534797">Автоматты түрде іздеу функциясын қосу</translation> -<translation id="891365694296252935">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Бұл құрылғыдан Google-ға диагностика, құрылғы мен қолданбаны пайдалану деректері автоматты түрде жіберіліп тұрады. Бұл деректер баланың жеке басын анықтауға пайдаланылмайды. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Бұл параметрді иесі орнатқан. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосылып тұрса, бұл деректер балаңыздың Google есептік жазбасына сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Ұсынысты жүктеу</translation> <translation id="8916476537757519021">Инкогнито режиміндегі ішкі жақтау: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Қауіпсіздік кілтіңіз расталуда…</translation> @@ -5892,7 +5884,6 @@ <translation id="9101691533782776290">Қолданбаны іске қосу</translation> <translation id="9102610709270966160">Кеңейтімді қосу</translation> <translation id="9103868373786083162">Журналды көру үшін, оралу, контекстік мәзір түймесін басыңыз</translation> -<translation id="9104396740804929809">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Диагностикалық деректерді, сондай-ақ құрылғы мен қолданбаларды пайдалану деректерін Google қызметіне автоматты түрде жіберу арқылы Android жүйесін пайдалану тәжірибесін жақсартуға көмектесіңіз. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Бұл параметрді иесі орнатқан. Иесі бұл құрылғының диагностикасы және пайдаланылуы туралы деректерді Google қызметіне жіберуге рұқсат бере алады. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер сіздің Google есептік жазбаңызға сақталуы мүмкін. <ph name="BEGIN_LINK1" />Толығырақ<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Орынды босату үшін құрылғы жадынан файлдарды жойыңыз.</translation> <translation id="9109283579179481106">Мобильдік желіге қосылу</translation> <translation id="9111102763498581341">Құлпын ашу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 411249d..4ab01d5 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ទិន្នន័យកម្មវិធីតំឡើងលើអ៊ីនធឺណិត</translation> <translation id="1776712937009046120">បន្ថែមអ្នកប្រើ</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ឧបករណ៍នេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />។ - សូមចុច "បន្ទាប់" ដើម្បីបន្តចូលគណនី <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> របស់អ្នក។</translation> <translation id="1779652936965200207">សូមបញ្ចូលលេខសម្ងាត់នេះនៅលើ "<ph name="DEVICE_NAME" />"។</translation> <translation id="177989070088644880">កម្មវិធី (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">បិទក្រុម</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">មានបញ្ហាកើតឡើងនៅក្នុងបញ្ជីម៉ាស៊ីនបោះពុម្ពក្នុងបញ្ជី។ ម៉ាស៊ីនបោះពុម្ពរបស់អ្នកមួយចំនួនប្រហែលមិនអាចចុះឈ្មោះដោយជោគជ័យជាមួយ <ph name="CLOUD_PRINT_NAME" /> ទេ។</translation> <translation id="2203682048752833055">ម៉ាស៊ីនស្វែងរកដែលប្រើនៅក្នុង <ph name="BEGIN_LINK" />របារអាសយដ្ឋាន<ph name="END_LINK" /></translation> <translation id="2204034823255629767">អាន និងប្តូរអ្វីដែលអ្នកវាយបញ្ចូល</translation> -<translation id="220792432208469595">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះកំពុងបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ ការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ការកំណត់នេះត្រូវបានអនុវត្តដោយម្ចាស់។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមរបស់អ្នកត្រូវបានបើក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់អ្នក។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="220858061631308971">សូមបញ្ចូលលេខកូដសម្គាល់នេះនៅលើ "<ph name="DEVICE_NAME" />"៖</translation> <translation id="2212565012507486665">អនុញ្ញាតខូគី</translation> <translation id="2213140827792212876">លុបការចែករំលែក</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">មិនអាចបើកកម្មវិធីរុករកតាមអ៊ីនធឺណិតផ្សេងបានទេ</translation> <translation id="2804667941345577550">អ្នកនឹងត្រូវនាំចេញពីគេហទំព័រនេះ រួមទាំងនៅក្នុងផ្ទាំងបើកផងដែរ</translation> <translation id="2804680522274557040">បានបិទកាមេរ៉ា</translation> -<translation id="2805539617243680210">រួចរាល់អស់ហើយ!</translation> <translation id="2805646850212350655">ប្រព័ន្ធឯកសារអ៊ីនគ្រីប Microsoft</translation> <translation id="2805756323405976993">កម្មវិធី</translation> <translation id="2805770823691782631">ព័ត៌មានលម្អិតបន្ថែម</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">រូបថតអេក្រង់ត្រូវបានថតយក</translation> <translation id="3742666961763734085">រកមិនឃើញឯកតារៀបចំដែលមានឈ្មោះនោះទេ។ សូមព្យាយាមម្ដងទៀត។</translation> <translation id="3744111561329211289">សមកាលកម្មផ្ទៃខាងក្រោយ</translation> +<translation id="3747077776423672805">ដើម្បីលុបកម្មវិធី សូមចូលទៅកាន់ការកំណត់ > Google Play Store > គ្រប់គ្រងចំណូលចិត្ត Android > កម្មវិធី ឬកម្មវិធីគ្រប់គ្រងកម្មវិធី។ បន្ទាប់មកចុចកម្មវិធីដែលអ្នកចង់លុប (អ្នកអាចនឹងត្រូវអូសទៅស្តាំ ឬទៅឆ្វេងដើម្បីស្វែងរកកម្មវិធីនោះ)។ បន្ទាប់មកចុចលុប ឬបិទ។</translation> <translation id="3748026146096797577">មិនបានភ្ជាប់ទេ</translation> <translation id="3752582316358263300">យល់ព្រម...</translation> <translation id="3752673729237782832">ឧបករណ៍របស់ខ្ញុំ</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">អ្នកកំពុងប្រើសោសុវត្ថិភាពដែលមិនបានចុះឈ្មោះជាមួយគេហទំព័រនេះ</translation> <translation id="4788092183367008521">សូមពិនិត្យមើលការតភ្ជាប់បណ្ដាញរបស់អ្នក រួចព្យាយាមម្ដងទៀត។</translation> <translation id="4792711294155034829">រាយការណ៍បញ្ហា...</translation> -<translation id="4795022432560487924">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ ជួយធ្វើឱ្យបទពិសោធន៍ប្រើប្រាស់ Android របស់កូនអ្នកប្រសើរឡើង ដោយបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះនឹងមិនត្រូវបានធ្វើឡើង ដើម្បីកំណត់អត្តសញ្ញាណកូនរបស់អ្នកនោះទេ តែការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ការកំណត់នេះត្រូវបានអនុវត្តដោយម្ចាស់។ ម្ចាស់អាចនឹងជ្រើសរើស ដើម្បីបញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគសម្រាប់ឧបករណ៍នេះទៅ Google ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមត្រូវបានបើកសម្រាប់កូនរបស់អ្នក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់គាត់។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="479536056609751218">គេហទំព័រ HTML តែប៉ុណ្ណោះ</translation> <translation id="4798236378408895261">ភ្ជាប់<ph name="BEGIN_LINK" />កំណត់ហេតុប៊្លូធូស<ph name="END_LINK" /> (ផ្ទៃក្នុង Google)</translation> <translation id="4801448226354548035">លាក់គណនី</translation> @@ -3568,7 +3564,6 @@ <translation id="5941711191222866238">បង្រួម</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> របស់អ្នកនឹងចាប់ផ្ដើមឡើងវិញ បន្ទាប់ពីការដំឡើងកំណែនេះ។ កំណែកម្មវិធី និងសុវត្ថិភាពថ្មីក្នុងពេលអនាគតនឹងដំឡើងដោយស្វ័យប្រវត្តិ។</translation> <translation id="5944869793365969636">ស្កេនកូដ QR</translation> -<translation id="5945188205370098537">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ ជួយធ្វើឱ្យបទពិសោធន៍ប្រើប្រាស់ Android របស់អ្នកប្រសើរឡើង ដោយបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ ការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមរបស់អ្នកត្រូវបានបើក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់អ្នក។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">លេខសម្គាល់របាយការណ៍ <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">មិនអាចញែកឯកសារបានទេ</translation> <translation id="5955282598396714173">ពាក្យសម្ងាត់របស់អ្នកបានផុតកំណត់ហើយ។ សូមចេញពីគណនី ហើយចូលមកវិញម្តងទៀត ដើម្បីប្តូរវា។</translation> @@ -3752,6 +3747,7 @@ <translation id="6185132558746749656">ទីតាំងឧបករណ៍</translation> <translation id="6186394685773237175">រកមិនឃើញពាក្យសម្ងាត់ដែលរងការលុកលុយទេ</translation> <translation id="6195693561221576702">មិនអាចរៀបចំឧបករណ៍នេះនៅក្នុងមុខងារសាកល្បងពេលគ្មានអ៊ីនធឺណិតបានទេ។</translation> +<translation id="6196640612572343990">រារាំងខូគីភាគីទីបី</translation> <translation id="6196854373336333322">កម្មវិធីបន្ថែម "<ph name="EXTENSION_NAME" />" បានគ្រប់គ្រងការកំណត់ប្រូកស៊ីរបស់អ្នក មានន័យថាវាអាចប្តូរ បំបែក និងលួចតាមដានអ្វីទាំងអស់ដែលអ្នកធ្វើនៅលើអ៊ីនធឺណិត។ ប្រសិនបើអ្នកមិនប្រាកដថាហេតុអ្វីការប្តូរនេះបានកើតឡើង អ្នកប្រហែលជាមិនចង់បានវាទេ។</translation> <translation id="6198102561359457428">ចាកចេញ បន្ទាប់មកចូលម្តងទៀត...</translation> <translation id="6198252989419008588">ប្តូរលេខសម្គាល់</translation> @@ -4415,7 +4411,6 @@ <translation id="711902386174337313">អានបញ្ជីឧបករណ៍ដែលបានចូលរបស់អ្នក</translation> <translation id="7120865473764644444">មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសមកាលកម្មបានទេ។ ព្យាយាមម្តងទៀត...</translation> <translation id="7121362699166175603">សម្អាតប្រវត្តិ និងការបំពេញដោយស្វ័យប្រវត្តិនៅក្នុងរបារអាសយដ្ឋាននេះ។ គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ។</translation> -<translation id="7121389946694989825">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះកំពុងបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះនឹងមិនត្រូវបានធ្វើឡើង ដើម្បីកំណត់អត្តសញ្ញាណកូនរបស់អ្នកនោះទេ តែការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមត្រូវបានបើកសម្រាប់កូនរបស់អ្នក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់គាត់។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">មុខងារអ្នកអភិវឌ្ឍន៍</translation> <translation id="7121728544325372695">ផ្ទាំងព័ត៌មានឆ្លាតវៃ</translation> <translation id="7123360114020465152">លែងប្រើបានទៀតហើយ</translation> @@ -5197,7 +5192,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ផ្លាស់ទីផ្ទាំងទៅវិនដូថ្មី}other{ផ្លាស់ទីផ្ទាំងទៅវិនដូថ្មី}}</translation> <translation id="8179976553408161302">បញ្ចូល</translation> <translation id="8180239481735238521">ទំព័រ</translation> -<translation id="8180294223783876911">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះកំពុងបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ ការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមរបស់អ្នកត្រូវបានបើក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់អ្នក។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" អាចអាន និងលុបឯកសាររូបភាព វីដេអូ និងសម្លេងនៅក្នុងទីតាំងដែលបានពិនិត្យ។</translation> <translation id="8181215761849004992">មិនអាចភ្ជាប់ទៅដែនបានទេ។ សូមពិនិត្យមើលគណនីរបស់អ្នក ដើម្បីប្រាកដថាអ្នកមានសិទ្ធិគ្រប់គ្រាន់ក្នុងការបញ្ចូលឧបករណ៍។</translation> <translation id="8182105986296479640">កម្មវិធីមិនដំណើរការទេ។</translation> @@ -5219,7 +5213,6 @@ <translation id="8203732864715032075">ផ្ញើការជូនដំណឹង និងលំនាំដើមទៅអ្នក ដើម្បីចងចាំកុំព្យូទ័រនេះសម្រាប់ Messages ។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" ត្រូវបានទប់ស្កាត់ដោយមាតាបិតារបស់អ្នក។ សូមស្នើសុំការអនុញ្ញាតពីមាតាបិតារបស់អ្នក ដើម្បីប្រើកម្មវិធីនេះ។</translation> <translation id="820568752112382238">គេហទំព័រដែលចូលមើលញឹកញាប់បំផុត</translation> -<translation id="8206581664590136590">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ ជួយធ្វើឱ្យបទពិសោធន៍ប្រើប្រាស់ Android របស់កូនអ្នកប្រសើរឡើង ដោយបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះនឹងមិនត្រូវបានធ្វើឡើង ដើម្បីកំណត់អត្តសញ្ញាណកូនរបស់អ្នកនោះទេ តែការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមត្រូវបានបើកសម្រាប់កូនរបស់អ្នក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់គាត់។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ប៊្លូស៊ី</translation> <translation id="8206859287963243715">ប្រព័ន្ធទូរស័ព្ទ</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ការទាញយកកំពុងដំណើរការ}other{ការទាញយកកំពុងដំណើរការ}}</translation> @@ -5759,7 +5752,6 @@ <translation id="8912362522468806198">គណនី Google</translation> <translation id="8912793549644936705">លាតសន្ធឹង</translation> <translation id="8912810933860534797">បើកការស្កេនស្វ័យប្រវត្តិ</translation> -<translation id="891365694296252935">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះកំពុងបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះនឹងមិនត្រូវបានធ្វើឡើង ដើម្បីកំណត់អត្តសញ្ញាណកូនរបស់អ្នកនោះទេ តែការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ការកំណត់នេះត្រូវបានអនុវត្តដោយម្ចាស់។ ប្រសិនបើសកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមត្រូវបានបើកសម្រាប់កូនរបស់អ្នក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់គាត់។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">កំពុងដំណើរការការផ្តល់យោបល់</translation> <translation id="8916476537757519021">ហ្វ្រេមរងអនាមិក៖ <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">កំពុងផ្ទៀងផ្ទាត់សោសុវត្ថិភាពរបស់អ្នក...</translation> @@ -5896,7 +5888,6 @@ <translation id="9101691533782776290">បើកដំណើរការកម្មវិធី</translation> <translation id="9102610709270966160">បើកកម្មវិធីបន្ថែម</translation> <translation id="9103868373786083162">ចុចដើម្បីថយក្រោយ ហើយចុចម៉ឺនុយបរិបទដើម្បីមើលប្រវត្តិ</translation> -<translation id="9104396740804929809">បញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគ។ ជួយធ្វើឱ្យបទពិសោធន៍ប្រើប្រាស់ Android របស់អ្នកប្រសើរឡើង ដោយបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ ការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ការកំណត់នេះត្រូវបានអនុវត្តដោយម្ចាស់។ ម្ចាស់អាចនឹងជ្រើសរើស ដើម្បីបញ្ជូនទិន្នន័យប្រើប្រាស់ និងវិភាគសម្រាប់ឧបករណ៍នេះទៅ Google ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមរបស់អ្នកត្រូវបានបើក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់អ្នក។ <ph name="BEGIN_LINK1" />ស្វែងយល់បន្ថែម<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ដើម្បីបង្កើនទំហំផ្ទុក សូមលុបឯកសារពីឧបករណ៍ផ្ទុក។</translation> <translation id="9109283579179481106">ភ្ជាប់បណ្តាញទូរសព្ទចល័ត</translation> <translation id="9111102763498581341">ដោះសោរ</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 3e4ef32..694664a 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">ಹೋಸ್ಟ್ ಮಾಡಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ</translation> <translation id="1776712937009046120">ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ಈ ಸಾಧನವು <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲ್ಪಡುತ್ತಿದೆ. - ನಿಮ್ಮ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲು "ಮುಂದಿನದು" ಕ್ಲಿಕ್ ಮಾಡಿ.</translation> <translation id="1779652936965200207">ದಯವಿಟ್ಟು "<ph name="DEVICE_NAME" />" ರಲ್ಲಿ ಈ ಪಾಸ್ಕೀಯನ್ನು ನಮೂದಿಸಿ:</translation> <translation id="177989070088644880">ಆ್ಯಪ್ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ಗುಂಪನ್ನು ಮುಚ್ಚಿರಿ</translation> @@ -888,7 +886,6 @@ <translation id="2202898655984161076">ಪ್ರಿಂಟರ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಉಂಟಾಗಿದೆ. ನಿಮ್ಮ ಕೆಲವು ಪ್ರಿಂಟರ್ಗಳು <ph name="CLOUD_PRINT_NAME" /> ನೊಂದಿಗೆ ಯಶಸ್ವಿಯಾಗಿ ನೋಂದಣಿ ಹೊಂದದೆ ಇರಬಹುದು.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ವಿಳಾಸ ಪಟ್ಟಿ<ph name="END_LINK" />ಯಲ್ಲಿ ಬಳಸಲಾದ ಹುಡುಕಾಟ ಇಂಜಿನ್</translation> <translation id="2204034823255629767">ನೀವು ಟೈಪ್ ಮಾಡುವ ಯಾವುದನ್ನಾದರೂ ಓದಿ ಮತ್ತು ಬದಲಿಸಿ</translation> -<translation id="220792432208469595">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಮಾಲೀಕರೇ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ನಿಮ್ಮ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಆಗಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="220858061631308971">ದಯವಿಟ್ಟು "<ph name="DEVICE_NAME" />" ಇದರಲ್ಲಿ ಈ ಪಿನ್ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ :</translation> <translation id="2212565012507486665">ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="2213140827792212876">ಹಂಚಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕಿ</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">ಪರ್ಯಾಯ ಬ್ರೌಸರ್ ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="2804667941345577550">ತೆರೆದ ಟ್ಯಾಬ್ಗಳಲ್ಲೂ ಸೇರಿದಂತೆ, ಈ ಸೈಟ್ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ</translation> <translation id="2804680522274557040">ಕ್ಯಾಮರಾವನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ</translation> -<translation id="2805539617243680210">ನೀವು ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ಆಪ್ಸ್</translation> <translation id="2805770823691782631">ಹೆಚ್ಚುವರಿ ವಿವರಗಳು</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">ಸ್ಕ್ರಿನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ</translation> <translation id="3742666961763734085">ಆ ಹೆಸರಿನ ಸಾಂಸ್ಥಿಕ ಘಟಕವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="3744111561329211289">ಹಿನ್ನೆಲೆ ಸಿಂಕ್</translation> +<translation id="3747077776423672805">ಆ್ಯಪ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು, ಸೆಟ್ಟಿಂಗ್ಗಳು > Google Play ಸ್ಟೋರ್ > Android ಆದ್ಯತೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ> ಆ್ಯಪ್ಗಳು ಅಥವಾ ಆ್ಯಪ್ ನಿರ್ವಾಹಕಕ್ಕೆ ಹೋಗಿ ನಂತರ ನೀವು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಬಯಸುವ ಆ್ಯಪ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ (ಆ್ಯಪ್ ಹುಡುಕಲು ನಿಮಗೆ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡುವ ಅಗತ್ಯವಿರಬಹುದು). ನಂತರ ಅನ್ಇನ್ಸ್ಟಾಲ್ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="3748026146096797577">ಸಂಪರ್ಕಗೊಳಿಸಿಲ್ಲ</translation> <translation id="3752582316358263300">ಸರಿ...</translation> <translation id="3752673729237782832">ನನ್ನ ಸಾಧನಗಳು</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">ಈ ವೆಬ್ಸೈಟ್ನೊಂದಿಗೆ ನೋಂದಾಯಿಸಿಲ್ಲದ ಭದ್ರತೆ ಕೀಯನ್ನು ನೀವು ಬಳಸುತ್ತಿದ್ದೀರಿ</translation> <translation id="4788092183367008521">ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="4792711294155034829">&ಸಮಸ್ಯೆಯನ್ನು ವರದಿಮಾಡಿ...</translation> -<translation id="4795022432560487924">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಹಾಗೂ ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಮಗುವಿನ Android ಅನುಭವವನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಿ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಮಾಲೀಕರೇ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ಈ ಸಾಧನದ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಮತ್ತು ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಕಳುಹಿಸಲು ಮಾಲೀಕರು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ವೆಬ್ಪುಟ, HTML ಮಾತ್ರ</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ಬ್ಲೂಟೂತ್ ಲಾಗ್ಗಳನ್ನು<ph name="END_LINK" /> (Google ಆಂತರಿಕ) ಲಗತ್ತಿಸಿ</translation> <translation id="4801448226354548035">ಖಾತೆಗಳನ್ನು ಮರೆಮಾಡು</translation> @@ -3363,6 +3359,7 @@ <translation id="5649053991847567735">ಸ್ವಯಂಚಾಲಿತ ಡೌನ್ಲೋಡ್ಗಳು</translation> <translation id="5653154844073528838">ನೀವು <ph name="PRINTER_COUNT" /> ಪ್ರಿಂಟರ್ಗಳನ್ನು ಉಳಿಸಿದ್ದೀರಿ.</translation> <translation id="5656845498778518563">Google ಗೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ</translation> +<translation id="5657156137487675418">ಎಲ್ಲಾ ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="5657667036353380798">ಬಾಹ್ಯ ವಿಸ್ತರಣೆಯನ್ನು ಸ್ಥಾಪಿಸಲು <ph name="MINIMUM_CHROME_VERSION" /> ನ chrome ಆವೃತ್ತಿ ಅಥವಾ ಹೆಚ್ಚಿನದು ನಿಮಗೆ ಅಗತ್ಯವಿದೆ.</translation> <translation id="5658415415603568799">ಹೆಚ್ಚುವರಿ ಸುರಕ್ಷತೆಗಾಗಿ, 20 ಗಂಟೆಗಳ ನಂತರ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ ಎಂದು Smart Lock ನಿಮ್ಮನ್ನು ಕೇಳುತ್ತದೆ.</translation> <translation id="5659593005791499971">ಇಮೇಲ್</translation> @@ -3569,7 +3566,6 @@ <translation id="5941711191222866238">ಕುಗ್ಗಿಸು</translation> <translation id="5942964813783878922">ಈ ಅಪ್ಡೇಟ್ನ ನಂತರ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಂತರದ ಸಾಫ್ಟವೇರ್ ಮತ್ತು ಭದ್ರತೆ ಅಪ್ಡೇಟ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation> <translation id="5944869793365969636">QR ಕೋಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation> -<translation id="5945188205370098537">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಹಾಗೂ ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ ನಿಮ್ಮ Android ಅನುಭವವನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಿ. ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ನಿಮ್ಮ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಆಗಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ವರದಿ ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ಫೈಲ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="5955282598396714173">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅವಧಿ ಮುಗಿದಿದೆ. ಅದನ್ನು ಬದಲಾಯಿಸಲು ಸೈನ್ ಔಟ್ ಮಾಡಿ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಆಗಿರಿ.</translation> @@ -3753,6 +3749,7 @@ <translation id="6185132558746749656">ಸಾಧನದ ಸ್ಥಳ</translation> <translation id="6186394685773237175">ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ ಅಪಾಯಕ್ಕೀಡಾದ ಹಾಗೆ ಕಂಡುಬರುತ್ತಿಲ್ಲ</translation> <translation id="6195693561221576702">ಈ ಸಾಧನವನ್ನು ಆಫ್ಲೈನ್ ಡೆಮೊ ಮೋಡ್ನಲ್ಲಿ ಸೆಟಪ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> +<translation id="6196640612572343990">ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation> <translation id="6196854373336333322">ನಿಮ್ಮ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು "<ph name="EXTENSION_NAME" />" ವಿಸ್ತರಣೆಯು ನಿಯಂತ್ರಣಕ್ಕೆ ತೆಗೆದುಕೊಂಡಿದೆ. ಅಂದರೆ, ನೀವು ಆನ್ಲೈನ್ನಲ್ಲಿ ಮಾಡುವ ಯಾವುದೇ ಕಾರ್ಯವನ್ನು ಇದು ಬದಲಾಯಿಸಬಹುದು, ಒಳನುಸುಳಬಹುದು ಅಥವಾ ಕದ್ದಾಲಿಸಬಹುದು ಎಂದರ್ಥ. ಇದು ಹೇಗೆ ಸಂಭವಿಸಿದೆ ಎಂಬುದೇ ನಿಮಗೆ ಖಚಿತವಿಲ್ಲದಿದ್ದರೆ, ನಿಮಗೆ ಬಹುಶಃ ಇದು ಬೇಕಾಗಿಲ್ಲ.</translation> <translation id="6198102561359457428">ಸೈನ್ ಔಟ್ ಮಾಡಿ ನಂತರ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ...</translation> <translation id="6198252989419008588">PIN ಬದಲಾಯಿಸು</translation> @@ -4417,7 +4414,6 @@ <translation id="711902386174337313">ನಿಮ್ಮ ಸೈನ್ ಇನ್ ಮಾಡಿದ ಸಾಧನಗಳ ಪಟ್ಟಿಯನ್ನು ಓದಿರಿ</translation> <translation id="7120865473764644444">ಸಿಂಕ್ ಸರ್ವರ್ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಲಿಲ್ಲ. ಮರುಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="7121362699166175603">ವಿಳಾಸ ಪಟ್ಟಿಯ ಇತಿಹಾಸ ಮತ್ತು ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation> -<translation id="7121389946694989825">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ಡೆವೆಲಪರ್ ಮೋಡ್</translation> <translation id="7121728544325372695">ಸ್ಮಾರ್ಟ್ ಡ್ಯಾಶ್ಗಳು</translation> <translation id="7123360114020465152">ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ</translation> @@ -5196,7 +5192,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ಟ್ಯಾಬ್ ಅನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}one{ಟ್ಯಾಬ್ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}other{ಟ್ಯಾಬ್ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">ಪುಟ</translation> -<translation id="8180294223783876911">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ನಿಮ್ಮ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಆಗಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">ಗುರುತಿಸಿದ ಸ್ಥಳಗಳಲ್ಲಿನ ಚಿತ್ರಗಳು, ವಿಡಿಯೋ, ಮತ್ತು ಧ್ವನಿ ಫೈಲ್ಗಳನ್ನು "<ph name="EXTENSION" />" ಓದಬಹುದು ಮತ್ತು ಅಳಿಸಬಹುದು.</translation> <translation id="8181215761849004992">ಡೊಮೇನ್ ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಾಧನಗಳನ್ನು ಸೇರಿಸಲು ನೀವು ಸಾಕಷ್ಟು ಸವಲತ್ತುಗಳನ್ನು ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ನೋಡಲು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ.</translation> <translation id="8182105986296479640">ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ.</translation> @@ -5218,7 +5213,6 @@ <translation id="8203732864715032075">ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ ಮತ್ತು ಸಂದೇಶಗಳನ್ನು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳಲು ಈ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಪೂರ್ವನಿಯೋಜಿಸಲಾಗಿರುತ್ತದೆ.<ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಿ<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ನಿಮ್ಮ ಪೋಷಕರು "<ph name="APP_NAME" />" ಅನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ. ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುವುದಕ್ಕೆ ನಿಮ್ಮ ಪೋಷಕರ ಅನುಮತಿಯನ್ನು ಕೇಳಿ.</translation> <translation id="820568752112382238">ಹೆಚ್ಚು ಭೇಟಿ ನೀಡಿರುವ ಸೈಟ್ಗಳು</translation> -<translation id="8206581664590136590">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಹಾಗೂ ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಮಗುವಿನ Android ಅನುಭವವನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಿ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ಬ್ಲೂಸಿ</translation> <translation id="8206859287963243715">ಸೆಲ್ಯುಲಾರ್</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ಡೌನ್ಲೋಡ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ}one{ಡೌನ್ಲೋಡ್ಗಳು ಪ್ರಗತಿಯಲ್ಲಿವೆ}other{ಡೌನ್ಲೋಡ್ಗಳು ಪ್ರಗತಿಯಲ್ಲಿವೆ}}</translation> @@ -5760,7 +5754,6 @@ <translation id="8912362522468806198">Google ಖಾತೆ</translation> <translation id="8912793549644936705">ಎಳೆದಿರುವುದು</translation> <translation id="8912810933860534797">ಸ್ವಯಂ ಸ್ಕ್ಯಾನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> -<translation id="891365694296252935">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಮಾಲೀಕರೇ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">ಸಲಹೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="8916476537757519021">ಅದೃಶ್ಯ ಉಪಫ್ರೇಮ್: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...</translation> @@ -5897,7 +5890,6 @@ <translation id="9101691533782776290">ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭಿಸು</translation> <translation id="9102610709270966160">ವಿಸ್ತರಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="9103868373786083162">ಇತಿಹಾಸವನ್ನು ವೀಕ್ಷಿಸಲು ಹಿಂದೆ, ಸಂದರ್ಭದ ಮೆನುಗೆ ಹೋಗಲು ಒತ್ತಿ</translation> -<translation id="9104396740804929809">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಹಾಗೂ ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ ನಿಮ್ಮ Android ಅನುಭವವನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಿ. ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆಗೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್ಗಳು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಮಾಲೀಕರೇ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ಈ ಸಾಧನದ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಮತ್ತು ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಕಳುಹಿಸಲು ಮಾಲೀಕರು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ನಿಮ್ಮ ಹೆಚ್ಚುವರಿ ವೆಬ್ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಆಗಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ಸ್ಥಳಾವಕಾಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು, ಸಾಧನ ಸಂಗ್ರಹಣೆಯಿಂದ ಫೈಲ್ಗಳನ್ನು ಅಳಿಸಿ.</translation> <translation id="9109283579179481106">ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಿಸಿ</translation> <translation id="9111102763498581341">ಅನ್ಲಾಕ್</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index b38973a0..7ccffc7d 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">호스팅된 앱 데이터</translation> <translation id="1776712937009046120">사용자 추가</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />에서 관리하는 기기입니다. - '다음'을 클릭하여 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 계정에 로그인하세요.</translation> <translation id="1779652936965200207">다음 패스키를 '<ph name="DEVICE_NAME" />'에 입력하세요.</translation> <translation id="177989070088644880">앱(<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">그룹 닫기</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">프린터를 나열하는 데 문제가 발생했습니다. <ph name="CLOUD_PRINT_NAME" />에 성공적으로 등록되지 못한 프린터가 있을 수 있습니다.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />주소 표시줄<ph name="END_LINK" />에서 사용되는 검색엔진</translation> <translation id="2204034823255629767">입력한 항목 조회 및 변경</translation> -<translation id="220792432208469595">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 이 설정은 소유자가 지정합니다. 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="220858061631308971">'<ph name="DEVICE_NAME" />'의 PIN 코드를 입력하세요:</translation> <translation id="2212565012507486665">쿠키 허용</translation> <translation id="2213140827792212876">공유 폴더 삭제</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">대체 브라우저를 열 수 없습니다.</translation> <translation id="2804667941345577550">열려 있는 탭을 포함하여 이 사이트에서 로그아웃됩니다.</translation> <translation id="2804680522274557040">카메라 사용 중지됨</translation> -<translation id="2805539617243680210">설정 완료</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">앱</translation> <translation id="2805770823691782631">추가 세부정보</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">찍은 스크린샷</translation> <translation id="3742666961763734085">해당 이름의 조직 단위를 찾을 수 없습니다. 다시 시도해 보세요.</translation> <translation id="3744111561329211289">백그라운드 동기화</translation> +<translation id="3747077776423672805">앱을 삭제하려면 설정 > Google Play 스토어 > Android 환경설정 관리 > 앱 또는 애플리케이션 관리자로 이동합니다. 그런 다음 제거하려는 앱을 탭합니다(앱을 찾으려면 오른쪽이나 왼쪽으로 스와이프해야 할 수 있음). 그런 다음 제거 또는 사용 중지를 탭합니다.</translation> <translation id="3748026146096797577">연결되어 있지 않음</translation> <translation id="3752582316358263300">확인...</translation> <translation id="3752673729237782832">내 기기</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">이 웹사이트에 등록되지 않은 보안 키를 사용하고 있습니다.</translation> <translation id="4788092183367008521">네트워크 연결을 확인한 다음 다시 시도하세요.</translation> <translation id="4792711294155034829">문제 신고(&R)...</translation> -<translation id="4795022432560487924">사용 및 진단 데이터를 보냅니다. 진단, 기기, 앱 사용 데이터를 Google에 자동으로 보내 자녀의 Android 사용 환경 개선에 참여합니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 이 설정은 소유자가 지정합니다. 소유자가 이 기기의 진단 및 사용 데이터를 Google에 전송할지 선택할 수 있습니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="479536056609751218">웹페이지, HTML만</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />블루투스 로그<ph name="END_LINK" /> 첨부(Google 사내용)</translation> <translation id="4801448226354548035">계정 숨기기</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">자동 다운로드</translation> <translation id="5653154844073528838">저장된 프린터가 <ph name="PRINTER_COUNT" />대 있습니다.</translation> <translation id="5656845498778518563">Google에 의견 보내기</translation> +<translation id="5657156137487675418">모든 쿠키 허용</translation> <translation id="5657667036353380798">외부 확장 프로그램을 사용하려면 Chrome 버전 <ph name="MINIMUM_CHROME_VERSION" /> 이상이 설치되어 있어야 합니다.</translation> <translation id="5658415415603568799">보안을 강화하기 위해 Smart Lock에서 20시간 후에 비밀번호를 입력하라는 메시지를 표시합니다.</translation> <translation id="5659593005791499971">이메일</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">최소화</translation> <translation id="5942964813783878922">업데이트 후 <ph name="DEVICE_TYPE" /> 기기가 다시 시작됩니다. 향후 소프트웨어 및 보안 업데이트는 자동 설치됩니다.</translation> <translation id="5944869793365969636">QR 코드 스캔</translation> -<translation id="5945188205370098537">사용 및 진단 데이터를 보냅니다. 진단, 기기, 앱 사용 데이터를 Google에 자동으로 보내 Android 사용 환경 개선에 참여합니다. 이 데이터는 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">보고서 ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">파일을 파싱할 수 없습니다.</translation> <translation id="5955282598396714173">비밀번호가 만료되었습니다. 로그아웃한 다음 다시 로그인하여 비밀번호를 변경해 주세요.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">기기 위치</translation> <translation id="6186394685773237175">유출된 비밀번호가 없습니다.</translation> <translation id="6195693561221576702">이 기기는 오프라인 데모 모드에서 설정할 수 없습니다.</translation> +<translation id="6196640612572343990">타사 쿠키 차단</translation> <translation id="6196854373336333322">'<ph name="EXTENSION_NAME" />' 확장 프로그램이 프록시 설정을 제어할 수 있게 되었으며, 따라서 사용자가 온라인에서 수행하는 모든 작업을 변경, 중단하거나 엿볼 수 있게 되었습니다. 이와 같이 변경된 이유를 잘 모른다면 이 설정을 사용하지 않는 것이 좋습니다.</translation> <translation id="6198102561359457428">로그아웃한 후 다시 로그인...</translation> <translation id="6198252989419008588">PIN 변경</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">로그인한 기기 목록 조회</translation> <translation id="7120865473764644444">동기화 서버에 연결하지 못했습니다. 다시 시도 중...</translation> <translation id="7121362699166175603">검색주소창에 저장된 방문 기록과 자동 완성 내역을 지웁니다. Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 사용 기록이 다른 형식으로 남아 있을 수도 있습니다.</translation> -<translation id="7121389946694989825">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">개발자 모드</translation> <translation id="7121728544325372695">스마트 대시</translation> <translation id="7123360114020465152">프린터가 더 이상 지원되지 않습니다.</translation> @@ -5195,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{탭을 새 창으로 이동}other{탭을 새 창으로 이동}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">페이지</translation> -<translation id="8180294223783876911">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">'<ph name="EXTENSION" />'은(는) 선택된 위치에서 이미지, 동영상 및 사운드 파일을 읽고 삭제할 수 있습니다.</translation> <translation id="8181215761849004992">도메인에 가입할 수 없습니다. 기기를 추가하기에 충분한 권한이 계정에 있는지 확인하세요.</translation> <translation id="8182105986296479640">애플리케이션이 응답하지 않음</translation> @@ -5217,7 +5212,6 @@ <translation id="8203732864715032075">알림을 보내고 메시지에서 이 컴퓨터를 기억하도록 기본값으로 설정합니다. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation> <translation id="8204129288640092672">부모님이 ‘<ph name="APP_NAME" />’ 앱을 차단했습니다. 이 앱을 사용하려면 부모님에게 권한을 요청하세요.</translation> <translation id="820568752112382238">자주 방문한 사이트</translation> -<translation id="8206581664590136590">사용 및 진단 데이터를 보냅니다. 진단, 기기, 앱 사용 데이터를 Google에 자동으로 보내 자녀의 Android 사용 환경 개선에 참여합니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">음악</translation> <translation id="8206859287963243715">휴대전화</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{다운로드 진행 중}other{다운로드 진행 중}}</translation> @@ -5757,7 +5751,6 @@ <translation id="8912362522468806198">Google 계정</translation> <translation id="8912793549644936705">늘이기</translation> <translation id="8912810933860534797">자동 스캔 사용</translation> -<translation id="891365694296252935">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 이 설정은 소유자가 지정합니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">추천 단어 로드 중...</translation> <translation id="8916476537757519021">시크릿 모드 서브프레임: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">보안 키 인증 중...</translation> @@ -5894,7 +5887,6 @@ <translation id="9101691533782776290">앱 실행</translation> <translation id="9102610709270966160">확장 프로그램 사용</translation> <translation id="9103868373786083162">돌아가려면 뒤로 버튼을 누르고, 방문 기록을 보려면 컨텍스트 메뉴 키를 누릅니다.</translation> -<translation id="9104396740804929809">사용 및 진단 데이터를 보냅니다. 진단, 기기, 앱 사용 데이터를 Google에 자동으로 보내 Android 사용 환경 개선에 참여합니다. 이 데이터는 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 이 설정은 소유자가 지정합니다. 소유자가 이 기기의 진단 및 사용 데이터를 Google에 전송할지 선택할 수 있습니다. 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">저장 공간을 확보하려면 기기 저장소에서 파일을 삭제하세요.</translation> <translation id="9109283579179481106">모바일 네트워크에 연결</translation> <translation id="9111102763498581341">잠금 해제</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index a6faa2d1..c4ba4d27 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Хост колдонмосунун дайындары</translation> <translation id="1776712937009046120">Колдонуучу кошуу</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Бул түзмөктү <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> башкарат. - <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> аккаунтуңузга кирүү үчүн "Кийинки" дегенди басыңыз.</translation> <translation id="1779652936965200207">Бул купуя ачкычты "<ph name="DEVICE_NAME" />" түзмөгүнө киргизиңиз:</translation> <translation id="177989070088644880">Колдонмо (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Топту жабуу</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Принтерлерди тизмелөөдө көйгөй келип чыкты. Айрым принтерлериңиз буга <ph name="CLOUD_PRINT_NAME" /> катталбай калган окшойт.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Дарек тилкесинде<ph name="END_LINK" /> колдонула турган издөө каражаты</translation> <translation id="2204034823255629767">Терилген нерсенин баарын окуп жана өзгөртүңүз</translation> -<translation id="220792432208469595">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Бул жөндөөнү түзмөктүн ээси иштетет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттериңиздин таржымалынын жөндөөлөрү күйгүзүлгөн болсо, бул дайындар Google аккаунтуңузга сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Бул ПИН кодду төмөнкүгө киргизиңиз: "<ph name="DEVICE_NAME" />"</translation> <translation id="2212565012507486665">Cookies файлдарына уруксат берүү</translation> <translation id="2213140827792212876">Бөлүшүлгөн папканы алып салуу</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Кошумча серепчи ачылган жок</translation> <translation id="2804667941345577550">Сиз бул сайттан, анын ичинде ачылып турган өтмөктөрдөн чыгарыласыз.</translation> <translation id="2804680522274557040">Камера өчүк</translation> -<translation id="2805539617243680210">Баары даяр!</translation> <translation id="2805646850212350655">Microsoft Шифрлөө файл тутуму</translation> <translation id="2805756323405976993">Колдонмолор</translation> <translation id="2805770823691782631">Кошумча маалымат</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Скриншот тартылды</translation> <translation id="3742666961763734085">Мындай аталыштагы уюмдук бөлүм табылбай жатат. Кайталап көрүңүз.</translation> <translation id="3744111561329211289">Фонду шайкештирүү</translation> +<translation id="3747077776423672805">Колдонмолорду алып салуу үчүн, Жөндөөлөр > Google Play Store > Android түзмөгүнүн параметрлерин башкаруу > Колдонмолор же Колдонмолорду башкаргычка өтүңүз. Андан соң, чыгарып салгыңыз келген колдонмону таптап (колдонмону табуу үчүн оңго же солго серпүүгө туура келиши мүмкүн), анан "Чыгарып салуу" же "Өчүрүү" баскычын басыңыз.</translation> <translation id="3748026146096797577">Интернет жок</translation> <translation id="3752582316358263300">OK…</translation> <translation id="3752673729237782832">Менин түзмөктөрүм</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Бул вебсайтта катталбаган коопсуздук ачкычын колдонуп жатасыз</translation> <translation id="4788092183367008521">Тармактык туташууңузду текшерип, дагы бир жолу аракет кылыңыз.</translation> <translation id="4792711294155034829">Маселе жөнүндө &кабар берүү…</translation> -<translation id="4795022432560487924">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Балаңыздын Android'ди колдонуу тажрыйбасын жакшыртууга көмөктөшүп, мүчүлүштүктөрдү издөө жана түзмөк менен колдонмолорду пайдалануу дайындарын автоматтык түрдө Google'га жөнөтүүгө уруксат бериңиз. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Бул жөндөөнү түзмөктүн ээси иштетет. Түзмөктүн ээси бул түзмөктөн мүчүлүштүктөрдү аныктоо жана колдонуу дайындарын Google'га жөнөтүү мүмкүнчүлүгүн иштетиши мүмкүн. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-баракча, HTML гана</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth журналдарын<ph name="END_LINK" /> тиркөө (Google'да ички колдонуу үчүн)</translation> <translation id="4801448226354548035">Аккаунттарды жашыруу</translation> @@ -3567,7 +3563,6 @@ <translation id="5941711191222866238">Кичирейтүү</translation> <translation id="5942964813783878922">Жаңыртуудан кийин <ph name="DEVICE_TYPE" /> түзмөгүңүз өчүрүлүп, кайра күйөт. Программанын жана коопсуздук функцияларынын жаңы версиялары автоматтык түрдө орнотулат.</translation> <translation id="5944869793365969636">QR кодун скандоо</translation> -<translation id="5945188205370098537">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Google'га мүчүлүштүктөрдү аныктоо жана түзмөк менен колдонмолорду пайдалануу дайындарын автоматтык түрдө жөнөтүп, Android'де иштөө тажрыйбаңызды жакшыртууга жардам бериңиз. Бул маалымат тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттериңиздин таржымалынын жөндөөлөрү күйгүзүлгөн болсо, бул дайындар Google аккаунтуңузга сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Кабарлоо ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Файл талданбай жатат</translation> <translation id="5955282598396714173">Сырсөзүңүздүн мөөнөтү бүтүп калды. Аны өзгөртүү үчүн чыгып, кайра кириңиз.</translation> @@ -3751,6 +3746,7 @@ <translation id="6185132558746749656">Түзмөктүн жайгашкан жери</translation> <translation id="6186394685773237175">Уурдалган сырсөздөр аныкталган жок</translation> <translation id="6195693561221576702">Түзмөктү оффлайн демо режиминде жөндөөгө болбойт.</translation> +<translation id="6196640612572343990">Үчүнчү жактын кукилери бөгөттөлсүн</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" кеңейтүүсү прокси жөндөөлөрүңүздү көзөмөлдөйт, демек, ал аны өзгөртүп, бузуп же онлайн абалындагы аракеттериңизге көз салып тура алат. Бул эмне болгон өзгөрүү экендигин түшүнбөсөңүз, анын сизге кереги жок болушу мүмкүн.</translation> <translation id="6198102561359457428">Чыгып кайра кириңиз…</translation> <translation id="6198252989419008588">PIN'ди өзгөртүү</translation> @@ -4414,7 +4410,6 @@ <translation id="711902386174337313">Кирген түзмөктөрүңүздүн тизмесин окуңуз</translation> <translation id="7120865473764644444">Шайкештирүү серверине туташпай койду. Кайра аракет кылынууда…</translation> <translation id="7121362699166175603">Таржымал жана дарек тилкесиндеги автоматтык түрдө бүтүрүлгөн сөздөр тазаланат. Google аккаунтуңуздун серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation> -<translation id="7121389946694989825">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Иштеп чыгуучу режими</translation> <translation id="7121728544325372695">Акылдуу тирелер</translation> <translation id="7123360114020465152">Мындан ары колдоого алынбайт</translation> @@ -5196,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Өтмөктү жаңы терезеге жылдыруу}other{Өтмөктөрдү жаңы терезеге жылдыруу}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">барак</translation> -<translation id="8180294223783876911">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттериңиздин таржымалынын жөндөөлөрү күйгүзүлгөн болсо, бул дайындар Google аккаунтуңузга сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" белгиленген жерлердеги сүрөттөрдү, видеону жана үн файлдарын окуп жана жок кыла алат.</translation> <translation id="8181215761849004992">Доменге кошулбай жатат. Аккаунтуңуздун түзмөктөрдү кошууга тийиштүү уруксаттары бар экенин текшериңиз.</translation> <translation id="8182105986296479640">Колдонмо жооп бербей жатат.</translation> @@ -5218,7 +5212,6 @@ <translation id="8203732864715032075">Телефондогу билдирүүлөр тууралуу билдирмелерди көрсөтүү. <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" колдонмосун ата-энең бөгөттөп койгон. Ата-энеңден бул колдонмону иштетүүгө уруксат сураңыз.</translation> <translation id="820568752112382238">Эң көп кирген сайттар</translation> -<translation id="8206581664590136590">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Балаңыздын Android'ди колдонуу тажрыйбасын жакшыртууга көмөктөшүп, мүчүлүштүктөрдү издөө жана түзмөк менен колдонмолорду пайдалануу дайындарын автоматтык түрдө Google'га жөнөтүүгө уруксат бериңиз. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блюз</translation> <translation id="8206859287963243715">Уюктук</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Жүктөп алуу аткарылууда}other{Жүктөп алуулар аткарылууда}}</translation> @@ -5758,7 +5751,6 @@ <translation id="8912362522468806198">Google аккаунту</translation> <translation id="8912793549644936705">Чоюу</translation> <translation id="8912810933860534797">Авто-скандоону иштетүү</translation> -<translation id="891365694296252935">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Бул жөндөөнү түзмөктүн ээси иштетет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Сунуш жүктөлүүдө</translation> <translation id="8916476537757519021">Жашыруун көмөкчү алкак: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Коопсуздук ачкычы текшерилүүдө…</translation> @@ -5895,7 +5887,6 @@ <translation id="9101691533782776290">Колдонмону ишке киргизүү</translation> <translation id="9102610709270966160">Кеңейтүүнү иштетүү</translation> <translation id="9103868373786083162">Артка кайрылуу үчүн басыңыз, таржымалды көрүү үчүн мазмундук меню</translation> -<translation id="9104396740804929809">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Google'га мүчүлүштүктөрдү аныктоо жана түзмөк менен колдонмолорду пайдалануу дайындарын автоматтык түрдө жөнөтүп, Android'де иштөө тажрыйбаңызды жакшыртууга жардам бериңиз. Бул маалымат тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Бул жөндөөнү түзмөктүн ээси иштетет. Түзмөктүн ээси бул түзмөктөн мүчүлүштүктөрдү аныктоо жана колдонуу дайындарын Google'га жөнөтүү мүмкүнчүлүгүн иштетиши мүмкүн. Эгер кошумча Колдонмолор жана Интернеттеги аракеттериңиздин таржымалынын жөндөөлөрү күйгүзүлгөн болсо, бул дайындар Google аккаунтуңузга сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Орун бошотуу үчүн түзмөктүн сактагычынан файлдарды жок кылыңыз.</translation> <translation id="9109283579179481106">Мобилдик тармакка туташуу</translation> <translation id="9111102763498581341">Кулпуну ачуу</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index a59c2fb..734c6be 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -571,8 +571,6 @@ <translation id="177336675152937177">ຂໍ້ມູນແອັບທີ່ເປັນແມ່ຂ່າຍ</translation> <translation id="1776712937009046120">ເພີ່ມຜູ້ໃຊ້</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ອຸປະກອນນີ້ຖືກຈັດການໂດຍ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - ກະລຸນາຄລິກ "ຕໍ່ໄປ" ເພື່ອສືບຕໍ່ການເຂົ້າສູ່ລະບົບບັນຊີ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ຂອງທ່ານ.</translation> <translation id="1779652936965200207">ກະລຸນາໃສ່ລະຫັດຜ່ານນີ້ຢູ່ໃນ "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">ແອັບ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ປິດກຸ່ມ</translation> @@ -885,7 +883,6 @@ <translation id="2202898655984161076">ມີບັນຫາການເຮັດລາຍຊື່ເຄື່ອງພິມ. ບາງເຄື່ອງພິມອາດຈະບໍ່ໄດ້ລົງທະບຽນຢ່າງສໍາເລັດກັບ <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">ໂປຣແກຣມຊອກຫາທີ່ໃຊ້ໃນ <ph name="BEGIN_LINK" />ແຖບທີ່ຢູ່<ph name="END_LINK" /></translation> <translation id="2204034823255629767">ອ່ານ ແລະປ່ຽນອັນໃດໜຶ່ງທີ່ທ່ານພິມ</translation> -<translation id="220792432208469595">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ອຸປະກອນນີ້ກຳລັງສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດໃນຂະນະນີ້. ນີ້ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ເຈົ້າຂອງບັງຄັບໃຊ້ການຕັ້ງຄ່ານີ້. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="220858061631308971">ກະລຸນາໃສ່ PIN ນີ້ຢູ່ໃນ "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">ອະນຸຍາດຄຸກກີ້</translation> <translation id="2213140827792212876">ລຶບການແບ່ງປັນອອກ</translation> @@ -1341,7 +1338,6 @@ <translation id="2804043232879091219">ບໍ່ສາມາດເປີດໂປຣແກຣມທ່ອງເວັບສຳຮອງໄດ້</translation> <translation id="2804667941345577550">ທ່ານຈະຖືກນຳອອກຈາກລະບົບເວັບໄຊນີ້, ຮວມທັງໃນແຖບທີ່ເປີດຢູ່</translation> <translation id="2804680522274557040">ປິດກ້ອງຖ່າຍຮູບແລ້ວ</translation> -<translation id="2805539617243680210">ທ່ານພ້ອມໝົດແລ້ວ!</translation> <translation id="2805646850212350655">ລະບົບໄຟລ໌ການໃສ່ລະຫັດ Microsoft</translation> <translation id="2805756323405976993">ແອັບ</translation> <translation id="2805770823691782631">ລາຍລະອຽດເພີ່ມເຕີມ</translation> @@ -2019,6 +2015,7 @@ <translation id="3742055079367172538">ຖ່າຍຮູບໜ້າຈໍແລ້ວ</translation> <translation id="3742666961763734085">ບໍ່ສາມາດຊອກເຫັນໜ່ວຍງານທີ່ມີຊື່ນັ້ນ. ກະລຸນາລອງໃໝ່.</translation> <translation id="3744111561329211289">ການຊິ້ງຂໍ້ມູນໃນພື້ນຫຼັງ</translation> +<translation id="3747077776423672805">ເພື່ອລຶບແອັບອອກ, ກະລຸນາໄປທີ່ ການຕັ້ງຄ່າ > Google Play Store > ຈັດການການຕັ້ງຄ່າ Android > ແອັບ ຫຼື ຕົວຈັດການແອັບພລິເຄຊັນ. ແລ້ວແຕະໃສ່ທີ່ແອັບທີ່ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງ (ທ່ານອາດຈະຈຳເປັນຕ້ອງປັດຂວາ ຫຼື ຊ້າຍເພື່ອຊອກຫາແອັບ). ຈາກນັ້ນແຕະຖອນການຕິດຕັ້ງ ຫຼື ປິດນຳໃຊ້.</translation> <translation id="3748026146096797577">ບໍ່ໄດ້ເຊື່ອມຕໍ່</translation> <translation id="3752582316358263300">ຕົກລົງ...</translation> <translation id="3752673729237782832">ອຸປະກອນຂອງຂ້ອຍ</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">ທ່ານກຳລັງໃຊ້ກະແຈຄວາມປອດໄພທີ່ບໍ່ໄດ້ລົງທະບຽນນຳເວັບໄຊນີ້</translation> <translation id="4788092183367008521">ກະລຸນາກວດເບິ່ງການເຊື່ອມຕໍ່ເຄືອຂ່າຍຂອງທ່ານ ແລ້ວລອງອີກຄັ້ງ.</translation> <translation id="4792711294155034829">ລາຍງານບັນຫາ...</translation> -<translation id="4795022432560487924">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ຊ່ວຍປັບປຸງປະສົບການ Android ຂອງລູກທ່ານໂດຍການສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດ. ຂໍ້ມູນນີ້ຈະບໍ່ຖືກໃຊ້ເພື່ອລະບຸຕົວລູກຂອງທ່ານ ແລະ ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ເຈົ້າຂອງບັງຄັບໃຊ້ການຕັ້ງຄ່ານີ້. ເຈົ້າຂອງອາດຈະເລືອກສົ່ງຂໍ້ມູນການວິເຄາະ ແລະ ການໃຊ້ສຳລັບອຸປະກອນນີ້ໃຫ້ Google ກໍໄດ້. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມສໍາລັບລູກຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງເຂົາເຈົ້າ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ໜ້າເວັບ, HTML ເທົ່ານັ້ນ</translation> <translation id="4798236378408895261">ແນບ <ph name="BEGIN_LINK" />ບັນທຶກ Bluetooth<ph name="END_LINK" /> ນຳ (ໃຊ້ພາຍໃນ Google)</translation> <translation id="4801448226354548035">ເຊື່ອງບັນຊີ</translation> @@ -3565,7 +3561,6 @@ <translation id="5941711191222866238">ຫຍໍ້ລົງ</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> ຂອງທ່ານຈະຣີສະຕາດຫຼັງຈາກການອັບເດດນີ້. ການອັບເດດຊອບແວ ແລະ ຄວາມປອດໄພໃນອະນາຄົດຈະຕິດຕັ້ງໂດຍອັດຕະໂນມັດ.</translation> <translation id="5944869793365969636">ສະແກນລະຫັດ QR</translation> -<translation id="5945188205370098537">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ຊ່ວຍປັບປຸງປະສົບການ Android ຂອງທ່ານໂດຍການສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດ. ນີ້ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID ບົດລາຍງານ <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ບໍ່ສາມາດແຍກວິເຄາະໄຟລ໌ໄດ້</translation> <translation id="5955282598396714173">ລະຫັດຜ່ານຂອງທ່ານໝົດອາຍຸແລ້ວ. ກະລຸນາອອກຈາກລະບົບ ແລ້ວເຂົ້າສູ່ລະບົບຄືນໃໝ່ເພື່ອປ່ຽນມັນ.</translation> @@ -3749,6 +3744,7 @@ <translation id="6185132558746749656">ທີ່ຕັ້ງອຸປະກອນ</translation> <translation id="6186394685773237175">ບໍ່ພົບລະຫັດຜ່ານທີ່ຖືກລະເມີດ</translation> <translation id="6195693561221576702">ບໍ່ສາມາດຕັ້ງຄ່າອຸປະກອນນີ້ໃນໂໝດສາທິດອອບລາຍໄດ້.</translation> +<translation id="6196640612572343990">ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມ</translation> <translation id="6196854373336333322">ສ່ວນຂະຫຍາຍ "<ph name="EXTENSION_NAME" />" ໄດ້ດໍາເນີນການຄວບຄຸມການຕັ້ງຄ່າພຣັອກຊີຂອງທ່ານ, ເຊິ່ງໝາຍຄວາມວ່າ ມັນສາມາດປ່ຽນແປງ, ທໍາລາຍ, ຫຼືລັກຟັງອັນໃດອັນໜຶ່ງທີ່ທ່ານເຮັດອອນລາຍນ໌ໄດ້. ຖ້າທ່ານບໍ່ແນ່ໃຈວ່າ ເປັນຫຍັງການປ່ຽນແປງນີ້ຈິ່ງເກີດຂຶ້ນ, ທ່ານອາດຈະບໍ່ຕ້ອງການມັນ.</translation> <translation id="6198102561359457428">ອອກຈາກລະບົບ ຈາກນັ້ນລົງຊື່ເຂົ້າໃຊ້ອີກ...</translation> <translation id="6198252989419008588">ປ່ຽນ PIN</translation> @@ -4412,7 +4408,6 @@ <translation id="711902386174337313">ອ່ານລາຍຊື່ຂອງອຸປະກອນທີ່ໄດ້ລົງຊື່ເຂົ້າໃຊ້ຂອງທ່ານ</translation> <translation id="7120865473764644444">ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຊີບເວີການຊິ້ງຂໍ້ມູນໄດ້. ກຳລັງລອງໃໝ່...</translation> <translation id="7121362699166175603">ລຶບລ້າງປະຫວັດ ແລະ ການປະກອບຂໍ້ມູນອັດຕະໂນມັດໃນແຖບທີ່ຢູ່. ບັນຊີ Google ຂອງທ່ານອາດຈະມີຮູບແບບອື່ນຂອງປະຫວັດການທ່ອງເວັບຢູ່ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ອຸປະກອນນີ້ກຳລັງສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດໃນຂະນະນີ້. ຂໍ້ມູນນີ້ຈະບໍ່ຖືກໃຊ້ເພື່ອລະບຸຕົວລູກຂອງທ່ານ ແລະ ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມສໍາລັບລູກຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງເຂົາເຈົ້າ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ໂໝດຜູ້ພັດທະນາ</translation> <translation id="7121728544325372695">ເຄື່ອງໝາຍຂີດກາງອັດສະລິຍະ</translation> <translation id="7123360114020465152">ບໍ່ຮອງຮັບອີກຕໍ່ໄປ</translation> @@ -5193,7 +5188,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}other{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}}</translation> <translation id="8179976553408161302">ປ້ອນເຂົ້າ</translation> <translation id="8180239481735238521">ຫນ້າ</translation> -<translation id="8180294223783876911">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ອຸປະກອນນີ້ກຳລັງສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດໃນຂະນະນີ້. ນີ້ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" ສາມາດອ່ານ ແລະລຶບໄຟລ໌ຮູບ, ວິດີໂອ, ແລະສຽງຢູ່ໃນຢູ່ໃນທີ່ຕັ້ງທີ່ໝາຍຕິກແລ້ວໄດ້.</translation> <translation id="8181215761849004992">ບໍ່ສາມາດເຂົ້າຮ່ວມໂດເມນໄດ້. ກະລຸນາກວດບັນຊີຂອງທ່ານເພື່ອເບິ່ງວ່າທ່ານມີສິດພຽງພໍໃນການເພີ່ມອຸປະກອນຫຼືບໍ່.</translation> <translation id="8182105986296479640">ແອັບພລິເຄຊັນບໍ່ຕອບສະໜອງ.</translation> @@ -5215,7 +5209,6 @@ <translation id="8203732864715032075">ສົ່ງການແຈ້ງເຕືອນໃຫ້ທ່ານ ແລະ ເຮັດໃຫ້ການຈື່ຄອມພິວເຕີນີ້ສຳລັບຂໍ້ຄວາມເປັນຄ່າເລີ່ມຕົ້ນ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ພໍ່ແມ່ຂອງທ່ານບລັອກ "<ph name="APP_NAME" />" ແລ້ວ. ຂໍອະນຸຍາດນຳພໍ່ແມ່ຂອງທ່ານເພື່ອໃຊ້ແອັບນີ້.</translation> <translation id="820568752112382238">ເວັບໄຊທີ່ເຂົ້າເບິ່ງຫຼາຍທີ່ສຸດ</translation> -<translation id="8206581664590136590">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ຊ່ວຍປັບປຸງປະສົບການ Android ຂອງລູກທ່ານໂດຍການສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດ. ຂໍ້ມູນນີ້ຈະບໍ່ຖືກໃຊ້ເພື່ອລະບຸຕົວລູກຂອງທ່ານ ແລະ ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມສໍາລັບລູກຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງເຂົາເຈົ້າ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ບລູຊີ</translation> <translation id="8206859287963243715">ເຊວລູລາ</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ການດາວໂຫຼດພວມດຳເນີນຢູ່}other{ການດາວໂຫຼດພວມດຳເນີນຢູ່}}</translation> @@ -5755,7 +5748,6 @@ <translation id="8912362522468806198">ບັນຊີ Google</translation> <translation id="8912793549644936705">ຢືດອອກ</translation> <translation id="8912810933860534797">ເປີດນຳໃຊ້ການສະແກນອັດຕະໂນມັດ</translation> -<translation id="891365694296252935">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ອຸປະກອນນີ້ກຳລັງສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດໃນຂະນະນີ້. ຂໍ້ມູນນີ້ຈະບໍ່ຖືກໃຊ້ເພື່ອລະບຸຕົວລູກຂອງທ່ານ ແລະ ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ເຈົ້າຂອງບັງຄັບໃຊ້ການຕັ້ງຄ່ານີ້. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມສໍາລັບລູກຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງເຂົາເຈົ້າ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">ກໍາລັງໂຫຼດຄໍາແນະນໍາ</translation> <translation id="8916476537757519021">ຂອບຍ່ອຍທີ່ບໍ່ເຜີຍຕົນຕົວ: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">ກຳລັງຢັ້ງຢືນກະແຈຄວາມປອດໄພຂອງທ່ານ...</translation> @@ -5892,7 +5884,6 @@ <translation id="9101691533782776290">ເປິດແອັບຯ</translation> <translation id="9102610709270966160">ເປີດນຳໃຊ້ນສ່ວນຂະຫຍາຍ</translation> <translation id="9103868373786083162">ກົດເພື່ອກັບຄືນ, ເມນູເນື້ອໃນເພື່ອເບິ່ງປະຫວັດ</translation> -<translation id="9104396740804929809">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ຊ່ວຍປັບປຸງປະສົບການ Android ຂອງທ່ານໂດຍການສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດ. ນີ້ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ເຈົ້າຂອງບັງຄັບໃຊ້ການຕັ້ງຄ່ານີ້. ເຈົ້າຂອງອາດຈະເລືອກສົ່ງຂໍ້ມູນການວິເຄາະ ແລະ ການໃຊ້ສຳລັບອຸປະກອນນີ້ໃຫ້ Google ກໍໄດ້. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງທ່ານ. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ເພື່ອຂະຫຍາຍພື້ນທີ່ຫວ່າງ, ໃຫ້ລຶບໄຟລ໌ຕ່າງໆຈາກບ່ອນເກັບຂໍ້ມູນຂອງອຸປະກອນ.</translation> <translation id="9109283579179481106">ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍມືຖື</translation> <translation id="9111102763498581341">ປົດລັອກ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 441b1cff..88e92ab 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Priglobti programų duomenys</translation> <translation id="1776712937009046120">Pridėti naudotoją</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Šį įrenginį tvarko domenas <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Spustelėkite „Toliau“, kad tęstumėte prisijungimą prie <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> paskyros.</translation> <translation id="1779652936965200207">„<ph name="DEVICE_NAME" />“ įveskite šį prieigos kodą:</translation> <translation id="177989070088644880">Programa („<ph name="ANDROID_PACKAGE_NAME" />“)</translation> <translation id="1780152987505130652">Uždaryti grupę</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Sudarant spausdintuvų sąrašą iškilo problema. Kai kurie spausdintuvai galėjo nebūti sėkmingai užregistruoti „<ph name="CLOUD_PRINT_NAME" />“.</translation> <translation id="2203682048752833055">Paieškos variklis, naudojamas <ph name="BEGIN_LINK" />adreso juostoje<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Skaityti ir keisti viską, ką įvedate</translation> -<translation id="220792432208469595">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Šį nustatymą taiko savininkas. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas, šie duomenys gali būti išsaugoti „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Įveskite šį PIN kodą „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Leisti slapukus</translation> <translation id="2213140827792212876">Pašalinti bendrinimą</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nepavyko atidaryti alternatyvios naršyklės</translation> <translation id="2804667941345577550">Būsite atjungti nuo šios svetainės, įskaitant atidarytus skirtukus</translation> <translation id="2804680522274557040">Fotoaparatas išjungtas</translation> -<translation id="2805539617243680210">Viskas nustatyta!</translation> <translation id="2805646850212350655">„Microsoft“ koduojamųjų failų sistema</translation> <translation id="2805756323405976993">Taikomosios programos</translation> <translation id="2805770823691782631">Papildoma informacija</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Ekrano kopija padaryta</translation> <translation id="3742666961763734085">Nepavyko rasti organizacinio vieneto tokiu pavadinimu. Bandykite dar kartą.</translation> <translation id="3744111561329211289">Fono sinchronizavimas</translation> +<translation id="3747077776423672805">Jei norite pašalinti programas, eikite į skiltį „Nustatymai“ > „Google Play“ parduotuvė“ > „Tvarkyti „Android“ nuostatas“ > „Programos“ arba „Programų tvarkytuvė“. Tada palieskite programą, kurią norite pašalinti (galbūt reikės perbraukti į dešinę arba į kairę, kad rastumėte programą). Tada palieskite „Pašalinti“ arba „Išjungti“.</translation> <translation id="3748026146096797577">Neprisijungta</translation> <translation id="3752582316358263300">Gerai...</translation> <translation id="3752673729237782832">Mano įrenginiai</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Naudojate saugos raktą, kuris nėra užregistruotas šioje svetainėje</translation> <translation id="4788092183367008521">Patikrinkite tinklo ryšį ir bandykite dar kartą.</translation> <translation id="4792711294155034829">&Pranešti apie problemą...</translation> -<translation id="4795022432560487924">Siųskite naudojimo ir diagnostikos duomenis. Padėkite tobulinti vaiko „Android“ funkcijas automatiškai siųsdami „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Šį nustatymą taiko savininkas. Savininkas gali pasirinkti siųsti šio įrenginio diagnostikos ir naudojimo duomenis „Google“. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Tinklalapis, tik HTML</translation> <translation id="4798236378408895261">Pridėti <ph name="BEGIN_LINK" />„Bluetooth“ žurnalus<ph name="END_LINK" /> („Google“ darbuotojams)</translation> <translation id="4801448226354548035">Slėpti paskyras</translation> @@ -3385,6 +3381,7 @@ <translation id="5649053991847567735">Automatiškai atsisiųsti</translation> <translation id="5653154844073528838">Esate išsaugoję <ph name="PRINTER_COUNT" /> spausdintuv.</translation> <translation id="5656845498778518563">Atsiliepimų siuntimas sistemai „Google“</translation> +<translation id="5657156137487675418">Leisti visus slapukus</translation> <translation id="5657667036353380798">Norint naudoti išorinį plėtinį reikalinga <ph name="MINIMUM_CHROME_VERSION" /> arba naujesnės versijos „Chrome“.</translation> <translation id="5658415415603568799">Kad dar labiau apsaugotumėte įrenginį, „Smart Lock“ prašys įvesti slaptažodį po 20 valandų.</translation> <translation id="5659593005791499971">El. paštas</translation> @@ -3592,7 +3589,6 @@ <translation id="5941711191222866238">Sumažinti</translation> <translation id="5942964813783878922">Įdiegus šį naujinį „<ph name="DEVICE_TYPE" />“ įrenginys bus paleistas iš naujo. Būsimi programinės įrangos ir saugos naujiniai bus įdiegti automatiškai.</translation> <translation id="5944869793365969636">QR kodo nuskaitymas</translation> -<translation id="5945188205370098537">Siųskite naudojimo ir diagnostikos duomenis. Padėkite tobulinti „Android“ funkcijas automatiškai siųsdami „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas, šie duomenys gali būti išsaugoti „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Ataskaitos ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Nepavyksta išanalizuoti failo</translation> <translation id="5955282598396714173">Baigėsi slaptažodžio galiojimo laikas. Atsijunkite, tada vėl prisijunkite, kad jį pakeistumėte.</translation> @@ -3778,6 +3774,7 @@ <translation id="6185132558746749656">Įrenginio vietovė</translation> <translation id="6186394685773237175">Nerasta pažeistų slaptažodžių</translation> <translation id="6195693561221576702">Šis įrenginys negali būti nustatytas, kai įjungtas neprisijungus pasiekiamas demonstracinis režimas.</translation> +<translation id="6196640612572343990">Blokuoti trečiosios šalies slapukus</translation> <translation id="6196854373336333322">Plėtinys „<ph name="EXTENSION_NAME" />“ perėmė tarpinio serverio valdymą. Tai reiškia, kad jis gali keisti, nutraukti ar stebėti visus prisijungus atliekamus veiksmus. Jei nesate tikri, kodėl įvyko šis pakeitimas, tikriausiai jūs jo nenorite.</translation> <translation id="6198102561359457428">Atsijunkite, tada vėl prisijunkite...</translation> <translation id="6198252989419008588">Keisti PIN kodą</translation> @@ -4444,7 +4441,6 @@ <translation id="711902386174337313">Skaityti įrenginių, prie kurių esate prisijungę, sąrašą</translation> <translation id="7120865473764644444">Nepavyko prisijungti prie sinchronizavimo serverio. Bandoma iš naujo...</translation> <translation id="7121362699166175603">Išvaloma istorija ir automatiniai užbaigimai adreso juostoje. „Google“ paskyroje gali būti kito tipo naršymo istorijos, kuri pasiekiama adresu <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Kūrėjo režimas</translation> <translation id="7121728544325372695">Išmanieji brūkšniai</translation> <translation id="7123360114020465152">Nebepalaikoma</translation> @@ -4559,7 +4555,6 @@ <translation id="7280041992884344566">„Chrome“ ieškant kenkėjiškos programinės įrangos įvyko klaida</translation> <translation id="7280649757394340890">Teksto į kalbą balso nustatymai</translation> <translation id="7280877790564589615">Prašoma leidimo</translation> -<translation id="7281268427852119151">Naršymo istorijos naudojimas Paieškai, skelbimams ir kitoms „Google“ paslaugoms suasmeninti</translation> <translation id="7282992757463864530">Informacinė juosta</translation> <translation id="7287143125007575591">Prieiga atmesta.</translation> <translation id="7287411021188441799">Atkurti numatytąjį foną</translation> @@ -5234,7 +5229,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Skirtuko perkėlimas į naują langą}one{Skirtukų perkėlimas į naują langą}few{Skirtukų perkėlimas į naują langą}many{Skirtukų perkėlimas į naują langą}other{Skirtukų perkėlimas į naują langą}}</translation> <translation id="8179976553408161302">Įvesti</translation> <translation id="8180239481735238521">psl.</translation> -<translation id="8180294223783876911">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas, šie duomenys gali būti išsaugoti „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />“ patikrintose vietovėse gali nuskaityti ir ištrinti vaizdus, vaizdo įrašus ir garso failus.</translation> <translation id="8181215761849004992">Nepavyko prisijungti prie domeno. Patikrinkite paskyrą, kad sužinotumėte, ar turite pakankamai teisių pridėti įrenginius.</translation> <translation id="8182105986296479640">Programa nereaguoja.</translation> @@ -5256,7 +5250,6 @@ <translation id="8203732864715032075">Siunčia pranešimus ir pagal numatytuosius nustatymus prisimena šį kompiuterį programoje „Messages“. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Programą „<ph name="APP_NAME" />“ užblokavo vienas iš tėvų. Paprašykite vieno iš tėvų leidimo naudoti šią programą.</translation> <translation id="820568752112382238">Dažniausiai lankomos svetainės</translation> -<translation id="8206581664590136590">Siųskite naudojimo ir diagnostikos duomenis. Padėkite tobulinti vaiko „Android“ funkcijas automatiškai siųsdami „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bliuzas</translation> <translation id="8206859287963243715">Mobilusis</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Vykdomas atsisiuntimas}one{Vykdomi atsisiuntimai}few{Vykdomi atsisiuntimai}many{Vykdomi atsisiuntimai}other{Vykdomi atsisiuntimai}}</translation> @@ -5802,7 +5795,6 @@ <translation id="8912362522468806198">„Google“ paskyra</translation> <translation id="8912793549644936705">Ištemptas</translation> <translation id="8912810933860534797">Įgalinti automatinį nuskaitymą</translation> -<translation id="891365694296252935">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Šį nustatymą taiko savininkas. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Įkeliamas pasiūlymas</translation> <translation id="8916476537757519021">Inkognito antrinis kadras: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Patvirtinamas saugos raktas...</translation> @@ -5939,7 +5931,6 @@ <translation id="9101691533782776290">Paleisti programą</translation> <translation id="9102610709270966160">Įgalinti plėtinį</translation> <translation id="9103868373786083162">Paspauskite, kad eitumėte atgal į kontekstinį meniu ir peržiūrėtumėte istoriją</translation> -<translation id="9104396740804929809">Siųskite naudojimo ir diagnostikos duomenis. Padėkite tobulinti „Android“ funkcijas automatiškai siųsdami „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Šį nustatymą taiko savininkas. Savininkas gali pasirinkti siųsti šio įrenginio diagnostikos ir naudojimo duomenis „Google“. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas, šie duomenys gali būti išsaugoti „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Kad atlaisvintumėte vietos, ištrinkite failus iš įrenginio saugyklos.</translation> <translation id="9109283579179481106">Prisijungimas prie mobiliojo ryšio tinklo</translation> <translation id="9111102763498581341">Atrakinti</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 6c8c8c1..87d19ad 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Mitinātas lietotnes dati</translation> <translation id="1776712937009046120">Pievienot lietotāju</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Šo ierīci pārvalda <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Lai turpinātu pierakstīšanos <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kontā, noklikšķiniet uz Tālāk.</translation> <translation id="1779652936965200207">Ievadiet šo ieejas atslēgu ierīcē <ph name="DEVICE_NAME" />:</translation> <translation id="177989070088644880">Lietotne (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Aizvērt grupu</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Radās problēma saistībā ar printeru parādīšanu. Iespējams, daži no printeriem nav sekmīgi reģistrēti pakalpojumā <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Meklētājprogramma, kas tiek izmantota <ph name="BEGIN_LINK" />adreses joslā<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lasīt un mainīt visu, ko rakstāt</translation> -<translation id="220792432208469595">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Šo iestatījumu ir noteicis īpašnieks. Ja ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti jūsu Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Ievadiet šo PIN kodu ierīcē <ph name="DEVICE_NAME" />:</translation> <translation id="2212565012507486665">Atļaut sīkfailus</translation> <translation id="2213140827792212876">Noņemt kopīgošanu</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nevarēja atvērt citu pārlūkprogrammu</translation> <translation id="2804667941345577550">Jūs tiksiet izrakstīts no šīs vietnes, tostarp atvērtajās cilnēs</translation> <translation id="2804680522274557040">Kamera ir izslēgta</translation> -<translation id="2805539617243680210">Viss ir iestatīts!</translation> <translation id="2805646850212350655">Microsoft šīfrēšanas failu sistēma</translation> <translation id="2805756323405976993">Lietotnes</translation> <translation id="2805770823691782631">Papildinformācija</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Ekrānuzņēmums ir uzņemts</translation> <translation id="3742666961763734085">Nevar atrast organizācijas vienību ar šādu nosaukumu. Lūdzu, mēģiniet vēlreiz.</translation> <translation id="3744111561329211289">Sinhronizācija fonā</translation> +<translation id="3747077776423672805">Lai noņemtu lietotnes, pārejiet uz sadaļu Iestatījumi > Google Play veikals > Pārvaldīt Android preferences > Lietotnes vai Lietojumprogrammu pārvaldnieks. Pēc tam pieskarieties lietotnei, kuru vēlaties atinstalēt (iespējams, būs jāvelk pa labi vai pa kreisi, lai atrastu lietotni). Pēc tam pieskarieties vienumam Atinstalēt vai Atspējot.</translation> <translation id="3748026146096797577">Nav izveidots savienojums</translation> <translation id="3752582316358263300">Labi...</translation> <translation id="3752673729237782832">Manas ierīces</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Jūs izmantojat drošības atslēgu, kas nav reģistrēta šajā vietnē</translation> <translation id="4788092183367008521">Lūdzu, pārbaudiet tīkla savienojumu un mēģiniet vēlreiz.</translation> <translation id="4792711294155034829">&Ziņot par problēmu...</translation> -<translation id="4795022432560487924">Lietojuma un diagnostikas datu sūtīšana. Palīdziet uzlabot bērna Android lietošanas pieredzi, automātiski nosūtot diagnostikas, ierīces un lietotņu lietojuma datus uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Šo iestatījumu ir noteicis īpašnieks. Īpašnieks var izvēlēties nosūtīt šīs ierīces diagnostikas un lietojuma datus uz Google serveriem. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Tikai tīmekļa lapa, HTML</translation> <translation id="4798236378408895261">Pievienot <ph name="BEGIN_LINK" />Bluetooth žurnālus<ph name="END_LINK" /> (tikai Google darbiniekiem)</translation> <translation id="4801448226354548035">Slēpt kontus</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automātiskās lejupielādes</translation> <translation id="5653154844073528838">Jums ir <ph name="PRINTER_COUNT" /> saglabāti printeri.</translation> <translation id="5656845498778518563">Atsauksmju sūtīšana uzņēmumam Google</translation> +<translation id="5657156137487675418">Atļaut visus sīkfailus</translation> <translation id="5657667036353380798">Lai varētu izmantot ārējo paplašinājumu, jāinstalē Chrome versija <ph name="MINIMUM_CHROME_VERSION" /> vai jaunāka versija.</translation> <translation id="5658415415603568799">Papildu drošībai Smart Lock lūgs jums ievadīt paroli pēc 20 stundām.</translation> <translation id="5659593005791499971">E-pasts</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimizēt</translation> <translation id="5942964813783878922">Pēc šīs atjaunināšanas jūsu ierīce (<ph name="DEVICE_TYPE" />) tiks restartēta. Turpmāki programmatūras un drošības atjauninājumi tiks instalēti automātiski.</translation> <translation id="5944869793365969636">QR koda skenēšana</translation> -<translation id="5945188205370098537">Lietojuma un diagnostikas datu sūtīšana. Palīdziet uzlabot Android lietošanas pieredzi, automātiski nosūtot diagnostikas, ierīces un lietotņu lietojuma datus uzņēmumam Google. Šī informācija palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Ja ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti jūsu Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Pārskata ID: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Nevar parsēt failu.</translation> <translation id="5955282598396714173">Paroles derīguma termiņš ir beidzies. Lai mainītu paroli, izrakstieties un vēlreiz pierakstieties.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Ierīces atrašanās vieta</translation> <translation id="6186394685773237175">Netika atrasta neviena uzlauzta parole.</translation> <translation id="6195693561221576702">Šo ierīci nevar iestatīt bezsaistes demonstrēšanas režīmā.</translation> +<translation id="6196640612572343990">Bloķēt trešo pušu sīkfailus</translation> <translation id="6196854373336333322">Paplašinājums “<ph name="EXTENSION_NAME" />” pārvalda jūsu starpniekservera iestatījumus. Tas nozīmē, ka tas var mainīt, pārtraukt vai izsekot visas jūsu darbības tiešsaistē. Ja neesat pārliecināts, kāpēc notika šīs izmaiņas, visticamāk, jūs tās nevēlaties.</translation> <translation id="6198102561359457428">Izrakstīties un tad pierakstīties vēlreiz</translation> <translation id="6198252989419008588">Mainīt PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Lasīt to ierīču sarakstu, kurās esat pierakstījies</translation> <translation id="7120865473764644444">Nevarēja izveidot savienojumu ar sinhronizācijas serveri. Tiek mēģināts atkārtoti...</translation> <translation id="7121362699166175603">Notīra vēsturi un automātiskās pabeigšanas datus adreses joslā. Jūsu Google kontam var būt cita veida pārlūkošanas vēstures dati vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Izstrādātāja režīms</translation> <translation id="7121728544325372695">Viedās defises</translation> <translation id="7123360114020465152">Vairs netiek atbalstīts</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Kamēr pārlūks Chrome meklēja kaitīgu programmatūru, radās kļūda.</translation> <translation id="7280649757394340890">Balss iestatījumi teksta pārvēršanai runā</translation> <translation id="7280877790564589615">Atļaujas pieprasījums</translation> -<translation id="7281268427852119151">Jūsu pārlūkošanas vēstures izmantošana, lai personalizētu Meklēšanu, reklāmas un citus Google pakalpojumus.</translation> <translation id="7282992757463864530">Informācijas josla</translation> <translation id="7287143125007575591">Piekļuve liegta.</translation> <translation id="7287411021188441799">Atjaunot noklusējuma fonu</translation> @@ -5232,7 +5227,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Pārvietot cilni uz jaunu logu}zero{Pārvietot cilnes uz jaunu logu}one{Pārvietot cilnes uz jaunu logu}other{Pārvietot cilnes uz jaunu logu}}</translation> <translation id="8179976553408161302">Ievadīt</translation> <translation id="8180239481735238521">Lapa</translation> -<translation id="8180294223783876911">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Ja ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti jūsu Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Ar paplašinājumu “<ph name="EXTENSION" />” var lasīt un dzēst attēlus, videoklipus un skaņu failus atzīmētajās vietās.</translation> <translation id="8181215761849004992">Nevar pievienoties domēnam. Pārbaudiet savā kontā, vai jums ir pietiekamas tiesības, lai pievienotu ierīces.</translation> <translation id="8182105986296479640">Lietojumprogramma neatbild.</translation> @@ -5254,7 +5248,6 @@ <translation id="8203732864715032075">Jums tiks sūtīti paziņojumi, un pēc noklusējuma šis dators tiks iestatīts īsziņu saņemšanai. <ph name="LINK_BEGIN" />Uzziniet vairāk<ph name="LINK_END" />.</translation> <translation id="8204129288640092672">Viens no vecākiem ir bloķējis lietotni <ph name="APP_NAME" />. Lai izmantotu šo lietotni, lūdziet vecākiem piešķirt atļauju.</translation> <translation id="820568752112382238">Biežāk apmeklētās vietnes</translation> -<translation id="8206581664590136590">Lietojuma un diagnostikas datu sūtīšana. Palīdziet uzlabot bērna Android lietošanas pieredzi, automātiski nosūtot diagnostikas, ierīces un lietotņu lietojuma datus uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blūzs</translation> <translation id="8206859287963243715">Mobilais tālrunis</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Notiek lejupielāde}zero{Notiek lejupielāde}one{Notiek lejupielāde}other{Notiek lejupielāde}}</translation> @@ -5800,7 +5793,6 @@ <translation id="8912362522468806198">Google konts</translation> <translation id="8912793549644936705">Izstiept</translation> <translation id="8912810933860534797">Iespējot automātisko meklēšanu</translation> -<translation id="891365694296252935">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Šo iestatījumu ir noteicis īpašnieks. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Notiek ieteikumu ielāde...</translation> <translation id="8916476537757519021">Inkognito apakšrāmis: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Notiek drošības atslēgas pārbaude...</translation> @@ -5937,7 +5929,6 @@ <translation id="9101691533782776290">Palaist lietotni</translation> <translation id="9102610709270966160">Iespējot paplašinājumu</translation> <translation id="9103868373786083162">Nospiediet, lai pārietu atpakaļ; atveriet kontekstizvēlni, lai skatītu vēsturi</translation> -<translation id="9104396740804929809">Lietojuma un diagnostikas datu sūtīšana. Palīdziet uzlabot Android lietošanas pieredzi, automātiski nosūtot diagnostikas, ierīces un lietotņu lietojuma datus uzņēmumam Google. Šī informācija palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Šo iestatījumu ir noteicis īpašnieks. Īpašnieks var izvēlēties nosūtīt šīs ierīces diagnostikas un lietojuma datus uz Google serveriem. Ja ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti jūsu Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Lai atbrīvotu vietu, izdzēsiet failus no šīs ierīces.</translation> <translation id="9109283579179481106">Savienojuma izveide ar mobilo tīklu</translation> <translation id="9111102763498581341">Atbloķēt</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 8a07de3d..4dcd474 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Вдомени податоци на апликација</translation> <translation id="1776712937009046120">Додај корисник</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> управува со уредов. - Кликнете „Следно“ за да продолжите со најавување на вашата сметка на <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Внесете ја лозинкава на „<ph name="DEVICE_NAME" />“:</translation> <translation id="177989070088644880">Апликација (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Затвори ја групата</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Настана проблем при листањето на печатачите. Некои од вашите печатачи можеби не се успешно регистрирани кај <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Пребарувач што се користи во <ph name="BEGIN_LINK" />лентата за адреси<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Прочитајте го и променете го напишаниот текст</translation> -<translation id="220792432208469595">Испраќајте податоци за користење и дијагностика. Овој уред во моментов автоматски испраќа дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Оваа поставка е наметната од сопственикот. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“, овие податоци може да се зачувуваат во вашата сметка на Google. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Внесете го PIN-кодот на „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Дозволи колачиња</translation> <translation id="2213140827792212876">Отстрани го споделувањето</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Алтернативниот прелистувач не можеше да се отвори</translation> <translation id="2804667941345577550">Ќе ве одјавиме од сајтов, вклучително и од отворените картички</translation> <translation id="2804680522274557040">Камерата е исклучена</translation> -<translation id="2805539617243680210">Подготвени сте!</translation> <translation id="2805646850212350655">Систем за шифрирање датотеки на Microsoft</translation> <translation id="2805756323405976993">Апликации</translation> <translation id="2805770823691782631">Дополнителни детали</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Направена е слика од екранот</translation> <translation id="3742666961763734085">Не може да се најде организациска единица со тоа име. Обидете се повторно.</translation> <translation id="3744111561329211289">Синхронизација во заднина</translation> +<translation id="3747077776423672805">За да ги отстраните апликациите, одете во „Поставки > Google Play Store > Управувајте со поставките за Android > Апликации“ или „Управникот со апликации“. Потоа допрете ја апликацијата што сакате да ја деинсталирате (можеби ќе треба да повлечете десно или лево за да ја најдете). Потоа допрете „Деинсталирај“ или „Оневозможи“.</translation> <translation id="3748026146096797577">Не е поврзана</translation> <translation id="3752582316358263300">Во ред...</translation> <translation id="3752673729237782832">Мои уреди</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Користите безбедносен клуч што не е регистриран на веб-сајтов</translation> <translation id="4788092183367008521">Проверете ја мрежната врска и обидете се повторно.</translation> <translation id="4792711294155034829">&Пријави проблем...</translation> -<translation id="4795022432560487924">Испраќајте податоци за користење и дијагностика. Помогнете ни да го подобриме искуството на вашето дете со Android со автоматско испраќање дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Оваа поставка е наметната од сопственикот. Сопственикот може да избере да испраќа дијагностички и податоци за користењето на овој уред до Google. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-страница, само HTML</translation> <translation id="4798236378408895261">Прикачи <ph name="BEGIN_LINK" />евиденција за Bluetooth<ph name="END_LINK" /> (интерно во Google)</translation> <translation id="4801448226354548035">Сокриј сметки</translation> @@ -3567,7 +3563,6 @@ <translation id="5941711191222866238">Минимизирај</translation> <translation id="5942964813783878922">Вашиот <ph name="DEVICE_TYPE" /> ќе се рестартира после ова ажурирање. Идните верзии и безбедносните ажурирања ќе се инсталираат автоматски.</translation> <translation id="5944869793365969636">Скенирајте QR-код</translation> -<translation id="5945188205370098537">Испраќајте податоци за користење и дијагностика. Помогнете ни да го подобриме вашето искуство со Android со автоматско испраќање дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“, овие податоци може да се зачувуваат во вашата сметка на Google. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Пријави ИД <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Не може да ја анализира датотеката</translation> <translation id="5955282598396714173">Лозинката истече. Одјавете се и повторно најавете се за да ја промените.</translation> @@ -3751,6 +3746,7 @@ <translation id="6185132558746749656">Локација на уредот</translation> <translation id="6186394685773237175">Не се најдени компромитирани лозинки</translation> <translation id="6195693561221576702">Уредов не може да се постави во офлајн демо-режим.</translation> +<translation id="6196640612572343990">Блокирај колачиња од трети лица</translation> <translation id="6196854373336333322">Наставката „<ph name="EXTENSION_NAME" />“ ја презеде контролата врз поставките за прокси, што значи дека може да менува, прекинува или прислушува сѐ што правите на интернет. Доколку не сте сигурни зошто се случила промената, веројатно не ја сакате.</translation> <translation id="6198102561359457428">Одјавете се, па повторно најавете се...</translation> <translation id="6198252989419008588">Промена на PIN</translation> @@ -4414,7 +4410,6 @@ <translation id="711902386174337313">Пристапете до листата на најавени уреди</translation> <translation id="7120865473764644444">Не можеше да се поврзе на серверот за синхронизација. Се обидува повторно…</translation> <translation id="7121362699166175603">Ја чисти историјата и автоматските довршувања во лентата за адреси. Вашата сметка на Google можеби има други видови историја на прелистување на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Испраќајте податоци за користење и дијагностика. Овој уред во моментов автоматски испраќа дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Режим на програмер</translation> <translation id="7121728544325372695">Паметни цртички</translation> <translation id="7123360114020465152">Веќе не е поддржано</translation> @@ -5196,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Преместете ја картичката во нов прозорец}one{Преместете ги картичките во нов прозорец}other{Преместете ги картичките во нов прозорец}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">страница</translation> -<translation id="8180294223783876911">Испраќајте податоци за користење и дијагностика. Овој уред во моментов автоматски испраќа дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“, овие податоци може да се зачувуваат во вашата сметка на Google. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />“ може да чита и да брише слики, видео- и аудиодатотеки на означените локации.</translation> <translation id="8181215761849004992">Не може да се приклучи на доменот. Проверете дали имате доволно привилегии на сметката за додавање уреди.</translation> <translation id="8182105986296479640">Апликацијата не одговара</translation> @@ -5218,7 +5212,6 @@ <translation id="8203732864715032075">Ви испраќа известувања и стандардни вредности за запомнување на компјутеров за Messages. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Родителот ја блокирал „<ph name="APP_NAME" />“. Побарајте дозвола од него за користење на апликацијава.</translation> <translation id="820568752112382238">Најпосетувани веб-сајтови</translation> -<translation id="8206581664590136590">Испраќајте податоци за користење и дијагностика. Помогнете ни да го подобриме искуството на вашето дете со Android со автоматско испраќање дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блузист</translation> <translation id="8206859287963243715">Мобилен</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Преземањето е во тек}one{Преземањата се во тек}other{Преземањата се во тек}}</translation> @@ -5761,7 +5754,6 @@ <translation id="8912362522468806198">Сметка на Google</translation> <translation id="8912793549644936705">Растегни</translation> <translation id="8912810933860534797">Овозможете автоматско скенирање</translation> -<translation id="891365694296252935">Испраќајте податоци за користење и дијагностика. Овој уред во моментов автоматски испраќа дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Оваа поставка е наметната од сопственикот. Ако сте ја вклучиле дополнителната „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Се вчитува предлог</translation> <translation id="8916476537757519021">Инкогнито подрамка: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Се потврдува безбедносниот клуч…</translation> @@ -5898,7 +5890,6 @@ <translation id="9101691533782776290">Стартувај апликација</translation> <translation id="9102610709270966160">Овозможи екстензија</translation> <translation id="9103868373786083162">Притиснете за да се вратите назад, контекстуално мени за да ја видите историјата</translation> -<translation id="9104396740804929809">Испраќајте податоци за користење и дијагностика. Помогнете ни да го подобриме вашето искуство со Android со автоматско испраќање дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Оваа поставка е наметната од сопственикот. Сопственикот може да избере да испраќа дијагностички и податоци за користењето на овој уред до Google. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“, овие податоци може да се зачувуваат во вашата сметка на Google. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">За да ослободите простор, избришете датотеки од меморијата на уредот.</translation> <translation id="9109283579179481106">Поврзете се на мобилна мрежа</translation> <translation id="9111102763498581341">Отклучи</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 006370b..fecac97 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">ഹോസ്റ്റ് ചെയ്ത ആപ്പ് ഡാറ്റ</translation> <translation id="1776712937009046120">ഉപയോക്താവിനെ ചേര്ക്കുക</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ഈ ഉപകരണം മാനേജ് ചെയ്യുന്നത് <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ആണ്. - നിങ്ങളുടെ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> അക്കൗണ്ടിലേക്ക് സൈൻ ഇൻ ചെയ്യുന്നത് തുടരാൻ "അടുത്തത്" ക്ലിക്ക് ചെയ്യുക.</translation> <translation id="1779652936965200207">ഈ പാസ്കീ "<ph name="DEVICE_NAME" />" എന്നതിൽ നൽകുക:</translation> <translation id="177989070088644880">ആപ്പ് (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ഗ്രൂപ്പ് അടയ്ക്കുക</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">പ്രിന്ററുകള് ലിസ്റ്റുചെയ്യുന്നതില് പ്രശ്നമുണ്ടായിരുന്നു. നിങ്ങളുടെ പ്രിന്ററുകളില് ചിലത് <ph name="CLOUD_PRINT_NAME" /> എന്നതില് വിജയകരമായി രജിസ്റ്റര് ചെയ്തിട്ടില്ലായിരിക്കാം.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />വിലാസ ബാറിൽ<ph name="END_LINK" /> ഉപയോഗിക്കുന്ന തിരയൽ യന്ത്രം</translation> <translation id="2204034823255629767">നിങ്ങൾ ടൈപ്പുചെയ്യുന്നവയെല്ലാം വായിക്കുക, മാറ്റുക</translation> -<translation id="220792432208469595">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ, ഈ ഉപകരണം നിലവിൽ സ്വയമേവ Google-ന് അയയ്ക്കുന്നുണ്ട്. സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ഇത് സഹായിക്കും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. ഈ ക്രമീകരണം നടപ്പിലാക്കുന്നത് ഉടമയാണ്. നിങ്ങളുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="220858061631308971">"<ph name="DEVICE_NAME" />" എന്നതിൽ PIN കോഡ് നൽകുക:</translation> <translation id="2212565012507486665">കുക്കികൾ അനുവദിക്കുക</translation> <translation id="2213140827792212876">പങ്കിടൽ നീക്കം ചെയ്യുന്നു</translation> @@ -1340,7 +1337,6 @@ <translation id="2804043232879091219">ഇതര ബ്രൗസർ തുറക്കാനായില്ല</translation> <translation id="2804667941345577550">തുറന്നിരിക്കുന്ന ടാബുകളിൽ നിന്ന് ഉൾപ്പെടെ ഈ സൈറ്റിൽ നിന്ന് നിങ്ങൾ സൈൻ ഔട്ട് ചെയ്യപ്പെടും.</translation> <translation id="2804680522274557040">ക്യാമറ ഓഫാക്കി</translation> -<translation id="2805539617243680210">നിങ്ങൾ തയ്യാറായിക്കഴിഞ്ഞു!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="2805770823691782631">കൂടുതൽ വിശദാംശങ്ങൾ</translation> @@ -2018,6 +2014,7 @@ <translation id="3742055079367172538">സ്ക്രീൻഷോട്ട് എടുത്തു</translation> <translation id="3742666961763734085">ആ പേരിലുള്ള ഒരു ഓർഗനൈസേഷണൽ യൂണിറ്റ് കണ്ടെത്താനായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="3744111561329211289">പശ്ചാത്തല സമന്വയിപ്പിക്കൽ</translation> +<translation id="3747077776423672805">ആപ്പുകൾ നീക്കം ചെയ്യാൻ, ക്രമീകരണം > Google Play സ്റ്റോർ > Android മുൻഗണനകൾ മാനേജ് ചെയ്യുക > ആപ്പുകൾ അല്ലെങ്കിൽ ആപ്പ് മാനേജർ എന്നതിലേക്ക് പോവുക. അൺഇൻസ്റ്റാൾ ചെയ്യാനാഗ്രഹിക്കുന്ന ആപ്പിൽ ടാപ്പ് ചെയ്യുക (ആപ്പ് കണ്ടെത്താൻ വലത്തോട്ടോ ഇടത്തോട്ടോ സ്വൈപ്പ് ചെയ്യേണ്ടതായി വന്നേക്കാം). തുടർന്ന്, അൺഇൻസ്റ്റാൾ ചെയ്യുക എന്നതിലോ പ്രവർത്തനരഹിതമാക്കുക എന്നതിലോ ടാപ്പ് ചെയ്യുക.</translation> <translation id="3748026146096797577">കണക്റ്റുചെയ്തിട്ടില്ല</translation> <translation id="3752582316358263300">ശരി...</translation> <translation id="3752673729237782832">എന്റെ ഉപകരണങ്ങൾ</translation> @@ -2737,7 +2734,6 @@ <translation id="4785719467058219317">ഈ വെബ്സൈറ്റിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ലാത്ത ഒരു സുരക്ഷാ കീ ആണ് നിങ്ങൾ ഉപയോഗിക്കുന്നത്</translation> <translation id="4788092183367008521">നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ പരിശോധിച്ച്, വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="4792711294155034829">&ഒരു പ്രശ്നം റിപ്പോര്ട്ടുചെയ്യുക...</translation> -<translation id="4795022432560487924">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ സ്വയമേവ Google-ന് അയച്ച്, കുട്ടിയുടെ Android അനുഭവം മെച്ചപ്പെടുത്താൻ സഹായിക്കുക. കുട്ടിയെ തിരിച്ചറിയാൻ ഇത് ഉപയോഗിക്കില്ല, സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് സഹായിക്കുകയും ചെയ്യും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. ഈ ക്രമീകരണം നടപ്പിലാക്കുന്നത് ഉടമയാണ്. ഈ ഉപകരണത്തിലെ പ്രശ്നനിർണ്ണയവും ഉപയോഗവുമായി ബന്ധപ്പെട്ട ഡാറ്റ Google-ന് അയയ്ക്കാൻ ഉടമ തീരുമാനിച്ചേക്കാം. കുട്ടിയുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ അവരുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="479536056609751218">വെബ്പേജുകൾ, HTML മാത്രം</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth ലോഗുകൾ<ph name="END_LINK" /> (Google-ൽ ഉള്ളത് മാത്രം) അറ്റാച്ച് ചെയ്യുക</translation> <translation id="4801448226354548035">അക്കൗണ്ടുകൾ മറയ്ക്കുക</translation> @@ -3357,6 +3353,7 @@ <translation id="5649053991847567735">യാന്ത്രിക ഡൗൺലോഡുകൾ</translation> <translation id="5653154844073528838">നിങ്ങൾക്ക് സംരക്ഷിച്ചിരിക്കുന്ന <ph name="PRINTER_COUNT" /> പ്രിന്ററുകളുണ്ട്.</translation> <translation id="5656845498778518563">Google-ലേക്ക് ഫീഡ്ബാക്ക് അയയ്ക്കുക</translation> +<translation id="5657156137487675418">എല്ലാ കുക്കികളും അനുവദിക്കൂ</translation> <translation id="5657667036353380798">ബാഹ്യ വിപുലീകരണത്തിനായി, chrome പതിപ്പ് <ph name="MINIMUM_CHROME_VERSION" /> അല്ലെങ്കിൽ അതിനുശേഷമുള്ളത് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്.</translation> <translation id="5658415415603568799">അധിക സുരക്ഷയ്ക്കായി, 20 മണിക്കൂറിന് ശേഷം നിങ്ങളുടെ പാസ്വേഡ് നൽകാൻ Smart Lock ആവശ്യപ്പെടും.</translation> <translation id="5659593005791499971">ഇമെയില്</translation> @@ -3564,7 +3561,6 @@ <translation id="5941711191222866238">ചെറുതാക്കുക</translation> <translation id="5942964813783878922">ഈ അപ്ഡേറ്റിന് ശേഷം നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> റീസ്റ്റാർട്ട് ചെയ്യും. ഭാവിയിൽ സോഫ്റ്റ്വെയറും സുരക്ഷാ അപ്ഡേറ്റുകളും സ്വയമേവ ഇൻസ്റ്റാൾ ചെയ്യും.</translation> <translation id="5944869793365969636">QR കോഡ് സ്കാൻ ചെയ്യുക</translation> -<translation id="5945188205370098537">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ സ്വയമേവ Google-ന് അയച്ച്, നിങ്ങളുടെ Android അനുഭവം മെച്ചപ്പെടുത്താൻ സഹായിക്കുക. സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ഇത് സഹായിക്കും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. നിങ്ങളുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">റിപ്പോർട്ട് ഐഡി <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ഫയലിനെ വിശകലനം ചെയ്യാനായില്ല</translation> <translation id="5955282598396714173">നിങ്ങളുടെ പാസ്വേഡ് കാലഹരണപ്പെട്ടിരിക്കുന്നു. അത് മാറ്റുന്നതിന്, സൈൻ ഔട്ട് ചെയ്യുക, തുടർന്ന് സൈൻ ഇൻ ചെയ്യുക.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">ഉപകരണ ലൊക്കേഷൻ</translation> <translation id="6186394685773237175">അപഹരിക്കപ്പെട്ട പാസ്വേഡുകളൊന്നും കണ്ടെത്തിയില്ല</translation> <translation id="6195693561221576702">ഈ ഉപകരണം ഓഫ്ലൈൻ ഡെമോ മോഡിൽ സജ്ജീകരിക്കാനാവില്ല.</translation> +<translation id="6196640612572343990">മൂന്നാം കക്ഷി കുക്കികള് ബ്ലോക്കുചെയ്യുക</translation> <translation id="6196854373336333322">ഈ "<ph name="EXTENSION_NAME" />" വിപുലീകരണം നിങ്ങളുടെ പ്രോക്സി ക്രമീകരണത്തെ നിയന്ത്രിക്കുന്നുണ്ട്, എന്നുവെച്ചാൽ നിങ്ങൾ ഓൺലൈനിൽ ചെയ്യുന്ന എല്ലാ പ്രവർത്തിയിലും മാറ്റം വരുത്താനും തകർക്കാനും രഹസ്യങ്ങൾ ചോർത്താനും കഴിയും. എന്തുകൊണ്ട് ഈ മാറ്റം സംഭവിച്ചത് എന്നതിനെക്കുറിച്ച് നിങ്ങൾക്കുറപ്പില്ലെങ്കിൽ, അത് നിങ്ങൾക്ക് ആവശ്യമില്ലാത്ത കാര്യമായിരിക്കാം.</translation> <translation id="6198102561359457428">സൈൻ ഔട്ട് ചെയ്ത് വീണ്ടും സൈൻ ഇൻ ചെയ്യുക...</translation> <translation id="6198252989419008588">PIN മാറ്റുക</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">നിങ്ങളുടെ സൈൻ ഇൻ ചെയ്ത ഉപകരണങ്ങളുടെ ലിസ്റ്റ് റീഡുചെയ്യുക</translation> <translation id="7120865473764644444">സമന്വയ സെര്വറിലേക്ക് കണക്റ്റ് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുന്നു...</translation> <translation id="7121362699166175603">ചരിത്രവും വിലാസ ബാറിലെ സ്വയം പൂർത്തീകരണങ്ങളും മായ്ക്കുന്നു. നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation> -<translation id="7121389946694989825">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ, ഈ ഉപകരണം നിലവിൽ സ്വയമേവ Google-ന് അയയ്ക്കുന്നുണ്ട്. കുട്ടിയെ തിരിച്ചറിയാൻ ഇത് ഉപയോഗിക്കില്ല, സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് സഹായിക്കുകയും ചെയ്യും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. കുട്ടിയുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ അവരുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ഡെവലപ്പർ മോഡ്</translation> <translation id="7121728544325372695">സ്മാർട്ട് ഡാഷുകൾ</translation> <translation id="7123360114020465152">ഇനിയങ്ങോട്ട് പിന്തുണയില്ല</translation> @@ -5195,7 +5191,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ടാബ് പുതിയ വിൻഡോയിലേക്ക് നീക്കുക}other{ടാബുകൾ പുതിയ വിൻഡോയിലേക്ക് നീക്കുക}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">പേജ്</translation> -<translation id="8180294223783876911">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ, ഈ ഉപകരണം നിലവിൽ സ്വയമേവ Google-ന് അയയ്ക്കുന്നുണ്ട്. സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ഇത് സഹായിക്കും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. നിങ്ങളുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" എന്നതിന് ചെക്ക് ചെയ്ത ലൊക്കേഷനുകളിൽ ചിത്രങ്ങളും വീഡിയോകളും ശബ്ദ ഫയലുകളും വായിക്കാനും ഇല്ലാതാക്കാനുമാവും.</translation> <translation id="8181215761849004992">ഡൊമെയ്ൻ ബന്ധപ്പെടുത്താനാവില്ല. ഉപകരണങ്ങൾ ചേർക്കാൻ നിങ്ങൾക്ക് മതിയായ പ്രത്യേക അധികാരങ്ങൾ ഉണ്ടോ എന്നറിയാൻ നിങ്ങളുടെ അക്കൗണ്ട് പരിശോധിക്കുക.</translation> <translation id="8182105986296479640">ആപ്പ് പ്രതികരിക്കുന്നില്ല.</translation> @@ -5217,7 +5212,6 @@ <translation id="8203732864715032075">നിങ്ങള്ക്ക് അറിയിപ്പുകള് അയയ്ക്കുന്നു, സന്ദേശങ്ങള്ക്കായി ഈ കമ്പ്യൂട്ടറിനെ ഡിഫോള്ട്ടായി ഒാർമ്മിപ്പിക്കുകയും ചെയ്യുന്നു. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="8204129288640092672">നിങ്ങളുടെ രക്ഷിതാവ് "<ph name="APP_NAME" />" ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു. ഈ ആപ്പ് ഉപയോഗിക്കാൻ രക്ഷിതാവിനോട് അനുവാദം ചോദിക്കുക.</translation> <translation id="820568752112382238">ഏറ്റവും കൂടുതൽ സന്ദർശിച്ച സൈറ്റുകൾ</translation> -<translation id="8206581664590136590">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ സ്വയമേവ Google-ന് അയച്ച്, കുട്ടിയുടെ Android അനുഭവം മെച്ചപ്പെടുത്താൻ സഹായിക്കുക. കുട്ടിയെ തിരിച്ചറിയാൻ ഇത് ഉപയോഗിക്കില്ല, സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് സഹായിക്കുകയും ചെയ്യും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. കുട്ടിയുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ അവരുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ബ്ലൂസി</translation> <translation id="8206859287963243715">സെല്ലുലാര്</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ഡൗൺലോഡ് പുരോഗമിക്കുന്നു}other{ഡൗൺലോഡുകൾ പുരോഗമിക്കുന്നു}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Google അക്കൗണ്ട്</translation> <translation id="8912793549644936705">വലിച്ചുനീട്ടുക</translation> <translation id="8912810933860534797">സ്വയമേവയുള്ള സ്കാൻ പ്രവർത്തനക്ഷമമാക്കുക</translation> -<translation id="891365694296252935">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ, ഈ ഉപകരണം നിലവിൽ സ്വയമേവ Google-ന് അയയ്ക്കുന്നുണ്ട്. നിങ്ങളുടെ കുട്ടിയെ തിരിച്ചറിയാൻ ഇത് ഉപയോഗിക്കില്ല, സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് സഹായിക്കുകയും ചെയ്യും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. ഈ ക്രമീകരണം നടപ്പിലാക്കുന്നത് ഉടമയാണ്. കുട്ടിയുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ അവരുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">നിർദ്ദേശം ലോഡുചെയ്യുന്നു</translation> <translation id="8916476537757519021">ആൾമാറാട്ട സബ്ഫ്രെയിം: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">നിങ്ങളുടെ സുരക്ഷാ കീ പരിശോധിച്ചുറപ്പിക്കുന്നു...</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">ആപ്പ് ലോഞ്ച് ചെയ്യുക</translation> <translation id="9102610709270966160">വിപുലീകരണം പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="9103868373786083162">ചരിത്രം കാണാൻ തിരികെ പോകുന്നതിന് സന്ദർഭ മെനു അമർത്തുക</translation> -<translation id="9104396740804929809">ഉപയോഗവും പ്രശ്നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ സ്വയമേവ Google-ന് അയച്ച്, നിങ്ങളുടെ Android അനുഭവം മെച്ചപ്പെടുത്താൻ സഹായിക്കുക. സിസ്റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് ഇത് സഹായിക്കും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. ഈ ക്രമീകരണം നടപ്പിലാക്കുന്നത് ഉടമയാണ്. ഈ ഉപകരണത്തിലെ പ്രശ്നനിർണ്ണയവും ഉപയോഗവുമായി ബന്ധപ്പെട്ട ഡാറ്റ Google-ന് അയയ്ക്കാൻ ഉടമ തീരുമാനിച്ചേക്കാം. നിങ്ങളുടെ അധിക വെബ്, ആപ്പ് ആക്റ്റിവിറ്റി ക്രമീകരണം ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ഇടം സൃഷ്ടിക്കാൻ, ഉപകരണ സ്റ്റോറേജിൽ നിന്ന് ഫയലുകൾ ഇല്ലാതാക്കുക.</translation> <translation id="9109283579179481106">മൊബൈൽ നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യുക</translation> <translation id="9111102763498581341">അണ്ലോക്ക് ചെയ്യുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 9a9eff0..55ef632e 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Аппликейшний өгөгдлийг зохион байгуулсан</translation> <translation id="1776712937009046120">Хэрэглэгч нэмэх</translation> <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation> -<translation id="1777310661937894236">Энэ төхөөрөмжийг <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> удирддаг. - <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> бүртгэлдээ үргэлжлүүлэн нэвтрэхийн тулд "Дараах" гэснийг товшино уу.</translation> <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" дээрх түлхүүр үгийг оруулна уу:</translation> <translation id="177989070088644880">Апп (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Бүлгийг хаах</translation> @@ -888,7 +886,6 @@ <translation id="2202898655984161076">Принтерийн жагсаалтыг гаргахад асуудал үүслээ. Таны зарим принтер <ph name="CLOUD_PRINT_NAME" /> руу амжилттай бүртгэгдэж чадаагүй байж болох юм.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Хаягийн талбарт<ph name="END_LINK" /> ашигласан хайлтын хэрэгсэл</translation> <translation id="2204034823255629767">Бичиж буй зүйлээ уншиж, өөрчлөх</translation> -<translation id="220792432208469595">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Энэ төхөөрөмж одоогоор оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж байна. Энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Энэ тохиргоог хэрэглэгчийн зүгээс хэрэгжүүлнэ. Хэрэв таны Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг таны Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="220858061631308971">"<ph name="DEVICE_NAME" />"-д дараах ПИН кодыг оруул. Үүнд:</translation> <translation id="2212565012507486665">Күүкиг зөвшөөрөх</translation> <translation id="2213140827792212876">Хуваалцлыг устгах</translation> @@ -1348,7 +1345,6 @@ <translation id="2804043232879091219">Өөр хөтчийг нээж чадсангүй</translation> <translation id="2804667941345577550">Та энэ сайтаас гарах бөгөөд үүнд нээлттэй табын сайт мөн багтана</translation> <translation id="2804680522274557040">Камерыг унтраасан</translation> -<translation id="2805539617243680210">Тохируулж дууслаа!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Програм</translation> <translation id="2805770823691782631">Нэмэлт дэлгэрэнгүй мэдээлэл</translation> @@ -2029,6 +2025,7 @@ <translation id="3742055079367172538">Дэлгэцний зургийг авсан болно (Screenshot)</translation> <translation id="3742666961763734085">Ийм нэртэй байгууллагын нэгжийг олж чадахгүй байна. Дахин оролдоно уу.</translation> <translation id="3744111561329211289">Дэвсгэрт синк хийх</translation> +<translation id="3747077776423672805">Аппуудыг устгахын тулд Тохиргоо > Google Play Дэлгүүр > Android-н сонголтыг удирдах > Апп эсвэл Аппын менежер хэсэгт очно уу. Дараа нь устгахыг хүссэн аппаа товшино уу (та аппыг олохын тулд баруун эсвэл зүүн тийш шудрах шаардлагатай байж болзошгүй). Дараа нь Устгах эсвэл Идэвхгүй болгох гэснийг товшино уу.</translation> <translation id="3748026146096797577">Холбогдоогүй</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Миний төхөөрөмжүүд</translation> @@ -2751,7 +2748,6 @@ <translation id="4785719467058219317">Та энэ вэб сайтад бүртгүүлээгүй аюулгүй байдлын түлхүүрийг ашиглаж байна</translation> <translation id="4788092183367008521">Сүлжээний холболтоо шалгаад дахин оролдоно уу.</translation> <translation id="4792711294155034829">&Асуудлыг тайлагнах...</translation> -<translation id="4795022432560487924">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж, хүүхдийнхээ Android-н хэрэглээг сайжруулахад тусална уу. Үүнийг таны хүүхдийг тодорхойлоход ашиглахгүй бөгөөд энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Энэ тохиргоог хэрэглэгчийн зүгээс хэрэгжүүлнэ. Энэ төхөөрөмжийн оношилгоо болон ашиглалтын өгөгдлийг Google-д илгээх эсэхийг хэрэглэгч өөрөө сонгож болно. Хэрэв таны хүүхдийн Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Цахим хуудас, зөвхөн HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth Логыг<ph name="END_LINK" /> хавсаргана уу (Google дотоод)</translation> <translation id="4801448226354548035">Данснуудыг нуух</translation> @@ -3585,7 +3581,6 @@ <translation id="5941711191222866238">Багасгах</translation> <translation id="5942964813783878922">Таны <ph name="DEVICE_TYPE" />-г энэ шинэчлэлтийн дараа дахин эхлүүлэх болно. Программ хангамж болон аюулгүй байдлын цаашдын шинэчлэлтийг автоматаар суулгана.</translation> <translation id="5944869793365969636">Хурдан хариу үйлдлийн кодыг скан хийх</translation> -<translation id="5945188205370098537">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж, Android-н хэрэглээгээ сайжруулахад тусална уу. Энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Хэрэв таны Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг таны Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="5946591249682680882"><ph name="WEBRTC_LOG_REPORT_ID" /> ID-ыг мэдээлэх</translation> <translation id="5949544233750246342">Файл задлах боломжгүй байна</translation> <translation id="5955282598396714173">Таны нууц үг хүчингүй боллоо. Нууц үгээ өөрчлөхийн тулд бүртгэлээсээ гараад буцаж нэвтэрнэ үү.</translation> @@ -3771,6 +3766,7 @@ <translation id="6185132558746749656">Төхөөрөмжийн байршил</translation> <translation id="6186394685773237175">Алдагдсан нууц үг олдсонгүй</translation> <translation id="6195693561221576702">Энэ төхөөрөмжийг офлайн демо горимд тохируулах боломжгүй.</translation> +<translation id="6196640612572343990">Гуравдагч талын күүкиг блоклох</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" өргөтгөл нь таны прокси тохиргоог удирдаж байгаа бөгөөд энэ нь таны онлайнаар хийсэн зүйлийг өөрчилж, гэмтээж, хуулбарлах боломжтой гэсэн үг юм. Энэ өөрчлөлт яагаад гарсныг та мэдэхгүй байгаа бол энэ таны хүссэн зүйл биш байна.</translation> <translation id="6198102561359457428">Үйлдлийн системээс гараад, дахин нэвтрэнэ үү...</translation> <translation id="6198252989419008588">PIN кодыг өөрчлөх</translation> @@ -4437,7 +4433,6 @@ <translation id="711902386174337313">Өөрийнхөө нэвтэрч орсон төхөөрөмжүүдийн жагсаалтыг уншуул</translation> <translation id="7120865473764644444">Синк серверт холбогдож чадсангүй. Дахин оролдож байна...</translation> <translation id="7121362699166175603">Tүүх болон хаяг оруулах хэсгийн автомат гүйцээлтийг устгана. Таны Google бүртгэл <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-д хайлтын түүхийн өөр хэлбэртэй байж болзошгүй.</translation> -<translation id="7121389946694989825">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Энэ төхөөрөмж одоогоор оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж байна. Үүнийг таны хүүхдийг тодорхойлоход ашиглахгүй бөгөөд энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Хэрэв таны хүүхдийн Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Хөгжүүлэгч горим</translation> <translation id="7121728544325372695">Ухаалаг зураас</translation> <translation id="7123360114020465152">Дэмжихээ больсон байна</translation> @@ -4552,7 +4547,6 @@ <translation id="7280041992884344566">Chrome хортой програм хангамжийг хайх явцад алдаа гарлаа</translation> <translation id="7280649757394340890">Текстийг яриа болгох дуу хоолойны тохиргоо</translation> <translation id="7280877790564589615">Зөвшөөрөл хүссэн</translation> -<translation id="7281268427852119151">Хайлт, зар болон Google-н бусад үйлчилгээг хувийн болгохын тулд хөтчийн түүхээ ашиглаарай</translation> <translation id="7282992757463864530">Мэдээллийн самбар</translation> <translation id="7287143125007575591">Хандалтыг зөвшөөрөөгүй.</translation> <translation id="7287411021188441799">Өгөгдмөл дэвсгэрийг сэргээх</translation> @@ -5223,7 +5217,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Табыг шинэ цонх руу зөөх}other{Табуудыг шинэ цонх руу зөөх}}</translation> <translation id="8179976553408161302">Нэвтрэх</translation> <translation id="8180239481735238521">хуудас</translation> -<translation id="8180294223783876911">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Энэ төхөөрөмж одоогоор оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж байна. Энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Хэрэв таны Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг таны Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" нь шалгагдсан байршлуудад зураг, видео, дууны файлуудыг уншиж, устгаж чадна.</translation> <translation id="8181215761849004992">Домайнд нэгдэх боломжгүй. Таны бүртгэл төхөөрөмж нэмэх эрхтэй эсэхийг шалгана уу.</translation> <translation id="8182105986296479640">Апп хариу өгөхгүй байна.</translation> @@ -5245,7 +5238,6 @@ <translation id="8203732864715032075">Энэ компьютерийг Мессежэд санахын тулд танд мэдэгдэл болон өгөгдмөлийг илгээнэ. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />"-г таны эцэг эх блоклосон. Энэ аппыг ашиглах зөвшөөрлийг эцэг эхээсээ хүснэ үү.</translation> <translation id="820568752112382238">Хамгийн их зочилсон сайт</translation> -<translation id="8206581664590136590">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж, хүүхдийнхээ Android-н хэрэглээг сайжруулахад тусална уу. Үүнийг таны хүүхдийг тодорхойлоход ашиглахгүй бөгөөд энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Хэрэв таны хүүхдийн Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Үүрэн холбоо</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Татаж байна}other{Татаж байна}}</translation> @@ -5789,7 +5781,6 @@ <translation id="8912362522468806198">Google Бүртгэл</translation> <translation id="8912793549644936705">Сунгах</translation> <translation id="8912810933860534797">Автомат сканыг идэвхжүүлэх</translation> -<translation id="891365694296252935">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Энэ төхөөрөмж одоогоор оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж байна. Үүнийг таны хүүхдийг тодорхойлоход ашиглахгүй бөгөөд энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Энэ тохиргоог хэрэглэгчийн зүгээс хэрэгжүүлнэ. Хэрэв таны хүүхдийн Вэб, Аппын нэмэлт үйл ажиллагаа асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Зөвлөмжийг ачаалж байна</translation> <translation id="8916476537757519021">Нууцлалтай дэд хүрээ: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Таны аюулгүй байдлын түлхүүрийг баталгаажуулж байна...</translation> @@ -5926,7 +5917,6 @@ <translation id="9101691533782776290">Програм нээх</translation> <translation id="9102610709270966160">Өргөтгөлийг идэвхжүүлэх</translation> <translation id="9103868373786083162">Буцах бол back, түүх харах бол хулганын баруун товчлуурыг дарна уу</translation> -<translation id="9104396740804929809">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж, Android-н хэрэглээгээ сайжруулахад тусална уу. Энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Энэ тохиргоог хэрэглэгчийн зүгээс хэрэгжүүлнэ. Энэ төхөөрөмжийн оношилгоо болон ашиглалтын өгөгдлийг Google-д илгээх эсэхийг хэрэглэгч өөрөө сонгож болно. Хэрэв таны Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг таны Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Багтаамж нэмэгдүүлэхийн тулд төхөөрөмжийн сангаас файл устгана уу.</translation> <translation id="9109283579179481106">Мобайл сүлжээнд холбогдох</translation> <translation id="9111102763498581341">Нээх</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index cdd296e..7c64e37 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -572,8 +572,6 @@ <translation id="177336675152937177">होस्ट केलेला अॅप डेटा</translation> <translation id="1776712937009046120">वापरकर्ता जोडा</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">हे डिव्हाइस <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> द्वारे व्यवस्थापित केले जाते. -कृपया तुमच्या <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> खात्यामध्ये साइन इन करणे सुरू ठेवण्यासाठी "पुढील" वर क्लिक करा.</translation> <translation id="1779652936965200207">कृपया ही पासकी "<ph name="DEVICE_NAME" />" वर प्रविष्ट करा:</translation> <translation id="177989070088644880">ॲप (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">गट बंद करा</translation> @@ -886,7 +884,6 @@ <translation id="2202898655984161076">प्रिंटर सूचीबद्ध करताना समस्या आली. तुमचे काही प्रिंटर <ph name="CLOUD_PRINT_NAME" /> सह यशस्वीरित्या नोंदणीकृत नाहीत.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />अॅड्रेस बार<ph name="END_LINK" /> मध्ये शोध इंजिन वापरले</translation> <translation id="2204034823255629767">तुम्ही टाइप करता ती कोणतीहीगोष्ट वाचा आणि बदला</translation> -<translation id="220792432208469595">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अॅप वापर डेटा पाठवत आहे. हे सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. या सेटिंगची मालकाद्वारे अंमलबजावणी केली जाते. जर तुमची अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सेटिंग सुरू केलेली असल्यास, हा डेटा तुमच्या Google खाते वर सेव्ह केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="220858061631308971">कृपया यावर हा पिन कोड प्रविष्ट करा "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">कुकींना अनुमती द्या</translation> <translation id="2213140827792212876">शेअरिंग काढा</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">पर्यायी ब्राउझर उघडता आला नाही</translation> <translation id="2804667941345577550">उघड्या असलेल्या टॅबच्या समावेशासह तुम्हाला या साइटमधून साइन आउट केले जाईल.</translation> <translation id="2804680522274557040">कॅमेरा बंद केला आहे</translation> -<translation id="2805539617243680210">तुम्ही पूर्णपणे तयार आहात!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ॲप्लिकेशन</translation> <translation id="2805770823691782631">अतिरिक्त तपशील</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">स्क्रीनशॉट घेतला</translation> <translation id="3742666961763734085">त्या नावाचे संस्थात्मक एकक शोधू शकत नाही. कृपया पुन्हा प्रयत्न करा.</translation> <translation id="3744111561329211289">पार्श्वभूमी संकालन</translation> +<translation id="3747077776423672805">ॲप्स काढून टाकण्यासाठी, सेटिंग्ज > Google Play स्टोअर > Android प्राधान्ये व्यवस्थापित करा > ॲप्स किंवा अॅप्लिकेशन व्यवस्थापक वर जा. नंतर तुम्हाला अनइंस्टॉल करायच्या असलेल्या ॲपवर टॅप करा (ॲप शोधण्यासाठी तुम्हाला कदाचित उजवीकडे किंवा डावीकडे स्वाइप करावे लागेल). यानंतर अनइंस्टॉल करा किंंवा बंद करा वर टॅप करा.</translation> <translation id="3748026146096797577">कनेक्टेड नाही</translation> <translation id="3752582316358263300">ठीक आहे...</translation> <translation id="3752673729237782832">माझी डिव्हाइसेस</translation> @@ -2738,7 +2735,6 @@ <translation id="4785719467058219317">तुम्ही या वेबसाइटवर नोंदणीकृत नसलेली सिक्युरिटी की वापरत आहात</translation> <translation id="4788092183367008521">कृपया तुमचे नेटवर्क कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.</translation> <translation id="4792711294155034829">&समस्या नोंदवणे...</translation> -<translation id="4795022432560487924">वापर आणि निदान डेटा पाठवा. Google ला आपोआप निदान आणि डिव्हाइस आणि अॅप वापर डेटा पाठवून तुमच्या लहान मुलाचा Android अनुभव सुधारण्यात मदत करा. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. या सेटिंगची मालकाद्वारे अंमलबजावणी केली जाते. मालक या डिव्हाइससाठी निदान आणि वापर डेटा Google ला पाठवणे निवडू शकतो. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सुरू केलेली असल्यास, ही माहिती त्याच्या Google खात्यामध्ये स्टोअर केली जाऊ शकते. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="479536056609751218">वेबपेज, केवळ HTML</translation> <translation id="4798236378408895261">(Google अंतर्गत) <ph name="BEGIN_LINK" />ब्लूटूथ लॉग<ph name="END_LINK" /> अटॅच करा</translation> <translation id="4801448226354548035">खाती लपवा</translation> @@ -3358,6 +3354,7 @@ <translation id="5649053991847567735">स्वयंचलित डाउनलोड</translation> <translation id="5653154844073528838">तुमच्याकडे <ph name="PRINTER_COUNT" /> सेव्ह केलेली प्रिंटर आहेत.</translation> <translation id="5656845498778518563">Google ला फीडबॅक पाठवा</translation> +<translation id="5657156137487675418">सर्व कुकीजना परवानगी द्या</translation> <translation id="5657667036353380798">बाह्य एक्स्टेंशनला chrome <ph name="MINIMUM_CHROME_VERSION" /> किंवा मोठी आवृत्ती इंस्टॉल केली जाण्याची आवश्यकता आहे.</translation> <translation id="5658415415603568799">अतिरिक्त सुरक्षिततेसाठी Smart Lock तुम्हाला २० तासांनंतर पासवर्ड एंटर करण्यास सांगेल.</translation> <translation id="5659593005791499971">ईमेल</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">लहान करा</translation> <translation id="5942964813783878922">या अपडेटनंतर तुमचे <ph name="DEVICE_TYPE" /> रीस्टार्ट होईल. भविष्यातील सॉफ्टवेअर आणि सुरक्षितता अपडेट आपोआप इंस्टॉल होतील.</translation> <translation id="5944869793365969636">QR कोड स्कॅन करा</translation> -<translation id="5945188205370098537">वापर आणि निदान डेटा पाठवा. Google ला आपोआप निदान आणि डिव्हाइस आणि अॅप वापर डेटा पाठवून तुमचा Android अनुभव सुधारण्यात मदत करा. हे सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. जर तुमची अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सेटिंग सुरू केलेली असल्यास, हा डेटा तुमच्या Google खाते वर सेव्ह केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">अहवाल आयडी <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">फाइल पार्स करता आली नाही?</translation> <translation id="5955282598396714173">तुमचा पासवर्ड एक्सपायर झाला आहे. तो बदलण्यासाठी कृपया साइन आऊट करा आणि पुन्हा साइन इन करा.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">डिव्हाइस स्थान</translation> <translation id="6186394685773237175">धोक्यात असलेले पासवर्ड सापडले नाहीत</translation> <translation id="6195693561221576702">हे डिव्हाइस ऑफलाइन डेमो मोडमध्ये सेट केले जाऊ शकत नाही.</translation> +<translation id="6196640612572343990">तृतीय-पक्ष कुकीज अवरोधित करा</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" एक्स्टेंशनने तुमच्या प्रॉक्सी सेटिंग्जचे नियंत्रण घेतले आहे, याचा अर्थ हे तुम्ही ऑनलाइन करता ती कोणतीही गोष्ट बदलू शकते, खंडित करू शकते किंवा चोरून ऐकू शकते. हा बदल का झाला, याबद्दल तुम्ही खात्री नसल्यास, तुम्हाला कदाचित तो नको आहे.</translation> <translation id="6198102561359457428">साइन आउट करा नंतर पुन्हा साइन इन करा...</translation> <translation id="6198252989419008588">पिन बदला</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">आपल्या साइन इन केलेल्या डिव्हाइसेसची सूची वाचा</translation> <translation id="7120865473764644444">संंकालित सर्व्हरशी कनेक्ट करणे शक्य झाले नाही. पुन्हा प्रयत्न करीत आहे...</translation> <translation id="7121362699166175603">अॅड्रेस बारवरील इतिहास आणि आपोआप पूर्ण करण्याचे दाखले साफ करते. तुमच्या Google खात्यामध्ये <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर कदाचित ब्राउझिंगचे इतर फॉर्म असतील.</translation> -<translation id="7121389946694989825">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अॅप वापर डेटा पाठवत आहे. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सुरू केलेली असल्यास, ही माहिती त्याच्या Google खात्यामध्ये स्टोअर केली जाऊ शकते. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">डेव्हलपर मोड</translation> <translation id="7121728544325372695">स्मार्ट डॅश</translation> <translation id="7123360114020465152">आता सपोर्ट करत नाही.</translation> @@ -5193,7 +5189,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{टॅब नवीन विंडोवर हलवा}other{टॅब नवीन विंडोवर हलवा}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">पृष्ठ</translation> -<translation id="8180294223783876911">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अॅप वापर डेटा पाठवत आहे. हे सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. जर तुमची अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सेटिंग सुरू केलेली असल्यास, हा डेटा तुमच्या Google खाते वर सेव्ह केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" चेक केलेल्या स्थानांमधील इमेज, व्हिडिओ आणि ध्वनी फायली वाचू आणि हटवू शकते.</translation> <translation id="8181215761849004992">डोमेनशी जोडू शकत नाही. तुम्हाला डिव्हाइस जोडण्याचे पुरेसे विशेषाधिकार आहेत का हे पाहण्यासाठी तुमचे खाते तपासा.</translation> <translation id="8182105986296479640">ॲप्लिकेशन प्रतिसाद देत नाही.</translation> @@ -5215,7 +5210,6 @@ <translation id="8203732864715032075">Messages साठी हा कॉंप्युटर डीफॉल्ट म्हणून लक्षात ठेवण्याकरता तुम्हाला सूचना पाठवेल. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" तुमच्या पालकाने ब्लॉक केले आहे. तुमच्या पालकाकडे हे अॅप वापरण्याची परवानगी मागा.</translation> <translation id="820568752112382238">सर्वाधिक भेट दिलेल्या साइट</translation> -<translation id="8206581664590136590">वापर आणि निदान डेटा पाठवा. Google ला आपोआप निदान आणि डिव्हाइस आणि अॅप वापर डेटा पाठवून तुमच्या लहान मुलाचा Android अनुभव सुधारण्यात मदत करा. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सुरू केलेली असल्यास, ही माहिती त्याच्या Google खात्यामध्ये स्टोअर केली जाऊ शकते. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">सेल्यूलर</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड सुरू आहे}other{डाउनलोड सुरू आहेत}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Google खाते</translation> <translation id="8912793549644936705">पसरवा</translation> <translation id="8912810933860534797">ऑटो- स्कॅन सुरू करा</translation> -<translation id="891365694296252935">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अॅप वापर डेटा पाठवत आहे. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. या सेटिंगची मालकाद्वारे अंमलबजावणी केली जाते. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सुरू केलेली असल्यास, हा डेटा त्याच्या Google खात्यामध्ये स्टोअर केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">सूचना लोड करीत आहे</translation> <translation id="8916476537757519021">गुप्त सबफ्रेम: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">तुमच्या सिक्युरिटी की ची पडताळणी करत आहे...</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">ॲप लाँच करा</translation> <translation id="9102610709270966160">एक्स्टेंशन सुरू करा</translation> <translation id="9103868373786083162">परत जाण्यासाठी दाबा, इतिहास पाहण्यासाठी संदर्भ मेनूवर जा</translation> -<translation id="9104396740804929809">वापर आणि निदान डेटा पाठवा. Google ला आपोआप निदान आणि डिव्हाइस आणि अॅप वापर डेटा पाठवून तुमचा Android अनुभव सुधारण्यात मदत करा. हे सिस्ट्म आणि अॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. या सेटिंगची मालकाद्वारे अंमलबजावणी केली जाते. मालक या डिव्हाइससाठी निदान आणि वापर डेटा Google ला पाठवणे निवडू शकतो. जर तुमची अतिरिक्त वेब आणि अॅप अॅक्टिव्हिटी सेटिंग सुरू केलेली असल्यास, हा डेटा तुमच्या Google खाते वर सेव्ह केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">स्थान मोकळे करण्यासाठी, डिव्हाइस स्टोरेजमधून फायली हटवा.</translation> <translation id="9109283579179481106">मोबाइल नेटवर्कशी कनेक्ट करा</translation> <translation id="9111102763498581341">अनलॉक करा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index d9196c8..1f75056 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Data apl yang dihoskan</translation> <translation id="1776712937009046120">Tambah pengguna</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Peranti ini diurus oleh <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Sila klik "Seterusnya" untuk meneruskan proses log masuk ke akaun <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> anda.</translation> <translation id="1779652936965200207">Sila masukkan kekunci laluan ini pada "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Apl (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Tutup Kumpulan</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Terdapat masalah menyenaraikan pencetak. Beberapa pencetak anda mungkin tidak berjaya didaftarkan dengan <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Enjin carian yang digunakan dalam <ph name="BEGIN_LINK" />bar alamat<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Baca dan ubah apa sahaja yang anda taip</translation> -<translation id="220792432208469595">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Tetapan ini dikuatkuasakan oleh pemilik. Jika tetapan Aktiviti Web & Apl tambahan anda dihidupkan, data ini mungkin disimpan ke Akaun Google anda. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Sila masukkan kod PIN ini pada "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Benarkan kuki</translation> <translation id="2213140827792212876">Alih keluar perkongsian</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Penyemak imbas alternatif tidak boleh dibuka</translation> <translation id="2804667941345577550">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dimatikan</translation> -<translation id="2805539617243680210">Anda sudah bersedia!</translation> <translation id="2805646850212350655">Sistem Fail Penyulitan Microsoft</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2805770823691782631">Butiran tambahan</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Tangkapan skrin diambil</translation> <translation id="3742666961763734085">Tidak dapat menemui unit organisasi dengan nama itu. Sila cuba lagi.</translation> <translation id="3744111561329211289">Penyegerakan latar belakang</translation> +<translation id="3747077776423672805">Untuk mengalih keluar apl, pergi ke Tetapan > Gedung Google Play > Urus pilihan Android > Apl atau Pengurus aplikasi. Kemudian, ketik apl yang ingin dinyahpasang (anda mungkin perlu meleret ke kanan atau ke kiri untuk mencari apl). Kemudian, ketik Nyahpasang atau Lumpuhkan.</translation> <translation id="3748026146096797577">Tidak Disambung</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Peranti saya</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Anda menggunakan kunci keselamatan yang tidak berdaftar dengan tapak web ini</translation> <translation id="4788092183367008521">Sila semak sambungan rangkaian dan cuba lagi.</translation> <translation id="4792711294155034829">&Laporkan Isu...</translation> -<translation id="4795022432560487924">Hantar data penggunaan dan diagnostik. Bantu kami meningkatkan pengalaman Android anak anda dengan menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Tetapan ini dikuatkuasakan oleh pemilik. Pemilik mungkin memilih untuk menghantar data diagnostik dan penggunaan bagi peranti ini kepada Google. Jika tetapan Aktiviti Web & Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Laman Web, HTML Sahaja</translation> <translation id="4798236378408895261">Lampirkan <ph name="BEGIN_LINK" />Log Bluetooth<ph name="END_LINK" /> (dalaman Google)</translation> <translation id="4801448226354548035">Sembunyikan akaun</translation> @@ -3567,7 +3563,6 @@ <translation id="5941711191222866238">Minimumkan</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> anda akan dimulakan semula selepas kemas kini ini. Kemas kini perisian dan keselamatan pada masa hadapan akan dipasang secara automatik.</translation> <translation id="5944869793365969636">Imbas kod QR</translation> -<translation id="5945188205370098537">Hantar data penggunaan dan diagnostik. Bantu kami meningkatkan pengalaman Android anda dengan menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Jika tetapan Aktiviti Web & Apl tambahan anda dihidupkan, data ini mungkin disimpan ke Akaun Google anda. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID Laporan <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Tidak dapat menghurai fail</translation> <translation id="5955282598396714173">Kata laluan anda telah tamat tempoh. Sila log keluar, kemudian log masuk semula untuk menukarnya.</translation> @@ -3751,6 +3746,7 @@ <translation id="6185132558746749656">Lokasi Peranti</translation> <translation id="6186394685773237175">Tiada kata laluan yang terjejas ditemukan</translation> <translation id="6195693561221576702">Peranti ini tidak boleh disediakan dalam mod tunjuk cara luar talian.</translation> +<translation id="6196640612572343990">Sekat kuki pihak ketiga</translation> <translation id="6196854373336333322">Sambungan "<ph name="EXTENSION_NAME" />" telah mengambil alih kawalan tetapan proksi anda, yang bermakna sambungan ini boleh mengubah, menghentikan atau mencuri dengar apa-apa sahaja yang anda lakukan dalam talian. Jika anda tidak pasti mengapa perubahan ini berlaku, anda mungkin tidak mahukannya.</translation> <translation id="6198102561359457428">Log keluar kemudian log masuk semula...</translation> <translation id="6198252989419008588">Tukar PIN</translation> @@ -4414,7 +4410,6 @@ <translation id="711902386174337313">Baca senarai peranti anda yang dilog masuk</translation> <translation id="7120865473764644444">Tidak dapat menyambung ke pelayan penyegerakan. Mencuba semula...</translation> <translation id="7121362699166175603">Mengosongkan sejarah dan autoselesai dalam bar alamat. Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Jika tetapan Aktiviti Web & Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Mod Pembangun</translation> <translation id="7121728544325372695">Sengkang Pintar</translation> <translation id="7123360114020465152">Tidak disokong lagi</translation> @@ -5197,7 +5192,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Alihkan tab ke tetingkap baharu}other{Alihkan tab ke tetingkap baharu}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">halaman</translation> -<translation id="8180294223783876911">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Jika tetapan Aktiviti Web & Apl tambahan anda dihidupkan, data ini mungkin disimpan ke Akaun Google anda. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" boleh membaca dan memadamkan fail imej, video dan bunyi di lokasi yang ditandai.</translation> <translation id="8181215761849004992">Tidak dapat menghubungkan domain. Semak akaun anda untuk mengetahui sama ada anda mempunyai keistimewaan yang mencukupi untuk menambahkan peranti.</translation> <translation id="8182105986296479640">Aplikasi tiada respons.</translation> @@ -5219,7 +5213,6 @@ <translation id="8203732864715032075">Hantar pemberitahuan kepada anda dan tetapkan mengingati komputer ini untuk Messages sebagai pilihan lalai. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" disekat oleh ibu bapa anda. Minta kebenaran untuk menggunakan apl ini daripada ibu bapa anda.</translation> <translation id="820568752112382238">Tapak yang paling kerap dilawati</translation> -<translation id="8206581664590136590">Hantar data penggunaan dan diagnostik. Bantu kami meningkatkan pengalaman Android anak anda dengan menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Jika tetapan Aktiviti Web & Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Sayu</translation> <translation id="8206859287963243715">Selular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Muat turun sedang berlangsung}other{Muat turun sedang berlangsung}}</translation> @@ -5760,7 +5753,6 @@ <translation id="8912362522468806198">Akaun Google</translation> <translation id="8912793549644936705">Regang</translation> <translation id="8912810933860534797">Dayakan autoimbas</translation> -<translation id="891365694296252935">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Tetapan ini dikuatkuasakan oleh pemilik. Jika Aktiviti Web & Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Memuatkan cadangan</translation> <translation id="8916476537757519021">Subbingkai Inkognito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Mengesahkan kunci keselamatan anda...</translation> @@ -5897,7 +5889,6 @@ <translation id="9101691533782776290">Lancarkan apl</translation> <translation id="9102610709270966160">Dayakan Sambungan</translation> <translation id="9103868373786083162">Tekan untuk kembali, menu konteks untuk melihat sejarah</translation> -<translation id="9104396740804929809">Hantar data penggunaan dan diagnostik. Bantu kami meningkatkan pengalaman Android anda dengan menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Tetapan ini dikuatkuasakan oleh pemilik. Pemilik mungkin memilih untuk menghantar data diagnostik dan penggunaan bagi peranti ini kepada Google. Jika tetapan Aktiviti Web & Apl tambahan anda dihidupkan, data ini mungkin disimpan ke Akaun Google anda. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Untuk mengosongkan ruang, padamkan fail daripada storan peranti.</translation> <translation id="9109283579179481106">Sambung ke rangkaian mudah alih</translation> <translation id="9111102763498581341">Buka kunci</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index cf7709b..e32e8977 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -578,8 +578,6 @@ <translation id="177336675152937177">ဟို့စ် လုပ်ခဲ့သည့် အက်ပ် ဒေတာ</translation> <translation id="1776712937009046120">အသုံးပြုသူ ပေါင်းထည့်ရန်</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ဤစက်ပစ္စည်းကို <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> မှစီမံခန့်ခွဲထားခြင်းဖြစ်သည်။ - သင့် <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> အကောင့်သို့ ရှေ့ဆက်၍ လက်မှတ်ထိုးဝင်ရန် "ရှေ့သို့" ကိုနှိပ်ပါ။</translation> <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" တွင် ဤ passkey ကို ရိုက်ထည့်ပါ။</translation> <translation id="177989070088644880">(<ph name="ANDROID_PACKAGE_NAME" />) အက်ပ်</translation> <translation id="1780152987505130652">အုပ်စုကို ပိတ်ခြင်း</translation> @@ -893,7 +891,6 @@ <translation id="2202898655984161076">ပရင်တာများကို စာရင်း ပြုလုပ်စဉ် ပြဿနာ တစ်ခု ရှိခဲ့သည်။ သင်၏ အချို့သော ပရင်တာများကို <ph name="CLOUD_PRINT_NAME" /> ဆီမှာ အောင်မြင်စွာ မှတ်ပုံ မတင်နိုင်ခဲ့တာ ဖြစ်နိုင်သည်။</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />လိပ်စာဘား<ph name="END_LINK" />တွင် အသုံးပြုသည့် ရှာဖွေရေးအင်ဂျင်</translation> <translation id="2204034823255629767">သင် တိုက်ရိုက်သမျှကို ဖတ်ရန် နှင့် ပြောင်းလဲရန်</translation> -<translation id="220792432208469595">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ ကိရိယာနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းက စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် ပံ့ပိုးပေးပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ ဤဆက်တင်ကို ပိုင်ရှင်ဖြစ်သူက သတ်မှတ်ထားခြင်းဖြစ်သည်။ သင်၏ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သင့် Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="220858061631308971">"<ph name="DEVICE_NAME" />" ပေါ်တွင် ပင်နံပါတ်ကုဒ် ကျေးဇူးပြု၍ ရိုက်ထည့်ပါ:</translation> <translation id="2212565012507486665">ကွတ်ကီးများ ခွင့်ပြုရန်</translation> <translation id="2213140827792212876">မျှဝေခြင်းကို ဖယ်ရှားရန်</translation> @@ -1354,7 +1351,6 @@ <translation id="2804043232879091219">အရန်ဘရောင်ဇာ ဖွင့်၍မရပါ</translation> <translation id="2804667941345577550">ဖွင့်ထားသည့်တဘ်များအပါအဝင် ဤဝဘ်ဆိုက်မှ သင်ထွက်သွားပါမည်</translation> <translation id="2804680522274557040">ကင်မရာ ပိတ်ထားပါသည်</translation> -<translation id="2805539617243680210">အဆင်သင့် ဖြစ်ပါပြီ။</translation> <translation id="2805646850212350655">Microsoft လျှို့ဝှက်ကုဒ်သွင်းရေး ဖိုင် စနစ်</translation> <translation id="2805756323405976993">အက်ပ်များ</translation> <translation id="2805770823691782631">နောက်ထပ် အသေးစိတ် အချက်အလက်များ</translation> @@ -2035,6 +2031,7 @@ <translation id="3742055079367172538">မျက်နှာပြင်ပုံရိပ် ရယူပြီး</translation> <translation id="3742666961763734085">ထိုအမည်ဖြင့် အဖွဲ့အစည်းကို မတွေ့ပါ။ ထပ်စမ်းကြည့်ပါ။</translation> <translation id="3744111561329211289">နောက်ခံတွင် စင့်ခ်လုပ်ခြင်း</translation> +<translation id="3747077776423672805">အက်ပ်များကို ဖယ်ရှားရန် ဆက်တင်များ > Google Play စတိုး > Android ရွေးချယ်ချက်များ စီမံရန် > အက်ပ်များ (သို့) အပလီကေးရှင်း မန်နေဂျာသို့ သွားပါ။ ထို့နောက် သင်ဖယ်ရှားလိုသော အက်ပ်ကိုတို့ပါ (ထိုအက်ပ်ကိုရှာရန် ညာ (သို့) ဘယ်ကို ပွတ်ဆွဲရပါမည်)။ ထို့နောက် 'ဖယ်ရှားရန်' သို့မဟုတ် 'ပိတ်ရန်' ကိုတို့ပါ။</translation> <translation id="3748026146096797577">ချိတ်ဆက် မထား</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">ကျွန်ုပ်၏ စက်ပစ္စည်းများ</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">သင်သည် ဤဝဘ်ဆိုက်တွင် မှတ်ပုံတင်မထားသော လုံခြုံရေးကီးတစ်ခုကို အသုံးပြုနေသည်</translation> <translation id="4788092183367008521">သင့်ကွန်ရက်ချိတ်ဆက်မှုကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="4792711294155034829">ပြဿနာ တစ်ခုကို အစီရင်ခံရန်...</translation> -<translation id="4795022432560487924">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့်အက်ပ် အသုံးပြုမှုဒေတာများကို Google သို့ အလိုအလျောက်ပို့၍ သင့်ကလေး၏ Android အသုံးပြုမှု ပိုမိုကောင်းမွန်လာစေရန် ကူညီပါ။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ ဤဆက်တင်ကို ပိုင်ရှင်ဖြစ်သူက သတ်မှတ်ထားခြင်းဖြစ်သည်။ ပိုင်ရှင်သည် ဤစက်ပစ္စည်းအတွက် ပြဿနာအဖြေရှာခြင်းနှင့် အသုံးပြုမှုဒေတာများကို Google သို့ ပို့ရန် ရွေးချယ်နိုင်ပါသည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ဝဘ်စာမျက်နှာ HTML သာလျှင်</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ဘလူးတုသ် မှတ်တမ်းများ<ph name="END_LINK" />ကို ပူးတွဲပါ (Google ကုမ္ပဏီတွင်း)</translation> <translation id="4801448226354548035">အကောင့်များ ဝှက်မည်</translation> @@ -3590,7 +3586,6 @@ <translation id="5941711191222866238">အနည်းဆုံး လုပ်ရန်</translation> <translation id="5942964813783878922">ဤအပ်ဒိတ်ပြီးသွားလျှင် သင့် <ph name="DEVICE_TYPE" /> ပြန်လည်စတင်ပါမည်။ အနာဂတ် ဆော့ဖ်ဝဲနှင့် လုံခြုံရေးအပ်ဒိတ်များကို အလိုအလျောက် ထည့်သွင်းသွားပါမည်။</translation> <translation id="5944869793365969636">QR ကုဒ်ကို စကင်ဖတ်ခြင်း</translation> -<translation id="5945188205370098537">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့်အက်ပ် အသုံးပြုမှုဒေတာများကို Google သို့ အလိုအလျောက်ပို့၍ Android အသုံးပြုမှု ပိုမိုကောင်းမွန်လာစေရန် ကူညီပါ။ ၎င်းက စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် ပံ့ပိုးပေးပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင်၏ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သင့် Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID အစီရင်ခံရန် <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ဖိုင်ကို ခွဲခြမ်းစိတ်ဖြာနိုင်ခြင်း မရှိပါ</translation> <translation id="5955282598396714173">သင့်စကားဝှက်သည် သက်တမ်းကုန်ဆုံးသွားပါပြီ။ ၎င်းကို ပြောင်းရန်အတွက် ထွက်လိုက်ပြီး လက်မှတ်ထိုးပြန်ဝင်ပါ။</translation> @@ -3776,6 +3771,7 @@ <translation id="6185132558746749656">စက်ကိရိယာ တည်နေရာ</translation> <translation id="6186394685773237175">ကျိုးပေါက်ထားသည့် စကားဝှက် မရှိပါ</translation> <translation id="6195693561221576702">ဤစက်ပစ္စည်းကို အော့ဖ်လိုင်းသရုပ်ပြမုဒ်အဖြစ် စနစ်ထည့်သွင်း၍မရပါ။</translation> +<translation id="6196640612572343990">ပြင်ပကုမ္ပဏီကွတ်ကီးများကို ပိတ်ဆို့မည်</translation> <translation id="6196854373336333322">တိုးချဲ့လိုင်း "<ph name="EXTENSION_NAME" />" သည် သင့် ပရောက်စီ ဆက်တင်များအား ထိန်းချုပ်ထားသည်၊ ဆိုလိုသည်မှာ ၎င်းမှ အွန်လိုင်းတွင် သင်ပြုလုပ်သည်များအား ပြင်ဆင်နိုင်၊ ဖောက်ဖျက်နိုင်၊ သို့မဟုတ် ချောင်းနားထောင်နိုင်သည်။ ဤအပြောင်းအလဲဖြစ်ရခြင်းအကြောင်းရင်းအား သင် သေချာမသိပါက၊ သင် ၎င်းအား လိုအပ်မည် မထင်ပါ။</translation> <translation id="6198102561359457428">ထွက်လိုက်ပါ၊ ပြီးမှ ထပ်ဝင်ပါ...</translation> <translation id="6198252989419008588">ပင်နံပါတ် ပြောင်းလဲမည်</translation> @@ -4441,7 +4437,6 @@ <translation id="711902386174337313">သင်၏ လက်မှတ်ထိုး ဝင်ထားသည့် ကိရိယာများ၏ စာရင်းကို ဖတ်ရန်</translation> <translation id="7120865473764644444">စင့်ခ်ဆာဗာသို့ ချိတ်ဆက်၍ မရပါ။ ပြန်စမ်းကြည့်နေသည်...</translation> <translation id="7121362699166175603">လိပ်စာဘားရှိ မှတ်တမ်းနှင့် အလိုအလျောက်ဖြည့်ပေးခြင်းများကို ဖျက်လိုက်ပါလိမ့်မည်။ သင့် Google အကောင့်က ဖွင့်ကြည့်ထားသောမှတ်တမ်းသည် <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> တွင် အခြားပုံစံများဖြင့် ရှိနေနိုင်ပါသည်။</translation> -<translation id="7121389946694989825">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ ကိရိယာနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">တီထွင်သူမုဒ်</translation> <translation id="7121728544325372695">အဆင့်မြင့် တုံးတိုများ</translation> <translation id="7123360114020465152">ပံ့ပိုးထားခြင်း မရှိတော့ပါ</translation> @@ -4556,7 +4551,6 @@ <translation id="7280041992884344566">အန္တရာယ်ရှိသည့် ဆော့ဖ်ဝဲကို Chrome က ရှာဖွေနေရာတွင် အမှားအယွင်းရှိနေသည်</translation> <translation id="7280649757394340890">'စာသားမှ စကားပြောသို့ ပြောင်းခြင်း' အသံဆက်တင်များ</translation> <translation id="7280877790564589615">ခွင့်ပြုချက် တောင်းဆို၏</translation> -<translation id="7281268427852119151">Search၊ ကြော်ငြာနှင့် အခြား Google ဝန်ဆောင်မှုများကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန် သင့်ကြည့်ရှုခြင်းမှတ်တမ်း အသုံးပြုခြင်း</translation> <translation id="7282992757463864530">အချက်အလက်ဘားတန်း</translation> <translation id="7287143125007575591">အသုံးပြုခွင့် မရပါ။</translation> <translation id="7287411021188441799">မူရင်းနောက်ခံပုံကို ပြန်ယူရန်</translation> @@ -5230,7 +5224,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{တဘ်ကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}other{တဘ်များကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}}</translation> <translation id="8179976553408161302">အင်တာ</translation> <translation id="8180239481735238521">စာမျက်နှာ</translation> -<translation id="8180294223783876911">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ ကိရိယာနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းက စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် ပံ့ပိုးပေးပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင်၏ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သင့် Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" သည် ပုံများ၊ ဗီဒီယို၊ နှင့်အသံဖိုင်များကို အမှန်ခြစ်ထားသည့် တည်နေရာများတွင် ဖတ်နိုင်ပြီး ဖျက်နိုင်ပါသည်။</translation> <translation id="8181215761849004992">ဒိုမိန်းသို့ ချိတ်ဆက်၍မရပါ။ စက်ပစ္စည်းများ ထည့်သွင်းရန် လုံလောက်သည့် လုပ်ပိုင်ခွင့်များ ရှိမရှိ သိရန် သင်၏အကောင့်ကို စစ်ဆေးပါ။</translation> <translation id="8182105986296479640">အပလီကေးရှင်း တုံ့ပြန်မှုမရှိခြင်း။</translation> @@ -5252,7 +5245,6 @@ <translation id="8203732864715032075">သတိပေးချက်များကို သင့်ထံ ပို့ပြီး Messages အတွက် ဤကွန်ပျူတာကို ပုံသေမှတ်ထားပေးသည်။ <ph name="LINK_BEGIN" />ပိုမို လေ့လာရန်<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" ကို သင့်မိဘက ပိတ်ထားသည်။ ဤအက်ပ်အသုံးပြုရန် သင့်မိဘကို ခွင့်တောင်းပါ။</translation> <translation id="820568752112382238">အများဆုံး ဝင်ကြည့်ထားသော ဝဘ်ဆိုက်များ</translation> -<translation id="8206581664590136590">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့်အက်ပ် အသုံးပြုမှုဒေတာများကို Google သို့ အလိုအလျောက်ပို့၍ သင့်ကလေး၏ Android အသုံးပြုမှု ပိုမိုကောင်းမွန်လာစေရန် ကူညီပါ။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">အပြာရောင်ဂီတသင်္ကေတ</translation> <translation id="8206859287963243715">ဆဲလ်လူလာ</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ဒေါင်းလုဒ် လုပ်နေဆဲဖြစ်သည်}other{ဒေါင်းလုဒ်များ လုပ်နေဆဲဖြစ်သည်}}</translation> @@ -5798,7 +5790,6 @@ <translation id="8912362522468806198">Google အကောင့်</translation> <translation id="8912793549644936705">ဆန့်ရန်</translation> <translation id="8912810933860534797">အလိုအလျောက် စကင်ဖတ်ခြင်းကို ဖွင့်ရန်</translation> -<translation id="891365694296252935">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ ကိရိယာနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ ဤဆက်တင်ကို ပိုင်ရှင်ဖြစ်သူက သတ်မှတ်ထားခြင်းဖြစ်သည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">အကြံပေးချက်ကို တင်ပေးနေ</translation> <translation id="8916476537757519021">ရုပ်ဖျက် ဘောင်ငယ် : <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">သင်၏ လုံခြုံရေးကီးကို အတည်ပြုနေသည်...</translation> @@ -5935,7 +5926,6 @@ <translation id="9101691533782776290">Launch အက်ပ်</translation> <translation id="9102610709270966160">နောက်ဆက်တွဲကို အသုံးပြုရန်</translation> <translation id="9103868373786083162">မှတ်တမ်းကို ကြည့်ရန် နောက်ကိုသွား၊ ဆက်စပ် မီနူးကို နှိပ်ပါ</translation> -<translation id="9104396740804929809">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့်အက်ပ် အသုံးပြုမှုဒေတာများကို Google သို့ အလိုအလျောက်ပို့၍ Android အသုံးပြုမှု ပိုမိုကောင်းမွန်လာစေရန် ကူညီပါ။ ၎င်းက စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် ပံ့ပိုးပေးပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ ဤဆက်တင်ကို ပိုင်ရှင်ဖြစ်သူက သတ်မှတ်ထားခြင်းဖြစ်သည်။ ပိုင်ရှင်သည် ဤစက်ပစ္စည်းအတွက် ပြဿနာအဖြေရှာခြင်းနှင့် အသုံးပြုမှုဒေတာများကို Google သို့ ပို့ရန် ရွေးချယ်နိုင်ပါသည်။ သင်၏ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သင့် Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">နေရာလွတ်ပြုလုပ်ရန် စက်ပစ္စည်းသိုလှောင်ခန်းမှ ဖိုင်များကို ဖျက်ပါ။</translation> <translation id="9109283579179481106">မိုဘိုင်းကွန်ရက်သို့ ချိတ်ဆက်ခြင်း</translation> <translation id="9111102763498581341">သော့ဖွင့်ရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index f049877..7f4017c 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -567,8 +567,6 @@ <translation id="177336675152937177">होस्ट गरिएको अनुप्रयोग लगत</translation> <translation id="1776712937009046120">प्रयोगकर्ता थप्नुहोस्</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.ले यो यन्त्रको व्यवस्थापन गर्छ। - आफ्नो <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> खातामा साइन गर्न जारी राख्न "अर्को" मा क्लिक गर्नुहोस्।</translation> <translation id="1779652936965200207">कृपया यस पासकुञ्जीलाई "<ph name="DEVICE_NAME" />" मा प्रविष्टि गर्नुहोस्:</translation> <translation id="177989070088644880">अनुप्रयोग (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">समूह बन्द गर्नुहोस्</translation> @@ -880,7 +878,6 @@ <translation id="2202898655984161076">मुद्रकहरूको सूची बनाउनमा समस्या थियो। तपाइँका केही मुद्रकहरू <ph name="CLOUD_PRINT_NAME" /> सँग सफलतापूर्वक दर्ता नभएको हुन सक्छ।</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ठेगाना बार<ph name="END_LINK" /> मा प्रयोग गरिएको खोज इन्जिन</translation> <translation id="2204034823255629767">तपाईंले टाइप गर्नुहुने कुनैपनि कुरालाई पढ्नुहोस् र परिवर्तन गर्नुहोस्</translation> -<translation id="220792432208469595">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। मालिकले यो सेटिङ लागू गर्नुभएको हो। तपाईंको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा तपाईंको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="220858061631308971">कृपया "<ph name="DEVICE_NAME" />" मा यो पिन कोड प्रविष्टि गर्नुहोस्:</translation> <translation id="2212565012507486665">कुकीहरूलाई अनुमति दिनुहोस्</translation> <translation id="2213140827792212876">आदान प्रदानसम्बन्धी आइकन हटाउनुहोस्</translation> @@ -1335,7 +1332,6 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउजर खोल्न सकिएन</translation> <translation id="2804667941345577550">तपाईंलाई खुला ट्याबहरूलगायत यस साइटबाट साइन आउट गरिने छ</translation> <translation id="2804680522274557040">क्यामेरा निष्क्रिय पारियो</translation> -<translation id="2805539617243680210">तपाईं पूर्ण रूपमा तयार हुनुहुन्छ!</translation> <translation id="2805646850212350655">Microsoft गुप्तिकरण फाइल प्रणाली</translation> <translation id="2805756323405976993">एप्स</translation> <translation id="2805770823691782631">अतिरिक्त विवरणहरू</translation> @@ -2011,6 +2007,7 @@ <translation id="3742055079367172538">स्क्रिनसट लिइयो</translation> <translation id="3742666961763734085">त्यो नाम भएको सङ्गठनात्मक एकाइ फेला पार्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।</translation> <translation id="3744111561329211289">पृष्ठभूमिमा सिंक गर्ने सुविधा</translation> +<translation id="3747077776423672805">अनुप्रयोग हटाउन, सेटिङहरू > Google Play स्टोर > Android का प्राथमिकताहरू व्यवस्थापन गर्नुहोस् > अनुप्रयोगहरू वा अनुप्रयोग प्रबन्धक नामक विकल्पमा जानुहोस्। त्यसपछि आफूले स्थापना रद्द गर्न चाहेको अनुप्रयोगमा ट्याप गर्नुहोस् (उक्त अनुप्रयोग फेला पार्न तपाईंले दायाँ वा बायाँतिर स्वाइप गर्नु पर्ने हुन सक्छ)। त्यसपछि स्थापना रद्द गर्नुहोस् वा असक्षम पार्नुहोस् नामक बटनमा ट्याप गर्नुहोस्।</translation> <translation id="3748026146096797577">जोडिएको छैन</translation> <translation id="3752582316358263300">ठिक छ...</translation> <translation id="3752673729237782832">मेरा यन्त्रहरू</translation> @@ -2725,7 +2722,6 @@ <translation id="4785719467058219317">तपाईं यस वेबसाइटमा दर्ता नगरिएको सुरक्षा साँचो प्रयोग गर्दै हुनुहुन्छ</translation> <translation id="4788092183367008521">कृपया आफ्नो इन्टरनेटको जाँच गरी फेरि प्रयास गर्नुहोस्।</translation> <translation id="4792711294155034829">एउटा मामिला रिपोर्ट गर्नुहोस्...</translation> -<translation id="4795022432560487924">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाएर आफ्ना बालकको Android सम्बन्धी अनुभवलाई सुधार गर्न मद्दत गर्नुहोस्। यस्तो डेटा तपाईंका बालकको पहिचान गर्ने प्रयोजनका लागि प्रयोग गरिने छैन र यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। मालिकले यो सेटिङ लागू गर्नुभएको हो। मालिकले यस यन्त्रको निदान तथा प्रयोगसम्बन्धी डेटा Google मा पठाउने विकल्प छनौट गर्न सक्नुहुन्छ। तपाईंका बालकको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="479536056609751218">वेबपृष्ठ, HTML मात्रै</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ब्लुटुथ लगहरू<ph name="END_LINK" /> संलग्न गर्नुहोस् (Google आन्तरिक)</translation> <translation id="4801448226354548035">खाताहरू लुकाउनुहोस्</translation> @@ -3550,7 +3546,6 @@ <translation id="5941711191222866238">सानो बनाउनुहोस</translation> <translation id="5942964813783878922">यो अद्यावधिक भएपछि तपाईंको <ph name="DEVICE_TYPE" /> पुनः सुरु हुने छ। भविष्यमा सफ्टवेयर र सुरक्षासम्बन्धी अद्यावधिकहरू स्वतः स्थापना गरिने छन्।</translation> <translation id="5944869793365969636">QR कोड स्क्यान गर्नुहोस्</translation> -<translation id="5945188205370098537">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाएर आफ्नो Android सम्बन्धी अनुभवलाई सुधार गर्न मद्दत गर्नुहोस्। यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा तपाईंको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">रिपोर्ट आईडी <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">फाइल पार्स गर्न सकिएन</translation> <translation id="5955282598396714173">तपाईंको पासवर्डको म्याद समाप्त भएको छ। यसलाई परिवर्तन गर्न कृपया साइन आउट गर्नुहोस्, त्यसपछि फेरि साइन इन गर्नुहोस्।</translation> @@ -3731,6 +3726,7 @@ <translation id="6181431612547969857">डाउनलोड रोकिएको</translation> <translation id="6185132558746749656">यन्त्र स्थान</translation> <translation id="6195693561221576702">यो यन्त्र अफलाइन डेमो मोडको प्रयोग गरी सेटअप गर्न सकिँदैन।</translation> +<translation id="6196640612572343990">तेस्रो पक्षीय कुकीहरूमाथि रोक लगाउनुहोस्</translation> <translation id="6196854373336333322">विस्तार "<ph name="EXTENSION_NAME" />" ले तपाईंका प्रोक्सी सेटिङहरूको नियन्त्रण गरेको छ, मतलब तपाईंले अनलाइन गरेको जुनसुकै कुरालाई यसले परिवर्तन गर्न, बिगार्न वा चियो गर्न सक्छ। यो किन परिवर्तन भयो भन्नेमा सुनिश्चित हुनुहुन्न भने सायद तपाईं यसलाई चाहनुहुन्न।</translation> <translation id="6198102561359457428">साइन आउट गर्नुहोस् र त्यसपछि पुन: साइन इन गर्नुहोस्...</translation> <translation id="6198252989419008588">PIN परिवर्तन गर्नुहोस्</translation> @@ -4394,7 +4390,6 @@ <translation id="711902386174337313">तपाईंका साइन-इन भएका यन्त्रहरूको सूची पढ्नुहोस्</translation> <translation id="7120865473764644444">सिंक सर्भरमा जडान गर्न सकिएन। पुन:प्रयास गर्दै...</translation> <translation id="7121362699166175603">ठेगाना पट्टीका इतिहास र स्वतः पूर्णताहरूलाई खाली गर्छ। तपाईंको Google खाताको <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> मा अन्य किसिमका ब्राउजिङ इतिहास रहेका हुन सक्छन्।</translation> -<translation id="7121389946694989825">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यस्तो डेटा तपाईंका बालकको पहिचान गर्ने प्रयोजनका लागि प्रयोग गरिने छैन र यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंका बालकको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">विकासकर्ताको मोड</translation> <translation id="7121728544325372695">स्मार्ट योजक चिन्ह</translation> <translation id="7123360114020465152">अब उप्रान्त समर्थित छैन</translation> @@ -5175,7 +5170,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ट्याब सारेर नयाँ विन्डोमा लैजानुहोस्}other{ट्याबहरू सारेर नयाँ विन्डोमा लैजानुहोस्}}</translation> <translation id="8179976553408161302">प्रविष्टि गर्नुहोस्</translation> <translation id="8180239481735238521">पृष्ठ</translation> -<translation id="8180294223783876911">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा तपाईंको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" ले जाँच गरिएका फोल्डरहरूमा रहेका छविहरू, भिडियो, र धव्नि फाइलहरूलाई पढ्न र मेटाउन सक्छ।</translation> <translation id="8181215761849004992">डोमेन जोड्न सकिँदैन। तपाईंसँग यन्त्रहरू थप्न सक्ने विशेषाधिकारहरू छ वा छैन भनेर हेर्न आफ्नो खाताको जाँच गर्नुहोस्।</translation> <translation id="8182105986296479640">अनुप्रयोगले प्रतिक्रिया जनाइरहेको छैन।</translation> @@ -5197,7 +5191,6 @@ <translation id="8203732864715032075">सूचनाहरू प्राप्त गर्न यो कम्प्युटरको प्रयोग गर्नुका साथै यसलाई सन्देश प्रवाह गर्ने पूर्वनिर्धारित कम्प्युटरका रूपमा सेट गर्नुहोस्।<ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation> <translation id="8204129288640092672">तपाईंका अभिभावकले "<ph name="APP_NAME" />" माथि रोक लगाउनुभएको छ। यो अनुप्रयोग प्रयोग गर्न आफ्ना अभिभावकको अनुमति लिनुहोस्।</translation> <translation id="820568752112382238">सबैभन्दा बढी हेरिएका साइटहरू</translation> -<translation id="8206581664590136590">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाएर आफ्ना बालकको Android सम्बन्धी अनुभवलाई सुधार गर्न मद्दत गर्नुहोस्। यस्तो डेटा तपाईंका बालकको पहिचान गर्ने प्रयोजनका लागि प्रयोग गरिने छैन र यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंका बालकको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ब्लुजी</translation> <translation id="8206859287963243715">सेल्युलर</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{डाउनलोड हुँदैछ}other{डाउनलोड हुँदैछन्}}</translation> @@ -5733,7 +5726,6 @@ <translation id="8912362522468806198">Google खाता</translation> <translation id="8912793549644936705">तन्काउनुहोस्</translation> <translation id="8912810933860534797">स्वतः स्क्यान गर्ने सुविधा सक्षम पार्नुहोस्</translation> -<translation id="891365694296252935">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यस्तो डेटा तपाईंका बालकको पहिचान गर्ने प्रयोजनका लागि प्रयोग गरिने छैन र यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। मालिकले यो सेटिङ लागू गर्नुभएको हो। तपाईंका बालकको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलाप सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">सुझावहरू लोड गर्दै</translation> <translation id="8916476537757519021">इनकगनिटो सबफ्रेम: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">तपाईंको सुरक्षा साँचोको पुष्टि गर्दै...</translation> @@ -5869,7 +5861,6 @@ <translation id="9101691533782776290">अनुप्रयोग सुरु गर्नुहोस्</translation> <translation id="9102610709270966160">विस्तारलाई सक्षम पार्नुहोस्</translation> <translation id="9103868373786083162">इतिहास हेर्न सन्दर्भ मेनु, पछाडि जान प्रेस गर्नुहोस्</translation> -<translation id="9104396740804929809">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाएर आफ्नो Android सम्बन्धी अनुभवलाई सुधार गर्न मद्दत गर्नुहोस्। यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। मालिकले यो सेटिङ लागू गर्नुभएको हो। मालिकले यस यन्त्रको निदान तथा प्रयोगसम्बन्धी डेटा Google मा पठाउने विकल्प छनौट गर्न सक्नुहुन्छ। तपाईंको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा तपाईंको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK1" />थप जान्नुहोस्<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ठाउँ खाली गर्न यन्त्रको भण्डारणबाट फाइलहरू मेटाउनुहोस्।</translation> <translation id="9109283579179481106">मोबाइल नेटवर्कमा जोड्नुहोस्</translation> <translation id="9111102763498581341">अनलक गर्नुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 1aa2f32..385129e 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Gehoste app-gegevens</translation> <translation id="1776712937009046120">Gebruiker toevoegen</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Dit apparaat wordt beheerd door <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Klik op Volgende om door te gaan met inloggen op je <ph name="BEGIN_BOLD" /><ph name="DOMAIN" />-account<ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Geef deze toegangscode op '<ph name="DEVICE_NAME" />' op:</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Groep sluiten</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Er is een probleem opgetreden met het genereren van het printeroverzicht. Sommige van je printers zijn mogelijk niet geregistreerd voor <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">De zoekmachine die wordt gebruikt in de <ph name="BEGIN_LINK" />adresbalk<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Alles lezen en wijzigen wat je typt</translation> -<translation id="220792432208469595">Verzend gebruiks- en diagnostische gegevens. Dit apparaat verzendt momenteel automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google. Deze gegevens kunnen worden gebruikt om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Deze instelling wordt afgedwongen door de eigenaar. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld, kunnen deze gegevens worden opgeslagen in je Google-account. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Voer deze pincode in op '<ph name="DEVICE_NAME" />':</translation> <translation id="2212565012507486665">Cookies toestaan</translation> <translation id="2213140827792212876">Delen verwijderen</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">De alternatieve browser kan niet worden geopend</translation> <translation id="2804667941345577550">Je wordt uitgelogd bij deze site, ook in geopende tabbladen</translation> <translation id="2804680522274557040">Camera is uitgeschakeld</translation> -<translation id="2805539617243680210">Je bent helemaal klaar</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Aanvullende informatie</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Screenshot gemaakt</translation> <translation id="3742666961763734085">Kan geen organisatie-eenheid met die naam vinden. Probeer het opnieuw.</translation> <translation id="3744111561329211289">Synchronisatie op de achtergrond</translation> +<translation id="3747077776423672805">Als je apps wilt verwijderen, ga je naar Instellingen > Google Play Store > Android-voorkeuren beheren > Apps of App-beheer. Tik op de app die je wilt verwijderen (je moet mogelijk naar rechts of links vegen om de app te vinden). Tik vervolgens op Verwijderen of Uitschakelen.</translation> <translation id="3748026146096797577">Niet verbonden</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mijn apparaten</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Je gebruikt een beveiligingssleutel die niet is geregistreerd voor deze website</translation> <translation id="4788092183367008521">Controleer de netwerkverbinding en probeer het opnieuw.</translation> <translation id="4792711294155034829">&Een probleem melden...</translation> -<translation id="4795022432560487924">Verzend gebruiks- en diagnostische gegevens. Verbeter de Android-functionaliteit voor je kind door automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google te verzenden. Deze gegevens worden niet gebruikt om je kind te identificeren en kunnen helpen om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Deze instelling wordt afgedwongen door de eigenaar. De eigenaar kan ervoor kiezen diagnostische en gebruiksgegevens voor dit apparaat naar Google te verzenden. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webpagina, alleen HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth-logboeken<ph name="END_LINK" /> toevoegen (voor intern Google-gebruik)</translation> <translation id="4801448226354548035">Accounts verbergen</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatische downloads</translation> <translation id="5653154844073528838">Je hebt <ph name="PRINTER_COUNT" /> opgeslagen printers.</translation> <translation id="5656845498778518563">Feedback sturen naar Google</translation> +<translation id="5657156137487675418">Alle cookies toestaan</translation> <translation id="5657667036353380798">Voor de externe extensie moet Chrome-versie <ph name="MINIMUM_CHROME_VERSION" /> of hoger zijn geïnstalleerd.</translation> <translation id="5658415415603568799">Voor extra beveiliging vraagt Smart Lock je na 20 uur je wachtwoord op te geven.</translation> <translation id="5659593005791499971">E-mailadres</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimaliseren</translation> <translation id="5942964813783878922">Na deze update wordt je <ph name="DEVICE_TYPE" /> opnieuw opgestart. Toekomstige software- en beveiligingsupdates worden automatisch geïnstalleerd.</translation> <translation id="5944869793365969636">QR-code scannen</translation> -<translation id="5945188205370098537">Verzend gebruiks- en diagnostische gegevens. Verbeter je Android-functionaliteit door automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google te verzenden. Deze gegevens kunnen worden gebruikt om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld, kunnen deze gegevens worden opgeslagen in je Google-account. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Rapport-ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Kan bestand niet parseren</translation> <translation id="5955282598396714173">Je wachtwoord is verlopen. Log uit en weer in om het te wijzigen.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Apparaatlocatie</translation> <translation id="6186394685773237175">Geen gehackte wachtwoorden gevonden</translation> <translation id="6195693561221576702">Dit apparaat kan niet worden ingesteld in de offline demomodus.</translation> +<translation id="6196640612572343990">Indirecte cookies blokkeren</translation> <translation id="6196854373336333322">De extensie '<ph name="EXTENSION_NAME" />' heeft het beheer van je proxyinstellingen overgenomen. Dit betekent dat de extensie alles wat je online doet, kan wijzigen, beschadigen of bekijken. Als je niet zeker weet waarom deze wijziging heeft plaatsgevonden, is het waarschijnlijk een ongewenste wijziging.</translation> <translation id="6198102561359457428">Log uit en log daarna weer in...</translation> <translation id="6198252989419008588">Pincode wijzigen</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">De lijst met je ingelogde apparaten lezen</translation> <translation id="7120865473764644444">Kan geen verbinding maken met de synchronisatieserver. Opnieuw proberen...</translation> <translation id="7121362699166175603">Hiermee worden de geschiedenis en automatische aanvullingen voor de adresbalk gewist. Er kunnen andere vormen van browsegeschiedenis zijn opgeslagen voor je Google-account op <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Verzend gebruiks- en diagnostische gegevens. Dit apparaat verzendt momenteel automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google. Deze gegevens worden niet gebruikt om je kind te identificeren en kunnen helpen om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Ontwikkelaarsmodus</translation> <translation id="7121728544325372695">Slimme streepjes</translation> <translation id="7123360114020465152">Niet meer ondersteund</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Er is een fout opgetreden terwijl Chrome naar schadelijke software zocht</translation> <translation id="7280649757394340890">Spraakinstellingen voor tekst-naar-spraak</translation> <translation id="7280877790564589615">Toestemming gevraagd</translation> -<translation id="7281268427852119151">Je browsegeschiedenis gebruiken om Google Zoeken, advertenties en andere Google-services te personaliseren</translation> <translation id="7282992757463864530">Infobalk</translation> <translation id="7287143125007575591">Toegang geweigerd.</translation> <translation id="7287411021188441799">Standaard achtergrond herstellen</translation> @@ -5232,7 +5227,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Tabblad verplaatsen naar nieuw venster}other{Tabbladen verplaatsen naar nieuw venster}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">pagina</translation> -<translation id="8180294223783876911">Verzend gebruiks- en diagnostische gegevens. Dit apparaat verzendt momenteel automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google. Deze gegevens kunnen worden gebruikt om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld, kunnen deze gegevens worden opgeslagen in je Google-account. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">'<ph name="EXTENSION" />' kan afbeeldingen, video- en geluidsbestanden lezen en verwijderen op de gecontroleerde locaties.</translation> <translation id="8181215761849004992">Kan het domein niet koppelen. Controleer je account om te zien of je over voldoende rechten beschikt om apparaten toe te voegen.</translation> <translation id="8182105986296479640">App reageert niet</translation> @@ -5254,7 +5248,6 @@ <translation id="8203732864715032075">je meldingen te sturen en deze computer standaard te gebruiken voor Berichten. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> is geblokkeerd door je ouder. Vraag je ouder toestemming om deze app te gebruiken.</translation> <translation id="820568752112382238">Meest bezochte sites</translation> -<translation id="8206581664590136590">Verzend gebruiks- en diagnostische gegevens. Verbeter de Android-functionaliteit voor je kind door automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google te verzenden. Deze gegevens worden niet gebruikt om je kind te identificeren en kunnen helpen om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Mobiel</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Download wordt uitgevoerd}other{Downloads worden uitgevoerd}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google-account</translation> <translation id="8912793549644936705">Uitrekken</translation> <translation id="8912810933860534797">Automatisch scannen inschakelen</translation> -<translation id="891365694296252935">Verzend gebruiks- en diagnostische gegevens. Dit apparaat verzendt momenteel automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google. Deze gegevens worden niet gebruikt om je kind te identificeren en helpen bij het verbeteren van de systeem- en app-stabiliteit en andere optimalisaties. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Deze instelling wordt afgedwongen door de eigenaar. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Suggestie wordt geladen</translation> <translation id="8916476537757519021">Incognito-subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Je beveiligingssleutel verifiëren…</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">App starten</translation> <translation id="9102610709270966160">Extensie inschakelen</translation> <translation id="9103868373786083162">Druk op Terug > contextmenu om de geschiedenis te bekijken</translation> -<translation id="9104396740804929809">Verzend gebruiks- en diagnostische gegevens. Verbeter je Android-functionaliteit door automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google te verzenden. Deze gegevens kunnen worden gebruikt om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Deze instelling wordt afgedwongen door de eigenaar. De eigenaar kan ervoor kiezen diagnostische en gebruiksgegevens voor dit apparaat naar Google te verzenden. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld, kunnen deze gegevens worden opgeslagen in je Google-account. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Verwijder bestanden uit de opslag van je apparaat om ruimte vrij te maken.</translation> <translation id="9109283579179481106">Verbinden met mobiel netwerk</translation> <translation id="9111102763498581341">Ontgrendelen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 9016a6fa..161cccd0 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">Appdata på vertstjener</translation> <translation id="1776712937009046120">Legg til bruker</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Denne enheten administreres av <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Klikk på «Neste» for å fortsette med å logge på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-kontoen din.</translation> <translation id="1779652936965200207">Skriv inn dette passordet på «<ph name="DEVICE_NAME" />»:</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Lukk gruppen</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">Det oppstod et problem med oppføring av skrivere. Enkelte av skriverne dine er ikke registrert på <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Søkemotoren som brukes i <ph name="BEGIN_LINK" />adressefeltet<ph name="END_LINK" /></translation> <translation id="2204034823255629767">lese og endre alt du skriver</translation> -<translation id="220792432208469595">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Dette bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Denne innstillingen håndheves av eieren. Hvis du har slått på innstillingen for annen nett- og appaktivitet, kan disse dataene bli lagret i Google-kontoen din. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Skriv inn denne PIN-koden på «<ph name="DEVICE_NAME" />»:</translation> <translation id="2212565012507486665">Tillat informasjonskapsler</translation> <translation id="2213140827792212876">Slutt å dele</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">Kunne ikke åpne den alternative nettleseren</translation> <translation id="2804667941345577550">Du blir logget av dette nettstedet, også i faner som er åpne</translation> <translation id="2804680522274557040">Kameraet er slått av</translation> -<translation id="2805539617243680210">Du er klar!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Apper</translation> <translation id="2805770823691782631">Flere detaljer</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">Skjermdump tatt</translation> <translation id="3742666961763734085">Finner ikke noen organisasjonsenhet med det navnet. Prøv på nytt.</translation> <translation id="3744111561329211289">Bakgrunnssynkronisering</translation> +<translation id="3747077776423672805">For å fjerne apper, gå til Innstillinger > Google Play Butikk > Administrer Android-innstillinger > Apper eller Appstyring. Trykk på appen du vil avinstallere (du må kanskje sveipe til høyre eller venstre for å finne den). Trykk deretter på Avinstaller eller Slå av.</translation> <translation id="3748026146096797577">Ikke tilkoblet</translation> <translation id="3752582316358263300">OK</translation> <translation id="3752673729237782832">Mine enheter</translation> @@ -2752,7 +2749,6 @@ <translation id="4785719467058219317">Du bruker en sikkerhetsnøkkel som ikke er registrert på dette nettstedet</translation> <translation id="4788092183367008521">Sjekk nettverkstilkoblingen din, og prøv på nytt.</translation> <translation id="4792711294155034829">&Rapporter et problem</translation> -<translation id="4795022432560487924">Send bruks- og diagnostikkdata. Hjelp til med å gjøre Android-opplevelsen bedre for barnet ditt ved å sende diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Denne innstillingen håndheves av eieren. Eieren kan velge å sende diagnostikk- og bruksdata for denne enheten til Google. Hvis du har slått på innstillingen for annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Nettside – bare HTML</translation> <translation id="4798236378408895261">Legg ved <ph name="BEGIN_LINK" />Bluetooth-logger<ph name="END_LINK" /> (Google-internt)</translation> <translation id="4801448226354548035">Skjul kontoer</translation> @@ -3379,6 +3375,7 @@ <translation id="5649053991847567735">Automatiske nedlastinger</translation> <translation id="5653154844073528838">Du har <ph name="PRINTER_COUNT" /> lagrede skrivere.</translation> <translation id="5656845498778518563">Send tilbakemelding til Google</translation> +<translation id="5657156137487675418">Tillat alle informasjonskapsler</translation> <translation id="5657667036353380798">Den eksterne utvidelsen krever at Chrome versjon <ph name="MINIMUM_CHROME_VERSION" /> eller nyere er installert.</translation> <translation id="5658415415603568799">For å beskytte deg bedre ber Smart Lock deg om å skrive inn passordet ditt etter 20 timer.</translation> <translation id="5659593005791499971">E-post</translation> @@ -3586,7 +3583,6 @@ <translation id="5941711191222866238">Minimer</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> starter på nytt etter denne oppdateringen. Fremtidige programvare- og sikkerhetsoppdateringer blir installert automatisk.</translation> <translation id="5944869793365969636">Skann QR-koden</translation> -<translation id="5945188205370098537">Send bruks- og diagnostikkdata. Hjelp til med å gjøre Android-opplevelsen din bedre ved å sende diagnostikk-, enhets- og appbruksdata til Google automatisk. Dette bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet, kan disse dataene bli lagret i Google-kontoen din. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Rapport-ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Kan ikke parse filen</translation> <translation id="5955282598396714173">Passordet ditt er utløpt. Logg av og på igjen for å endre det.</translation> @@ -3772,6 +3768,7 @@ <translation id="6185132558746749656">Enhetsposisjon</translation> <translation id="6186394685773237175">Fant ingen passord som er utsatt for sikkerhetsbrudd</translation> <translation id="6195693561221576702">Denne enheten kan ikke konfigureres i demomodus uten nett.</translation> +<translation id="6196640612572343990">Blokkér informasjonskapsler fra tredjeparter</translation> <translation id="6196854373336333322">Utvidelsen «<ph name="EXTENSION_NAME" />» har tatt kontroll over proxy-tjenerinnstillingene dine, noe som betyr at den kan endre, ødelegge eller spionere på alt du foretar deg på nettet. Hvis du ikke er sikker på hvorfor denne endringen fant sted, vil du mest sannsynlig ikke ha den.</translation> <translation id="6198102561359457428">Logg deg av og på igjen</translation> <translation id="6198252989419008588">Endre personlig kode</translation> @@ -4438,7 +4435,6 @@ <translation id="711902386174337313">lese listen over de påloggede enhetene dine</translation> <translation id="7120865473764644444">Kunne ikke koble til synkroniseringstjeneren. Prøver på nytt …</translation> <translation id="7121362699166175603">Tømmer loggen og fjerner autofullføringer i adressefeltet. Det kan hende Google-kontoen din har andre typer nettleserlogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Utviklermodus</translation> <translation id="7121728544325372695">Smarte tankestreker</translation> <translation id="7123360114020465152">Støttes ikke lenger</translation> @@ -4553,7 +4549,6 @@ <translation id="7280041992884344566">Det oppsto en feil mens Chrome søkte etter skadelig programvare</translation> <translation id="7280649757394340890">Stemmeinnstillinger for tekst til tale</translation> <translation id="7280877790564589615">Tillatelse forespurt</translation> -<translation id="7281268427852119151">Bruk nettleserloggen din for å gi Søk, annonser og andre Google-tjenester et personlig preg</translation> <translation id="7282992757463864530">Informasjonsfelt</translation> <translation id="7287143125007575591">Ingen tilgang.</translation> <translation id="7287411021188441799">Gjenopprett standardbakgrunnen</translation> @@ -5228,7 +5223,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flytt fanen til et nytt vindu}other{Flytt fanene til et nytt vindu}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">side</translation> -<translation id="8180294223783876911">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Dette bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet, kan disse dataene bli lagret i Google-kontoen din. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">«<ph name="EXTENSION" />» kan lese og slette bilder, videofiler og lydfiler i posisjonene det er merket av for.</translation> <translation id="8181215761849004992">Kan ikke knytte til domenet. Sjekk kontoen din for å se om du har tilstrekkelige rettigheter til å legge til enheter.</translation> <translation id="8182105986296479640">Appen svarer ikke.</translation> @@ -5250,7 +5244,6 @@ <translation id="8203732864715032075">sende deg varsler og huske denne datamaskinen som standard for Messages (<ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" />)</translation> <translation id="8204129288640092672">«<ph name="APP_NAME" />» er blokkert av forelderen din. Spør forelderen din om tillatelse til å bruke denne appen.</translation> <translation id="820568752112382238">Mest besøkte nettsteder</translation> -<translation id="8206581664590136590">Send bruks- og diagnostikkdata. Hjelp til med å gjøre Android-opplevelsen bedre for barnet ditt ved å sende diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Plystre</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Nedlasting pågår}other{Nedlastinger pågår}}</translation> @@ -5796,7 +5789,6 @@ <translation id="8912362522468806198">Google-konto</translation> <translation id="8912793549644936705">Strekk ut</translation> <translation id="8912810933860534797">Aktivér automatisk skanning</translation> -<translation id="891365694296252935">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Denne innstillingen håndheves av eieren. Hvis du har slått på annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Laster inn forslag …</translation> <translation id="8916476537757519021">Inkognito-underramme: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Bekrefter sikkerhetsnøkkelen din …</translation> @@ -5933,7 +5925,6 @@ <translation id="9101691533782776290">Start appen</translation> <translation id="9102610709270966160">Slå på utvidelsen</translation> <translation id="9103868373786083162">Trykk for å gå tilbake, eller trykk på kontekstmenyen for å se loggen</translation> -<translation id="9104396740804929809">Send bruks- og diagnostikkdata. Hjelp til med å gjøre Android-opplevelsen din bedre ved å sende diagnostikk-, enhets- og appbruksdata til Google automatisk. Dette bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Denne innstillingen håndheves av eieren. Eieren kan velge å sende diagnostikk- og bruksdata for denne enheten til Google. Hvis du har slått på innstillingen for annen nett- og appaktivitet, kan disse dataene bli lagret i Google-kontoen din. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">For å frigjøre plass, slett filer fra enhetslagringen.</translation> <translation id="9109283579179481106">Koble til mobilnettverk</translation> <translation id="9111102763498581341">Lås opp</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index ee377509..1de0fbe 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ହୋଷ୍ଟ କରାଯାଇଥିବା ଆପ୍ ଡାଟା</translation> <translation id="1776712937009046120">ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରନ୍ତୁ</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ଏହି ଡିଭାଇସ୍ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି। - ଆପଣଙ୍କର <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ଆକାଉଣ୍ଟରେ ସାଇନ୍ ଇନ୍ ଜାରି ରଖିବାକୁ, ଦୟାକରି "ପରବର୍ତ୍ତୀ"ରେ କ୍ଲିକ୍ କରନ୍ତୁ।</translation> <translation id="1779652936965200207">ଦୟାକରି ଏହି ପାସ୍କୀ "<ph name="DEVICE_NAME" />"ରେ ଲେଖନ୍ତୁ</translation> <translation id="177989070088644880">ଆପ୍ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ଗୋଷ୍ଠୀ ବନ୍ଦ କରନ୍ତୁ</translation> @@ -888,7 +886,6 @@ <translation id="2202898655984161076">ପ୍ରିଣ୍ଟର୍ଗୁଡ଼ିକର ତାଲିକାକରଣ ସମୟରେ କିଛି ସମସ୍ୟା ଦେଖାଦେଲା। ଆପଣଙ୍କର କିଛି ପ୍ରିଣ୍ଟର୍ <ph name="CLOUD_PRINT_NAME" /> ସହ ସଫଳଭାବେ ପଞ୍ଜିକୃତ ହୋଇନଥାଇପାରେ।</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ଠିକଣା ବାର୍<ph name="END_LINK" />ରେ ବ୍ୟବହୃତ ସର୍ଚ୍ଚ ଇଞ୍ଜିନ୍</translation> <translation id="2204034823255629767">ଆପଣ ଯାହା କିଛି ଟାଇପ୍ କରୁଛନ୍ତି ତାହା ପଢ଼ନ୍ତୁ ଏବଂ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> -<translation id="220792432208469595">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତରୂପେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଏବଂ ଆପ୍ ବ୍ୟବହୃତ ଡାଟା Googleକୁ ପଠାଉଛି। ଏହା ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା ମଧ୍ୟ Google ଆପ୍ସ ଏବଂ ଏହାର ସହଭାଗୀମାନଙ୍କୁ ଯେପରିକି, Android ଡେଭଲପର୍ଙ୍କୁ ସାହାଯ୍ୟ କରିବ। ଏହି ସେଟିଂସ୍ ମାଲିକଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି। ଯଦି ଆପଣଙ୍କର ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂ ଚାଲୁ ଅଛି, ତେବେ ଏହି ଡାଟା ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="220858061631308971">ଦୟାକରି "<ph name="DEVICE_NAME" />"ରେ ଏହି PIN କୋଡ୍ ଲେଖନ୍ତୁ:</translation> <translation id="2212565012507486665">କୁକୀଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="2213140827792212876">ସେୟାରିଂ କାଢନ୍ତୁ</translation> @@ -1348,7 +1345,6 @@ <translation id="2804043232879091219">ବିକଳ୍ପ ବ୍ରାଉଜର୍ ଖୋଲାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="2804667941345577550">ଖୋଲାଥିବା ଟାବ୍ଗୁଡ଼ିକ ସମେତ ଆପଣ ଏହି ସାଇଟ୍ରୁ ସାଇନ୍ ଆଉଟ୍ ହୋଇଯିବେ।</translation> <translation id="2804680522274557040">କ୍ୟାମେରା ବନ୍ଦ କରାଯାଇଛି</translation> -<translation id="2805539617243680210">ଆପଣ ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ପ୍ରସ୍ତୁତ ଅଛନ୍ତି!</translation> <translation id="2805646850212350655">Microsoft ଏନ୍କ୍ରିପ୍ଟିଂ ଫାଇଲ୍ ସିଷ୍ଟମ୍</translation> <translation id="2805756323405976993">ଆପ୍ସ</translation> <translation id="2805770823691782631">ଅତିରିକ୍ତ ବିବରଣୀ</translation> @@ -2749,7 +2745,6 @@ <translation id="4785719467058219317">ଆପଣ ଏପରି ଏକ କୀ ବ୍ୟବହାର କରୁଛନ୍ତି, ଯାହାକୁ ଏହି ୱେବସାଇଟ୍ରେ ପଞ୍ଜୀକୃତ କରାଯାଇ ନାହିଁ</translation> <translation id="4788092183367008521">ଦୟାକରି ଆପଣଙ୍କ ନେଟ୍ୱର୍କ ସଂଯୋଗ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="4792711294155034829">ଏକ ସମସ୍ୟା ରିପୋର୍ଟ କରନ୍ତୁ...</translation> -<translation id="4795022432560487924">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟାକୁ ପଠାନ୍ତୁ। ସ୍ଵଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଓ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଇ ଆପଣଙ୍କ ପିଲାର Android ଅନୁଭବକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଆପଣଙ୍କ ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ଏହାକୁ ବ୍ୟବହାର କରାଯିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ଏବଂ ଅନ୍ୟାନ୍ୟ ଉନ୍ନତିରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ, ଯେପରି Android ଡେଭଲପର୍। ଏହି ସେଟିଂସ୍ ମାଲିକଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି। ମାଲିକ ଏହି ଡିଭାଇସ୍ ପାଇଁ Googleକୁ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଓ ବ୍ୟବହାର ଡାଟା ପଠାଇବାକୁ ବାଛିପାରନ୍ତି। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂସ୍ ଚାଲୁ କରାଯାଏ , ତେବେ ଏହି ଡାଟା ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ୱେବ୍ପୃଷ୍ଠା, କେବଳ HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ବ୍ଲୁଟୁଥ୍ ଲଗ୍ଗୁଡ଼ିକ<ph name="END_LINK" /> ଯୋଗ କରନ୍ତୁ (Google ଇଣ୍ଟର୍ନଲ୍)</translation> <translation id="4801448226354548035">ଆକାଉଣ୍ଟଗୁଡ଼ିକ ଲୁଚାନ୍ତୁ</translation> @@ -3376,6 +3371,7 @@ <translation id="5649053991847567735">ସ୍ୱଚାଳିତ ଡାଉନ୍ଲୋଡ୍ଗୁଡ଼ିକ</translation> <translation id="5653154844073528838">ଆପଣଙ୍କ ପାଖରେ <ph name="PRINTER_COUNT" />ଟି ସେଭ୍ କରାଯାଇଥିବା ପ୍ରିଣ୍ଟର୍ ଅଛି।</translation> <translation id="5656845498778518563">Googleକୁ ମତାମତ ପଠାନ୍ତୁ</translation> +<translation id="5657156137487675418">ସମସ୍ତ କୁକୀଗୁଡିକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="5657667036353380798">ଏକ୍ସଟର୍ନାଲ୍ ଏକ୍ସଟେନ୍ସନ୍ chrome ସଂସ୍କରଣ <ph name="MINIMUM_CHROME_VERSION" /> କିମ୍ବା ଏହାର ଉନ୍ନତ ସଂସ୍କରଣକୁ ଇନ୍ଷ୍ଟଲ୍ କରିବା ଆବଶ୍ୟକ କରେ।</translation> <translation id="5658415415603568799">ଅତିରିକ୍ତ ସୁରକ୍ଷା ପାଇଁ ସ୍ମାର୍ଟ ଲକ୍ ଆପଣଙ୍କୁ 20 ଘଣ୍ଟା ପରେ ଆପଣଙ୍କର ପାସ୍ୱର୍ଡ ଲେଖିବାକୁ କହିବ।</translation> <translation id="5659593005791499971">ଇମେଲ୍</translation> @@ -3583,7 +3579,6 @@ <translation id="5941711191222866238">ସର୍ବନିମ୍ନ କରନ୍ତୁ</translation> <translation id="5942964813783878922">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" /> ଏହି ଅପ୍ଡେଟ୍ ପରେ ରିଷ୍ଟାର୍ଟ ହେବ। ଭବିଷ୍ୟତର ସଫ୍ଟୱେୟାର୍ ଏବଂ ସୁରକ୍ଷା ଅପ୍ଡେଟ୍ଗୁଡ଼ିକ ସ୍ୱଚାଳିତରୂପେ ଇନ୍ଷ୍ଟଲ୍ ହେବ।</translation> <translation id="5944869793365969636">QR କୋଡ୍ ସ୍କାନ୍ କରନ୍ତୁ</translation> -<translation id="5945188205370098537">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। Googleକୁ ସ୍ଵଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଓ ଆପ୍ ବ୍ୟବହାର ଡାଟା ପଠାଇ ଆପଣଙ୍କର Android ଅନୁଭବକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଏହା ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତିରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ Android ଡେଭଲପର୍ ଭଳି ତାହାର ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂ ଚାଲୁ ଅଛି, ତେବେ ଏହି ଡାଟା ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ରିପୋର୍ଟ ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ଫାଇଲ୍କୁ ପାର୍ସ କରିବାରେ ଅକ୍ଷମ</translation> <translation id="5955282598396714173">ଆପଣଙ୍କ ପାସ୍ୱର୍ଡର ସମୟସୀମା ଶେଷ ହୋଇଛି। ପରିବାର୍ତ୍ତନ କରିବାକୁ ଦୟାକରି ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ, ଏହାପରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।</translation> @@ -3769,6 +3764,7 @@ <translation id="6185132558746749656">ଡିଭାଇସ୍ ଲୋକେସନ୍</translation> <translation id="6186394685773237175">କୌଣସି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ ମିଳିଲା ନାହିଁ</translation> <translation id="6195693561221576702">ଏହି ଡିଭାଇସ୍ଟି ଅଫ୍ଲାଇନ୍ ଡେମୋ ମୋଡ୍ରେ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିବ ନାହିଁ।</translation> +<translation id="6196640612572343990">ତୃତୀୟ ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ</translation> <translation id="6196854373336333322">ଏକ୍ସଟେନ୍ସନ୍ "<ph name="EXTENSION_NAME" />" ଆପଣଙ୍କର ପ୍ରୋକ୍ସି ସେଟିଂସ୍କୁ ନିୟନ୍ତ୍ରଣକୁ ନେଇଛି, ଯାହାର ଅର୍ଥ ଆପଣ ଅନ୍ଲାଇନ୍ରେ ଯାହା କିଛି କରନ୍ତି, ସେଥିରେ ଏହା ପରିବର୍ତ୍ତନ କରିପାରେ, ଭାଙ୍ଗିପାରେ କିମ୍ବା ଲୁଚି ଶୁଣିପାରେ। ଯଦି ଆପଣ ସୁନିଶ୍ଚିତ ନୁହଁନ୍ତି ଯେ ଏହି ପରିବର୍ତ୍ତନ କ’ଣ ପାଇଁ ହେଲା, ତେବେ ସମ୍ଭବତଃ ଆପଣ ଏହା ଚାହାନ୍ତି ନାହିଁ।</translation> <translation id="6198102561359457428">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ ଏବଂ ତା’ପରେ ପୁନର୍ବାର ସାଇନ୍ ଇନ୍ କରନ୍ତୁ...</translation> <translation id="6198252989419008588">PIN ବଦଳାନ୍ତୁ</translation> @@ -4437,7 +4433,6 @@ <translation id="711902386174337313">ଆପଣଙ୍କ ଦ୍ୱାରା ସାଇନ୍-ଇନ୍ କରାଯାଇଥିବା ଡିଭାଇସ୍ଗୁଡ଼ିକର ତାଲିକା ପଢ଼ନ୍ତୁ</translation> <translation id="7120865473764644444">ସିଙ୍କ୍ ସର୍ଭର୍ ସହ ସଂଯୋଗ କରିପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରାଯାଉଛି…</translation> <translation id="7121362699166175603">ଠିକଣା ବାର୍ରେ ଥିବା ଇତିବୃତ୍ତି ଓ ସ୍ୱତଃପୂରଣଗୁଡ଼ିକୁ ଖାଲି କରେ। ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟର ବାଉଜିଂ ଇତିବୃତ୍ତି <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ରେ ଅନ୍ୟ ଫର୍ମରେ ଥାଇପାରେ।</translation> -<translation id="7121389946694989825">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟାକୁ ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତରୂପେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଆପ୍ ଏବଂ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଉଛି। ଆପଣଙ୍କ ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ଏହାକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍ରେ ସ୍ଥିରତା ତଥା ଅନ୍ୟ ଉନ୍ନତିଗୁଡ଼ିକ ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା Google ଆପ୍ସ ଏବଂ ତାହାର ସହଭାଗୀ, ଯେପରିକି Android ଡେଭଲପର୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂସ୍ ଚାଲୁ ସ୍ଥିତିରେ ଥାଏ, ତେବେ ଏହି ଡାଟା ହୁଏତ ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଯିବ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ଡେଭଲପର୍ ମୋଡ୍</translation> <translation id="7121728544325372695">ସ୍ମାର୍ଟ ଡ୍ୟାଶ୍</translation> <translation id="7123360114020465152">ଆଉ ସମର୍ଥିତ ନୁହେଁ</translation> @@ -4552,7 +4547,6 @@ <translation id="7280041992884344566">Chrome କ୍ଷତିକାରକ ସଫ୍ଟୱେର୍ ସନ୍ଧାନ କରୁଥିବା ସମୟରେ ଏକ ତ୍ରୁଟି ଘଟିଛି</translation> <translation id="7280649757394340890">ଟେକ୍ସଟ୍-ରୁ-ସ୍ପିଚ୍ ଭଏସ୍ ସେଟିଂସ୍</translation> <translation id="7280877790564589615">ଅନୁମତି ଅନୁରୋଧ କରାଯାଇଛି</translation> -<translation id="7281268427852119151">Search, ads ଏବଂ ଅନ୍ୟ Google ସେବାଗୁଡ଼ିକୁ ବ୍ୟକ୍ତିଗତକୃତ କରିବା ପାଇଁ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଇତିହାସ ବ୍ୟବହାର କରନ୍ତୁ</translation> <translation id="7282992757463864530">ସୂଚନା ବାର୍</translation> <translation id="7287143125007575591">ଆକ୍ସେସ୍ ପ୍ରତ୍ୟାଖ୍ୟାନ କରାଗଲା।</translation> <translation id="7287411021188441799">ଡିଫଲ୍ଟ ପୃଷ୍ଠପଟ ପୁନଃସ୍ଥାପନ କରନ୍ତୁ</translation> @@ -5224,7 +5218,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବ୍ ମୁଭ୍ କରନ୍ତୁ}other{ନୂଆ ୱିଣ୍ଡୋକୁ ଟାବଗୁଡ଼ିକ ମୁଭ୍ କରନ୍ତୁ}}</translation> <translation id="8179976553408161302">ପ୍ରବେଶ</translation> <translation id="8180239481735238521">ପୃଷ୍ଠା</translation> -<translation id="8180294223783876911">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟାକୁ ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତରୂପେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଆପ୍ ଏବଂ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଉଛି। ଏହା ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ Android ଡେଭଲପର୍ ଭଳି ତାହାର ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ ଗତିବିଧି ସେଟିଂ ଚାଲୁ ଅଛି, ତେବେ ଏହି ଡାଟା ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ କରାଯାଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">ଚେକ୍ କରାଯିଥିବା ଲୋକେସନ୍ଗୁଡ଼ିକରେ "<ph name="EXTENSION" />", ଛବି, ଭିଡିଓ ଓ ସାଉଣ୍ଡ୍ ଫାଇଲ୍ଗୁଡ଼ିକୁ ପଢ଼ିପାରିବ ଓ ଡିଲିଟ୍ କରିପାରିବ।</translation> <translation id="8181215761849004992">ଡୋମେନ୍ରେ ସଂଯୁକ୍ତ କରାଯାଇପାରିବ ନାହିଁ। ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ଯୋଗ କରିବା ପାଇଁ ଆପଣଙ୍କ ପାଖରେ ପର୍ଯ୍ୟାପ୍ତ ଅଧିକାର ଅଛି କି ନାହିଁ ଦେଖିବାକୁ ଆପଣଙ୍କର ଆକାଉଣ୍ଟକୁ ଯାଞ୍ଚ କରନ୍ତୁ।</translation> <translation id="8182105986296479640">ଆପ୍ଲିକେସନ୍ ପ୍ରତିକ୍ରିୟା କରୁନାହିଁ।</translation> @@ -5246,7 +5239,6 @@ <translation id="8203732864715032075">ମେସେଜ୍ ପାଇଁ ଏହି କମ୍ପ୍ୟୁଟର୍ ଡିଫଲ୍ଟ ଅଟେ, ତାହା ମନେରଖିବାକୁ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଏ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ଆପଣଙ୍କ ବାପାମାଙ୍କ ଦ୍ୱାରା "<ph name="APP_NAME" />" ବ୍ଲକ୍ କରାଯାଇଛି। ଏହି ଆପ୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦେବା ପାଇଁ ଆପଣଙ୍କ ବାପାମାଙ୍କୁ କୁହନ୍ତୁ।</translation> <translation id="820568752112382238">ଅଧିକ ଦେଖାଯାଇଥିବା ସାଇଟ୍ଗୁଡ଼ିକ</translation> -<translation id="8206581664590136590">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। ସ୍ଵଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଓ ଆପ୍ ବ୍ୟବହାର ଡାଟାକୁ Googleକୁ ପଠାଇ ଆପଣଙ୍କ ପିଲାର Android ଅନୁଭବକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଏହା ଆପଣଙ୍କର ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ବ୍ୟବହାର କରାଯିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ Android ଡେଭଲପର୍ ଭଳି ତାହାର ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ ଗତିବିଧି ସେଟିଂସ୍ ଚାଲୁ ସ୍ଥିତିରେ ଥାଏ, ତେବେ ଏହି ଡାଟା ହୁଏତ ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଯିବ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ବ୍ଲୁସୀ</translation> <translation id="8206859287963243715">ସେଲ୍ୟୁଲାର୍</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ଡାଉନ୍ଲୋଡ୍ ଚାଲିଛି}other{ଡାଉନ୍ଲୋଡ୍ ଚାଲିଛି}}</translation> @@ -5792,7 +5784,6 @@ <translation id="8912362522468806198">Google ଆକାଉଣ୍ଟ</translation> <translation id="8912793549644936705">ବିସ୍ତାର କରନ୍ତୁ</translation> <translation id="8912810933860534797">ସ୍ୱତଃ-ସ୍କାନ୍ ସକ୍ଷମ କରନ୍ତୁ</translation> -<translation id="891365694296252935">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଏବଂ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଉଛି। ଏହା ଆପଣଙ୍କର ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ବ୍ୟବହାର କରାଯିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ Android ଡେଭଲପର୍ ଭଳି ତାହାର ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଏହି ସେଟିଂ ମାଲିକଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ ଗତିବିଧି ଚାଲୁ ସ୍ଥିତିରେ ଥାଏ, ତେବେ ଏହି ଡାଟା ହୁଏତ ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଯିବ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">ପରାମର୍ଶ ଲୋଡ୍ ହେଉଛି</translation> <translation id="8916476537757519021">ଇନ୍କଗ୍ନିଟୋ ସବଫ୍ରେମ୍: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">ଆପଣଙ୍କ ସୁରକ୍ଷା କୀ’ ଯାଞ୍ଚ କରାଯାଉଛି…</translation> @@ -5929,7 +5920,6 @@ <translation id="9101691533782776290">ଆପ୍ ଲଞ୍ଚ କରନ୍ତୁ</translation> <translation id="9102610709270966160">ଏକ୍ସଟେନ୍ସନ୍ ସକ୍ଷମ କରନ୍ତୁ</translation> <translation id="9103868373786083162">ଇତିବୃତ୍ତି ଦେଖିବାକୁ ଦୟାକରି ପ୍ରସଙ୍ଗ ମେନୁକୁ ଫେରନ୍ତୁ</translation> -<translation id="9104396740804929809">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। ସ୍ଵଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଓ ଆପ୍ ବ୍ୟବହାର ଡାଟାକୁ Googleକୁ ପଠାଇ ଆପଣଙ୍କର Android ଅନୁଭବକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଏହା ସିଷ୍ଟମ୍ ଓ ଆପ୍ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା, Google ଆପ୍ସ ଓ Android ଡେଭଲପର୍ ଭଳି ତାହାର ସହଭାଗୀମାନଙ୍କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଏହି ସେଟିଂସ୍ ମାଲିକଙ୍କ ଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି। ଏହି ଡିଭାଇସ୍ ପାଇଁ ମାଲିକ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଏବଂ ବ୍ୟବହାର ହେଉଥିବା ଡାଟା Googleକୁ ପଠାଇବା ପାଇଁ ବାଛିପାରନ୍ତି। ଯଦି ଆପଣଙ୍କର ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ କାର୍ଯ୍ୟକଳାପ ସେଟିଂ ଚାଲୁ ଅଛି, ତେବେ ଏହି ଡାଟା ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ସ୍ଥାନ ଖାଲି କରିବାକୁ, ଡିଭାଇସ୍ ଷ୍ଟୋରେଜ୍ରୁ ଫାଇଲ୍ ଡିଲିଟ୍ କରନ୍ତୁ।</translation> <translation id="9109283579179481106">ମୋବାଇଲ୍ ନେଟ୍ୱାର୍କକୁ ସଂଯୋଗ କରନ୍ତୁ</translation> <translation id="9111102763498581341">ଅନ୍ଲକ୍ କରନ୍ତୁ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 39172d4..cbaa364a 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ਹੋਸਟ ਕੀਤਾ ਐਪ ਡਾਟਾ</translation> <translation id="1776712937009046120">ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ਇਸ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ਵੱਲੋਂ ਕੀਤਾ ਗਿਆ ਹੈ। - ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖਣ ਲਈ "ਅੱਗੇ" 'ਤੇ ਕਲਿੱਕ ਕਰੋ।</translation> <translation id="1779652936965200207">ਕਿਰਪਾ ਕਰਕੇ "<ph name="DEVICE_NAME" />" ਤੇ ਇਹ ਪਾਸਕੁੰਜੀ ਦਰਜ ਕਰੋ:</translation> <translation id="177989070088644880">(<ph name="ANDROID_PACKAGE_NAME" />) ਐਪ</translation> <translation id="1780152987505130652">ਗਰੁੱਪ ਬੰਦ ਕਰੋ</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">ਪ੍ਰਿੰਟਰਾਂ ਦੀ ਸੂਚੀ ਬਣਾਉਣ ਵੇਲੇ ਇੱਕ ਸਮੱਸਿਆ ਹੋਈ ਸੀ। ਤੁਹਾਡੇ ਕੁਝ ਪ੍ਰਿੰਟਰ <ph name="CLOUD_PRINT_NAME" /> ਨਾਲ ਸਫਲਤਾਪੂਰਵਕ ਰਜਿਸਟਰ ਨਹੀਂ ਵੀ ਕੀਤੇ ਜਾ ਸਕਦੇ।</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ਪਤਾ ਪੱਟੀ<ph name="END_LINK" /> ਵਿੱਚ ਵਰਤਿਆ ਗਿਆ ਖੋਜ ਇੰਜਣ</translation> <translation id="2204034823255629767">ਜੋ ਵੀ ਤੁਸੀਂ ਟਾਈਪ ਕਰਦੇ ਹੋ, ਉਹ ਪੜ੍ਹੋ ਅਤੇ ਬਦਲੋ</translation> -<translation id="220792432208469595">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। ਇਹ ਡੀਵਾਈਸ ਇਸ ਵੇਲੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ Google ਨੂੰ ਭੇਜ ਰਿਹਾ ਹੈ। ਇਸ ਨਾਲ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਇਹ ਸੈਟਿੰਗ ਮਾਲਕ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਤੁਹਾਡੀ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="220858061631308971">ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਪਿੰਨ ਕੋਡ ਨੂੰ "<ph name="DEVICE_NAME" />" 'ਤੇ ਦਰਜ ਕਰੋ:</translation> <translation id="2212565012507486665">ਕੁਕੀਜ਼ ਨੂੰ ਆਗਿਆ ਦਿਓ</translation> <translation id="2213140827792212876">ਸਾਂਝਾਕਰਨ ਹਟਾਓ</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">ਵਿਕਲਪਿਕ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</translation> <translation id="2804667941345577550">ਖੁੱਲ੍ਹੀਆਂ ਟੈਬਾਂ ਸਮੇਤ, ਤੁਹਾਨੂੰ ਇਸ ਸਾਈਟ ਤੋਂ ਸਾਈਨ-ਆਊਟ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="2804680522274557040">ਕੈਮਰਾ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ</translation> -<translation id="2805539617243680210">ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋ!</translation> <translation id="2805646850212350655">Microsoft ਐਨਕ੍ਰਿਪਟਿੰਗ ਫਾਈਲ ਸਿਸਟਮ</translation> <translation id="2805756323405976993">ਐਪਸ</translation> <translation id="2805770823691782631">ਵਧੀਕ ਵੇਰਵੇ</translation> @@ -2019,6 +2015,7 @@ <translation id="3742055079367172538">ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਗਿਆ</translation> <translation id="3742666961763734085">ਇਸ ਨਾਮ ਦੀ ਕੋਈ ਸੰਸਥਾਗਤ ਇਕਾਈ ਨਹੀਂ ਲੱਭੀ ਜਾ ਸਕਦੀ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="3744111561329211289">ਬੈਕਗ੍ਰਾਊਂਡ ਸਮਕਾਲੀਕਰਨ</translation> +<translation id="3747077776423672805">ਐਪਾਂ ਨੂੰ ਹਟਾਉਣ ਲਈ, ਸੈਟਿੰਗਾਂ > Google Play ਸਟੋਰ > Android ਤਰਜੀਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ > ਐਪਾਂ ਜਾਂ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਬੰਧਕ 'ਤੇ ਜਾਓ। ਫਿਰ ਉਸ ਐਪ 'ਤੇ ਟੈਪ ਕਰੋ ਜਿਸਨੂੰ ਤੁਸੀਂ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ (ਐਪ ਨੂੰ ਲੱਭਣ ਲਈ ਤੁਹਾਨੂੰ ਸੱਜੇ ਜਾਂ ਖੱਬੇ ਸਵਾਈਪ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ)। ਫਿਰ 'ਅਣਸਥਾਪਤ ਕਰੋ' ਜਾਂ 'ਬੰਦ ਕਰੋ' 'ਤੇ ਟੈਪ ਕਰੋ।</translation> <translation id="3748026146096797577">ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ</translation> <translation id="3752582316358263300">ਠੀਕ...</translation> <translation id="3752673729237782832">ਮੇਰੀਆਂ ਡਿਵਾਈਸਾਂ</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">ਤੁਸੀਂ ਇੱਕ ਅਜਿਹੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਵਰਤ ਰਹੇ ਹੋ ਜੋ ਇਸ ਵੈੱਬਸਾਈਟ ਨਾਲ ਰਜਿਸਟਰ ਨਹੀਂ ਹੈ</translation> <translation id="4788092183367008521">ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="4792711294155034829">&ਇੱਕ ਸਮੱਸਿਆ ਦੀ ਰਿਪੋਰਟ ਕਰੋ...</translation> -<translation id="4795022432560487924">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜ ਕੇ ਆਪਣੇ ਬੱਚੇ ਦਾ Android ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਇਸਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਬੱਚੇ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਇਹ ਸੈਟਿੰਗ ਮਾਲਕ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਮਾਲਕ ਇਸ ਡੀਵਾਈਸ ਦੇ ਤਸ਼ਖੀਸ ਅਤੇ ਵਰਤੋਂ ਡਾਟੇ ਨੂੰ Google ਨੂੰ ਭੇਜਣਾ ਚੁਣ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਉਸਦੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ਵੈਬਪੇਜ, ਕੇਵਲ HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />ਬਲੂਟੁੱਥ ਲੌਗ<ph name="END_LINK" /> ਅਟੈਚ ਕਰੋ (Google ਅੰਦਰੂਨੀ)</translation> <translation id="4801448226354548035">ਖਾਤੇ ਲੁਕਾਓ</translation> @@ -3565,7 +3561,6 @@ <translation id="5941711191222866238">ਨਿਊਨਤਮ</translation> <translation id="5942964813783878922">ਇਸ ਅੱਪਡੇਟ ਤੋਂ ਬਾਅਦ ਤੁਹਾਡਾ <ph name="DEVICE_TYPE" /> ਮੁੜ-ਸ਼ੁਰੂ ਹੋਵੇਗਾ। ਭਵਿੱਖੀ ਸਾਫ਼ਟਵੇਅਰ ਅਤੇ ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਕੀਤੇ ਜਾਣਗੇ।</translation> <translation id="5944869793365969636">QR ਕੋਡ ਸਕੈਨ ਕਰੋ</translation> -<translation id="5945188205370098537">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜ ਕੇ ਆਪਣੇ Android ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਇਸ ਨਾਲ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਜੇ ਤੁਹਾਡੀ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ਰਿਪੋਰਟ ਆਈ.ਡੀ. <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ਫ਼ਾਈਲ ਨੂੰ ਪਾਰਸ ਕਰਨ ਦੇ ਅਸਮਰੱਥ</translation> <translation id="5955282598396714173">ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ ਸਮਾਪਤ ਹੋ ਗਈ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਬਦਲਣ ਲਈ ਸਾਈਨ-ਆਊਟ ਹੋ ਕੇ ਫਿਰ ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> @@ -3749,6 +3744,7 @@ <translation id="6185132558746749656">ਡੀਵਾਈਸ ਨਿਰਧਾਰਿਤ ਸਥਾਨ</translation> <translation id="6186394685773237175">ਕੋਈ ਛੇੜਛਾੜ ਵਾਲੇ ਪਾਸਵਰਡ ਨਹੀਂ ਮਿਲੇ</translation> <translation id="6195693561221576702">ਇਹ ਡੀਵਾਈਸ ਆਫ਼ਲਾਈਨ ਡੈਮੋ ਮੋਡ ਵਿੱਚ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।</translation> +<translation id="6196640612572343990">ਤੀਜੀ-ਧਿਰ ਵਾਲੀਆਂ ਕੁੱਕੀਜ਼ ਨੂੰ ਬਲੌਕ ਕਰੋ</translation> <translation id="6196854373336333322">ਐਕਸਟੈਂਸ਼ਨ "<ph name="EXTENSION_NAME" />" ਨੇ ਤੁਹਾਡੀਆਂ ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ 'ਤੇ ਕੰਟਰੋਲ ਹਾਸਲ ਕਰ ਲਿਆ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਨਲਾਈਨ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਕਿਸੇ ਵੀ ਕਿਰਿਆ ਨੂੰ ਬਦਲ ਸਕਦੀ ਹੈ, ਖੰਡਿਤ ਕਰ ਸਕਦੀ ਹੈ ਜਾਂ ਗੁਪਤ ਢੰਗ ਨਾਲ ਵਾਰਤਾਲਾਪ ਨੂੰ ਸੁਣ ਸਕਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਪੱਕੇ ਨਹੀਂ ਹੋ ਕਿ ਇਹ ਬਦਲਾਵ ਕਿਉਂ ਵਾਪਰਿਆ ਹੈ, ਤਾਂ ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਤੁਸੀਂ ਵੀ ਇਹ ਨਹੀਂ ਚਾਹੁੰਦੇ।</translation> <translation id="6198102561359457428">ਸਾਈਨ-ਆਊਟ ਹੋ ਕੇ ਫਿਰ ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰੋ…</translation> <translation id="6198252989419008588">PIN ਬਦਲੋ</translation> @@ -4412,7 +4408,6 @@ <translation id="711902386174337313">ਆਪਣੀਆਂ ਸਾਈਨ-ਇਨ ਕੀਤੀਆਂ ਡਿਵਾਈਸਾਂ ਦੀ ਸੂਚੀ ਪੜ੍ਹੋ</translation> <translation id="7120865473764644444">ਸਮਕਾਲੀਕਰਨ ਸਰਵਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="7121362699166175603">ਪਤਾ ਬਾਰ ਵਿੱਚ ਇਤਿਹਾਸ ਅਤੇ ਸਵੈ-ਮੁਕੰਮਲ ਚੀਜ਼ਾਂ ਨੂੰ ਕਲੀਅਰ ਕਰੋ। ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 'ਤੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਦੀਆਂ ਹੋਰ ਕਿਸਮਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।</translation> -<translation id="7121389946694989825">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। ਇਹ ਡੀਵਾਈਸ ਇਸ ਵੇਲੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ Google ਨੂੰ ਭੇਜ ਰਿਹਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਬੱਚੇ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਜੇ ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਉਸਦੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ਵਿਕਾਸਕਾਰ ਮੋਡ</translation> <translation id="7121728544325372695">ਸਮਾਰਟ ਡੈਸ਼ਾਂ</translation> <translation id="7123360114020465152">ਹੁਣ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ</translation> @@ -5192,7 +5187,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}one{ਟੈਬ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}other{ਟੈਬਾਂ ਨੂੰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਲਿਜਾਓ}}</translation> <translation id="8179976553408161302">ਦਰਜ ਕਰੋ</translation> <translation id="8180239481735238521">ਸਫ਼ਾ</translation> -<translation id="8180294223783876911">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। ਇਹ ਡੀਵਾਈਸ ਇਸ ਵੇਲੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ Google ਨੂੰ ਭੇਜ ਰਿਹਾ ਹੈ। ਇਸ ਨਾਲ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਜੇ ਤੁਹਾਡੀ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ ਲਗਾਏ ਹੋਏ ਨਿਰਧਾਰਿਤ ਸਥਾਨਾਂ ਵਿੱਚ ਚਿੱਤਰ, ਵੀਡਿਓ ਅਤੇ ਅਵਾਜ਼ ਫਾਈਲਾਂ ਪੜ੍ਹ ਸਕਦਾ ਹੈ।</translation> <translation id="8181215761849004992">ਡੋਮੇਨ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਇਹ ਦੇਖਣ ਲਈ ਆਪਣੇ ਖਾਤੇ ਦੀ ਜਾਂਚ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਡੀਵਾਈਸਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਦੇ ਵਿਸ਼ੇਸ਼-ਅਧਿਕਾਰ ਹਨ।</translation> <translation id="8182105986296479640">ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਤੀਕਿਰਿਆ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ।</translation> @@ -5214,7 +5208,6 @@ <translation id="8203732864715032075">ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਭੇਜਣੀਆਂ ਅਤੇ ਇਸ ਕੰਪਿਊਟਰ ਨੂੰ 'ਸੁਨੇਹਾ' ਲਈ ਯਾਦ ਰੱਖਣ 'ਤੇ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਕਰਨਾ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" ਨੂੰ ਤੁਹਾਡੇ ਮਾਂ-ਪਿਓ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਲਈ ਆਪਣੇ ਮਾਂ-ਪਿਓ ਤੋਂ ਇਜਾਜ਼ਤ ਮੰਗੋ।</translation> <translation id="820568752112382238">ਸਭ ਤੋਂ ਵੱਧ ਦੇਖੀਆਂ ਗਈਆਂ ਸਾਈਟਾਂ</translation> -<translation id="8206581664590136590">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜ ਕੇ ਆਪਣੇ ਬੱਚੇ ਦਾ Android ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਇਸਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਬੱਚੇ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਜੇ ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਉਸਦੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Cellular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹੈ}one{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹੈ}other{ਡਾਊਨਲੋਡ ਪ੍ਰਗਤੀ ਵਿੱਚ ਹਨ}}</translation> @@ -5754,7 +5747,6 @@ <translation id="8912362522468806198">Google ਖਾਤਾ</translation> <translation id="8912793549644936705">ਸਟ੍ਰੈਚ ਕਰੋ</translation> <translation id="8912810933860534797">ਸਵੈਚਲਿਤ ਸਕੈਨ ਚਾਲੂ ਕਰੋ</translation> -<translation id="891365694296252935">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। ਇਹ ਡੀਵਾਈਸ ਇਸ ਵੇਲੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ Google ਨੂੰ ਭੇਜ ਰਿਹਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਬੱਚੇ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਇਹ ਸੈਟਿੰਗ ਮਾਲਕ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਉਸਦੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">ਸੁਝਾਅ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ</translation> <translation id="8916476537757519021">ਗੁਮਨਾਮ ਸਬਫ੍ਰੇਮ: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> @@ -5891,7 +5883,6 @@ <translation id="9101691533782776290">ਐਪ ਲਾਂਚ ਕਰੋ</translation> <translation id="9102610709270966160">ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="9103868373786083162">ਇਤਿਹਾਸ ਦੇਖਣ ਲਈ ਪਿੱਛੇ ਜਾਓ, ਸੰਦਰਭੀ ਮੀਨੂ ਦਬਾਓ</translation> -<translation id="9104396740804929809">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜ ਕੇ ਆਪਣੇ Android ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਇਸ ਨਾਲ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਇਹ ਸੈਟਿੰਗ ਮਾਲਕ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਮਾਲਕ ਇਸ ਡੀਵਾਈਸ ਦੇ ਤਸ਼ਖੀਸ ਅਤੇ ਵਰਤੋਂ ਡਾਟੇ ਨੂੰ Google ਨੂੰ ਭੇਜਣਾ ਚੁਣ ਸਕਦਾ ਹੈ। ਜੇ ਤੁਹਾਡੀ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਡੀਵਾਈਸ ਸਟੋਰੇਜ ਵਿੱਚੋਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ।</translation> <translation id="9109283579179481106">ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ</translation> <translation id="9111102763498581341">ਅਣਲਾਕ ਕਰੋ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 9da00689..481a72aa 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dane udostępnianych aplikacji</translation> <translation id="1776712937009046120">Dodaj użytkownika</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Tym urządzeniem zarządza domena <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kliknij „Dalej”, by kontynuować logowanie się na konto w domenie <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Wpisz ten klucz na urządzeniu „<ph name="DEVICE_NAME" />”:</translation> <translation id="177989070088644880">Aplikacja (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zamknij grupę</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Podczas tworzenia listy drukarek wystąpił problem. Niektóre drukarki mogły nie zostać pomyślnie zarejestrowane w usłudze <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Wyszukiwarka używana w <ph name="BEGIN_LINK" />pasku adresu<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Odczyt i zmiana wpisanego tekstu</translation> -<translation id="220792432208469595">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Wpisz ten kod PIN na urządzeniu „<ph name="DEVICE_NAME" />”:</translation> <translation id="2212565012507486665">Zezwalaj na pliki cookie</translation> <translation id="2213140827792212876">Usuń udostępnianie</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nie udało się otworzyć alternatywnej przeglądarki</translation> <translation id="2804667941345577550">Wylogujemy Cię z tej strony, także na otwartych kartach</translation> <translation id="2804680522274557040">Kamera wyłączona</translation> -<translation id="2805539617243680210">Wszystko gotowe</translation> <translation id="2805646850212350655">System szyfrowania plików firmy Microsoft</translation> <translation id="2805756323405976993">Aplikacje</translation> <translation id="2805770823691782631">Dodatkowe szczegóły</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Wykonano zrzut ekranu</translation> <translation id="3742666961763734085">Nie znaleziono jednostki organizacyjnej o tej nazwie. Spróbuj jeszcze raz.</translation> <translation id="3744111561329211289">Synchronizacja w tle</translation> +<translation id="3747077776423672805">Aby usunąć aplikacje, otwórz Ustawienia > Sklep Google Play > Zarządzaj ustawieniami Androida > Aplikacje lub Menedżer aplikacji. Następnie kliknij aplikację, którą chcesz odinstalować (jeśli to konieczne, przesuń palcem w prawo lub w lewo, by ją znaleźć), a potem kliknij Odinstaluj lub Wyłącz.</translation> <translation id="3748026146096797577">Brak połączenia</translation> <translation id="3752582316358263300">OK</translation> <translation id="3752673729237782832">Moje urządzenia</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Używasz klucza bezpieczeństwa, który nie jest zarejestrowany w tej witrynie</translation> <translation id="4788092183367008521">Sprawdź połączenie sieciowe i spróbuj jeszcze raz.</translation> <translation id="4792711294155034829">&Zgłaszanie problemu...</translation> -<translation id="4795022432560487924">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Strona internetowa, tylko kod HTML</translation> <translation id="4798236378408895261">Dołącz <ph name="BEGIN_LINK" />dzienniki Bluetooth<ph name="END_LINK" /> (na użytek wewnętrzny Google)</translation> <translation id="4801448226354548035">Ukryj konta</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Pobieranie automatyczne</translation> <translation id="5653154844073528838">Zapisane drukarki: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Prześlij opinię do Google</translation> +<translation id="5657156137487675418">Zezwól na wszystkie pliki cookie</translation> <translation id="5657667036353380798">Rozszerzenie zewnętrzne wymaga zainstalowania Chrome w wersji <ph name="MINIMUM_CHROME_VERSION" /> lub nowszej.</translation> <translation id="5658415415603568799">Ze względów bezpieczeństwa Smart Lock poprosi Cię o podanie hasła po upływie 20 godzin.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimalizuj</translation> <translation id="5942964813783878922">Po zainstalowaniu tej aktualizacji <ph name="DEVICE_TYPE" /> uruchomi się ponownie. Przyszłe aktualizacje oprogramowania i zabezpieczeń będą instalowane automatycznie.</translation> <translation id="5944869793365969636">Zeskanuj kod QR</translation> -<translation id="5945188205370098537">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Identyfikator raportu: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Nie można przeanalizować pliku</translation> <translation id="5955282598396714173">Twoje hasło utraciło ważność. Wyloguj się, a potem zaloguj się jeszcze raz, by je zmienić.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Lokalizacja urządzenia</translation> <translation id="6186394685773237175">Nie znaleziono przejętych haseł</translation> <translation id="6195693561221576702">Na tym urządzeniu nie można skonfigurować trybu demonstracyjnego offline.</translation> +<translation id="6196640612572343990">Blokuj pliki cookie innych firm</translation> <translation id="6196854373336333322">Rozszerzenie „<ph name="EXTENSION_NAME" />” przejęło kontrolę nad ustawieniami serwera proxy, co oznacza, że może zmieniać, przerywać lub podglądać wszystko, co robisz online. Jeśli nie masz pewności, skąd wzięła się ta zmiana, prawdopodobnie jej nie chcesz.</translation> <translation id="6198102561359457428">Wyloguj się i ponownie zaloguj</translation> <translation id="6198252989419008588">Zmień kod PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Odczyt listy zalogowanych urządzeń</translation> <translation id="7120865473764644444">Nie udało się połączyć z serwerem synchronizacji. Próbuję ponownie…</translation> <translation id="7121362699166175603">Usuwa historię i pamięć autouzupełniania na pasku adresu. Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Tryb programisty</translation> <translation id="7121728544325372695">Inteligentne myślniki</translation> <translation id="7123360114020465152">Drukarka nie jest już obsługiwana</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Podczas wyszukiwania szkodliwego oprogramowania przez Chrome wystąpił błąd</translation> <translation id="7280649757394340890">Ustawienia głosu przy zamianie tekstu na mowę</translation> <translation id="7280877790564589615">Prośba o uprawnienia</translation> -<translation id="7281268427852119151">Wykorzystywanie historii przeglądania do personalizowania wyników wyszukiwania, reklam i działania innych usług Google</translation> <translation id="7282992757463864530">Pasek informacyjny</translation> <translation id="7287143125007575591">Odmowa dostępu.</translation> <translation id="7287411021188441799">Przywróć domyślne tło</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Przenieś kartę do nowego okna}few{Przenieś karty do nowego okna}many{Przenieś karty do nowego okna}other{Przenieś karty do nowego okna}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">strona</translation> -<translation id="8180294223783876911">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />” może odczytywać oraz usuwać pliki graficzne, wideo i dźwiękowe ze sprawdzonych lokalizacji.</translation> <translation id="8181215761849004992">Nie można dołączyć do domeny. Sprawdź, czy masz uprawnienia do dodawania urządzeń.</translation> <translation id="8182105986296479640">Aplikacja nie reaguje.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Wysyła powiadomienia i sprawia, że ten komputer jest domyślnie używany do obsługi Wiadomości. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Aplikację „<ph name="APP_NAME" />” zablokował rodzic. Aby móc z niej korzystać, poproś go o uprawnienia.</translation> <translation id="820568752112382238">Najczęściej odwiedzane strony</translation> -<translation id="8206581664590136590">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesowy</translation> <translation id="8206859287963243715">Komórka</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Trwa pobieranie pliku}few{Trwa pobieranie plików}many{Trwa pobieranie plików}other{Trwa pobieranie plików}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Konta Google</translation> <translation id="8912793549644936705">Rozciągnij</translation> <translation id="8912810933860534797">Włącz automatyczne skanowanie</translation> -<translation id="891365694296252935">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli dodatkowo na koncie Google dziecka włączysz ustawienie Aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Ładuję sugestie</translation> <translation id="8916476537757519021">Ramka podrzędna incognito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Weryfikuję klucz bezpieczeństwa…</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Uruchom aplikację</translation> <translation id="9102610709270966160">Włącz rozszerzenie</translation> <translation id="9103868373786083162">Naciśnij, by wrócić, lub otwórz menu kontekstowe, by wyświetlić historię</translation> -<translation id="9104396740804929809">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Aby zwolnić miejsce, usuń pliki z pamięci urządzenia.</translation> <translation id="9109283579179481106">Połącz z siecią komórkową</translation> <translation id="9111102763498581341">Odblokuj</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 683e4ee..51d047ef 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dados do aplicativo hospedado</translation> <translation id="1776712937009046120">Adicionar usuário</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Este dispositivo é gerenciado por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Clique em "Próxima" para continuar a fazer login na sua conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Insira esta senha em "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Fechar grupo</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Ocorreu um problema na listagem de impressoras. Algumas impressoras podem não ter sido registradas no <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">O mecanismo de pesquisa usado na <ph name="BEGIN_LINK" />barra de endereço<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Ler e alterar tudo o que você digitar</translation> -<translation id="220792432208469595">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Essa configuração é aplicada pelo proprietário. Se a configuração "Atividade na Web e de apps adicional" estiver ativada, esses dados poderão ser salvos na sua Conta do Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Digite este código PIN em "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2213140827792212876">Remover compartilhamento</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo</translation> <translation id="2804667941345577550">Sua conta será desconectada desse site, inclusive nas guias abertas</translation> <translation id="2804680522274557040">Câmera desativada</translation> -<translation id="2805539617243680210">Tudo pronto</translation> <translation id="2805646850212350655">Sistema de arquivos com criptografia da Microsoft</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Mais detalhes</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Captura de tela realizada</translation> <translation id="3742666961763734085">Não foi possível encontrar uma unidade organizacional com esse nome. Tente novamente.</translation> <translation id="3744111561329211289">Sincronização em segundo plano</translation> +<translation id="3747077776423672805">Para remover apps, acesse "Configurações" > "Google Play Store" > "Gerenciar preferências do Android" > "Apps" ou "Gerenciador de aplicativos". Depois, toque no app que você quer desinstalar (talvez seja necessário deslizar para a direita ou esquerda para encontrar o app). Em seguida, toque em "Desinstalar" ou "Desativar".</translation> <translation id="3748026146096797577">Não conectado</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Meus dispositivos</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Você está usando uma chave de segurança que não está registrada neste site</translation> <translation id="4788092183367008521">Verifique sua conexão de rede e tente novamente.</translation> <translation id="4792711294155034829">&Informar um problema...</translation> -<translation id="4795022432560487924">Envie dados de uso e diagnóstico. Ajude a melhorar a experiência do seu filho com o Android enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Essa configuração é aplicada pelo proprietário, que pode optar por enviar dados de uso e diagnóstico deste dispositivo para o Google. Se a configuração "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Página da web, somente HTML</translation> <translation id="4798236378408895261">Anexar <ph name="BEGIN_LINK" />registros de Bluetooth<ph name="END_LINK" /> (interno do Google)</translation> <translation id="4801448226354548035">Ocultar contas</translation> @@ -3385,6 +3381,7 @@ <translation id="5649053991847567735">Downloads automáticos</translation> <translation id="5653154844073528838">Você tem <ph name="PRINTER_COUNT" /> impressoras salvas.</translation> <translation id="5656845498778518563">Enviar feedback para o Google</translation> +<translation id="5657156137487675418">Mostrar todos os cookies</translation> <translation id="5657667036353380798">A extensão externa requer que a versão <ph name="MINIMUM_CHROME_VERSION" /> do Google Chrome, ou mais recente, esteja instalada.</translation> <translation id="5658415415603568799">Para maior segurança, o Smart Lock solicitará que você digite sua senha após 20 horas.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3592,7 +3589,6 @@ <translation id="5941711191222866238">Minimizar</translation> <translation id="5942964813783878922">Seu <ph name="DEVICE_TYPE" /> será reiniciado depois desta atualização. As atualizações de software e de segurança futuras serão instaladas automaticamente.</translation> <translation id="5944869793365969636">Ler código QR</translation> -<translation id="5945188205370098537">Envie dados de uso e diagnóstico. Ajude a melhorar sua experiência com o Android enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Se a configuração "Atividade na Web e de apps adicional" estiver ativada, esses dados poderão ser salvos na sua Conta do Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Código de relatório <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Não foi possível analisar o arquivo</translation> <translation id="5955282598396714173">Sua senha expirou. Saia e faça login novamente para alterá-la.</translation> @@ -3779,6 +3775,7 @@ <translation id="6185132558746749656">Localização do dispositivo</translation> <translation id="6186394685773237175">Não foram encontradas senhas comprometidas</translation> <translation id="6195693561221576702">Não é possível configurar este dispositivo no modo de demonstração off-line.</translation> +<translation id="6196640612572343990">Bloquear cookies de terceiros</translation> <translation id="6196854373336333322">A extensão "<ph name="EXTENSION_NAME" />" assumiu o controle das suas configurações de proxy, o que significa que ela pode alterar, invadir ou escutar qualquer coisa que você fizer on-line. Se você não tiver certeza do motivo dessa alteração, provavelmente não a deseja.</translation> <translation id="6198102561359457428">Saia e faça login novamente...</translation> <translation id="6198252989419008588">Alterar PIN</translation> @@ -4445,7 +4442,6 @@ <translation id="711902386174337313">Ler a lista dos dispositivos nos quais você fez login</translation> <translation id="7120865473764644444">Não foi possível se conectar ao servidor de sincronização. Tentando novamente…</translation> <translation id="7121362699166175603">Limpa o histórico e os preenchimentos automáticos na barra de endereço. Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Se a configuração "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modo de desenvolvedor</translation> <translation id="7121728544325372695">Traços inteligentes</translation> <translation id="7123360114020465152">Não é mais compatível</translation> @@ -4560,7 +4556,6 @@ <translation id="7280041992884344566">Ocorreu um erro enquanto o Chrome estava procurando softwares nocivos</translation> <translation id="7280649757394340890">Configurações da conversão de texto em voz</translation> <translation id="7280877790564589615">Permissão solicitada</translation> -<translation id="7281268427852119151">Use seu histórico de navegação para personalizar a Pesquisa, os anúncios e outros serviços do Google</translation> <translation id="7282992757463864530">Barra de informações</translation> <translation id="7287143125007575591">Acesso negado.</translation> <translation id="7287411021188441799">Restaurar plano de fundo padrão</translation> @@ -5235,7 +5230,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover guia para uma nova janela}one{Mover guia para uma nova janela}other{Mover guias para uma nova janela}}</translation> <translation id="8179976553408161302">Entrar</translation> <translation id="8180239481735238521">página</translation> -<translation id="8180294223783876911">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Se a configuração "Atividade na Web e de apps adicional" estiver ativada, esses dados poderão ser salvos na sua Conta do Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" pode ler e excluir imagens, vídeos e arquivos de som nos locais marcados.</translation> <translation id="8181215761849004992">Não é possível vincular ao domínio. Confira na sua conta se você tem privilégios suficientes para adicionar dispositivos.</translation> <translation id="8182105986296479640">O app não está respondendo.</translation> @@ -5257,7 +5251,6 @@ <translation id="8203732864715032075">Enviar notificações para você e lembrar por padrão deste computador para o app Mensagens. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="8204129288640092672">O app <ph name="APP_NAME" /> foi bloqueado por seu pai/mãe. É necessário pedir permissão para usá-lo.</translation> <translation id="820568752112382238">Sites mais visitados</translation> -<translation id="8206581664590136590">Envie dados de uso e diagnóstico. Ajude a melhorar a experiência do seu filho com o Android enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Se a configuração "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Chorinho</translation> <translation id="8206859287963243715">Celular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{O download está em andamento}one{O download está em andamento}other{Os downloads estão em andamento}}</translation> @@ -5803,7 +5796,6 @@ <translation id="8912362522468806198">Conta do Google</translation> <translation id="8912793549644936705">Esticar</translation> <translation id="8912810933860534797">Ativar verificação automática</translation> -<translation id="891365694296252935">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Essa configuração é aplicada pelo proprietário. Se a opção "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Carregando sugestão</translation> <translation id="8916476537757519021">Subquadro anônimo: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Verificando sua chave de segurança…</translation> @@ -5940,7 +5932,6 @@ <translation id="9101691533782776290">Iniciar aplicativo</translation> <translation id="9102610709270966160">Ativar extensão</translation> <translation id="9103868373786083162">Pressione para voltar ao menu de contexto e ver o histórico</translation> -<translation id="9104396740804929809">Envie dados de uso e diagnóstico. Ajude a melhorar sua experiência com o Android enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Essa configuração é aplicada pelo proprietário, que pode optar por enviar dados de uso e diagnóstico deste dispositivo para o Google. Se a configuração "Atividade na Web e de apps adicional" estiver ativada, esses dados poderão ser salvos na sua Conta do Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Para liberar espaço, exclua arquivos do armazenamento do dispositivo.</translation> <translation id="9109283579179481106">Conectar à rede móvel</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 52fdce1d..9b13816 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dados de aplicações alojadas</translation> <translation id="1776712937009046120">Adicionar utilizador</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Este dispositivo é gerido por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Clique em "Seguinte" para continuar a iniciar sessão na sua conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Introduza esta chave de acesso no "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Fechar grupo</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Ocorreu um problema ao listar as impressoras. Algumas impressoras podem não ter sido registadas com êxito no <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Motor de pesquisa utilizado na <ph name="BEGIN_LINK" />barra de endereço<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Ler e alterar tudo o que introduzir</translation> -<translation id="220792432208469595">Envie dados de utilização e diagnóstico. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Deste modo, ajudará a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Esta definição é aplicada pelo proprietário. Se a definição Atividade da Web e de aplicações adicional estiver ativada, estes dados podem ser guardados na sua Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Introduza este código PIN no "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2213140827792212876">Remover a partilha</translation> @@ -1352,7 +1349,6 @@ <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo.</translation> <translation id="2804667941345577550">A sua sessão neste site será terminada, incluindo em separadores abertos.</translation> <translation id="2804680522274557040">A câmara está desativada</translation> -<translation id="2805539617243680210">Está tudo pronto!</translation> <translation id="2805646850212350655">Sistema de encriptação de ficheiros Microsoft</translation> <translation id="2805756323405976993">Aplicações</translation> <translation id="2805770823691782631">Detalhes adicionais</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Captura de ecrã efetuada</translation> <translation id="3742666961763734085">Não é possível encontrar uma unidade organizacional com esse nome. Tente novamente.</translation> <translation id="3744111561329211289">Sincronização em segundo plano</translation> +<translation id="3747077776423672805">Para remover aplicações, aceda a Definições > Google Play Store > Gerir preferências do Android > Aplicações ou Gestor de aplicações. Toque na aplicação que pretende desinstalar (pode ter de deslizar rapidamente para a direita ou para a esquerda para encontrar a aplicação). Em seguida, toque em Desinstalar ou em Desativar.</translation> <translation id="3748026146096797577">Desligado</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Os meus dispositivos</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Está a utilizar uma chave de segurança que não está registada neste Website.</translation> <translation id="4788092183367008521">Verifique a sua ligação à rede e tente novamente.</translation> <translation id="4792711294155034829">&Comunicar um problema...</translation> -<translation id="4795022432560487924">Envie dados de utilização e diagnóstico. Ajude a melhorar a experiência Android da criança ao enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Esta definição é aplicada pelo proprietário. O proprietário pode optar por enviar dados de diagnóstico e de utilização deste dispositivo para a Google. Se a definição Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Página Web, Apenas HTML</translation> <translation id="4798236378408895261">Anexar <ph name="BEGIN_LINK" />registos do Bluetooth<ph name="END_LINK" /> (interno da Google)</translation> <translation id="4801448226354548035">Ocultar contas</translation> @@ -3385,6 +3381,7 @@ <translation id="5649053991847567735">Transferências automáticas</translation> <translation id="5653154844073528838">Tem <ph name="PRINTER_COUNT" /> impressoras guardadas.</translation> <translation id="5656845498778518563">Enviar comentários para a Google</translation> +<translation id="5657156137487675418">Mostrar todos os cookies</translation> <translation id="5657667036353380798">A extensão externa requer que esteja instalada a versão <ph name="MINIMUM_CHROME_VERSION" /> ou superior do Chrome.</translation> <translation id="5658415415603568799">Para maior segurança, o Smart Lock pedir-lhe-á para introduzir a palavra-passe após 20 horas.</translation> <translation id="5659593005791499971">Email</translation> @@ -3592,7 +3589,6 @@ <translation id="5941711191222866238">Minimizar</translation> <translation id="5942964813783878922">O dispositivo <ph name="DEVICE_TYPE" /> irá reiniciar após esta atualização. As atualizações de software e segurança futuras serão instaladas automaticamente.</translation> <translation id="5944869793365969636">Leia o código QR</translation> -<translation id="5945188205370098537">Envie dados de utilização e diagnóstico. Ajude a melhorar a experiência Android ao enviar automaticamente dados de diagnóstico, de utilização do dispositivo e das aplicações para a Google. Deste modo, ajudará a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a definição Atividade da Web e de aplicações adicional estiver ativada, estes dados podem ser guardados na sua Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID do relatório <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Não é possível analisar o ficheiro</translation> <translation id="5955282598396714173">A sua palavra-passe expirou. Termine e inicie sessão novamente para a alterar.</translation> @@ -3778,6 +3774,7 @@ <translation id="6185132558746749656">Localização do dispositivo</translation> <translation id="6186394685773237175">Não foram encontradas palavras-passe comprometidas.</translation> <translation id="6195693561221576702">Não é possível configurar este dispositivo no modo de demonstração offline.</translation> +<translation id="6196640612572343990">Bloquear cookies de terceiros</translation> <translation id="6196854373336333322">A extensão "<ph name="EXTENSION_NAME" />" apoderou-se das suas definições de proxy, o que significa que pode alterar, interromper ou intercetar qualquer coisa que esteja a fazer online. Se não tem a certeza do motivo pelo qual aconteceu esta alteração, é provável que não a queira.</translation> <translation id="6198102561359457428">Terminar sessão e, em seguida, iniciar sessão novamente...</translation> <translation id="6198252989419008588">Alterar PIN</translation> @@ -4444,7 +4441,6 @@ <translation id="711902386174337313">Ler a lista dos dispositivos com sessão iniciada</translation> <translation id="7120865473764644444">Não foi possível estabelecer ligação ao servidor de sincronização. A tentar novamente…</translation> <translation id="7121362699166175603">Limpa o histórico e os preenchimentos automáticos na barra de endereço. A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Envie dados de utilização e diagnóstico. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a definição Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modo de programador</translation> <translation id="7121728544325372695">Traços inteligentes</translation> <translation id="7123360114020465152">Já não é suportada.</translation> @@ -4559,7 +4555,6 @@ <translation id="7280041992884344566">Ocorreu um erro enquanto o Chrome procurava software prejudicial.</translation> <translation id="7280649757394340890">Definições de voz para a síntese de voz</translation> <translation id="7280877790564589615">Autorização solicitada</translation> -<translation id="7281268427852119151">Utilize o seu histórico de navegação para personalizar a Pesquisa, os anúncios e outros Serviços Google</translation> <translation id="7282992757463864530">Barra de informações</translation> <translation id="7287143125007575591">Acesso negado.</translation> <translation id="7287411021188441799">Restaurar fundo predefinido</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover separador para nova janela}other{Mover separadores para nova janela}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">página</translation> -<translation id="8180294223783876911">Envie dados de utilização e diagnóstico. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Deste modo, ajudará a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a definição Atividade da Web e de aplicações adicional estiver ativada, estes dados podem ser guardados na sua Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">A extensão "<ph name="EXTENSION" />" consegue ler e eliminar imagens, ficheiros de vídeo e de som nas localizações marcadas.</translation> <translation id="8181215761849004992">Não é possível associar ao domínio. Verifique a sua conta para saber se tem privilégios suficientes para adicionar dispositivos.</translation> <translation id="8182105986296479640">A aplicação não está a responder</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Enviar-lhe notificações e memorizar este computador para a aplicação Mensagens como predefinição. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="8204129288640092672">A app "<ph name="APP_NAME" />" foi bloqueada pelo teu Pai/Mãe. Solicita autorização ao teu Pai/Mãe para utilizares esta app.</translation> <translation id="820568752112382238">Sites mais visitados</translation> -<translation id="8206581664590136590">Envie dados de utilização e diagnóstico. Ajude a melhorar a experiência Android da criança ao enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a definição Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesy</translation> <translation id="8206859287963243715">Telemóvel</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Transferência em curso}other{Transferências em curso}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Conta Google</translation> <translation id="8912793549644936705">Esticar</translation> <translation id="8912810933860534797">Ativar análise automática</translation> -<translation id="891365694296252935">Envie dados de utilização e diagnóstico. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Esta definição é aplicada pelo proprietário. Se a Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">A carregar sugestão</translation> <translation id="8916476537757519021">Subestrutura da navegação anónima: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">A validar a sua chave de segurança…</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Iniciar aplicação</translation> <translation id="9102610709270966160">Ativar extensão</translation> <translation id="9103868373786083162">Premir para voltar, menu de contexto para ver o histórico</translation> -<translation id="9104396740804929809">Envie dados de utilização e diagnóstico. Ajude a melhorar a experiência Android ao enviar automaticamente dados de diagnóstico, de utilização do dispositivo e das aplicações para a Google. Deste modo, ajudará a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Esta definição é aplicada pelo proprietário. O proprietário pode optar por enviar dados de diagnóstico e de utilização deste dispositivo para a Google. Se a definição Atividade da Web e de aplicações adicional estiver ativada, estes dados podem ser guardados na sua Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Para libertar espaço, elimine ficheiros do armazenamento do dispositivo.</translation> <translation id="9109283579179481106">Ligue-se à rede móvel</translation> <translation id="9111102763498581341">Desbloquear</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index c3028d0d..74a546e8 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Datele aplicațiilor găzduite</translation> <translation id="1776712937009046120">Adaugă un utilizator</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Acest dispozitiv este gestionat de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Dă clic pe „Înainte” ca să continui conectarea la contul <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Introduceți această cheie de acces pe „<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplicație (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Închide grupul</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">A apărut o problemă la listarea imprimantelor. Este posibil ca unele dintre imprimante să nu fi fost înregistrate la <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Motorul de căutare folosit în <ph name="BEGIN_LINK" />bara de adrese<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Citește și modifică orice date introduse</translation> -<translation id="220792432208469595">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Aceasta va ajuta la stabilitatea sistemului, a aplicației și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Această setare este impusă de proprietar. Dacă setarea Activitatea suplimentară de pe web și din aplicații este activată, aceste date pot fi salvate în Contul tău Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Introduceți acest cod PIN pe „<ph name="DEVICE_NAME" />”:</translation> <translation id="2212565012507486665">Permite cookie-urile</translation> <translation id="2213140827792212876">Elimină utilizarea comună</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Browserul secundar nu a putut fi deschis</translation> <translation id="2804667941345577550">Te vei deconecta de la acest site, inclusiv din filele deschise</translation> <translation id="2804680522274557040">Camera foto este dezactivată</translation> -<translation id="2805539617243680210">Gata!</translation> <translation id="2805646850212350655">Sistem Microsoft de criptare a fișierelor</translation> <translation id="2805756323405976993">Aplicații</translation> <translation id="2805770823691782631">Detalii suplimentare</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Captură de ecran efectuată</translation> <translation id="3742666961763734085">Nu s-a găsit nicio unitate organizațională cu acest nume. Încearcă din nou.</translation> <translation id="3744111561329211289">Sincronizare în fundal</translation> +<translation id="3747077776423672805">Pentru a elimina aplicații, accesează Setări > Magazin Google Play > Gestionează preferințele Android > Aplicații sau Manager de aplicații. Apoi atinge aplicația pe care dorești să o dezinstalezi (poate fi necesar să glisezi la dreapta sau la stânga pentru a găsi aplicația). Apoi, atinge Dezinstalează sau Dezactivează.</translation> <translation id="3748026146096797577">Neconectat</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Dispozitivele mele</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Folosești o cheie de securitate care nu este înregistrată pe acest site</translation> <translation id="4788092183367008521">Verifică conexiunea la rețea și încearcă din nou.</translation> <translation id="4792711294155034829">&Raportează o problemă...</translation> -<translation id="4795022432560487924">Trimite date de utilizare și diagnosticare. Contribuie la îmbunătățirea experienței Android a copilului trimițând automat la Google date de diagnosticare și utilizare a dispozitivului și a aplicațiilor. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Această setare este impusă de proprietar. Proprietarul poate alege să trimită date de diagnosticare și utilizare a dispozitivului la Google. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Pagină web, numai HTML</translation> <translation id="4798236378408895261">Atașează <ph name="BEGIN_LINK" />Jurnalele Bluetooth<ph name="END_LINK" /> (Utilizare internă Google)</translation> <translation id="4801448226354548035">Ascundeți conturile</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Descărcări automate</translation> <translation id="5653154844073528838">Ai <ph name="PRINTER_COUNT" /> imprimante salvate.</translation> <translation id="5656845498778518563">Trimite feedback la Google</translation> +<translation id="5657156137487675418">Permiteți toate cookie-urile</translation> <translation id="5657667036353380798">Extensia externă necesită instalarea versiunii Chrome <ph name="MINIMUM_CHROME_VERSION" /> sau a unei versiuni superioare.</translation> <translation id="5658415415603568799">Pentru mai multă siguranță, Smart Lock îți solicită să introduci parola după 20 de ore.</translation> <translation id="5659593005791499971">Adresă de e-mail</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimizează</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> va reporni după această actualizare. Actualizările de software și de securitate ulterioare se vor instala automat.</translation> <translation id="5944869793365969636">Scanează codul QR</translation> -<translation id="5945188205370098537">Trimite date de utilizare și diagnosticare. Contribuie la îmbunătățirea experienței Android trimițând automat la Google date privind diagnosticarea și utilizarea dispozitivelor și a aplicațiilor. Aceasta va ajuta la stabilitatea sistemului, a aplicației și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Dacă setarea Activitatea suplimentară de pe web și din aplicații este activată, aceste date pot fi salvate în Contul tău Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID raport <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Fișierul nu poate fi analizat</translation> <translation id="5955282598396714173">Parola a expirat. Pentru a o schimba, deconectează-te, apoi conectează-te din nou.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Locația dispozitivului</translation> <translation id="6186394685773237175">Nu s-au găsit parole compromise</translation> <translation id="6195693561221576702">Acest dispozitiv nu poate fi configurat în modul demo offline.</translation> +<translation id="6196640612572343990">Blochează cookie-urile terță parte</translation> <translation id="6196854373336333322">Extensia „<ph name="EXTENSION_NAME" />” a preluat controlul asupra setărilor de proxy, ceea ce înseamnă că poate modifica, întrerupe sau intercepta tot ceea ce faci online. Dacă nu știi sigur de ce a apărut această modificare, probabil că nu ai aprobat-o.</translation> <translation id="6198102561359457428">Deconectați-vă, apoi conectați-vă din nou...</translation> <translation id="6198252989419008588">Schimbă codul PIN</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Citește lista dispozitivelor conectate</translation> <translation id="7120865473764644444">Nu s-a putut stabili conexiunea cu serverul de sincronizare. Se încearcă din nou…</translation> <translation id="7121362699166175603">Șterge istoricul și completările automate din bara de adrese. Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modul pentru dezvoltatori</translation> <translation id="7121728544325372695">Cratime inteligente</translation> <translation id="7123360114020465152">Nu mai este acceptată</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">A apărut o eroare în timp ce Chrome căuta software dăunător</translation> <translation id="7280649757394340890">Setări ale vocii pentru redarea vocală a textului</translation> <translation id="7280877790564589615">Permisiune solicitată</translation> -<translation id="7281268427852119151">Folosește istoricul de navigare pentru a personaliza Căutarea, anunțurile și alte servicii Google</translation> <translation id="7282992757463864530">Bară de informații</translation> <translation id="7287143125007575591">Acces refuzat.</translation> <translation id="7287411021188441799">Restabilește fundalul prestabilit</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mută fila în fereastră nouă}few{Mută filele în fereastră nouă}other{Mută filele în fereastră nouă}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">pagină</translation> -<translation id="8180294223783876911">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Aceasta va ajuta la stabilitatea sistemului, a aplicației și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Dacă setarea Activitatea suplimentară de pe web și din aplicații este activată, aceste date pot fi salvate în Contul tău Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Extensia „<ph name="EXTENSION" />” poate să citească și să șteargă fișiere imagine, video și audio din locațiile selectate.</translation> <translation id="8181215761849004992">Dispozitivul nu poate fi asociat domeniului. Verifică-ți contul pentru a vedea dacă ai suficiente privilegii pentru a adăuga dispozitive.</translation> <translation id="8182105986296479640">Aplicația nu răspunde.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Îți trimite notificări și are ca setare prestabilită reținerea acestui computer pentru Messages <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="8204129288640092672">„<ph name="APP_NAME" />” este blocată de părintele tău. Solicită părintelui permisiunea de a folosi această aplicație.</translation> <translation id="820568752112382238">Cele mai accesate site-uri</translation> -<translation id="8206581664590136590">Trimite date de utilizare și diagnosticare. Contribuie la îmbunătățirea experienței Android a copilului trimițând automat la Google date de diagnosticare și utilizare a dispozitivului și a aplicațiilor. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Albăstrel</translation> <translation id="8206859287963243715">Celular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Descărcarea este în desfășurare}few{Descărcările sunt în desfășurare}other{Descărcările sunt în desfășurare}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Contul Google</translation> <translation id="8912793549644936705">Extins</translation> <translation id="8912810933860534797">Activează scanarea automată</translation> -<translation id="891365694296252935">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Această setare este impusă de proprietar. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Se încarcă sugestiile</translation> <translation id="8916476537757519021">Subcadru incognito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Se verifică cheia de securitate…</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Lansați aplicația</translation> <translation id="9102610709270966160">Activează extensia</translation> <translation id="9103868373786083162">Apasă pentru a naviga înapoi sau folosește meniul contextual pentru a vedea istoricul</translation> -<translation id="9104396740804929809">Trimite date de utilizare și diagnosticare. Contribuie la îmbunătățirea experienței Android trimițând automat la Google date privind diagnosticarea și utilizarea dispozitivelor și a aplicațiilor. Aceasta va ajuta la stabilitatea sistemului, a aplicației și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Această setare este impusă de proprietar. Proprietarul poate alege să trimită date de diagnosticare și utilizare a dispozitivului la Google. Dacă setarea Activitatea suplimentară de pe web și din aplicații este activată, aceste date pot fi salvate în Contul tău Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Pentru a elibera spațiu, șterge fișiere din stocarea dispozitivului.</translation> <translation id="9109283579179481106">Conectează-te la o rețea mobilă</translation> <translation id="9111102763498581341">Deblochează</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index f0250fb..abfef89e 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -572,8 +572,6 @@ <translation id="177336675152937177">Данные размещаемых приложений</translation> <translation id="1776712937009046120">Добавить пользователя</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Это устройство принадлежит домену <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Чтобы войти в аккаунт <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, нажмите "Далее".</translation> <translation id="1779652936965200207">Введите данный ключ доступа в "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Приложение (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Закрыть группу</translation> @@ -886,7 +884,6 @@ <translation id="2202898655984161076">Возникла проблема с перечнем принтеров. Возможно, некоторые принтеры не удалось зарегистрировать при помощи <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Поисковая система, используемая в <ph name="BEGIN_LINK" />адресной строке<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Просмотр и изменение вводимого текста</translation> -<translation id="220792432208469595">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Эти данные нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Эта настройка принудительно применяется владельцем. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в вашем аккаунте. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Введите PIN-код для устройства "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Разрешить файлы cookie</translation> <translation id="2213140827792212876">Закрыть доступ</translation> @@ -1341,7 +1338,6 @@ <translation id="2804043232879091219">Не удалось открыть альтернативный браузер.</translation> <translation id="2804667941345577550">Вы автоматически выйдете из аккаунта на этом сайте (в том числе на открытых вкладках).</translation> <translation id="2804680522274557040">Камера отключена</translation> -<translation id="2805539617243680210">Все готово!</translation> <translation id="2805646850212350655">Зашифрованная файловая система (EFS) Microsoft</translation> <translation id="2805756323405976993">Приложения</translation> <translation id="2805770823691782631">Дополнительные сведения</translation> @@ -2019,6 +2015,7 @@ <translation id="3742055079367172538">Сделан скриншот</translation> <translation id="3742666961763734085">Не удалось найти организационное подразделение с таким названием. Повторите попытку.</translation> <translation id="3744111561329211289">Фоновая синхронизация</translation> +<translation id="3747077776423672805">Чтобы удалить приложение, нажмите "Настройки > Google Play Маркет > Управление настройками Android > Приложения (или Диспетчер приложений)" и найдите его в списке (возможно, придется пролистать экран вправо или влево). Выберите приложение и нажмите "Удалить" или "Отключить".</translation> <translation id="3748026146096797577">Нет соединения</translation> <translation id="3752582316358263300">ОК...</translation> <translation id="3752673729237782832">Мои устройства</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">Вы используете электронный ключ, который не зарегистрирован на этом сайте.</translation> <translation id="4788092183367008521">Проверьте подключение к сети и повторите попытку.</translation> <translation id="4792711294155034829">Сообщить о &проблеме...</translation> -<translation id="4795022432560487924">Отправка данных о работе устройства. Помогите сделать Android ещё лучше – разрешите автоматически отправлять в Google диагностическую информацию, данные об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Эта настройка принудительно применяется владельцем. Он вправе разрешить автоматическую отправку в Google данных об использовании и диагностике устройства. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-страница, только HTML</translation> <translation id="4798236378408895261">Прикрепить <ph name="BEGIN_LINK" />журналы Bluetooth<ph name="END_LINK" /> (доступно только сотрудникам Google)</translation> <translation id="4801448226354548035">Скрыть аккаунты</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">Автоматическое скачивание</translation> <translation id="5653154844073528838">Сохраненных принтеров: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Отправка отзыва в Google</translation> +<translation id="5657156137487675418">Показать все файлы сookie</translation> <translation id="5657667036353380798">Для установки внешнего расширения требуется версия Chrome <ph name="MINIMUM_CHROME_VERSION" /> или выше.</translation> <translation id="5658415415603568799">В целях безопасности через 20 часов вам потребуется ввести пароль.</translation> <translation id="5659593005791499971">Электронная почта</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">Свернуть</translation> <translation id="5942964813783878922">После установки обновления устройство <ph name="DEVICE_TYPE" /> перезапустится. Новые версии ПО и обновления системы безопасности будут устанавливаться автоматически.</translation> <translation id="5944869793365969636">Сканирование QR-кода</translation> -<translation id="5945188205370098537">Отправка данных о работе устройства. Помогите сделать Android ещё лучше – разрешите автоматически отправлять в Google диагностическую информацию, данные об использовании приложений и самого устройства. Эти данные нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в вашем аккаунте. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Идентификатор отчета: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Не удалось проанализировать файл</translation> <translation id="5955282598396714173">Срок действия пароля истек. Чтобы изменить пароль, выйдите из аккаунта и войдите снова.</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">Местоположение устройства</translation> <translation id="6186394685773237175">Похищенных паролей не найдено.</translation> <translation id="6195693561221576702">Демонстрационный офлайн-режим на этом устройстве недоступен.</translation> +<translation id="6196640612572343990">Блокировать сторонние файлы cookie</translation> <translation id="6196854373336333322">Расширение "<ph name="EXTENSION_NAME" />" контролирует настройки прокси-сервера. Это значит, что оно может отследить или изменить передаваемые вами данные, а также оборвать интернет-соединение. Если вы не знали об этом, вам следует отключить расширение.</translation> <translation id="6198102561359457428">Выйти и войти снова</translation> <translation id="6198252989419008588">Изменить PIN-код</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">Доступ к списку устройств, на которых выполнен вход</translation> <translation id="7120865473764644444">Ошибка синхронизации: отсутствует подключение к серверу. Повторная попытка…</translation> <translation id="7121362699166175603">Удаление истории и вариантов автозаполнения в адресной строке. Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Режим разработчика</translation> <translation id="7121728544325372695">Умные переносы</translation> <translation id="7123360114020465152">Принтер больше не поддерживается.</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Открыть вкладку в новом окне}one{Открыть вкладки в новом окне}few{Открыть вкладки в новом окне}many{Открыть вкладки в новом окне}other{Открыть вкладки в новом окне}}</translation> <translation id="8179976553408161302">ВВОД</translation> <translation id="8180239481735238521">страница</translation> -<translation id="8180294223783876911">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Эти данные нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в вашем аккаунте. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Расширение "<ph name="EXTENSION" />" сможет открывать и удалять изображения, видео- и аудиофайлы в отмеченных папках.</translation> <translation id="8181215761849004992">Не удалось подключить устройства к домену. Убедитесь, что вашему аккаунту разрешено выполнять это действие.</translation> <translation id="8182105986296479640">Приложение не отвечает</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">Показывать на этом компьютере уведомления о сообщениях, полученных на телефоне. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Чтобы пользоваться приложением "<ph name="APP_NAME" />", требуется разрешение родителя.</translation> <translation id="820568752112382238">Часто открываемые сайты</translation> -<translation id="8206581664590136590">Отправка данных о работе устройства. Помогите сделать Android ещё лучше – разрешите автоматически отправлять в Google диагностическую информацию, данные об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блюз</translation> <translation id="8206859287963243715">Сотовый</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Выполняется скачивание}one{Выполняется скачивание}few{Выполняется скачивание}many{Выполняется скачивание}other{Выполняется скачивание}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Аккаунт Google</translation> <translation id="8912793549644936705">Растянуть</translation> <translation id="8912810933860534797">Включить автосканирование</translation> -<translation id="891365694296252935">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Эта настройка принудительно применяется владельцем. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Загрузка подсказки</translation> <translation id="8916476537757519021">Субфрейм в режиме инкогнито: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Проверка электронного ключа</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">Запустить</translation> <translation id="9102610709270966160">Включить расширение</translation> <translation id="9103868373786083162">Нажмите, чтобы вернуться, используйте контекстное меню, чтобы открыть историю</translation> -<translation id="9104396740804929809">Отправка данных о работе устройства. Помогите сделать Android ещё лучше – разрешите автоматически отправлять в Google диагностическую информацию, данные об использовании приложений и самого устройства. Эти данные нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Эта настройка принудительно применяется владельцем. Он вправе разрешить автоматическую отправку в Google данных об использовании и диагностике устройства. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в вашем аккаунте. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Чтобы освободить пространство, удалите файлы, хранящиеся на устройстве.</translation> <translation id="9109283579179481106">Подключение к мобильной сети</translation> <translation id="9111102763498581341">Разблокировать</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index c19b5ab..c774b76 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">අනුග්රහය සහිත යෙදුම් දත්ත</translation> <translation id="1776712937009046120">පරිශීලකයකු එක් කරන්න</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">උපාංගය <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> විසින් කළමනා කෙරේ. - ඔබේ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ගිණුමට පුරන්නට "මිළඟ" ක්ලික් කරන්න</translation> <translation id="1779652936965200207">කරුණාකර මෙම රහස් යතුර "<ph name="DEVICE_NAME" />" හි ඇතුළු කරන්න:</translation> <translation id="177989070088644880">යෙදුම (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">කණ්ඩායම වසන්න</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">මුද්රණ යන්ත්ර ලැයිස්තුගත කිරීමේ ගැටළුවක් තිබේ. ඔබේ සමහු මුද්රණ යන්ත්ර සාර්ථකව <ph name="CLOUD_PRINT_NAME" /> සමඟ ලියාපදිංචි කර නොමැති වන්නට පුළුවන.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />ලිපින තීරුව<ph name="END_LINK" /> තුළ භාවිත කළ සෙවීම් යාන්ත්රණය</translation> <translation id="2204034823255629767">ඔබ ටයිප් කරන ඕනෑම දෙයක් කියවා වෙනස් කරන්න</translation> -<translation id="220792432208469595">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. මෙම උපාංගය ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යවයි. මෙය පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. මෙම සැකසීම හිමිකරු විසින් බලාත්මක කෙරේ. ඔබේ අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය නම්, මෙම දත්ත ඔබේ Google ගිණුුමට සුරකිනු ලැබේ. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="220858061631308971">PIN කේතය "<ph name="DEVICE_NAME" />" තුළ ඔන් කරන්න:</translation> <translation id="2212565012507486665">කුකීවලට ඉඩ දෙන්න</translation> <translation id="2213140827792212876">බෙදා ගැනීම ඉවත් කරන්න</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">වෛකල්පික බ්රවුසරය විවෘත කළ නොහැකි විය</translation> <translation id="2804667941345577550">ඔබ විවෘත පටිති ඇතුළුව මෙම වෙබ් අඩවියෙන් වරනු ලැබේ.</translation> <translation id="2804680522274557040">කැමරාව අක්රියයි</translation> -<translation id="2805539617243680210">ඔබ සියල්ලම සකසා ඇත!</translation> <translation id="2805646850212350655">Microsoft සංකේතනය කිරීමේ ගොනු පද්ධතිය</translation> <translation id="2805756323405976993">යෙදුම්</translation> <translation id="2805770823691782631">අතිරේක විස්තර</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">තිර ඡායාව ගැනිණි</translation> <translation id="3742666961763734085">එම නම සහිත ආයතනික ඒකකය සොයා ගැනීමට නොහැක. නැවත උත්සාහ කරන්න.</translation> <translation id="3744111561329211289">පසුබිමෙහි සමමුහුර්තකරණය</translation> +<translation id="3747077776423672805">යෙදුම් ඉවත් කිරීමට, සැකසීම් > Google Play Store > Android මනාප කළමනාකරණය > යෙදුම් හෝ යෙදුම් කළමනාකරු වෙත යන්න. අනතුරුව ඔබට අස්ථාපනය කිරීමට අවශ්ය යෙදුම තට්ටු කරන්න (ඔබට යෙදුම සොයා ගැනීමට දකුණට හෝ වමට ස්වයිප් කිරීමට අවශ්ය විය හැකිය). අනතුරුව අස්ථාපනය කරන්න හෝ අබල කරන්න තට්ටු කරන්න.</translation> <translation id="3748026146096797577">සබැඳී නැත</translation> <translation id="3752582316358263300">හරි...</translation> <translation id="3752673729237782832">මගේ උපාංග</translation> @@ -2755,7 +2752,6 @@ <translation id="4785719467058219317">ඔබ මෙම වෙබ් අඩවිය සමඟ ලියාපදිංචි නොකළ ආරක්ෂක යතුරක් භාවිත කරයි</translation> <translation id="4788092183367008521">ඔබගේ අන්තර්ජාල සම්බන්ධතාව පරීක්ෂා කර නැවත උත්සාහ කරන්න.</translation> <translation id="4792711294155034829">ගැටළුවක් වාර්තා කරන්න...</translation> -<translation id="4795022432560487924">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යැවීමෙන් ඔබගේ දරුවාගේ Android අත්දැකීම වැඩි දියුණු කර ගැනීමට උපකාරී වන්න. මෙය ඔබේ දරුවා හඳුනා ගැනීමට භාවිත නොකෙරෙන අතර, පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. මෙම සැකසීම හිමිකරු විසින් බලාත්මක කෙරේ. හිමිකරුට Google වෙත ස්වයංක්රියව දෝෂ නිර්ණ සහ භාවිත දත්ත යැවීමට තේරිය හැක. ඔබේ දරුවා සඳහා අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය කර තිබේ නම්, මෙම දත්ත ඔවුන්ගේ Google ගිණුමට සුරැකිය හැක. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="479536056609751218">වෙබ් පිටුව, HTML පමණී</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />බ්ලූටූත් ලොග<ph name="END_LINK" /> අමුණන්න (Google අභ්යන්තර)</translation> <translation id="4801448226354548035">ගිණුම් සඟවන්න</translation> @@ -3590,7 +3586,6 @@ <translation id="5941711191222866238">කුඩා කරන්න</translation> <translation id="5942964813783878922">මෙම යාවත්කාලීනයෙන් පසු ඔබේ <ph name="DEVICE_TYPE" /> යළි ඇරඹේ. අනාගත මෘදුකාංග සහ ආරක්ෂක යාවත්කාලීන ස්වයංක්රීයව ස්ථාපන කෙරේ.</translation> <translation id="5944869793365969636">QR කේතය ස්කෑන් කරන්න</translation> -<translation id="5945188205370098537">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යැවීමෙන් ඔබගේ Android අත්දැකීම වැඩි දියුණු කර ගැනීමට උපකාරී වන්න. මෙය පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. ඔබේ අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය නම්, මෙම දත්ත ඔබේ Google ගිණුුමට සුරකිනු ලැබේ. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">වාර්ථා අංකය <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ගොනුව විග්රහ කළ නොහැකිය</translation> <translation id="5955282598396714173">ඔබගේ මුරපදය කල් ඉකුත් වී ඇත. නැවත උත්සාහ කිරීමට වරා අනතුරුව නැවත පුරන්න.</translation> @@ -3776,6 +3771,7 @@ <translation id="6185132558746749656">උපාංගය පිහිටීම</translation> <translation id="6186394685773237175">සමථයට පත් වූ මුරපද කිසියක් නැත</translation> <translation id="6195693561221576702">මෙම උපාංගය නොබැඳි ආදර්ශන ප්රකාරයේ සැකසිය නොහැක.</translation> +<translation id="6196640612572343990">තෙවන-පාර්ශ්ව කුකී අවහිර කරන්න</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" දිගුව ඔබගේ ප්රොක්සි සැකසීම්වල පාලනය ගෙන ඇත, ඉන් අදහස් වන්නේ ඔබ සබැඳිව කරන ඕනෑම දෙයක් වෙනස් කිරීමට, බිඳී යාමට, හෝ හොරෙන් අසා සිටීමට හැකි බවයි. මෙම වෙනස් වීම සිදු වූයේ ඇයිදැයි ඔබට ව්ශ්වාස නැතිනම්, ඔබට බොහෝ විට එය අවශ්ය නොවිය හැකිය.</translation> <translation id="6198102561359457428">පිටවී නැවත පිවිසෙන්න</translation> <translation id="6198252989419008588">PIN අංකය වෙනස් කරන්න</translation> @@ -4440,7 +4436,6 @@ <translation id="711902386174337313">ඔබ පිරූ උපාංග ලැයිස්තුව කියවන්න</translation> <translation id="7120865473764644444">සමමුහුර්ත සේවාදායකය වෙත සම්බන්ධ විය නොහැකි විය. යළි උත්සාහ කරමින්...</translation> <translation id="7121362699166175603">ලිපින තීරුව තුළ ඉතිහාසය හා ස්වයං සම්පූර්ණ කිරීම් හිස් කරයි. ඔබේ Google ගිණුමට <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> හිදී බ්රවුස් කිරීමේ ඉතිහාසයේ වෙනත් ආකාරයන් තිබිය හැක.</translation> -<translation id="7121389946694989825">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. මෙම උපාංගය ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යවයි. මෙය ඔබේ දරුවා හඳුනා ගැනීමට භාවිත නොකෙරෙන අතර, පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. ඔබේ දරුවා සඳහා අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය කර තිබේ නම්, මෙම දත්ත ඔවුන්ගේ Google ගිණුමට සුරැකිය හැක. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">සංවර්ධක ප්රකාරය</translation> <translation id="7121728544325372695">ස්මාර්ට් ඩෑෂ්</translation> <translation id="7123360114020465152">තවදුරටත් සහාය නොදක්වයි</translation> @@ -4555,7 +4550,6 @@ <translation id="7280041992884344566">අනිෂ්ට මෘදුකාංග සඳහා Chrome සොයමින් සිටිය දී දෝෂයක් ඇති විය</translation> <translation id="7280649757394340890">පෙළ-කථන හඬ සැකසුම්</translation> <translation id="7280877790564589615">අවසරය ඉල්ලන ලදී</translation> -<translation id="7281268427852119151">සෙවීම, දැන්වීම් සහ අනෙකුත් Google සේවා පුද්ගලායන කිරීමට ඔබේ බ්රවුස් කිරීමේ ඉතිහාසයට භාවිත කරන්න</translation> <translation id="7282992757463864530">තතුතීරුව</translation> <translation id="7287143125007575591">ප්රවේශය ප්රතික්ෂේප කරන ලදී.</translation> <translation id="7287411021188441799">පෙරනිමි පසුබිම ප්රතිසාධනය</translation> @@ -5228,7 +5222,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{පටිත්ත නව කවුළුවට ගෙන යන්න}one{පටිති නව කවුළුවට ගෙන යන්න}other{පටිති නව කවුළුවට ගෙන යන්න}}</translation> <translation id="8179976553408161302">ඇතුළු කරන්න</translation> <translation id="8180239481735238521">පිටුව</translation> -<translation id="8180294223783876911">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. මෙම උපාංගය ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යවයි. මෙය පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. ඔබේ අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය නම්, මෙම දත්ත ඔබේ Google ගිණුුමට සුරකිනු ලැබේ. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" ට පරීක්ෂා කළ ස්ථානවල රූප, වීඩියෝ සහ ශබ්ද ගොනු කියවා මැකිය හැක.</translation> <translation id="8181215761849004992">වසමට එකතු වීමට නොහැකිය. උපාංග එක් කිරීම සඳහා ඔබට ප්රමාණවත් අවසරයක් තිබේ දැයි බැලීමට ඔබේ ගිණුම පරීක්ෂා කරන්න.</translation> <translation id="8182105986296479640">යෙදුම ප්රතිචාර නොදක්වයි.</translation> @@ -5250,7 +5243,6 @@ <translation id="8203732864715032075">පණිවුඩ සඳහා මෙම පරිගණකය මතක තබා ගැනීමට ඔබට දැනුම්දීම් සහ පෙරනිමි යවන්න. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ඔබේ මාපියවරු "<ph name="APP_NAME" />" අවහිර කර ඇත. මෙම යෙදුම භාවිත කිරීමට ඔබේ මාපියවරුන්ගෙන් අවසර ඉල්ලන්න.</translation> <translation id="820568752112382238">වැඩියෙන් පැමිණි වෙබ් අඩවි</translation> -<translation id="8206581664590136590">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යැවීමෙන් ඔබගේ දරුවාගේ Android අත්දැකීම වැඩි දියුණු කර ගැනීමට උපකාරී වන්න. මෙය ඔබේ දරුවා හඳුනා ගැනීමට භාවිත නොකෙරෙන අතර, පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. ඔබේ දරුවා සඳහා අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය කර තිබේ නම්, මෙම දත්ත ඔවුන්ගේ Google ගිණුමට සුරැකිය හැක. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">බ්ලූසි</translation> <translation id="8206859287963243715">සෙලියුලර්</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{බාගැනීම ක්රියාවේ පවතියි}one{බාගැනීම් ක්රියාවේ පවතියි}other{බාගැනීම් ක්රියාවේ පවතියි}}</translation> @@ -5796,7 +5788,6 @@ <translation id="8912362522468806198">Google ගිණුම</translation> <translation id="8912793549644936705">ඇදීම</translation> <translation id="8912810933860534797">ස්වයංක්රීය ස්කෑන් සබල කරන්න</translation> -<translation id="891365694296252935">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. මෙම උපාංගය ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යවයි. මෙය ඔබේ දරුවා හඳුනා ගැනීමට භාවිත නොකෙරෙන අතර, පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. මෙම සැකසීම හිමිකරු විසින් බලාත්මක කෙරේ. ඔබේ දරුවා සඳහා අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම සක්රීය කර තිබේ නම්, මෙම දත්ත ඔවුන්ගේ Google ගිණුමට සුරැකිය හැක. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">යෝජනාව පූර්ණය වෙමින්</translation> <translation id="8916476537757519021">අප්රකට උපරාමුව: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">ඔබගේ ආරක්ෂක යතුර තහවුරු කරමින්...</translation> @@ -5933,7 +5924,6 @@ <translation id="9101691533782776290">යෙදුම දියත් කරන්න</translation> <translation id="9102610709270966160">දිගුව සබල කරන්න</translation> <translation id="9103868373786083162">ආපසු යාමට ඔබන්න, ඉතිහාසය බැලීමට සන්දර්භ මෙනුව</translation> -<translation id="9104396740804929809">භාවිත සහ දෝෂ නිර්ණ දත්ත යවන්න. ස්වයංක්රියව රෝග විනිශ්චය, උපාංග සහ යෙදුම් භාවිත දත්ත Google වෙත යැවීමෙන් ඔබගේ Android අත්දැකීම වැඩි දියුණු කර ගැනීමට උපකාරී වන්න. මෙය පද්ධති සහ යෙදුම් ස්ථායිතාවට සහ අනෙකුත් වැඩිදියුණු කිරීම්වලට උදවු කරයි. සමහර එකතු කළ දත්ත Google යෙදුම්වලට සහ Android සංවර්ධකයින් වැනි හවුල්කරුවන්ට ද උදවු කරති. මෙම සැකසීම හිමිකරු විසින් බලාත්මක කෙරේ. හිමිකරුට Google වෙත ස්වයංක්රියව දෝෂ නිර්ණ සහ භාවිත දත්ත යැවීමට තේරිය හැක. ඔබේ අමතර වෙබ් සහ යෙදුම් ක්රියාකාරකම් සැකසීම සක්රීය නම්, මෙම දත්ත ඔබේ Google ගිණුුමට සුරකිනු ලැබේ. <ph name="BEGIN_LINK1" />තවත් දැන ගන්න<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">ඉඩ හිස් කිරීමට, උපාංග ගබඩාවෙන් ගොනු මකන්න.</translation> <translation id="9109283579179481106">ජංගම ජාලයට සම්බන්ධ වන්න</translation> <translation id="9111102763498581341">අගුලු හරන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 8b07feb4..78f3914 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Dáta hostených aplikácií</translation> <translation id="1776712937009046120">Pridať používateľa</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Toto zariadenie je spravované doménou <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Ak sa chcete prihlásiť do účtu <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, kliknite na Ďalej.</translation> <translation id="1779652936965200207">Zadajte tento prístupový kľúč v zariadení <ph name="DEVICE_NAME" />:</translation> <translation id="177989070088644880">Aplikácia (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zavrieť skupinu</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Pri vytváraní zoznamu tlačiarní sa vyskytol problém. Niektoré z vašich tlačiarní možno nie sú v službe <ph name="CLOUD_PRINT_NAME" /> registrované.</translation> <translation id="2203682048752833055">Vyhľadávač, ktorý sa používa v <ph name="BEGIN_LINK" />paneli s adresou<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Čítať a meniť všetko, čo napíšete</translation> -<translation id="220792432208469595">Odosielať údaje o využití a diagnostiky. Toto zariadenie momentálne automaticky odosiela Googlu diagnostiky a údaje o používaní zariadenia a aplikácií. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Používanie tohto nastavenia je presadzované vlastníkom. Ak aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť vo vašom účte Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Zadajte tento kód PIN v zariadení „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Povoliť súbory cookie</translation> <translation id="2213140827792212876">Odstrániť zdieľanie</translation> @@ -1352,7 +1349,6 @@ <translation id="2804043232879091219">Alternatívny prehliadač sa nepodarilo otvoriť</translation> <translation id="2804667941345577550">Systém vás odhlási z tohto webu (aj v otvorených kartách)</translation> <translation id="2804680522274557040">Kamera je vypnutá</translation> -<translation id="2805539617243680210">Všetko je nastavené.</translation> <translation id="2805646850212350655">Systém šifrovania súborov spoločnosti Microsoft</translation> <translation id="2805756323405976993">Aplikácie</translation> <translation id="2805770823691782631">Ďalšie podrobnosti</translation> @@ -2033,6 +2029,7 @@ <translation id="3742055079367172538">Vytvorila sa snímka obrazovky</translation> <translation id="3742666961763734085">Nepodarilo sa nájsť organizačnú jednotku s daným názvom. Skúste to znova.</translation> <translation id="3744111561329211289">Synchronizácia na pozadí</translation> +<translation id="3747077776423672805">Ak chcete odstrániť aplikácie, prejdite do časti Nastavenia > Obchod Google Play > Spravovať predvoľby Androidu > Aplikácie alebo Správca aplikácií. Potom klepnite na aplikáciu, ktorú chcete odinštalovať (možno budete musieť aplikáciu nájsť potiahnutím prstom doľava alebo doprava). Potom klepnite na možnosť Odinštalovať alebo Deaktivovať.</translation> <translation id="3748026146096797577">Nepripojené</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Moje zariadenia</translation> @@ -2756,7 +2753,6 @@ <translation id="4785719467058219317">Používate bezpečnostný kľúč, ktorý nie je registrovaný s týmto webom</translation> <translation id="4788092183367008521">Skontrolujte pripojenie k sieti a skúste to znova.</translation> <translation id="4792711294155034829">Nahlásiť p&roblém…</translation> -<translation id="4795022432560487924">Odosielať údaje o využití a diagnostiky. Pomôžte zlepšiť prostredie Androidu svojho dieťaťa automatickým odosielaním diagnostík a údajov o používaní zariadenia a aplikácií do Googlu. Nebudú slúžiť na zistenie totožnosti vášho dieťaťa. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Používanie tohto nastavenia je presadzované vlastníkom. Vlastník môže odosielať Googlu diagnostiky a údaje o používaní pre toto zariadenie. Ak pre dieťa aktivujete nastavenie dodatočnej aktivity na internete a v aplikáciách, tieto údaje sa môžu uložiť do jeho účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webová stránka, len kód HTML</translation> <translation id="4798236378408895261">Priložiť <ph name="BEGIN_LINK" />denníky rozhrania Bluetooth<ph name="END_LINK" /> (interné informácie Google)</translation> <translation id="4801448226354548035">Skryť účty</translation> @@ -3383,6 +3379,7 @@ <translation id="5649053991847567735">Automatické sťahovanie</translation> <translation id="5653154844073528838">Máte niekoľko uložených tlačiarní (<ph name="PRINTER_COUNT" />).</translation> <translation id="5656845498778518563">Odoslanie spätnej väzby Googlu</translation> +<translation id="5657156137487675418">Povoliť všetky súbory cookie</translation> <translation id="5657667036353380798">Inštalácia externého rozšírenia vyžaduje prehliadač Chrome verzie <ph name="MINIMUM_CHROME_VERSION" /> alebo vyšší</translation> <translation id="5658415415603568799">V rámci zvýšenia zabezpečenia vás Smart Lock po uplynutí 20 hodín požiada o zadanie hesla.</translation> <translation id="5659593005791499971">E-mail</translation> @@ -3590,7 +3587,6 @@ <translation id="5941711191222866238">Minimalizovať</translation> <translation id="5942964813783878922">Zariadenie <ph name="DEVICE_TYPE" /> sa po tejto aktualizácii reštartuje. Budúce aktualizácie softvéru a zabezpečenia sa budú inštalovať automaticky.</translation> <translation id="5944869793365969636">Skenovanie QR kódu</translation> -<translation id="5945188205370098537">Odosielať údaje o využití a diagnostiky. Pomôžte zlepšiť prostredie Androidu automatickým odosielaním diagnostík a údajov o používaní zariadenia a aplikácií do Googlu. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Ak aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť vo vašom účte Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID prehľadu <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Súbor nie je možné analyzovať</translation> <translation id="5955282598396714173">Platnosť hesla vypršala. Odhláste sa, potom sa znova prihláste a zmeňte ho.</translation> @@ -3776,6 +3772,7 @@ <translation id="6185132558746749656">Poloha zariadenia</translation> <translation id="6186394685773237175">Nezistili sa žiadne prelomené heslá</translation> <translation id="6195693561221576702">Toto zariadenie nie je možné nastaviť v režime offline ukážky.</translation> +<translation id="6196640612572343990">Blokovať súbory cookie tretích strán</translation> <translation id="6196854373336333322">Toto rozšírenie „<ph name="EXTENSION_NAME" />“ prevzalo kontrolu nad vašimi nastaveniami servera proxy, čo znamená, že môže zmeniť, prerušiť alebo zachytiť všetku vašu činnosť online. Ak neviete, prečo k tomu došlo, pravdepodobne si to neželáte.</translation> <translation id="6198102561359457428">Odhláste sa a potom sa znova prihláste...</translation> <translation id="6198252989419008588">Zmeniť PIN</translation> @@ -4442,7 +4439,6 @@ <translation id="711902386174337313">Čítať zoznam zariadení, v ktorých ste prihlásení</translation> <translation id="7120865473764644444">K serveru synchronizácie sa nepodarilo pripojiť. Prebieha ďalší pokus…</translation> <translation id="7121362699166175603">Vymaže históriu a záznamy automatického dopĺňania v paneli s adresou. Váš účet Google môže mať ďalšie formy histórie prehliadania na adrese <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Odosielať údaje o využití a diagnostiky. Toto zariadenie momentálne automaticky odosiela Googlu diagnostiky a údaje o používaní zariadenia a aplikácií. Nebudú slúžiť na zistenie totožnosti vášho dieťaťa. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Ak pre dieťa aktivujete nastavenie dodatočnej aktivity na internete a v aplikáciách, tieto údaje sa môžu uložiť do jeho účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Režim vývojára</translation> <translation id="7121728544325372695">Inteligentné pomlčky</translation> <translation id="7123360114020465152">Nepodporovaná</translation> @@ -4557,7 +4553,6 @@ <translation id="7280041992884344566">Pri hľadaní škodlivého softvéru sa v Chrome vyskytla chyba</translation> <translation id="7280649757394340890">Hlasové nastavenia prevodu textu na reč</translation> <translation id="7280877790564589615">Vyžaduje sa povolenie</translation> -<translation id="7281268427852119151">Prispôsobovať Vyhľadávanie, reklamy a ďalšie služby Googlu pomocou histórie prehliadania</translation> <translation id="7282992757463864530">Informačný panel</translation> <translation id="7287143125007575591">Prístup bol odmietnutý</translation> <translation id="7287411021188441799">Obnoviť predvolené pozadie</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Presunúť kartu do nového okna}few{Presunúť karty do nového okna}many{Presunúť karty do nového okna}other{Presunúť karty do nového okna}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">strana</translation> -<translation id="8180294223783876911">Odosielať údaje o využití a diagnostiky. Toto zariadenie momentálne automaticky odosiela Googlu diagnostiky a údaje o používaní zariadenia a aplikácií. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Ak aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť vo vašom účte Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Rozšírenie <ph name="EXTENSION" /> dokáže čítať a odstrániť obrázky, videá a zvukové súbory vo vybratých umiestneniach.</translation> <translation id="8181215761849004992">Nepodarilo sa pripojiť k doméne. Skontrolujte svoj účet, či máte dostatočné oprávnenia na pridávanie zariadení.</translation> <translation id="8182105986296479640">Aplikácia nereaguje.</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">Odosiela upozornenia a predvolene si zapamätá tento počítač pre Správy. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> blokuje tvoj rodič. Ak chceš používať túto aplikáciu, požiadaj rodiča o povolenie.</translation> <translation id="820568752112382238">Najviac navštevované stránky</translation> -<translation id="8206581664590136590">Odosielať údaje o využití a diagnostiky. Pomôžte zlepšiť prostredie Androidu svojho dieťaťa automatickým odosielaním diagnostík a údajov o používaní zariadenia a aplikácií do Googlu. Nebudú slúžiť na zistenie totožnosti vášho dieťaťa. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Ak pre dieťa aktivujete nastavenie dodatočnej aktivity na internete a v aplikáciách, tieto údaje sa môžu uložiť do jeho účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesový</translation> <translation id="8206859287963243715">Mobilné</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Sťahuje sa}few{Sťahujú sa}many{Sťahujú sa}other{Sťahujú sa}}</translation> @@ -5799,7 +5792,6 @@ <translation id="8912362522468806198">účtu Google</translation> <translation id="8912793549644936705">Roztiahnuť</translation> <translation id="8912810933860534797">Aktivovať automatické prehľadávanie</translation> -<translation id="891365694296252935">Odosielať údaje o využití a diagnostiky. Toto zariadenie momentálne automaticky odosiela Googlu diagnostiky a údaje o používaní zariadenia a aplikácií. Nebudú slúžiť na zistenie totožnosti vášho dieťaťa. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Používanie tohto nastavenia je presadzované vlastníkom. Ak pre dieťa aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť do jeho účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Načítavajú sa návrhy</translation> <translation id="8916476537757519021">Podrámec inkognito: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Overuje sa bezpečnostný kľúč…</translation> @@ -5936,7 +5928,6 @@ <translation id="9101691533782776290">Spustiť aplikáciu</translation> <translation id="9102610709270966160">Povoliť rozšírenie</translation> <translation id="9103868373786083162">Stlačením tohto tlačidla prejdete späť, históriu si zobrazíte pomocou kontextovej ponuky</translation> -<translation id="9104396740804929809">Odosielať údaje o využití a diagnostiky. Pomôžte zlepšiť prostredie Androidu automatickým odosielaním diagnostík a údajov o používaní zariadenia a aplikácií do Googlu. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Používanie tohto nastavenia je presadzované vlastníkom. Vlastník môže odosielať Googlu diagnostiky a údaje o používaní pre toto zariadenie. Ak aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť vo vašom účte Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Miesto uvoľníte odstránením súborov z úložiska zariadenia.</translation> <translation id="9109283579179481106">Pripojenie k mobilnej sieti</translation> <translation id="9111102763498581341">Odomknúť</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 90912c2..992fd2f 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Podatki gostujočih aplikacij</translation> <translation id="1776712937009046120">Dodaj uporabnika</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">To napravo upravlja domena <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kliknite »Naprej«, če želite nadaljevati prijavo v račun za <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Geslo vnesite v napravi »<ph name="DEVICE_NAME" />«:</translation> <translation id="177989070088644880">Aplikacija (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Zapri skupino</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Težava pri prikazu tiskalnikov. Nekateri od vaših tiskalnikov morda niso uspešno registrirani v storitvi <ph name="CLOUD_PRINT_NAME" /></translation> <translation id="2203682048752833055">Iskalnik, uporabljen v <ph name="BEGIN_LINK" />naslovni vrstici<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Branje in spreminjanje vsega, kar napišete</translation> -<translation id="220792432208469595">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Te podatke uporabljamo za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Če ste vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v vašem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Vnesite PIN za napravo »<ph name="DEVICE_NAME" />«:</translation> <translation id="2212565012507486665">Dovoli piškotke</translation> <translation id="2213140827792212876">Odstrani skupno rabo</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Nadomestnega brskalnika ni bilo mogoče odpreti</translation> <translation id="2804667941345577550">Odjavljeni boste s tega spletnega mesta, vključno s tistim na odprtih zavihkih</translation> <translation id="2804680522274557040">Fotoaparat je izklopljen</translation> -<translation id="2805539617243680210">Pripravljeni ste.</translation> <translation id="2805646850212350655">Microsoftov šifrirni datotečni sistem</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatne podrobnosti</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Posnetek zaslona je narejen</translation> <translation id="3742666961763734085">Organizacijske enote s tem imenom ni mogoče najti. Poskusite znova.</translation> <translation id="3744111561329211289">Sinhroniziranje v ozadju</translation> +<translation id="3747077776423672805">Če želite odstraniti aplikacije, pojdite v »Nastavitve« > »Trgovina Google Play« > »Upravljanje nastavitev Androida« > »Aplikacije« ali odprite Upravitelja aplikacij. Nato se dotaknite aplikacije, ki jo želite odmestiti (morda boste morali s prstom povleči v desno ali levo, da jo boste našli). Nato se dotaknite »Odmesti« ali »Onemogoči«.</translation> <translation id="3748026146096797577">Povezava ni vzpostavljena</translation> <translation id="3752582316358263300">V redu ...</translation> <translation id="3752673729237782832">Moje naprave</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Varnostni ključ, ki ga uporabljate, ni registriran na tem spletnem mestu</translation> <translation id="4788092183367008521">Preverite omrežno povezavo in poskusite znova.</translation> <translation id="4792711294155034829">&Prijavite težavo ...</translation> -<translation id="4795022432560487924">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati otrokovo izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Lastnik bo morda izbral, da se za to napravo pošiljajo diagnostični podatki in podatki o uporabi Googlu. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Spletna stran, samo HTML</translation> <translation id="4798236378408895261">Priložite <ph name="BEGIN_LINK" />Dnevnike za Bluetooth<ph name="END_LINK" /> (Google – interno)</translation> <translation id="4801448226354548035">Skrij račune</translation> @@ -3386,6 +3382,7 @@ <translation id="5649053991847567735">Samodejni prenosi</translation> <translation id="5653154844073528838">Imate toliko shranjenih tiskalnikov: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Pošiljanje povratnih informacij Googlu</translation> +<translation id="5657156137487675418">Dovoli vse piškotke</translation> <translation id="5657667036353380798">Za zunanjo razširitev mora biti nameščen Chrome <ph name="MINIMUM_CHROME_VERSION" /> ali novejši.</translation> <translation id="5658415415603568799">Zaradi večje varnosti vas bo Smart Lock pozval, da po 20 urah vnesete geslo.</translation> <translation id="5659593005791499971">E-pošta</translation> @@ -3593,7 +3590,6 @@ <translation id="5941711191222866238">Pomanjšaj</translation> <translation id="5942964813783878922">Naprava <ph name="DEVICE_TYPE" /> se bo po tej posodobitvi znova zagnala. Prihodnje posodobitve programske opreme in varnostne posodobitve bodo nameščene samodejno.</translation> <translation id="5944869793365969636">Branje kode QR</translation> -<translation id="5945188205370098537">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Te podatke uporabljamo za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v vašem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID poročila: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Datoteke ni mogoče razčleniti</translation> <translation id="5955282598396714173">Geslo je poteklo. Odjavite se in se nato znova prijavite, da ga spremenite.</translation> @@ -3779,6 +3775,7 @@ <translation id="6185132558746749656">Lokacija naprave</translation> <translation id="6186394685773237175">Najdeno ni bilo nobeno ogroženo geslo</translation> <translation id="6195693561221576702">Te naprave ni mogoče nastaviti v predstavitvenem načinu brez povezave.</translation> +<translation id="6196640612572343990">Blokiraj piškotke drugih spletnih mest</translation> <translation id="6196854373336333322">Razširitev »<ph name="EXTENSION_NAME" />« je prevzela nadzor nad nastavitvami strežnika proxy, kar pomeni, da lahko spremeni, prekine ali nadzoruje vse, kar počnete v spletu. Če ne veste, zakaj je prišlo do te spremembe, je verjetno nezaželena.</translation> <translation id="6198102561359457428">Odjavite se in znova prijavite ...</translation> <translation id="6198252989419008588">Spremeni PIN</translation> @@ -4445,7 +4442,6 @@ <translation id="711902386174337313">Branje seznama naprav, v katere ste prijavljeni</translation> <translation id="7120865473764644444">Povezave s strežnikom za sinhronizacijo ni bilo mogoče vzpostaviti. Vnovičen poskus …</translation> <translation id="7121362699166175603">Izbriše zgodovino in samodokončanja v naslovni vrstici. V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Način za razvijalce</translation> <translation id="7121728544325372695">Pametni pomišljaji</translation> <translation id="7123360114020465152">Ni več podprto</translation> @@ -4560,7 +4556,6 @@ <translation id="7280041992884344566">Medtem ko je Chrome iskal škodljivo programsko opremo, je prišlo do napake</translation> <translation id="7280649757394340890">Glasovne nastavitve pretvorbe besedila v govor</translation> <translation id="7280877790564589615">Zahtevano je dovoljenje</translation> -<translation id="7281268427852119151">Prilagajanje Iskanja Google, oglasov in drugih Googlovih storitev z zgodovino brskanja</translation> <translation id="7282992757463864530">Informacijska vrstica</translation> <translation id="7287143125007575591">Dostop zavrnjen.</translation> <translation id="7287411021188441799">Obnovi privzeto ozadje</translation> @@ -5235,7 +5230,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Premik zavihka v novo okno}one{Premik zavihka v novo okno}two{Premik zavihkov v novo okno}few{Premik zavihkov v novo okno}other{Premik zavihkov v novo okno}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">stran</translation> -<translation id="8180294223783876911">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Te podatke uporabljamo za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v vašem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Razširitev »<ph name="EXTENSION" />« lahko bere in izbriše slike, videodatoteke in zvočne datoteke na označenih lokacijah.</translation> <translation id="8181215761849004992">Domeni se ni mogoče pridružiti. Preverite, ali imate v računu zadostne pravice za dodajanje naprav.</translation> <translation id="8182105986296479640">Program se ne odziva.</translation> @@ -5257,7 +5251,6 @@ <translation id="8203732864715032075">Pošlje vam obvestila in si privzeto zapomni ta računalnik za Sporočila. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Aplikacijo »<ph name="APP_NAME" />« je blokiral starš. Če želiš uporabljati to aplikacijo, prosi starša za dovoljenje.</translation> <translation id="820568752112382238">Najbolj obiskana spletna mesta</translation> -<translation id="8206581664590136590">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati otrokovo izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Glasbenik</translation> <translation id="8206859287963243715">Prenosni</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Poteka prenos}one{Poteka prenos}two{Potekata prenosa}few{Potekajo prenosi}other{Potekajo prenosi}}</translation> @@ -5803,7 +5796,6 @@ <translation id="8912362522468806198">Google Račun</translation> <translation id="8912793549644936705">Raztegni</translation> <translation id="8912810933860534797">Omogočanje samodejnega iskanja</translation> -<translation id="891365694296252935">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Nalaganje predloga</translation> <translation id="8916476537757519021">Podokvir za način brez beleženja zgodovine: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Preverjanje varnostnega ključa ...</translation> @@ -5940,7 +5932,6 @@ <translation id="9101691533782776290">Zažene aplikacijo</translation> <translation id="9102610709270966160">Omogoči razširitev</translation> <translation id="9103868373786083162">Pritisnite, če želite nazaj, s kontekstnim menijem pa prikažete zgodovino</translation> -<translation id="9104396740804929809">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Te podatke uporabljamo za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Lastnik bo morda izbral, da se za to napravo pošiljajo diagnostični podatki in podatki o uporabi Googlu. Če ste vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v vašem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Če želite sprostiti prostor, izbrišite datoteke iz shrambe v napravi.</translation> <translation id="9109283579179481106">Povezovanje z mobilnim omrežjem</translation> <translation id="9111102763498581341">Odkleni</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index fed33cd..c0b012ed 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">Të dhënat e strehuara të aplikacionit</translation> <translation id="1776712937009046120">Shto përdorues</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Kjo pajisje menaxhohet nga <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Kliko te "Përpara" për të vazhduar me identifikimin në llogarinë tënde <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Fut këtë çelës kalimi në "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Aplikacion (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Mbyll grupin</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">Pati një problem në renditjen e printerëve. Disa prej tyre rinterëve mund të mos jenë regjistruar me sukses në <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Motori i kërkimit që përdoret në <ph name="BEGIN_LINK" />shiritin e adresës<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Lexo dhe ndrysho gjithçka që shkruan</translation> -<translation id="220792432208469595">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Ky cilësim zbatohet nga zotëruesi. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar, këto të dhëna mund të ruhen në "Llogarinë tënde të Google". <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Fut këtë kod PIN në "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Lejo kukit</translation> <translation id="2213140827792212876">Hiq ndarjen</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">Shfletuesi alternativ nuk mund të hapej</translation> <translation id="2804667941345577550">Do të nxirresh nga ky sajt, duke përfshirë edhe në skedat e hapura</translation> <translation id="2804680522274557040">Kamera është çaktivizuar</translation> -<translation id="2805539617243680210">Je plotësisht gati!</translation> <translation id="2805646850212350655">Sistemi i skedarëve të enkriptimit të Microsoft</translation> <translation id="2805756323405976993">Aplikacionet</translation> <translation id="2805770823691782631">Detaje të tjera</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">Pamja e ekranit u mor</translation> <translation id="3742666961763734085">Nuk mund të gjendej njësi organizative me atë emër. Provo sërish.</translation> <translation id="3744111561329211289">Sinkronizimi në sfond</translation> +<translation id="3747077776423672805">Për të hequr aplikacionet, shko te "Cilësimet" > "Dyqani i Google Play" > "Menaxho preferencat e Android" > "Aplikacionet" ose "Menaxheri i aplikacioneve". Më pas trokit tek aplikacioni që dëshiron të çinstalosh (mund të jetë e nevojshme që të rrëshqasësh djathtas ose majtas për të gjetur aplikacionin). Më pas trokit "Çinstalo" ose "Çaktivizo".</translation> <translation id="3748026146096797577">Nuk është i lidhur</translation> <translation id="3752582316358263300">Në rregull...</translation> <translation id="3752673729237782832">Pajisjet e mia</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">Po përdor një çelës sigurie që nuk është i regjistruar me këtë sajt uebi</translation> <translation id="4788092183367008521">Kontrollo lidhjen e rrjetit dhe provo përsëri.</translation> <translation id="4792711294155034829">&Raporto një problem...</translation> -<translation id="4795022432560487924">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Ndihmo në përmirësimin e përvojës së fëmijës tënd me Android duke dërguar automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Ky cilësim zbatohet nga zotëruesi. Zotëruesi mund të zgjedhë të dërgojë te Google të dhënat e diagnostikimit dhe të përdorimit për këtë pajisje. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Faqe interneti, vetëm HTML</translation> <translation id="4798236378408895261">Bashkëngjit <ph name="BEGIN_LINK" />Evidencat e Bluetooth-it<ph name="END_LINK" /> (e brendshme për Google)</translation> <translation id="4801448226354548035">Fshih llogaritë</translation> @@ -3588,7 +3584,6 @@ <translation id="5941711191222866238">Minimizo</translation> <translation id="5942964813783878922">Pajisja jote <ph name="DEVICE_TYPE" /> do të riniset pas këtij përditësimi. Përditësimet e ardhshme të softuerëve dhe të sigurisë do të instalohen automatikisht.</translation> <translation id="5944869793365969636">Skano kodin QR</translation> -<translation id="5945188205370098537">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Ndihmo me përmirësimin e përvojës sate të Android duke dërguar automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar, këto të dhëna mund të ruhen në "Llogarinë tënde të Google". <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID-ja e raportimit <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Skedari nuk mund të analizohej</translation> <translation id="5955282598396714173">Fjalëkalimi yt ka skaduar. Dil dhe më pas identifikohu përsëri për ta ndryshuar atë.</translation> @@ -3774,6 +3769,7 @@ <translation id="6185132558746749656">Vendndodhja e pajisjes</translation> <translation id="6186394685773237175">Nuk u gjetën fjalëkalime të komprometuara</translation> <translation id="6195693561221576702">Kjo pajisje nuk mund të konfigurohet në modalitetin e demonstrimit jashtë linje.</translation> +<translation id="6196640612572343990">Blloko kukit e palëve të treta</translation> <translation id="6196854373336333322">Shtesa <ph name="EXTENSION_NAME" /> ka marrë nën kontroll cilësimet e përfaqësuesit, që do të thotë se mund të ndryshojë, shkelë ose përgjojë çdo gjë që ti bën në linjë. Nëse s'je i sigurt se pse ndodhi ky ndryshim, ndoshta nuk e do.</translation> <translation id="6198102561359457428">Dil dhe pastaj identifikohu sërish...</translation> <translation id="6198252989419008588">Ndrysho kodin PIN</translation> @@ -4440,7 +4436,6 @@ <translation id="711902386174337313">Lexo listën e pajisjeve ku je identifikuar</translation> <translation id="7120865473764644444">Nuk mund të lidhej me serverin e sinkronizimit.</translation> <translation id="7121362699166175603">Pastron historikun dhe plotësimet automatike në shiritin e adresës. Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit në <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Modaliteti i zhvilluesit</translation> <translation id="7121728544325372695">Vizat inteligjente</translation> <translation id="7123360114020465152">Nuk mbështetet më</translation> @@ -4555,7 +4550,6 @@ <translation id="7280041992884344566">Ndodhi një gabim ndërkohë që Chrome po kërkonte për softuerë të dëmshëm</translation> <translation id="7280649757394340890">Cilësimet e zërit për tekstin në ligjërim</translation> <translation id="7280877790564589615">Kërkohet leje</translation> -<translation id="7281268427852119151">Përdor historikun tënd të shfletimit për të personalizuar "Kërko", reklamat dhe shërbime të tjera të Google</translation> <translation id="7282992757463864530">Shiriti i informacioneve</translation> <translation id="7287143125007575591">Qasja refuzohet</translation> <translation id="7287411021188441799">Restauro sfondin e parazgjedhur</translation> @@ -5228,7 +5222,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Zhvendose skedën në një dritare të re}other{Zhvendosi skedat në një dritare të re}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">faqja</translation> -<translation id="8180294223783876911">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar, këto të dhëna mund të ruhen në "Llogarinë tënde të Google". <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" mund të lexojë dhe fshijë imazhe, video dhe skedarë audio në vendndodhjet e verifikuara.</translation> <translation id="8181215761849004992">Nuk mund t'i bashkohet domenit. Kontrollo llogarinë për të parë nëse ke privilegje të mjaftueshme për të shtuar pajisje.</translation> <translation id="8182105986296479640">Aplikacioni nuk përgjigjet.</translation> @@ -5250,7 +5243,6 @@ <translation id="8203732864715032075">Të dërgon njoftime dhe kthen parazgjedhjen për të kujtuar këtë kompjuter për "Mesazhet". <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" është bllokuar nga prindi yt. Kërko leje nga prindi që ta përdorësh këtë aplikacion.</translation> <translation id="820568752112382238">Sajtet më të vizituara</translation> -<translation id="8206581664590136590">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Ndihmo në përmirësimin e përvojës së fëmijës tënd me Android duke dërguar automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluzi</translation> <translation id="8206859287963243715">Rrjeti celular</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Shkarkimi është në vazhdim}other{Shkarkimet janë në vazhdim}}</translation> @@ -5796,7 +5788,6 @@ <translation id="8912362522468806198">Llogaria e Google</translation> <translation id="8912793549644936705">Shtrij</translation> <translation id="8912810933860534797">Aktivizo skanimin automatik</translation> -<translation id="891365694296252935">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Ky cilësim zbatohet nga zotëruesi. Nëse "Aktiviteti shtesë i uebit dhe i aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Po ngarkon sugjerimin</translation> <translation id="8916476537757519021">Nënkorniza "e fshehtë": <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Çelësi yt i sigurisë po verifikohet...</translation> @@ -5933,7 +5924,6 @@ <translation id="9101691533782776290">Nis aplikacionin</translation> <translation id="9102610709270966160">Aktivizo shtesën</translation> <translation id="9103868373786083162">Shtyp për t'u kthyer prapa. Historiku mund të shihet nga menyja kontekstuale.</translation> -<translation id="9104396740804929809">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Ndihmo me përmirësimin e përvojës sate të Android duke dërguar automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Ky cilësim zbatohet nga zotëruesi. Zotëruesi mund të zgjedhë të dërgojë te Google të dhënat e diagnostikimit dhe të përdorimit për këtë pajisje. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar, këto të dhëna mund të ruhen në "Llogarinë tënde të Google". <ph name="BEGIN_LINK1" />Mëso më shumë<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Për të liruar hapësirë, fshi skedarë nga hapësira ruajtëse e pajisjes.</translation> <translation id="9109283579179481106">Lidhu me rrjetin celular</translation> <translation id="9111102763498581341">Shkyç</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 9e7091d..0d5c778c 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">Подаци хостованих апликација</translation> <translation id="1776712937009046120">Додај корисника</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Овим уређајем управља <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Кликните на „Даље“ да бисте наставили са пријављивањем на налог за <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Унесите овај приступни кôд на уређају „<ph name="DEVICE_NAME" />“:</translation> <translation id="177989070088644880">Апликација (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Затвори групу</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">Дошло је до проблема приликом пописа штампача. Неки од штампача можда нису регистровани са <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Претраживач који се користи из <ph name="BEGIN_LINK" />траке за адресу<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Читање и мењање свега што уносите</translation> -<translation id="220792432208469595">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. То ће помоћи у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. То подешавање примењује власник. Ако укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Унесите овај PIN кôд на уређају „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Дозволи колачиће</translation> <translation id="2213140827792212876">Уклоните дељење</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">Нисмо успели да отворимо алтернативни прегледач</translation> <translation id="2804667941345577550">Одјавићете се са овог сајта, укључујући и инстанце на отвореним картицама</translation> <translation id="2804680522274557040">Дозвола за камеру је искључена</translation> -<translation id="2805539617243680210">Спремни сте!</translation> <translation id="2805646850212350655">Microsoft систем за шифровање датотека</translation> <translation id="2805756323405976993">Апликације</translation> <translation id="2805770823691782631">Детаљне информације</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">Снимак екрана је направљен</translation> <translation id="3742666961763734085">Не можемо да пронађемо организациону јединицу са тим називом. Пробајте поново.</translation> <translation id="3744111561329211289">Синхронизација у позадини</translation> +<translation id="3747077776423672805">Да бисте уклонили апликације, идите у одељак Подешавања > Google Play продавница > Управљајте Android подешавањима > Апликације или Менаџер апликација. Додирните апликацију коју желите да деинсталирате (можда ћете морати да превучете надесно или налево да бисте пронашли апликацију). Онда додирните Деинсталирај или Онемогући.</translation> <translation id="3748026146096797577">Није повезано</translation> <translation id="3752582316358263300">Потврди...</translation> <translation id="3752673729237782832">Моји уређаји</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">Користите безбедносни кључ који није регистрован за овај веб-сајт</translation> <translation id="4788092183367008521">Проверите мрежну везу и пробајте поново.</translation> <translation id="4792711294155034829">&Пријави проблем...</translation> -<translation id="4795022432560487924">Шаљите податке о коришћењу и дијагностичке податке. Помозите нам да побољшамо Android доживљај за дете тако што ћете аутоматски слати Google-у податке о дијагностици и коришћењу уређаја и апликација. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. То подешавање примењује власник. Власник може да изабере да се подаци о дијагностици и коришћењу за овај уређај шаљу Google-у. Ако за дете укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-страница, само HTML</translation> <translation id="4798236378408895261">Приложите <ph name="BEGIN_LINK" />Евиденције Bluetooth-а<ph name="END_LINK" /> (Google интерно)</translation> <translation id="4801448226354548035">Сакриј налоге</translation> @@ -3382,6 +3378,7 @@ <translation id="5649053991847567735">Аутоматска преузимања</translation> <translation id="5653154844073528838">Имате сачуване штампаче: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Пошаљите повратне информације Google-у</translation> +<translation id="5657156137487675418">Дозволи све колачиће</translation> <translation id="5657667036353380798">Спољни додатак захтева да буде инсталиран Chrome <ph name="MINIMUM_CHROME_VERSION" /> или новија верзија.</translation> <translation id="5658415415603568799">Ради веће безбедности Smart Lock ће вам тражити да унесете лозинку после 20 сати.</translation> <translation id="5659593005791499971">Имејл</translation> @@ -3589,7 +3586,6 @@ <translation id="5941711191222866238">Смањи</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> ће се рестартовати после овог ажурирања. Будућа софтверска и безбедносна ажурирања ће се инсталирати аутоматски.</translation> <translation id="5944869793365969636">Скенирајте QR кôд</translation> -<translation id="5945188205370098537">Шаљите податке о коришћењу и дијагностичке податке. Помозите нам да вам пружимо бољи доживљај Android-а тако што ћете аутоматски слати податке о дијагностици, уређају и коришћењу апликација Google-у. То ће помоћи у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ИД извештаја <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Рашчлањивање датотеке није успело</translation> <translation id="5955282598396714173">Лозинка је истекла. Одјавите се, па се поново пријавите да бисте је променили.</translation> @@ -3775,6 +3771,7 @@ <translation id="6185132558746749656">Локација уређаја</translation> <translation id="6186394685773237175">Није пронађена ниједна угрожена лозинка</translation> <translation id="6195693561221576702">Овај уређај не може да се подеси у офлајн режиму демонстрације.</translation> +<translation id="6196640612572343990">Блокирај колачиће треће стране</translation> <translation id="6196854373336333322">Додатак „<ph name="EXTENSION_NAME" />“ је преузео контролу над подешавањима проксија, што значи да може да мења, прекида или шпијунира све што радите онлајн. Ако нисте сигурни зашто је дошло до ове промене, вероватно вам није потребна.</translation> <translation id="6198102561359457428">Одјави ме, па ме поново пријави...</translation> <translation id="6198252989419008588">Промени PIN</translation> @@ -4441,7 +4438,6 @@ <translation id="711902386174337313">Читање листе уређаја на којима сте пријављени</translation> <translation id="7120865473764644444">Успостављање везе са сервером за синхронизацију није успело. Покушава се поново…</translation> <translation id="7121362699166175603">Брише историју и аутоматска довршавања у траци за адресу. Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако за дете укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Режим програмера</translation> <translation id="7121728544325372695">Паметне црте</translation> <translation id="7123360114020465152">Није више подржан</translation> @@ -4556,7 +4552,6 @@ <translation id="7280041992884344566">Дошло је до грешке док је Chrome тражио штетан софтвер</translation> <translation id="7280649757394340890">Подешавања гласа за претварање текста у говор</translation> <translation id="7280877790564589615">Тражи се дозвола</translation> -<translation id="7281268427852119151">Користите историју прегледања за персонализацију Претраге, огласа и других Google услуга</translation> <translation id="7282992757463864530">Трака са информацијама</translation> <translation id="7287143125007575591">Приступ је одбијен.</translation> <translation id="7287411021188441799">Врати подразумевану позадину</translation> @@ -5231,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Премести картицу у нов прозор}one{Премести картице у нов прозор}few{Премести картице у нов прозор}other{Премести картице у нов прозор}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">страница</translation> -<translation id="8180294223783876911">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. То ће помоћи у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">„<ph name="EXTENSION" />“ може да чита и брише слике, видео и аудио датотеке на наведеним локацијама.</translation> <translation id="8181215761849004992">Придруживање домену није успело. На налогу проверите да ли имате привилегије за додавање уређаја.</translation> <translation id="8182105986296479640">Апликација не реагује.</translation> @@ -5253,7 +5247,6 @@ <translation id="8203732864715032075">Шаље вам обавештења и подразумевано је подешавање за памћење SMS-ова на овом рачунару. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Родитељ блокира апликацију <ph name="APP_NAME" />. Затражи од родитеља дозволу за коришћење ове апликације.</translation> <translation id="820568752112382238">Најпосећенији сајтови</translation> -<translation id="8206581664590136590">Шаљите податке о коришћењу и дијагностичке податке. Помозите нам да побољшамо Android доживљај за дете тако што ћете аутоматски слати Google-у податке о дијагностици и коришћењу уређаја и апликација. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако за дете укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блузи</translation> <translation id="8206859287963243715">Мобилни уређај</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Преузимање је у току}one{Преузимања су у току}few{Преузимања су у току}other{Преузимања су у току}}</translation> @@ -5799,7 +5792,6 @@ <translation id="8912362522468806198">Google налога</translation> <translation id="8912793549644936705">Растегни</translation> <translation id="8912810933860534797">Омогући аутоматско скенирање</translation> -<translation id="891365694296252935">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. То подешавање примењује власник. Ако за дете укључите додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Учитавање предлога</translation> <translation id="8916476537757519021">Подоквир Без архивирања: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Безбедносни кључ се верификује...</translation> @@ -5936,7 +5928,6 @@ <translation id="9101691533782776290">Покрените апликацију</translation> <translation id="9102610709270966160">Омогући додатак</translation> <translation id="9103868373786083162">Притисните да бисте се вратили или отворите контекстуални мени да бисте видели историју</translation> -<translation id="9104396740804929809">Шаљите податке о коришћењу и дијагностичке податке. Помозите нам да вам пружимо бољи доживљај Android-а тако што ћете аутоматски слати податке о дијагностици, уређају и коришћењу апликација Google-у. То ће помоћи у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. То подешавање примењује власник. Власник може да изабере да се подаци о дијагностици и коришћењу за овај уређај шаљу Google-у. Ако укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Да бисте ослободили простор, избришите датотеке из меморијског простора уређаја.</translation> <translation id="9109283579179481106">Повежите се са мобилном мрежом</translation> <translation id="9111102763498581341">Откључај</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 7f8cfda..751f4cc8 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Appdata som har en värd</translation> <translation id="1776712937009046120">Lägg till användare</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Den här enheten hanteras av <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Fortsätt med inloggningen på kontot på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> genom att klicka på Nästa.</translation> <translation id="1779652936965200207">Ange denna nyckel på <ph name="DEVICE_NAME" />:</translation> <translation id="177989070088644880">App (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Stäng grupp</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Ett problem uppstod när skrivare skulle listas. Vissa av dina skrivare kanske inte har registrerats med <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Sökmotorn som används i <ph name="BEGIN_LINK" />adressfältet<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Läsa och ändra allt som du skriver</translation> -<translation id="220792432208469595">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Ägaren har gjort denna inställning obligatorisk. Om ytterligare webb- och appaktivitet har aktiverats kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Ange den här pinkoden på <ph name="DEVICE_NAME" />:</translation> <translation id="2212565012507486665">Tillåt cookies</translation> <translation id="2213140827792212876">Ta bort delning</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Det gick inte att öppna den andra webbläsaren</translation> <translation id="2804667941345577550">Du loggas ut från den här webbplatsen, även på öppna flikar</translation> <translation id="2804680522274557040">Kamera har inaktiverats</translation> -<translation id="2805539617243680210">Nu är det klart.</translation> <translation id="2805646850212350655">Microsofts krypterande filsystem</translation> <translation id="2805756323405976993">Appar</translation> <translation id="2805770823691782631">Ytterligare information</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Skärmdumpen har tagits</translation> <translation id="3742666961763734085">Ingen organisationsenhet med det namnet hittades. Försök igen.</translation> <translation id="3744111561329211289">Synkronisera i bakgrunden</translation> +<translation id="3747077776423672805">Om du vill ta bort appar öppnar du Inställningar > Google Play Butik > Hantera Android-inställningar > Appar eller Apphanteraren. Tryck sedan på appen du vill avinstallera (du kanske måste svepa åt höger eller vänster för att hitta appen). Tryck sedan på Avinstallera eller Inaktivera.</translation> <translation id="3748026146096797577">Ej ansluten</translation> <translation id="3752582316358263300">OK ...</translation> <translation id="3752673729237782832">Mina enheter</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Säkerhetsnyckeln som du använder är inte registrerad på den här webbplatsen</translation> <translation id="4788092183367008521">Kontrollera nätverksanslutningen och försök igen.</translation> <translation id="4792711294155034829">&Rapportera ett problem...</translation> -<translation id="4795022432560487924">Skicka diagnostik- och användningsdata. Hjälp till att göra Android bättre för ditt barn genom att skicka diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Ägaren har gjort denna inställning obligatorisk. Ägaren kan ange att diagnostik- och användningsdata om den här enheten ska skickas till Google. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Webbsida, endast HTML</translation> <translation id="4798236378408895261">Bifoga <ph name="BEGIN_LINK" />Bluetooth-loggar<ph name="END_LINK" /> (internt för Google)</translation> <translation id="4801448226354548035">Dölj konton</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Automatiska nedladdningar</translation> <translation id="5653154844073528838">Du har <ph name="PRINTER_COUNT" /> sparade skrivare.</translation> <translation id="5656845498778518563">Skicka feedback till Google</translation> +<translation id="5657156137487675418">Tillåt alla cookies</translation> <translation id="5657667036353380798">Det externa tillägget kräver att version <ph name="MINIMUM_CHROME_VERSION" /> eller senare av Chrome är installerat.</translation> <translation id="5658415415603568799">Av säkerhetsskäl blir du ombedd att ange lösenordet efter 20 timmar med Smart Lock.</translation> <translation id="5659593005791499971">E-post</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Minimera</translation> <translation id="5942964813783878922">Din <ph name="DEVICE_TYPE" /> startas om efter uppdateringen. Framtida programvara och säkerhetsuppdateringar installeras automatiskt.</translation> <translation id="5944869793365969636">Skanna QR-kod</translation> -<translation id="5945188205370098537">Skicka diagnostik- och användningsdata. Hjälp till att göra Android bättre genom att skicka diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Rapport-id <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Det gick inte att analysera filen</translation> <translation id="5955282598396714173">Lösenordet har upphört att gälla. Logga ut och logga sedan in igen innan du ändrar det.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Enhetsplats</translation> <translation id="6186394685773237175">Inga utsatta lösenord hittades</translation> <translation id="6195693561221576702">Den här enheten kan inte konfigureras i offlinedemoläge.</translation> +<translation id="6196640612572343990">Blockera cookies från tredje part</translation> <translation id="6196854373336333322">Tillägget <ph name="EXTENSION_NAME" /> har tagit kontroll över dina proxyinställningar, vilket innebär att det kan ändra, knäcka eller tjuvlyssna på allt du gör på webben. Om du inte vet varför den här ändringen inträffade är den troligen inte önskvärd.</translation> <translation id="6198102561359457428">Logga ut och sedan in igen ...</translation> <translation id="6198252989419008588">Byt pinkod</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Läsa listan med dina inloggade enheter</translation> <translation id="7120865473764644444">Det gick inte att ansluta till synkroniseringsservern. Försöker igen …</translation> <translation id="7121362699166175603">Historik och autoslutföranden i adressfältet rensas. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Utvecklarläge</translation> <translation id="7121728544325372695">Smarta bindestreck</translation> <translation id="7123360114020465152">Stöds inte längre</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Ett fel uppstod vid sökningen efter skadlig programvara med Chrome</translation> <translation id="7280649757394340890">Röstinställningar för text till tal</translation> <translation id="7280877790564589615">Tillstånd begärt</translation> -<translation id="7281268427852119151">Anpassa Sök, annonser och andra tjänster från Google utifrån webbhistoriken</translation> <translation id="7282992757463864530">Informationsfält</translation> <translation id="7287143125007575591">Åtkomst nekad.</translation> <translation id="7287411021188441799">Återställ standardbakgrund</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flytta fliken till ett nytt fönster}other{Flytta flikarna till ett nytt fönster}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">sida</translation> -<translation id="8180294223783876911">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="8180786512391440389"><ph name="EXTENSION" /> kan läsa och ta bort bilder, video och ljudfiler på de markerade platserna.</translation> <translation id="8181215761849004992">Det gick inte att ansluta till domänen. Kontrollera att du använder ett konto med behörighet att lägga till enheter.</translation> <translation id="8182105986296479640">Appen svarar inte.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Skicka aviseringar till dig och komma ihåg den här datorn som standard för Messages. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> har blockerats av en förälder. Be en förälder om behörighet att använda den här appen.</translation> <translation id="820568752112382238">Mest besökta webbplatser</translation> -<translation id="8206581664590136590">Skicka diagnostik- och användningsdata. Hjälp till att göra Android bättre för ditt barn genom att skicka diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Bluesig</translation> <translation id="8206859287963243715">Mobil</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Nedladdning pågår}other{Nedladdningar pågår}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Google-konto</translation> <translation id="8912793549644936705">Förläng</translation> <translation id="8912810933860534797">Aktivera automatisk genomsökning</translation> -<translation id="891365694296252935">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Ägaren har gjort denna inställning obligatorisk. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Läser in förslag</translation> <translation id="8916476537757519021">Underram i inkognitoläge: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Säkerhetsnyckeln verifieras …</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Starta appen</translation> <translation id="9102610709270966160">Aktivera tillägget</translation> <translation id="9103868373786083162">Tryck här om du vill återgå till föregående, visa historiken med snabbmenyn</translation> -<translation id="9104396740804929809">Skicka diagnostik- och användningsdata. Hjälp till att göra Android bättre genom att skicka diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Ägaren har gjort denna inställning obligatorisk. Ägaren kan ange att diagnostik- och användningsdata om den här enheten ska skickas till Google. Om ytterligare webb- och appaktivitet har aktiverats kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Frigör utrymme genom att ta bort filer från lagringsutrymmet på enheten.</translation> <translation id="9109283579179481106">Anslut till ett mobilnätverk</translation> <translation id="9111102763498581341">Lås upp</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index b17decb..9b0332c 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -574,8 +574,6 @@ <translation id="177336675152937177">Data ya programu iliyopangishwa</translation> <translation id="1776712937009046120">Ongeza mtumiaji</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Kifaa hiki kinadhibitiwa na <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> - Tafadhali bofya kwenye "Inayofuata" ili uendelee kuingia katika akaunti yako ya <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Tafadhali weka nenosiri hili kwenye "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Programu (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Funga Kikundi</translation> @@ -889,7 +887,6 @@ <translation id="2202898655984161076">Kulikuwa na tatizo wakati wa kuongeza printa. Huenda baadhi ya printa zako hazikuweza kusajili kwenye <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Mtambo wa kutafuta uliotumiwa kwenye <ph name="BEGIN_LINK" />sehemu ya anwani<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Kusoma na kubadilisha chochote unachocharaza</translation> -<translation id="220792432208469595">Tuma data ya matumizi na uchunguzi. Kwa sasa, kifaa hiki kinatuma kiotomatiki data ya uchunguzi na matumizi ya programu na kifaa kwa Google. Maelezo haya yatatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Mipangilio hii inatekelezwa na mmiliki. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu, huenda data hii itahifadhiwa kwenye Akaunti yako ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Tafadhali weka nambari hii ya PIN kwenye "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Ruhusu vidakuzi</translation> <translation id="2213140827792212876">Ondoa faili ya kushiriki</translation> @@ -1350,7 +1347,6 @@ <translation id="2804043232879091219">Tumeshindwa kufungua kivinjari mbadala</translation> <translation id="2804667941345577550">Utaondolewa kwenye akaunti ya tovuti hii, ikiwemo vichupo ambavyo umefungua</translation> <translation id="2804680522274557040">Kamera imezimwa</translation> -<translation id="2805539617243680210">Kila kitu kiko tayari!</translation> <translation id="2805646850212350655">Mfumo wa Microsoft wa Usimbaji wa Faili</translation> <translation id="2805756323405976993">Programu</translation> <translation id="2805770823691782631">Maelezo ya ziada</translation> @@ -2031,6 +2027,7 @@ <translation id="3742055079367172538">Picha ya skrini imepigwa</translation> <translation id="3742666961763734085">Imeshindwa kupata kitengo cha shirika kinachotumia jina hilo. Tafadhali jaribu tena.</translation> <translation id="3744111561329211289">Usawazishaji wa chini chini</translation> +<translation id="3747077776423672805">Ili kuondoa programu, nenda kwenye Mipangilio > Duka la Google Play >Mapendeleo ya Kudhibiti Android > Kidhibiti cha programu. Kisha uguse programu unayotaka kuondoa (huenda utahitaji kutelezesha kidole kulia au kushoto ili kupata programu). Kisha uguse 'Ondoa' au 'Zima'.</translation> <translation id="3748026146096797577">Haujaunganishwa</translation> <translation id="3752582316358263300">Sawa...</translation> <translation id="3752673729237782832">Vifaa vyangu</translation> @@ -2752,7 +2749,6 @@ <translation id="4785719467058219317">Unatumia ufunguo wa usalama ambao haujasajiliwa kwenye tovuti hii</translation> <translation id="4788092183367008521">Tafadhali kagua muunganisho wako wa mtandao na ujaribu tena.</translation> <translation id="4792711294155034829">&Ripoti Tatizo...</translation> -<translation id="4795022432560487924">Tuma data ya matumizi na uchunguzi. Tusaidie kuboresha jinsi mtoto wako anavyotumia Android kwa kutuma kiotomatiki data ya uchunguzi na matumizi ya kifaa na programu kwa Google. Hatutatumia data hii kumtambulisha mtoto wako na itatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Mipangilio hii inatekelezwa na mmiliki. Mmiliki anaweza kuamua kutuma data ya uchunguzi na matumizi ya kifaa hiki kwa Google. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu ya mtoto wako, data hii inaweza kuhifadhiwa kwenye Akaunti yake ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Ukurasa wavuti, HTML Pekee</translation> <translation id="4798236378408895261">Ambatisha <ph name="BEGIN_LINK" />Kumbukumbu za Bluetooth<ph name="END_LINK" /> (Isitoke nje ya Google)</translation> <translation id="4801448226354548035">Ficha akaunti</translation> @@ -3379,6 +3375,7 @@ <translation id="5649053991847567735">Vipakuliwa vya kiotomatiki</translation> <translation id="5653154844073528838">Umehifadhi printa <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Tuma Maoni kwa Google</translation> +<translation id="5657156137487675418">Ruhusu vidakuzi vyote</translation> <translation id="5657667036353380798">Kiendelezi cha nje kinahitaji toleo la chrome la <ph name="MINIMUM_CHROME_VERSION" /> au zaidi ili kisakinishwe.</translation> <translation id="5658415415603568799">Kwa usalama wa ziada, Smart Lock itakuomba uweke nenosiri lako baada ya saa 20.</translation> <translation id="5659593005791499971">Barua pepe</translation> @@ -3586,7 +3583,6 @@ <translation id="5941711191222866238">Punguza</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> yako itazima kisha iwake baada ya sasisho hili. Masasisho ya baadaye ya programu na usalama yatasakinishwa kiotomatiki.</translation> <translation id="5944869793365969636">Changanua msimbo wa QR</translation> -<translation id="5945188205370098537">Tuma data ya matumizi na uchunguzi. Tusaidie kuboresha jinsi unavyotumia Android kwa kutuma kiotomatiki data ya uchunguzi na matumizi ya kifaa na programu kwa Google. Maelezo haya yatatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu, huenda data hii itahifadhiwa kwenye Akaunti yako ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Kitambulisho cha ripoti <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Imeshindwa kuchanganua faili</translation> <translation id="5955282598396714173">Nenosiri lako limekwisha muda. Tafadhali ondoka kisha uingie katika akaunti tena ili ulibadilishe.</translation> @@ -3772,6 +3768,7 @@ <translation id="6185132558746749656">Mahali Kifaa Kilipo</translation> <translation id="6186394685773237175">Hatukupata manenosiri yaliyoathiriwa</translation> <translation id="6195693561221576702">Kifaa hiki hakiwezi kuwekewa mipangilio katika hali ya onyesho la nje ya mtandao.</translation> +<translation id="6196640612572343990">Zuia vidakuzi vya tovuti nyingine</translation> <translation id="6196854373336333322">Kiendelezi hiki "<ph name="EXTENSION_NAME" />" kinadhibiti mipangilio yako ya seva mbadala, kumaanisha kuwa kinaweza kubadilisha, kuvunja, au kufuatilia chochote unachokifanya mtandaoni. Ikiwa huna uhakika kwa nini mabadiliko haya yamefanyika, huenda huyahitaji.</translation> <translation id="6198102561359457428">Ondoka na kisha uingie tena...</translation> <translation id="6198252989419008588">Badilisha PIN</translation> @@ -4438,7 +4435,6 @@ <translation id="711902386174337313">Soma orodha ya vifaa vyako ulivyoingia</translation> <translation id="7120865473764644444">Haikuweza kuunganisha kwenye seva ya usawazishaji. Inajaribu tena...</translation> <translation id="7121362699166175603">Hufuta historia na ukamilishaji kiotomatiki kwenye sehemu ya anwani. Huenda Akaunti yako ya Google ikawa na aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Tuma data ya matumizi na uchunguzi. Kwa sasa, kifaa hiki kinatuma kiotomatiki data ya uchunguzi na matumizi ya programu na kifaa kwa Google. Hatutatumia data hii kumtambulisha mtoto wako na itatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu ya mtoto wako, data hii inaweza kuhifadhiwa kwenye Akaunti yake ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Hali ya Wasanidi Programu</translation> <translation id="7121728544325372695">Dashi Mahiri</translation> <translation id="7123360114020465152">Haitumiki tena</translation> @@ -4553,7 +4549,6 @@ <translation id="7280041992884344566">Hitilafu imetokea Chrome ilipokuwa ikitafuta programu hatari</translation> <translation id="7280649757394340890">Mipangilio ya sauti ya Ubadilishaji wa Maandishi kwenda Usemi</translation> <translation id="7280877790564589615">Ruhusa imeombwa</translation> -<translation id="7281268427852119151">Tumia historia yako ya kuvinjari ili uweke mapendeleo kwenye huduma ya Tafuta na Google, matangazo na huduma nyingine za Google</translation> <translation id="7282992757463864530">Upau wa maelezo</translation> <translation id="7287143125007575591">Umenyimwa idhini ya kufikia.</translation> <translation id="7287411021188441799">Rejesha mandhari chaguomsingi</translation> @@ -5230,7 +5225,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Hamishia kichupo kwenye dirisha jipya}other{Hamishia vichupo kwenye dirisha jipya}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">ukurasa</translation> -<translation id="8180294223783876911">Tuma data ya matumizi na uchunguzi. Kwa sasa, kifaa hiki kinatuma kiotomatiki data ya uchunguzi na matumizi ya programu na kifaa kwa Google. Maelezo haya yatatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu, huenda data hii itahifadhiwa kwenye Akaunti yako ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" inaweza kusoma na kufuta picha, video, na faili za sauti katika maeneo yaliyowekewa alama.</translation> <translation id="8181215761849004992">Imeshindwa kuunganisha kwenye kikoa. Angalia akaunti yako ili uone ikiwa una ruhusa zinazohitajika kuongeza vifaa.</translation> <translation id="8182105986296479640">Programu haifanyi kazi</translation> @@ -5252,7 +5246,6 @@ <translation id="8203732864715032075">Kukutumia arifa na mipangilio chaguomsingi ili ukumbuke kompyuta hii kwa ajili ya Ujumbe. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" imezuiwa na mzazi wako. Mwombe mzazi wako ruhusa ya kutumia programu hii.</translation> <translation id="820568752112382238">Tovuti zilizotembelewa zaidi</translation> -<translation id="8206581664590136590">Tuma data ya matumizi na uchunguzi. Tusaidie kuboresha jinsi mtoto wako anavyotumia Android kwa kutuma kiotomatiki data ya uchunguzi na matumizi ya kifaa na programu kwa Google. Hatutatumia data hii kumtambulisha mtoto wako na itatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu ya mtoto wako, data hii inaweza kuhifadhiwa kwenye Akaunti yake ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Kimuziki</translation> <translation id="8206859287963243715">Simu ya Mkononi</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Inaendelea kupakua}other{Inaendelea kupakua}}</translation> @@ -5798,7 +5791,6 @@ <translation id="8912362522468806198">Akaunti ya Google</translation> <translation id="8912793549644936705">Panua</translation> <translation id="8912810933860534797">Washa ukaguzi wa kiotomatiki</translation> -<translation id="891365694296252935">Tuma data ya matumizi na uchunguzi. Kwa sasa, kifaa hiki kinatuma kiotomatiki data ya uchunguzi na matumizi ya programu na kifaa kwa Google. Hatutatumia hatua hii kumtambulisha mtoto wako na itatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Mipangilio hii inatekelezwa na mmiliki. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu ya mtoto wako, data hii inaweza kuhifadhiwa kwenye Akaunti yake ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Inapakia pendekezo</translation> <translation id="8916476537757519021">Fremu ndogo ya Hali Fiche: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Inathibitisha ufunguo wako wa usalama...</translation> @@ -5935,7 +5927,6 @@ <translation id="9101691533782776290">Zindua programu</translation> <translation id="9102610709270966160">Ruhusu Kiendelezi</translation> <translation id="9103868373786083162">Bonyeza ili kurudi nyuma, bonyeza menyu ili uone historia</translation> -<translation id="9104396740804929809">Tuma data ya matumizi na uchunguzi. Tusaidie kuboresha jinsi unavyotumia Android kwa kutuma kiotomatiki data ya uchunguzi na matumizi ya kifaa na programu kwa Google. Maelezo haya yatatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Mipangilio hii inatekelezwa na mmiliki. Mmiliki anaweza kuamua kutuma data ya uchunguzi na matumizi ya kifaa hiki kwa Google. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu, huenda data hii itahifadhiwa kwenye Akaunti yako ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Ili kupata nafasi, futa faili kutoka kwenye hifadhi ya kifaa.</translation> <translation id="9109283579179481106">Unganisha kwenye mtandao wa simu</translation> <translation id="9111102763498581341">Fungua</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index dc52d0c..1b05c25f 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">ஹோஸ்ட் செய்யப்பட்ட ஆப்ஸின் தரவு</translation> <translation id="1776712937009046120">பயனரைச் சேர்</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">இந்தச் சாதனத்தை <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> நிர்வகிக்கிறது. - உங்கள் <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> கணக்கில் உள்நுழைவதைத் தொடர, 'அடுத்து' என்பதைக் கிளிக் செய்யவும்.</translation> <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" இல் இந்தக் கடவுவிசையை உள்ளிடுக:</translation> <translation id="1780152987505130652">குழுவை மூடுக</translation> <translation id="1781291988450150470">தற்போதைய பின்</translation> @@ -876,7 +874,6 @@ <translation id="2202898655984161076">பிரிண்டர்களைப் பட்டியலிடுவதில் சிக்கல் ஏற்பட்டது. உங்களின் அச்சுப் பொறிகளில் சிலவற்றை <ph name="CLOUD_PRINT_NAME" /> உடன் வெற்றிகரமாக பதிவுசெய்ய முடியவில்லை.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />முகவரிப் பட்டியில்<ph name="END_LINK" /> பயன்படுத்தப்படும் தேடல் இன்ஜின்</translation> <translation id="2204034823255629767">நீங்கள் உள்ளிடும் எதையும் படிக்கலாம் மற்றும் மாற்றலாம்</translation> -<translation id="220792432208469595">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை இந்தச் சாதனம் தற்போது Googleளுக்குத் தானாக அனுப்புகிறது. இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உரிமையாளர் இந்த அமைப்பைச் செயல்படுத்தியுள்ளார். கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு உங்கள் Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="220858061631308971">"<ph name="DEVICE_NAME" />" இல் இந்த PIN குறியீட்டை உள்ளிடுக:</translation> <translation id="2213140827792212876">பகிர்வை அகற்றும்</translation> <translation id="2214018885812055163">பகிர்ந்த கோப்புறைகள்</translation> @@ -1989,6 +1986,7 @@ <translation id="3742055079367172538">ஸ்கிரீன்ஷாட் எடுக்கப்பட்டது</translation> <translation id="3742666961763734085">அந்தப் பெயரில் நிறுவன யூனிட் எதையும் கண்டறிய முடியவில்லை. மீண்டும் முயலவும்.</translation> <translation id="3744111561329211289">பின்புல ஒத்திசைவு</translation> +<translation id="3747077776423672805">ஆப்ஸை அகற்ற, 'அமைப்புகள் > Google Play ஸ்டோர் > Android விருப்பத்தேர்வுகளை நிர்வகி > ஆப்ஸ் அல்லது ஆப்ஸ் நிர்வாகி’ என்பதற்குச் செல்லவும். அதில், நிறுவல் நீக்க விரும்பும் ஆப்ஸைத் தட்டவும் (ஆப்ஸைக் கண்டறிய வலப்புறம் அல்லது இடப்புறம் ஸ்வைப் செய்ய வேண்டியிருக்கலாம்). பின்னர், ‘நிறுவல் நீக்கு’ அல்லது ‘முடக்கு’ என்பதைத் தட்டவும்.</translation> <translation id="3748026146096797577">இணைக்கப்படவில்லை</translation> <translation id="3752582316358263300">சரி...</translation> <translation id="3752673729237782832">எனது சாதனங்கள்</translation> @@ -2693,7 +2691,6 @@ <translation id="4785719467058219317">இந்த இணையதளத்தில் பதிவுசெய்யப்படாத பாதுகாப்பு விசையைப் பயன்படுத்துகிறீர்கள்</translation> <translation id="4788092183367008521">நெட்வொர்க் இணைப்பைச் சரிபார்த்து, மீண்டும் முயலவும்.</translation> <translation id="4792711294155034829">&சிக்கலைப் புகார் செய்க...</translation> -<translation id="4795022432560487924">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை Googleளுக்குத் தானாக அனுப்புவதன் மூலம் உங்கள் பிள்ளையின் Android அனுபவத்தை மேம்படுத்த உதவுக. இது உங்கள் பிள்ளையை அடையாளம் கண்டறியப் பயன்படுத்தப்படாது, இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உரிமையாளர் இந்த அமைப்பைச் செயல்படுத்தியுள்ளார். உரிமையாளர் இந்தச் சாதனத்தின் கண்டறிதல் தரவையும் உபயோகத் தரவையும் Googleளுக்கு அனுப்புவதற்குத் தேர்வுசெய்யலாம். உங்கள் பிள்ளையின் கணக்கில் கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு அவரது Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="479536056609751218">வலைப்பக்கம், HTML மட்டும்</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />புளூடூத் பதிவுகளை<ph name="END_LINK" /> இணை (Google அகப் பயன்பாட்டிற்காக)</translation> <translation id="4801448226354548035">கணக்குகளை மறை</translation> @@ -3307,6 +3304,7 @@ <translation id="5649053991847567735">தன்னியக்கப் பதிவிறக்கங்கள்</translation> <translation id="5653154844073528838">உங்களிடம் <ph name="PRINTER_COUNT" /> சேமித்த பிரிண்டர்கள் உள்ளன.</translation> <translation id="5656845498778518563">உங்கள் கருத்தை Googleளுக்கு அனுப்புங்கள்</translation> +<translation id="5657156137487675418">அனைத்து குக்கீகளையும் அனுமதி</translation> <translation id="5657667036353380798">வெளிப்புற நீட்டிப்பிற்கு chrome பதிப்பு <ph name="MINIMUM_CHROME_VERSION" /> அல்லது அதற்கு பிந்தையதை நிறுவியிருக்க வேண்டும்.</translation> <translation id="5658415415603568799">கூடுதல் பாதுகாப்பிற்கு, 20 மணிநேரம் கழித்து கடவுச்சொல்லை உள்ளிடும்படி Smart Lock உங்களைக் கேட்கும்.</translation> <translation id="5659593005791499971">மின்னஞ்சல்</translation> @@ -3509,7 +3507,6 @@ <translation id="5941711191222866238">சிறிதாக்கு</translation> <translation id="5942964813783878922">உங்கள் <ph name="DEVICE_TYPE" /> சாதனம் இந்தப் புதுப்பிப்பிற்குப் பிறகு மீண்டும் தொடங்கும். இனிவரும் மென்பொருள் மற்றும் பாதுகாப்பு தொடர்பான புதுப்பிப்புகள் தானாகவே நிறுவப்படும்.</translation> <translation id="5944869793365969636">QR குறியீட்டை ஸ்கேன் செய்தல்</translation> -<translation id="5945188205370098537">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை Googleளுக்குத் தானாக அனுப்புவதன் மூலம் உங்கள் Android அனுபவத்தை மேம்படுத்த உதவுக. இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு உங்கள் Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="5946591249682680882"><ph name="WEBRTC_LOG_REPORT_ID" /> ஐடியைப் புகாரளி</translation> <translation id="5949544233750246342">கோப்பைப் பாகுபடுத்த முடியவில்லை</translation> <translation id="5955282598396714173">உங்கள் கடவுச்சொல் காலாவதியாகிவிட்டது. அதை மாற்ற, வெளியேறி, மீண்டும் உள்நுழையவும்.</translation> @@ -3688,6 +3685,7 @@ <translation id="6181431612547969857">பதிவிறக்கம் தடுக்கப்பட்டுள்ளது</translation> <translation id="6185132558746749656">சாதன இருப்பிடம்</translation> <translation id="6195693561221576702">இந்தச் சாதனத்தை ஆஃப்லைன் டெமோ பயன்முறையில் அமைக்க முடியாது.</translation> +<translation id="6196640612572343990">மூன்றாம் தரப்புக் குக்கீகளைத் தடு</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" நீட்டிப்பு உங்கள் ப்ராக்ஸி அமைப்புகளைக் கட்டுப்படுத்துகிறது, அதாவது நீங்கள் ஆன்லைனில் செய்யும் எல்லாவற்றையும் அதனால் மாற்ற முடியும், தடுக்க முடியும் அல்லது அறிந்து கொள்ள முடியும். இது ஏன் நடந்தது எனத் தெரியவில்லை எனில், உங்களுக்கு இந்த தேவைப்படாதது என்று அர்த்தம்.</translation> <translation id="6198102561359457428">வெளியேறி பிறகு மீண்டும் உள்நுழைக...</translation> <translation id="6198252989419008588">PIN ஐ மாற்றவும்</translation> @@ -4337,7 +4335,6 @@ <translation id="711902386174337313">நீங்கள் உள்நுழைந்துள்ள சாதனங்களின் பட்டியலை அணுகலாம்</translation> <translation id="7120865473764644444">ஒத்திசைவுச் சேவையகத்துடன் இணைக்க முடியவில்லை. மீண்டும் முயற்சிக்கிறது...</translation> <translation id="7121362699166175603">முகவரிப் பட்டியில் வரலாற்றையும் தானே நிரப்புதலையும் அழிக்கும். உங்கள் Google கணக்கு, <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> என்ற இணைப்பில் உலாவல் வரலாறு தொடர்பான பிற தகவல்களைக் கொண்டிருக்கக்கூடும்.</translation> -<translation id="7121389946694989825">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை இந்தச் சாதனம் தற்போது Googleளுக்குத் தானாக அனுப்புகிறது. இது உங்கள் பிள்ளையை அடையாளம் கண்டறியப் பயன்படுத்தப்படாது, இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உங்கள் பிள்ளையின் கணக்கில் கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு அவரது Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">டெவெலப்பர் பயன்முறை</translation> <translation id="7121728544325372695">ஸ்மார்ட் டேஷ்கள்</translation> <translation id="7123360114020465152">இனி ஆதரிக்கப்படாது</translation> @@ -5111,7 +5108,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{தாவலைப் புதிய சாளரத்திற்கு நகர்த்து}other{தாவல்களைப் புதிய சாளரத்திற்கு நகர்த்து}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">பக்கம்</translation> -<translation id="8180294223783876911">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை இந்தச் சாதனம் தற்போது Googleளுக்குத் தானாக அனுப்புகிறது. இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு உங்கள் Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">தேர்வுசெய்யப்பட்ட இடங்களில் உள்ள படங்கள், வீடியோ மற்றும் ஒலி கோப்புகளை "<ph name="EXTENSION" />" ஆல் படிக்கவும், நீக்கவும் முடியும்.</translation> <translation id="8181215761849004992">டொமைனுடன் இணைக்க முடியவில்லை. சாதனங்களைச் சேர்ப்பதற்கு உங்களுக்குச் சிறப்புரிமைகள் உள்ளனவா என்று உங்கள் கணக்கில் சரிபார்க்கவும்.</translation> <translation id="8182105986296479640">ஆப்ஸ் செயல்படவில்லை.</translation> @@ -5132,7 +5128,6 @@ <translation id="8202160505685531999">உங்கள் <ph name="DEVICE_TYPE" /> சுயவிவரத்தைப் புதுப்பிக்க உங்கள் கடவுச்சொல்லை மீண்டும் உள்ளிடவும்.</translation> <translation id="8203732864715032075">இந்தக் கம்ப்யூட்டரை இயல்பாக நினைவில் வைத்து, மெசேஜஸ் அறிவிப்புகளை அனுப்பும். <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation> <translation id="820568752112382238">அதிகம் பார்த்த தளங்கள்</translation> -<translation id="8206581664590136590">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை Googleளுக்குத் தானாக அனுப்புவதன் மூலம் உங்கள் பிள்ளையின் Android அனுபவத்தை மேம்படுத்த உதவுக. இது உங்கள் பிள்ளையை அடையாளம் கண்டறியப் பயன்படுத்தப்படாது, இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உங்கள் பிள்ளையின் கணக்கில் கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு அவரது Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">ப்ளூஸி</translation> <translation id="8206859287963243715">செல்லுலர்</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{பதிவிறக்கம் செயலில் உள்ளது}other{பதிவிறக்கங்கள் செயலில் உள்ளன}}</translation> @@ -5656,7 +5651,6 @@ <translation id="8912362522468806198">Google கணக்கு</translation> <translation id="8912793549644936705">விரிவாக்கு</translation> <translation id="8912810933860534797">தானியங்கு ஸ்கேனை இயக்கு</translation> -<translation id="891365694296252935">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை இந்தச் சாதனம் தற்போது Googleளுக்குத் தானாக அனுப்புகிறது. இது உங்கள் பிள்ளையை அடையாளம் கண்டறியப் பயன்படுத்தப்படாது, இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உரிமையாளர் இந்த அமைப்பைச் செயல்படுத்தியுள்ளார். உங்கள் பிள்ளையின் கணக்கில் கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு அவருடைய Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">பரிந்துரைகளை ஏற்றுகிறது</translation> <translation id="8916476537757519021">மறைநிலை துணைச்சட்டகம்: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">பாதுகாப்பு விசையைச் சரிபார்க்கிறது...</translation> @@ -5789,7 +5783,6 @@ <translation id="9101691533782776290">பயன்பாட்டைத் தொடங்கு</translation> <translation id="9102610709270966160">நீட்டிப்பை இயக்கு</translation> <translation id="9103868373786083162">பின்னே செல்ல அழுத்தவும், வரலாற்றைக் காட்டும் சூழல் மெனு</translation> -<translation id="9104396740804929809">உபயோகம் & கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை Googleளுக்குத் தானாக அனுப்புவதன் மூலம் உங்கள் Android அனுபவத்தை மேம்படுத்த உதவுக. இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உரிமையாளர் இந்த அமைப்பைச் செயல்படுத்தியுள்ளார். உரிமையாளர் இந்தச் சாதனத்தின் கண்டறிதல் தரவையும் உபயோகத் தரவையும் Googleளுக்கு அனுப்புவதற்குத் தேர்வுசெய்யலாம். கூடுதல் ’இணையம் & ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு உங்கள் Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">இடத்தைக் காலியாக்க, சாதனத்தின் சேமிப்பகத்தில் இருந்து கோப்புகளை நீக்கவும்.</translation> <translation id="9109283579179481106">மொபைல் நெட்வொர்க்குடன் இணைத்தல்</translation> <translation id="9111102763498581341">பூட்டைத் திற</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index cff9544..be8f7f88 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -571,7 +571,6 @@ <translation id="177336675152937177">హోస్ట్ చేసిన యాప్ డేటా</translation> <translation id="1776712937009046120">వినియోగదారును జోడించు</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">ఈ పరికరం <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ద్వారా నిర్వహించబడుతోంది. దయచేసి మీ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ఖాతాకు సైన్ ఇన్ చేయడం కొనసాగించడానికి "తర్వాత" క్లిక్ చేయండి.</translation> <translation id="1779652936965200207">దయచేసి "<ph name="DEVICE_NAME" />"లో ఈ పాస్కీని నమోదు చేయండి:</translation> <translation id="177989070088644880">యాప్ (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">సమూహాన్ని మూసివేయి</translation> @@ -883,7 +882,6 @@ <translation id="2202898655984161076">ముద్రణలను జాబితా చెయ్యడంలో సమస్య ఉంది. <ph name="CLOUD_PRINT_NAME" />తో మీ ముద్రణలలో కొన్ని విజయవంతంగా నమోదు చెయ్యబడకపోయి ఉండవచ్చు.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />చిరునామా బార్<ph name="END_LINK" />లో ఉపయోగించాల్సిన శోధన ఇంజిన్</translation> <translation id="2204034823255629767">మీరు టైప్ చేసేదాన్ని చదవడం మరియు మార్చడం</translation> -<translation id="220792432208469595">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="220858061631308971">దయచేసి ఈ PIN కోడ్ను "<ph name="DEVICE_NAME" />"లో నమోదు చేయండి:</translation> <translation id="2212565012507486665">కుక్కీలను అనుమతించు</translation> <translation id="2213140827792212876">షేర్ చేయడాన్ని తీసివేయండి</translation> @@ -1338,7 +1336,6 @@ <translation id="2804043232879091219">ప్రత్యామ్నాయ బ్రౌజర్ను తెరవడం సాధ్యపడలేదు</translation> <translation id="2804667941345577550">అలాగే మీరు తెరిచిన ట్యాబ్లతో సహా, ఈ సైట్ నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు.</translation> <translation id="2804680522274557040">కెమెరా ఆఫ్ చేయబడింది</translation> -<translation id="2805539617243680210">మీరు మొత్తం పూర్తి చేశారు!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">యాప్స్</translation> <translation id="2805770823691782631">అదనపు వివరాలు</translation> @@ -2013,6 +2010,7 @@ <translation id="3742055079367172538">స్క్రీన్షాట్ తీసినప్పుడు</translation> <translation id="3742666961763734085">ఈ పేరుతో సంస్థాగత యూనిట్ కనుగొనబడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి.</translation> <translation id="3744111561329211289">బ్యాక్గ్రౌండ్ సింక్</translation> +<translation id="3747077776423672805">యాప్లను తీసివేయడం కోసం, సెట్టింగ్లు > Google Play స్టోర్ > Android ప్రాధాన్యతలను నిర్వహించు > యాప్లు లేదా అప్లికేషన్ మేనేజర్లోకి వెళ్లండి. ఆపై, మీరు అన్ఇన్స్టాల్ చేయాలనుకుంటున్న యాప్ని నొక్కండి (మీరు యాప్ని కనుగొనడం కోసం ఎడమ లేదా కుడి వైపునకు స్వైప్ చేయాల్సి రావచ్చు). ఆపై, అన్ఇన్స్టాల్ చేయి లేదా నిలిపివేయిని ఎంచుకోండి.</translation> <translation id="3748026146096797577">కనెక్ట్ కాలేదు</translation> <translation id="3752582316358263300">సరే...</translation> <translation id="3752673729237782832">నా పరికరాలు</translation> @@ -2728,7 +2726,6 @@ <translation id="4785719467058219317">మీరు ఈ వెబ్సైట్తో నమోదు కాని సెక్యూరిటీ కీని ఉపయోగిస్తున్నారు</translation> <translation id="4788092183367008521">దయచేసి మీ నెట్వర్క్ కనెక్షన్ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="4792711294155034829">&ఒక సమస్యను నివేదించండి...</translation> -<translation id="4795022432560487924">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపడం ద్వారా మీ చిన్నారి Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. ఈ పరికరానికి సంబంధించిన విశ్లేషణ, వినియోగ డేటాను Googleకి పంపేలా యజమాని ఎంచుకోవచ్చు. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="479536056609751218">వెబ్పేజీ, HTML మాత్రమే</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />బ్లూటూత్ లాగ్లు<ph name="END_LINK" />ని జోడించు (Google అంతర్గతం)</translation> <translation id="4801448226354548035">ఖాతాలను దాచు</translation> @@ -3348,6 +3345,7 @@ <translation id="5649053991847567735">ఆటోమేటిక్ డౌన్లోడ్లు</translation> <translation id="5653154844073528838">మీరు సేవ్ చేయబడిన <ph name="PRINTER_COUNT" /> ప్రింటర్లు కలిగి ఉన్నారు.</translation> <translation id="5656845498778518563">Googleకు ఫీడ్బ్యాక్ పంపండి</translation> +<translation id="5657156137487675418">అన్ని కుక్కీలను అనుమతించు</translation> <translation id="5657667036353380798">బాహ్య ఎక్స్టెన్షన్కు chrome వెర్షన్ <ph name="MINIMUM_CHROME_VERSION" /> లేదా అంతకంటే అధిక వెర్షన్ను ఇన్స్టాల్ చేయడం అవసరం.</translation> <translation id="5658415415603568799">అదనపు భద్రత కోసం, 20 గంటల తర్వాత మీ పాస్వర్డ్ను నమోదు చేయమని మీ Smart Lock అడుగుతుంది.</translation> <translation id="5659593005791499971">ఇమెయిల్</translation> @@ -3554,7 +3552,6 @@ <translation id="5941711191222866238">కనిష్టీకరించు</translation> <translation id="5942964813783878922">ఈ అప్డేట్ తర్వాత మీ <ph name="DEVICE_TYPE" /> రీస్టార్ట్ అవుతుంది. అలాగే సాఫ్ట్వేర్, భద్రతా అప్డేట్లు ఆటోమేటిక్గా ఇన్స్టాల్ చేయబడతాయి.</translation> <translation id="5944869793365969636">QR కోడ్ను స్కాన్ చేయండి</translation> -<translation id="5945188205370098537">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను Googleకి ఆటోమేటిక్గా పంపడం ద్వారా మీ Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">నివేదిక ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ఫైల్ని అన్వయించడం సాధ్యపడలేదు</translation> <translation id="5955282598396714173">మీ పాస్వర్డ్ గడువు ముగిసింది. దయచేసి దీనిని మార్చడానికి సైన్ అవుట్ చేసి, సైన్ ఇన్ చేయండి.</translation> @@ -3735,6 +3732,7 @@ <translation id="6181431612547969857">డౌన్లోడ్ బ్లాక్ చేయబడింది</translation> <translation id="6185132558746749656">పరికర స్థానం</translation> <translation id="6195693561221576702">ఈ పరికరాన్ని ఆఫ్లైన్ డెమో మోడ్లో సెటప్ చేయలేరు.</translation> +<translation id="6196640612572343990">మూడవ పక్షం కుక్కీలను బ్లాక్ చేయి</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" ఎక్సటెన్షన్ మీ ప్రాక్సీ సెట్టింగ్లపై నియంత్రణను కలిగి ఉంది, అంటే ఇది మీరు ఆన్లైన్లో చేసే ప్రతిదీ మార్చగలదు, విచ్ఛిన్నం చేయగలదు లేదా మీకు తెలియకుండా గమనించగలదు. ఈ మార్పు ఎందుకు జరిగిందో మీకు సరిగ్గా తెలియదంటే, బహుశా మీరు ఇది కోరుకొని ఉండకపోవచ్చు.</translation> <translation id="6198102561359457428">సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయండి...</translation> <translation id="6198252989419008588">పిన్ మార్పు</translation> @@ -4398,7 +4396,6 @@ <translation id="711902386174337313">మీ సైన్-ఇన్ చేసిన పరికరాల యొక్క జాబితాను చదవడం</translation> <translation id="7120865473764644444">సింక్ సర్వర్కు కనెక్ట్ చేయడం సాధ్యపడలేదు. మళ్లీ ప్రయత్నిస్తోంది...</translation> <translation id="7121362699166175603">చిరునామా బార్లో చరిత్ర, స్వీయపూరింపులను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation> -<translation id="7121389946694989825">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">డెవలపర్ మోడ్</translation> <translation id="7121728544325372695">స్మార్ట్ డాష్లు</translation> <translation id="7123360114020465152">ఇకపై మద్దతు లేదు</translation> @@ -5176,7 +5173,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త విండోకు తరలించు}other{ట్యాబ్లను కొత్త విండోకు తరలించు}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521"> పేజీ</translation> -<translation id="8180294223783876911">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" ఎంచుకున్న స్థానాల్లోని చిత్రాలను, వీడియోను, సౌండ్ ఫైల్స్ను చదవగలదు. తొలగించగలదు.</translation> <translation id="8181215761849004992">డొమైన్కు చేర్చడం సాధ్యపడలేదు. పరికరాలను జోడించడానికి తగిన అధికారాలు మీకు ఉన్నాయో లేదో మీ ఖాతాలో తనిఖీ చేయండి.</translation> <translation id="8182105986296479640">అప్లికేషన్ స్పందించడం లేదు.</translation> @@ -5198,7 +5194,6 @@ <translation id="8203732864715032075">మీకు నోటిఫికేషన్లను పంపుతుంది, అలాగే సందేశాల కోసం ఈ కంప్యూటర్ను డిఫాల్ట్గా గుర్తుపెట్టుకుంటుంది. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />"ను మీ తల్లి/తండ్రి బ్లాక్ చేశారు. ఈ యాప్ను ఉపయోగించడానికి అనుమతి ఇవ్వాల్సిందిగా మీ తల్లి/తండ్రిని అడగండి.</translation> <translation id="820568752112382238">అత్యంత ఎక్కువగా సందర్శించిన సైట్లు</translation> -<translation id="8206581664590136590">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపడం ద్వారా మీ చిన్నారి Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">బ్లూసై</translation> <translation id="8206859287963243715">సెల్యులార్</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{డౌన్లోడ్ ప్రోగ్రెస్లో ఉంది}other{డౌన్లోడ్లు ప్రోగ్రెస్లో ఉన్నాయి}}</translation> @@ -5734,7 +5729,6 @@ <translation id="8912362522468806198">Google ఖాతా</translation> <translation id="8912793549644936705">విస్తరించు</translation> <translation id="8912810933860534797">ఆటోమేటిక్ స్కాన్ను ప్రారంభించు</translation> -<translation id="891365694296252935">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపాన్ని ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ కావచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">సూచన లోడ్ అవుతోంది</translation> <translation id="8916476537757519021">అజ్ఞాత సబ్ఫ్రేమ్: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">మీ భద్రతా కీని ధృవీకరిస్తోంది...</translation> @@ -5870,7 +5864,6 @@ <translation id="9101691533782776290">యాప్ను ప్రారంభించు</translation> <translation id="9102610709270966160">ఎక్స్టెన్షన్ను ప్రారంభించు</translation> <translation id="9103868373786083162">చరిత్రను చూసేందుకు వెనుకకు వెళ్లు, సందర్భ మెనూ నొక్కండి</translation> -<translation id="9104396740804929809">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను Googleకి ఆటోమేటిక్గా పంపడం ద్వారా మీ Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. ఈ పరికరానికి సంబంధించిన విశ్లేషణ, వినియోగ డేటాను Googleకి పంపేలా యజమాని ఎంచుకోవచ్చు. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">స్థలాన్ని ఖాళీ చేయడానికి, పరికర నిల్వ నుండి ఫైల్లను తొలగించండి.</translation> <translation id="9109283579179481106">మొబైల్ నెట్వర్క్కు కనెక్ట్ చేయండి</translation> <translation id="9111102763498581341">అన్లాక్ చేయి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 2f3214f..5daa4dc 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">ข้อมูลแอปที่โฮสต์</translation> <translation id="1776712937009046120">เพิ่มผู้ใช้</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">อุปกรณ์นี้จัดการโดย <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> - โปรดคลิก "ถัดไป" เพื่อลงชื่อเข้าใช้บัญชี <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ของคุณต่อ</translation> <translation id="1779652936965200207">โปรดป้อนรหัสผ่านนี้บน "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">แอป (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">ปิดกลุ่ม</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">เกิดปัญหาในการแสดงรายการเครื่องพิมพ์ คุณอาจยังลงทะเบียนเครื่องพิมพ์บางเครื่องกับ <ph name="CLOUD_PRINT_NAME" /> ไม่เรียบร้อย</translation> <translation id="2203682048752833055">เครื่องมือค้นหาที่ใช้ใน<ph name="BEGIN_LINK" />แถบที่อยู่เว็บ<ph name="END_LINK" /></translation> <translation id="2204034823255629767">อ่านและเปลี่ยนแปลงสิ่งที่คุณพิมพ์</translation> -<translation id="220792432208469595">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ ซึ่งจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android เจ้าของเป็นผู้บังคับใช้การตั้งค่านี้ หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปไว้ ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของคุณ <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="220858061631308971">โปรดป้อนรหัส PIN นี้บน "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">อนุญาตคุกกี้</translation> <translation id="2213140827792212876">นำการแชร์ออก</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">เปิดเบราว์เซอร์สำรองไม่ได้</translation> <translation id="2804667941345577550">คุณจะออกจากระบบของเว็บไซต์นี้ รวมถึงในแท็บที่เปิดอยู่</translation> <translation id="2804680522274557040">ปิดกล้องอยู่</translation> -<translation id="2805539617243680210">คุณพร้อมแล้ว</translation> <translation id="2805646850212350655">ระบบไฟล์การเข้ารหัสของ Microsoft</translation> <translation id="2805756323405976993">แอป</translation> <translation id="2805770823691782631">รายละเอียดเพิ่มเติม</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">ภาพหน้าจอที่บันทึก</translation> <translation id="3742666961763734085">ไม่พบชื่อหน่วยดังกล่าวขององค์กร โปรดลองอีกครั้ง</translation> <translation id="3744111561329211289">ซิงค์ในแบ็กกราวด์</translation> +<translation id="3747077776423672805">หากต้องการนำแอปออก ให้ไปที่การตั้งค่า > Google Play Store > จัดการค่ากำหนด Android > ตัวจัดการแอปหรือแอปพลิเคชัน แล้วแตะแอปที่คุณต้องการถอนการติดตั้ง (อาจต้องเลื่อนไปทางขวาหรือทางซ้ายเพื่อค้นหาแอป) และแตะถอนการติดตั้ง หรือปิดใช้</translation> <translation id="3748026146096797577">ไม่ได้เชื่อมต่อ</translation> <translation id="3752582316358263300">ตกลง...</translation> <translation id="3752673729237782832">อุปกรณ์ของฉัน</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">คุณกำลังใช้คีย์ความปลอดภัยที่ไม่ได้ลงทะเบียนกับเว็บไซต์นี้</translation> <translation id="4788092183367008521">โปรดตรวจสอบการเชื่อมต่อเครือข่ายแล้วลองอีกครั้ง</translation> <translation id="4792711294155034829">&รายงานปัญหา...</translation> -<translation id="4795022432560487924">ส่งข้อมูลการใช้งานและการวินิจฉัย ช่วยปรับปรุงประสบการณ์การใช้งาน Android ของบุตรหลานให้ดีขึ้นด้วยการส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android เจ้าของเป็นผู้บังคับใช้การตั้งค่านี้ เจ้าของอาจเลือกที่จะส่งข้อมูลการวินิจฉัยและการใช้งานสำหรับอุปกรณ์นี้ไปยัง Google หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="479536056609751218">หน้าเว็บ HTML เท่านั้น</translation> <translation id="4798236378408895261">แนบ<ph name="BEGIN_LINK" />บันทึกบลูทูธ<ph name="END_LINK" /> (ใช้ภายใน Google)</translation> <translation id="4801448226354548035">ซ่อนบัญชี</translation> @@ -3361,6 +3357,7 @@ <translation id="5649053991847567735">การดาวน์โหลดโดยอัตโนมัติ</translation> <translation id="5653154844073528838">คุณมีเครื่องพิมพ์ที่บันทึกไว้ <ph name="PRINTER_COUNT" /> เครื่อง</translation> <translation id="5656845498778518563">ส่งความคิดเห็นไปยัง Google</translation> +<translation id="5657156137487675418">อนุญาตคุกกี้ทั้งหมด</translation> <translation id="5657667036353380798">ต้องมี Chrome เวอร์ชัน <ph name="MINIMUM_CHROME_VERSION" /> หรือสูงกว่าเพื่อติดตั้งส่วนขยายภายนอก</translation> <translation id="5658415415603568799">Smart Lock จะขอให้คุณป้อนรหัสผ่านเมื่อผ่านไปแล้ว 20 ชั่วโมงเพื่อเพิ่มความปลอดภัย</translation> <translation id="5659593005791499971">อีเมล</translation> @@ -3567,7 +3564,6 @@ <translation id="5941711191222866238">ย่อ</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> จะรีสตาร์ทหลังการอัปเดตนี้ การอัปเดตซอฟต์แวร์และการรักษาความปลอดภัยในอนาคตจะติดตั้งโดยอัตโนมัติ</translation> <translation id="5944869793365969636">สแกนคิวอาร์โค้ด</translation> -<translation id="5945188205370098537">ส่งข้อมูลการใช้งานและการวินิจฉัย ช่วยปรับปรุงประสบการณ์การใช้งาน Android ของคุณให้ดีขึ้นด้วยการส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ ซึ่งจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปไว้ ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของคุณ <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">รหัสรายงาน <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">ไม่สามารถแยกวิเคราะห์ไฟล์</translation> <translation id="5955282598396714173">รหัสผ่านหมดอายุ โปรดออกจากระบบแล้วลงชื่อเข้าใช้อีกครั้งเพื่อเปลี่ยนรหัสผ่าน</translation> @@ -3751,6 +3747,7 @@ <translation id="6185132558746749656">ตำแหน่งของอุปกรณ์</translation> <translation id="6186394685773237175">ไม่พบรหัสผ่านที่ไม่รัดกุม</translation> <translation id="6195693561221576702">ตั้งค่าอุปกรณ์นี้ในโหมดสาธิตออฟไลน์ไม่ได้</translation> +<translation id="6196640612572343990">บล็อกคุกกี้ของบุคคลที่สาม</translation> <translation id="6196854373336333322">ส่วนขยาย "<ph name="EXTENSION_NAME" />" ได้เข้าควบคุมการตั้งค่าพร็อกซีของคุณ ซึ่งหมายความว่าส่วนขยายนี้จะสามารถเปลี่ยนแปลง ทำให้เสียหาย หรือดักฟังทุกอย่างที่คุณทำทางออนไลน์ได้ หากคุณไม่แน่ใจว่าการเปลี่ยนแปลงนี้เกิดขึ้นได้อย่างไร คุณอาจไม่ต้องการส่วนขยายนี้</translation> <translation id="6198102561359457428">ออกจากระบบแล้วลงชื่อเข้าใช้อีกครั้ง...</translation> <translation id="6198252989419008588">เปลี่ยน PIN</translation> @@ -4414,7 +4411,6 @@ <translation id="711902386174337313">อ่านรายการอุปกรณ์ที่คุณลงชื่อเข้าใช้</translation> <translation id="7120865473764644444">ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์การซิงค์ได้ กำลังลองใหม่...</translation> <translation id="7121362699166175603">ล้างประวัติการเข้าชมและการเติมข้อความอัตโนมัติในแถบที่อยู่เว็บ บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation> -<translation id="7121389946694989825">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">โหมดของนักพัฒนาซอฟต์แวร์</translation> <translation id="7121728544325372695">เครื่องหมายขีดกลางอัจฉริยะ</translation> <translation id="7123360114020465152">ไม่รองรับแล้ว</translation> @@ -5197,7 +5193,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ย้ายแท็บไปที่หน้าต่างใหม่}other{ย้ายแท็บไปที่หน้าต่างใหม่}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">หน้า</translation> -<translation id="8180294223783876911">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ ซึ่งจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปไว้ ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของคุณ <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" สามารถอ่านและลบรูปภาพ วิดีโอ และไฟล์เสียงในตำแหน่งที่เลือก</translation> <translation id="8181215761849004992">เข้าร่วมโดเมนไม่ได้ ตรวจสอบบัญชีว่าคุณมีสิทธิ์เพียงพอที่จะเพิ่มอุปกรณ์ไหม</translation> <translation id="8182105986296479640">แอปพลิเคชันไม่ตอบสนอง</translation> @@ -5219,7 +5214,6 @@ <translation id="8203732864715032075">ส่งการแจ้งเตือนให้คุณและตั้งค่าเริ่มต้นให้ Messages จดจำคอมพิวเตอร์เครื่องนี้ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="8204129288640092672">ผู้ปกครองได้บล็อก "<ph name="APP_NAME" />" โปรดขอสิทธิ์จากผู้ปกครองเพื่อใช้แอปนี้</translation> <translation id="820568752112382238">เว็บไซต์ที่เข้าชมบ่อยที่สุด</translation> -<translation id="8206581664590136590">ส่งข้อมูลการใช้งานและการวินิจฉัย ช่วยปรับปรุงประสบการณ์การใช้งาน Android ของบุตรหลานให้ดีขึ้นด้วยการส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">บลูซี</translation> <translation id="8206859287963243715">โทรศัพท์มือถือ</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{อยู่ระหว่างการดาวน์โหลด}other{อยู่ระหว่างการดาวน์โหลด}}</translation> @@ -5759,7 +5753,6 @@ <translation id="8912362522468806198">บัญชี Google</translation> <translation id="8912793549644936705">ยืด</translation> <translation id="8912810933860534797">เปิดใช้การสแกนอัตโนมัติ</translation> -<translation id="891365694296252935">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android เจ้าของเป็นผู้บังคับใช้การตั้งค่านี้ หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">กำลังโหลดคำแนะนำ</translation> <translation id="8916476537757519021">เฟรมย่อยแบบไม่ระบุตัวตน: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">กำลังยืนยันคีย์ความปลอดภัย...</translation> @@ -5896,7 +5889,6 @@ <translation id="9101691533782776290">เปิดแอป</translation> <translation id="9102610709270966160">เปิดใช้ส่วนขยาย</translation> <translation id="9103868373786083162">กดเพื่อย้อนกลับไปที่เมนูตามบริบทเพื่อดูประวัติ</translation> -<translation id="9104396740804929809">ส่งข้อมูลการใช้งานและการวินิจฉัย ช่วยปรับปรุงประสบการณ์การใช้งาน Android ของคุณให้ดีขึ้นด้วยการส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ ซึ่งจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android เจ้าของเป็นผู้บังคับใช้การตั้งค่านี้ เจ้าของอาจเลือกที่จะส่งข้อมูลการวินิจฉัยและการใช้งานสำหรับอุปกรณ์นี้ไปยัง Google หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปไว้ ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของคุณ <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">หากต้องการเพิ่มพื้นที่ว่าง ให้ลบไฟล์ออกจากพื้นที่เก็บข้อมูลของอุปกรณ์</translation> <translation id="9109283579179481106">เชื่อมต่อเครือข่ายมือถือ</translation> <translation id="9111102763498581341">ปลดล็อก</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 7820234f..7b02eb9 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Barındırılan uygulama verileri</translation> <translation id="1776712937009046120">Kullanıcı ekle</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Bu cihaz <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tarafından yönetiliyor. - <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hesabınızda oturum açmaya devam etmek için lütfen "Sonraki"yi tıklayın.</translation> <translation id="1779652936965200207">Lütfen bu parolayı "<ph name="DEVICE_NAME" />" cihazında girin:</translation> <translation id="177989070088644880">Uygulama (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Grubu Kapat</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Yazıcılar listelenirken sorun oluştu. Yazıcılarınızın bazıları <ph name="CLOUD_PRINT_NAME" /> üzerinde başarılı olarak kayıt edilmemiş olabilir.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Adres çubuğunda<ph name="END_LINK" /> kullanılan arama motoru</translation> <translation id="2204034823255629767">Yazdığınız her şeyi okuma ve değiştirme</translation> -<translation id="220792432208469595">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Bu ayar, cihazın sahibi tarafından zorunlu kılınmıştır. Ek Web ve Uygulama Etkinliği açıksa bu veriler Google Hesabınıza kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Lütfen "<ph name="DEVICE_NAME" />" cihazında bu PIN kodunu girin:</translation> <translation id="2212565012507486665">Çerezlere izin ver</translation> <translation id="2213140827792212876">Paylaşımı kaldır</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Alternatif tarayıcı açılamadı</translation> <translation id="2804667941345577550">Açık sekmeler dahil olmak üzere bu sitede oturumunuz kapatılacak</translation> <translation id="2804680522274557040">Kamera devre dışı bırakıldı</translation> -<translation id="2805539617243680210">Her şey hazır!</translation> <translation id="2805646850212350655">Microsoft Şifreleme Dosya Sistemi</translation> <translation id="2805756323405976993">Uygulamalar</translation> <translation id="2805770823691782631">Ek ayrıntılar</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Ekran görüntüsü alındı</translation> <translation id="3742666961763734085">Belirtilen ada sahip bir kuruluş birimi bulunamadı. Lütfen tekrar deneyin.</translation> <translation id="3744111561329211289">Arka plan senkronizasyonu</translation> +<translation id="3747077776423672805">Uygulamaları kaldırmak için Ayarlar > Google Play Store > Android tercihlerini yönet > Uygulamalar veya Uygulama yöneticisi'ne gidin. Daha sonra, yüklemesini kaldırmak istediğiniz uygulamaya dokunun (uygulamayı bulmak için sağa veya sola doğru hızlıca kaydırmanız gerekebilir). Ardından, Yüklemeyi Kaldır veya Devre Dışı Bırak'a dokunun.</translation> <translation id="3748026146096797577">Bağlı Değil</translation> <translation id="3752582316358263300">Tamam...</translation> <translation id="3752673729237782832">Cihazlarım</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Bu web sitesine kaydettirilmemiş bir anahtar kullanıyorsunuz</translation> <translation id="4788092183367008521">Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.</translation> <translation id="4792711294155034829">&Sorun Bildirin...</translation> -<translation id="4795022432560487924">Kullanım ve teşhis verilerini gönder. Teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a göndererek çocuğunuzun Android deneyiminin iyileştirilmesine yardımcı olun. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Bu ayar, cihazın sahibi tarafından zorunlu kılınmıştır. Cihazın sahibi bu cihazın teşhis ve kullanım verilerini Google'a göndermeyi seçebilir. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Web sayfası, Sadece HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth Günlükleri<ph name="END_LINK" /> ekle (Google dahili)</translation> <translation id="4801448226354548035">Hesapları gizle</translation> @@ -3362,6 +3358,7 @@ <translation id="5649053991847567735">Otomatik indirmeler</translation> <translation id="5653154844073528838">Kaydedilmiş <ph name="PRINTER_COUNT" /> yazıcınız var.</translation> <translation id="5656845498778518563">Google'a Geri Bildirim gönder</translation> +<translation id="5657156137487675418">Tüm çerezlere izin ver</translation> <translation id="5657667036353380798">Harici uzantının yüklenebilmesi için Chrome sürümü <ph name="MINIMUM_CHROME_VERSION" /> veya daha yenisi gerekir.</translation> <translation id="5658415415603568799">Daha fazla güvenlik için Smart Lock 20 saat sonra şifrenizi girmenizi isteyecektir.</translation> <translation id="5659593005791499971">E-posta</translation> @@ -3568,7 +3565,6 @@ <translation id="5941711191222866238">Simge durumuna küçült</translation> <translation id="5942964813783878922">Bu güncellemeden sonra <ph name="DEVICE_TYPE" /> cihazınız yeniden başlatılır. Gelecekteki yazılım ve güvenlik güncellemeleri otomatik olarak yüklenir.</translation> <translation id="5944869793365969636">QR kodunu tara</translation> -<translation id="5945188205370098537">Kullanım ve teşhis verilerini gönder. Teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a göndererek Android deneyiminizin iyileştirilmesine yardımcı olun. Bu veriler, sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Ek Web ve Uygulama Etkinliği açıksa bu veriler Google Hesabınıza kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Rapor kimliği <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Dosya ayrıştırılamıyor</translation> <translation id="5955282598396714173">Şifrenizin süresi doldu. Şifrenizi değiştirmek için lütfen oturumu kapatıp tekrar oturum açın.</translation> @@ -3752,6 +3748,7 @@ <translation id="6185132558746749656">Cihaz Konumu</translation> <translation id="6186394685773237175">Güvenliği ihlal edilmiş şifre bulunmadı</translation> <translation id="6195693561221576702">Bu cihaz çevrimdışı demo modunda kurulamıyor.</translation> +<translation id="6196640612572343990">Üçüncü taraf çerezlerini engelle</translation> <translation id="6196854373336333322">"<ph name="EXTENSION_NAME" />" uzantısı proxy ayarlarınızın denetimini ele geçirdi. Bu, uzantının çevrimiçinde yaptıklarınızı değiştirebileceği, kesebileceği veya dinleyebileceği anlamına gelir. Bu değişikliğin neden gerçekleştiğinden emin değilseniz muhtemelen bu değişikliği yapmayı istememişsinizdir.</translation> <translation id="6198102561359457428">Oturumu kapatıp tekrar açın...</translation> <translation id="6198252989419008588">PIN'i değiştir</translation> @@ -4415,7 +4412,6 @@ <translation id="711902386174337313">Oturum açmış cihazlarınızın listesini okuma</translation> <translation id="7120865473764644444">Senkronizasyon sunucusuna bağlanılamadı. Yeniden deneniyor…</translation> <translation id="7121362699166175603">Geçmişi ve adres çubuğundaki otomatik tamamlamaları temizler. Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir.</translation> -<translation id="7121389946694989825">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Geliştirici Modu</translation> <translation id="7121728544325372695">Akıllı Kısa Çizgiler</translation> <translation id="7123360114020465152">Artık desteklenmiyor</translation> @@ -5197,7 +5193,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Sekmeyi yeni pencereye taşı}other{Sekmeleri yeni pencereye taşı}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">sayfa</translation> -<translation id="8180294223783876911">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Ek Web ve Uygulama Etkinliği açıksa bu veriler Google Hesabınıza kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />", işaretli konumlardaki resimleri, videoları ve ses dosyalarını okuyabilir ve silebilir.</translation> <translation id="8181215761849004992">Alan adına katılınamıyor. Hesabınızı kontrol ederek, cihazları eklemek için yeterli ayrıcalıklara sahip olduğunuzdan emin olun.</translation> <translation id="8182105986296479640">Uygulama yanıt vermiyor.</translation> @@ -5219,7 +5214,6 @@ <translation id="8203732864715032075">Size bildirimler gönderir ve Mesajlar uygulaması için bu bilgisayarın hatırlanmasını varsayılan ayar yapar. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />", ebeveyniniz tarafından engellendi. Bu uygulamayı kullanmak için ebeveyninizden izin isteyin.</translation> <translation id="820568752112382238">En çok ziyaret edilen siteler</translation> -<translation id="8206581664590136590">Kullanım ve teşhis verilerini gönder. Teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a göndererek çocuğunuzun Android deneyiminin iyileştirilmesine yardımcı olun. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Melodi</translation> <translation id="8206859287963243715">Cep telefonu</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{İndirme işlemi devam ediyor}other{İndirme işlemleri devam ediyor}}</translation> @@ -5759,7 +5753,6 @@ <translation id="8912362522468806198">Google Hesabı</translation> <translation id="8912793549644936705">Uzat</translation> <translation id="8912810933860534797">Otomatik taramayı etkinleştir</translation> -<translation id="891365694296252935">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Bu ayar, cihazın sahibi tarafından zorunlu kılınmıştır. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Öneriler yükleniyor</translation> <translation id="8916476537757519021">Gizli Alt Çerçeve: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Güvenlik anahtarınız doğrulanıyor...</translation> @@ -5896,7 +5889,6 @@ <translation id="9101691533782776290">Uygulamayı başlat</translation> <translation id="9102610709270966160">Uzantıyı Etkinleştir</translation> <translation id="9103868373786083162">Geri gitmek için içerik menüsüne basarak geçmişi görüntüleyin</translation> -<translation id="9104396740804929809">Kullanım ve teşhis verilerini gönder. Teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a göndererek Android deneyiminizin iyileştirilmesine yardımcı olun. Bu veriler, sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Bu ayar, cihazın sahibi tarafından zorunlu kılınmıştır. Cihazın sahibi bu cihazın teşhis ve kullanım verilerini Google'a göndermeyi seçebilir. Ek Web ve Uygulama Etkinliği açıksa bu veriler Google Hesabınıza kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Yer açmak için cihaz depolama alanındaki dosyaları silin.</translation> <translation id="9109283579179481106">Mobil ağa bağlanın</translation> <translation id="9111102763498581341">Kilidi Aç</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 11b9192..1a0666f4 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -577,8 +577,6 @@ <translation id="177336675152937177">Дані розміщених програм</translation> <translation id="1776712937009046120">Додати користувача</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Цим пристроєм керує <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Натисніть "Далі", щоб увійти в обліковий запис <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Введіть цей ключ на пристрої "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Додаток (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Закрити групу</translation> @@ -892,7 +890,6 @@ <translation id="2202898655984161076">Виникала проблема зі складенням списку принтерів. Можливо, деякі з ваших принтерів не зареєстровано в <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Пошукова система, яка використовується в <ph name="BEGIN_LINK" />адресному рядку<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Читати й змінювати весь введений вами текст</translation> -<translation id="220792432208469595">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Це налаштування застосовує власник. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Введіть цей PIN-код на пристрої "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Дозволити файли cookie</translation> <translation id="2213140827792212876">Скасувати доступ</translation> @@ -1353,7 +1350,6 @@ <translation id="2804043232879091219">Не вдалося відкрити альтернативний веб-переглядач</translation> <translation id="2804667941345577550">Ви вийдете з облікового запису на цьому сайті, зокрема у відкритих вкладках</translation> <translation id="2804680522274557040">Камеру вимкнено</translation> -<translation id="2805539617243680210">Готово!</translation> <translation id="2805646850212350655">Система шифрування файлів Microsoft</translation> <translation id="2805756323405976993">Додатки</translation> <translation id="2805770823691782631">Додаткові відомості</translation> @@ -2034,6 +2030,7 @@ <translation id="3742055079367172538">Знімок екрана зроблено</translation> <translation id="3742666961763734085">Не вдається знайти організаційний підрозділ із такою назвою. Повторіть спробу.</translation> <translation id="3744111561329211289">Фонова синхронізація</translation> +<translation id="3747077776423672805">Щоб видалити додатки, перейдіть у меню "Налаштування" > "Google Play" > "Змінити налаштування Android" > "Додатки" або "Менеджер додатків". Торкніться додатка (якщо потрібно, проведіть пальцем управо або вліво, щоб знайти його) і натисніть "Видалити" або "Вимкнути".</translation> <translation id="3748026146096797577">Не з’єднано</translation> <translation id="3752582316358263300">ОК...</translation> <translation id="3752673729237782832">Мої пристрої</translation> @@ -2757,7 +2754,6 @@ <translation id="4785719467058219317">Ви використовуєте ключ безпеки, не зареєстрований на цьому веб-сайті</translation> <translation id="4788092183367008521">Перевірте з’єднання з мережею та повторіть спробу.</translation> <translation id="4792711294155034829">&Повідомити про проблему...</translation> -<translation id="4795022432560487924">Надсилати дані про використання й діагностику. Допоможіть покращити роботу Android для вашої дитини, автоматично надсилаючи в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Це налаштування застосовує власник. Власник може ввімкнути надсилання в Google даних про діагностику й використання цього пристрою. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Веб-сторінка, тільки HTML</translation> <translation id="4798236378408895261">Вкласти <ph name="BEGIN_LINK" />журнали Bluetooth<ph name="END_LINK" /> (для внутрішнього використання в Google)</translation> <translation id="4801448226354548035">Сховати облікові записи</translation> @@ -3384,6 +3380,7 @@ <translation id="5649053991847567735">Автоматичні завантаження</translation> <translation id="5653154844073528838">Збережених принтерів: <ph name="PRINTER_COUNT" />.</translation> <translation id="5656845498778518563">Надіслати відгук у Google</translation> +<translation id="5657156137487675418">Дозволити всі cookie-файли</translation> <translation id="5657667036353380798">Для зовнішнього розширення потрібна версія Chrome <ph name="MINIMUM_CHROME_VERSION" /> або новіша.</translation> <translation id="5658415415603568799">З міркувань безпеки Smart Lock запропонує ввести пароль через 20 годин.</translation> <translation id="5659593005791499971">Електронна пошта</translation> @@ -3591,7 +3588,6 @@ <translation id="5941711191222866238">Зменшити</translation> <translation id="5942964813783878922">Після оновлення пристрій <ph name="DEVICE_TYPE" /> перезавантажиться. Майбутні оновлення програмного забезпечення й системи безпеки встановлюватимуться автоматично.</translation> <translation id="5944869793365969636">Сканувати QR-код</translation> -<translation id="5945188205370098537">Надсилати дані про використання й діагностику. Допоможіть покращити роботу Android, автоматично надсилаючи в Google дані про діагностику та використання пристрою і додатків. Ця інформація допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Ідентифікатор звіту: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Не вдається виконати синтаксичний аналіз файлу</translation> <translation id="5955282598396714173">Термін дії пароля минув. Щоб змінити пароль, вийдіть і знову ввійдіть в обліковий запис.</translation> @@ -3777,6 +3773,7 @@ <translation id="6185132558746749656">Місцезнаходження пристрою</translation> <translation id="6186394685773237175">Немає зламаних паролів</translation> <translation id="6195693561221576702">Не вдається налаштувати пристрій у демо-режимі офлайн.</translation> +<translation id="6196640612572343990">Блокувати сторонні файли cookie</translation> <translation id="6196854373336333322">Розширення "<ph name="EXTENSION_NAME" />" керує налаштуваннями проксі-сервера, тобто може змінювати та переривати будь-які ваші дії онлайн, а також стежити за ними. Якщо ви не знаєте причини такої зміни, імовірно, вона небажана.</translation> <translation id="6198102561359457428">Вийти, а потім увійти знову...</translation> <translation id="6198252989419008588">Змінити PIN-код</translation> @@ -4443,7 +4440,6 @@ <translation id="711902386174337313">Читати список пристроїв, на яких ви ввійшли</translation> <translation id="7120865473764644444">Не вдалося з’єднатись із сервером синхронізації. Повторна спроба…</translation> <translation id="7121362699166175603">Видалення історії й варіантів автозавершень в адресному рядку. Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Режим розробника</translation> <translation id="7121728544325372695">Розумні тире</translation> <translation id="7123360114020465152">Більше не підтримується</translation> @@ -4558,7 +4554,6 @@ <translation id="7280041992884344566">Під час пошуку шкідливих програм у Chrome сталася помилка</translation> <translation id="7280649757394340890">Налаштування голосу для синтезу мовлення</translation> <translation id="7280877790564589615">Потрібен дозвіл</translation> -<translation id="7281268427852119151">Персоналізуйте Пошук, оголошення й інші сервіси Google за допомогою історії веб-перегляду</translation> <translation id="7282992757463864530">Інформаційна панель</translation> <translation id="7287143125007575591">У доступі відмовлено.</translation> <translation id="7287411021188441799">Відновити фон за умовчанням</translation> @@ -5233,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Перемістити вкладку в нове вікно}one{Перемістити вкладки в нове вікно}few{Перемістити вкладки в нове вікно}many{Перемістити вкладки в нове вікно}other{Перемістити вкладки в нове вікно}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">сторінка</translation> -<translation id="8180294223783876911">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">Розширення "<ph name="EXTENSION" />" має доступ до читання й видалення зображень, відео та звукових файлів у вибраних розташуваннях.</translation> <translation id="8181215761849004992">Не вдається приєднатися до домену. Перевірте в обліковому записі, чи ви можете додавати пристрої.</translation> <translation id="8182105986296479640">Додаток не відповідає.</translation> @@ -5255,7 +5249,6 @@ <translation id="8203732864715032075">Надсилає сповіщення й за умовчанням зберігає цей комп’ютер у додатку Повідомлення. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Хтось із батьків заблокував додаток <ph name="APP_NAME" />. Попроси в них дозвіл використовувати цей додаток.</translation> <translation id="820568752112382238">Сайти, які часто відвідуються</translation> -<translation id="8206581664590136590">Надсилати дані про використання й діагностику. Допоможіть покращити роботу Android для вашої дитини, автоматично надсилаючи в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Блюз</translation> <translation id="8206859287963243715">Мобільний</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Триває завантаження}one{Тривають завантаження}few{Тривають завантаження}many{Тривають завантаження}other{Тривають завантаження}}</translation> @@ -5801,7 +5794,6 @@ <translation id="8912362522468806198">Обліковий запис Google</translation> <translation id="8912793549644936705">Розтягнути</translation> <translation id="8912810933860534797">Увімкнути автоматичне сканування</translation> -<translation id="891365694296252935">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Це налаштування застосовує власник. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Завантаження пропозиції</translation> <translation id="8916476537757519021">Додатковий анонімний фрейм: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Підтвердження ключа безпеки…</translation> @@ -5938,7 +5930,6 @@ <translation id="9101691533782776290">Запустити програму</translation> <translation id="9102610709270966160">Увімкнути розширення</translation> <translation id="9103868373786083162">Натисніть, щоб повернутись, або відкрийте контекстне меню, щоб переглянути історію</translation> -<translation id="9104396740804929809">Надсилати дані про використання й діагностику. Допоможіть покращити роботу Android, автоматично надсилаючи в Google дані про діагностику та використання пристрою і додатків. Ця інформація допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Це налаштування застосовує власник. Власник може ввімкнути надсилання в Google даних про діагностику й використання цього пристрою. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Щоб звільнити місце, видаліть файли з пристрою.</translation> <translation id="9109283579179481106">Підключення до мобільної мережі</translation> <translation id="9111102763498581341">Розблокувати</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 0d9a358..62025dde 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -578,8 +578,6 @@ <translation id="177336675152937177">میزبانی کردہ ایپ کا ڈیٹا</translation> <translation id="1776712937009046120">صارف کو شامل کریں</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">یہ آلہ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> کے زیر انتظام ہے۔ - اپنے <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> اکاؤنٹ میں سائن ان جاری رکھنے کیلئے براہ کرم "آگے" پر کلک کریں۔</translation> <translation id="1779652936965200207">براہ کرم "<ph name="DEVICE_NAME" />" پر یہ پاس کی درج کریں۔</translation> <translation id="177989070088644880">(<ph name="ANDROID_PACKAGE_NAME" />) ایپ</translation> <translation id="1780152987505130652">گروپ بند کریں</translation> @@ -893,7 +891,6 @@ <translation id="2202898655984161076">پرنٹرز کی فہرست سازی میں ایک مسئلہ پیش آ گیا۔ ممکن ہے آپ کے کچھ پرنٹرز <ph name="CLOUD_PRINT_NAME" /> کے ساتھ کامیابی سے رجسٹرڈ نہیں ہوئے ہوں۔</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />پتہ بار<ph name="END_LINK" /> میں سرچ انجن کا استعمال کیا جاتا ہے</translation> <translation id="2204034823255629767">آپ جو کچھ بھی ٹائپ کرتے ہیں اسے پڑھیں اور تبدیل کریں</translation> -<translation id="220792432208469595">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ فی الوقت یہ آلہ خود کار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا Google کو بھیج رہا ہے۔ اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اس ترتیب کو مالک نافذ کرتا ہے۔ اگر آپ کی ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو آپ کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="220858061631308971">براہ کرم اس PIN کوڈ کو "<ph name="DEVICE_NAME" />" میں داخل کریں:</translation> <translation id="2212565012507486665">کوکیز کی اجازت دیں</translation> <translation id="2213140827792212876">اشتراک کی سہولت ہٹائیں</translation> @@ -1354,7 +1351,6 @@ <translation id="2804043232879091219">متبادل براؤزر نہیں کھل سکا</translation> <translation id="2804667941345577550">اوپن ٹیبز سمیت، آپ اس سائٹ سے سائن آؤٹ ہو جائیں گے</translation> <translation id="2804680522274557040">کیمرا آف ہے</translation> -<translation id="2805539617243680210">آپ پوری طرح تیار ہیں!</translation> <translation id="2805646850212350655">Microsoft مرموزکاری فائل سسٹم</translation> <translation id="2805756323405976993">اطلاقات</translation> <translation id="2805770823691782631">اضافی تفصیلات</translation> @@ -2035,6 +2031,7 @@ <translation id="3742055079367172538">اسکرین شاٹ لی گئی</translation> <translation id="3742666961763734085">اس نام کا تنظیمی یونٹ تلاش نہیں کیا جا سکا۔ براہ کرم دوبارہ کوشش کریں۔</translation> <translation id="3744111561329211289">پس منظر کی مطابقت پذیری</translation> +<translation id="3747077776423672805">ایپس ہٹانے کے لیے، ترتیبات > Google Play اسٹور > Android کی ترجیحات کا نظم کریں > ایپس یا ایپلیکیشن مینیجر پر جائیں۔ پھر اس ایپ پر تھپتھپائیں جسے آپ اَن انسٹال کرنا چاہتے ہیں (ممکن ہے کہ ایپ تلاش کرنے کے لیے آپ کو دائیں یا بائیں سوائپ کرنا پڑے)۔ پھر 'اَن انسٹال کریں' یا 'غیر فعال کریں' پر تھپتھپائیں۔</translation> <translation id="3748026146096797577">منسلک نہیں ہے</translation> <translation id="3752582316358263300">ٹھیک ہے…</translation> <translation id="3752673729237782832">میرے آلات</translation> @@ -2758,7 +2755,6 @@ <translation id="4785719467058219317">آپ اس سیکیورٹی کلید کا استعمال کر رہے ہیں جو اس ویب سائٹ کے ساتھ رجسٹرڈ نہیں ہے</translation> <translation id="4788092183367008521">براہ کرم اپنا نیٹ ورک کنکشن چیک کریں اور دوبارہ کوشش کریں۔</translation> <translation id="4792711294155034829">ایک مسئلے کی &اطلاع دیں…</translation> -<translation id="4795022432560487924">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ Google کو خودکار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا بھیج کر اپنے بچے کا Android تجربہ بہتر بنانے میں مدد کریں۔ اس کا استعمال آپ کے بچے کی شناخت کیلئے نہیں کیا جائے گا اور اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اس ترتیب کو مالک نافذ کرتا ہے۔ مالک Google کو اس آلہ کیلئے ڈائیگناسٹک اور استعمال کا ڈیٹا بھیجنے کا انتخاب کر سکتا ہے۔ اگر آپ کے بچے کیلئے ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو اس کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="479536056609751218">ویب صفحہ، صرف HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />بلوٹوتھ لاگز<ph name="END_LINK" /> منسلک کریں (Google داخلی)</translation> <translation id="4801448226354548035">اکاؤنٹس چھپائیں</translation> @@ -3592,7 +3588,6 @@ <translation id="5941711191222866238">چھوٹا کریں</translation> <translation id="5942964813783878922">اس اپ ڈیٹ کے بعد آپ کا <ph name="DEVICE_TYPE" /> ری سٹارٹ ہو جائے گا۔ مستقبل میں سافٹ ویئر اور سیکیورٹی اپ ڈیٹس خودکار طور پر انسٹال ہو جائیں گی۔</translation> <translation id="5944869793365969636">QR کوڈ اسکین کریں</translation> -<translation id="5945188205370098537">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ Google کو خودکار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا بھیج کر اپنا Android تجربہ بہتر بنانے میں مدد کریں۔ اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اگر آپ کی ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو آپ کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">رپورٹ ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">فائل کو پارس کرنے سے قاصر</translation> <translation id="5955282598396714173">آپ کے پاس ورڈ کی میعاد ختم ہو گئی ہے۔ براہ کرم اس کو تبدیل کرنے کیلئے سائن آؤٹ کر کے دوبارہ سائن ان کریں۔</translation> @@ -3778,6 +3773,7 @@ <translation id="6185132558746749656">آلہ کا مقام</translation> <translation id="6186394685773237175">کوئی متاثرہ پاس ورڈ نہیں ملا</translation> <translation id="6195693561221576702">اس آلہ کو آف لائن ڈیمو موڈ میں سیٹ نہیں کیا جا سکتا ہے۔</translation> +<translation id="6196640612572343990">فریق ثالث کوکیز کو مسدود کریں</translation> <translation id="6196854373336333322">ایکسٹینشن "<ph name="EXTENSION_NAME" />" نے آپ کی پراکسی ترتیبات کو کنٹرول میں لے لیا ہے، جس کا مطلب ہے کہ آپ آن لائن جو بھی کرتے ہیں وہ اسے تبدیل کر سکتی، بریک کر سکتی یا اس کی جاسوسی کر سکتی ہے۔ اگر آپ کو اس تبدیلی کی وجہ ٹھیک سے معلوم نہیں تو غالباً آپ کو اس کی ضرورت نہیں ہے۔</translation> <translation id="6198102561359457428">سائن آؤٹ ہوں پھر دوبارہ سائن ان کریں…</translation> <translation id="6198252989419008588">PIN تبدیل کریں</translation> @@ -4444,7 +4440,6 @@ <translation id="711902386174337313">اپنے سائن ان کردہ آلات کی فہرست پڑھیں</translation> <translation id="7120865473764644444">مطابقت پذیری سرور سے منسلک نہیں کیا جا سکا۔ دوبارہ کوشش کی جا رہی ہے…</translation> <translation id="7121362699166175603">پتہ بار میں موجود سرگزشت اور خودکار تکمیلات کو صاف کر دیتا ہے۔ ممکن ہے کہ <ph name="BEGIN_LINK" />myactivity.google<ph name="END_LINK" /> پر آپ کے Google اکاؤنٹ میں براؤزنگ کی سرگزشت کی دیگر شکلیں موجود ہوں۔</translation> -<translation id="7121389946694989825">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ فی الوقت یہ آلہ خود کار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا Google کو بھیج رہا ہے۔ اس کا استعمال آپ کے بچے کی شناخت کیلئے نہیں کیا جائے گا اور اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اگر آپ کے بچے کیلئے ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو اس کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">ڈیولپر وضع</translation> <translation id="7121728544325372695">اسمارٹ ڈیشز</translation> <translation id="7123360114020465152">مزید تعاون یافتہ نہیں ہے</translation> @@ -4559,7 +4554,6 @@ <translation id="7280041992884344566">Chrome کی طرف سے نقصان دہ سافٹ ویئر تلاش کرتے وقت ایک خرابی پیش آ گئی</translation> <translation id="7280649757394340890">ٹیکسٹ ٹو اسپیچ آواز کی ترتیبات</translation> <translation id="7280877790564589615">اجازت کی درخواست کی گئی</translation> -<translation id="7281268427852119151">تلاش، اشتہارات اور Google کی دیگر سروسز کو ذاتی نوعیت کا بنانے کے لیے اپنی براؤزنگ سرگزشت استعمال کریں</translation> <translation id="7282992757463864530">معلومات بار</translation> <translation id="7287143125007575591">رسائی مسترد کر دی گئی۔</translation> <translation id="7287411021188441799">ڈیفالٹ پس منظر بحال کریں</translation> @@ -5234,7 +5228,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{ٹیب کو نئی ونڈو میں منتقل کریں}other{ٹیبز کو نئی ونڈو میں منتقل کریں}}</translation> <translation id="8179976553408161302">انٹر</translation> <translation id="8180239481735238521">صفحہ</translation> -<translation id="8180294223783876911">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ فی الوقت یہ آلہ خود کار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا Google کو بھیج رہا ہے۔ اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اگر آپ کی ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو آپ کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" نشان زد مقامات میں تصاویر، ویڈیوز اور آواز والی فائلیں پڑھ اور حذف کر سکتی ہے۔</translation> <translation id="8181215761849004992">ڈومین میں شامل نہیں کیا جا سکا۔ آلات شامل کرنے کی اپنی کافی مراعات دیکھنے کے لیے اپنا اکاؤنٹ چیک کریں۔</translation> <translation id="8182105986296479640">ایپلیکیشن جواب نہیں دے رہی ہے۔</translation> @@ -5256,7 +5249,6 @@ <translation id="8203732864715032075">آپ کو اطلاعات بھیجتی ہے اور "پیغامات" کیلئے اس کمپیوٹر کو یاد رکھنے پر ڈیفالٹ کرتی ہے۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> <translation id="8204129288640092672">"<ph name="APP_NAME" />" کو آپ کے والد/والدہ نے مسدود کر دیا ہے۔ اپنے والد/والدہ سے اس ایپ کا استعمال کرنے کی اجازت طلب کریں۔</translation> <translation id="820568752112382238">سب سے زیادہ ملاحظہ کردہ سائٹس</translation> -<translation id="8206581664590136590">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ Google کو خودکار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا بھیج کر اپنے بچے کا Android تجربہ بہتر بنانے میں مدد کریں۔ اس کا استعمال آپ کے بچے کی شناخت کیلئے نہیں کیا جائے گا اور اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اگر آپ کے بچے کیلئے ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو اس کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">بلوزی</translation> <translation id="8206859287963243715">سیلولر</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{ڈاؤن لوڈ پیش رفت میں ہے}other{ڈاؤن لوڈز پیش رفت میں ہیں}}</translation> @@ -5802,7 +5794,6 @@ <translation id="8912362522468806198">Google اکاؤنٹ</translation> <translation id="8912793549644936705">پهیلائیں</translation> <translation id="8912810933860534797">خودکار اسکین فعال کریں</translation> -<translation id="891365694296252935">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ فی الوقت یہ آلہ خود کار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا Google کو بھیج رہا ہے۔ اس کا استعمال آپ کے بچے کی شناخت کیلئے نہیں کیا جائے گا اور اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اس ترتیب کو مالک نافذ کرتا ہے۔ اگر آپ کے بچے کیلئے ویب اور ایپ کی اضافی سرگرمی آن ہے تو اس ڈیٹا کو اس کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">تجویز لوڈ ہو رہی ہے</translation> <translation id="8916476537757519021">پوشیدگی کا ذیلی فریم: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">آپ کی سیکیورٹی کلید کی توثیق ہو رہی ہے...</translation> @@ -5939,7 +5930,6 @@ <translation id="9101691533782776290">ایپ شروع کریں</translation> <translation id="9102610709270966160">ایکسٹینشن کو فعال کریں</translation> <translation id="9103868373786083162">پیچھے جانے کیلئے دبائیں، سرگزشت دیکھنے کیلئے سیاق وسباق کا مینو</translation> -<translation id="9104396740804929809">استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ Google کو خودکار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا بھیج کر اپنا Android تجربہ بہتر بنانے میں مدد کریں۔ اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اس ترتیب کو مالک نافذ کرتا ہے۔ مالک Google کو اس آلہ کیلئے ڈائیگناسٹک اور استعمال کا ڈیٹا بھیجنے کا انتخاب کر سکتا ہے۔ اگر آپ کی ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو آپ کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK1" />مزید جانیں<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">جگہ خالی کرنے کیلئے، آلہ کے اسٹوریج سے فائلیں حذف کریں۔</translation> <translation id="9109283579179481106">موبائل نیٹ ورک سے منسلک ہوں</translation> <translation id="9111102763498581341">غیر مقفل کریں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index f476b403..5078a14 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -575,8 +575,6 @@ <translation id="177336675152937177">Joylashtiriladigan ilovalarning ma’lumotlari</translation> <translation id="1776712937009046120">Foydalanuvchi kiritish</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Bu qurilma <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> domeni orqali boshqariladi. - “Davom etish” ustiga bosib <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hisobiga kiring.</translation> <translation id="1779652936965200207">Bu kalitni "<ph name="DEVICE_NAME" />"da kiriting:</translation> <translation id="177989070088644880">Ilova (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Guruhni yopish</translation> @@ -890,7 +888,6 @@ <translation id="2202898655984161076">Printerlar ro‘yxatini yuklashda xatolik yuz berdi. Ba’zi printerlar <ph name="CLOUD_PRINT_NAME" /> yordamida ro‘yxatdan o‘tkazilmagan bo‘lishi mumkin.</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />Manzil qatorida<ph name="END_LINK" /> ishlatiladigan qidiruv tizimi</translation> <translation id="2204034823255629767">Kiritilayotgan matnni ko‘rish va o‘zagartirish</translation> -<translation id="220792432208469595">Foydalanish va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Bu parametr qurilma egasi tomonidan oʻrnatilgan. Agar Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar Google hisobingizda saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="220858061631308971">“<ph name="DEVICE_NAME" />” qurilmasi PIN-kodini kiriting:</translation> <translation id="2212565012507486665">Cookie fayllariga ruxsat berish</translation> <translation id="2213140827792212876">Ulashuvni bekor qilish</translation> @@ -1351,7 +1348,6 @@ <translation id="2804043232879091219">Muqobil brauzer ochilmadi</translation> <translation id="2804667941345577550">Bu saytdagi hisobingizdan avtomatik chiqarilasiz (shuningdek, ochiq varaqlardan ham)</translation> <translation id="2804680522274557040">Kamera faolsizlantirilgan</translation> -<translation id="2805539617243680210">Tayyor!</translation> <translation id="2805646850212350655">Microsoft (EFS) shifrlangan fayl tizimi</translation> <translation id="2805756323405976993">Ilovalar</translation> <translation id="2805770823691782631">Batafsil</translation> @@ -2032,6 +2028,7 @@ <translation id="3742055079367172538">Ekran suratga olindi</translation> <translation id="3742666961763734085">Bu nomdagi tashkilot qismi topilmadi. Qayta urining.</translation> <translation id="3744111561329211289">Orqa fonda sinxronlash</translation> +<translation id="3747077776423672805">Ilovalarni oʻchirib tashlash uchun Sozlamalar > Google Play Market > Android sozlamalari boshqaruvi > Ilovalar yoki Ilovalar menejeri menyusiga kiring. Kerakli ilovani tanlab (ilovani topish uchun ekranni oʻng yoki chapga suring), “Oʻchirib tashlash” yoki “Faolsizlantirish” tugmasini bosing.</translation> <translation id="3748026146096797577">Ulanilmagan</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Mening qurilmalarim</translation> @@ -2755,7 +2752,6 @@ <translation id="4785719467058219317">Elektron kalitingiz bu sayt roʻyxatidan oʻtkazilmagan</translation> <translation id="4788092183367008521">Tarmoq ulanishini tekshiring va qaytadan urining.</translation> <translation id="4792711294155034829">&Muammo haqida xabar qilish...</translation> -<translation id="4795022432560487924">Foydalanish va diagnostika axborotini yuborish. Diagnostika hamda qurilma va ilovadan foydalanish statistikasini Google kompaniyasiga avtomatik yuborish orqali Androidni yaxshilashga yordam bering. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Bu parametr qurilma egasi tomonidan oʻrnatilgan. Qurilma egasi undagi foydalanish haqidagi va diagnostika axborotini Google serverlariga avtomatik yuborilishini tayinlashi mumkin. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Veb-sahifa, faqat HTML</translation> <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth jurnali<ph name="END_LINK" /> biriktirilsin (Google ichki tekshiruvi uchun)</translation> <translation id="4801448226354548035">Hisoblarni yashirish</translation> @@ -3589,7 +3585,6 @@ <translation id="5941711191222866238">Yig‘ish</translation> <translation id="5942964813783878922">Bu yangilanishdan keyin <ph name="DEVICE_TYPE" /> qayta ishga tushadi. Dastur va xavfsizlik sozlamalari avtomatik yangilanadi.</translation> <translation id="5944869793365969636">QR kodni skanerlash</translation> -<translation id="5945188205370098537">Foydalanish va diagnostika axborotini yuborish. Diagnostika hamda qurilma va ilovadan foydalanish statistikasini Google kompaniyasiga avtomatik yuborish orqali Androidni yaxshilashga yordam bering. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar Google hisobingizda saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">Hisobot identifikatori: <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Faylni ochib bo‘lmadi</translation> <translation id="5955282598396714173">Parolingiz eskirdi. Yangilash uchun hisobingizdan chiqing va qayta kiring.</translation> @@ -3775,6 +3770,7 @@ <translation id="6185132558746749656">Qurilma joylashuvi</translation> <translation id="6186394685773237175">Oshkor qilingan parollar topilmadi</translation> <translation id="6195693561221576702">Bu qurilmani oflayn demo rejimda sozlab boʻlmaydi.</translation> +<translation id="6196640612572343990">Tashqi cookie-fayllarni bloklash.</translation> <translation id="6196854373336333322">“<ph name="EXTENSION_NAME" />” kengaytmasi proksi-server sozlamalarini nazorat qiladi. U internetda bajargan ishlaringizni o‘zgartirishi, buzishi yoki bildirmasdan eshitishi mumkin. Agar bu haqda eshitmagan bo‘lsangiz, uni o‘chirib qo‘yganingiz yaxshi.</translation> <translation id="6198102561359457428">Chiqish va qaytadan kirish...</translation> <translation id="6198252989419008588">PIN-kodni o‘zgartirish</translation> @@ -4441,7 +4437,6 @@ <translation id="711902386174337313">Tizimga kirish amali bajarilgan qurilmalar ro‘yxati</translation> <translation id="7120865473764644444">Sinxronizatsiya serveriga ulana olmadi. Qayta urinilmoqda...</translation> <translation id="7121362699166175603">Manzil qatoridagi tarix va avto‘ldirishlarni tozalaydi. Google hisobingiz orqali bajargan internetdagi faoliyatingizni <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> orqali ko‘rishingiz mumkin.</translation> -<translation id="7121389946694989825">Foydalanish va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Dasturchi rejimi</translation> <translation id="7121728544325372695">Smart tirelar</translation> <translation id="7123360114020465152">Printer ta’minoti to‘xtatilgan</translation> @@ -4556,7 +4551,6 @@ <translation id="7280041992884344566">Kompyuterdagi zararli dasturlar qidiruvi vaqtida xatolik yuz berdi</translation> <translation id="7280649757394340890">Nutq sintezatori uchun ovoz sozlamalari</translation> <translation id="7280877790564589615">Ruxsat so‘ralmoqda</translation> -<translation id="7281268427852119151">Qidiruv, rekama va boshqa xizmatlarni sizga moslashtirish uchun tarix maʼlumotlaringiz ishlatilishi mumkin</translation> <translation id="7282992757463864530">Axborot paneli</translation> <translation id="7287143125007575591">Ruxsat berilmadi.</translation> <translation id="7287411021188441799">Standart fonni tiklash</translation> @@ -5229,7 +5223,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Varaqni yangi oynaga olish}other{Varaqlarni yangi oynaga olish}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">sahifa</translation> -<translation id="8180294223783876911">Foydalanish va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar Google hisobingizda saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">“<ph name="EXTENSION" />” kengaytmasi belgilangan jildlardan rasm, audio va video fayllarni o‘qishi va o‘chirishi mumkin.</translation> <translation id="8181215761849004992">Domenga ulana olmadi. Qurilmalarni ulash huquqi sizga berilmagan bo‘lishi mumkin,</translation> <translation id="8182105986296479640">Ilova javob bermayapti.</translation> @@ -5251,7 +5244,6 @@ <translation id="8203732864715032075">Bu kompyuter xabarlashuv uchun birlamchi bo‘lishi uchun sizga bildirishnoma yuborildi. <ph name="LINK_BEGIN" />Batafsil axborot<ph name="LINK_END" /></translation> <translation id="8204129288640092672"><ph name="APP_NAME" /> ota-onangiz tomonidan bloklangan. Bu ilovadan foydalanish uchun ota-onangizdan ruxsat oling.</translation> <translation id="820568752112382238">Eng koʻp ochilgan saytlar</translation> -<translation id="8206581664590136590">Foydalanish va diagnostika axborotini yuborish. Diagnostika hamda qurilma va ilovadan foydalanish statistikasini Google kompaniyasiga avtomatik yuborish orqali Androidni yaxshilashga yordam bering. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Blyuz</translation> <translation id="8206859287963243715">Uyali</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Yuklab olinmoqda}other{Yuklab olinmoqda}}</translation> @@ -5797,7 +5789,6 @@ <translation id="8912362522468806198">Google hisobi</translation> <translation id="8912793549644936705">Cho‘zish</translation> <translation id="8912810933860534797">Avtomatik skanerlashni yoqish</translation> -<translation id="891365694296252935">Foydalanish va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Bu parametr qurilma egasi tomonidan oʻrnatilgan. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Taklif yuklanmoqda</translation> <translation id="8916476537757519021">Inkognito rejimidagi quyi freym: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Elektron kalit tasdiqlanmoqda...</translation> @@ -5934,7 +5925,6 @@ <translation id="9101691533782776290">Ishga tushirish</translation> <translation id="9102610709270966160">Kengaytmani yoqish</translation> <translation id="9103868373786083162">Ortga qaytish uchun bosing, brauzer tarixini ko‘rish uchun kontekst menyusini tanlang</translation> -<translation id="9104396740804929809">Foydalanish va diagnostika axborotini yuborish. Diagnostika hamda qurilma va ilovadan foydalanish statistikasini Google kompaniyasiga avtomatik yuborish orqali Androidni yaxshilashga yordam bering. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Bu parametr qurilma egasi tomonidan oʻrnatilgan. Qurilma egasi undagi foydalanish haqidagi va diagnostika axborotini Google serverlariga avtomatik yuborilishini tayinlashi mumkin. Agar Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar Google hisobingizda saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Joy ochish uchun qurilma xotirasidan fayllarni o‘chiring</translation> <translation id="9109283579179481106">Mobil tarmoqqa ulanish</translation> <translation id="9111102763498581341">Qulfdan yechish</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 618fa3e0..5434f95 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">Dữ liệu ứng dụng lưu trữ trên máy chủ</translation> <translation id="1776712937009046120">Thêm người dùng</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Thiết bị này do <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> quản lý. - Vui lòng nhấp vào "Tiếp theo" để tiếp tục đăng nhập vào tài khoản <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> của bạn.</translation> <translation id="1779652936965200207">Vui lòng nhập mã xác nhận này trên "<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Ứng dụng (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Đóng nhóm</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">Đã có sự cố khi liệt kê máy in. Một số máy in của bạn có thể chưa được đăng ký thành công với <ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Công cụ tìm kiếm được sử dụng trên <ph name="BEGIN_LINK" />thanh địa chỉ<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Đọc và thay đổi mọi nội dung bạn nhập</translation> -<translation id="220792432208469595">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Mục cài đặt này do chủ sở hữu thực thi. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng thì dữ liệu này có thể được lưu vào Tài khoản Google của bạn. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Vui lòng nhập mã PIN này trên "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Cho phép cookie</translation> <translation id="2213140827792212876">Xóa thư mục dùng chung</translation> @@ -1343,7 +1340,6 @@ <translation id="2804043232879091219">Không thể mở trình duyệt thay thế</translation> <translation id="2804667941345577550">Bạn sẽ bị đăng xuất khỏi trang web này, bao gồm cả các tab đang mở</translation> <translation id="2804680522274557040">Đã tắt máy ảnh</translation> -<translation id="2805539617243680210">Bạn đã hoàn tất!</translation> <translation id="2805646850212350655">Hệ thống Tệp Mã hóa của Microsoft</translation> <translation id="2805756323405976993">Ứng dụng</translation> <translation id="2805770823691782631">Thông tin chi tiết bổ sung</translation> @@ -2021,6 +2017,7 @@ <translation id="3742055079367172538">Ảnh màn hình đã chụp</translation> <translation id="3742666961763734085">Không tìm thấy đơn vị tổ chức có tên đó. Vui lòng thử lại.</translation> <translation id="3744111561329211289">Đồng bộ hóa dưới nền</translation> +<translation id="3747077776423672805">Để xóa ứng dụng, hãy chuyển đến mục Cài đặt > Cửa hàng Google Play > Quản lý tùy chọn Android > Ứng dụng hoặc Trình quản lý ứng dụng. Tiếp theo, hãy nhấn vào ứng dụng mà bạn muốn gỡ cài đặt (bạn có thể phải vuốt sang phải hoặc trái để tìm ứng dụng đó). Sau đó, hãy nhấn vào Gỡ cài đặt hoặc Tắt.</translation> <translation id="3748026146096797577">Chưa được kết nối</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Thiết bị của tôi</translation> @@ -2741,7 +2738,6 @@ <translation id="4785719467058219317">Bạn đang sử dụng một khóa bảo mật chưa đăng ký với trang web này</translation> <translation id="4788092183367008521">Vui lòng kiểm tra kết nối mạng và thử lại.</translation> <translation id="4792711294155034829">&Báo cáo sự cố...</translation> -<translation id="4795022432560487924">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Giúp cải thiện trải nghiệm Android của con bạn bằng cách tự động gửi dữ liệu chẩn đoán cũng như dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Mục cài đặt này do chủ sở hữu thực thi. Chủ sở hữu có thể chọn gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng của thiết bị này cho Google. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Trang web, chỉ HTML</translation> <translation id="4798236378408895261">Đính kèm <ph name="BEGIN_LINK" />Nhật ký Bluetooth<ph name="END_LINK" /> (nội bộ Google)</translation> <translation id="4801448226354548035">Ẩn tài khoản</translation> @@ -3361,6 +3357,7 @@ <translation id="5649053991847567735">Tự động tải xuống</translation> <translation id="5653154844073528838">Bạn đã lưu <ph name="PRINTER_COUNT" /> máy in.</translation> <translation id="5656845498778518563">Gửi ý kiến phản hồi cho Google</translation> +<translation id="5657156137487675418">Cho phép tất cả cookie</translation> <translation id="5657667036353380798">Tiện ích bên ngoài yêu cầu cài đặt phiên bản phiên bản Chrome <ph name="MINIMUM_CHROME_VERSION" /> trở lên.</translation> <translation id="5658415415603568799">Để tăng cường bảo mật, Smart Lock sẽ yêu cầu bạn nhập mật khẩu sau 20 giờ.</translation> <translation id="5659593005791499971">Email</translation> @@ -3567,7 +3564,6 @@ <translation id="5941711191222866238">Thu nhỏ</translation> <translation id="5942964813783878922"><ph name="DEVICE_TYPE" /> sẽ khởi động lại sau quá trình cập nhật này. Các bản cập nhật bảo mật và phần mềm trong tương lai sẽ tự động cài đặt.</translation> <translation id="5944869793365969636">Quét mã QR</translation> -<translation id="5945188205370098537">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Giúp cải thiện trải nghiệm Android của bạn bằng cách tự động gửi dữ liệu chẩn đoán cũng như dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng thì dữ liệu này có thể được lưu vào Tài khoản Google của bạn. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">ID báo cáo <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Không thể phân tích cú pháp tệp</translation> <translation id="5955282598396714173">Mật khẩu của bạn đã hết hạn. Vui lòng đăng xuất rồi đăng nhập lại để thay đổi mật khẩu.</translation> @@ -3751,6 +3747,7 @@ <translation id="6185132558746749656">Vị trí thiết bị</translation> <translation id="6186394685773237175">Không phát hiện thấy mật khẩu nào bị lộ</translation> <translation id="6195693561221576702">Không thể thiết lập thiết bị này ở chế độ minh họa ngoại tuyến.</translation> +<translation id="6196640612572343990">Chặn cookie của bên thứ ba</translation> <translation id="6196854373336333322">Tiện ích "<ph name="EXTENSION_NAME" />" đã chiếm quyền kiểm soát cài đặt proxy của bạn, điều đó có nghĩa là tiện ích này có thể thay đổi, làm gián đoạn hoặc nghe trộm bất kỳ điều gì bạn thực hiện trực tuyến. Nếu bạn không chắc chắn về lý do thay đổi này diễn ra, bạn có thể không cần tiện ích này.</translation> <translation id="6198102561359457428">Đăng xuất rồi đăng nhập lại...</translation> <translation id="6198252989419008588">Thay đổi mã PIN</translation> @@ -4414,7 +4411,6 @@ <translation id="711902386174337313">Đọc danh sách các thiết bị đã đăng nhập của bạn</translation> <translation id="7120865473764644444">Không thể kết nối với máy chủ đồng bộ hóa. Đang thử lại...</translation> <translation id="7121362699166175603">Xóa lịch sử duyệt web và nội dung tự động hoàn thành trong thanh địa chỉ. Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Chế độ nhà phát triển</translation> <translation id="7121728544325372695">Dấu gạch ngang thông minh</translation> <translation id="7123360114020465152">Không còn được hỗ trợ</translation> @@ -5197,7 +5193,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Di chuyển thẻ sang cửa sổ mới}other{Di chuyển các thẻ sang cửa sổ mới}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">trang</translation> -<translation id="8180294223783876911">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng thì dữ liệu này có thể được lưu vào Tài khoản Google của bạn. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">"<ph name="EXTENSION" />" có thể đọc và xóa các tệp hình ảnh, video và âm thanh trong vị trí đã chọn.</translation> <translation id="8181215761849004992">Không thể kết hợp miền. Hãy kiểm tra tài khoản của bạn để xem bạn có đủ đặc quyền thêm thiết bị hay không.</translation> <translation id="8182105986296479640">Ứng dụng không phản hồi.</translation> @@ -5219,7 +5214,6 @@ <translation id="8203732864715032075">Gửi cho bạn thông báo và đặt mặc định để ghi nhớ máy tính này cho ứng dụng Messages. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> <translation id="8204129288640092672">Cha mẹ bạn đã chặn "<ph name="APP_NAME" />". Hãy xin phép cha mẹ cấp quyền sử dụng ứng dụng này.</translation> <translation id="820568752112382238">Trang web truy cập nhiều nhất</translation> -<translation id="8206581664590136590">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Giúp cải thiện trải nghiệm Android của con bạn bằng cách tự động gửi dữ liệu chẩn đoán cũng như dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">Nốt nhạc xanh</translation> <translation id="8206859287963243715">Di động</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Đang tải xuống}other{Đang tải xuống}}</translation> @@ -5759,7 +5753,6 @@ <translation id="8912362522468806198">Tài khoản Google</translation> <translation id="8912793549644936705">Kéo dãn</translation> <translation id="8912810933860534797">Bật tính năng tự động quét</translation> -<translation id="891365694296252935">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Mục cài đặt này do chủ sở hữu thực thi. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Đang tải đề xuất</translation> <translation id="8916476537757519021">Khung ẩn danh phụ: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Đang xác minh khóa bảo mật...</translation> @@ -5896,7 +5889,6 @@ <translation id="9101691533782776290">Chạy ứng dụng</translation> <translation id="9102610709270966160">Bật tiện ích</translation> <translation id="9103868373786083162">Nhấn để quay lại, nhấn menu ngữ cảnh để xem lịch sử</translation> -<translation id="9104396740804929809">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Giúp cải thiện trải nghiệm Android của bạn bằng cách tự động gửi dữ liệu chẩn đoán cũng như dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Mục cài đặt này do chủ sở hữu thực thi. Chủ sở hữu có thể chọn gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng của thiết bị này cho Google. Nếu bạn bật mục cài đặt bổ sung Hoạt động trên web và ứng dụng thì dữ liệu này có thể được lưu vào Tài khoản Google của bạn. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Để giải phóng dung lượng, hãy xóa tệp khỏi bộ nhớ thiết bị.</translation> <translation id="9109283579179481106">Kết nối với mạng di động</translation> <translation id="9111102763498581341">Mở khóa</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index b049a1d..9b26e9a1b 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -570,8 +570,6 @@ <translation id="177336675152937177">托管应用数据</translation> <translation id="1776712937009046120">添加用户</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">此设备由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 管理。 - 请点击“下一步”,以继续使用您的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帐号登录。</translation> <translation id="1779652936965200207">请在“<ph name="DEVICE_NAME" />”上输入此匹配密钥:</translation> <translation id="177989070088644880">应用 (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">关闭群组</translation> @@ -884,7 +882,6 @@ <translation id="2202898655984161076">列出打印机时发生问题。您的某些打印机可能尚未成功使用“<ph name="CLOUD_PRINT_NAME" />”进行注册。</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />地址栏<ph name="END_LINK" />中使用的搜索引擎</translation> <translation id="2204034823255629767">读取和更改您输入的任何内容</translation> -<translation id="220792432208469595">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。这项设置是由此设备的所有者强制指定的。如果您已开启“其他网络与应用活动记录”设置,这些数据可能会被保存到您的 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="220858061631308971">请在“<ph name="DEVICE_NAME" />”上输入此 PIN 码:</translation> <translation id="2212565012507486665">允许使用 Cookie</translation> <translation id="2213140827792212876">停止共享</translation> @@ -1339,7 +1336,6 @@ <translation id="2804043232879091219">无法打开替代浏览器</translation> <translation id="2804667941345577550">您将会自动退出这个网站(包括打开的标签页)</translation> <translation id="2804680522274557040">摄像头已关闭</translation> -<translation id="2805539617243680210">您已设置完毕!</translation> <translation id="2805646850212350655">Microsoft 加密文件系统</translation> <translation id="2805756323405976993">应用</translation> <translation id="2805770823691782631">更多详情</translation> @@ -2017,6 +2013,7 @@ <translation id="3742055079367172538">已完成屏幕截图</translation> <translation id="3742666961763734085">找不到使用该名称的组织单元。请重试。</translation> <translation id="3744111561329211289">后台同步</translation> +<translation id="3747077776423672805">要想卸载应用,请依次转到“设置”>“Google Play 商店”>“管理 Android 偏好设置”>“应用”或“应用管理器”,点按您要卸载的应用(您可能需要左右滑动才能找到相应的应用),然后点按“卸载”或“停用”。</translation> <translation id="3748026146096797577">未建立连接</translation> <translation id="3752582316358263300">确定...</translation> <translation id="3752673729237782832">我的设备</translation> @@ -2736,7 +2733,6 @@ <translation id="4785719467058219317">您使用的安全密钥尚未在此网站注册</translation> <translation id="4788092183367008521">请检查您的网络连接,然后重试。</translation> <translation id="4792711294155034829">报告问题(&R)...</translation> -<translation id="4795022432560487924">发送使用情况数据和诊断数据。通过自动向 Google 发送诊断数据、设备数据和应用使用情况数据,帮助改善您孩子的 Android 使用体验。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。这项设置是由此设备的所有者强制指定的。此设备的所有者可以选择向 Google 发送此设备的诊断数据和使用情况数据。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="479536056609751218">网页,仅 HTML</translation> <translation id="4798236378408895261">附加<ph name="BEGIN_LINK" />蓝牙日志<ph name="END_LINK" />(Google 内部使用)</translation> <translation id="4801448226354548035">隐藏帐号</translation> @@ -3356,6 +3352,7 @@ <translation id="5649053991847567735">自动下载项</translation> <translation id="5653154844073528838">您有 <ph name="PRINTER_COUNT" /> 台已保存的打印机。</translation> <translation id="5656845498778518563">向 Google 发送反馈</translation> +<translation id="5657156137487675418">允许所有 Cookie</translation> <translation id="5657667036353380798">该外部扩展程序需要安装 <ph name="MINIMUM_CHROME_VERSION" /> 或更高版本的 Chrome。</translation> <translation id="5658415415603568799">为了提升安全性,Smart Lock 会在 20 小时后要求您输入您的密码。</translation> <translation id="5659593005791499971">电子邮件</translation> @@ -3562,7 +3559,6 @@ <translation id="5941711191222866238">最小化</translation> <translation id="5942964813783878922">安装此更新之后,您的 <ph name="DEVICE_TYPE" /> 将会重启。后续的软件更新和安全更新将会自动安装。</translation> <translation id="5944869793365969636">扫描二维码</translation> -<translation id="5945188205370098537">发送使用情况数据和诊断数据。通过自动向 Google 发送诊断数据、设备数据和应用使用情况数据,帮助改善您的 Android 使用体验。这些数据会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已开启“其他网络与应用活动记录”设置,这些数据可能会被保存到您的 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">报告ID:<ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">无法解析文件</translation> <translation id="5955282598396714173">您的密码已过期。请退出并重新登录以更改密码。</translation> @@ -3746,6 +3742,7 @@ <translation id="6185132558746749656">设备位置</translation> <translation id="6186394685773237175">未发现任何已泄露的密码</translation> <translation id="6195693561221576702">无法在此设备上设置离线演示模式。</translation> +<translation id="6196640612572343990">阻止第三方 Cookie</translation> <translation id="6196854373336333322">“<ph name="EXTENSION_NAME" />”扩展程序控制了您的代理设置,也就是说,它可以更改、中断或窃听您在网上执行的任何操作。如果您不确定出现这种变化的原因,那么这种变化可能并不是您所希望的。</translation> <translation id="6198102561359457428">退出后重新登录...</translation> <translation id="6198252989419008588">更改 PIN</translation> @@ -4409,7 +4406,6 @@ <translation id="711902386174337313">读取您登录过的设备的列表</translation> <translation id="7120865473764644444">无法连接到同步服务器。正在重试…</translation> <translation id="7121362699166175603">清除历史记录和地址栏中的自动填充项。您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation> -<translation id="7121389946694989825">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">开发者模式</translation> <translation id="7121728544325372695">智能破折号</translation> <translation id="7123360114020465152">已不再受支持</translation> @@ -5191,7 +5187,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{将标签页移至新窗口}other{将标签页移至新窗口}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">页</translation> -<translation id="8180294223783876911">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已开启“其他网络与应用活动记录”设置,这些数据可能会被保存到您的 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">“<ph name="EXTENSION" />”可以读取及删除选中位置的图片、视频及音频文件。</translation> <translation id="8181215761849004992">无法加入到该网域中。请检查您的帐号以了解您是否有足够的权限来添加设备。</translation> <translation id="8182105986296479640">应用无响应。</translation> @@ -5213,7 +5208,6 @@ <translation id="8203732864715032075">向您发送通知,并默认记住这台计算机以便在您收到短信时向其发送通知。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation> <translation id="8204129288640092672">“<ph name="APP_NAME" />”已被您的家长禁用。请让您的家长授权您使用此应用。</translation> <translation id="820568752112382238">最常访问的网站</translation> -<translation id="8206581664590136590">发送使用情况数据和诊断数据。通过自动向 Google 发送诊断数据、设备数据和应用使用情况数据,帮助改善您孩子的 Android 使用体验。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">音符</translation> <translation id="8206859287963243715">蜂窝网络设备</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{有 1 项下载正在进行中}other{有多项下载正在进行中}}</translation> @@ -5753,7 +5747,6 @@ <translation id="8912362522468806198">Google 帐号</translation> <translation id="8912793549644936705">拉伸</translation> <translation id="8912810933860534797">启用自动扫描</translation> -<translation id="891365694296252935">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。这项设置是由此设备的所有者强制指定的。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">正在加载建议</translation> <translation id="8916476537757519021">隐身辅助框架:<ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">正在验证您的安全密钥…</translation> @@ -5890,7 +5883,6 @@ <translation id="9101691533782776290">启动应用</translation> <translation id="9102610709270966160">启用扩展程序</translation> <translation id="9103868373786083162">点按该按钮可后退,点按上下文菜单可查看历史记录</translation> -<translation id="9104396740804929809">发送使用情况数据和诊断数据。通过自动向 Google 发送诊断数据、设备数据和应用使用情况数据,帮助改善您的 Android 使用体验。这些数据会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。这项设置是由此设备的所有者强制指定的。此设备的所有者可以选择向 Google 发送此设备的诊断数据和使用情况数据。如果您已开启“其他网络与应用活动记录”设置,这些数据可能会被保存到您的 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">要释放空间,请将文件从设备存储空间中删除。</translation> <translation id="9109283579179481106">连接到移动网络</translation> <translation id="9111102763498581341">解锁</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 3fac61e8..32180a9 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">代管應用程式數據</translation> <translation id="1776712937009046120">新增使用者</translation> <translation id="1776883657531386793"><ph name="OID" />:<ph name="INFO" /></translation> -<translation id="1777310661937894236">此裝置由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 管理。 - 請點擊 [下一步] 繼續登入您的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帳戶。</translation> <translation id="1779652936965200207">請在「<ph name="DEVICE_NAME" />」上輸入以下密碼金鑰:</translation> <translation id="177989070088644880">應用程式 (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">關閉群組</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">列出打印機清單時發生問題,您的部分打印機尚未在 <ph name="CLOUD_PRINT_NAME" /> 完成註冊。</translation> <translation id="2203682048752833055">在<ph name="BEGIN_LINK" />網址列<ph name="END_LINK" />中使用的搜尋引擎</translation> <translation id="2204034823255629767">讀取及變更您輸入的任何設定</translation> -<translation id="220792432208469595">傳送使用情況和診斷資料。此裝置目前會自動將診斷、裝置及應用程式的使用情況資料傳送至 Google。這些資料將有助改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。擁有者可強制執行此設定。如果已開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至您的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="220858061631308971">請在「<ph name="DEVICE_NAME" />」上輸入以下 PIN:</translation> <translation id="2212565012507486665">允許 Cookie</translation> <translation id="2213140827792212876">移除共用設定</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">無法開啟替代瀏覽器</translation> <translation id="2804667941345577550">您將會從此網站 (包括在開啟的分頁) 登出。</translation> <translation id="2804680522274557040">相機已關閉</translation> -<translation id="2805539617243680210">大功告成!</translation> <translation id="2805646850212350655">Microsoft 加密檔案系統</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2805770823691782631">其他詳細資料</translation> @@ -2019,6 +2015,7 @@ <translation id="3742055079367172538">已拍攝螢幕擷圖</translation> <translation id="3742666961763734085">找不到該名稱的機構單位。請再試一次。</translation> <translation id="3744111561329211289">背景同步處理</translation> +<translation id="3747077776423672805">如要移除應用程式,請前往「設定」>「Google Play 商店」>「管理 Android 偏好設定」>「應用程式」或「應用程式管理員」,然後輕按您想解除安裝的應用程式 (您可能需要向右或向左滑動,才能找到應用程式),再輕按 [解除安裝] 或 [停用]。</translation> <translation id="3748026146096797577">尚未連線</translation> <translation id="3752582316358263300">確定…</translation> <translation id="3752673729237782832">我的裝置</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">您目前使用的安全密鑰並未在此網站註冊</translation> <translation id="4788092183367008521">請檢查你的網絡連線,然後再試一次。</translation> <translation id="4792711294155034829">報告問題(&R)…</translation> -<translation id="4795022432560487924">傳送使用情況和診斷資料。自動將診斷、裝置及應用程式的使用情況資料傳送至 Google,協助改善您子女的 Android 使用體驗。這些資料不會用來識別您子女的身分,而是用於改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。擁有者可強制執行此設定。擁有者可選擇是否將此裝置的診斷和使用情況資料傳送給 Google。如果已為子女開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至其 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="479536056609751218">只限網頁的 HTML 部分</translation> <translation id="4798236378408895261">附加<ph name="BEGIN_LINK" />藍牙記錄<ph name="END_LINK" /> (Google 內部)</translation> <translation id="4801448226354548035">隱藏帳戶</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">自動下載</translation> <translation id="5653154844073528838">你有 <ph name="PRINTER_COUNT" /> 部儲存咗嘅打印機。</translation> <translation id="5656845498778518563">傳送意見給 Google</translation> +<translation id="5657156137487675418">允許所有 Cookie</translation> <translation id="5657667036353380798">這個外部擴充功能需要安裝 <ph name="MINIMUM_CHROME_VERSION" /> 版本以上的 Chrome 瀏覽器。</translation> <translation id="5658415415603568799">為提高安全性,Smart Lock 將會在 20 小時後要求您輸入密碼。</translation> <translation id="5659593005791499971">電郵</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">最小化</translation> <translation id="5942964813783878922">完成更新後,您的 <ph name="DEVICE_TYPE" /> 將會重新啟動。日後的軟件及安全性更新將會自動安裝。</translation> <translation id="5944869793365969636">掃瞄二維條碼</translation> -<translation id="5945188205370098537">傳送使用情況和診斷資料。自動將診斷、裝置及應用程式的使用情況資料傳送至 Google,協助改善您的 Android 使用體驗。這些資料將有助改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。如果已開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至您的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">報告 ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">無法剖析檔案</translation> <translation id="5955282598396714173">您的密碼已過期。如要變更密碼,請先登出然後重新登入。</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">裝置位置</translation> <translation id="6186394685773237175">找不到被盜用的密碼</translation> <translation id="6195693561221576702">無法在此裝置上設定離線示範模式。</translation> +<translation id="6196640612572343990">封鎖第三方 Cookie</translation> <translation id="6196854373336333322">您的 Proxy 設定已受到擴充功能「<ph name="EXTENSION_NAME" />」控制,該擴充功能可變更、中斷、或監視您在網上的行為。如果您不確定這項變更為何發生,建議您停用該擴充功能。</translation> <translation id="6198102561359457428">登出然後再次登入…</translation> <translation id="6198252989419008588">變更 PIN</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">讀取已登入裝置清單</translation> <translation id="7120865473764644444">無法連線至同步處理伺服器,正在重試…</translation> <translation id="7121362699166175603">清除記錄和網址列中的自動完成資料。您的 Google 帳戶在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的瀏覽記錄。</translation> -<translation id="7121389946694989825">傳送使用情況和診斷資料。此裝置目前會自動將診斷、裝置及應用程式的使用情況資料傳送至 Google。這些資料不會用來識別您子女的身分,而是用於改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。如果已為子女開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至其 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">開發人員模式</translation> <translation id="7121728544325372695">智能破折號</translation> <translation id="7123360114020465152">已不再支援</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{將分頁移至新視窗}other{將分頁移至新視窗}}</translation> <translation id="8179976553408161302">Enter 鍵</translation> <translation id="8180239481735238521">頁面</translation> -<translation id="8180294223783876911">傳送使用情況和診斷資料。此裝置目前會自動將診斷、裝置及應用程式的使用情況資料傳送至 Google。這些資料將有助改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。如果已開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至您的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">「<ph name="EXTENSION" />」可以讀取和刪除已勾選位置中的圖片、影片和音效檔案。</translation> <translation id="8181215761849004992">無法加入網域。請檢查您的帳戶並查看您是否有足夠權限新增裝置。</translation> <translation id="8182105986296479640">應用程式無回應。</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">讓「訊息」向您傳送通知並預設記住這台電腦<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="8204129288640092672">您的家長已封鎖「<ph name="APP_NAME" />」。請要求家長授權使用此應用程式。</translation> <translation id="820568752112382238">最常瀏覽的網站</translation> -<translation id="8206581664590136590">傳送使用情況和診斷資料。自動將診斷、裝置及應用程式的使用情況資料傳送至 Google,協助改善您子女的 Android 使用體驗。這些資料不會用來識別您子女的身分,而是用於改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。如果已為子女開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至其 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">藍調</translation> <translation id="8206859287963243715">蜂窩</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{正在進行一項下載}other{正在進行多項下載}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Google 帳戶</translation> <translation id="8912793549644936705">延伸</translation> <translation id="8912810933860534797">啟用自動掃瞄</translation> -<translation id="891365694296252935">傳送使用情況和診斷資料。此裝置目前會自動將診斷、裝置及應用程式的使用情況資料傳送至 Google。這些資料不會用來識別您子女的身分,而是用於改善系統和應用程式穩定性以及其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。擁有者可強制執行此設定。如果已為子女開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至其 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">正在載入建議</translation> <translation id="8916476537757519021">無痕模式子頁框:<ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">正在驗證您的安全密鑰…</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">啟動應用程式</translation> <translation id="9102610709270966160">啟用擴充程式</translation> <translation id="9103868373786083162">按下即可返回上一頁,內容選單會顯示記錄</translation> -<translation id="9104396740804929809">傳送使用情況和診斷資料。自動將診斷、裝置及應用程式的使用情況資料傳送至 Google,協助改善您的 Android 使用體驗。這些資料將有助改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。擁有者可強制執行此設定。擁有者可選擇是否將此裝置的診斷和使用情況資料傳送給 Google。如果已開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至您的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">如要釋出空間,請刪除裝置儲存空間內的檔案。</translation> <translation id="9109283579179481106">連線至流動網絡</translation> <translation id="9111102763498581341">解鎖</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 3fd3d28..de9654b2 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -573,8 +573,6 @@ <translation id="177336675152937177">代管應用程式資料</translation> <translation id="1776712937009046120">新增使用者</translation> <translation id="1776883657531386793"><ph name="OID" />:<ph name="INFO" /></translation> -<translation id="1777310661937894236">這個裝置是由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 所管理。 - 請按 [下一步] 繼續登入你的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帳戶。</translation> <translation id="1779652936965200207">請在「<ph name="DEVICE_NAME" />」上輸入以下密碼金鑰:</translation> <translation id="177989070088644880">應用程式 (<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">關閉群組</translation> @@ -887,7 +885,6 @@ <translation id="2202898655984161076">列出印表機清單時發生問題,你的部分印表機尚未使用 <ph name="CLOUD_PRINT_NAME" /> 完成註冊。</translation> <translation id="2203682048752833055"><ph name="BEGIN_LINK" />網址列<ph name="END_LINK" />中使用的搜尋引擎</translation> <translation id="2204034823255629767">讀取及變更你輸入的任何設定</translation> -<translation id="220792432208469595">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。這項設定是由裝置擁有者執行。如果你的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到你的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="220858061631308971">請在「<ph name="DEVICE_NAME" />」上輸入以下 PIN 碼:</translation> <translation id="2212565012507486665">允許 Cookie</translation> <translation id="2213140827792212876">移除共用設定</translation> @@ -1342,7 +1339,6 @@ <translation id="2804043232879091219">無法開啟替代瀏覽器</translation> <translation id="2804667941345577550">系統會將你登出這個網站 (這項操作會套用到所有已開啟的分頁)。</translation> <translation id="2804680522274557040">攝影機已關閉</translation> -<translation id="2805539617243680210">大功告成!</translation> <translation id="2805646850212350655">Microsoft 加密檔案系統</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2805770823691782631">其他詳細資訊</translation> @@ -2020,6 +2016,7 @@ <translation id="3742055079367172538">已拍攝螢幕截圖</translation> <translation id="3742666961763734085">找不到使用該名稱的機構單位,請再試一次。</translation> <translation id="3744111561329211289">背景同步處理</translation> +<translation id="3747077776423672805">如要移除應用程式,請依序前往 [設定] > [Google Play 商店] > [管理 Android 偏好設定] > [應用程式] 或 [應用程式管理員],然後輕觸你要解除安裝的應用程式 (你可能需要向左或向右滑動才能找出所需應用程式)。接著,輕觸 [解除安裝] 或 [停用]。</translation> <translation id="3748026146096797577">尚未連線</translation> <translation id="3752582316358263300">確定...</translation> <translation id="3752673729237782832">我的裝置</translation> @@ -2739,7 +2736,6 @@ <translation id="4785719467058219317">你目前使用的安全金鑰並未在這個網站註冊</translation> <translation id="4788092183367008521">請檢查你的網路連線,然後再試一次。</translation> <translation id="4792711294155034829">回報問題(&R)...</translation> -<translation id="4795022432560487924">傳送使用狀況與診斷資料。讓系統自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google,協助改善你的 Android 使用體驗。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。這項設定是由裝置擁有者執行。擁有者可選擇將這個裝置的診斷資料與使用狀況資料傳送給 Google。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="479536056609751218">僅限網頁的 HTML 部分</translation> <translation id="4798236378408895261">附加<ph name="BEGIN_LINK" />藍牙記錄<ph name="END_LINK" /> (Google 內部使用)</translation> <translation id="4801448226354548035">隱藏帳戶</translation> @@ -3359,6 +3355,7 @@ <translation id="5649053991847567735">自動下載</translation> <translation id="5653154844073528838">你有 <ph name="PRINTER_COUNT" /> 台已儲存的印表機。</translation> <translation id="5656845498778518563">提供意見給 Google</translation> +<translation id="5657156137487675418">允許所有 Cookie</translation> <translation id="5657667036353380798">這個外部擴充功能需要安裝 <ph name="MINIMUM_CHROME_VERSION" /> 版本以上的 Chrome 瀏覽器。</translation> <translation id="5658415415603568799">為了提升安全性,Smart Lock 會在經過 20 小時後要求您輸入密碼。</translation> <translation id="5659593005791499971">電子郵件</translation> @@ -3565,7 +3562,6 @@ <translation id="5941711191222866238">縮到最小</translation> <translation id="5942964813783878922">完成更新後,你的 <ph name="DEVICE_TYPE" /> 將會重新啟動。日後系統會自動安裝新版軟體和安全性更新。</translation> <translation id="5944869793365969636">掃描 QR 圖碼</translation> -<translation id="5945188205370098537">傳送使用狀況與診斷資料。讓系統自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google,協助改善你的 Android 使用體驗。這些資料將有助於系統和應用程式提高穩定性及做出其他改善。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。如果你的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到你的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">報表 ID <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">無法剖析檔案</translation> <translation id="5955282598396714173">你的密碼已過期。如要變更密碼,請先登出然後重新登入。</translation> @@ -3749,6 +3745,7 @@ <translation id="6185132558746749656">裝置位置</translation> <translation id="6186394685773237175">找不到遭外洩的密碼</translation> <translation id="6195693561221576702">這個裝置無法設為離線示範模式。</translation> +<translation id="6196640612572343990">封鎖第三方 Cookie</translation> <translation id="6196854373336333322">您的 Proxy 設定已受到擴充功能「<ph name="EXTENSION_NAME" />」控制,該擴充功能可變更、中斷、或監視您在網路上的行為。如果您不確定這項變更的發生原因,建議您停用該擴充功能。</translation> <translation id="6198102561359457428">登出然後再次登入...</translation> <translation id="6198252989419008588">變更 PIN 碼</translation> @@ -4412,7 +4409,6 @@ <translation id="711902386174337313">讀取已登入裝置清單</translation> <translation id="7120865473764644444">無法連上同步處理伺服器。重試中...</translation> <translation id="7121362699166175603">將歷史記錄和自動即時查詢從網址列中清除。你的 Google 帳戶可能會儲存其他形式的瀏覽記錄,請參閱 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />。</translation> -<translation id="7121389946694989825">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">開發人員模式</translation> <translation id="7121728544325372695">智慧型破折號</translation> <translation id="7123360114020465152">已停止支援</translation> @@ -5194,7 +5190,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{將分頁移到新視窗}other{將分頁移到新視窗}}</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8180239481735238521">頁面</translation> -<translation id="8180294223783876911">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。如果你的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到你的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">「<ph name="EXTENSION" />」可以讀取及刪除勾選位置中的圖片、影片和音訊檔案。</translation> <translation id="8181215761849004992">無法加入網域。請檢查你的帳戶是否有新增裝置的必要權限。</translation> <translation id="8182105986296479640">應用程式無回應。</translation> @@ -5216,7 +5211,6 @@ <translation id="8203732864715032075">傳送通知給你,並預設記住這部電腦,以便在收到簡訊時傳送通知。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="8204129288640092672">你的家長已封鎖「<ph name="APP_NAME" />」。如要使用這個應用程式,請要求家長授予權限。</translation> <translation id="820568752112382238">最常造訪的網站</translation> -<translation id="8206581664590136590">傳送使用狀況與診斷資料。讓系統自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google,協助改善你的 Android 使用體驗。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">藍調</translation> <translation id="8206859287963243715">手機</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{正在執行一項下載作業}other{正在執行多項下載作業}}</translation> @@ -5756,7 +5750,6 @@ <translation id="8912362522468806198">Google 帳戶</translation> <translation id="8912793549644936705">延伸</translation> <translation id="8912810933860534797">啟用自動掃描</translation> -<translation id="891365694296252935">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。這項設定是由裝置擁有者執行。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">正在載入建議</translation> <translation id="8916476537757519021">無痕模式子頁框:<ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">正在驗證安全金鑰...</translation> @@ -5893,7 +5886,6 @@ <translation id="9101691533782776290">啟動應用程式</translation> <translation id="9102610709270966160">啟用擴充功能</translation> <translation id="9103868373786083162">按下即可返回,內容選單會顯示歷史記錄</translation> -<translation id="9104396740804929809">傳送使用狀況與診斷資料。讓系統自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google,協助改善你的 Android 使用體驗。這些資料將有助於系統和應用程式提高穩定性及做出其他改善。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。這項設定是由裝置擁有者執行。擁有者可選擇將這個裝置的診斷資料與使用狀況資料傳送給 Google。如果你的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到你的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">如要釋出空間,請刪除裝置儲存空間內的檔案</translation> <translation id="9109283579179481106">連線至行動網路</translation> <translation id="9111102763498581341">解除鎖定</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 9609e16..e59b144 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -575,8 +575,6 @@ <translation id="177336675152937177">Idatha esingathiwe yohlelo lokusebenza</translation> <translation id="1776712937009046120">Engeza umsebenzisi</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> -<translation id="1777310661937894236">Le divayisi iphethwe ngu-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />. - Sicela uchofoze "Okulandelayo" ukuze uqhubeke nokungena ngemvume ku-akhawunti yakho ye-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation> <translation id="1779652936965200207">Sicela ufake lo khiye wokundlula ku-"<ph name="DEVICE_NAME" />":</translation> <translation id="177989070088644880">Uhlelo lokusebenza lwe-(<ph name="ANDROID_PACKAGE_NAME" />)</translation> <translation id="1780152987505130652">Vala iqembu</translation> @@ -890,7 +888,6 @@ <translation id="2202898655984161076">Kube nenkinga yokufaka kuhlu amaphrinta. Amanye amaphrinta wakho kungenzeka angabhaliswa ngempumelelo nge-<ph name="CLOUD_PRINT_NAME" />.</translation> <translation id="2203682048752833055">Injini yokusesha esetshenziswe <ph name="BEGIN_LINK" />kwibha lekheli<ph name="END_LINK" /></translation> <translation id="2204034823255629767">Funda futhi ushintshe noma yini oyithayiphayo</translation> -<translation id="220792432208469595">Thumela idatha yokusetshenziswa neyokuxilonga. Le divayisi manje ithumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kwedatha ku-Google. Lokhu kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Lesi silungiselelo siphoqelelwa umnikazi. Uma isilungiselelo sakho esingeziwe somsebenzi wewebhu nowohlelo lokusebenza sivuliwe, le datha ingalondolozwa ku-akhawunti yakho ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="220858061631308971">Sicela ufake le phinikhodi ku-"<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Vumela amakhukhi</translation> <translation id="2213140827792212876">Susa ukwabelana</translation> @@ -1351,7 +1348,6 @@ <translation id="2804043232879091219">Esinye isiphequluli asikwazanga ukuvulwa</translation> <translation id="2804667941345577550">Uzokhishwa kuleli sayithi, kufaka phakathi kumathebhu avuliwe</translation> <translation id="2804680522274557040">Ikhamera ivaliwe</translation> -<translation id="2805539617243680210">Usumi ngomumo!</translation> <translation id="2805646850212350655">Ukubethelwa kwe-Microsift kwesistimu yefayela</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> <translation id="2805770823691782631">Imininingwane engeziwe</translation> @@ -2032,6 +2028,7 @@ <translation id="3742055079367172538">Kuthathwe isithombe-skrini</translation> <translation id="3742666961763734085">Ayikwazi ukuthola iyunithi yenhlangano. Sicela uzame futhi.</translation> <translation id="3744111561329211289">Ukuvumelanisa ngemuva</translation> +<translation id="3747077776423672805">Ukuze ususe izinhlelo zokusebenza, iya kuzilungiselelo > isiphathi sezinhlelo zokusebenza noma uhlelo lokusebenza. Bese uthephe uhlelo lokusebenza ofuna ukulikhipha (ungadinga ukuswayiphela ngakwesokudla noma ngakwesokunxele ukuze uthole uhlelo lokusebenza). Bes uthephe okuthi Khipha noma Khubaza.</translation> <translation id="3748026146096797577">Akuxhunyiwe</translation> <translation id="3752582316358263300">OK...</translation> <translation id="3752673729237782832">Amadivayisi wami</translation> @@ -2754,7 +2751,6 @@ <translation id="4785719467058219317">Usebenzisa ukhiye wokuvikela ongabhalisiwe ngale webhusayithi</translation> <translation id="4788092183367008521">Sicela uhlole ukuxhumana kwenethiwekhi yakho bese uyazama futhi.</translation> <translation id="4792711294155034829">Bika inkinga...</translation> -<translation id="4795022432560487924">Thumela idatha yokusetshenziswa neyokuxilonga. Siza ukuthuthukisa umuzwa we-Android wengane yakho ngokuthumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kohlelo lokusebenza ku-Google. Lokhu ngeke kusetshenziselwe ukukhomba ingane yakho futhi kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Lesi silungiselelo siphoqelelwa umnikazi. Umnikazi angakhetha ukuthumela idatha yokuxilonga neyokusetshenziswa yale divayisi ku-Google. Uma isilungiselelo esingeziwe sewebhu nesohlelo lokusebenza sivulelwe ingane yakho, le datha ingalondolozwa ku-akhawunti yakhe ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="479536056609751218">Ikhasi lewebhu, i-HTML kuphela</translation> <translation id="4798236378408895261">Namthisela <ph name="BEGIN_LINK" />Amalogu e-Bluetooth<ph name="END_LINK" /> (kwangaphakathi kwe-Google)</translation> <translation id="4801448226354548035">Fihla ama-akhawunti</translation> @@ -3591,7 +3587,6 @@ <translation id="5941711191222866238">Nciphisa</translation> <translation id="5942964813783878922">I-<ph name="DEVICE_TYPE" /> yakho izoqalisa kabusha ngemuva kwesibuyekezo. Isofthiwe yangakusasa nezibuyekezo zokuphepha zizofakwa ngokuzenzakalelayo.</translation> <translation id="5944869793365969636">Skena ikhodi ye-QR</translation> -<translation id="5945188205370098537">Thumela idatha yokusetshenziswa neyokuxilonga. Siza ukuthuthukisa umuzwa wakho we-Android ngokuthumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kohlelo lokusebenza ku-Google. Lokhu kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Uma isilungiselelo sakho esingeziwe somsebenzi wewebhu nowohlelo lokusebenza sivuliwe, le datha ingalondolozwa ku-akhawunti yakho ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="5946591249682680882">I-ID yokubika ye-<ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5949544233750246342">Ayikwazi ukudlulisa ifayela</translation> <translation id="5955282598396714173">Iphasiwedi yakho iphelelwe isikhathi. Sicela uphume ngemvume bese ungena ngemvume futhi ukuze uyishintshe.</translation> @@ -3777,6 +3772,7 @@ <translation id="6185132558746749656">Indawo Yedivayisi</translation> <translation id="6186394685773237175">Awekho amaphasiwedi onakalisiwe atholakele</translation> <translation id="6195693561221576702">Le divayisi ayikwazi ukusethwa kumodi yedemo engaxhunyiwe ku-inthanethi.</translation> +<translation id="6196640612572343990">Vimba amakhukhi enkampani yangaphandle</translation> <translation id="6196854373336333322">Isandiso se-"<ph name="EXTENSION_NAME" />" sithathe ulawulo lwezilungiselelo zakho zommeleli, okusho ukuthi ingaguqula, iphule, noma ilalele kungafanele noma yini oyenza ku-inthanethi. Uma ungaqinisekile ngokuthi kungani lokhu kuguqulwa kwenzekile, kungenzeka ukuthi awukudingi.</translation> <translation id="6198102561359457428">Phuma ngemvume bese ungena ngemvume futhi...</translation> <translation id="6198252989419008588">Guqula iphinikhodi</translation> @@ -4443,7 +4439,6 @@ <translation id="711902386174337313">Funda uhlu lwamadivayisi wakho angene ngemvume</translation> <translation id="7120865473764644444">Ayikwazanga ukuxhumeka kuseva yokuvumelanisa. Iyazama futhi...</translation> <translation id="7121362699166175603">Isula umlando nokuqedelelwa okuzenzakalelayo kubha yekheli. I-akhawunti yakho ye-Google ingaba namanye amafomu omlando okuphequlula ku-<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> -<translation id="7121389946694989825">Thumela idatha yokusetshenziswa neyokuxilonga. Le divayisi manje ithumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kwedatha ku-Google. Lokhu ngeke kusetshenziselwe ukukhomba ingane yakho futhi kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Uma isilungiselelo esingeziwe sewebhu nesohlelo lokusebenza sivulelwe ingane yakho, le datha ingalondolozwa ku-akhawunti yakhe ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="7121438501124788993">Imodi Yonjiniyela</translation> <translation id="7121728544325372695">Ama-Smart Dash</translation> <translation id="7123360114020465152">Akusasekelwa</translation> @@ -4558,7 +4553,6 @@ <translation id="7280041992884344566">Kuvele iphutha ngenkathi i-Chrome iseshela isofthiwe enobungozi</translation> <translation id="7280649757394340890">Izilungiselelo zezwi zombhalo ukuya kunkulumo</translation> <translation id="7280877790564589615">Imvume iceliwe</translation> -<translation id="7281268427852119151">Sebenzisa umlando wakho wokuphequlula ukuze wenze Usesho ngokwezifiso, izikhangiso namanye amasevisi e-Google</translation> <translation id="7282992757463864530">Ibha yolwazi</translation> <translation id="7287143125007575591">Ukufinyelela kunqatshelwe.</translation> <translation id="7287411021188441799">Buyisela ingemuva elizenzakalelayo</translation> @@ -5232,7 +5226,6 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{Hambisa ithebhu kuwindi elisha}one{Hambisa amathebhu kuwindi elisha}other{Hambisa amathebhu kuwindi elisha}}</translation> <translation id="8179976553408161302">Faka</translation> <translation id="8180239481735238521">ikhasi</translation> -<translation id="8180294223783876911">Thumela idatha yokusetshenziswa neyokuxilonga. Le divayisi manje ithumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kwedatha ku-Google. Lokhu kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Uma isilungiselelo sakho esingeziwe somsebenzi wewebhu nowohlelo lokusebenza sivuliwe, le datha ingalondolozwa ku-akhawunti yakho ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="8180786512391440389">I-"<ph name="EXTENSION" />" ingafunda iphinde isuse izithombe, ividiyo, namafayela womsindo kuzindawo ezithikhiwe.</translation> <translation id="8181215761849004992">Ayikwazi ukujoyina isizinda. Hlola i-akhawunti yakho ukuze ubone uma unezimvume ezanele ukuze ungeze amadivayisi.</translation> <translation id="8182105986296479640">Uhlelo lokusebenza aluphenduli.</translation> @@ -5254,7 +5247,6 @@ <translation id="8203732864715032075">Ikthumela izaziso nokuzenzakalelayo ukukhumbula le khompyutha ngemilayezo. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="8204129288640092672">I-"<ph name="APP_NAME" />" ivinjelwe umzali wakho. Cela umzali wakho imvume yokusebenzisa lolu hlelo lokusebenza.</translation> <translation id="820568752112382238">Amasayithi avakashelwe kaningi</translation> -<translation id="8206581664590136590">Thumela idatha yokusetshenziswa neyokuxilonga. Siza ukuthuthukisa umuzwa we-Android wengane yakho ngokuthumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kohlelo lokusebenza ku-Google. Lokhu ngeke kusetshenziselwe ukukhomba ingane yakho futhi kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Uma isilungiselelo esingeziwe sewebhu nesohlelo lokusebenza sivulelwe ingane yakho, le datha ingalondolozwa ku-akhawunti yakhe ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="8206745257863499010">I-Bluesy</translation> <translation id="8206859287963243715">Iselula</translation> <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Ukulanda kuyaqhubeka}one{Ukulanda kuyaqhubeka}other{Ukulanda kuyaqhubeka}}</translation> @@ -5800,7 +5792,6 @@ <translation id="8912362522468806198">I-Akhawunti ye-Google</translation> <translation id="8912793549644936705">Nweba</translation> <translation id="8912810933860534797">Nika amandla ukuskena ngokuzenzakalela</translation> -<translation id="891365694296252935">Thumela idatha yokusetshenziswa neyokuxilonga. Le divayisi manje ithumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kwedatha ku-Google. Lokhu ngeke kusetshenziselwe ukukhomba ingane yakho futhi kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza kanye nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Lesi silungiselelo siphoqelelwa umnikazi. Uma umsebenzi ongeziwe wewebhu nowohlelo lokusebenza uvulelwe ingane yakho le datha ingalondolozwa ku-akhawunti yakhe ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="8915370057835397490">Ilayisha isiphakamiso</translation> <translation id="8916476537757519021">I-Incognito Subframe: <ph name="SUBFRAME_SITE" /></translation> <translation id="8921366488406707015">Kuqinisekiswa ukhiye wakho wokuqinisekisa ubunikazi...</translation> @@ -5937,7 +5928,6 @@ <translation id="9101691533782776290">Qalisa uhlelo lokusebenza</translation> <translation id="9102610709270966160">Nika amandla isandiso</translation> <translation id="9103868373786083162">Cindezela ukuze ubuyele emuva, kumenyu yokuqukethwe ukuze ubone umlando</translation> -<translation id="9104396740804929809">Thumela idatha yokusetshenziswa neyokuxilonga. Siza ukuthuthukisa umuzwa wakho we-Android ngokuthumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kohlelo lokusebenza ku-Google. Lokhu kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Lesi silungiselelo siphoqelelwa umnikazi. Umnikazi angakhetha ukuthumela idatha yokuxilonga neyokusetshenziswa yale divayisi ku-Google. Uma isilungiselelo sakho esingeziwe somsebenzi wewebhu nowohlelo lokusebenza sivuliwe, le datha ingalondolozwa ku-akhawunti yakho ye-Google. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">Ukuze ukhulule isikhala, susa amafayela kusukela kusitoreji sedivayisi.</translation> <translation id="9109283579179481106">Xhuma kunethiwekhi yeselula</translation> <translation id="9111102763498581341">Vula</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index b00a9c3f..b2505779 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -320,21 +320,48 @@ <message name="IDS_SETTINGS_CHECK_PASSWORDS" desc="Name for the check passwords subsection and settings entry used to perform a password bulk check."> Check passwords </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_CANCELED" desc="Message for when the password check was canceled by the user."> + Canceled + </message> <message name="IDS_SETTINGS_CHECKED_PASSWORDS" desc="Title above amount of found compromised passwords after password bulk check."> Checked passwords </message> <message name="IDS_SETTINGS_CHECK_PASSWORDS_DESCRIPTION" desc="Explanation of the passwords bulk check feature found within the password settings."> Keep your passwords safe from data breaches and other security issues </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE" desc="Error message when the password check can't be completed because the user is offline."> + Chrome can't check your passwords. Try checking your internet connection. + </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT" desc="Error message when the password check can't be completed because the user is not signed in."> + Chrome can check your passwords when you sign in with your Google Account. + </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS" desc="Error message when the password check can't be completed since no passwords could be checked."> + No saved passwords. Chrome can check your passwords when you save them. + </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_TOO_MANY_PASSWORDS" desc="Error message when the password check can't be completed since the user saved too many passwords."> + Chrome can't check your passwords because there are too many. + </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT" desc="Error message when the password check can't be completed since the user hit the quota limit."> + Chrome can't check your passwords. Try again tomorrow. + </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC" desc="Error message when the password check can't be completed for an unspecified reason."> + Chrome can't check your passwords. + </message> <message name="IDS_SETTINGS_COMPROMISED_PASSWORDS_COUNT" desc="Number of compromised passwords present in the database"> {COUNT, plural, =0 {No compromised passwords found} =1 {{COUNT} compromised password} other {{COUNT} compromised passwords}} </message> + <message name="IDS_SETTINGS_LEAKED_PASSWORDS_COUNT" desc="Number of compromised passwords found during bulk check."> + <ph name="COUNT">$1<ex>5</ex></ph> compromised passwords + </message> <message name="IDS_SETTINGS_CHECK_PASSWORDS_AGAIN" desc="Button to start bulk password check manually in passwords check section."> Check again </message> + <message name="IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS" desc="Text for a label showing how many passwords were checked so far and how many passwords need to be checked in total."> + Checking passwords (<ph name="CHECKED_PASSWORDS">$1<ex>6</ex></ph> of <ph name="TOTAL_PASSWORDS">$2<ex>31</ex></ph>)… + </message> <message name="IDS_SETTINGS_PASSWORDS_JUST_NOW" desc="Label shown when a compromised credential was found less than a minute ago"> Just now </message>
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_CANCELED.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_CANCELED.png.sha1 new file mode 100644 index 0000000..1d6ecdd --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_CANCELED.png.sha1
@@ -0,0 +1 @@ +1b9d821e5ff2b0fcbf93c120f7e604f61eb6cb63 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC.png.sha1 new file mode 100644 index 0000000..c776781 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC.png.sha1
@@ -0,0 +1 @@ +4de6e19b4772e8e130b87952ad8fcc10b79054e7 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS.png.sha1 new file mode 100644 index 0000000..d62977b --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS.png.sha1
@@ -0,0 +1 @@ +ce276f9b31384860c1369b11dd2844ed01d988d6 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE.png.sha1 new file mode 100644 index 0000000..8e7a0ba --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE.png.sha1
@@ -0,0 +1 @@ +014f118ca023ad004523e7860746aae0a96f981d \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT.png.sha1 new file mode 100644 index 0000000..de027c1 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT.png.sha1
@@ -0,0 +1 @@ +7685361448310ce06f9b704483d1ddd16721ee62 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT.png.sha1 new file mode 100644 index 0000000..e6436aa --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT.png.sha1
@@ -0,0 +1 @@ +25b0c6ed74bd2313c5b7f954a7d34a0ec46cf2d7 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_TOO_MANY_PASSWORDS.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_TOO_MANY_PASSWORDS.png.sha1 new file mode 100644 index 0000000..efcb8b5 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_ERROR_TOO_MANY_PASSWORDS.png.sha1
@@ -0,0 +1 @@ +31e9ccf14e6882a56ffffac5d6ee583e756b7136 \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS.png.sha1 new file mode 100644 index 0000000..e03ef95 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS.png.sha1
@@ -0,0 +1 @@ +d5a0c340e5f407e3347eb3323bd9c08b85c09f95 \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 1cf328f..c1289f5 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -686,6 +686,8 @@ "media/cast_mirroring_service_host.h", "media/cast_remoting_connector.cc", "media/cast_remoting_connector.h", + "media/feeds/media_feeds_contents_observer.cc", + "media/feeds/media_feeds_contents_observer.h", "media/feeds/media_feeds_service.cc", "media/feeds/media_feeds_service.h", "media/feeds/media_feeds_service_factory.cc", @@ -2867,6 +2869,8 @@ "notifications/scheduler/display_agent_android.h", "notifications/scheduler/notification_background_task_scheduler_android.cc", "notifications/scheduler/notification_background_task_scheduler_android.h", + "offline_pages/prefetch/notifications/prefetch_notification_service_bridge.cc", + "offline_pages/prefetch/notifications/prefetch_notification_service_bridge.h", "offline_pages/prefetch/notifications/prefetch_notification_service_factory.cc", "offline_pages/prefetch/notifications/prefetch_notification_service_factory.h", "optimization_guide/android/optimization_guide_bridge.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index d0a41547..fca23275 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3275,6 +3275,15 @@ #endif #if defined(OS_ANDROID) + {"prefetch-notification-scheduling-integration", + flag_descriptions::kPrefetchNotificationSchedulingIntegrationName, + flag_descriptions::kPrefetchNotificationSchedulingIntegrationDescription, + kOsAndroid, + FEATURE_VALUE_TYPE( + chrome::android::kPrefetchNotificationSchedulingIntegration)}, +#endif + +#if defined(OS_ANDROID) {"update-notification-scheduling-show-immediately", flag_descriptions::kUpdateNotificationServiceImmediateShowOptionName, flag_descriptions:: @@ -4925,6 +4934,12 @@ FEATURE_VALUE_TYPE(media::kMediaFoundationVideoCapture)}, #endif // defined(OS_WIN) +#if defined(OS_CHROMEOS) + {"scanning-ui", flag_descriptions::kScanningUIName, + flag_descriptions::kScanningUIDescription, kOsCrOS, + FEATURE_VALUE_TYPE(chromeos::features::kScanningUI)}, +#endif // defined(OS_CHROMEOS) + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/DEPS b/chrome/browser/android/DEPS index 5f18710c..460fc546 100644 --- a/chrome/browser/android/DEPS +++ b/chrome/browser/android/DEPS
@@ -2,6 +2,7 @@ "-components/devtools_bridge", "+cc/layers/layer.h", "+chrome/android/test_support_jni_headers", + "+chrome/lib/image_fetcher/public/android/jni_headers", "+chrome_jni_registration/chrome_jni_registration.h", "+device/vr/buildflags/buildflags.h", "+media/gpu",
diff --git a/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.cc b/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.cc index 148bd95..ec9924a 100644 --- a/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.cc +++ b/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.cc
@@ -57,6 +57,26 @@ ui_controller_->OnValueChanged(identifier, value); } +// TODO(b/145043394): refactor delegate methods into a single SetValue() where +// possible. +void AssistantGenericUiDelegate::OnCalendarPopupDateChanged( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& jcaller, + const base::android::JavaParamRef<jstring>& jmodel_identifier, + const base::android::JavaParamRef<jobject>& jvalue) { + std::string identifier; + if (jmodel_identifier) { + base::android::ConvertJavaStringToUTF8(env, jmodel_identifier, &identifier); + } + + ValueProto value; + if (jvalue) { + value = ui_controller_android_utils::ToNativeValue(env, jvalue); + } + + ui_controller_->OnValueChanged(identifier, value); +} + base::android::ScopedJavaGlobalRef<jobject> AssistantGenericUiDelegate::GetJavaObject() { return java_assistant_generic_ui_delegate_;
diff --git a/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.h b/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.h index 1ee42630..ff0aac40 100644 --- a/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.h +++ b/chrome/browser/android/autofill_assistant/assistant_generic_ui_delegate.h
@@ -32,6 +32,16 @@ const base::android::JavaParamRef<jstring>& jmodel_identifier, const base::android::JavaParamRef<jobject>& jvalue); + // The date in a calendar popup has changed. |jmodel_identifier| is the model + // identifier that the new date should be written to. |jvalue| is a Java + // AssistantValue containing a single AssistantDateTime with the new date, or + // nullptr if the date was cleared. + void OnCalendarPopupDateChanged( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& jcaller, + const base::android::JavaParamRef<jstring>& jmodel_identifier, + const base::android::JavaParamRef<jobject>& jvalue); + base::android::ScopedJavaGlobalRef<jobject> GetJavaObject(); private:
diff --git a/chrome/browser/android/autofill_assistant/interaction_handler_android.cc b/chrome/browser/android/autofill_assistant/interaction_handler_android.cc index 4f3444c6..a07268a 100644 --- a/chrome/browser/android/autofill_assistant/interaction_handler_android.cc +++ b/chrome/browser/android/autofill_assistant/interaction_handler_android.cc
@@ -154,6 +154,54 @@ proto.allow_multiselect(), jidentifier, jdelegate); } +void ShowCalendarPopup(base::WeakPtr<UserModel> user_model, + const ShowCalendarPopupProto& proto, + base::android::ScopedJavaGlobalRef<jobject> jcontext, + base::android::ScopedJavaGlobalRef<jobject> jdelegate) { + if (!user_model) { + return; + } + + JNIEnv* env = base::android::AttachCurrentThread(); + auto initial_date = user_model->GetValue(proto.date_model_identifier()); + if (initial_date.has_value() && initial_date->dates().values_size() != 1) { + DVLOG(2) << "Failed to show calendar popup: date_model_identifier must be " + "empty or contain single date, but was " + << *initial_date; + return; + } + + auto min_date = user_model->GetValue(proto.min_date_model_identifier()); + if (!min_date.has_value() || min_date->dates().values_size() != 1) { + DVLOG(2) << "Failed to show calendar popup: min_date not found or invalid " + "in user model at " + << proto.min_date_model_identifier(); + return; + } + + auto max_date = user_model->GetValue(proto.max_date_model_identifier()); + if (!max_date.has_value() || max_date->dates().values_size() != 1) { + DVLOG(2) << "Failed to show calendar popup: max_date not found or invalid " + "in user model at " + << proto.max_date_model_identifier(); + return; + } + + jboolean jsuccess = Java_AssistantViewInteractions_showCalendarPopup( + env, jcontext, + initial_date.has_value() + ? ui_controller_android_utils::ToJavaValue(env, *initial_date) + : nullptr, + ui_controller_android_utils::ToJavaValue(env, *min_date), + ui_controller_android_utils::ToJavaValue(env, *max_date), + base::android::ConvertUTF8ToJavaString(env, + proto.date_model_identifier()), + jdelegate); + if (!jsuccess) { + DVLOG(2) << "Failed to show calendar popup: JNI call failed"; + } +} + base::Optional<EventHandler::EventKey> CreateEventKeyFromProto( const EventProto& proto, JNIEnv* env, @@ -252,6 +300,17 @@ return base::Optional<InteractionHandlerAndroid::InteractionCallback>( base::BindRepeating(&TryEndAction, basic_interactions->GetWeakPtr(), proto.end_action())); + case CallbackProto::kShowCalendarPopup: + if (proto.show_calendar_popup().date_model_identifier().empty()) { + VLOG(1) << "Error creating ShowCalendarPopup interaction: " + "date_model_identifier not set"; + return base::nullopt; + } + return base::Optional<InteractionHandlerAndroid::InteractionCallback>( + base::BindRepeating(&ShowCalendarPopup, user_model->GetWeakPtr(), + proto.show_calendar_popup(), jcontext, + jdelegate)); + break; case CallbackProto::KIND_NOT_SET: VLOG(1) << "Error creating interaction: kind not set"; return base::nullopt;
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc index 828531c..3cdbe65 100644 --- a/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc +++ b/chrome/browser/android/autofill_assistant/ui_controller_android_utils.cc
@@ -6,6 +6,7 @@ #include "base/android/jni_array.h" #include "base/android/jni_string.h" #include "chrome/android/features/autofill_assistant/jni_headers/AssistantColor_jni.h" +#include "chrome/android/features/autofill_assistant/jni_headers/AssistantDateTime_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/AssistantDialogButton_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/AssistantDimension_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/AssistantInfoPopup_jni.h" @@ -126,6 +127,16 @@ NOTREACHED(); return nullptr; } + case ValueProto::kDates: { + auto jlist = Java_AssistantValue_createDateTimeList(env); + for (const auto& value : proto.dates().values()) { + Java_AssistantValue_addDateTimeToList( + env, jlist, + Java_AssistantDateTime_Constructor(env, value.year(), value.month(), + value.day(), 0, 0, 0)); + } + return Java_AssistantValue_createForDateTimes(env, jlist); + } case ValueProto::KIND_NOT_SET: return Java_AssistantValue_create(env); } @@ -136,33 +147,47 @@ ValueProto proto; auto jints = Java_AssistantValue_getIntegers(env, jvalue); if (jints) { + auto* mutable_ints = proto.mutable_ints(); std::vector<int> ints; base::android::JavaIntArrayToIntVector(env, jints, &ints); - proto.mutable_ints(); for (int i : ints) { - proto.mutable_ints()->add_values(i); + mutable_ints->add_values(i); } return proto; } auto jbooleans = Java_AssistantValue_getBooleans(env, jvalue); if (jbooleans) { + auto* mutable_booleans = proto.mutable_booleans(); std::vector<bool> booleans; base::android::JavaBooleanArrayToBoolVector(env, jbooleans, &booleans); - proto.mutable_booleans(); for (auto b : booleans) { - proto.mutable_booleans()->add_values(b); + mutable_booleans->add_values(b); } return proto; } auto jstrings = Java_AssistantValue_getStrings(env, jvalue); if (jstrings) { + auto* mutable_strings = proto.mutable_strings(); std::vector<std::string> strings; base::android::AppendJavaStringArrayToStringVector(env, jstrings, &strings); - proto.mutable_strings(); for (const auto& string : strings) { - proto.mutable_strings()->add_values(string); + mutable_strings->add_values(string); + } + return proto; + } + + auto jdatetimes = Java_AssistantValue_getDateTimes(env, jvalue); + if (jdatetimes) { + auto* mutable_dates = proto.mutable_dates(); + for (int i = 0; i < Java_AssistantValue_getListSize(env, jdatetimes); ++i) { + auto jvalue = Java_AssistantValue_getListAt(env, jdatetimes, i); + DateProto date; + date.set_year(Java_AssistantDateTime_getYear(env, jvalue)); + date.set_month(Java_AssistantDateTime_getMonth(env, jvalue)); + date.set_day(Java_AssistantDateTime_getDay(env, jvalue)); + *mutable_dates->add_values() = date; } return proto; }
diff --git a/chrome/browser/android/lifecycle/BUILD.gn b/chrome/browser/android/lifecycle/BUILD.gn deleted file mode 100644 index 77d9199..0000000 --- a/chrome/browser/android/lifecycle/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2019 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/android/rules.gni") - -android_library("java") { - deps = [ "//third_party/android_deps:androidx_annotation_annotation_java" ] - sources = [ - "java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java", - "java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java", - "java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java", - "java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java", - ] -}
diff --git a/chrome/browser/android/lifecycle/DEPS b/chrome/browser/android/lifecycle/DEPS deleted file mode 100644 index 7cf2601..0000000 --- a/chrome/browser/android/lifecycle/DEPS +++ /dev/null
@@ -1,11 +0,0 @@ -noparent = True - -include_rules = [ - "+base/android", - - "-content/public/android", - "+content/public/android/java/src/org/chromium/content_public", - - # Leaf node, not dependent on other chrome/browser/ code. - "-chrome/browser", -]
diff --git a/chrome/browser/android/lifecycle/OWNERS b/chrome/browser/android/lifecycle/OWNERS deleted file mode 100644 index ec11b3c..0000000 --- a/chrome/browser/android/lifecycle/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -twellington@chromium.org -dtrainor@chromium.org - -# COMPONENT: UI>Browser>Mobile -# OS: Android
diff --git a/chrome/browser/android/profile_key_util.cc b/chrome/browser/android/profile_key_util.cc index 30a8746..44f868c3 100644 --- a/chrome/browser/android/profile_key_util.cc +++ b/chrome/browser/android/profile_key_util.cc
@@ -18,7 +18,7 @@ } // namespace -ProfileKey* GetLastUsedProfileKey() { +ProfileKey* GetLastUsedRegularProfileKey() { ProfileKey* key = ProfileKeyStartupAccessor::GetInstance()->profile_key(); if (!key) key = GetProfile()->GetProfileKey(); @@ -26,4 +26,9 @@ return key; } +// DEPRECATED, use GetLastUsedRegularProfileKey() instead. +ProfileKey* GetLastUsedProfileKey() { + return GetLastUsedRegularProfileKey(); +} + } // namespace android
diff --git a/chrome/browser/android/profile_key_util.h b/chrome/browser/android/profile_key_util.h index 3bc5f51..035319f 100644 --- a/chrome/browser/android/profile_key_util.h +++ b/chrome/browser/android/profile_key_util.h
@@ -17,6 +17,13 @@ // ProfileManager::GetLastUsedProfile() in the same context. If your usecase // cares about different profiles and their keys, then you should plumb through // the correct key instead. +ProfileKey* GetLastUsedRegularProfileKey(); + +// BE WARNED you should only use this if it would have been acceptable to use +// ProfileManager::GetLastUsedProfile() in the same context. If your usecase +// cares about different profiles and their keys, then you should plumb through +// the correct key instead. +// DEPRECATED, use GetLastUsedRegularProfileKey() instead. ProfileKey* GetLastUsedProfileKey(); } // namespace android
diff --git a/chrome/browser/autofill/manual_filling_controller_impl.cc b/chrome/browser/autofill/manual_filling_controller_impl.cc index be3f0aae..d5568673 100644 --- a/chrome/browser/autofill/manual_filling_controller_impl.cc +++ b/chrome/browser/autofill/manual_filling_controller_impl.cc
@@ -294,6 +294,7 @@ return address_controller_.get(); case AccessoryAction::MANAGE_CREDIT_CARDS: return cc_controller_.get(); + case AccessoryAction::TOGGLE_SAVE_PASSWORDS: case AccessoryAction::AUTOFILL_SUGGESTION: case AccessoryAction::COUNT: break; // Intentional failure;
diff --git a/chrome/browser/chromeos/platform_keys/platform_keys.h b/chrome/browser/chromeos/platform_keys/platform_keys.h deleted file mode 100644 index a40a155..0000000 --- a/chrome/browser/chromeos/platform_keys/platform_keys.h +++ /dev/null
@@ -1,258 +0,0 @@ -// Copyright 2014 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_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_H_ -#define CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_H_ - -#include <stddef.h> - -#include <memory> -#include <string> -#include <vector> - -#include "base/callback_forward.h" -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "net/cert/x509_certificate.h" - -namespace content { -class BrowserContext; -} - -namespace chromeos { - -namespace platform_keys { - -// A token is a store for keys or certs and can provide cryptographic -// operations. -// ChromeOS provides itself a user token and conditionally a system wide token, -// thus these tokens use static identifiers. The platform keys API is designed -// to support arbitrary other tokens in the future, which could then use -// run-time generated IDs. -extern const char kTokenIdUser[]; -extern const char kTokenIdSystem[]; - -// Supported key types. -enum class KeyType { kRsassaPkcs1V15, kEcdsa }; - -// Supported hash algorithms. -enum HashAlgorithm { - HASH_ALGORITHM_NONE, // The value if no hash function is selected. - HASH_ALGORITHM_SHA1, - HASH_ALGORITHM_SHA256, - HASH_ALGORITHM_SHA384, - HASH_ALGORITHM_SHA512 -}; - -struct ClientCertificateRequest { - ClientCertificateRequest(); - ClientCertificateRequest(const ClientCertificateRequest& other); - ~ClientCertificateRequest(); - - // The list of the types of certificates requested, sorted in order of the - // server's preference. - std::vector<net::X509Certificate::PublicKeyType> certificate_key_types; - - // List of distinguished names of certificate authorities allowed by the - // server. Each entry must be a DER-encoded X.509 DistinguishedName. - std::vector<std::string> certificate_authorities; -}; - -namespace subtle { -// Functions of this namespace shouldn't be called directly from the context of -// an extension. Instead use ExtensionPlatformKeysService which enforces -// restrictions upon extensions. - -typedef base::Callback<void(const std::string& public_key_spki_der, - const std::string& error_message)> - GenerateKeyCallback; - -// Generates a RSA key pair with |modulus_length_bits|. |token_id| specifies the -// token to store the key pair on and can currently be |kTokenIdUser| or -// |kTokenIdSystem|. |callback| will be invoked with the resulting public key or -// an error. -void GenerateRSAKey(const std::string& token_id, - unsigned int modulus_length_bits, - const GenerateKeyCallback& callback, - content::BrowserContext* browser_context); - -// Generates a EC key pair with |named_curve|. |token_id| specifies the token to -// store the key pair on and can currently be |kTokenIdUser| or -// |kTokenIdSystem|. |callback| will be invoked with the resulting public key or -// an error. -void GenerateECKey(const std::string& token_id, - const std::string& named_curve, - const GenerateKeyCallback& callback, - content::BrowserContext* browser_context); - -typedef base::Callback<void(const std::string& signature, - const std::string& error_message)> SignCallback; - -// Digests |data|, applies PKCS1 padding and afterwards signs the data with the -// private key matching |public_key_spki_der|. If a non empty token id is -// provided and the key is not found in that token, the operation aborts. -// |callback| will be invoked with the RSA signature or an error message. -void SignRSAPKCS1Digest(const std::string& token_id, - const std::string& data, - const std::string& public_key_spki_der, - HashAlgorithm hash_algorithm, - const SignCallback& callback, - content::BrowserContext* browser_context); - -// Applies PKCS1 padding and afterwards signs the data with the private key -// matching |public_key_spki_der|. |data| is not digested. If a non empty token -// id is provided and the key is not found in that token, the operation aborts. -// The size of |data| (number of octets) must be smaller than k - 11, where k is -// the key size in octets. |callback| will be invoked with the RSA signature or -// an error message. -void SignRSAPKCS1Raw(const std::string& token_id, - const std::string& data, - const std::string& public_key_spki_der, - const SignCallback& callback, - content::BrowserContext* browser_context); - -// Digests |data| and afterwards signs the data with the private key matching -// |public_key_spki_der|. If a non empty token id is provided and the key is not -// found in that token, the operation aborts. |callback| will be invoked with -// the ECDSA signature or an error message. -void SignECDSADigest(const std::string& token_id, - const std::string& data, - const std::string& public_key_spki_der, - HashAlgorithm hash_algorithm, - const SignCallback& callback, - content::BrowserContext* browser_context); - -// If the certificate request could be processed successfully, |matches| will -// contain the list of matching certificates (which may be empty) and -// |error_message| will be empty. If an error occurred, |matches| will be null -// and |error_message| contain an error message. -typedef base::Callback<void(std::unique_ptr<net::CertificateList> matches, - const std::string& error_message)> - SelectCertificatesCallback; - -// Returns the list of all certificates that were issued by one of the -// |certificate_authorities|. If |certificate_authorities| is empty, all -// certificates will be returned. |callback| will be invoked with the matches or -// an error message. -void SelectClientCertificates( - const std::vector<std::string>& certificate_authorities, - const SelectCertificatesCallback& callback, - content::BrowserContext* browser_context); - -} // namespace subtle - -// Returns the DER encoding of the X.509 Subject Public Key Info of the public -// key in |certificate|. -std::string GetSubjectPublicKeyInfo( - const scoped_refptr<net::X509Certificate>& certificate); - -// Intersects the two certificate lists |certs1| and |certs2| and passes the -// intersection to |callback|. The intersction preserves the order of |certs1|. -void IntersectCertificates( - const net::CertificateList& certs1, - const net::CertificateList& certs2, - const base::Callback<void(std::unique_ptr<net::CertificateList>)>& - callback); - -// Obtains information about the public key in |certificate|. -// If |certificate| contains an RSA key, sets |key_size_bits| to the modulus -// length, and |key_type| to type RSA and returns true. -// If |certificate| contains any other key type, or if the public exponent of -// the RSA key in |certificate| is not F4, returns false and does not update any -// of the output parameters. -// All pointer arguments must not be null. -bool GetPublicKey(const scoped_refptr<net::X509Certificate>& certificate, - net::X509Certificate::PublicKeyType* key_type, - size_t* key_size_bits); - -// If the list of certificates could be successfully retrieved, |certs| will -// contain the list of available certificates (maybe empty) and |error_message| -// will be empty. If an error occurred, |certs| will be empty and -// |error_message| contain an error message. -typedef base::Callback<void(std::unique_ptr<net::CertificateList> certs, - const std::string& error_message)> - GetCertificatesCallback; - -// Returns the list of all certificates with stored private key available from -// the given token. If an empty |token_id| is provided, all certificates the -// user associated with |browser_context| has access to are listed. Otherwise, -// only certificates from the specified token are listed. |callback| will be -// invoked with the list of available certificates or an error message. -void GetCertificates(const std::string& token_id, - const GetCertificatesCallback& callback, - content::BrowserContext* browser_context); - -// If an error occurred during import, |error_message| will be set to an error -// message. -typedef base::Callback<void(const std::string& error_message)> - ImportCertificateCallback; - -// Imports |certificate| to the given token if the certified key is already -// stored in this token. Any intermediate of |certificate| will be ignored. -// |token_id| specifies the token to store the certificate on and can currently -// be |kTokenIdUser| or |kTokenIdSystem|. The private key must be stored on the -// same token. |callback| will be invoked when the import is finished, possibly -// with an error message. -void ImportCertificate(const std::string& token_id, - const scoped_refptr<net::X509Certificate>& certificate, - const ImportCertificateCallback& callback, - content::BrowserContext* browser_context); - -// If an error occurred during removal, |error_message| will be set to an error -// message. -typedef base::Callback<void(const std::string& error_message)> - RemoveCertificateCallback; - -// Removes |certificate| from the given token if present. Any intermediate of -// |certificate| will be ignored. |token_id| specifies the token to remove the -// certificate from and can currently be empty (any token), |kTokenIdUser| or -// |kTokenIdSystem|. |callback| will be invoked when the removal is finished, -// possibly with an error message. -void RemoveCertificate(const std::string& token_id, - const scoped_refptr<net::X509Certificate>& certificate, - const RemoveCertificateCallback& callback, - content::BrowserContext* browser_context); - -// If the list of available tokens could be successfully retrieved, |token_ids| -// will contain the token ids. If an error occurs, |token_ids| will be NULL and -// |error_message| will be set to an error message. -typedef base::Callback<void(std::unique_ptr<std::vector<std::string>> token_ids, - const std::string& error_message)> - GetTokensCallback; - -// Gets the list of available tokens. |callback| will be invoked when the list -// of available tokens is determined, possibly with an error message. -// Must be called and calls |callback| on the UI thread. -void GetTokens(const GetTokensCallback& callback, - content::BrowserContext* browser_context); - -// If token ids have been successfully retrieved, |error_message| will be empty. -// Two cases are possible then: -// If |token_ids| is not empty, |token_ids| has been filled with the identifiers -// of the tokens the private key was found on and the user has access to. -// Currently, valid token identifiers are |kTokenIdUser| and |kTokenIdSystem|. -// If |token_ids| is empty, the private key has not been found on any token the -// user has access to. Note that this is also the case if the key exists on the -// system token, but the current user does not have access to the system token. -// If an error occurred during processing, |token_ids| will be empty and -// |error_message| will be set to an error message. -// TODO(pmarko): This is currently a RepeatingCallback because of -// GetNSSCertDatabaseForResourceContext semantics. -typedef base::RepeatingCallback<void(const std::vector<std::string>& token_ids, - const std::string& error_message)> - GetKeyLocationsCallback; - -// Determines the token(s) on which the private key corresponding to -// |public_key_spki_der| is stored. |callback| will be invoked when the token -// ids are determined, possibly with an error message. Must be called and calls -// |callback| on the UI thread. -void GetKeyLocations(const std::string& public_key_spki_der, - const GetKeyLocationsCallback& callback, - content::BrowserContext* browser_context); - -} // namespace platform_keys - -} // namespace chromeos - -#endif // CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_H_
diff --git a/chrome/browser/extensions/api/identity/identity_api.cc b/chrome/browser/extensions/api/identity/identity_api.cc index 7a5daadb..7f58078 100644 --- a/chrome/browser/extensions/api/identity/identity_api.cc +++ b/chrome/browser/extensions/api/identity/identity_api.cc
@@ -41,28 +41,55 @@ namespace extensions { -IdentityTokenCacheValue::IdentityTokenCacheValue() - : status_(CACHE_STATUS_NOTFOUND) {} - +IdentityTokenCacheValue::IdentityTokenCacheValue() = default; IdentityTokenCacheValue::IdentityTokenCacheValue( - const IssueAdviceInfo& issue_advice) - : status_(CACHE_STATUS_ADVICE), issue_advice_(issue_advice) { - expiration_time_ = + const IdentityTokenCacheValue& other) = default; +IdentityTokenCacheValue::~IdentityTokenCacheValue() = default; + +// static +IdentityTokenCacheValue IdentityTokenCacheValue::CreateIssueAdvice( + const IssueAdviceInfo& issue_advice) { + IdentityTokenCacheValue cache_value; + cache_value.status_ = CACHE_STATUS_ADVICE; + cache_value.issue_advice_ = issue_advice; + cache_value.expiration_time_ = base::Time::Now() + base::TimeDelta::FromSeconds( identity_constants::kCachedIssueAdviceTTLSeconds); + return cache_value; } -IdentityTokenCacheValue::IdentityTokenCacheValue( - const RemoteConsentResolutionData& resolution_data) - : status_(CACHE_STATUS_REMOTE_CONSENT), resolution_data_(resolution_data) { - expiration_time_ = +// static +IdentityTokenCacheValue IdentityTokenCacheValue::CreateRemoteConsent( + const RemoteConsentResolutionData& resolution_data) { + IdentityTokenCacheValue cache_value; + cache_value.status_ = CACHE_STATUS_REMOTE_CONSENT; + cache_value.resolution_data_ = resolution_data; + cache_value.expiration_time_ = base::Time::Now() + base::TimeDelta::FromSeconds( identity_constants::kCachedIssueAdviceTTLSeconds); + return cache_value; } -IdentityTokenCacheValue::IdentityTokenCacheValue(const std::string& token, - base::TimeDelta time_to_live) - : status_(CACHE_STATUS_TOKEN), token_(token) { +// static +IdentityTokenCacheValue IdentityTokenCacheValue::CreateRemoteConsentApproved( + const std::string& consent_result) { + IdentityTokenCacheValue cache_value; + cache_value.status_ = CACHE_STATUS_REMOTE_CONSENT_APPROVED; + cache_value.consent_result_ = consent_result; + cache_value.expiration_time_ = + base::Time::Now() + base::TimeDelta::FromSeconds( + identity_constants::kCachedIssueAdviceTTLSeconds); + return cache_value; +} + +// static +IdentityTokenCacheValue IdentityTokenCacheValue::CreateToken( + const std::string& token, + base::TimeDelta time_to_live) { + IdentityTokenCacheValue cache_value; + cache_value.status_ = CACHE_STATUS_TOKEN; + cache_value.token_ = token; + // Remove 20 minutes from the ttl so cached tokens will have some time // to live any time they are returned. time_to_live -= base::TimeDelta::FromMinutes(20); @@ -71,14 +98,10 @@ if (time_to_live < zero_delta) time_to_live = zero_delta; - expiration_time_ = base::Time::Now() + time_to_live; + cache_value.expiration_time_ = base::Time::Now() + time_to_live; + return cache_value; } -IdentityTokenCacheValue::IdentityTokenCacheValue( - const IdentityTokenCacheValue& other) = default; - -IdentityTokenCacheValue::~IdentityTokenCacheValue() {} - IdentityTokenCacheValue::CacheValueStatus IdentityTokenCacheValue::status() const { if (is_expired()) @@ -96,6 +119,10 @@ return resolution_data_; } +const std::string& IdentityTokenCacheValue::consent_result() const { + return consent_result_; +} + const std::string& IdentityTokenCacheValue::token() const { return token_; } bool IdentityTokenCacheValue::is_expired() const {
diff --git a/chrome/browser/extensions/api/identity/identity_api.h b/chrome/browser/extensions/api/identity/identity_api.h index f991b7a..ac001438 100644 --- a/chrome/browser/extensions/api/identity/identity_api.h +++ b/chrome/browser/extensions/api/identity/identity_api.h
@@ -44,35 +44,42 @@ class IdentityTokenCacheValue { public: IdentityTokenCacheValue(); - explicit IdentityTokenCacheValue(const IssueAdviceInfo& issue_advice); - explicit IdentityTokenCacheValue( - const RemoteConsentResolutionData& resolution_data); - IdentityTokenCacheValue(const std::string& token, - base::TimeDelta time_to_live); IdentityTokenCacheValue(const IdentityTokenCacheValue& other); ~IdentityTokenCacheValue(); + static IdentityTokenCacheValue CreateIssueAdvice( + const IssueAdviceInfo& issue_advice); + static IdentityTokenCacheValue CreateRemoteConsent( + const RemoteConsentResolutionData& resolution_data); + static IdentityTokenCacheValue CreateRemoteConsentApproved( + const std::string& consent_result); + static IdentityTokenCacheValue CreateToken(const std::string& token, + base::TimeDelta time_to_live); + // Order of these entries is used to determine whether or not new - // entries supercede older ones in SetCachedToken. + // entries supersede older ones in SetCachedToken. enum CacheValueStatus { CACHE_STATUS_NOTFOUND, CACHE_STATUS_ADVICE, CACHE_STATUS_REMOTE_CONSENT, + CACHE_STATUS_REMOTE_CONSENT_APPROVED, CACHE_STATUS_TOKEN }; CacheValueStatus status() const; const IssueAdviceInfo& issue_advice() const; const RemoteConsentResolutionData& resolution_data() const; + const std::string& consent_result() const; const std::string& token() const; const base::Time& expiration_time() const; private: bool is_expired() const; - CacheValueStatus status_; + CacheValueStatus status_ = CACHE_STATUS_NOTFOUND; IssueAdviceInfo issue_advice_; RemoteConsentResolutionData resolution_data_; + std::string consent_result_; std::string token_; base::Time expiration_time_; };
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc index 87195db..b984513a 100644 --- a/chrome/browser/extensions/api/identity/identity_apitest.cc +++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -1455,8 +1455,8 @@ func->set_extension(extension.get()); // pre-populate the cache with a token - IdentityTokenCacheValue token(kAccessToken, - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + kAccessToken, base::TimeDelta::FromSeconds(3600)); SetCachedToken(token); // Get a token. Should not require a GAIA request. @@ -1491,8 +1491,8 @@ func->set_extension(extension.get()); // pre-populate the cache with a token - IdentityTokenCacheValue token(kAccessToken, - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + kAccessToken, base::TimeDelta::FromSeconds(3600)); SetCachedTokenForAccount(account_info.account_id, token); if (id_api()->AreExtensionsRestrictedToPrimaryAccount()) { @@ -1522,7 +1522,8 @@ // pre-populate the cache with advice IssueAdviceInfo info; - IdentityTokenCacheValue token(info); + IdentityTokenCacheValue token = + IdentityTokenCacheValue::CreateIssueAdvice(info); SetCachedToken(token); // Should return an error without a GAIA request. @@ -1553,8 +1554,8 @@ RunFunctionAsync(func.get(), "[{\"interactive\": true}]"); // Populate the cache with a token while the request is blocked. - IdentityTokenCacheValue token(kAccessToken, - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + kAccessToken, base::TimeDelta::FromSeconds(3600)); SetCachedToken(token); // When we wake up the request, it returns the cached token without @@ -1579,8 +1580,8 @@ func->set_extension(extension.get()); // pre-populate the cache with a token - IdentityTokenCacheValue token(kAccessToken, - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + kAccessToken, base::TimeDelta::FromSeconds(3600)); SetCachedToken(token); // Because the user is not signed in, the token will be removed, @@ -2123,7 +2124,8 @@ IN_PROC_BROWSER_TEST_F(RemoveCachedAuthTokenFunctionTest, Advice) { IssueAdviceInfo info; - IdentityTokenCacheValue advice(info); + IdentityTokenCacheValue advice = + IdentityTokenCacheValue::CreateIssueAdvice(info); SetCachedToken(advice); EXPECT_TRUE(InvalidateDefaultToken()); EXPECT_EQ(IdentityTokenCacheValue::CACHE_STATUS_ADVICE, @@ -2131,8 +2133,8 @@ } IN_PROC_BROWSER_TEST_F(RemoveCachedAuthTokenFunctionTest, NonMatchingToken) { - IdentityTokenCacheValue token("non_matching_token", - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + "non_matching_token", base::TimeDelta::FromSeconds(3600)); SetCachedToken(token); EXPECT_TRUE(InvalidateDefaultToken()); EXPECT_EQ(IdentityTokenCacheValue::CACHE_STATUS_TOKEN, @@ -2141,8 +2143,8 @@ } IN_PROC_BROWSER_TEST_F(RemoveCachedAuthTokenFunctionTest, MatchingToken) { - IdentityTokenCacheValue token(kAccessToken, - base::TimeDelta::FromSeconds(3600)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + kAccessToken, base::TimeDelta::FromSeconds(3600)); SetCachedToken(token); EXPECT_EQ(IdentityTokenCacheValue::CACHE_STATUS_TOKEN, GetCachedToken().status());
diff --git a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc index 69ae281..57347ab 100644 --- a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc +++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
@@ -383,6 +383,8 @@ CompleteFunctionWithError(identity_constants::kNoGrant); return; } + // TODO(https://crbug.com/1026237): figure out whether this can be ignored + // when running the remote consent approval. if (!id_api->mint_queue()->empty( IdentityMintRequestQueue::MINT_TYPE_INTERACTIVE, token_key_)) { // Another call is going through a consent UI. @@ -390,6 +392,7 @@ return; } } + id_api->mint_queue()->RequestStart(type, token_key_, this); } @@ -469,6 +472,14 @@ resolution_data_ = cache_entry.resolution_data(); StartMintTokenFlow(IdentityMintRequestQueue::MINT_TYPE_INTERACTIVE); break; + + case IdentityTokenCacheValue::CACHE_STATUS_REMOTE_CONSENT_APPROVED: + consent_result_ = cache_entry.consent_result(); + should_prompt_for_scopes_ = false; + should_prompt_for_signin_ = false; + gaia_mint_token_mode_ = OAuth2MintTokenFlow::MODE_MINT_TOKEN_NO_FORCE; + StartTokenKeyAccountAccessTokenRequest(); + break; } } else { DCHECK(type == IdentityMintRequestQueue::MINT_TYPE_INTERACTIVE); @@ -485,6 +496,13 @@ case IdentityTokenCacheValue::CACHE_STATUS_REMOTE_CONSENT: ShowRemoteConsentDialog(resolution_data_); break; + case IdentityTokenCacheValue::CACHE_STATUS_REMOTE_CONSENT_APPROVED: + consent_result_ = cache_entry.consent_result(); + should_prompt_for_scopes_ = false; + should_prompt_for_signin_ = false; + gaia_mint_token_mode_ = OAuth2MintTokenFlow::MODE_MINT_TOKEN_NO_FORCE; + StartTokenKeyAccountAccessTokenRequest(); + break; } } } @@ -494,8 +512,8 @@ int time_to_live) { TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("identity", "OnMintTokenSuccess", this); - IdentityTokenCacheValue token(access_token, - base::TimeDelta::FromSeconds(time_to_live)); + IdentityTokenCacheValue token = IdentityTokenCacheValue::CreateToken( + access_token, base::TimeDelta::FromSeconds(time_to_live)); IdentityAPI::GetFactoryInstance() ->Get(GetProfile()) ->SetCachedToken(token_key_, token); @@ -538,7 +556,8 @@ IdentityAPI::GetFactoryInstance() ->Get(GetProfile()) - ->SetCachedToken(token_key_, IdentityTokenCacheValue(issue_advice)); + ->SetCachedToken( + token_key_, IdentityTokenCacheValue::CreateIssueAdvice(issue_advice)); CompleteMintTokenFlow(); should_prompt_for_signin_ = false; @@ -563,7 +582,8 @@ IdentityAPI::GetFactoryInstance() ->Get(GetProfile()) - ->SetCachedToken(token_key_, IdentityTokenCacheValue(resolution_data)); + ->SetCachedToken(token_key_, IdentityTokenCacheValue::CreateRemoteConsent( + resolution_data)); should_prompt_for_signin_ = false; resolution_data_ = resolution_data; CompleteMintTokenFlow(); @@ -666,7 +686,7 @@ TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("identity", "OnGaiaFlowCompleted", this); int time_to_live; if (!expiration.empty() && base::StringToInt(expiration, &time_to_live)) { - IdentityTokenCacheValue token_value( + IdentityTokenCacheValue token_value = IdentityTokenCacheValue::CreateToken( access_token, base::TimeDelta::FromSeconds(time_to_live)); IdentityAPI::GetFactoryInstance() ->Get(GetProfile()) @@ -712,12 +732,29 @@ const std::string& gaia_id) { // TODO(crbug.com/1026237): Reuse the same gaia id for this extension the next // time. + TRACE_EVENT_NESTABLE_ASYNC_INSTANT1( + "identity", "OnGaiaRemoteConsentFlowApproved", this, "gaia_id", gaia_id); DCHECK(!consent_result.empty()); + + CompleteMintTokenFlow(); + base::Optional<AccountInfo> account = + IdentityManagerFactory::GetForProfile(GetProfile()) + ->FindExtendedAccountInfoForAccountWithRefreshTokenByGaiaId(gaia_id); + if (!account) { + CompleteFunctionWithError(identity_constants::kUserNotSignedIn); + return; + } + + token_key_.account_id = account->account_id; consent_result_ = consent_result; should_prompt_for_scopes_ = false; should_prompt_for_signin_ = false; - gaia_mint_token_mode_ = OAuth2MintTokenFlow::MODE_MINT_TOKEN_NO_FORCE; - StartTokenKeyAccountAccessTokenRequest(); + IdentityAPI::GetFactoryInstance() + ->Get(GetProfile()) + ->SetCachedToken( + token_key_, + IdentityTokenCacheValue::CreateRemoteConsentApproved(consent_result)); + StartMintTokenFlow(IdentityMintRequestQueue::MINT_TYPE_NONINTERACTIVE); } void IdentityGetAuthTokenFunction::OnGetAccessTokenComplete(
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc index afc1d9ca..4d0e537 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
@@ -29,6 +29,8 @@ #include "components/password_manager/core/browser/ui/compromised_credentials_provider.h" #include "components/password_manager/core/browser/ui/credential_utils.h" #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h" +#include "components/password_manager/core/common/password_manager_pref_names.h" +#include "components/prefs/pref_service.h" #include "components/url_formatter/url_formatter.h" #include "net/base/escape.h" #include "ui/base/l10n/l10n_util.h" @@ -116,6 +118,15 @@ return passwords_map; } +std::string FormatElapsedTime(base::Time time) { + const base::TimeDelta elapsed_time = base::Time::Now() - time; + if (elapsed_time < base::TimeDelta::FromMinutes(1)) + return l10n_util::GetStringUTF8(IDS_SETTINGS_PASSWORDS_JUST_NOW); + + return base::UTF16ToUTF8(TimeFormat::SimpleWithMonthAndYear( + TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_LONG, elapsed_time, true)); +} + } // namespace constexpr size_t PasswordCheckDelegate::kTooManyPasswords; @@ -206,22 +217,26 @@ api_credential.username = base::UTF16ToUTF8(credential.username); api_credential.compromise_time = credential.create_time.ToJsTimeIgnoringNull(); - base::TimeDelta elapsed_time = base::Time::Now() - credential.create_time; - if (elapsed_time < base::TimeDelta::FromMinutes(1)) { - api_credential.elapsed_time_since_compromise = - l10n_util::GetStringUTF8(IDS_SETTINGS_PASSWORDS_JUST_NOW); - } else { - api_credential.elapsed_time_since_compromise = - base::UTF16ToUTF8(TimeFormat::SimpleWithMonthAndYear( - TimeFormat::FORMAT_ELAPSED, TimeFormat::LENGTH_LONG, elapsed_time, - true)); - } api_credential.compromise_type = ConvertCompromiseType(credential.compromise_type); + api_credential.elapsed_time_since_compromise = + FormatElapsedTime(credential.create_time); credentials_info.compromised_credentials.push_back( std::move(api_credential)); } + // Obtain the timestamp of the last completed check. This is 0.0 in case the + // check never completely ran before. + // TODO(https://crbug.com/1047726): Expose elapsed_time_since_last_check on + // PasswordCheckStatus rather than CompromisedCredentialsInfo. + const double last_check_completed = profile_->GetPrefs()->GetDouble( + password_manager::prefs::kLastTimePasswordCheckCompleted); + if (last_check_completed) { + credentials_info.elapsed_time_since_last_check = + std::make_unique<std::string>( + FormatElapsedTime(base::Time::FromDoubleT(last_check_completed))); + } + return credentials_info; } @@ -290,16 +305,11 @@ } bool PasswordCheckDelegate::StartPasswordCheck() { - is_canceled_ = false; + is_bulk_check_running_ = true; return bulk_leak_check_service_adapter_.StartBulkLeakCheck(); } void PasswordCheckDelegate::StopPasswordCheck() { - if (bulk_leak_check_service_adapter_.GetBulkLeakCheckState() == - BulkLeakCheckService::State::kRunning) { - is_canceled_ = true; - } - bulk_leak_check_service_adapter_.StopBulkLeakCheck(); } @@ -336,11 +346,6 @@ return result; } - if (is_canceled_) { - result.state = api::passwords_private::PASSWORD_CHECK_STATE_CANCELED; - return result; - } - result.state = ConvertPasswordCheckState(state); return result; } @@ -363,8 +368,16 @@ } } -void PasswordCheckDelegate::OnStateChanged( - password_manager::BulkLeakCheckService::State) { +void PasswordCheckDelegate::OnStateChanged(BulkLeakCheckService::State state) { + if (is_bulk_check_running_ && state == BulkLeakCheckService::State::kIdle) { + // When the service transitions from running into idle it has finished a + // check. + is_bulk_check_running_ = false; + profile_->GetPrefs()->SetDouble( + password_manager::prefs::kLastTimePasswordCheckCompleted, + base::Time::Now().ToDoubleT()); + } + // NotifyPasswordCheckStatusChanged() invokes GetPasswordCheckStatus() // obtaining the relevant information. Thus there is no need to forward the // arguments passed to OnStateChanged().
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h index cdaee278..6bbbf59 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
@@ -131,8 +131,8 @@ password_manager::BulkLeakCheckServiceAdapter bulk_leak_check_service_adapter_; - // Remembers whether the bulk leak check was explicitly canceled by the user. - bool is_canceled_ = false; + // Remembers whether the bulk check is running due to explicit user action. + bool is_bulk_check_running_ = false; // A scoped observer for |saved_passwords_presenter_|. ScopedObserver<password_manager::SavedPasswordsPresenter,
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc index 9f29b07..5fc1d33 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "chrome/browser/extensions/api/passwords_private/password_check_delegate.h" + #include <memory> #include <string> #include <vector> @@ -34,6 +35,9 @@ #include "components/password_manager/core/browser/password_manager_test_utils.h" #include "components/password_manager/core/browser/test_password_store.h" #include "components/password_manager/core/common/password_manager_features.h" +#include "components/password_manager/core/common/password_manager_pref_names.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/testing_pref_service.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/identity_test_environment.h" #include "content/public/browser/browser_context.h" @@ -72,12 +76,14 @@ using password_manager::IsLeaked; using password_manager::LeakCheckCredential; using password_manager::TestPasswordStore; +using password_manager::prefs::kLastTimePasswordCheckCompleted; using signin::IdentityTestEnvironment; using ::testing::AllOf; using ::testing::AtLeast; using ::testing::ElementsAre; using ::testing::Field; using ::testing::IsEmpty; +using ::testing::IsNull; using ::testing::Pointee; using ::testing::UnorderedElementsAre; @@ -195,6 +201,7 @@ class PasswordCheckDelegateTest : public ::testing::Test { public: PasswordCheckDelegateTest() { + prefs_.registry()->RegisterDoublePref(kLastTimePasswordCheckCompleted, 0.0); scoped_feature_list_.InitAndEnableFeature( password_manager::features::kPasswordCheck); } @@ -204,6 +211,8 @@ return event_router_observer_; } IdentityTestEnvironment& identity_test_env() { return identity_test_env_; } + TestingPrefServiceSimple prefs_; + TestingProfile& profile() { return profile_; } TestPasswordStore& store() { return *store_; } BulkLeakCheckService* service() { return bulk_leak_check_service_; } PasswordCheckDelegate& delegate() { return delegate_; } @@ -829,4 +838,34 @@ event_router_observer().events().at(kEventName)->histogram_value); } +// Checks that the default kLastTimePasswordCheckCompleted pref value is +// treated as no completed run yet. +TEST_F(PasswordCheckDelegateTest, LastTimePasswordCheckCompletedNotSet) { + CompromisedCredentialsInfo info = delegate().GetCompromisedCredentialsInfo(); + EXPECT_THAT(info.elapsed_time_since_last_check, IsNull()); +} + +// Checks that a non-default kLastTimePasswordCheckCompleted pref value is +// treated as a completed run, and formatted accordingly. +TEST_F(PasswordCheckDelegateTest, LastTimePasswordCheckCompletedIsSet) { + profile().GetPrefs()->SetDouble( + kLastTimePasswordCheckCompleted, + (base::Time::Now() - base::TimeDelta::FromMinutes(5)).ToDoubleT()); + + CompromisedCredentialsInfo info = delegate().GetCompromisedCredentialsInfo(); + EXPECT_THAT(info.elapsed_time_since_last_check, + Pointee(std::string("5 minutes ago"))); +} + +// Checks that a tranistion into the idle state after starting a check results +// in resetting the kLastTimePasswordCheckCompleted pref to the current time. +TEST_F(PasswordCheckDelegateTest, LastTimePasswordCheckCompletedReset) { + delegate().StartPasswordCheck(); + service()->set_state_and_notify(BulkLeakCheckService::State::kIdle); + + CompromisedCredentialsInfo info = delegate().GetCompromisedCredentialsInfo(); + EXPECT_THAT(info.elapsed_time_since_last_check, + Pointee(std::string("Just now"))); +} + } // namespace extensions
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 2d5aa4af..e7156c2 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -436,6 +436,11 @@ "expiry_milestone": 78 }, { + "name": "clear-synced-data", + "owners": [ "fernandex" ], + "expiry_milestone": 86 + }, + { "name": "click-to-call-context-menu-selected-text", "owners": [ "//chrome/browser/sharing/OWNERS" ], "expiry_milestone": 82 @@ -466,6 +471,11 @@ "expiry_milestone": 76 }, { + "name": "collections-card-presentation-style", + "owners": [ "sczs" ], + "expiry_milestone": 80 + }, + { "name": "composited-layer-borders", "owners": [ "ccameron" ], "expiry_milestone": 76 @@ -740,6 +750,11 @@ "expiry_milestone": -1 }, { + "name": "disable-animation-on-low-battery", + "owners": [ "djean" ], + "expiry_milestone": 85 + }, + { "name": "disable-best-effort-tasks", "owners": [ "catan-team@chromium.org" ], "expiry_milestone": 75 @@ -891,6 +906,12 @@ "expiry_milestone": 89 }, { + "name": "embedder-block-restore-url", + "owners": [ "justincohen", "rohitrao" ], + // Needed for manual testing of fallback flow on iOS. + "expiry_milestone": -1 + }, + { "name": "enable-accessibility-expose-aria-annotations", "owners": [ "aleventhal@chromium.org", "//third_party/blink/renderer/modules/accessibility/OWNERS", "//ui/accessibility/OWNERS" ], "expiry_milestone": 85 @@ -1129,6 +1150,16 @@ "expiry_milestone": 79 }, { + "name": "enable-clipboard-provider-image-suggestions", + "owners": [ "rkgibson" ], + "expiry_milestone": 86 + }, + { + "name": "enable-clipboard-provider-text-suggestions", + "owners": [ "rkgibson" ], + "expiry_milestone": 86 + }, + { "name": "enable-close-tab-suggestions", "owners": [ "memex-team@google.com" ], "expiry_milestone": 82 @@ -2255,6 +2286,11 @@ "expiry_milestone": 87 }, { + "name": "find-in-page-iframe", + "owners": [ "thegreenfrog" ], + "expiry_milestone": 80 + }, + { "name": "focus-mode", "owners": [ "dfried", "pbos", "yiningwang@google.com" ], "expiry_milestone": 82 @@ -2294,6 +2330,11 @@ "expiry_milestone": -1 }, { + "name": "force-startup-signin-promo", + "owners": [ "jlebel" ], + "expiry_milestone": 86 + }, + { "name": "force-text-direction", "owners": [ "orinj", "pbos", "ellyjones" ], // This flag is used for developers who don't speak an RTL language to QA @@ -2341,6 +2382,17 @@ "expiry_milestone": 85 }, { + "name": "fullscreen-controller-browser-scoped", + "owners": [ "thegreenfrog", "kkhorimoto" ], + "expiry_milestone": 85 + }, + { + "name": "fullscreen-viewport-adjustment-experiment", + "owners": [ "thegreenfrog", "kkhorimoto" ], + // Needed for manual testing of fallback flow on iOS. + "expiry_milestone": -1 + }, + { "name": "fuzzy-app-search", "owners": [ "thanhdng", "jiameng" ], "expiry_milestone": 82 @@ -2454,6 +2506,11 @@ "expiry_milestone": -1 }, { + "name": "ignores-viewport-scale-limits", + "owners": [ "eugenebut" ], + "expiry_milestone": 80 + }, + { "name": "improved-cookie-controls", "owners": [ "dullweber", "huanzhong" ], "expiry_milestone": 84 @@ -2476,6 +2533,11 @@ "expiry_milestone": -1 }, { + "name": "infobar-overlay-ui", + "owners": [ "kkhorimoto", "sczs" ], + "expiry_milestone": 85 + }, + { "name": "infobar-ui-reboot", "owners": [ "sczs", "thegreenfrog" ], "expiry_milestone": 83 @@ -2511,6 +2573,13 @@ "expiry_milestone": 80 }, { + "name": "ios-breadcrumbs", + "owners": [ "michaeldo" ], + // Breadcrumbs is not a launching feature, but rather a tool used on + // pre-stable channels for diagnosing crashes. + "expiry_milestone": -1 + }, + { "name": "isolate-origins", "owners": [ "site-isolation-dev", "alexmos", "creis", "lukasza" ], // This is useful for isolating additional origins beyond the normal site @@ -2616,6 +2685,11 @@ "expiry_milestone": 83 }, { + "name": "messages-download-infobar", + "owners": [ "sczs" ], + "expiry_milestone": 85 + }, + { "name": "messages-save-card-infobar", "owners": [ "sczs", "thegreenfrog" ], "expiry_milestone": 83 @@ -2691,6 +2765,11 @@ "expiry_milestone": 79 }, { + "name": "non-modal-dialogs", + "owners": [ "kkhorimoto" ], + "expiry_milestone": 85 + }, + { "name": "notification-scheduler-debug-options", "owners": [ "//chrome/browser/notifications/scheduler/OWNERS" ], "expiry_milestone": 83 @@ -3148,6 +3227,11 @@ "expiry_milestone": 85 }, { + "name": "prefetch-notification-scheduling-integration", + "owners": [ "hesen" ], + "expiry_milestone": 88 + }, + { "name": "prefetch-privacy-changes", "owners": [ "dom", "yhirano" ], "expiry_milestone": 85 @@ -3275,6 +3359,11 @@ "expiry_milestone": 82 }, { + "name": "scanning-ui", + "owners": [ "jschettler", "bmgordon" ], + "expiry_milestone": 85 + }, + { "name": "scheduler-configuration", "owners": [ "kerrnel", "mnissler" ], "expiry_milestone": 88 @@ -3285,11 +3374,21 @@ "expiry_milestone": 82 }, { + "name": "search-icon-toggle", + "owners": [ "gambard" ], + "expiry_milestone": 80 + }, + { "name": "security-interstitials-dark-mode", "owners": ["estark"], "expiry_milestone": 79 }, { + "name": "send-uma-cellular", + "owners": [ "thegreenfrog" ], + "expiry_milestone": 80 + }, + { "name": "set-market-url-for-testing", "owners": [ "//chrome/android/java/src/org/chromium/chrome/browser/omaha/OWNERS" ], // This is required by test teams to verify functionality on devices which @@ -3297,6 +3396,11 @@ "expiry_milestone": -1 }, { + "name": "settings-refresh", + "owners": [ "gambard" ], + "expiry_milestone": 85 + }, + { "name": "share-button-in-top-toolbar", "owners": ["jeffreycohen"], "expiry_milestone": 83 @@ -3478,6 +3582,11 @@ "expiry_milestone": 85 }, { + "name": "snapshot-draw-view", + "owners": [ "//ios/chrome/browser/snapshots/OWNERS" ], + "expiry_milestone": 85 + }, + { "name": "split-settings-sync", "owners": [ "jamescook", "cros-system-services@google.com" ], "expiry_milestone": 84 @@ -3595,6 +3704,11 @@ "expiry_milestone": 85 }, { + "name": "toolbar-container", + "owners": [ "thegreenfrog", "kkhorimoto" ], + "expiry_milestone": 85 + }, + { "name": "toolbar-new-tab-button", "owners": [ "gambard" ], "expiry_milestone": 83 @@ -3825,11 +3939,21 @@ "expiry_milestone": 83 }, { + "name": "web-clear-browsing-data", + "owners": [ "gambard" ], + "expiry_milestone": 80 + }, + { "name": "web-contents-occlusion", "owners": [ "davidbienvenu", "fdoray" ], "expiry_milestone": 84 }, { + "name": "webpage-text-accessibility", + "owners": [ "rkgibson" ], + "expiry_milestone": 86 + }, + { "name": "webui-a11y-enhancements", "owners": [ "aee" ], "expiry_milestone": 82
diff --git a/chrome/browser/flag-never-expire-list.json b/chrome/browser/flag-never-expire-list.json index da85db7a4..7a5fba38 100644 --- a/chrome/browser/flag-never-expire-list.json +++ b/chrome/browser/flag-never-expire-list.json
@@ -29,6 +29,7 @@ "disable-webrtc-hw-decoding", "disable-webrtc-hw-encoding", "disallow-doc-written-script-loads", + "embedder-block-restore-url", "enable-autofill-credit-card-upload", "enable-command-line-on-non-rooted-devices", "enable-data-reduction-proxy-server-experiment", @@ -61,11 +62,13 @@ "force-text-direction", "force-ui-direction", "force-update-menu-type", + "fullscreen-viewport-adjustment-experiment", "gesture-properties-dbus-service", "ignore-gpu-blacklist", "ignore-previews-blocklist", "in-product-help-demo-mode-choice", "instant-tethering", + "ios-breadcrumbs", "list-all-display-modes", "load-media-router-component-extension", "media-router-cast-allow-all-ips",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 205bb9e..7d37077 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2611,6 +2611,12 @@ "if enable update notification will hook up to notification scheduling " "system in native side"; +const char kPrefetchNotificationSchedulingIntegrationName[] = + "Enable prefetch notification using notification scheduling system"; +const char kPrefetchNotificationSchedulingIntegrationDescription[] = + "if enable prefetch notification service and background task will hook up " + "to notification scheduling system in native side"; + const char kUpdateNotificationServiceImmediateShowOptionName[] = "Update notification service debug options"; const char kUpdateNotificationServiceImmediateShowOptionDescription[] = @@ -3452,6 +3458,11 @@ "Creates release notes app in settings menu that shows a webview " "describing new OS features."; +const char kScanningUIName[] = "Scanning UI"; +const char kScanningUIDescription[] = + "An experimental UI that allows users to interact with a connected " + "scanner."; + const char kSchedulerConfigurationName[] = "Scheduler Configuration"; const char kSchedulerConfigurationDescription[] = "Instructs the OS to use a specific scheduler configuration setting.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 4c28092..0587c93 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1498,6 +1498,9 @@ extern const char kUpdateNotificationServiceImmediateShowOptionName[]; extern const char kUpdateNotificationServiceImmediateShowOptionDescription[]; +extern const char kPrefetchNotificationSchedulingIntegrationName[]; +extern const char kPrefetchNotificationSchedulingIntegrationDescription[]; + extern const char kUsageStatsDescription[]; extern const char kUsageStatsName[]; @@ -2012,6 +2015,9 @@ extern const char kReleaseNotesName[]; extern const char kReleaseNotesDescription[]; +extern const char kScanningUIName[]; +extern const char kScanningUIDescription[]; + extern const char kSchedulerConfigurationName[]; extern const char kSchedulerConfigurationDescription[]; extern const char kSchedulerConfigurationConservative[];
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index 2a4abcf..69ccee3 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -204,6 +204,7 @@ &kVideoPersistence, &kVrBrowsingFeedback, &kWebApkAdaptiveIcon, + &kPrefetchNotificationSchedulingIntegration, &net::features::kSameSiteByDefaultCookies, &net::features::kCookiesWithoutSameSiteMustBeSecure, &paint_preview::kPaintPreviewCaptureExperiment, @@ -584,6 +585,10 @@ "UpdateNotificationSchedulingIntegration", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kPrefetchNotificationSchedulingIntegration{ + "PrefetchNotificationSchedulingIntegration", + base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kUpdateNotificationScheduleServiceImmediateShowOption{ "UpdateNotificationScheduleServiceImmediateShowOption", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h index 00eab31f..70aa2fc 100644 --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -126,6 +126,7 @@ extern const base::Feature kVideoPersistence; extern const base::Feature kVrBrowsingFeedback; extern const base::Feature kWebApkAdaptiveIcon; +extern const base::Feature kPrefetchNotificationSchedulingIntegration; } // namespace android } // namespace chrome
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java index b25098a..597c893 100644 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -440,6 +440,8 @@ "UpdateNotificationSchedulingIntegration"; public static final String UPDATE_NOTIFICATION_IMMEDIATE_SHOW_OPTION = "UpdateNotificationScheduleServiceImmediateShowOption"; + public static final String PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION = + "PrefetchNotificationSchedulingIntegration"; @NativeMethods interface Natives {
diff --git a/chrome/browser/media/feeds/media_feeds_browsertest.cc b/chrome/browser/media/feeds/media_feeds_browsertest.cc new file mode 100644 index 0000000..eabe0572 --- /dev/null +++ b/chrome/browser/media/feeds/media_feeds_browsertest.cc
@@ -0,0 +1,161 @@ +// 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. + +#include "base/optional.h" +#include "base/run_loop.h" +#include "base/strings/stringprintf.h" +#include "base/task/post_task.h" +#include "base/test/bind_test_util.h" +#include "base/test/scoped_feature_list.h" +#include "chrome/browser/media/feeds/media_feeds_contents_observer.h" +#include "chrome/browser/media/history/media_history_feeds_table.h" +#include "chrome/browser/media/history/media_history_keyed_service.h" +#include "chrome/browser/media/history/media_history_keyed_service_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/ui_test_utils.h" +#include "content/public/test/frame_load_waiter.h" +#include "content/public/test/test_utils.h" +#include "media/base/media_switches.h" +#include "net/dns/mock_host_resolver.h" +#include "net/test/embedded_test_server/http_request.h" +#include "net/test/embedded_test_server/http_response.h" + +namespace media_feeds { + +namespace { + +const char kMediaFeedsTestURL[] = "/media-feed"; + +const char kMediaFeedsTestHTML[] = + " <!DOCTYPE html>" + " <head>%s</head>"; + +struct TestData { + std::string head_html; + bool discovered; +}; + +} // namespace + +class MediaFeedsBrowserTest : public InProcessBrowserTest, + public ::testing::WithParamInterface<TestData> { + public: + MediaFeedsBrowserTest() = default; + ~MediaFeedsBrowserTest() override = default; + + void SetUp() override { + scoped_feature_list_.InitAndEnableFeature(media::kMediaFeeds); + + InProcessBrowserTest::SetUp(); + } + + void SetUpOnMainThread() override { + host_resolver()->AddRule("*", "127.0.0.1"); + + embedded_test_server()->RegisterRequestHandler(base::BindRepeating( + &MediaFeedsBrowserTest::HandleRequest, base::Unretained(this))); + + ASSERT_TRUE(embedded_test_server()->Start()); + + InProcessBrowserTest::SetUpOnMainThread(); + } + + std::set<GURL> GetDiscoveredFeedURLs() { + base::RunLoop run_loop; + std::set<GURL> out; + + GetMediaHistoryService()->GetURLsInTableForTest( + media_history::MediaHistoryFeedsTable::kTableName, + base::BindLambdaForTesting([&](std::set<GURL> urls) { + out = urls; + run_loop.Quit(); + })); + + run_loop.Run(); + return out; + } + + content::WebContents* GetWebContents() { + return browser()->tab_strip_model()->GetActiveWebContents(); + } + + media_history::MediaHistoryKeyedService* GetMediaHistoryService() { + return media_history::MediaHistoryKeyedServiceFactory::GetForProfile( + browser()->profile()); + } + + private: + std::unique_ptr<net::test_server::HttpResponse> HandleRequest( + const net::test_server::HttpRequest& request) { + if (request.relative_url != kMediaFeedsTestURL) + return nullptr; + + auto response = std::make_unique<net::test_server::BasicHttpResponse>(); + response->set_content( + base::StringPrintf(kMediaFeedsTestHTML, GetParam().head_html.c_str())); + return response; + } + + base::test::ScopedFeatureList scoped_feature_list_; +}; + +INSTANTIATE_TEST_SUITE_P( + All, + MediaFeedsBrowserTest, + ::testing::Values( + TestData{"<link rel=feed type=\"application/ld+json\" href=\"/test\"/>", + true}, + TestData{"", false}, + TestData{"<link rel=feed type=\"application/ld+json\" " + "href=\"/test\"/><link rel=feed " + "type=\"application/ld+json\" href=\"/test2\"/>", + true}, + TestData{"<link rel=feed type=\"application/ld+json\" " + "href=\"https://www.example.com/test\"/>", + false}, + TestData{"<link rel=feed type=\"application/ld+json\" href=\"\"/>", + false}, + TestData{"<link rel=feed href=\"/test\"/>", false}, + TestData{ + "<link rel=other type=\"application/ld+json\" href=\"/test\"/>", + false})); + +IN_PROC_BROWSER_TEST_P(MediaFeedsBrowserTest, Discover) { + EXPECT_TRUE(GetDiscoveredFeedURLs().empty()); + + MediaFeedsContentsObserver* contents_observer = + static_cast<MediaFeedsContentsObserver*>( + MediaFeedsContentsObserver::FromWebContents(GetWebContents())); + + auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); + GURL test_url(embedded_test_server()->GetURL(kMediaFeedsTestURL)); + + // The contents observer will call this closure when it has checked for a + // media feed. + base::RunLoop run_loop; + + contents_observer->SetClosureForTest(base::BindLambdaForTesting([&]() { + if (web_contents->GetLastCommittedURL() == test_url) + run_loop.Quit(); + })); + + ui_test_utils::NavigateToURL(browser(), test_url); + + run_loop.Run(); + + // Wait until the session has finished saving. + content::RunAllTasksUntilIdle(); + + // Check we discovered the feed. + std::set<GURL> expected_urls; + + if (GetParam().discovered) + expected_urls.insert(embedded_test_server()->GetURL("/test")); + + EXPECT_EQ(expected_urls, GetDiscoveredFeedURLs()); +} + +} // namespace media_feeds
diff --git a/chrome/browser/media/feeds/media_feeds_contents_observer.cc b/chrome/browser/media/feeds/media_feeds_contents_observer.cc new file mode 100644 index 0000000..98e561b --- /dev/null +++ b/chrome/browser/media/feeds/media_feeds_contents_observer.cc
@@ -0,0 +1,79 @@ +// 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. + +#include "chrome/browser/media/feeds/media_feeds_contents_observer.h" + +#include "chrome/browser/media/history/media_history_keyed_service.h" +#include "chrome/browser/media/history/media_history_keyed_service_factory.h" +#include "chrome/browser/profiles/incognito_helpers.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/common/chrome_render_frame.mojom.h" +#include "content/public/browser/navigation_handle.h" +#include "content/public/browser/render_frame_host.h" +#include "mojo/public/cpp/bindings/associated_remote.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" +#include "url/origin.h" + +MediaFeedsContentsObserver::MediaFeedsContentsObserver( + content::WebContents* web_contents) + : content::WebContentsObserver(web_contents) {} + +MediaFeedsContentsObserver::~MediaFeedsContentsObserver() = default; + +void MediaFeedsContentsObserver::DidFinishNavigation( + content::NavigationHandle* handle) { + if (!handle->IsInMainFrame() || handle->IsSameDocument()) + return; + + render_frame_.reset(); +} + +void MediaFeedsContentsObserver::DidFinishLoad( + content::RenderFrameHost* render_frame_host, + const GURL& validated_url) { + if (render_frame_host->GetParent() || !GetService()) + return; + + render_frame_host->GetRemoteAssociatedInterfaces()->GetInterface( + &render_frame_); + + // Unretained is safe here because MediaFeedsContentsObserver owns the mojo + // remote. + render_frame_->GetMediaFeedURL(base::BindOnce( + &MediaFeedsContentsObserver::DidFindMediaFeed, base::Unretained(this), + render_frame_host->GetLastCommittedOrigin())); +} + +void MediaFeedsContentsObserver::DidFindMediaFeed( + const url::Origin& origin, + const base::Optional<GURL>& url) { + auto* service = GetService(); + if (!service) + return; + + // The feed should be the same origin as the original page that had the feed + // on it. + if (url) { + if (!origin.IsSameOriginWith(url::Origin::Create(*url))) { + mojo::ReportBadMessage( + "GetMediaFeedURL. The URL should be the same origin has the page."); + return; + } + + service->SaveMediaFeed(*url); + } + + if (test_closure_) + std::move(test_closure_).Run(); +} + +media_history::MediaHistoryKeyedService* +MediaFeedsContentsObserver::GetService() { + auto* profile = + Profile::FromBrowserContext(web_contents()->GetBrowserContext()); + + return media_history::MediaHistoryKeyedServiceFactory::GetForProfile(profile); +} + +WEB_CONTENTS_USER_DATA_KEY_IMPL(MediaFeedsContentsObserver)
diff --git a/chrome/browser/media/feeds/media_feeds_contents_observer.h b/chrome/browser/media/feeds/media_feeds_contents_observer.h new file mode 100644 index 0000000..1061a46c --- /dev/null +++ b/chrome/browser/media/feeds/media_feeds_contents_observer.h
@@ -0,0 +1,59 @@ +// 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. + +#ifndef CHROME_BROWSER_MEDIA_FEEDS_MEDIA_FEEDS_CONTENTS_OBSERVER_H_ +#define CHROME_BROWSER_MEDIA_FEEDS_MEDIA_FEEDS_CONTENTS_OBSERVER_H_ + +#include "base/callback_forward.h" +#include "chrome/common/chrome_render_frame.mojom.h" +#include "content/public/browser/web_contents_observer.h" +#include "content/public/browser/web_contents_user_data.h" +#include "mojo/public/cpp/bindings/associated_remote.h" + +namespace media_history { +class MediaHistoryKeyedService; +} // namespace media_history + +namespace url { +class Origin; +} // namespace url + +class MediaFeedsContentsObserver + : public content::WebContentsObserver, + public content::WebContentsUserData<MediaFeedsContentsObserver> { + public: + ~MediaFeedsContentsObserver() override; + MediaFeedsContentsObserver(const MediaFeedsContentsObserver&) = delete; + MediaFeedsContentsObserver& operator=(const MediaFeedsContentsObserver&) = + delete; + + // content::WebContentsObserver: + void DidFinishNavigation(content::NavigationHandle* handle) override; + void DidFinishLoad(content::RenderFrameHost* render_frame_host, + const GURL& validated_url) override; + + void SetClosureForTest(base::RepeatingClosure callback) { + test_closure_ = std::move(callback); + } + + private: + friend class content::WebContentsUserData<MediaFeedsContentsObserver>; + + explicit MediaFeedsContentsObserver(content::WebContents* web_contents); + + void DidFindMediaFeed(const url::Origin& origin, + const base::Optional<GURL>& url); + + media_history::MediaHistoryKeyedService* GetService(); + + // The test closure will be called once we have checked the page for a media + // feed. + base::RepeatingClosure test_closure_; + + mojo::AssociatedRemote<chrome::mojom::ChromeRenderFrame> render_frame_; + + WEB_CONTENTS_USER_DATA_KEY_DECL(); +}; + +#endif // CHROME_BROWSER_MEDIA_HISTORY_MEDIA_HISTORY_CONTENTS_OBSERVER_H_
diff --git a/chrome/browser/media/history/media_history_store.h b/chrome/browser/media/history/media_history_store.h index c2b27416..ce427add 100644 --- a/chrome/browser/media/history/media_history_store.h +++ b/chrome/browser/media/history/media_history_store.h
@@ -96,13 +96,12 @@ scoped_refptr<base::UpdateableSequencedTaskRunner> GetDBTaskRunnerForTest(); - void EraseDatabaseAndCreateNew(); - void DeleteAllOriginData(const std::set<url::Origin>& origins); - void GetURLsInTableForTest(const std::string& table, base::OnceCallback<void(std::set<GURL>)> callback); void PostTaskToDBForTest(base::OnceClosure callback); + void EraseDatabaseAndCreateNew(); + void DeleteAllOriginData(const std::set<url::Origin>& origins); private: scoped_refptr<MediaHistoryStoreInternal> db_;
diff --git a/chrome/browser/metrics/chrome_feature_list_creator.h b/chrome/browser/metrics/chrome_feature_list_creator.h index 43ebe98..d90fb0f8 100644 --- a/chrome/browser/metrics/chrome_feature_list_creator.h +++ b/chrome/browser/metrics/chrome_feature_list_creator.h
@@ -82,6 +82,10 @@ // first-run. void SetupMasterPrefs(); + // Must be destroyed after |local_state_|. + std::unique_ptr<policy::ChromeBrowserPolicyConnector> + browser_policy_connector_; + // If TakePrefService() is called, the caller will take the ownership // of this variable. Stop using this variable afterwards. std::unique_ptr<PrefService> local_state_; @@ -98,9 +102,6 @@ std::unique_ptr<ChromeBrowserFieldTrials> browser_field_trials_; - std::unique_ptr<policy::ChromeBrowserPolicyConnector> - browser_policy_connector_; - #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) std::unique_ptr<installer::MasterPreferences> installer_master_prefs_; #endif
diff --git a/chrome/browser/offline_pages/prefetch/notifications/BUILD.gn b/chrome/browser/offline_pages/prefetch/notifications/BUILD.gn index 8ddb824..1e75b58 100644 --- a/chrome/browser/offline_pages/prefetch/notifications/BUILD.gn +++ b/chrome/browser/offline_pages/prefetch/notifications/BUILD.gn
@@ -2,6 +2,10 @@ # Use of this source code is governed by a BSD - style license that can be # found in the LICENSE file. +if (is_android) { + import("//build/config/android/rules.gni") +} + source_set("notifications") { sources = [ "prefetch_notification_client.cc",
diff --git a/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.cc b/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.cc new file mode 100644 index 0000000..48ab6c3 --- /dev/null +++ b/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.cc
@@ -0,0 +1,31 @@ +// 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. + +#include "chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.h" + +#include <utility> + +#include "base/strings/utf_string_conversions.h" +#include "chrome/android/chrome_jni_headers/PrefetchNotificationServiceBridge_jni.h" + +using base::android::JavaParamRef; +using base::android::ScopedJavaLocalRef; + +namespace offline_pages { +namespace prefetch { + +void JNI_PrefetchNotificationServiceBridge_Schedule( + JNIEnv* env, + const JavaParamRef<jstring>& j_title, + const JavaParamRef<jstring>& j_message) { + NOTIMPLEMENTED(); +} + +void LaunchDownloadHome() { + JNIEnv* env = base::android::AttachCurrentThread(); + Java_PrefetchNotificationServiceBridge_launchDownloadHome(env); +} + +} // namespace prefetch +} // namespace offline_pages
diff --git a/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.h b/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.h new file mode 100644 index 0000000..ed177f9 --- /dev/null +++ b/chrome/browser/offline_pages/prefetch/notifications/prefetch_notification_service_bridge.h
@@ -0,0 +1,20 @@ +// 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. + +#ifndef CHROME_BROWSER_OFFLINE_PAGES_PREFETCH_NOTIFICATIONS_PREFETCH_NOTIFICATION_SERVICE_BRIDGE_H_ +#define CHROME_BROWSER_OFFLINE_PAGES_PREFETCH_NOTIFICATIONS_PREFETCH_NOTIFICATION_SERVICE_BRIDGE_H_ + +#include "base/macros.h" + +namespace offline_pages { +namespace prefetch { +// Functions for calling into PrefetchNotifiactionServiceBridge.java. + +// Launch offline home in ChromeActivity. +void LaunchDownloadHome(); + +} // namespace prefetch +} // namespace offline_pages + +#endif // CHROME_BROWSER_OFFLINE_PAGES_PREFETCH_NOTIFICATIONS_PREFETCH_NOTIFICATION_SERVICE_BRIDGE_H_
diff --git a/chrome/browser/paint_preview/services/paint_preview_tab_service.cc b/chrome/browser/paint_preview/services/paint_preview_tab_service.cc index 51680583..e606289 100644 --- a/chrome/browser/paint_preview/services/paint_preview_tab_service.cc +++ b/chrome/browser/paint_preview/services/paint_preview_tab_service.cc
@@ -77,7 +77,10 @@ FinishedCallback callback, PaintPreviewBaseService::CaptureStatus status, std::unique_ptr<PaintPreviewProto> proto) { - auto result = base::MakeRefCounted<base::RefCountedData<bool>>(false); + if (status != PaintPreviewBaseService::CaptureStatus::kOk || !proto) { + std::move(callback).Run(Status::kCaptureFailed); + return; + } auto file_manager = GetFileManager(); GetTaskRunner()->PostTaskAndReplyWithResult( FROM_HERE,
diff --git a/chrome/browser/paint_preview/services/paint_preview_tab_service_unittest.cc b/chrome/browser/paint_preview/services/paint_preview_tab_service_unittest.cc index aa7830ee..c376a9d3 100644 --- a/chrome/browser/paint_preview/services/paint_preview_tab_service_unittest.cc +++ b/chrome/browser/paint_preview/services/paint_preview_tab_service_unittest.cc
@@ -138,6 +138,44 @@ content::RunAllTasksUntilIdle(); } +TEST_F(PaintPreviewTabServiceTest, CaptureTabFailed) { + content::NavigationSimulator::NavigateAndCommitFromBrowser( + web_contents(), GURL("http://www.example.com")); + const int kTabId = 1U; + + MockPaintPreviewRecorder recorder; + recorder.SetResponse(mojom::PaintPreviewStatus::kFailed); + OverrideInterface(&recorder); + + auto* service = GetService(); + base::RunLoop loop; + service->CaptureTab( + kTabId, web_contents(), + base::BindOnce( + [](base::OnceClosure quit, PaintPreviewTabService::Status status) { + EXPECT_EQ(status, PaintPreviewTabService::Status::kCaptureFailed); + std::move(quit).Run(); + }, + loop.QuitClosure())); + loop.Run(); + + auto file_manager = service->GetFileManager(); + auto key = file_manager->CreateKey(kTabId); + service->GetTaskRunner()->PostTaskAndReplyWithResult( + FROM_HERE, + base::BindOnce(&FileManager::DirectoryExists, file_manager, key), + base::BindOnce([](bool exists) { EXPECT_TRUE(exists); })); + content::RunAllTasksUntilIdle(); + + service->TabClosed(kTabId); + content::RunAllTasksUntilIdle(); + service->GetTaskRunner()->PostTaskAndReplyWithResult( + FROM_HERE, + base::BindOnce(&FileManager::DirectoryExists, file_manager, key), + base::BindOnce([](bool exists) { EXPECT_FALSE(exists); })); + content::RunAllTasksUntilIdle(); +} + TEST_F(PaintPreviewTabServiceTest, CaptureTabTwice) { content::NavigationSimulator::NavigateAndCommitFromBrowser( web_contents(), GURL("http://www.example.com"));
diff --git a/chrome/browser/password_manager/password_accessory_controller_impl.cc b/chrome/browser/password_manager/password_accessory_controller_impl.cc index 06133aee..fec4632 100644 --- a/chrome/browser/password_manager/password_accessory_controller_impl.cc +++ b/chrome/browser/password_manager/password_accessory_controller_impl.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/containers/span.h" +#include "base/feature_list.h" #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" @@ -22,6 +23,7 @@ #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" #include "chrome/browser/vr/vr_tab_helper.h" #include "chrome/grit/generated_resources.h" +#include "components/autofill/core/browser/ui/accessory_sheet_data.h" #include "components/autofill/core/browser/ui/accessory_sheet_enums.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_util.h" @@ -29,6 +31,7 @@ #include "components/password_manager/content/browser/content_password_manager_driver.h" #include "components/password_manager/content/browser/content_password_manager_driver_factory.h" #include "components/password_manager/core/browser/android_affiliation/affiliation_utils.h" +#include "components/password_manager/core/browser/origin_credential_store.h" #include "components/password_manager/core/browser/password_manager_driver.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/common/password_manager_features.h" @@ -43,6 +46,8 @@ using autofill::mojom::FocusedFieldType; using password_manager::CredentialCache; using password_manager::UiCredential; +using BlacklistedStatus = + password_manager::OriginCredentialStore::BlacklistedStatus; using FillingSource = ManualFillingController::FillingSource; using IsPslMatch = autofill::UserInfo::IsPslMatch; @@ -251,12 +256,26 @@ manage_passwords_title, autofill::AccessoryAction::MANAGE_PASSWORDS)); bool has_suggestions = !info_to_add.empty(); + AccessorySheetData data = autofill::CreateAccessorySheetData( + autofill::AccessoryTabType::PASSWORDS, GetTitle(has_suggestions, origin), + std::move(info_to_add), std::move(footer_commands_to_add)); - GetManualFillingController()->RefreshSuggestions( - autofill::CreateAccessorySheetData(autofill::AccessoryTabType::PASSWORDS, - GetTitle(has_suggestions, origin), - std::move(info_to_add), - std::move(footer_commands_to_add))); + if (base::FeatureList::IsEnabled( + password_manager::features::kRecoverFromNeverSaveAndroid) && + is_password_field) { + BlacklistedStatus blacklisted_status = + credential_cache_->GetCredentialStore(origin).GetBlacklistedStatus(); + if (blacklisted_status == BlacklistedStatus::kWasBlacklisted || + blacklisted_status == BlacklistedStatus::kIsBlacklisted) { + bool enabled = (blacklisted_status == BlacklistedStatus::kWasBlacklisted); + autofill::OptionToggle option_toggle = autofill::OptionToggle( + l10n_util::GetStringUTF16(IDS_PASSWORD_SAVING_STATUS_TOGGLE), enabled, + autofill::AccessoryAction::TOGGLE_SAVE_PASSWORDS); + data.set_option_toggle(option_toggle); + } + } + + GetManualFillingController()->RefreshSuggestions(std::move(data)); } void PasswordAccessoryControllerImpl::OnGenerationRequested(
diff --git a/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc b/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc index d628e1f..52a29ef 100644 --- a/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc +++ b/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc
@@ -550,3 +550,43 @@ autofill::password_generation::PasswordGenerationType::kManual)); controller()->OnOptionSelected(AccessoryAction::GENERATE_PASSWORD_MANUAL); } + +TEST_F(PasswordAccessoryControllerTest, AddsSaveToggleIfIsBlacklisted) { + cache()->SaveCredentialsAndBlacklistedForOrigin( + {}, CredentialCache::IsOriginBlacklisted(true), + url::Origin::Create(GURL(kExampleSite))); + AccessorySheetData::Builder data_builder(AccessoryTabType::PASSWORDS, + passwords_empty_str(kExampleDomain)); + data_builder + .SetOptionToggle(base::ASCIIToUTF16("Save passwords"), false, + autofill::AccessoryAction::TOGGLE_SAVE_PASSWORDS) + .AppendFooterCommand(manage_passwords_str(), + autofill::AccessoryAction::MANAGE_PASSWORDS); + EXPECT_CALL(mock_manual_filling_controller_, + RefreshSuggestions(std::move(data_builder).Build())); + controller()->RefreshSuggestionsForField( + FocusedFieldType::kFillablePasswordField, + /*is_manual_generation_available=*/false); +} + +TEST_F(PasswordAccessoryControllerTest, AddsSaveToggleIfWasBlacklisted) { + cache()->SaveCredentialsAndBlacklistedForOrigin( + {}, CredentialCache::IsOriginBlacklisted(true), + url::Origin::Create(GURL(kExampleSite))); + // Simulate unblacklisting. + cache()->UpdateBlacklistedForOrigin( + url::Origin::Create(GURL(kExampleSite)), + CredentialCache::IsOriginBlacklisted(false)); + AccessorySheetData::Builder data_builder(AccessoryTabType::PASSWORDS, + passwords_empty_str(kExampleDomain)); + data_builder + .SetOptionToggle(base::ASCIIToUTF16("Save passwords"), true, + autofill::AccessoryAction::TOGGLE_SAVE_PASSWORDS) + .AppendFooterCommand(manage_passwords_str(), + autofill::AccessoryAction::MANAGE_PASSWORDS); + EXPECT_CALL(mock_manual_filling_controller_, + RefreshSuggestions(std::move(data_builder).Build())); + controller()->RefreshSuggestionsForField( + FocusedFieldType::kFillablePasswordField, + /*is_manual_generation_available=*/false); +}
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc b/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc index 753ec0a..6922771 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_browsertest.cc
@@ -14,7 +14,10 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" +#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" +#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" #include "chrome/browser/prerender/isolated/isolated_prerender_features.h" +#include "chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service_factory.h" #include "chrome/browser/prerender/isolated/isolated_prerender_service_workers_observer.h" @@ -29,14 +32,24 @@ #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" +#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_test_utils.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" +#include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h" +#include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h" +#include "components/data_reduction_proxy/proto/client_config.pb.h" #include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/network_service_instance.h" +#include "content/public/common/network_service_util.h" #include "content/public/test/browser_test_base.h" #include "content/public/test/browser_test_utils.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/embedded_test_server_connection_listener.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" +#include "services/network/public/mojom/network_service_test.mojom.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" #include "url/origin.h" @@ -45,6 +58,48 @@ constexpr gfx::Size kSize(640, 480); +void SimulateNetworkChange(network::mojom::ConnectionType type) { + if (!content::IsInProcessNetworkService()) { + mojo::Remote<network::mojom::NetworkServiceTest> network_service_test; + content::GetNetworkService()->BindTestInterface( + network_service_test.BindNewPipeAndPassReceiver()); + base::RunLoop run_loop; + network_service_test->SimulateNetworkChange(type, run_loop.QuitClosure()); + run_loop.Run(); + return; + } + net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( + net::NetworkChangeNotifier::ConnectionType(type)); +} + +class TestCustomProxyConfigClient + : public network::mojom::CustomProxyConfigClient { + public: + explicit TestCustomProxyConfigClient( + mojo::PendingReceiver<network::mojom::CustomProxyConfigClient> + pending_receiver, + base::OnceClosure update_closure) + : receiver_(this, std::move(pending_receiver)), + update_closure_(std::move(update_closure)) {} + + // network::mojom::CustomProxyConfigClient: + void OnCustomProxyConfigUpdated( + network::mojom::CustomProxyConfigPtr proxy_config) override { + config_ = std::move(proxy_config); + std::move(update_closure_).Run(); + } + void MarkProxiesAsBad(base::TimeDelta bypass_duration, + const net::ProxyList& bad_proxies, + MarkProxiesAsBadCallback callback) override {} + void ClearBadProxiesCache() override {} + + network::mojom::CustomProxyConfigPtr config_; + + private: + mojo::Receiver<network::mojom::CustomProxyConfigClient> receiver_; + base::OnceClosure update_closure_; +}; + } // namespace // Occasional flakes on Windows (https://crbug.com/1045971). @@ -58,10 +113,30 @@ : public InProcessBrowserTest, public prerender::PrerenderHandle::Observer { public: - IsolatedPrerenderBrowserTest() = default; + IsolatedPrerenderBrowserTest() { + origin_server_ = std::make_unique<net::EmbeddedTestServer>( + net::EmbeddedTestServer::TYPE_HTTPS); + origin_server_->ServeFilesFromSourceDirectory("chrome/test/data"); + origin_server_->RegisterRequestMonitor(base::BindRepeating( + &IsolatedPrerenderBrowserTest::MonitorResourceRequest, + base::Unretained(this))); + EXPECT_TRUE(origin_server_->Start()); + + config_server_ = std::make_unique<net::EmbeddedTestServer>( + net::EmbeddedTestServer::TYPE_HTTPS); + config_server_->RegisterRequestHandler( + base::BindRepeating(&IsolatedPrerenderBrowserTest::GetConfigResponse, + base::Unretained(this))); + EXPECT_TRUE(config_server_->Start()); + } void SetUp() override { scoped_feature_list_.InitAndEnableFeature(features::kIsolatePrerenders); + + holdback_scoped_feature_list_.InitAndEnableFeatureWithParameters( + data_reduction_proxy::features::kDataReductionProxyHoldback, + {{"force_enable_config_service_fetches", "true"}}); + InProcessBrowserTest::SetUp(); } @@ -70,19 +145,14 @@ // Ensure the service gets created before the tests start. IsolatedPrerenderServiceFactory::GetForProfile(browser()->profile()); - - origin_server_ = std::make_unique<net::EmbeddedTestServer>( - net::EmbeddedTestServer::TYPE_HTTPS); - origin_server_->ServeFilesFromSourceDirectory("chrome/test/data"); - origin_server_->RegisterRequestMonitor(base::BindRepeating( - &IsolatedPrerenderBrowserTest::MonitorResourceRequest, - base::Unretained(this))); - ASSERT_TRUE(origin_server_->Start()); } void SetUpCommandLine(base::CommandLine* cmd) override { InProcessBrowserTest::SetUpCommandLine(cmd); cmd->AppendSwitchASCII("host-rules", "MAP * 127.0.0.1"); + cmd->AppendSwitchASCII( + data_reduction_proxy::switches::kDataReductionProxyConfigURL, + config_server_->base_url().spec()); } void SetDataSaverEnabled(bool enabled) { @@ -106,6 +176,32 @@ kSize); } + void VerifyProxyConfig(network::mojom::CustomProxyConfigPtr config, + bool want_empty = false) { + ASSERT_TRUE(config); + + EXPECT_EQ(config->rules.type, + net::ProxyConfig::ProxyRules::Type::PROXY_LIST_PER_SCHEME); + EXPECT_FALSE(config->should_override_existing_config); + EXPECT_FALSE(config->allow_non_idempotent_methods); + EXPECT_FALSE(config->assume_https_proxies_support_quic); + EXPECT_TRUE(config->can_use_proxy_on_http_url_redirect_cycles); + + EXPECT_TRUE(config->pre_cache_headers.IsEmpty()); + EXPECT_TRUE(config->post_cache_headers.IsEmpty()); + + EXPECT_EQ(config->rules.proxies_for_http.size(), 0U); + EXPECT_EQ(config->rules.proxies_for_ftp.size(), 0U); + + if (want_empty) { + EXPECT_EQ(config->rules.proxies_for_https.size(), 0U); + } else { + ASSERT_EQ(config->rules.proxies_for_https.size(), 1U); + EXPECT_EQ(GURL(config->rules.proxies_for_https.Get().ToURI()), + GURL("https://prefetch-proxy.com:443/")); + } + } + GURL GetOriginServerURL(const std::string& path) const { return origin_server_->GetURL("testorigin.com", path); } @@ -140,6 +236,32 @@ } } + // Called when |config_server_| receives a request for config fetch. + std::unique_ptr<net::test_server::HttpResponse> GetConfigResponse( + const net::test_server::HttpRequest& request) { + data_reduction_proxy::ClientConfig config = + data_reduction_proxy::CreateConfig( + "secretsessionkey", 1000, 0, + data_reduction_proxy::ProxyServer_ProxyScheme_HTTP, + "proxy-host.net", 80, + data_reduction_proxy::ProxyServer_ProxyScheme_HTTP, "fallback.net", + 80, 0.5f, false); + + data_reduction_proxy::PrefetchProxyConfig_Proxy* valid_secure_proxy = + config.mutable_prefetch_proxy_config()->add_proxy_list(); + valid_secure_proxy->set_type( + data_reduction_proxy::PrefetchProxyConfig_Proxy_Type_CONNECT); + valid_secure_proxy->set_host("prefetch-proxy.com"); + valid_secure_proxy->set_port(443); + valid_secure_proxy->set_scheme( + data_reduction_proxy::PrefetchProxyConfig_Proxy_Scheme_HTTPS); + + auto response = std::make_unique<net::test_server::BasicHttpResponse>(); + response->set_content(config.SerializeAsString()); + response->set_content_type("text/plain"); + return response; + } + // prerender::PrerenderHandle::Observer: void OnPrerenderStart(prerender::PrerenderHandle* handle) override {} void OnPrerenderStopLoading(prerender::PrerenderHandle* handle) override {} @@ -154,7 +276,9 @@ } base::test::ScopedFeatureList scoped_feature_list_; + base::test::ScopedFeatureList holdback_scoped_feature_list_; std::unique_ptr<net::EmbeddedTestServer> origin_server_; + std::unique_ptr<net::EmbeddedTestServer> config_server_; size_t origin_server_request_with_cookies_ = 0; }; @@ -217,3 +341,25 @@ ->IsServiceWorkerRegisteredForOrigin( url::Origin::Create(GURL("https://unregistered.com")))); } + +IN_PROC_BROWSER_TEST_F(IsolatedPrerenderBrowserTest, + DISABLE_ON_WIN_MAC_CHROMEOS(DRPClientConfigPlumbing)) { + SetDataSaverEnabled(true); + + IsolatedPrerenderService* isolated_prerender_service = + IsolatedPrerenderServiceFactory::GetForProfile(browser()->profile()); + + base::RunLoop run_loop; + mojo::Remote<network::mojom::CustomProxyConfigClient> client_remote; + TestCustomProxyConfigClient config_client( + client_remote.BindNewPipeAndPassReceiver(), run_loop.QuitClosure()); + isolated_prerender_service->proxy_configurator()->AddCustomProxyConfigClient( + std::move(client_remote)); + base::RunLoop().RunUntilIdle(); + + // A network change forces the config to be fetched. + SimulateNetworkChange(network::mojom::ConnectionType::CONNECTION_3G); + run_loop.Run(); + + VerifyProxyConfig(std::move(config_client.config_)); +}
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_features.cc b/chrome/browser/prerender/isolated/isolated_prerender_features.cc index 1533afb..8901f74 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_features.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_features.cc
@@ -15,10 +15,6 @@ const base::Feature kIsolatePrerendersMustProbeOrigin{ "IsolatePrerendersMustProbeOrigin", base::FEATURE_DISABLED_BY_DEFAULT}; -// Forces all isolated prerenders to be proxied through a CONNECT tunnel. -const base::Feature kIsolatedPrerenderUsesProxy{ - "IsolatedPrerenderUsesProxy", base::FEATURE_DISABLED_BY_DEFAULT}; - // Prefetches main frame HTML resources for results on Google SRPs. const base::Feature kPrefetchSRPNavigationPredictions_HTMLOnly{ "PrefetchSRPNavigationPredictions_HTMLOnly",
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_features.h b/chrome/browser/prerender/isolated/isolated_prerender_features.h index 718ed77..c1785ef 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_features.h +++ b/chrome/browser/prerender/isolated/isolated_prerender_features.h
@@ -11,7 +11,6 @@ extern const base::Feature kIsolatePrerenders; extern const base::Feature kIsolatePrerendersMustProbeOrigin; -extern const base::Feature kIsolatedPrerenderUsesProxy; extern const base::Feature kPrefetchSRPNavigationPredictions_HTMLOnly; } // namespace features
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_params.cc b/chrome/browser/prerender/isolated/isolated_prerender_params.cc index e5bc24e..a59f7b06 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_params.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_params.cc
@@ -16,22 +16,10 @@ return base::FeatureList::IsEnabled(features::kIsolatePrerenders); } -base::Optional<GURL> IsolatedPrerenderProxyServer() { - if (!base::FeatureList::IsEnabled(features::kIsolatedPrerenderUsesProxy)) - return base::nullopt; - - GURL url(base::GetFieldTrialParamValueByFeature( - features::kIsolatedPrerenderUsesProxy, "proxy_server_url")); - if (!url.is_valid() || !url.has_host() || !url.has_scheme()) - return base::nullopt; - return url; -} - bool IsolatedPrerenderShouldReplaceDataReductionCustomProxy() { bool replace = data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() && - IsolatedPrerenderIsEnabled() && - IsolatedPrerenderProxyServer().has_value(); + IsolatedPrerenderIsEnabled(); // TODO(robertogden): Remove this once all pieces are landed. DCHECK(!replace); return replace;
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_params.h b/chrome/browser/prerender/isolated/isolated_prerender_params.h index 10719ac..cc3626e 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_params.h +++ b/chrome/browser/prerender/isolated/isolated_prerender_params.h
@@ -13,9 +13,6 @@ // Returns true if the Isolated Prerender feature is enabled. bool IsolatedPrerenderIsEnabled(); -// Returns the URL of the proxy server to use in isolated prerenders, if any. -base::Optional<GURL> IsolatedPrerenderProxyServer(); - // Returns true if the proxy for Isolated Prerenders should replace the DRP // custom proxy. bool IsolatedPrerenderShouldReplaceDataReductionCustomProxy();
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.cc b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.cc index 7a85632..6940460 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.cc
@@ -22,6 +22,13 @@ UpdateCustomProxyConfig(); } +void IsolatedPrerenderProxyConfigurator::UpdateProxyHosts( + const std::vector<GURL>& proxy_hosts) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + proxy_hosts_ = proxy_hosts; + UpdateCustomProxyConfig(); +} + void IsolatedPrerenderProxyConfigurator::AddCustomProxyConfigClient( mojo::Remote<network::mojom::CustomProxyConfigClient> config_client) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -39,18 +46,28 @@ if (!data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial()) return; - if (!IsolatedPrerenderProxyServer().has_value()) + if (!IsolatedPrerenderIsEnabled()) + return; + + // If a proxy config has never been sent, and there's no hosts to send, don't + // bother. + if (proxy_hosts_.empty() && !sent_proxy_update_) return; network::mojom::CustomProxyConfigPtr config = CreateCustomProxyConfig(); for (auto& client : proxy_config_clients_) { client->OnCustomProxyConfigUpdated(config->Clone()); } + + if (!proxy_hosts_.empty()) { + sent_proxy_update_ = true; + } } network::mojom::CustomProxyConfigPtr IsolatedPrerenderProxyConfigurator::CreateCustomProxyConfig() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + net::ProxyConfig::ProxyRules rules; DCHECK(rules.proxies_for_http.IsEmpty()); DCHECK(rules.proxies_for_https.IsEmpty()); @@ -60,9 +77,11 @@ net::ProxyConfig::ProxyRules::Type::PROXY_LIST_PER_SCHEME; // DIRECT is intentionally not added here because we want the proxy to always // be used in order to mask the user's IP address during the prerender. - config->rules.proxies_for_https.AddProxyServer(net::ProxyServer( - net::ProxyServer::SCHEME_HTTPS, - net::HostPortPair::FromURL(IsolatedPrerenderProxyServer().value()))); + for (const GURL& host : proxy_hosts_) { + DCHECK(host.is_valid()); + config->rules.proxies_for_https.AddProxyServer(net::ProxyServer( + net::ProxyServer::SCHEME_HTTPS, net::HostPortPair::FromURL(host))); + } // This ensures that the user's set proxy is honored, although we also disable // the feature is such cases. config->should_override_existing_config = false;
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.h b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.h index 990d6ecd..16263c6 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.h +++ b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator.h
@@ -5,12 +5,15 @@ #ifndef CHROME_BROWSER_PRERENDER_ISOLATED_ISOLATED_PRERENDER_PROXY_CONFIGURATOR_H_ #define CHROME_BROWSER_PRERENDER_ISOLATED_ISOLATED_PRERENDER_PROXY_CONFIGURATOR_H_ +#include <vector> + #include "base/sequence_checker.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote_set.h" #include "net/http/http_request_headers.h" #include "services/network/public/mojom/network_context.mojom.h" +#include "url/gurl.h" // Configures the use of the IP-masking CONNECT tunnel proxy for Isolated // Prerenders. @@ -19,9 +22,13 @@ IsolatedPrerenderProxyConfigurator(); ~IsolatedPrerenderProxyConfigurator(); + // Updates the headers needed to connect to the proxy. void UpdateTunnelHeaders( const net::HttpRequestHeaders& connect_tunnel_headers); + // Updates the hosts used to connect to the proxy. + void UpdateProxyHosts(const std::vector<GURL>& proxy_hosts); + // Adds a config client that can be used to update Data Reduction Proxy // settings. void AddCustomProxyConfigClient( @@ -38,6 +45,13 @@ // The headers used to setup the connect tunnel. net::HttpRequestHeaders connect_tunnel_headers_; + // The configured proxy hosts. + std::vector<GURL> proxy_hosts_; + + // Set to true when a custom proxy config with a non-empty set of proxies is + // sent to the Network Service. + bool sent_proxy_update_ = false; + // The set of clients that will get updates about changes to the proxy config. mojo::RemoteSet<network::mojom::CustomProxyConfigClient> proxy_config_clients_;
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator_unittest.cc b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator_unittest.cc index c5fde81..de2912c 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator_unittest.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_proxy_configurator_unittest.cc
@@ -65,7 +65,8 @@ } void VerifyLatestProxyConfig(const GURL& proxy_url, - const net::HttpRequestHeaders& headers) { + const net::HttpRequestHeaders& headers, + bool want_empty = false) { auto config = LatestProxyConfig(); ASSERT_TRUE(config); @@ -83,8 +84,12 @@ EXPECT_EQ(config->rules.proxies_for_http.size(), 0U); EXPECT_EQ(config->rules.proxies_for_ftp.size(), 0U); - ASSERT_EQ(config->rules.proxies_for_https.size(), 1U); - EXPECT_EQ(GURL(config->rules.proxies_for_https.Get().ToURI()), proxy_url); + if (want_empty) { + EXPECT_EQ(config->rules.proxies_for_https.size(), 0U); + } else { + ASSERT_EQ(config->rules.proxies_for_https.size(), 1U); + EXPECT_EQ(GURL(config->rules.proxies_for_https.Get().ToURI()), proxy_url); + } } IsolatedPrerenderProxyConfigurator* configurator() { @@ -97,10 +102,10 @@ std::unique_ptr<TestCustomProxyConfigClient> config_client_; }; -TEST_F(IsolatedPrerenderProxyConfiguratorTest, BothFeaturesOff) { +TEST_F(IsolatedPrerenderProxyConfiguratorTest, FeaturesOff) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {}, {features::kIsolatedPrerenderUsesProxy, + {}, {features::kIsolatePrerenders, data_reduction_proxy::features::kDataReductionProxyHoldback}); configurator()->UpdateCustomProxyConfig(); @@ -111,7 +116,7 @@ TEST_F(IsolatedPrerenderProxyConfiguratorTest, DRPFeatureOff) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kIsolatedPrerenderUsesProxy}, + {features::kIsolatePrerenders}, {data_reduction_proxy::features::kDataReductionProxyHoldback}); configurator()->UpdateCustomProxyConfig(); @@ -120,11 +125,11 @@ EXPECT_FALSE(LatestProxyConfig()); } -TEST_F(IsolatedPrerenderProxyConfiguratorTest, ProxyFeatureOff) { +TEST_F(IsolatedPrerenderProxyConfiguratorTest, PrefetchFeatureOff) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( {data_reduction_proxy::features::kDataReductionProxyHoldback}, - {features::kIsolatedPrerenderUsesProxy}); + {features::kIsolatePrerenders}); configurator()->UpdateCustomProxyConfig(); base::RunLoop().RunUntilIdle(); @@ -132,64 +137,48 @@ EXPECT_FALSE(LatestProxyConfig()); } -TEST_F(IsolatedPrerenderProxyConfiguratorTest, NoProxyServer) { - base::test::ScopedFeatureList drp_scoped_feature_list; - drp_scoped_feature_list.InitAndEnableFeature( - data_reduction_proxy::features::kDataReductionProxyHoldback); +TEST_F(IsolatedPrerenderProxyConfiguratorTest, NoProxyServers) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + {features::kIsolatePrerenders, + data_reduction_proxy::features::kDataReductionProxyHoldback}, + {}); - base::test::ScopedFeatureList proxy_scoped_feature_list; - proxy_scoped_feature_list.InitAndEnableFeature( - features::kIsolatedPrerenderUsesProxy); - - configurator()->UpdateCustomProxyConfig(); + configurator()->UpdateProxyHosts({}); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(LatestProxyConfig()); } -TEST_F(IsolatedPrerenderProxyConfiguratorTest, InvalidProxyServerURL_NoScheme) { - base::test::ScopedFeatureList drp_scoped_feature_list; - drp_scoped_feature_list.InitAndEnableFeature( - data_reduction_proxy::features::kDataReductionProxyHoldback); +TEST_F(IsolatedPrerenderProxyConfiguratorTest, ClearProxyServers) { + GURL proxy_url("https://proxy.com"); + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + {features::kIsolatePrerenders, + data_reduction_proxy::features::kDataReductionProxyHoldback}, + {}); - base::test::ScopedFeatureList proxy_scoped_feature_list; - proxy_scoped_feature_list.InitAndEnableFeatureWithParameters( - features::kIsolatedPrerenderUsesProxy, {{"proxy_server_url", "invalid"}}); - - configurator()->UpdateCustomProxyConfig(); + configurator()->UpdateProxyHosts({proxy_url}); base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(LatestProxyConfig()); -} + net::HttpRequestHeaders headers; + VerifyLatestProxyConfig(proxy_url, headers); -TEST_F(IsolatedPrerenderProxyConfiguratorTest, InvalidProxyServerURL_NoHost) { - base::test::ScopedFeatureList drp_scoped_feature_list; - drp_scoped_feature_list.InitAndEnableFeature( - data_reduction_proxy::features::kDataReductionProxyHoldback); - - base::test::ScopedFeatureList proxy_scoped_feature_list; - proxy_scoped_feature_list.InitAndEnableFeatureWithParameters( - features::kIsolatedPrerenderUsesProxy, - {{"proxy_server_url", "https://"}}); - - configurator()->UpdateCustomProxyConfig(); + configurator()->UpdateProxyHosts({}); base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(LatestProxyConfig()); + VerifyLatestProxyConfig(GURL(), headers, /*want_empty=*/true); } TEST_F(IsolatedPrerenderProxyConfiguratorTest, ValidProxyServerURL) { GURL proxy_url("https://proxy.com"); - base::test::ScopedFeatureList drp_scoped_feature_list; - drp_scoped_feature_list.InitAndEnableFeature( - data_reduction_proxy::features::kDataReductionProxyHoldback); + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + {features::kIsolatePrerenders, + data_reduction_proxy::features::kDataReductionProxyHoldback}, + {}); - base::test::ScopedFeatureList proxy_scoped_feature_list; - proxy_scoped_feature_list.InitAndEnableFeatureWithParameters( - features::kIsolatedPrerenderUsesProxy, - {{"proxy_server_url", proxy_url.spec()}}); - - configurator()->UpdateCustomProxyConfig(); + configurator()->UpdateProxyHosts({proxy_url}); base::RunLoop().RunUntilIdle(); net::HttpRequestHeaders headers; @@ -198,18 +187,16 @@ TEST_F(IsolatedPrerenderProxyConfiguratorTest, ValidProxyServerURLWithHeaders) { GURL proxy_url("https://proxy.com"); - base::test::ScopedFeatureList drp_scoped_feature_list; - drp_scoped_feature_list.InitAndEnableFeature( - data_reduction_proxy::features::kDataReductionProxyHoldback); - - base::test::ScopedFeatureList proxy_scoped_feature_list; - proxy_scoped_feature_list.InitAndEnableFeatureWithParameters( - features::kIsolatedPrerenderUsesProxy, - {{"proxy_server_url", proxy_url.spec()}}); + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + {features::kIsolatePrerenders, + data_reduction_proxy::features::kDataReductionProxyHoldback}, + {}); net::HttpRequestHeaders headers; headers.SetHeader("X-Testing", "Hello World"); configurator()->UpdateTunnelHeaders(headers); + configurator()->UpdateProxyHosts({proxy_url}); base::RunLoop().RunUntilIdle(); VerifyLatestProxyConfig(proxy_url, headers);
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_service.cc b/chrome/browser/prerender/isolated/isolated_prerender_service.cc index 17a1d83..61ce965 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_service.cc +++ b/chrome/browser/prerender/isolated/isolated_prerender_service.cc
@@ -37,5 +37,10 @@ proxy_configurator_->UpdateTunnelHeaders(headers); } +void IsolatedPrerenderService::OnPrefetchProxyHostsChanged( + const std::vector<GURL>& prefetch_proxies) { + proxy_configurator_->UpdateProxyHosts(prefetch_proxies); +} + void IsolatedPrerenderService::OnSettingsInitialized() {} void IsolatedPrerenderService::OnDataSaverEnabledChanged(bool enabled) {}
diff --git a/chrome/browser/prerender/isolated/isolated_prerender_service.h b/chrome/browser/prerender/isolated/isolated_prerender_service.h index 6b70b2a4..d0cc393 100644 --- a/chrome/browser/prerender/isolated/isolated_prerender_service.h +++ b/chrome/browser/prerender/isolated/isolated_prerender_service.h
@@ -6,9 +6,11 @@ #define CHROME_BROWSER_PRERENDER_ISOLATED_ISOLATED_PRERENDER_SERVICE_H_ #include <memory> +#include <vector> #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" #include "components/keyed_service/core/keyed_service.h" +#include "url/gurl.h" class Profile; class IsolatedPrerenderProxyConfigurator; @@ -36,6 +38,8 @@ const net::HttpRequestHeaders& headers) override; void OnSettingsInitialized() override; void OnDataSaverEnabledChanged(bool enabled) override; + void OnPrefetchProxyHostsChanged( + const std::vector<GURL>& prefetch_proxies) override; // KeyedService: void Shutdown() override;
diff --git a/chrome/browser/profiles/profile_attributes_storage.cc b/chrome/browser/profiles/profile_attributes_storage.cc index b861bda..898feb78 100644 --- a/chrome/browser/profiles/profile_attributes_storage.cc +++ b/chrome/browser/profiles/profile_attributes_storage.cc
@@ -357,8 +357,9 @@ std::unique_ptr<ProfileAvatarDownloader>& current_downloader = avatar_images_downloads_in_progress_[file_name]; current_downloader.reset(new ProfileAvatarDownloader( - icon_index, base::Bind(&ProfileAttributesStorage::SaveAvatarImageAtPath, - AsWeakPtr(), profile_path))); + icon_index, + base::BindOnce(&ProfileAttributesStorage::SaveAvatarImageAtPathNoCallback, + AsWeakPtr(), profile_path))); current_downloader->Start(); } @@ -434,3 +435,12 @@ NotifyOnProfileHighResAvatarLoaded(profile_path); } + +void ProfileAttributesStorage::SaveAvatarImageAtPathNoCallback( + const base::FilePath& profile_path, + gfx::Image image, + const std::string& key, + const base::FilePath& image_path) { + SaveAvatarImageAtPath(profile_path, image, key, image_path, + base::OnceClosure()); +}
diff --git a/chrome/browser/profiles/profile_attributes_storage.h b/chrome/browser/profiles/profile_attributes_storage.h index 88968a72..8c6f70ef 100644 --- a/chrome/browser/profiles/profile_attributes_storage.h +++ b/chrome/browser/profiles/profile_attributes_storage.h
@@ -192,6 +192,12 @@ base::OnceClosure callback, bool success) const; + // Helper function that calls SaveAvatarImageAtPath without a callback. + void SaveAvatarImageAtPathNoCallback(const base::FilePath& profile_path, + gfx::Image image, + const std::string& key, + const base::FilePath& image_path); + // Notifies observers. void NotifyOnProfileHighResAvatarLoaded( const base::FilePath& profile_path) const;
diff --git a/chrome/browser/profiles/profile_attributes_storage_unittest.cc b/chrome/browser/profiles/profile_attributes_storage_unittest.cc index c4c526e6..7b6b0c81 100644 --- a/chrome/browser/profiles/profile_attributes_storage_unittest.cc +++ b/chrome/browser/profiles/profile_attributes_storage_unittest.cc
@@ -725,8 +725,9 @@ // Simulate downloading a high-res avatar. ProfileAvatarDownloader avatar_downloader( - kIconIndex, base::Bind(&ProfileAttributesStorage::SaveAvatarImageAtPath, - base::Unretained(storage()), entry->GetPath())); + kIconIndex, + base::Bind(&ProfileAttributesStorage::SaveAvatarImageAtPathNoCallback, + base::Unretained(storage()), entry->GetPath())); // Put a real bitmap into "bitmap": a 2x2 bitmap of green 32 bit pixels. SkBitmap bitmap;
diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/browser/profiles/profile_avatar_downloader.cc index 365120a..93cd389 100644 --- a/chrome/browser/profiles/profile_avatar_downloader.cc +++ b/chrome/browser/profiles/profile_avatar_downloader.cc
@@ -21,11 +21,9 @@ "https://www.gstatic.com/chrome/profile_avatars/"; } -ProfileAvatarDownloader::ProfileAvatarDownloader( - size_t icon_index, - const FetchCompleteCallback& callback) - : icon_index_(icon_index), - callback_(callback) { +ProfileAvatarDownloader::ProfileAvatarDownloader(size_t icon_index, + FetchCompleteCallback callback) + : icon_index_(icon_index), callback_(std::move(callback)) { DCHECK(!callback_.is_null()); GURL url(std::string(kHighResAvatarDownloadUrlPrefix) + profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index)); @@ -81,8 +79,8 @@ return; // Decode the downloaded bitmap. Ownership of the image is taken by |cache_|. - callback_.Run(gfx::Image::CreateFrom1xBitmap(*bitmap), - profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index_), - profiles::GetPathOfHighResAvatarAtIndex(icon_index_), - base::OnceClosure()); + std::move(callback_).Run( + gfx::Image::CreateFrom1xBitmap(*bitmap), + profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index_), + profiles::GetPathOfHighResAvatarAtIndex(icon_index_)); }
diff --git a/chrome/browser/profiles/profile_avatar_downloader.h b/chrome/browser/profiles/profile_avatar_downloader.h index 9c52b93..5fae7fc5 100644 --- a/chrome/browser/profiles/profile_avatar_downloader.h +++ b/chrome/browser/profiles/profile_avatar_downloader.h
@@ -16,14 +16,10 @@ class ProfileAvatarDownloader : public BitmapFetcherDelegate { public: - using FetchCompleteCallback = - base::RepeatingCallback<void(gfx::Image, - const std::string&, - const base::FilePath&, - base::OnceClosure)>; + using FetchCompleteCallback = base::OnceCallback< + void(gfx::Image, const std::string&, const base::FilePath&)>; - ProfileAvatarDownloader(size_t icon_index, - const FetchCompleteCallback& callback); + ProfileAvatarDownloader(size_t icon_index, FetchCompleteCallback callback); ~ProfileAvatarDownloader() override; void Start();
diff --git a/chrome/browser/profiles/profile_key_android.cc b/chrome/browser/profiles/profile_key_android.cc index 4fdc25e6..913d694305 100644 --- a/chrome/browser/profiles/profile_key_android.cc +++ b/chrome/browser/profiles/profile_key_android.cc
@@ -42,9 +42,9 @@ } // static -ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetLastUsedProfileKey( +ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetLastUsedRegularProfileKey( JNIEnv* env) { - ProfileKey* key = ::android::GetLastUsedProfileKey(); + ProfileKey* key = ::android::GetLastUsedRegularProfileKey(); if (key == nullptr) { NOTREACHED() << "ProfileKey not found."; return ScopedJavaLocalRef<jobject>(); @@ -74,8 +74,9 @@ } // static -ScopedJavaLocalRef<jobject> JNI_ProfileKey_GetLastUsedProfileKey(JNIEnv* env) { - return ProfileKeyAndroid::GetLastUsedProfileKey(env); +ScopedJavaLocalRef<jobject> JNI_ProfileKey_GetLastUsedRegularProfileKey( + JNIEnv* env) { + return ProfileKeyAndroid::GetLastUsedRegularProfileKey(env); } ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetJavaObject() {
diff --git a/chrome/browser/profiles/profile_key_android.h b/chrome/browser/profiles/profile_key_android.h index ee3917a..b304b1e 100644 --- a/chrome/browser/profiles/profile_key_android.h +++ b/chrome/browser/profiles/profile_key_android.h
@@ -22,8 +22,8 @@ static ProfileKey* FromProfileKeyAndroid( const base::android::JavaRef<jobject>& obj); - static base::android::ScopedJavaLocalRef<jobject> GetLastUsedProfileKey( - JNIEnv* env); + static base::android::ScopedJavaLocalRef<jobject> + GetLastUsedRegularProfileKey(JNIEnv* env); // Return the original profile key. base::android::ScopedJavaLocalRef<jobject> GetOriginalKey(
diff --git a/chrome/browser/profiles/profiles_state.cc b/chrome/browser/profiles/profiles_state.cc index 7fb65f2c2..7d515d7 100644 --- a/chrome/browser/profiles/profiles_state.cc +++ b/chrome/browser/profiles/profiles_state.cc
@@ -37,7 +37,6 @@ #include <algorithm> #include "chrome/browser/profiles/gaia_info_update_service.h" #include "chrome/browser/profiles/gaia_info_update_service_factory.h" -#include "chrome/browser/signin/signin_error_controller_factory.h" #include "components/signin/public/base/signin_pref_names.h" #endif @@ -190,10 +189,6 @@ service->Update(); } -SigninErrorController* GetSigninErrorController(Profile* profile) { - return SigninErrorControllerFactory::GetForProfile(profile); -} - bool SetActiveProfileToGuestIfLocked() { ProfileManager* profile_manager = g_browser_process->profile_manager();
diff --git a/chrome/browser/profiles/profiles_state.h b/chrome/browser/profiles/profiles_state.h index 6d3e919..3a1d0713 100644 --- a/chrome/browser/profiles/profiles_state.h +++ b/chrome/browser/profiles/profiles_state.h
@@ -19,7 +19,6 @@ class Browser; class PrefRegistrySimple; class Profile; -class SigninErrorController; namespace base { class FilePath; } @@ -87,11 +86,6 @@ // profile info. void UpdateGaiaProfileInfoIfNeeded(Profile* profile); -// Returns the sign-in error controller for the given profile. Some profiles, -// like guest profiles, may not have a controller so this function may return -// NULL. -SigninErrorController* GetSigninErrorController(Profile* profile); - // If the current active profile (given by prefs::kProfileLastUsed) is locked, // changes the active profile to the Guest profile. Returns true if the active // profile had been Guest before calling or became Guest as a result of this
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.css b/chrome/browser/resources/chromeos/login/screen_gaia_signin.css index 40c2a0d..5b7341e 100644 --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.css +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.css
@@ -80,6 +80,11 @@ top: 0; } +.icon20 { + height: 20px; + width: 20px; +} + #gaia-whitelist-error { bottom: 0; display: block;
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.html b/chrome/browser/resources/chromeos/login/screen_gaia_signin.html index 72aafa76..f6689370 100644 --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.html +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.html
@@ -3,6 +3,7 @@ found in the LICENSE file. --> <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html"> +<link rel="import" href="chrome://resources/cr_elements/icons.html"> <dom-module id="gaia-signin"> <template> @@ -80,16 +81,13 @@ icon2x="oobe-64:googleg"> </hd-iron-icon> <div slot="subtitle" hidden="[[isEmpty_(samlInterstitialDomain_)]]"> - [[i18nDynamic(locale, 'enterpriseInfoMessage', + <iron-icon class="icon20" icon="cr20:domain"></iron-icon> + [[i18nDynamic(locale, 'samlInterstitialMessage', samlInterstitialDomain_)]] - </div> - <div slot="footer" class="flex layout vertical"> - <html-echo hidden="[[isEmpty_(samlInterstitialDomain_)]]" - content="[[samlInterstitialMessage_]]"></html-echo> <p> <a href="#" class="oobe-local-link" on-tap="onSamlPageChangeAccount_" id="interstitial-change-account"> - [[i18nDynamic(locale, 'samlInterstitialChangeAccountLink')]] + [[i18nDynamic(locale, 'samlInterstitialChangeAccountLink')]] </a> </p> </div>
diff --git a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js index 56e4780..e5ab32d 100644 --- a/chrome/browser/resources/chromeos/login/screen_gaia_signin.js +++ b/chrome/browser/resources/chromeos/login/screen_gaia_signin.js
@@ -170,15 +170,6 @@ }, /** - * Message displayed on SAML interstitial page. - * @private - */ - samlInterstitialMessage_: { - type: String, - computed: 'calculateSamlMessage_(locale, samlInterstitialDomain_)', - }, - - /** * Contains the security token PIN dialog parameters object when the dialog * is shown. Is null when no PIN dialog is shown. * @type {OobeTypes.SecurityTokenPinDialogParameter} @@ -1605,17 +1596,6 @@ }, /** - * Calculates samlInterstitialMessage_, as it can not be easily evaluated via - * current i18n functions (HTML + substitutions). - * @param {string} locale - * @param {string} domain - * @private - */ - calculateSamlMessage_(locale, domain) { - return loadTimeData.getStringF('samlInterstitialMessage', domain); - }, - - /** * Computes the value of the isLoadingUiShown_ property. * @param {boolean} loadingFrameContents * @param {boolean} isWhitelistErrorShown
diff --git a/chrome/browser/resources/settings/autofill_page/password_check.html b/chrome/browser/resources/settings/autofill_page/password_check.html index 840cd8e4..d23b72f 100644 --- a/chrome/browser/resources/settings/autofill_page/password_check.html +++ b/chrome/browser/resources/settings/autofill_page/password_check.html
@@ -45,14 +45,15 @@ </template> <div class="start settings-box-text"> - <div> - $i18n{checkedPasswords} + <div id="title"> + [[getTitle_(status_)]] <span class="secondary inline" id="lastCompletedCheck" - hidden$="[[!lastCompletedCheck_]]"> + hidden$="[[!showsTimestamp_(status_)]]"> • [[lastCompletedCheck_]] </span> </div> - <div class="secondary" id="passwordLeakCount"> + <div class="secondary" id="subtitle" + hidden$="[[!showsPasswordsCount_(status_, leakedPasswords)]]"> [[compromisedPasswordsCount_]] </div> </div>
diff --git a/chrome/browser/resources/settings/autofill_page/password_check.js b/chrome/browser/resources/settings/autofill_page/password_check.js index 0db0f28..97536513 100644 --- a/chrome/browser/resources/settings/autofill_page/password_check.js +++ b/chrome/browser/resources/settings/autofill_page/password_check.js
@@ -202,6 +202,38 @@ }, /** + * Returns the title message indicating the state of the last/ongoing check. + * @param {!PasswordManagerProxy.PasswordCheckStatus} status + * @return {string} + * @private + */ + getTitle_(status) { + switch (status.state) { + case CheckState.IDLE: + return this.i18n('checkPasswords'); + case CheckState.CANCELED: + return this.i18n('checkPasswordsCanceled'); + case CheckState.RUNNING: + return this.i18n( + 'checkPasswordsProgress', status.alreadyProcessed || 0, + status.remainingInQueue + status.alreadyProcessed); + case CheckState.OFFLINE: + return this.i18n('checkPasswordsErrorOffline'); + case CheckState.SIGNED_OUT: + return this.i18n('checkPasswordsErrorSignedOut'); + case CheckState.NO_PASSWORDS: + return this.i18n('checkPasswordsErrorNoPasswords'); + case CheckState.TOO_MANY_PASSWORDS: + return this.i18n('checkPasswordsErrorTooManyPasswords'); + case CheckState.QUOTA_LIMIT: + return this.i18n('checkPasswordsErrorQuota'); + case CheckState.OTHER_ERROR: + return this.i18n('checkPasswordsErrorGeneric'); + } + throw 'Can\'t find a title for state: ' + status.state; + }, + + /** * Returns true iff a check is running right according to the given |status|. * @param {!PasswordManagerProxy.PasswordCheckStatus} status * @return {boolean} @@ -212,6 +244,17 @@ }, /** + * Returns true to show the timestamp when a check was completed successfully. + * @param {!PasswordManagerProxy.PasswordCheckStatus} status + * @return {boolean} + * @private + */ + showsTimestamp_(status) { + return status.state == CheckState.IDLE; + }, + + + /** * Returns true if there are leaked credentials or the status is unexpected * for a regular password check. * @param {!PasswordManagerProxy.PasswordCheckStatus} status @@ -239,5 +282,32 @@ } throw 'Not specified whether to state is an error: ' + status.state; }, + + /** + * Returns true if there are leaked credentials or the status is unexpected + * for a regular password check. + * @param {!PasswordManagerProxy.PasswordCheckStatus} status + * @param {!Array<PasswordManagerProxy.CompromisedCredential>} + * leakedPasswords + * @return {boolean} + * @private + */ + showsPasswordsCount_(status, leakedPasswords) { + switch (status.state) { + case CheckState.IDLE: + return true; + case CheckState.CANCELED: + case CheckState.RUNNING: + return this.hasLeakedCredentials_(leakedPasswords); + case CheckState.OFFLINE: + case CheckState.SIGNED_OUT: + case CheckState.NO_PASSWORDS: + case CheckState.TOO_MANY_PASSWORDS: + case CheckState.QUOTA_LIMIT: + case CheckState.OTHER_ERROR: + return false; + } + throw 'Not specified whether to show passwords for state: ' + status.state; + }, }); })();
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.html b/chrome/browser/resources/settings/autofill_page/passwords_section.html index 4c3cb60..c770bd22 100644 --- a/chrome/browser/resources/settings/autofill_page/passwords_section.html +++ b/chrome/browser/resources/settings/autofill_page/passwords_section.html
@@ -58,6 +58,16 @@ #exportImportMenuButtonContainer { margin-inline-end: 0; } + + #checkPasswordsBannerContainer { + line-height: 0; + padding-top: 16px; + } + + #banner { + border-radius: 4px; + width: 100%; + } </style> <settings-toggle-button id="passwordToggle" class="first" @@ -84,11 +94,32 @@ sub-label="$i18n{passwordsAutosigninDescription}"> </settings-toggle-button> <template is="dom-if" if="[[enablePasswordCheck_]]"> - <cr-link-row id="checkPasswordsButton" class="hr" + <div id="checkPasswordsBannerContainer" class="settings-box" + hidden$="[[haveCheckedPasswordsBefore_]]"> + <picture> + <source + srcset="chrome://settings/images/password_check_neutral_dark.svg" + media="(prefers-color-scheme: dark)"> + <img id="banner" + src="chrome://settings/images/password_check_neutral.svg"> + </picture> + </div> + <div id="checkPasswordsButton" class="settings-box continuation" + hidden$="[[haveCheckedPasswordsBefore_]]"> + <div class="start settings-box-text"> + <div>$i18n{checkPasswords}</div> + <div class="secondary">$i18n{checkPasswordsDescription}</div> + </div> + <cr-button class="action-button" on-click="onCheckPasswordsClick_"> + $i18n{checkPasswords} + </cr-button> + </div> + <cr-link-row id="checkPasswordsLinkRow" class="hr" label="$i18n{checkPasswords}" sub-label="$i18n{checkPasswordsDescription}" on-click="onCheckPasswordsClick_" - role-description="$i18n{subpageArrowRoleDescription}"></cr-link-row> + role-description="$i18n{subpageArrowRoleDescription}" + hidden$="[[!haveCheckedPasswordsBefore_]]"></cr-link-row> </template> <div id="manageLink" class="settings-box two-line" hidden$="[[hidePasswordsLink_]]">
diff --git a/chrome/browser/resources/settings/autofill_page/passwords_section.js b/chrome/browser/resources/settings/autofill_page/passwords_section.js index 771136ba..5ef383ff 100644 --- a/chrome/browser/resources/settings/autofill_page/passwords_section.js +++ b/chrome/browser/resources/settings/autofill_page/passwords_section.js
@@ -95,6 +95,9 @@ }, /** @private */ + haveCheckedPasswordsBefore_: Boolean, + + /** @private */ hidePasswordsLink_: { type: Boolean, computed: 'computeHidePasswordsLink_(syncPrefs_, syncStatus_)', @@ -241,6 +244,10 @@ this.passwordManager_.getSavedPasswordList(setSavedPasswordsListener); this.passwordManager_.getExceptionList(setPasswordExceptionsListener); + this.passwordManager_.getCompromisedCredentialsInfo().then(info => { + this.haveCheckedPasswordsBefore_ = !!info.elapsedTimeSinceLastCheck; + }); + // Listen for changes. this.passwordManager_.addAccountStorageOptInStateListener( setIsOptedInForAccountStorageListener); @@ -410,6 +417,7 @@ chrome.passwordsPrivate.PlaintextReason.COPY); (this.$.menu).close(); }, + /** * Handle the undo shortcut. * @param {!Event} event
diff --git a/chrome/browser/resources/settings/images/password_check_neutral.svg b/chrome/browser/resources/settings/images/password_check_neutral.svg new file mode 100644 index 0000000..8aad9f6 --- /dev/null +++ b/chrome/browser/resources/settings/images/password_check_neutral.svg
@@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#bdc0c5}.D{fill:#e8e9eb}.E{fill:#f8f9fa}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".02" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="D"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#34a751"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54zM56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" class="C"/><g class="D"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#bdc0c5" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="M126.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M132.134 71.696l-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="M142.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M148.134 71.696l-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="M158.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M164.134 71.696l-6-10.392 1.732-1 6 10.392z"/></g><g class="C"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g stroke="#bdc0c5" stroke-width=".5" class="E"><path d="M146 10h0a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z" fill="#fff"/><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="C"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="D"/><g class="C"><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z"/><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" fill="#fff"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="C"/><path d="M498.67 29.88L534.33-.525" class="E"/><path d="M498.32 29.468L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="D"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#3a7bee"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#1967d2" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="M133.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M138.634 72.83l-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="M147.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M152.634 72.83l-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="M161.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M166.634 72.83l-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="M175.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M180.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/images/password_check_neutral_dark.svg b/chrome/browser/resources/settings/images/password_check_neutral_dark.svg new file mode 100644 index 0000000..4e68df1 --- /dev/null +++ b/chrome/browser/resources/settings/images/password_check_neutral_dark.svg
@@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="120"><style>.B{mask:url(#B)}.C{fill:#414447}.D{fill:#4e5154}.E{fill:#262628}.F{fill-rule:nonzero}</style><defs><path id="A" d="M0 0h680v120H0z"/></defs><g fill-rule="evenodd"><mask id="B" fill="#fff"><use xlink:href="#A"/></mask><use fill-opacity=".1" xlink:href="#A"/><g class="F B"><path d="M288.585 52.215V47c10.735 0 19.175-3 25.1-8.955 9.3-9.36 9.325-23.015 9.325-23.15l5.25-.04c0 .645 0 15.9-10.815 26.82-6.935 6.995-16.645 10.54-28.85 10.54z" class="C"/><path d="M253.87 83h-5.245a40.45 40.45 0 0 1 5-18c4.605-8.2 14.4-18 34.96-18v5.215c-14.465 0-24.685 5.17-30.385 15.36A35.35 35.35 0 0 0 253.87 83z" fill="#81c995"/><path d="M254.6 94.5h-90.7V32.325a2.65 2.65 0 0 1 2.64-2.64h85.44a2.65 2.65 0 0 1 2.64 2.64V94.5z" class="E"/><path d="M250.3 30.225A3.791 3.791 0 0 1 254.08 34v59.945h-89.64V34a3.786 3.786 0 0 1 3.78-3.78h82.08m0-.54h-82.1a4.335 4.335 0 0 0-4.32 4.32v60.5h90.72V34a4.335 4.335 0 0 0-4.32-4.32zm-99.36 68.585h116.64v.54H150.93v-.54z" class="D"/><path d="M56 57.915H38.175v-.27a8.91 8.91 0 1 1 17.82 0l.005.27zm-17.275-.54H55.45a8.37 8.37 0 0 0-16.73 0h.005z" fill="#5f6368"/><g class="C"><path d="M426.825 68.895h-17.28a8.64 8.64 0 0 1 17.28 0zM345 88.66h20v4h-20z"/><path d="M348.268 98.32l10-17.32 3.464 2-10 17.32z"/><path d="M358.268 100.32l-10-17.32 3.464-2 10 17.32z"/></g><rect stroke="#4e5154" stroke-width=".5" x="112" y="18" width="68" height="92" rx="6" class="E"/><g fill="#4285f4"><path d="M124 65h12v2h-12z"/><path d="M126.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M132.134 71.696l-6-10.392 1.732-1 6 10.392zM140 65h12v2h-12z"/><path d="M142.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M148.134 71.696l-6-10.392 1.732-1 6 10.392zM156 65h12v2h-12z"/><path d="M158.134 70.696l6-10.392 1.732 1-6 10.392z"/><path d="M164.134 71.696l-6-10.392 1.732-1 6 10.392z"/></g><g class="D"><rect x="124" y="85" width="14" height="1" rx=".5"/><rect x="124" y="43" width="16" height="1" rx=".5"/><rect x="124" y="50" width="28" height="1" rx=".5"/></g><g class="E"><g stroke="#4e5154" stroke-width=".5"><path d="M146 10h0a7 7 0 0 1 7 7v7h-14v-7a7 7 0 0 1 7-7z"/><circle cx="146" cy="17" r="3"/><path d="M162 24h-32a6 6 0 0 0-6 6v4h44v-4a6 6 0 0 0-6-6z"/></g><path d="M79.6 58.42a12.935 12.935 0 0 0-10.1 4.82A8.62 8.62 0 0 0 58 71.38h34.56c0-7.158-5.802-12.96-12.96-12.96z"/></g><path d="M92.83 71.65h-35.1v-.27a8.89 8.89 0 0 1 11.695-8.455A13.23 13.23 0 0 1 92.83 71.38v.27zm-34.555-.54h34a12.69 12.69 0 0 0-22.56-7.7l-.12.15-.18-.065A8.35 8.35 0 0 0 58.26 71.11h.015z" class="D"/><path d="M38.12 82.36l3.705-3.705c7.6 7.6 15.7 11.43 24.075 11.4 13.17-.03 22.855-9.655 22.95-9.75L92.585 84c-.45.46-11.235 11.25-26.6 11.315C56.12 95.345 46.75 91 38.12 82.36z" fill="#f7bb2a"/><path d="M-8.2 79.58l-3.705-3.705a40.45 40.45 0 0 1 16.25-9.18c9.075-2.57 22.945-2.58 37.5 11.96L38.14 82.36C27.9 72.13 17 68.555 5.77 71.735A35.342 35.342 0 0 0-8.2 79.58z" class="C"/><path d="M636.62 39.735c-5.777.008-10.613-4.377-11.168-10.127s3.35-10.98 9.022-12.08 11.248 2.294 12.88 7.835a11.205 11.205 0 0 1-10.733 14.37zm0-21.765a10.58 10.58 0 0 0-9.82 14.5 10.57 10.57 0 0 0 20.298-5.263 10.57 10.57 0 0 0-10.478-9.237zM619 130h-80a6.785 6.785 0 0 1-6.775-6.775v-10h.6v10A6.185 6.185 0 0 0 539 129.38h80a6.185 6.185 0 0 0 6.175-6.175v-43.55A6.185 6.185 0 0 0 619 73.5h-12v-.6h12a6.785 6.785 0 0 1 6.775 6.775V123.2A6.784 6.784 0 0 1 619 130z" class="D"/><g fill="#383838"><path d="M607.005 73.48H561l3-.6h43.005z"/><path d="M532.8 100.18h-.6v-20.5a6.78 6.78 0 0 1 6.8-6.8h29.5v.62H539a6.185 6.185 0 0 0-6.175 6.175l-.025 20.505z"/></g><path d="M540 93.28a14.37 14.37 0 0 0-11.205 5.355A9.58 9.58 0 0 0 516 107.68h38.4c0-7.953-6.447-14.4-14.4-14.4z" class="C"/><path d="M554.725 108h-39v-.3a9.88 9.88 0 0 1 13-9.395 14.7 14.7 0 0 1 26 9.395v.3zm-38.395-.6h37.795a14.1 14.1 0 0 0-25.065-8.555l-.135.165-.2-.07c-2.795-.998-5.898-.598-8.35 1.075s-3.953 4.42-4.04 7.385h-.005z" class="D"/><path fill="#f8f9fa" d="M498.67 29.88L534.33-.525"/><path d="M498.32 29.468L534-.9l.65.762-35.68 30.377-.648-.76zM641.43 56.08h-5.825a44.942 44.942 0 0 0 5.555 20c5.1 9.145 16 20.05 38.84 20.05V90.3c-16.07 0-27.43-5.745-33.76-17.07a39.127 39.127 0 0 1-4.8-17.14z" class="C"/><path d="M197.89 56c1.165.002 2.1 1.075 2.11 2.4v19.2c-.001 1.325-.946 2.398-2.11 2.4h-71.78c-1.165-.002-2.1-1.075-2.11-2.4V58.4c.001-1.325.946-2.398 2.11-2.4h71.778z" fill="#8ab4f8"/></g><path d="M179.75 56H198a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2h-18.25V56z" fill="#8ab4f8" class="B"/><g fill="#fff" class="F B"><rect x="190" y="62" width="2" height="12" rx="1"/><path d="M132 67h10v2h-10z"/><path d="M133.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M138.634 72.83l-5-8.66 1.732-1 5 8.66zM146 67h10v2h-10z"/><path d="M147.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M152.634 72.83l-5-8.66 1.732-1 5 8.66zM160 67h10v2h-10z"/><path d="M161.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M166.634 72.83l-5-8.66 1.732-1 5 8.66zM174 67h10v2h-10z"/><path d="M175.634 71.83l5-8.66 1.732 1-5 8.66z"/><path d="M180.634 72.83l-5-8.66 1.732-1 5 8.66z"/></g></g></svg> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/safety_check_page/safety_check_page.html b/chrome/browser/resources/settings/safety_check_page/safety_check_page.html index 87358c1..972b4b6 100644 --- a/chrome/browser/resources/settings/safety_check_page/safety_check_page.html +++ b/chrome/browser/resources/settings/safety_check_page/safety_check_page.html
@@ -82,7 +82,7 @@ <iron-collapse id="safetyCheckCollapse" opened="[[shouldShowChildren_(parentStatus_)]]"> <div class="settings-box two-line" tabindex="0" - aria-label="[[getUpdatesAriaLabel_(updatesStatus_)]]"> + aria-label="[[getUpdatesAriaLabel_(updatesDisplayString_)]]"> <iron-icon icon="[[getUpdatesIcon_(updatesStatus_)]]" src="[[getUpdatesIconSrc_(updatesStatus_)]]" class$="[[getUpdatesIconClass_(updatesStatus_)]]"> @@ -90,7 +90,7 @@ <div class="start settings-box-text"> <div>$i18n{safetyCheckUpdatesPrimaryLabel}</div> <div class="secondary" no-search - inner-h-t-m-l="[[getUpdatesSubLabelText_(updatesStatus_)]]"> + inner-h-t-m-l="[[updatesDisplayString_]]"> </div> </div> <template is="dom-if" @@ -110,7 +110,7 @@ </template> </div> <div class="settings-box two-line" tabindex="0" - aria-label="[[getPasswordsAriaLabel_(passwordsStatus_)]]"> + aria-label="[[getPasswordsAriaLabel_(passwordsDisplayString_)]]"> <iron-icon icon="[[getPasswordsIcon_(passwordsStatus_)]]" src="[[getPasswordsIconSrc_(passwordsStatus_)]]" class$="[[getPasswordsIconClass_(passwordsStatus_)]]"> @@ -132,7 +132,7 @@ </template> </div> <div class="settings-box two-line" tabindex="0" - aria-label="[[getSafeBrowsingAriaLabel_(safeBrowsingStatus_)]]"> + aria-label="[[getSafeBrowsingAriaLabel_(safeBrowsingDisplayString_)]]"> <iron-icon icon="[[getSafeBrowsingIcon_(safeBrowsingStatus_)]]" src="[[getSafeBrowsingIconSrc_(safeBrowsingStatus_)]]" class$="[[getSafeBrowsingIconClass_(safeBrowsingStatus_)]]"> @@ -140,7 +140,7 @@ <div class="start settings-box-text"> <div>$i18n{safeBrowsingSectionLabel}</div> <div class="secondary" no-search - inner-h-t-m-l="[[getSafeBrowsingSubLabelText_(safeBrowsingStatus_)]]"> + inner-h-t-m-l="[[safeBrowsingDisplayString_]]"> </div> </div> <template is="dom-if" @@ -160,7 +160,7 @@ </template> </div> <div class="settings-box two-line" tabindex="0" - aria-label="[[getExtensionsAriaLabel_(extensionsStatus_)]]"> + aria-label="[[getExtensionsAriaLabel_(extensionsDisplayString_)]]"> <iron-icon icon="[[getExtensionsIcon_(extensionsStatus_)]]" src="[[getExtensionsIconSrc_(extensionsStatus_)]]" class$="[[getExtensionsIconClass_(extensionsStatus_)]]">
diff --git a/chrome/browser/resources/settings/safety_check_page/safety_check_page.js b/chrome/browser/resources/settings/safety_check_page/safety_check_page.js index 199b8d5..59c22e88 100644 --- a/chrome/browser/resources/settings/safety_check_page/safety_check_page.js +++ b/chrome/browser/resources/settings/safety_check_page/safety_check_page.js
@@ -56,6 +56,7 @@ /** * @typedef {{ * newState: settings.SafetyCheckUpdatesStatus, + * displayString: string, * }} */ let UpdatesChangedEvent; @@ -63,7 +64,7 @@ /** * @typedef {{ * newState: settings.SafetyCheckPasswordsStatus, - * passwordsDisplayString: string, + * displayString: string, * }} */ let PasswordsChangedEvent; @@ -71,6 +72,7 @@ /** * @typedef {{ * newState: settings.SafetyCheckSafeBrowsingStatus, + * displayString: string, * }} */ let SafeBrowsingChangedEvent; @@ -78,7 +80,7 @@ /** * @typedef {{ * newState: settings.SafetyCheckExtensionsStatus, - * extensionsDisplayString: string, + * displayString: string, * }} */ let ExtensionsChangedEvent; @@ -141,9 +143,21 @@ * UI string to display for the updates status. * @private */ + updatesDisplayString_: String, + + /** + * UI string to display for the passwords status. + * @private + */ passwordsDisplayString_: String, /** + * UI string to display for the Safe Browsing status. + * @private + */ + safeBrowsingDisplayString_: String, + + /** * UI string to display for the extensions status. * @private */ @@ -190,6 +204,11 @@ this.passwordsStatus_ = settings.SafetyCheckPasswordsStatus.CHECKING; this.safeBrowsingStatus_ = settings.SafetyCheckSafeBrowsingStatus.CHECKING; this.extensionsStatus_ = settings.SafetyCheckExtensionsStatus.CHECKING; + // Display running-status for safety check elements. + this.updatesDisplayString_ = this.i18n('safetyCheckRunning'); + this.passwordsDisplayString_ = this.i18n('safetyCheckRunning'); + this.safeBrowsingDisplayString_ = this.i18n('safetyCheckRunning'); + this.extensionsDisplayString_ = this.i18n('safetyCheckRunning'); // Trigger safety check. this.safetyCheckBrowserProxy_.runSafetyCheck(); }, @@ -213,6 +232,7 @@ */ onSafetyCheckUpdatesChanged_: function(event) { this.updatesStatus_ = event.newState; + this.updatesDisplayString_ = event.displayString; this.updateParentFromChildren_(); }, @@ -221,7 +241,7 @@ * @private */ onSafetyCheckPasswordsChanged_: function(event) { - this.passwordsDisplayString_ = event.passwordsDisplayString; + this.passwordsDisplayString_ = event.displayString; this.passwordsStatus_ = event.newState; this.updateParentFromChildren_(); }, @@ -232,6 +252,7 @@ */ onSafetyCheckSafeBrowsingChanged_: function(event) { this.safeBrowsingStatus_ = event.newState; + this.safeBrowsingDisplayString_ = event.displayString; this.updateParentFromChildren_(); }, @@ -240,7 +261,7 @@ * @private */ onSafetyCheckExtensionsChanged_: function(event) { - this.extensionsDisplayString_ = event.extensionsDisplayString; + this.extensionsDisplayString_ = event.displayString; this.extensionsStatus_ = event.newState; this.updateParentFromChildren_(); }, @@ -432,34 +453,9 @@ * @private * @return {string} */ - getUpdatesSubLabelText_: function() { - switch (this.updatesStatus_) { - case settings.SafetyCheckUpdatesStatus.CHECKING: - return this.i18n('safetyCheckRunning'); - case settings.SafetyCheckUpdatesStatus.UPDATED: - return this.i18n('aboutUpgradeUpToDate'); - case settings.SafetyCheckUpdatesStatus.UPDATING: - return this.i18n('aboutUpgradeUpdating'); - case settings.SafetyCheckUpdatesStatus.RELAUNCH: - return this.i18n('aboutUpgradeRelaunch'); - case settings.SafetyCheckUpdatesStatus.DISABLED_BY_ADMIN: - return this.i18nAdvanced('safetyCheckUpdatesSubLabelDisabledByAdmin'); - case settings.SafetyCheckUpdatesStatus.FAILED_OFFLINE: - return this.i18n('safetyCheckUpdatesSubLabelFailedOffline'); - case settings.SafetyCheckUpdatesStatus.FAILED: - return this.i18nAdvanced('safetyCheckUpdatesSubLabelFailed'); - default: - assertNotReached(); - } - }, - - /** - * @private - * @return {string} - */ getUpdatesAriaLabel_: function() { return this.i18n('safetyCheckUpdatesPrimaryLabel') + ': ' + - this.getUpdatesSubLabelText_(); + this.updatesDisplayString_; }, /** @@ -566,28 +562,6 @@ /** * @private - * @return {string} - */ - getSafeBrowsingSubLabelText_: function() { - switch (this.safeBrowsingStatus_) { - case settings.SafetyCheckSafeBrowsingStatus.CHECKING: - return this.i18n('safetyCheckRunning'); - case settings.SafetyCheckSafeBrowsingStatus.ENABLED: - return this.i18n('safetyCheckSafeBrowsingSubLabelEnabled'); - case settings.SafetyCheckSafeBrowsingStatus.DISABLED: - return this.i18n('safetyCheckSafeBrowsingSubLabelDisabled'); - case settings.SafetyCheckSafeBrowsingStatus.DISABLED_BY_ADMIN: - return this.i18nAdvanced( - 'safetyCheckSafeBrowsingSubLabelDisabledByAdmin'); - case settings.SafetyCheckSafeBrowsingStatus.DISABLED_BY_EXTENSION: - return this.i18n('safetyCheckSafeBrowsingSubLabelDisabledByExtension'); - default: - assertNotReached(); - } - }, - - /** - * @private * @return {?string} */ getSafeBrowsingIcon_: function() { @@ -638,7 +612,7 @@ */ getSafeBrowsingAriaLabel_: function() { return this.i18n('safeBrowsingSectionLabel') + ': ' + - this.getSafeBrowsingSubLabelText_(); + this.safeBrowsingDisplayString_; }, /** @private */
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd index ad21bca1..7c3c7bf 100644 --- a/chrome/browser/resources/settings/settings_resources.grd +++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -655,6 +655,12 @@ <structure name="IDR_SETTINGS_PASSWORD_MANAGER_PROXY_JS" file="autofill_page/password_manager_proxy.js" type="chrome_html" /> + <structure name="IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_SVG" + file="images/password_check_neutral.svg" + type="chrome_html" /> + <structure name="IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_DARK_SVG" + file="images/password_check_neutral_dark.svg" + type="chrome_html" /> <structure name="IDR_SETTINGS_PASSWORDS_SECTION_HTML" file="autofill_page/passwords_section.html" type="chrome_html"
diff --git a/chrome/browser/resources/settings/settings_resources_vulcanized.grd b/chrome/browser/resources/settings/settings_resources_vulcanized.grd index 5473dd9..7aa12adc 100644 --- a/chrome/browser/resources/settings/settings_resources_vulcanized.grd +++ b/chrome/browser/resources/settings/settings_resources_vulcanized.grd
@@ -38,6 +38,14 @@ flattenhtml="true" type="BINDATA" compress="gzip" /> + <include name="IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_SVG" + file="images/password_check_neutral.svg" + type="BINDATA" + compress="gzip" /> + <include name="IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_DARK_SVG" + file="images/password_check_neutral_dark.svg" + type="BINDATA" + compress="gzip" /> <!-- Polymer 3 related files --> <include name="IDR_SETTINGS_SETTINGS_V3_HTML" file="settings_v3.html"
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareCoordinator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareCoordinator.java index 56b9018c..c6524d8 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareCoordinator.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareCoordinator.java
@@ -8,6 +8,8 @@ import android.view.View; import org.chromium.chrome.browser.share.qrcode.QrCodeDialogTab; +import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModelChangeProcessor; /** * Creates and represents the QrCode share panel UI. @@ -16,7 +18,12 @@ private final QrCodeShareView mShareView; public QrCodeShareCoordinator(Context context) { - mShareView = new QrCodeShareView(context); + PropertyModel shareViewModel = new PropertyModel(QrCodeShareViewProperties.ALL_KEYS); + QrCodeShareMediator shareViewMediator = new QrCodeShareMediator(context, shareViewModel); + + mShareView = new QrCodeShareView(context, shareViewMediator::downloadQrCode); + PropertyModelChangeProcessor.create( + shareViewModel, mShareView, new QrCodeShareViewBinder()); } /** QrCodeDialogTab implementation. */
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareMediator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareMediator.java new file mode 100644 index 0000000..dfe0ca2 --- /dev/null +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareMediator.java
@@ -0,0 +1,59 @@ +// 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. + +package org.chromium.chrome.browser.share.qrcode.share_tab; + +import android.content.Context; +import android.graphics.Bitmap; +import android.view.View; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.share.ShareImageFileUtils; +import org.chromium.ui.modelutil.PropertyModel; + +import java.io.File; + +/** + * QrCodeShareMediator is in charge of calculating and setting values for QrCodeShareViewProperties. + */ +class QrCodeShareMediator implements ShareImageFileUtils.OnImageSaveListener { + private final Context mContext; + private final PropertyModel mPropertyModel; + + /** + * The QrCodeScanMediator constructor. + * @param context The context to use. + * @param propertyModel The property modelto use to communicate with views. + */ + QrCodeShareMediator(Context context, PropertyModel propertyModel) { + mContext = context; + mPropertyModel = propertyModel; + + // TODO(gayane): Request generated QR code bitmap with a callback that sets QRCODE_BITMAP + // property. + } + + /** Triggers download for the generated QR code bitmap if available. */ + protected void downloadQrCode(View view) { + Bitmap qrcodeBitmap = mPropertyModel.get(QrCodeShareViewProperties.QRCODE_BITMAP); + if (qrcodeBitmap != null) { + String fileName = mContext.getString( + R.string.qr_code_filename_prefix, String.valueOf(System.currentTimeMillis())); + ShareImageFileUtils.saveBitmapToExternalStorage(mContext, fileName, qrcodeBitmap, this); + } + } + + // ShareImageFileUtils.OnImageSaveListener implementation. + @Override + public void onImageSaved(File imageFile) { + // TODO(gayane): Maybe need to show confirmation message. + mPropertyModel.set(QrCodeShareViewProperties.DOWNLOAD_SUCCESSFUL, true); + } + + @Override + public void onImageSaveError() { + // TODO(gayane): Maybe need to show error message. + mPropertyModel.set(QrCodeShareViewProperties.DOWNLOAD_SUCCESSFUL, false); + } +} \ No newline at end of file
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java index ab6d50fe..3090370 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java
@@ -5,8 +5,15 @@ package org.chromium.chrome.browser.share.qrcode.share_tab; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import org.chromium.chrome.browser.share.qrcode.R; /** * Manages the Android View representing the QrCode share panel. @@ -15,14 +22,28 @@ private final Context mContext; private final View mView; - public QrCodeShareView(Context context) { + public QrCodeShareView(Context context, View.OnClickListener listener) { mContext = context; mView = (View) LayoutInflater.from(context).inflate( - org.chromium.chrome.browser.share.qrcode.R.layout.qrcode_share_layout, null, false); + R.layout.qrcode_share_layout, null, false); + + Button downloadButton = (Button) mView.findViewById(R.id.download); + downloadButton.setOnClickListener(listener); } public View getView() { return mView; } + + /** + * Updates QR code image on share panel. + * + * @param bitmap The {@link Bitmap} to display on share panel. + */ + public void updateQrCodeBitmap(Bitmap bitmap) { + TextView qrcodeText = mView.findViewById(R.id.qrcode_text_image); + Drawable drawable = new BitmapDrawable(bitmap); + qrcodeText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable); + } }
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java new file mode 100644 index 0000000..c59663e --- /dev/null +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java
@@ -0,0 +1,18 @@ +// 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. + +package org.chromium.chrome.browser.share.qrcode.share_tab; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModelChangeProcessor.ViewBinder; + +class QrCodeShareViewBinder implements ViewBinder<PropertyModel, QrCodeShareView, PropertyKey> { + @Override + public void bind(PropertyModel model, QrCodeShareView view, PropertyKey propertyKey) { + if (QrCodeShareViewProperties.QRCODE_BITMAP == propertyKey) { + view.updateQrCodeBitmap(model.get(QrCodeShareViewProperties.QRCODE_BITMAP)); + } + } +}
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java new file mode 100644 index 0000000..8c1da28 --- /dev/null +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java
@@ -0,0 +1,23 @@ +// 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. + +package org.chromium.chrome.browser.share.qrcode.share_tab; + +import android.graphics.Bitmap; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey; +import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; + +class QrCodeShareViewProperties { + /** The action that occurs when the download button is tapped. */ + public static final WritableObjectPropertyKey<Bitmap> QRCODE_BITMAP = + new WritableObjectPropertyKey<>(); + + /** Indicates whether download was successful. */ + public static final WritableBooleanPropertyKey DOWNLOAD_SUCCESSFUL = + new WritableBooleanPropertyKey(); + + public static final PropertyKey[] ALL_KEYS = {QRCODE_BITMAP, DOWNLOAD_SUCCESSFUL}; +}
diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/share/android/java_sources.gni index cfd3848..10d99832 100644 --- a/chrome/browser/share/android/java_sources.gni +++ b/chrome/browser/share/android/java_sources.gni
@@ -20,6 +20,9 @@ "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/QrCodeScanViewBinder.java", "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/QrCodeScanViewProperties.java", "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareCoordinator.java", + "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareMediator.java", "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareView.java", + "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java", + "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java", "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotCoordinator.java", ]
diff --git a/chrome/browser/sharing/sharing_message_model_type_controller.cc b/chrome/browser/sharing/sharing_message_model_type_controller.cc index f6d4ac65..9b2a352 100644 --- a/chrome/browser/sharing/sharing_message_model_type_controller.cc +++ b/chrome/browser/sharing/sharing_message_model_type_controller.cc
@@ -33,9 +33,13 @@ syncer::DataTypeController::PreconditionState SharingMessageModelTypeController::GetPreconditionState() const { DCHECK(CalledOnValidThread()); - return syncer::IsWebSignout(sync_service_->GetAuthError()) - ? PreconditionState::kMustStopAndClearData - : PreconditionState::kPreconditionsMet; + if (syncer::IsWebSignout(sync_service_->GetAuthError())) { + return PreconditionState::kMustStopAndClearData; + } + if (sync_service_->GetBackedOffDataTypes().Has(syncer::SHARING_MESSAGE)) { + return PreconditionState::kMustStopAndClearData; + } + return PreconditionState::kPreconditionsMet; } void SharingMessageModelTypeController::OnStateChanged(
diff --git a/chrome/browser/sync/test/integration/single_client_sharing_message_sync_test.cc b/chrome/browser/sync/test/integration/single_client_sharing_message_sync_test.cc index ac03f2b..08f068e 100644 --- a/chrome/browser/sync/test/integration/single_client_sharing_message_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_sharing_message_sync_test.cc
@@ -10,6 +10,7 @@ #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h" #include "chrome/browser/sync/test/integration/sync_test.h" +#include "components/sync/test/fake_server/fake_server_http_post_provider.h" namespace { @@ -41,6 +42,16 @@ base::Time last_synced_time_; }; +class BackedOffSharingMessageChecker : public SingleClientStatusChangeChecker { + public: + explicit BackedOffSharingMessageChecker(syncer::ProfileSyncService* service) + : SingleClientStatusChangeChecker(service) {} + + bool IsExitConditionSatisfied(std::ostream* os) override { + return service()->GetBackedOffDataTypes().Has(syncer::SHARING_MESSAGE); + } +}; + class SharingMessageEqualityChecker : public SingleClientStatusChangeChecker { public: SharingMessageEqualityChecker( @@ -180,4 +191,37 @@ ASSERT_TRUE(NextCycleIterationChecker(GetSyncService(0)).Wait()); } +IN_PROC_BROWSER_TEST_F(SingleClientSharingMessageSyncTest, + ShouldStopDataTypeWhenBackedOff) { + base::MockRepeatingCallback<void(const sync_pb::SharingMessageCommitError&)> + callback; + + ASSERT_TRUE(SetupSync()); + SharingMessageBridge* sharing_message_bridge = + SharingMessageBridgeFactory::GetForBrowserContext(GetProfile(0)); + SharingMessageSpecifics specifics; + specifics.set_payload("payload"); + sharing_message_bridge->SendSharingMessage( + std::make_unique<SharingMessageSpecifics>(specifics), callback.Get()); + + EXPECT_CALL( + callback, + Run(HasErrorCode(sync_pb::SharingMessageCommitError::SYNC_TURNED_OFF))); + ASSERT_FALSE( + GetSyncService(0)->GetBackedOffDataTypes().Has(syncer::SHARING_MESSAGE)); + + // Run the data type into backed off state before the message gets sent. + fake_server::FakeServerHttpPostProvider::DisableNetwork(); + + ASSERT_TRUE(BackedOffSharingMessageChecker(GetSyncService(0)).Wait()); + + EXPECT_TRUE( + GetSyncService(0)->GetBackedOffDataTypes().Has(syncer::SHARING_MESSAGE)); + EXPECT_CALL( + callback, + Run(HasErrorCode(sync_pb::SharingMessageCommitError::SYNC_TURNED_OFF))); + sharing_message_bridge->SendSharingMessage( + std::make_unique<SharingMessageSpecifics>(specifics), callback.Get()); +} + } // namespace
diff --git a/chrome/browser/ui/android/appmenu/BUILD.gn b/chrome/browser/ui/android/appmenu/BUILD.gn index 0717d92..1fd5134 100644 --- a/chrome/browser/ui/android/appmenu/BUILD.gn +++ b/chrome/browser/ui/android/appmenu/BUILD.gn
@@ -16,7 +16,7 @@ "java/src/org/chromium/chrome/browser/ui/appmenu/CustomViewBinder.java", "java/src/org/chromium/chrome/browser/ui/appmenu/MenuButtonDelegate.java", ] - deps = [ "//chrome/browser/android/lifecycle:java" ] + deps = [ "//chrome/lib/lifecycle/public/android:java" ] } android_library_factory("factory_java") {
diff --git a/chrome/browser/ui/android/appmenu/DEPS b/chrome/browser/ui/android/appmenu/DEPS index dd54244..1764a7c50 100644 --- a/chrome/browser/ui/android/appmenu/DEPS +++ b/chrome/browser/ui/android/appmenu/DEPS
@@ -2,7 +2,7 @@ include_rules = [ "+base/android", "+base/test/android", - "+chrome/browser/android/lifecycle", + "+chrome/lib/lifecycle/public", "+chrome/test/android", "+components/browser_ui/styles/android", "+components/browser_ui/widget/android",
diff --git a/chrome/browser/ui/android/appmenu/internal/BUILD.gn b/chrome/browser/ui/android/appmenu/internal/BUILD.gn index e129fc2..91fb79d 100644 --- a/chrome/browser/ui/android/appmenu/internal/BUILD.gn +++ b/chrome/browser/ui/android/appmenu/internal/BUILD.gn
@@ -19,9 +19,9 @@ deps = [ ":java_resources", "//base:base_java", - "//chrome/browser/android/lifecycle:java", "//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu:java_resources", + "//chrome/lib/lifecycle/public/android:java", "//components/browser_ui/widget/android:java", "//third_party/android_deps:android_support_v7_appcompat_java", "//third_party/android_deps:androidx_annotation_annotation_java", @@ -56,9 +56,9 @@ ":test_java_resources", "//base:base_java", "//base:base_java_test_support", - "//chrome/browser/android/lifecycle:java", "//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu:test_support_java", + "//chrome/lib/lifecycle/public/android:java", "//chrome/test/android:chrome_java_test_support", "//components/browser_ui/widget/android:test_support_java", "//content/public/test/android:content_java_test_support",
diff --git a/chrome/browser/ui/android/passwords/manual_filling_view_android.cc b/chrome/browser/ui/android/passwords/manual_filling_view_android.cc index 78efec4..73a32f9 100644 --- a/chrome/browser/ui/android/passwords/manual_filling_view_android.cc +++ b/chrome/browser/ui/android/passwords/manual_filling_view_android.cc
@@ -126,6 +126,14 @@ ConvertUTF16ToJavaString(env, tab_data.title()), ConvertUTF16ToJavaString(env, tab_data.warning())); + if (tab_data.option_toggle().has_value()) { + autofill::OptionToggle toggle = tab_data.option_toggle().value(); + Java_ManualFillingComponentBridge_addOptionToggleToAccessorySheetData( + env, java_object_, j_tab_data, + ConvertUTF16ToJavaString(env, toggle.display_text()), + toggle.is_enabled(), static_cast<int>(toggle.accessory_action())); + } + for (const UserInfo& user_info : tab_data.user_info_list()) { ScopedJavaLocalRef<jobject> j_user_info = Java_ManualFillingComponentBridge_addUserInfoToAccessorySheetData(
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index 0fe308e..b9b6ecf7 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -987,9 +987,34 @@ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_ALLOWED_RECOMMENDED" desc="Summary text explaining that a permission is allowed, which is the recommended setting."> Allowed (recommended) </message> + + <!-- Cookie settings strings. --> <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOWED" desc="Summary text explaining that sites are allowed to use cookies and that it is the recommended setting."> Allow sites to save and read cookie data (recommended) </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_TITLE" desc="Text used to explain the allow cookies option in settings"> + Allow cookies + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_INCOGNITO_TITLE" desc="Text used to explain the block third-party cookies in incognito option in settings"> + Block third-party cookies in Incognito + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_TITLE" desc="Text used to explain the block third-party cookies option in settings"> + Block third-party cookies + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_TITLE" desc="Text used to explain the block cookies option in settings"> + Block all cookies (not recommended) + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_ADDITION" desc="Additional text used to explain the allow cookies option in settings"> + Sites will work normally + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_ADDITION" desc="Additional text used to explain the block third-party cookies option in settings"> + Features on some sites may break + </message> + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_ADDITION" desc="Additional text used to explain the block cookies option in settings"> + Features on many sites may break + </message> + + <message name="IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_ALLOWED" desc="Summary text explaining that sites are allowed to run Javascript and that it is the recommended setting."> Allow sites to run JavaScript (recommended) </message> @@ -4049,6 +4074,10 @@ This QR Code is not a URL: <ph name="QrCodeValue">%1$s<ex>QR Code Text</ex></ph> </message> + <message name="IDS_QR_CODE_FILENAME_PREFIX" desc="File name prefix for downloaded qrcode that is followed by timestamp."> + chrome_qrcode_<ph name="CURRENT_TIMESTAMP_MS">%1$s<ex>1582667748515</ex></ph> + </message> + <!-- Chime DFM module strings --> <message name="IDS_CHIME_MODULE_TITLE" desc="Text shown when the chime module is referenced in install start, success, failure UI (e.g. in IDS_MODULE_INSTALL_START_TEXT, which will expand to 'Installing Google Notifications Platform for Chrome…')."> Google Notifications Platform
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_ADDITION.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_ADDITION.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_ADDITION.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_TITLE.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_ALLOW_TITLE.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_ADDITION.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_ADDITION.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_ADDITION.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_ADDITION.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_ADDITION.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_ADDITION.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_INCOGNITO_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_INCOGNITO_TITLE.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_INCOGNITO_TITLE.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_TITLE.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_THIRD_PARTY_TITLE.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_TITLE.png.sha1 new file mode 100644 index 0000000..ef80341 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_CATEGORY_COOKIE_BLOCK_TITLE.png.sha1
@@ -0,0 +1 @@ +266de8b600f0fdec9283013cad4c7f9f04193cbd \ No newline at end of file
diff --git a/chrome/browser/ui/avatar_button_error_controller.cc b/chrome/browser/ui/avatar_button_error_controller.cc index 43f3f16..c16bd5d 100644 --- a/chrome/browser/ui/avatar_button_error_controller.cc +++ b/chrome/browser/ui/avatar_button_error_controller.cc
@@ -6,6 +6,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profiles_state.h" +#include "chrome/browser/signin/signin_error_controller_factory.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/browser/sync/sync_ui_util.h" @@ -39,14 +40,14 @@ : profile_(profile), avatar_button_error_controller_(avatar_button_error_controller) { SigninErrorController* signin_error_controller = - profiles::GetSigninErrorController(profile_); + SigninErrorControllerFactory::GetForProfile(profile_); if (signin_error_controller) signin_error_controller->AddObserver(this); } AvatarButtonErrorController::SigninErrorObserver::~SigninErrorObserver() { SigninErrorController* signin_error_controller = - profiles::GetSigninErrorController(profile_); + SigninErrorControllerFactory::GetForProfile(profile_); if (signin_error_controller) signin_error_controller->RemoveObserver(this); } @@ -56,8 +57,8 @@ } bool AvatarButtonErrorController::SigninErrorObserver::HasSigninError() { - const SigninErrorController* signin_error_controller = - profiles::GetSigninErrorController(profile_); + SigninErrorController* signin_error_controller = + SigninErrorControllerFactory::GetForProfile(profile_); return signin_error_controller && signin_error_controller->HasError(); }
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc index 9b4ef9a..ce6eb9ae 100644 --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc
@@ -29,6 +29,8 @@ #include "chrome/browser/history/top_sites_factory.h" #include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/installable/installable_manager.h" +#include "chrome/browser/media/feeds/media_feeds_contents_observer.h" +#include "chrome/browser/media/feeds/media_feeds_service.h" #include "chrome/browser/media/history/media_history_contents_observer.h" #include "chrome/browser/media/media_engagement_service.h" #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_observer.h" @@ -246,6 +248,8 @@ IsolatedPrerenderTabHelper::CreateForWebContents(web_contents); if (MediaEngagementService::IsEnabled()) MediaEngagementService::CreateWebContentsObserver(web_contents); + if (media_feeds::MediaFeedsService::IsEnabled()) + MediaFeedsContentsObserver::CreateForWebContents(web_contents); if (base::FeatureList::IsEnabled(media::kUseMediaHistoryStore)) MediaHistoryContentsObserver::CreateForWebContents(web_contents); metrics::RendererUptimeWebContentsObserver::CreateForWebContents(
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.cc b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.cc index bec80be..7085cf1 100644 --- a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.cc +++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.cc
@@ -10,14 +10,17 @@ #include "chrome/browser/platform_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/views/bubble_anchor_util_views.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/title_origin_label.h" +#include "chrome/common/url_constants.h" #include "chrome/grit/generated_resources.h" #include "components/permissions/permission_request.h" #include "components/strings/grit/components_strings.h" #include "components/url_formatter/elide_url.h" +#include "components/vector_icons/vector_icons.h" #include "extensions/common/constants.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/geometry/insets.h" @@ -25,6 +28,8 @@ #include "ui/gfx/text_constants.h" #include "ui/native_theme/native_theme.h" #include "ui/views/bubble/bubble_frame_view.h" +#include "ui/views/controls/button/image_button.h" +#include "ui/views/controls/button/image_button_factory.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h" @@ -98,6 +103,40 @@ std::make_unique<views::Label>(request->GetMessageTextFragment())); label->SetHorizontalAlignment(gfx::ALIGN_LEFT); label->SetMultiLine(true); + + // Text that warns the user that flash will be deprecated. This text is only + // shown for flash and should be empty for all other permissions. + // TODO (crbug.com/1058401): Remove the warning text once flash is deprecated. + const auto warning_text = request->GetMessageTextWarningFragment(); + + if (warning_text.empty()) + return; + + // Should only be reached if the permission required is for flash. + DCHECK(request->GetContentSettingsType() == ContentSettingsType::PLUGINS); + + auto* warning_line_container = AddChildView(std::make_unique<views::View>()); + warning_line_container->SetLayoutManager(std::make_unique<views::BoxLayout>( + views::BoxLayout::Orientation::kHorizontal, + gfx::Insets(0, provider->GetDistanceMetric( + DISTANCE_SUBSECTION_HORIZONTAL_INDENT)), + provider->GetDistanceMetric(views::DISTANCE_RELATED_LABEL_HORIZONTAL))); + + auto* warning_label = warning_line_container->AddChildView( + std::make_unique<views::Label>(std::move(warning_text))); + warning_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + warning_label->SetMultiLine(true); + + auto learn_more_button = views::CreateVectorImageButton(this); + learn_more_button->SetFocusForPlatform(); + learn_more_button->SetTooltipText(l10n_util::GetStringUTF16(IDS_LEARN_MORE)); + SkColor text_color = GetNativeTheme()->GetSystemColor( + ui::NativeTheme::kColorId_LabelEnabledColor); + learn_more_button_ = learn_more_button.get(); + views::SetImageFromVectorIcon(learn_more_button_, + vector_icons::kHelpOutlineIcon, text_color); + + DialogDelegate::SetExtraView(std::move(learn_more_button)); } void PermissionPromptBubbleView::UpdateAnchorPosition() { @@ -140,6 +179,14 @@ return gfx::Size(width, GetHeightForWidth(width)); } +void PermissionPromptBubbleView::ButtonPressed(views::Button* sender, + const ui::Event& event) { + if (sender == learn_more_button_) + chrome::AddSelectedTabWithURL(browser_, + GURL(chrome::kFlashDeprecationLearnMoreURL), + ui::PAGE_TRANSITION_LINK); +} + void PermissionPromptBubbleView::Show() { DCHECK(browser_->window());
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h index a45f305..c3fc036 100644 --- a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h +++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h
@@ -9,12 +9,18 @@ #include "base/strings/string16.h" #include "components/permissions/permission_prompt.h" #include "ui/views/bubble/bubble_dialog_delegate_view.h" +#include "ui/views/controls/button/button.h" class Browser; +namespace views { +class ImageButton; +} + // Bubble that prompts the user to grant or deny a permission request from a // website. -class PermissionPromptBubbleView : public views::BubbleDialogDelegateView { +class PermissionPromptBubbleView : public views::ButtonListener, + public views::BubbleDialogDelegateView { public: PermissionPromptBubbleView(Browser* browser, permissions::PermissionPrompt::Delegate* delegate); @@ -29,6 +35,9 @@ base::string16 GetWindowTitle() const override; gfx::Size CalculatePreferredSize() const override; + // Button Listener + void ButtonPressed(views::Button* sender, const ui::Event& event) override; + private: // Holds the string to be displayed as the origin of the permission prompt, // and whether or not that string is an origin. @@ -51,6 +60,8 @@ // The requesting domain's name or origin. const DisplayNameOrOrigin name_or_origin_; + views::ImageButton* learn_more_button_ = nullptr; + DISALLOW_COPY_AND_ASSIGN(PermissionPromptBubbleView); };
diff --git a/chrome/browser/ui/webui/identity_internals_ui.cc b/chrome/browser/ui/webui/identity_internals_ui.cc index 5fff514..7b10f4d 100644 --- a/chrome/browser/ui/webui/identity_internals_ui.cc +++ b/chrome/browser/ui/webui/identity_internals_ui.cc
@@ -186,8 +186,10 @@ switch (token_cache_value.status()) { case extensions::IdentityTokenCacheValue::CACHE_STATUS_ADVICE: case extensions::IdentityTokenCacheValue::CACHE_STATUS_REMOTE_CONSENT: - // Fallthrough to NOT FOUND case, as ADVICE and REMOTE_CONSENT are short - // lived. + case extensions::IdentityTokenCacheValue:: + CACHE_STATUS_REMOTE_CONSENT_APPROVED: + // Fallthrough to NOT FOUND case, as ADVICE, REMOTE_CONSENT and + // REMOTE_CONSENT_APPROVED are short lived. case extensions::IdentityTokenCacheValue::CACHE_STATUS_NOTFOUND: return "Not Found"; case extensions::IdentityTokenCacheValue::CACHE_STATUS_TOKEN:
diff --git a/chrome/browser/ui/webui/identity_internals_ui_browsertest.cc b/chrome/browser/ui/webui/identity_internals_ui_browsertest.cc index 6a6d01d4..7a64f666 100644 --- a/chrome/browser/ui/webui/identity_internals_ui_browsertest.cc +++ b/chrome/browser/ui/webui/identity_internals_ui_browsertest.cc
@@ -48,8 +48,8 @@ const std::vector<std::string>& scopes, int time_to_live) { extensions::IdentityTokenCacheValue token_cache_value = - extensions::IdentityTokenCacheValue(token_id, - base::TimeDelta::FromSeconds(time_to_live)); + extensions::IdentityTokenCacheValue::CreateToken( + token_id, base::TimeDelta::FromSeconds(time_to_live)); extensions::ExtensionTokenKey key( extension_id, CoreAccountId("account_id"), std::set<std::string>(scopes.begin(), scopes.end()));
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler.cc b/chrome/browser/ui/webui/settings/safety_check_handler.cc index f14c130d..0a2f4a5 100644 --- a/chrome/browser/ui/webui/settings/safety_check_handler.cc +++ b/chrome/browser/ui/webui/settings/safety_check_handler.cc
@@ -7,18 +7,32 @@ #include "base/bind.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" +#include "base/strings/string16.h" +#include "base/strings/utf_string_conversions.h" +#include "build/build_config.h" #include "chrome/browser/password_manager/bulk_leak_check_service_factory.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/common/url_constants.h" +#include "chrome/grit/chromium_strings.h" +#include "chrome/grit/generated_resources.h" #include "components/prefs/pref_service.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" +#include "ui/base/l10n/l10n_util.h" + +#if defined(OS_CHROMEOS) +#include "ui/chromeos/devicetype_utils.h" +#endif namespace { // Constants for communication with JS. -constexpr char kStatusChanged[] = "safety-check-status-changed"; +constexpr char kUpdatesEvent[] = "safety-check-updates-status-changed"; +constexpr char kPasswordsEvent[] = "safety-check-passwords-status-changed"; +constexpr char kSafeBrowsingEvent[] = + "safety-check-safe-browsing-status-changed"; constexpr char kPerformSafetyCheck[] = "performSafetyCheck"; -constexpr char kSafetyCheckComponent[] = "safetyCheckComponent"; constexpr char kNewState[] = "newState"; +constexpr char kDisplayString[] = "displayString"; constexpr char kPasswordsCompromised[] = "passwordsCompromised"; // Converts the VersionUpdater::Status to the UpdateStatus enum to be passed @@ -125,31 +139,111 @@ const base::string16& message) { UpdateStatus update_status = ConvertToUpdateStatus(status); base::DictionaryValue event; - event.SetIntKey(kSafetyCheckComponent, - static_cast<int>(SafetyCheckComponent::kUpdates)); event.SetIntKey(kNewState, static_cast<int>(update_status)); - FireWebUIListener(kStatusChanged, event); + event.SetStringKey(kDisplayString, GetStringForUpdates(update_status)); + FireWebUIListener(kUpdatesEvent, event); } void SafetyCheckHandler::OnSafeBrowsingCheckResult( SafetyCheckHandler::SafeBrowsingStatus status) { base::DictionaryValue event; - event.SetIntKey(kSafetyCheckComponent, - static_cast<int>(SafetyCheckComponent::kSafeBrowsing)); event.SetIntKey(kNewState, static_cast<int>(status)); - FireWebUIListener(kStatusChanged, event); + event.SetStringKey(kDisplayString, GetStringForSafeBrowsing(status)); + FireWebUIListener(kSafeBrowsingEvent, event); } void SafetyCheckHandler::OnPasswordsCheckResult(PasswordsStatus status, int num_compromised) { base::DictionaryValue event; - event.SetIntKey(kSafetyCheckComponent, - static_cast<int>(SafetyCheckComponent::kPasswords)); event.SetIntKey(kNewState, static_cast<int>(status)); if (status == PasswordsStatus::kCompromisedExist) { event.SetIntKey(kPasswordsCompromised, num_compromised); } - FireWebUIListener(kStatusChanged, event); + event.SetStringKey(kDisplayString, + GetStringForPasswords(status, num_compromised)); + FireWebUIListener(kPasswordsEvent, event); +} + +base::string16 SafetyCheckHandler::GetStringForUpdates(UpdateStatus status) { + switch (status) { + case UpdateStatus::kChecking: + return l10n_util::GetStringUTF16(IDS_SETTINGS_SAFETY_CHECK_RUNNING); + case UpdateStatus::kUpdated: +#if defined(OS_CHROMEOS) + return ui::SubstituteChromeOSDeviceType(IDS_SETTINGS_UPGRADE_UP_TO_DATE); +#else + return l10n_util::GetStringUTF16(IDS_SETTINGS_UPGRADE_UP_TO_DATE); +#endif + case UpdateStatus::kUpdating: + return l10n_util::GetStringUTF16(IDS_SETTINGS_UPGRADE_UPDATING); + case UpdateStatus::kRelaunch: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_UPGRADE_SUCCESSFUL_RELAUNCH); + case UpdateStatus::kDisabledByAdmin: + return l10n_util::GetStringFUTF16( + IDS_SETTINGS_SAFETY_CHECK_UPDATES_DISABLED_BY_ADMIN, + base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL)); + case UpdateStatus::kFailedOffline: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED_OFFLINE); + case UpdateStatus::kFailed: + return l10n_util::GetStringFUTF16( + IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED, + base::ASCIIToUTF16(chrome::kChromeFixUpdateProblems)); + } +} + +base::string16 SafetyCheckHandler::GetStringForSafeBrowsing( + SafeBrowsingStatus status) { + switch (status) { + case SafeBrowsingStatus::kChecking: + return l10n_util::GetStringUTF16(IDS_SETTINGS_SAFETY_CHECK_RUNNING); + case SafeBrowsingStatus::kEnabled: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_ENABLED); + case SafeBrowsingStatus::kDisabled: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED); + case SafeBrowsingStatus::kDisabledByAdmin: + return l10n_util::GetStringFUTF16( + IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_ADMIN, + base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL)); + case SafeBrowsingStatus::kDisabledByExtension: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_EXTENSION); + } +} + +base::string16 SafetyCheckHandler::GetStringForPasswords(PasswordsStatus status, + int num_compromised) { + switch (status) { + case PasswordsStatus::kChecking: + return l10n_util::GetStringUTF16(IDS_SETTINGS_SAFETY_CHECK_RUNNING); + case PasswordsStatus::kSafe: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_SAFE); + case PasswordsStatus::kCompromisedExist: + return l10n_util::GetPluralStringFUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_COMPROMISED, num_compromised); + case PasswordsStatus::kOffline: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_OFFLINE); + case PasswordsStatus::kNoPasswords: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_NO_PASSWORDS); + case PasswordsStatus::kSignedOut: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_SIGNED_OUT); + case PasswordsStatus::kQuotaLimit: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_QUOTA_LIMIT); + case PasswordsStatus::kTooManyPasswords: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_TOO_MANY_PASSWORDS); + case PasswordsStatus::kError: + return l10n_util::GetStringUTF16( + IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_ERROR); + } } void SafetyCheckHandler::OnStateChanged(
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler.h b/chrome/browser/ui/webui/settings/safety_check_handler.h index 856636f..cff14e55 100644 --- a/chrome/browser/ui/webui/settings/safety_check_handler.h +++ b/chrome/browser/ui/webui/settings/safety_check_handler.h
@@ -25,14 +25,6 @@ : public settings::SettingsPageUIHandler, public password_manager::BulkLeakCheckService::Observer { public: - // Used in communication with the frontend to indicate which component the - // communicated status update applies to. - enum class SafetyCheckComponent { - kUpdates, - kPasswords, - kSafeBrowsing, - kExtensions, - }; // The following enums represent the state of each component of the safety // check and should be kept in sync with the JS frontend // (safety_check_browser_proxy.js). @@ -100,11 +92,16 @@ const std::string& version, int64_t update_size, const base::string16& message); - void OnSafeBrowsingCheckResult(SafeBrowsingStatus status); - void OnPasswordsCheckResult(PasswordsStatus status, int num_compromised); + // Methods for building user-visible strings based on the safety check + // state. + base::string16 GetStringForUpdates(UpdateStatus status); + base::string16 GetStringForSafeBrowsing(SafeBrowsingStatus status); + base::string16 GetStringForPasswords(PasswordsStatus status, + int num_compromised); + // BulkLeakCheckService::Observer implementation. void OnStateChanged( password_manager::BulkLeakCheckService::State state) override;
diff --git a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc index fa41a85..4e673d70 100644 --- a/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/safety_check_handler_unittest.cc
@@ -4,9 +4,14 @@ #include "chrome/browser/ui/webui/settings/safety_check_handler.h" +#include <string> + #include "base/bind.h" #include "base/optional.h" +#include "base/strings/string_util.h" +#include "base/strings/utf_string_conversions.h" #include "base/test/metrics/user_action_tester.h" +#include "build/build_config.h" #include "chrome/browser/ui/webui/help/test_version_updater.h" #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "components/password_manager/core/browser/bulk_leak_check_service.h" @@ -17,6 +22,15 @@ #include "services/network/public/cpp/shared_url_loader_factory.h" #include "testing/gtest/include/gtest/gtest.h" +#if defined(OS_CHROMEOS) +#include "ui/chromeos/devicetype_utils.h" +#endif + +// Components for building event strings. +constexpr char kUpdates[] = "updates"; +constexpr char kPasswords[] = "passwords"; +constexpr char kSafeBrowsing[] = "safe-browsing"; + class TestingSafetyCheckHandler : public SafetyCheckHandler { public: using SafetyCheckHandler::AllowJavascript; @@ -33,15 +47,28 @@ public: void SetUp() override; - // Returns whether one of the WebUI callbacks for safety check status changes - // has the specified |safetyCheckComponent| and |newState|. - bool HasSafetyCheckStatusChangedWithData(int component, int new_state); + // Returns a |base::DictionaryValue| for safety check status update that + // has the specified |component| and |new_state| if it exists; nullptr + // otherwise. + const base::DictionaryValue* GetSafetyCheckStatusChangedWithDataIfExists( + const std::string& component, + int new_state); + + void VerifyDisplayString(const base::DictionaryValue* event, + const base::string16& expected); + void VerifyDisplayString(const base::DictionaryValue* event, + const std::string& expected); protected: TestVersionUpdater* version_updater_ = nullptr; std::unique_ptr<password_manager::BulkLeakCheckService> test_leak_service_; content::TestWebUI test_web_ui_; std::unique_ptr<TestingSafetyCheckHandler> safety_check_; + + private: + // Replaces any instances of browser name (e.g. Google Chrome, Chromium, etc) + // with "browser" to make sure tests work both on Chromium and Google Chrome. + void ReplaceBrowserName(base::string16* s); }; void SafetyCheckHandlerTest::SetUp() { @@ -62,8 +89,9 @@ safety_check_->AllowJavascript(); } -bool SafetyCheckHandlerTest::HasSafetyCheckStatusChangedWithData( - int component, +const base::DictionaryValue* +SafetyCheckHandlerTest::GetSafetyCheckStatusChangedWithDataIfExists( + const std::string& component, int new_state) { for (const auto& it : test_web_ui_.call_data()) { const content::TestWebUI::CallData& data = *it; @@ -72,22 +100,49 @@ } std::string event; if ((!data.arg1()->GetAsString(&event)) || - event != "safety-check-status-changed") { + event != "safety-check-" + component + "-status-changed") { continue; } const base::DictionaryValue* dictionary = nullptr; if (!data.arg2()->GetAsDictionary(&dictionary)) { continue; } - int cur_component, cur_new_state; - if (dictionary->GetInteger("safetyCheckComponent", &cur_component) && - cur_component == component && - dictionary->GetInteger("newState", &cur_new_state) && + int cur_new_state; + if (dictionary->GetInteger("newState", &cur_new_state) && cur_new_state == new_state) { - return true; + return dictionary; } } - return false; + return nullptr; +} + +void SafetyCheckHandlerTest::VerifyDisplayString( + const base::DictionaryValue* event, + const base::string16& expected) { + base::string16 display; + ASSERT_TRUE(event->GetString("displayString", &display)); + ReplaceBrowserName(&display); + // Need to also replace any instances of Chrome and Chromium in the expected + // string due to an edge case on ChromeOS, where a device name is "Chrome", + // which gets replaced in the display string. + base::string16 expected_replaced = expected; + ReplaceBrowserName(&expected_replaced); + EXPECT_EQ(expected_replaced, display); +} + +void SafetyCheckHandlerTest::VerifyDisplayString( + const base::DictionaryValue* event, + const std::string& expected) { + VerifyDisplayString(event, base::ASCIIToUTF16(expected)); +} + +void SafetyCheckHandlerTest::ReplaceBrowserName(base::string16* s) { + base::ReplaceSubstringsAfterOffset(s, 0, base::ASCIIToUTF16("Google Chrome"), + base::ASCIIToUTF16("Browser")); + base::ReplaceSubstringsAfterOffset(s, 0, base::ASCIIToUTF16("Chrome"), + base::ASCIIToUTF16("Browser")); + base::ReplaceSubstringsAfterOffset(s, 0, base::ASCIIToUTF16("Chromium"), + base::ASCIIToUTF16("Browser")); } TEST_F(SafetyCheckHandlerTest, PerformSafetyCheck_MetricsRecorded) { @@ -96,21 +151,110 @@ EXPECT_EQ(1, user_action_tester.GetActionCount("SafetyCheck.Started")); } +TEST_F(SafetyCheckHandlerTest, CheckUpdates_Checking) { + version_updater_->SetReturnedStatus(VersionUpdater::Status::CHECKING); + safety_check_->PerformSafetyCheck(); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kChecking)); + ASSERT_TRUE(event); + VerifyDisplayString(event, base::UTF8ToUTF16("Running…")); +} + TEST_F(SafetyCheckHandlerTest, CheckUpdates_Updated) { version_updater_->SetReturnedStatus(VersionUpdater::Status::UPDATED); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kUpdates), - static_cast<int>(SafetyCheckHandler::UpdateStatus::kUpdated))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kUpdated)); + ASSERT_TRUE(event); +#if defined(OS_CHROMEOS) + base::string16 expected = base::ASCIIToUTF16("Your ") + + ui::GetChromeOSDeviceName() + + base::ASCIIToUTF16(" is up to date"); + VerifyDisplayString(event, expected); +#else + VerifyDisplayString(event, "Browser is up to date"); +#endif } -TEST_F(SafetyCheckHandlerTest, CheckUpdates_NotUpdated) { +TEST_F(SafetyCheckHandlerTest, CheckUpdates_Updating) { + version_updater_->SetReturnedStatus(VersionUpdater::Status::UPDATING); + safety_check_->PerformSafetyCheck(); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kUpdating)); + ASSERT_TRUE(event); +#if defined(OS_CHROMEOS) + VerifyDisplayString(event, "Updating your device"); +#else + VerifyDisplayString(event, "Updating Browser"); +#endif +} + +TEST_F(SafetyCheckHandlerTest, CheckUpdates_Relaunch) { + version_updater_->SetReturnedStatus(VersionUpdater::Status::NEARLY_UPDATED); + safety_check_->PerformSafetyCheck(); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kRelaunch)); + ASSERT_TRUE(event); +#if defined(OS_CHROMEOS) + VerifyDisplayString( + event, "Nearly up to date! Restart your device to finish updating."); +#else + VerifyDisplayString(event, + "Nearly up to date! Relaunch Browser to finish " + "updating. Incognito windows won't reopen."); +#endif +} + +TEST_F(SafetyCheckHandlerTest, CheckUpdates_DisabledByAdmin) { version_updater_->SetReturnedStatus( VersionUpdater::Status::DISABLED_BY_ADMIN); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kUpdates), - static_cast<int>(SafetyCheckHandler::UpdateStatus::kDisabledByAdmin))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kDisabledByAdmin)); + ASSERT_TRUE(event); + VerifyDisplayString( + event, + "Updates are managed by <a target=\"_blank\" " + "href=\"https://support.google.com/accounts/answer/6208960\">your " + "administrator</a>"); +} + +TEST_F(SafetyCheckHandlerTest, CheckUpdates_FailedOffline) { + version_updater_->SetReturnedStatus(VersionUpdater::Status::FAILED_OFFLINE); + safety_check_->PerformSafetyCheck(); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kFailedOffline)); + ASSERT_TRUE(event); + VerifyDisplayString(event, + "Browser can't check for updates. Try checking your " + "internet connection."); +} + +TEST_F(SafetyCheckHandlerTest, CheckUpdates_Failed) { + version_updater_->SetReturnedStatus(VersionUpdater::Status::FAILED); + safety_check_->PerformSafetyCheck(); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kUpdates, + static_cast<int>(SafetyCheckHandler::UpdateStatus::kFailed)); + ASSERT_TRUE(event); + VerifyDisplayString( + event, + "Browser didn't update, something went wrong. <a target=\"_blank\" " + "href=\"https://support.google.com/chrome/answer/111996\">Fix Browser " + "update problems and failed updates.</a>"); } TEST_F(SafetyCheckHandlerTest, CheckSafeBrowsing_Enabled) { @@ -118,9 +262,14 @@ ->GetPrefs() ->SetBoolean(prefs::kSafeBrowsingEnabled, true); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kSafeBrowsing), - static_cast<int>(SafetyCheckHandler::SafeBrowsingStatus::kEnabled))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kSafeBrowsing, + static_cast<int>(SafetyCheckHandler::SafeBrowsingStatus::kEnabled)); + ASSERT_TRUE(event); + VerifyDisplayString(event, + "Safe Browsing is up to date and protecting you from " + "harmful sites and downloads"); } TEST_F(SafetyCheckHandlerTest, CheckSafeBrowsing_Disabled) { @@ -128,9 +277,13 @@ ->GetPrefs() ->SetBoolean(prefs::kSafeBrowsingEnabled, false); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kSafeBrowsing), - static_cast<int>(SafetyCheckHandler::SafeBrowsingStatus::kDisabled))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kSafeBrowsing, + static_cast<int>(SafetyCheckHandler::SafeBrowsingStatus::kDisabled)); + ASSERT_TRUE(event); + VerifyDisplayString( + event, "Safe Browsing is off. To stay safe on the web, turn it on."); } TEST_F(SafetyCheckHandlerTest, CheckSafeBrowsing_DisabledByAdmin) { @@ -140,10 +293,17 @@ ->SetManagedPref(prefs::kSafeBrowsingEnabled, std::make_unique<base::Value>(false)); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kSafeBrowsing), - static_cast<int>( - SafetyCheckHandler::SafeBrowsingStatus::kDisabledByAdmin))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kSafeBrowsing, + static_cast<int>( + SafetyCheckHandler::SafeBrowsingStatus::kDisabledByAdmin)); + ASSERT_TRUE(event); + VerifyDisplayString( + event, + "<a target=\"_blank\" " + "href=\"https://support.google.com/accounts/answer/6208960\">Your " + "administrator</a> has turned off Safe Browsing"); } TEST_F(SafetyCheckHandlerTest, CheckSafeBrowsing_DisabledByExtension) { @@ -153,10 +313,13 @@ ->SetExtensionPref(prefs::kSafeBrowsingEnabled, std::make_unique<base::Value>(false)); safety_check_->PerformSafetyCheck(); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kSafeBrowsing), - static_cast<int>( - SafetyCheckHandler::SafeBrowsingStatus::kDisabledByExtension))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kSafeBrowsing, + static_cast<int>( + SafetyCheckHandler::SafeBrowsingStatus::kDisabledByExtension)); + ASSERT_TRUE(event); + VerifyDisplayString(event, "An extension has turned off Safe Browsing"); } TEST_F(SafetyCheckHandlerTest, CheckPasswords_ObserverRemovedAfterError) { @@ -164,22 +327,32 @@ // First, a "running" change of state. test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kRunning); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)); + ASSERT_TRUE(event); + VerifyDisplayString(event, base::UTF8ToUTF16("Running…")); // Second, an "offline" state. test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kNetworkError); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline))); + const base::DictionaryValue* event2 = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline)); + ASSERT_TRUE(event2); + VerifyDisplayString(event2, + "Browser can't check your passwords. Try checking your " + "internet connection."); // Another error, but since the previous state is terminal, the handler should // no longer be observing the BulkLeakCheckService state. test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kServiceError); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline))); + const base::DictionaryValue* event3 = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline)); + ASSERT_TRUE(event3); } TEST_F(SafetyCheckHandlerTest, CheckPasswords_InterruptedAndRefreshed) { @@ -187,9 +360,12 @@ // Password check running. test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kRunning); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)); + ASSERT_TRUE(event); + VerifyDisplayString(event, base::UTF8ToUTF16("Running…")); // The check gets interrupted and the page is refreshed. safety_check_->DisallowJavascript(); safety_check_->AllowJavascript(); @@ -197,14 +373,21 @@ safety_check_->PerformSafetyCheck(); test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kRunning); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking))); + const base::DictionaryValue* event2 = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)); + ASSERT_TRUE(event2); test_leak_service_->set_state_and_notify( - password_manager::BulkLeakCheckService::State::kNetworkError); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline))); + password_manager::BulkLeakCheckService::State::kSignedOut); + const base::DictionaryValue* event3 = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kSignedOut)); + ASSERT_TRUE(event3); + VerifyDisplayString( + event3, + "Browser can't check your passwords because you're not signed in"); } TEST_F(SafetyCheckHandlerTest, CheckPasswords_StartedTwice) { @@ -213,13 +396,19 @@ // First, a "running" change of state. test_leak_service_->set_state_and_notify( password_manager::BulkLeakCheckService::State::kRunning); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking))); + const base::DictionaryValue* event = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kChecking)); + ASSERT_TRUE(event); // Second, an "offline" state. test_leak_service_->set_state_and_notify( - password_manager::BulkLeakCheckService::State::kNetworkError); - EXPECT_TRUE(HasSafetyCheckStatusChangedWithData( - static_cast<int>(SafetyCheckHandler::SafetyCheckComponent::kPasswords), - static_cast<int>(SafetyCheckHandler::PasswordsStatus::kOffline))); + password_manager::BulkLeakCheckService::State::kServiceError); + const base::DictionaryValue* event2 = + GetSafetyCheckStatusChangedWithDataIfExists( + kPasswords, + static_cast<int>(SafetyCheckHandler::PasswordsStatus::kError)); + ASSERT_TRUE(event2); + VerifyDisplayString(event2, + "Browser can't check your passwords. Try again later."); }
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index 33292ddf2..b93c1b43 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -729,9 +729,23 @@ {"autofillPageTitle", IDS_SETTINGS_AUTOFILL}, {"passwords", IDS_SETTINGS_PASSWORDS}, {"checkPasswords", IDS_SETTINGS_CHECK_PASSWORDS}, + {"checkPasswordsCanceled", IDS_SETTINGS_CHECK_PASSWORDS_CANCELED}, {"checkedPasswords", IDS_SETTINGS_CHECKED_PASSWORDS}, {"checkPasswordsDescription", IDS_SETTINGS_CHECK_PASSWORDS_DESCRIPTION}, + {"checkPasswordsErrorOffline", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE}, + {"checkPasswordsErrorSignedOut", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT}, + {"checkPasswordsErrorNoPasswords", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS}, + {"checkPasswordsErrorTooManyPasswords", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_TOO_MANY_PASSWORDS}, + {"checkPasswordsErrorQuota", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT}, + {"checkPasswordsErrorGeneric", + IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC}, {"checkPasswordsAgain", IDS_SETTINGS_CHECK_PASSWORDS_AGAIN}, + {"checkPasswordsProgress", IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS}, {"compromisedPasswords", IDS_SETTINGS_COMPROMISED_PASSWORDS}, {"compromisedPasswordsDescription", IDS_SETTINGS_COMPROMISED_PASSWORDS_ADVICE}, @@ -1134,18 +1148,10 @@ IDS_SETTINGS_SAFETY_CHECK_PARENT_BUTTON_ARIA_LABEL}, {"safetyCheckUpdatesPrimaryLabel", IDS_SETTINGS_SAFETY_CHECK_UPDATES_PRIMARY_LABEL}, - {"safetyCheckUpdatesSubLabelFailedOffline", - IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED_OFFLINE}, {"safetyCheckUpdatesButtonAriaLabel", IDS_UPDATE_RECOMMENDED_DIALOG_TITLE}, {"safetyCheckPasswordsButton", IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_BUTTON}, - {"safetyCheckSafeBrowsingSubLabelEnabled", - IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_ENABLED}, - {"safetyCheckSafeBrowsingSubLabelDisabled", - IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED}, - {"safetyCheckSafeBrowsingSubLabelDisabledByExtension", - IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_EXTENSION}, {"safetyCheckSafeBrowsingButton", IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_BUTTON}, {"safetyCheckSafeBrowsingButtonAriaLabel", @@ -1181,21 +1187,6 @@ base::FeatureList::IsEnabled(omnibox::kDocumentProvider)); html_source->AddBoolean("showSecureDnsSetting", features::kDnsOverHttpsShowUiParam.Get()); - html_source->AddString( - "safetyCheckUpdatesSubLabelFailed", - l10n_util::GetStringFUTF16( - IDS_SETTINGS_SAFETY_CHECK_UPDATES_FAILED, - base::ASCIIToUTF16(chrome::kChromeFixUpdateProblems))); - html_source->AddString( - "safetyCheckUpdatesSubLabelDisabledByAdmin", - l10n_util::GetStringFUTF16( - IDS_SETTINGS_SAFETY_CHECK_UPDATES_DISABLED_BY_ADMIN, - base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL))); - html_source->AddString( - "safetyCheckSafeBrowsingSubLabelDisabledByAdmin", - l10n_util::GetStringFUTF16( - IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_DISABLED_BY_ADMIN, - base::ASCIIToUTF16(chrome::kWhoIsMyAdministratorHelpURL))); // The link to the Advanced Protection Program landing page, with a referrer // from Chrome settings.
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc index 79dd8d9c..296dd73 100644 --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -321,6 +321,14 @@ IDR_SETTINGS_LAZY_LOAD_VULCANIZED_HTML); html_source->SetDefaultResource(IDR_SETTINGS_VULCANIZED_HTML); + // Register SVG images that are purposefully not inlined in the HTML bundle + // above. + html_source->AddResourcePath("images/password_check_neutral.svg", + IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_SVG); + html_source->AddResourcePath( + "images/password_check_neutral_dark.svg", + IDR_SETTINGS_IMAGES_PASSWORD_CHECK_NEUTRAL_DARK_SVG); + // Only used in Polymer 3, see https://crbug.com/1026426. html_source->AddResourcePath("settings.js", IDR_SETTINGS_SETTINGS_ROLLUP_JS); html_source->AddResourcePath("settings_v3.html",
diff --git a/chrome/browser/vr/animation.cc b/chrome/browser/vr/animation.cc index 3c41f8b..0c6fbb7 100644 --- a/chrome/browser/vr/animation.cc +++ b/chrome/browser/vr/animation.cc
@@ -183,7 +183,8 @@ StartKeyframeModels(monotonic_time, include_infinite_animations); for (auto& keyframe_model : keyframe_models_) { - if (!include_infinite_animations && keyframe_model->iterations() < 0) + if (!include_infinite_animations && + keyframe_model->iterations() == std::numeric_limits<double>::infinity()) continue; cc::KeyframeEffect::TickKeyframeModel(monotonic_time, keyframe_model.get(), target_); @@ -207,7 +208,8 @@ TickInternal(base::TimeTicks::Max(), include_infinite_animations); #ifndef NDEBUG for (auto& keyframe_model : keyframe_models_) { - DCHECK_GT(0, keyframe_model->iterations()); + DCHECK_EQ(std::numeric_limits<double>::infinity(), + keyframe_model->iterations()); } #endif } @@ -286,7 +288,8 @@ bool include_infinite_animations) { cc::TargetProperties animated_properties; for (auto& keyframe_model : keyframe_models_) { - if (!include_infinite_animations && keyframe_model->iterations() < 0) + if (!include_infinite_animations && + keyframe_model->iterations() == std::numeric_limits<double>::infinity()) continue; if (keyframe_model->run_state() == cc::KeyframeModel::RUNNING || keyframe_model->run_state() == cc::KeyframeModel::PAUSED) { @@ -294,7 +297,8 @@ } } for (auto& keyframe_model : keyframe_models_) { - if (!include_infinite_animations && keyframe_model->iterations() < 0) + if (!include_infinite_animations && + keyframe_model->iterations() == std::numeric_limits<double>::infinity()) continue; if (!animated_properties[keyframe_model->target_property_id()] && keyframe_model->run_state() ==
diff --git a/chrome/browser/vr/elements/spinner.cc b/chrome/browser/vr/elements/spinner.cc index eae1c916..784fad2c 100644 --- a/chrome/browser/vr/elements/spinner.cc +++ b/chrome/browser/vr/elements/spinner.cc
@@ -78,7 +78,7 @@ std::move(curve), Animation::GetNextKeyframeModelId(), Animation::GetNextGroupId(), SPINNER_ROTATION)); - keyframe_model->set_iterations(-1); + keyframe_model->set_iterations(std::numeric_limits<double>::infinity()); AddKeyframeModel(std::move(keyframe_model)); curve = cc::KeyframedFloatAnimationCurve::Create(); @@ -93,7 +93,7 @@ std::move(curve), Animation::GetNextKeyframeModelId(), Animation::GetNextGroupId(), SPINNER_ANGLE_SWEEP); - keyframe_model->set_iterations(-1); + keyframe_model->set_iterations(std::numeric_limits<double>::infinity()); AddKeyframeModel(std::move(keyframe_model)); curve = cc::KeyframedFloatAnimationCurve::Create(); @@ -107,7 +107,7 @@ std::move(curve), Animation::GetNextKeyframeModelId(), Animation::GetNextGroupId(), SPINNER_ANGLE_START); - keyframe_model->set_iterations(-1); + keyframe_model->set_iterations(std::numeric_limits<double>::infinity()); AddKeyframeModel(std::move(keyframe_model)); }
diff --git a/chrome/browser/vr/elements/throbber.cc b/chrome/browser/vr/elements/throbber.cc index 02ad7518..5414aa77 100644 --- a/chrome/browser/vr/elements/throbber.cc +++ b/chrome/browser/vr/elements/throbber.cc
@@ -66,7 +66,7 @@ std::unique_ptr<cc::KeyframeModel> keyframe_model(cc::KeyframeModel::Create( std::move(curve), Animation::GetNextKeyframeModelId(), Animation::GetNextGroupId(), CIRCLE_GROW)); - keyframe_model->set_iterations(-1); + keyframe_model->set_iterations(std::numeric_limits<double>::infinity()); AddKeyframeModel(std::move(keyframe_model)); }
diff --git a/chrome/common/chrome_render_frame.mojom b/chrome/common/chrome_render_frame.mojom index 5cfb02e..9ef0e773 100644 --- a/chrome/common/chrome_render_frame.mojom +++ b/chrome/common/chrome_render_frame.mojom
@@ -7,6 +7,7 @@ import "mojo/public/mojom/base/string16.mojom"; import "third_party/blink/public/mojom/window_features/window_features.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; +import "url/mojom/url.mojom"; enum ImageFormat { JPEG, @@ -51,4 +52,7 @@ // Sets a header identifying the CCT session. [EnableIf=is_android] SetCCTClientHeader(string header); + + // Requests the Media Feed Url from the renderer (if the page has one). + GetMediaFeedURL() => (url.mojom.Url? url); };
diff --git a/chrome/common/extensions/api/enterprise_platform_keys.idl b/chrome/common/extensions/api/enterprise_platform_keys.idl index ecaf839b..39c98d6f 100644 --- a/chrome/common/extensions/api/enterprise_platform_keys.idl +++ b/chrome/common/extensions/api/enterprise_platform_keys.idl
@@ -22,7 +22,8 @@ // interface. The cryptographic operations, including key generation, are // hardware-backed. // <p>Only non-extractable RSASSA-PKCS1-V1_5 keys with - // <code>modulusLength</code> up to 2048 can be generated. Each key can be + // <code>modulusLength</code> up to 2048 and ECDSA with + // <code>namedCurve</code> P-256 can be generated. Each key can be // used for signing data at most once.</p> // <p>Keys generated on a specific <code>Token</code> cannot be used with // any other Tokens, nor can they be used with
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc index 1eb6fb0..0372181 100644 --- a/chrome/common/url_constants.cc +++ b/chrome/common/url_constants.cc
@@ -155,6 +155,9 @@ const char kExtensionInvalidRequestURL[] = "chrome-extension://invalid/"; +const char kFlashDeprecationLearnMoreURL[] = + "https://blog.chromium.org/2017/07/so-long-and-thanks-for-all-flash.html"; + const char kGoogleAccountActivityControlsURL[] = "https://myaccount.google.com/activitycontrols/search";
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h index cbde79c..2b5cabda 100644 --- a/chrome/common/url_constants.h +++ b/chrome/common/url_constants.h
@@ -146,6 +146,9 @@ // URL used to indicate that an extension resource load request was invalid. extern const char kExtensionInvalidRequestURL[]; +// Url to a blogpost about Flash deprecation. +extern const char kFlashDeprecationLearnMoreURL[]; + // URL of the 'Activity controls' section of the privacy settings page. extern const char kGoogleAccountActivityControlsURL[];
diff --git a/chrome/credential_provider/gaiacp/gaia_credential_base_unittests.cc b/chrome/credential_provider/gaiacp/gaia_credential_base_unittests.cc index f8756c2..d34748a9 100644 --- a/chrome/credential_provider/gaiacp/gaia_credential_base_unittests.cc +++ b/chrome/credential_provider/gaiacp/gaia_credential_base_unittests.cc
@@ -2641,6 +2641,7 @@ // 1. Fails the upload device details call due to network timeout. // 2. Fails the upload device details call due to invalid response // from the GEM http server. +// 3 A previously saved device resource ID is present on the device. class GcpGaiaCredentialBaseUploadDeviceDetailsTest : public GcpGaiaCredentialBaseTest, public ::testing::WithParamInterface<int> {}; @@ -2648,6 +2649,7 @@ TEST_P(GcpGaiaCredentialBaseUploadDeviceDetailsTest, UploadDeviceDetails) { bool fail_upload_device_details_timeout = (GetParam() == 1); bool fail_upload_device_details_invalid_response = (GetParam() == 2); + bool registry_has_device_resource_id = (GetParam() == 3); GoogleMdmEnrolledStatusForTesting force_success(true); // Set a fake serial number. @@ -2681,16 +2683,25 @@ fake_gem_device_details_manager()->SetRequestTimeoutForTesting( base::TimeDelta::FromMilliseconds(50)); } + const std::string device_resource_id = "test-device-resource-id"; + const std::string valid_server_response = + "{\"deviceResourceId\": \"" + device_resource_id + "\"}"; fake_http_url_fetcher_factory()->SetFakeResponse( fake_gem_device_details_manager()->GetGemServiceUploadDeviceDetailsUrl(), FakeWinHttpUrlFetcher::Headers(), fail_upload_device_details_invalid_response ? "Invalid json response" - : "{}", + : valid_server_response, upload_device_details_key_event ? upload_device_details_key_event->handle() : INVALID_HANDLE_VALUE); + if (registry_has_device_resource_id) { + HRESULT hr = SetUserProperty(sid.Copy(), kRegUserDeviceResourceId, + base::UTF8ToUTF16(device_resource_id)); + EXPECT_TRUE(SUCCEEDED(hr)); + } + // Create provider and start logon. Microsoft::WRL::ComPtr<ICredentialProviderCredential> cred; @@ -2730,8 +2741,8 @@ base::UTF16ToUTF8((BSTR)sid)); ASSERT_TRUE(request_dict.FindBoolKey("is_ad_joined_user").has_value()); ASSERT_EQ(request_dict.FindBoolKey("is_ad_joined_user").value(), true); - ASSERT_TRUE(request_dict.FindKey("wlan_mac_addr")->is_list()); + std::vector<std::string> actual_mac_address_list; for (const base::Value& value : request_dict.FindKey("wlan_mac_addr")->GetList()) { @@ -2742,12 +2753,28 @@ ASSERT_TRUE(std::equal(actual_mac_address_list.begin(), actual_mac_address_list.end(), mac_addresses.begin())); + if (registry_has_device_resource_id) { + ASSERT_EQ(*request_dict.FindStringKey("device_resource_id"), + device_resource_id); + } + + if (!fail_upload_device_details_timeout && + !fail_upload_device_details_invalid_response) { + wchar_t resource_id[512]; + ULONG resource_id_size = base::size(resource_id); + hr = GetUserProperty(sid.Copy(), kRegUserDeviceResourceId, resource_id, + &resource_id_size); + ASSERT_TRUE(SUCCEEDED(hr)); + ASSERT_TRUE(resource_id_size > 0); + ASSERT_EQ(device_resource_id, base::UTF16ToUTF8(resource_id)); + } + ASSERT_EQ(S_OK, ReleaseProvider()); } INSTANTIATE_TEST_SUITE_P(All, GcpGaiaCredentialBaseUploadDeviceDetailsTest, - ::testing::Values(0, 1, 2)); + ::testing::Values(0, 1, 2, 3)); class GcpGaiaCredentialBaseFullNameUpdateTest : public GcpGaiaCredentialBaseTest,
diff --git a/chrome/credential_provider/gaiacp/gem_device_details_manager.cc b/chrome/credential_provider/gaiacp/gem_device_details_manager.cc index c4a8f79..4d1bf74 100644 --- a/chrome/credential_provider/gaiacp/gem_device_details_manager.cc +++ b/chrome/credential_provider/gaiacp/gem_device_details_manager.cc
@@ -39,13 +39,16 @@ "device_serial_number"; const char kUploadDeviceDetailsRequestMachineGuidParameterName[] = "machine_guid"; +const char kUploadDeviceDetailsRequestDeviceResourceIdParameterName[] = + "device_resource_id"; const char kUploadDeviceDetailsRequestUserSidParameterName[] = "user_sid"; const char kUploadDeviceDetailsRequestUsernameParameterName[] = "account_username"; const char kUploadDeviceDetailsRequestDomainParameterName[] = "device_domain"; const char kIsAdJoinedUserParameterName[] = "is_ad_joined_user"; const char kMacAddressParameterName[] = "wlan_mac_addr"; - +const char kUploadDeviceDetailsResponseDeviceResourceIdParameterName[] = + "deviceResourceId"; } // namespace // static @@ -77,8 +80,6 @@ // Uploads the device details into GEM database using |access_token| for // authentication and authorization. The GEM service would use |serial_number| // and |machine_guid| for identifying the device entry in GEM database. -// TODO(crbug.com/1043199): Store device_resource_id on device and send that to -// GEM service for further optimizations. HRESULT GemDeviceDetailsManager::UploadDeviceDetails( const std::string& access_token, const base::string16& sid, @@ -114,6 +115,16 @@ request_dict_->SetKey(kMacAddressParameterName, std::move(mac_address_value_list)); + wchar_t known_resource_id[512]; + ULONG known_resource_id_size = base::size(known_resource_id); + hr = GetUserProperty(sid, kRegUserDeviceResourceId, known_resource_id, + &known_resource_id_size); + if (SUCCEEDED(hr) && known_resource_id_size > 0) { + request_dict_->SetStringKey( + kUploadDeviceDetailsRequestDeviceResourceIdParameterName, + base::UTF16ToUTF8(known_resource_id)); + } + base::Optional<base::Value> request_result; hr = WinHttpUrlFetcher::BuildRequestAndFetchResultFromHttpService( @@ -134,6 +145,17 @@ hr = E_FAIL; } + std::string* resource_id = request_result->FindStringKey( + kUploadDeviceDetailsResponseDeviceResourceIdParameterName); + if (resource_id) { + hr = SetUserProperty(sid, kRegUserDeviceResourceId, + base::UTF8ToUTF16(*resource_id)); + } else { + LOGFN(ERROR) << "Server response does not contain " + << kUploadDeviceDetailsResponseDeviceResourceIdParameterName; + hr = E_FAIL; + } + return hr; }
diff --git a/chrome/credential_provider/gaiacp/mdm_utils.cc b/chrome/credential_provider/gaiacp/mdm_utils.cc index d0cc525a..0e42ee5e 100644 --- a/chrome/credential_provider/gaiacp/mdm_utils.cc +++ b/chrome/credential_provider/gaiacp/mdm_utils.cc
@@ -44,6 +44,7 @@ constexpr wchar_t kRegDeviceDetailsUploadStatus[] = L"device_details_upload_status"; constexpr wchar_t kRegGlsPath[] = L"gls_path"; +constexpr wchar_t kRegUserDeviceResourceId[] = L"device_resource_id"; constexpr wchar_t kUserPasswordLsaStoreKeyPrefix[] = #if BUILDFLAG(GOOGLE_CHROME_BRANDING) L"Chrome-GCPW-";
diff --git a/chrome/credential_provider/gaiacp/mdm_utils.h b/chrome/credential_provider/gaiacp/mdm_utils.h index cba5273..498ef7db 100644 --- a/chrome/credential_provider/gaiacp/mdm_utils.h +++ b/chrome/credential_provider/gaiacp/mdm_utils.h
@@ -56,6 +56,9 @@ // Specifies custom Chrome path to use for GLS. extern const wchar_t kRegGlsPath[]; +// Registry key where user device resource ID is stored. +extern const wchar_t kRegUserDeviceResourceId[]; + // Class used in tests to force either a successful on unsuccessful enrollment // to google MDM. class GoogleMdmEnrollmentStatusForTesting {
diff --git a/chrome/installer/mac/signing/parts.py b/chrome/installer/mac/signing/parts.py index b439a62f..a6f28ae5 100644 --- a/chrome/installer/mac/signing/parts.py +++ b/chrome/installer/mac/signing/parts.py
@@ -126,6 +126,8 @@ 'libGLESv2.dylib', 'libswiftshader_libEGL.dylib', 'libswiftshader_libGLESv2.dylib', + 'libvk_swiftshader.dylib', + 'libvulkan.dylib', ) for library in dylibs: library_basename = os.path.basename(library)
diff --git a/chrome/lib/lifecycle/public/android/BUILD.gn b/chrome/lib/lifecycle/public/android/BUILD.gn index bab5b4bc..77d9199 100644 --- a/chrome/lib/lifecycle/public/android/BUILD.gn +++ b/chrome/lib/lifecycle/public/android/BUILD.gn
@@ -7,16 +7,16 @@ android_library("java") { deps = [ "//third_party/android_deps:androidx_annotation_annotation_java" ] sources = [ - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java", - "//chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java", + "java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java", + "java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java", + "java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java", ] }
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ActivityLifecycleDispatcher.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ActivityResultWithNativeObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/Destroyable.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/InflationObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/LifecycleObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/NativeInitObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver.java
diff --git a/chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java b/chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java similarity index 100% rename from chrome/browser/android/lifecycle/java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java rename to chrome/lib/lifecycle/public/android/java/src/org/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver.java
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn index 7009b1c..9b93e72 100644 --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn
@@ -66,6 +66,8 @@ "media/chrome_key_systems_provider.h", "media/flash_embed_rewrite.cc", "media/flash_embed_rewrite.h", + "media/media_feeds.cc", + "media/media_feeds.h", "media/webrtc_logging_agent_impl.cc", "media/webrtc_logging_agent_impl.h", "net/net_error_helper.cc",
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc index 2406ef3..3bdc66a 100644 --- a/chrome/renderer/chrome_render_frame_observer.cc +++ b/chrome/renderer/chrome_render_frame_observer.cc
@@ -26,6 +26,7 @@ #include "chrome/common/open_search_description_document_handler.mojom.h" #include "chrome/common/prerender_messages.h" #include "chrome/common/render_messages.h" +#include "chrome/renderer/media/media_feeds.h" #include "chrome/renderer/prerender/prerender_helper.h" #include "chrome/renderer/web_apps.h" #include "components/crash/core/common/crash_key.h" @@ -343,6 +344,11 @@ } #endif +void ChromeRenderFrameObserver::GetMediaFeedURL( + GetMediaFeedURLCallback callback) { + std::move(callback).Run(MediaFeeds::GetMediaFeedURL(render_frame())); +} + void ChromeRenderFrameObserver::SetClientSidePhishingDetection( bool enable_phishing_detection) { #if BUILDFLAG(SAFE_BROWSING_CSD)
diff --git a/chrome/renderer/chrome_render_frame_observer.h b/chrome/renderer/chrome_render_frame_observer.h index dbd135b..b163935 100644 --- a/chrome/renderer/chrome_render_frame_observer.h +++ b/chrome/renderer/chrome_render_frame_observer.h
@@ -97,6 +97,7 @@ #if defined(OS_ANDROID) void SetCCTClientHeader(const std::string& header) override; #endif + void GetMediaFeedURL(GetMediaFeedURLCallback callback) override; void OnRenderFrameObserverRequest( mojo::PendingAssociatedReceiver<chrome::mojom::ChromeRenderFrame>
diff --git a/chrome/renderer/media/OWNERS b/chrome/renderer/media/OWNERS index 4ff3732..e5a3f968 100644 --- a/chrome/renderer/media/OWNERS +++ b/chrome/renderer/media/OWNERS
@@ -9,4 +9,7 @@ # FlashEmbedRewrite per-file flash_embed_rewrite*=mlamouri@chromium.org +# For Media Feeds. +per-file media_feeds*=file://chrome/browser/media/feeds/OWNERS + # COMPONENT: Internals>Media
diff --git a/chrome/renderer/media/media_feeds.cc b/chrome/renderer/media/media_feeds.cc new file mode 100644 index 0000000..cdbc199 --- /dev/null +++ b/chrome/renderer/media/media_feeds.cc
@@ -0,0 +1,86 @@ +// 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. + +#include "chrome/renderer/media/media_feeds.h" + +#include "content/public/renderer/render_frame.h" +#include "third_party/blink/public/platform/web_security_origin.h" +#include "third_party/blink/public/platform/web_string.h" +#include "third_party/blink/public/platform/web_url.h" +#include "third_party/blink/public/web/web_console_message.h" +#include "third_party/blink/public/web/web_document.h" +#include "third_party/blink/public/web/web_element.h" +#include "third_party/blink/public/web/web_local_frame.h" +#include "third_party/blink/public/web/web_node.h" +#include "url/gurl.h" + +using blink::WebDocument; +using blink::WebElement; +using blink::WebNode; +using blink::WebString; + +base::Optional<GURL> MediaFeeds::GetMediaFeedURL(content::RenderFrame* frame) { + // Media Feeds are only discovered on the main frame. + if (!frame->IsMainFrame()) + return base::nullopt; + + WebDocument document = frame->GetWebFrame()->GetDocument(); + if (document.IsNull()) + return base::nullopt; + + WebElement head = document.Head(); + if (head.IsNull()) + return base::nullopt; + + url::Origin document_origin = document.GetSecurityOrigin(); + + // Look for a <link> element in the <head> of the document. + for (WebNode child = head.FirstChild(); !child.IsNull(); + child = child.NextSibling()) { + if (!child.IsElementNode()) + continue; + + WebElement elem = child.To<WebElement>(); + if (!elem.HasHTMLTagName("link")) + continue; + + // The <link> rel must be feed. + std::string rel = elem.GetAttribute("rel").Utf8(); + if (!base::LowerCaseEqualsASCII(rel, "feed")) + continue; + + // The <link> type must the JSON+LD mime type. + std::string type = elem.GetAttribute("type").Utf8(); + if (!base::LowerCaseEqualsASCII(type, "application/ld+json")) + continue; + + WebString href = elem.GetAttribute("href"); + if (href.IsNull() || href.IsEmpty()) + continue; + + // If the URL is not valid then we should throw an error. + GURL url = document.CompleteURL(href); + if (!url.is_valid()) { + frame->AddMessageToConsole(blink::mojom::ConsoleMessageLevel::kWarning, + "The Media Feed URL is not a valid URL."); + + return base::nullopt; + } + + // If the URL is not the same origin as the document then we should throw + // and error. + auto feed_origin = url::Origin::Create(url); + if (!document_origin.IsSameOriginWith(feed_origin)) { + frame->AddMessageToConsole(blink::mojom::ConsoleMessageLevel::kWarning, + "The Media Feed URL needs to be the same " + "origin as the document URL."); + + return base::nullopt; + } + + return url; + } + + return base::nullopt; +}
diff --git a/chrome/renderer/media/media_feeds.h b/chrome/renderer/media/media_feeds.h new file mode 100644 index 0000000..910a90e5 --- /dev/null +++ b/chrome/renderer/media/media_feeds.h
@@ -0,0 +1,22 @@ +// 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. + +#ifndef CHROME_RENDERER_MEDIA_MEDIA_FEEDS_H_ +#define CHROME_RENDERER_MEDIA_MEDIA_FEEDS_H_ + +#include "base/optional.h" + +class GURL; + +namespace content { +class RenderFrame; +} // namespace content + +class MediaFeeds { + public: + // Gets the Media Feed URL (if present). + static base::Optional<GURL> GetMediaFeedURL(content::RenderFrame* frame); +}; + +#endif // CHROME_RENDERER_MEDIA_MEDIA_FEEDS_H_
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 9ca126f..657cdac0 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -943,6 +943,7 @@ "../browser/media/defer_background_media_browsertest.cc", "../browser/media/encrypted_media_browsertest.cc", "../browser/media/encrypted_media_supported_types_browsertest.cc", + "../browser/media/feeds/media_feeds_browsertest.cc", "../browser/media/history/media_history_browsertest.cc", "../browser/media/media_browsertest.cc", "../browser/media/media_browsertest.h",
diff --git a/chrome/test/data/webui/settings/password_check_test.js b/chrome/test/data/webui/settings/password_check_test.js index dbe0d5a1..dfee7d9 100644 --- a/chrome/test/data/webui/settings/password_check_test.js +++ b/chrome/test/data/webui/settings/password_check_test.js
@@ -161,24 +161,28 @@ /*state=*/ PasswordCheckState.RUNNING, /*checked=*/ 1, /*remaining=*/ 1); - passwordManager.data.leakedCredentials = - autofill_test_util.makeCompromisedCredentialsInfo([], 'just now'); const section = createCheckPasswordSection(); return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { Polymer.dom.flush(); - expectEquals(PasswordCheckState.RUNNING, section.status_.state); + assert(isElementVisible(section.$.title)); + expectEquals( + section.i18n('checkPasswordsProgress', 1, 2), + section.$.title.innerText); // Change status from running to IDLE. assert(!!passwordManager.lastCallback.addPasswordCheckStatusListener); passwordManager.lastCallback.addPasswordCheckStatusListener( autofill_test_util.makePasswordCheckStatus( - /*state=*/ PasswordCheckState.IDLE, + /*state=*/ PasswordCheckState.RUNNING, /*checked=*/ 2, /*remaining=*/ 0)); Polymer.dom.flush(); - expectEquals(PasswordCheckState.IDLE, section.status_.state); + assert(isElementVisible(section.$.title)); + expectEquals( + section.i18n('checkPasswordsProgress', 2, 2), + section.$.title.innerText); }); }); @@ -275,5 +279,210 @@ expectFalse(isElementVisible(icon)); }); }); + + // While running, the check should show the processed and total passwords. + test('testShowOnlyProgressWhileRunningWithoutLeaks', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + /*state=*/ PasswordCheckState.RUNNING, + /*checked=*/ 1, + /*remaining=*/ 3); + passwordManager.data.leakedCredentials = + autofill_test_util.makeCompromisedCredentialsInfo([], 'just now'); + + section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals( + section.i18n('checkPasswordsProgress', 1, 4), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // While running, show progress and already found leak count. + test('testShowProgressAndLeaksWhileRunning', function() { + const data = passwordManager.data; + data.checkStatus = autofill_test_util.makePasswordCheckStatus( + /*state=*/ PasswordCheckState.RUNNING, + /*checked=*/ 2, + /*remaining=*/ 3); + data.leakedCredentials = + autofill_test_util.makeCompromisedCredentialsInfo( + [ + autofill_test_util.makeCompromisedCredentials( + 'one.com', 'test4', 'LEAKED'), + ], + 'just now'); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + const subtitle = section.$.subtitle; + assert(isElementVisible(title)); + assert(isElementVisible(subtitle)); + expectEquals( + section.i18n('checkPasswordsProgress', 2, 5), title.innerText); + }); + }); + + // When canceled, show string explaining that and already found leak + // count. + test('testShowProgressAndLeaksAfterCanceled', function() { + const data = passwordManager.data; + data.checkStatus = autofill_test_util.makePasswordCheckStatus( + /*state=*/ PasswordCheckState.CANCELED, + /*checked=*/ 2, + /*remaining=*/ 3); + data.leakedCredentials = + autofill_test_util.makeCompromisedCredentialsInfo( + [ + autofill_test_util.makeCompromisedCredentials( + 'one.com', 'test4', 'LEAKED'), + ], + 'just now'); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + const subtitle = section.$.subtitle; + assert(isElementVisible(title)); + assert(isElementVisible(subtitle)); + expectEquals(section.i18n('checkPasswordsCanceled'), title.innerText); + }); + }); + + // After running, show confirmation, timestamp and number of leaks. + test('testShowLeakCountWhenIdle', function() { + const data = passwordManager.data; + data.checkStatus = autofill_test_util.makePasswordCheckStatus( + /*state=*/ PasswordCheckState.IDLE, + /*checked=*/ 4, + /*remaining=*/ 0); + data.leakedCredentials = + autofill_test_util.makeCompromisedCredentialsInfo( + [ + autofill_test_util.makeCompromisedCredentials( + 'one.com', 'test4', 'LEAKED'), + ], + 'just now'); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + const subtitle = section.$.subtitle; + assert(isElementVisible(title)); + assert(isElementVisible(subtitle)); + expectEquals( + section.i18n('checkPasswords') + ' • just now', title.innerText); + }); + }); + + // When offline, only show an error. + test('testShowOnlyErrorWhenOffline', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.OFFLINE); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals( + section.i18n('checkPasswordsErrorOffline'), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // When signed out, only show an error. + test('testShowOnlyErrorWhenSignedOut', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.SIGNED_OUT); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals( + section.i18n('checkPasswordsErrorSignedOut'), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // When no passwords are saved, only show an error. + test('testShowOnlyErrorWithoutPasswords', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.NO_PASSWORDS); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals( + section.i18n('checkPasswordsErrorNoPasswords'), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // When too many passwords were saved to check them, only show an error. + test('testShowOnlyErrorWhenTooManyPasswords', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.TOO_MANY_PASSWORDS); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + // TODO(crbug.com/1047726): Check for account redirection. + expectEquals( + section.i18n('checkPasswordsErrorTooManyPasswords'), + title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // When users run out of quota, only show an error. + test('testShowOnlyErrorWhenQuotaIsHit', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.QUOTA_LIMIT); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals(section.i18n('checkPasswordsErrorQuota'), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); + + // When a general error occurs, only show the message. + test('testShowOnlyGenericError', function() { + passwordManager.data.checkStatus = + autofill_test_util.makePasswordCheckStatus( + PasswordCheckState.OTHER_ERROR); + + const section = createCheckPasswordSection(); + return passwordManager.whenCalled('getPasswordCheckStatus').then(() => { + Polymer.dom.flush(); + const title = section.$.title; + assert(isElementVisible(title)); + expectEquals( + section.i18n('checkPasswordsErrorGeneric'), title.innerText); + expectFalse(isElementVisible(section.$.subtitle)); + }); + }); }); });
diff --git a/chrome/test/data/webui/settings/passwords_and_autofill_fake_data.js b/chrome/test/data/webui/settings/passwords_and_autofill_fake_data.js index 6cad2dc..99eb95ef 100644 --- a/chrome/test/data/webui/settings/passwords_and_autofill_fake_data.js +++ b/chrome/test/data/webui/settings/passwords_and_autofill_fake_data.js
@@ -148,15 +148,15 @@ /** * Creates a new password check status. * @param {!chrome.passwordsPrivate.PasswordCheckState} state - * @param {number} checked - * @param {number} remaining + * @param {!number|undefined} checked + * @param {!number|undefined} remaining * @return {!chrome.passwordsPrivate.PasswordCheckStatus} */ function makePasswordCheckStatus(state, checked, remaining) { return { state: state || chrome.passwordsPrivate.PasswordCheckState.IDLE, - alreadyProcessed: checked || 0, - remainingInQueue: remaining || 0 + alreadyProcessed: checked, + remainingInQueue: remaining }; }
diff --git a/chrome/test/data/webui/settings/passwords_section_test.js b/chrome/test/data/webui/settings/passwords_section_test.js index e26fb77..18f5b1e 100644 --- a/chrome/test/data/webui/settings/passwords_section_test.js +++ b/chrome/test/data/webui/settings/passwords_section_test.js
@@ -939,5 +939,36 @@ Polymer.dom.flush(); assertFalse(passwordsSection.$.manageLink.hidden); }); + + test('showPasswordCheckBannerWhenNotCheckedBefore', function() { + assertEquals( + passwordManager.data.leakedCredentials.elapsedTimeSinceLastCheck, + undefined); + const passwordsSection = + elementFactory.createPasswordsSection(passwordManager, [], []); + return passwordManager.whenCalled('getCompromisedCredentialsInfo') + .then(() => { + Polymer.dom.flush(); + assertFalse( + passwordsSection.$$('#checkPasswordsBannerContainer').hidden); + assertFalse(passwordsSection.$$('#checkPasswordsButton').hidden); + assertTrue(passwordsSection.$$('#checkPasswordsLinkRow').hidden); + }); + }); + + test('hidePasswordCheckBannerWhenCheckedBefore', function() { + passwordManager.data.leakedCredentials = + autofill_test_util.makeCompromisedCredentialsInfo([], '5 mins ago'); + const passwordsSection = + elementFactory.createPasswordsSection(passwordManager, [], []); + return passwordManager.whenCalled('getCompromisedCredentialsInfo') + .then(() => { + Polymer.dom.flush(); + assertTrue( + passwordsSection.$$('#checkPasswordsBannerContainer').hidden); + assertTrue(passwordsSection.$$('#checkPasswordsButton').hidden); + assertFalse(passwordsSection.$$('#checkPasswordsLinkRow').hidden); + }); + }); }); });
diff --git a/chrome/test/data/webui/settings/safety_check_page_test.js b/chrome/test/data/webui/settings/safety_check_page_test.js index 306636e..6c66c5e 100644 --- a/chrome/test/data/webui/settings/safety_check_page_test.js +++ b/chrome/test/data/webui/settings/safety_check_page_test.js
@@ -20,6 +20,7 @@ function fireSafetyCheckUpdatesEvent(state) { const event = {}; event.newState = state; + event.displayString = null; cr.webUIListenerCallback( settings.SafetyCheckCallbackConstants.UPDATES_CHANGED, event); } @@ -27,7 +28,7 @@ function fireSafetyCheckPasswordsEvent(state) { const event = {}; event.newState = state; - event.passwordsDisplayString = null; + event.displayString = null; cr.webUIListenerCallback( settings.SafetyCheckCallbackConstants.PASSWORDS_CHANGED, event); } @@ -35,6 +36,7 @@ function fireSafetyCheckSafeBrowsingEvent(state) { const event = {}; event.newState = state; + event.displayString = null; cr.webUIListenerCallback( settings.SafetyCheckCallbackConstants.SAFE_BROWSING_CHANGED, event); } @@ -42,7 +44,7 @@ function fireSafetyCheckExtensionsEvent(state) { const event = {}; event.newState = state; - event.extensionsDisplayString = null; + event.displayString = null; cr.webUIListenerCallback( settings.SafetyCheckCallbackConstants.EXTENSIONS_CHANGED, event); }
diff --git a/chrome/test/data/webui/settings/test_password_manager_proxy.js b/chrome/test/data/webui/settings/test_password_manager_proxy.js index 5036c12..eb136b0 100644 --- a/chrome/test/data/webui/settings/test_password_manager_proxy.js +++ b/chrome/test/data/webui/settings/test_password_manager_proxy.js
@@ -24,8 +24,7 @@ this.data = { passwords: [], exceptions: [], - leakedCredentials: - autofill_test_util.makeCompromisedCredentialsInfo([], ''), + leakedCredentials: autofill_test_util.makeCompromisedCredentialsInfo([]), checkStatus: autofill_test_util.makePasswordCheckStatus(), };
diff --git a/chrome/updater/action_handler.h b/chrome/updater/action_handler.h index 0e97029..975d9dd 100644 --- a/chrome/updater/action_handler.h +++ b/chrome/updater/action_handler.h
@@ -5,7 +5,7 @@ #ifndef CHROME_UPDATER_ACTION_HANDLER_H_ #define CHROME_UPDATER_ACTION_HANDLER_H_ -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "build/build_config.h" namespace update_client {
diff --git a/chrome/updater/app/app_uninstall.h b/chrome/updater/app/app_uninstall.h index 79b16c3..85ed26138 100644 --- a/chrome/updater/app/app_uninstall.h +++ b/chrome/updater/app/app_uninstall.h
@@ -5,7 +5,7 @@ #ifndef CHROME_UPDATER_APP_APP_UNINSTALL_H_ #define CHROME_UPDATER_APP_APP_UNINSTALL_H_ -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" namespace updater {
diff --git a/chrome/updater/app/app_update_all.h b/chrome/updater/app/app_update_all.h index 5af7effc..7559df4 100644 --- a/chrome/updater/app/app_update_all.h +++ b/chrome/updater/app/app_update_all.h
@@ -5,7 +5,7 @@ #ifndef CHROME_UPDATER_APP_APP_UPDATE_ALL_H_ #define CHROME_UPDATER_APP_APP_UPDATE_ALL_H_ -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" namespace updater {
diff --git a/chrome/updater/configurator.h b/chrome/updater/configurator.h index 764ee5a0..caf75601 100644 --- a/chrome/updater/configurator.h +++ b/chrome/updater/configurator.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/containers/flat_map.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "components/update_client/configurator.h" class GURL;
diff --git a/chrome/updater/installer.h b/chrome/updater/installer.h index dcfa6a08..d1e1e608 100644 --- a/chrome/updater/installer.h +++ b/chrome/updater/installer.h
@@ -10,7 +10,7 @@ #include "base/callback_forward.h" #include "base/files/file_path.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/values.h" #include "base/version.h"
diff --git a/chrome/updater/mac/net/network_fetcher.h b/chrome/updater/mac/net/network_fetcher.h index 0774510..c598e7bd 100644 --- a/chrome/updater/mac/net/network_fetcher.h +++ b/chrome/updater/mac/net/network_fetcher.h
@@ -11,7 +11,6 @@ #include "base/callback.h" #include "base/containers/flat_map.h" -#include "base/memory/ref_counted.h" #include "base/threading/thread_checker.h" #include "components/update_client/network.h"
diff --git a/chrome/updater/mac/net/network_unittest.mm b/chrome/updater/mac/net/network_unittest.mm index 3ba55539..c6dc39c 100644 --- a/chrome/updater/mac/net/network_unittest.mm +++ b/chrome/updater/mac/net/network_unittest.mm
@@ -11,7 +11,6 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" -#include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "net/test/embedded_test_server/embedded_test_server.h"
diff --git a/chrome/updater/patcher.h b/chrome/updater/patcher.h index c3466da..ad583983 100644 --- a/chrome/updater/patcher.h +++ b/chrome/updater/patcher.h
@@ -7,7 +7,7 @@ #include <memory> -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "components/update_client/patcher.h" namespace updater {
diff --git a/chrome/updater/persisted_data_unittest.cc b/chrome/updater/persisted_data_unittest.cc index ae7838ac..aee84bc 100644 --- a/chrome/updater/persisted_data_unittest.cc +++ b/chrome/updater/persisted_data_unittest.cc
@@ -5,7 +5,6 @@ #include <memory> #include <string> -#include "base/memory/scoped_refptr.h" #include "base/stl_util.h" #include "base/version.h" #include "chrome/updater/persisted_data.h"
diff --git a/chrome/updater/prefs.cc b/chrome/updater/prefs.cc index eb9f6b4..0b2b169 100644 --- a/chrome/updater/prefs.cc +++ b/chrome/updater/prefs.cc
@@ -5,7 +5,7 @@ #include "chrome/updater/prefs.h" #include "base/files/file_path.h" -#include "base/memory/scoped_refptr.h" +#include "base/memory/ref_counted.h" #include "chrome/updater/util.h" #include "components/prefs/json_pref_store.h" #include "components/prefs/pref_registry_simple.h"
diff --git a/chrome/updater/server/mac/server.h b/chrome/updater/server/mac/server.h index 29a2c2bf..b849378 100644 --- a/chrome/updater/server/mac/server.h +++ b/chrome/updater/server/mac/server.h
@@ -5,7 +5,7 @@ #ifndef CHROME_UPDATER_SERVER_MAC_SERVER_H_ #define CHROME_UPDATER_SERVER_MAC_SERVER_H_ -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" namespace updater {
diff --git a/chrome/updater/server/win/server.cc b/chrome/updater/server/win/server.cc index fa776db..40c1eb7 100644 --- a/chrome/updater/server/win/server.cc +++ b/chrome/updater/server/win/server.cc
@@ -16,6 +16,7 @@ #include <wrl/module.h> #include "base/logging.h" +#include "base/memory/ref_counted.h" #include "base/stl_util.h" #include "base/win/scoped_com_initializer.h" #include "chrome/updater/app/app.h"
diff --git a/chrome/updater/server/win/server.h b/chrome/updater/server/win/server.h index 08835b280..646411a 100644 --- a/chrome/updater/server/win/server.h +++ b/chrome/updater/server/win/server.h
@@ -8,7 +8,7 @@ #include <wrl/implements.h> #include <wrl/module.h> -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/strings/string16.h" #include "chrome/updater/server/win/updater_idl.h"
diff --git a/chrome/updater/unzipper.h b/chrome/updater/unzipper.h index 1fad5de..2179d4b4 100644 --- a/chrome/updater/unzipper.h +++ b/chrome/updater/unzipper.h
@@ -7,7 +7,6 @@ #include <memory> -#include "base/memory/ref_counted.h" #include "components/update_client/unzipper.h" namespace updater {
diff --git a/chrome/updater/update_apps_win.cc b/chrome/updater/update_apps_win.cc index 20e07dcf..35caa668 100644 --- a/chrome/updater/update_apps_win.cc +++ b/chrome/updater/update_apps_win.cc
@@ -4,7 +4,6 @@ #include "chrome/updater/update_apps.h" -#include "base/memory/scoped_refptr.h" #include "chrome/updater/configurator.h" #include "chrome/updater/update_service_in_process.h"
diff --git a/chrome/updater/update_service_in_process.cc b/chrome/updater/update_service_in_process.cc index 73f6ca9..847b6266 100644 --- a/chrome/updater/update_service_in_process.cc +++ b/chrome/updater/update_service_in_process.cc
@@ -9,7 +9,6 @@ #include <vector> #include "base/bind.h" -#include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/sequenced_task_runner.h" #include "base/task/post_task.h"
diff --git a/chrome/updater/update_service_in_process.h b/chrome/updater/update_service_in_process.h index 1daacfcd..d3645b89 100644 --- a/chrome/updater/update_service_in_process.h +++ b/chrome/updater/update_service_in_process.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/callback_forward.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "chrome/updater/update_service.h"
diff --git a/chrome/updater/win/install_app.cc b/chrome/updater/win/install_app.cc index 1950637..eb43888 100644 --- a/chrome/updater/win/install_app.cc +++ b/chrome/updater/win/install_app.cc
@@ -13,7 +13,7 @@ #include "base/files/file_path.h" #include "base/i18n/icu_util.h" #include "base/logging.h" -#include "base/memory/scoped_refptr.h" +#include "base/memory/ref_counted.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/sequence_checker.h" @@ -363,9 +363,8 @@ // Implements installing a single application by invoking the code in // |update_client|, listening to |update_client| and UI events, and // driving the UI code by calling the functions exposed by -// |InstallProgressObserver|. This class is an observer for an install which is -// handled by |update_client|, and it also notifies the UI, which is an -// observer of this class. +// |InstallProgressObserver|. This class receives state changes for an install +// and it notifies the UI, which is an observer of this class. // // The UI code can't run in a thread where the message loop is an instance of // |base::MessageLoop|. |base::MessageLoop| does not handle all the messages @@ -384,23 +383,24 @@ // posts a reply to the main thread, which makes the main thread exit its run // loop, and then the main thread returns to the destructor of this class, // and destructs its class members. -class InstallAppController : public ui::ProgressWndEvents, - public update_client::UpdateClient::Observer, - public WTL::CMessageFilter { +class InstallAppController + : public base::RefCountedThreadSafe<InstallAppController>, + public ui::ProgressWndEvents, + public WTL::CMessageFilter { public: explicit InstallAppController( - scoped_refptr<update_client::Configurator> configurator, - base::OnceCallback<void(int)> done); - ~InstallAppController() override; + scoped_refptr<update_client::Configurator> configurator); + InstallAppController(const InstallAppController&) = delete; InstallAppController& operator=(const InstallAppController&) = delete; - void InstallApp(const std::string& app_id); + void InstallApp(const std::string& app_id, + base::OnceCallback<void(int)> callback); private: - // Overrides for update_client::UpdateClient::Observer. This function is - // called on the main updater thread. - void OnEvent(Events event, const std::string& id) override; + friend class base::RefCountedThreadSafe<InstallAppController>; + + ~InstallAppController() override; // Overrides for OmahaWndEvents. These functions are called on the UI thread. void DoClose() override {} @@ -428,13 +428,15 @@ // These functions are called on the main updater thread. void DoInstallApp(); void InstallComplete(); - void HandleInstallResult(Events event, - const update_client::CrxUpdateItem& update_item); + void HandleInstallResult(const update_client::CrxUpdateItem& update_item); void FlushPrefs(); // Returns the thread id of the thread which owns the progress window. DWORD GetUIThreadID() const; + // Receives the state changes during handling of the Install function call. + void StateChange(update_client::CrxUpdateItem crx_update_item); + SEQUENCE_CHECKER(sequence_checker_); // Provides an execution environment for the updater main thread. @@ -453,7 +455,6 @@ scoped_refptr<update_client::Configurator> config_; scoped_refptr<PersistedData> persisted_data_; scoped_refptr<update_client::UpdateClient> update_client_; - std::unique_ptr<Observer> observer_; // The message loop associated with the UI. std::unique_ptr<WTL::CMessageLoop> ui_message_loop_; @@ -466,14 +467,13 @@ std::unique_ptr<InstallProgressObserverIPC> install_progress_observer_ipc_; // Called when InstallApp is done. - base::OnceCallback<void(int)> completion_callback_; + base::OnceCallback<void(int)> callback_; }; // TODO(sorin): fix the hardcoding of the application name. // https:crbug.com/1014298 InstallAppController::InstallAppController( - scoped_refptr<update_client::Configurator> configurator, - base::OnceCallback<void(int)> completion_callback) + scoped_refptr<update_client::Configurator> configurator) : main_task_runner_(base::SequencedTaskRunnerHandle::Get()), ui_task_runner_(base::ThreadPool::CreateSingleThreadTaskRunner( {base::TaskPriority::USER_BLOCKING, @@ -482,25 +482,20 @@ app_name_(kAppNameChrome), config_(configurator), persisted_data_( - base::MakeRefCounted<PersistedData>(config_->GetPrefService())), - completion_callback_(std::move(completion_callback)) {} + base::MakeRefCounted<PersistedData>(config_->GetPrefService())) {} +InstallAppController::~InstallAppController() = default; -InstallAppController::~InstallAppController() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -} - -void InstallAppController::InstallApp(const std::string& app_id) { +void InstallAppController::InstallApp(const std::string& app_id, + base::OnceCallback<void(int)> callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(base::ThreadTaskRunnerHandle::IsSet()); app_id_ = app_id; + callback_ = std::move(callback); ui_task_runner_->PostTaskAndReply( - FROM_HERE, - base::BindOnce(&InstallAppController::InitializeUI, - base::Unretained(this)), - base::BindOnce(&InstallAppController::DoInstallApp, - base::Unretained(this))); + FROM_HERE, base::BindOnce(&InstallAppController::InitializeUI, this), + base::BindOnce(&InstallAppController::DoInstallApp, this)); } void InstallAppController::DoInstallApp() { @@ -510,12 +505,10 @@ // used from now on as an observer of the application install. The task // below runs the UI message loop for the UI until it exits, because // a WM_QUIT message has been posted to it. - ui_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&InstallAppController::RunUI, base::Unretained(this))); + ui_task_runner_->PostTask(FROM_HERE, + base::BindOnce(&InstallAppController::RunUI, this)); update_client_ = update_client::UpdateClientFactory(config_); - update_client_->AddObserver(this); install_progress_observer_ipc_ = std::make_unique<InstallProgressObserverIPC>(progress_wnd_.get()); @@ -531,16 +524,16 @@ ->MakeCrxComponent()}; }, persisted_data_), - {}, + base::BindRepeating(&InstallAppController::StateChange, this), base::BindOnce( - [](InstallAppController* install_app_controller, + [](scoped_refptr<InstallAppController> install_app_controller, update_client::Error error) { - base::ThreadTaskRunnerHandle::Get()->PostTask( + base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&InstallAppController::InstallComplete, - base::Unretained(install_app_controller))); + install_app_controller)); }, - base::Unretained(this))); + base::WrapRefCounted(this))); } // This function is invoked after the |update_client::Install| call has been @@ -552,40 +545,35 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); FlushPrefs(); install_progress_observer_ipc_ = nullptr; - update_client_->RemoveObserver(this); update_client_ = nullptr; } -// TODO(sorin): receive the state changes using a callback instead of events. -// crbug/1059938. -void InstallAppController::OnEvent(Events event, const std::string& id) { +void InstallAppController::StateChange( + update_client::CrxUpdateItem crx_update_item) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(install_progress_observer_ipc_); - CHECK_EQ(app_id_, id); - - update_client::CrxUpdateItem crx_update_item; - update_client_->GetCrxUpdateState(app_id_, &crx_update_item); + CHECK_EQ(app_id_, crx_update_item.id); const auto app_id = base::ASCIIToUTF16(app_id_); - switch (event) { - case Events::COMPONENT_CHECKING_FOR_UPDATES: + switch (crx_update_item.state) { + case update_client::ComponentState::kChecking: install_progress_observer_ipc_->OnCheckingForUpdate(); break; - case Events::COMPONENT_UPDATE_FOUND: + case update_client::ComponentState::kCanUpdate: install_progress_observer_ipc_->OnUpdateAvailable( app_id, app_name_, base::ASCIIToUTF16(crx_update_item.next_version.GetString())); break; - case Events::COMPONENT_UPDATE_DOWNLOADING: + case update_client::ComponentState::kDownloading: // TODO(sorin): handle progress and time remaining. // https://crbug.com/1014590 install_progress_observer_ipc_->OnDownloading(app_id, app_name_, -1, 0); break; - case Events::COMPONENT_UPDATE_READY: { + case update_client::ComponentState::kUpdating: { // TODO(sorin): handle the install cancellation. // https://crbug.com/1014591 bool can_start_install = false; @@ -598,13 +586,12 @@ break; } - case Events::COMPONENT_UPDATED: - case Events::COMPONENT_NOT_UPDATED: - case Events::COMPONENT_UPDATE_ERROR: - HandleInstallResult(event, crx_update_item); + case update_client::ComponentState::kUpdated: + case update_client::ComponentState::kUpToDate: + case update_client::ComponentState::kUpdateError: + HandleInstallResult(crx_update_item); break; - case Events::COMPONENT_WAIT: default: NOTREACHED(); break; @@ -612,7 +599,6 @@ } void InstallAppController::HandleInstallResult( - Events event, const update_client::CrxUpdateItem& update_item) { CompletionCodes completion_code = CompletionCodes::COMPLETION_CODE_ERROR; base::string16 completion_text; @@ -674,8 +660,8 @@ // This object is owned by the UI thread must be destroyed on this thread. progress_wnd_ = nullptr; - main_task_runner_->PostTask( - FROM_HERE, base::BindOnce(std::move(completion_callback_), 0)); + main_task_runner_->PostTask(FROM_HERE, + base::BindOnce(std::move(callback_), 0)); } void InstallAppController::DoExit() { @@ -718,7 +704,7 @@ std::string app_id_; scoped_refptr<Configurator> config_; - std::unique_ptr<InstallAppController> app_install_controller_; + scoped_refptr<InstallAppController> app_install_controller_; // The splash screen has a fading effect. That means that the splash screen // needs to be alive for a while, until the fading effect is over. @@ -760,9 +746,9 @@ base::MakeRefCounted<PersistedData>(config_->GetPrefService()) ->SetProductVersion(kUpdaterAppId, base::Version(UPDATER_VERSION_STRING)); - app_install_controller_ = std::make_unique<InstallAppController>( - config_, base::BindOnce(&AppInstall::Shutdown, this)); - app_install_controller_->InstallApp(app_id_); + app_install_controller_ = base::MakeRefCounted<InstallAppController>(config_); + app_install_controller_->InstallApp( + app_id_, base::BindOnce(&AppInstall::Shutdown, this)); } scoped_refptr<App> MakeAppInstall(const std::string& app_id) {
diff --git a/chrome/updater/win/install_app.h b/chrome/updater/win/install_app.h index fb9720fd..11ad6a3 100644 --- a/chrome/updater/win/install_app.h +++ b/chrome/updater/win/install_app.h
@@ -7,7 +7,7 @@ #include <string> -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" namespace updater {
diff --git a/chrome/updater/win/net/network.h b/chrome/updater/win/net/network.h index 6bc3bae..c48e142 100644 --- a/chrome/updater/win/net/network.h +++ b/chrome/updater/win/net/network.h
@@ -7,7 +7,6 @@ #include <memory> -#include "base/memory/ref_counted.h" #include "base/threading/thread_checker.h" #include "chrome/updater/win/net/scoped_hinternet.h" #include "components/update_client/network.h"
diff --git a/chrome/updater/win/net/network_fetcher.h b/chrome/updater/win/net/network_fetcher.h index f450966..78f4447 100644 --- a/chrome/updater/win/net/network_fetcher.h +++ b/chrome/updater/win/net/network_fetcher.h
@@ -13,7 +13,7 @@ #include "base/callback.h" #include "base/containers/flat_map.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/threading/thread_checker.h" #include "components/update_client/network.h" #include "url/gurl.h"
diff --git a/chrome/updater/win/net/network_winhttp.h b/chrome/updater/win/net/network_winhttp.h index 0e443ed..44f32ad8 100644 --- a/chrome/updater/win/net/network_winhttp.h +++ b/chrome/updater/win/net/network_winhttp.h
@@ -16,7 +16,7 @@ #include "base/callback.h" #include "base/files/file.h" #include "base/files/file_path.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/strings/string_piece_forward.h" #include "base/threading/thread_checker.h" #include "chrome/updater/win/net/scoped_hinternet.h"
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index 45c7cba..a8b2ca9 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -12965.0.0 \ No newline at end of file +12966.0.0 \ No newline at end of file
diff --git a/chromeos/audio/cras_audio_handler.cc b/chromeos/audio/cras_audio_handler.cc index debf0f3f..6e667c1 100644 --- a/chromeos/audio/cras_audio_handler.cc +++ b/chromeos/audio/cras_audio_handler.cc
@@ -290,7 +290,7 @@ } int64_t current_position = position->GetPosition().InMicroseconds(); - if (current_position < 0 || current_position > duration) + if (current_position < 0 || (duration > 0 && current_position > duration)) return; CrasAudioClient::Get()->SetPlayerPosition(current_position);
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc index 8abb2de..94de3d5 100644 --- a/chromeos/constants/chromeos_features.cc +++ b/chromeos/constants/chromeos_features.cc
@@ -243,6 +243,10 @@ const base::Feature kReleaseNotesNotification{"ReleaseNotesNotification", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables or disables an experimental scanning UI on Chrome OS. +const base::Feature kScanningUI{"ScanningUI", + base::FEATURE_DISABLED_BY_DEFAULT}; + // Enables or disables long kill timeout for session manager daemon. When // enabled, session manager daemon waits for a longer time (e.g. 12s) for chrome // to exit before sending SIGABRT. Otherwise, it uses the default time out
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h index 45fa090..ce2a445 100644 --- a/chromeos/constants/chromeos_features.h +++ b/chromeos/constants/chromeos_features.h
@@ -112,6 +112,7 @@ extern const base::Feature kReleaseNotes; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kReleaseNotesNotification; +COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kScanningUI; COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kSessionManagerLongKillTimeout; COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
diff --git a/components/autofill/core/browser/ui/accessory_sheet_data.cc b/components/autofill/core/browser/ui/accessory_sheet_data.cc index b01fee49..a245825 100644 --- a/components/autofill/core/browser/ui/accessory_sheet_data.cc +++ b/components/autofill/core/browser/ui/accessory_sheet_data.cc
@@ -5,6 +5,7 @@ #include "components/autofill/core/browser/ui/accessory_sheet_data.h" #include "base/strings/string_piece.h" +#include "components/autofill/core/browser/ui/accessory_sheet_enums.h" namespace autofill { @@ -113,6 +114,36 @@ << "action: " << static_cast<int>(fc.accessory_action()) << ")"; } +OptionToggle::OptionToggle(base::string16 display_text, + bool enabled, + autofill::AccessoryAction action) + : display_text_(display_text), + enabled_(enabled), + accessory_action_(action) {} + +OptionToggle::OptionToggle(const OptionToggle& option_toggle) = default; + +OptionToggle::OptionToggle(OptionToggle&& option_toggle) = default; + +OptionToggle::~OptionToggle() = default; + +OptionToggle& OptionToggle::operator=(const OptionToggle& option_toggle) = + default; + +OptionToggle& OptionToggle::operator=(OptionToggle&& option_toggle) = default; + +bool OptionToggle::operator==(const OptionToggle& option_toggle) const { + return display_text_ == option_toggle.display_text_ && + enabled_ == option_toggle.enabled_ && + accessory_action_ == option_toggle.accessory_action_; +} + +std::ostream& operator<<(std::ostream& os, const OptionToggle& ot) { + return os << "(display text: \"" << ot.display_text() << "\", " + << "state: " << ot.is_enabled() << ", " + << "action: " << static_cast<int>(ot.accessory_action()) << ")"; +} + std::ostream& operator<<(std::ostream& os, const AccessoryTabType& type) { switch (type) { case AccessoryTabType::PASSWORDS: @@ -161,8 +192,14 @@ } std::ostream& operator<<(std::ostream& os, const AccessorySheetData& data) { - os << data.get_sheet_type() << " with title: \"" << data.title() - << "\", warning: \"" << data.warning() << "\", and user info list: ["; + os << data.get_sheet_type() << " with title: \"" << data.title(); + if (data.option_toggle().has_value()) { + os << "\", with option toggle: \"" << data.option_toggle().value(); + } else { + os << "\", with option toggle: \"none"; + } + + os << "\", warning: \"" << data.warning() << "\", and user info list: ["; for (const UserInfo& user_info : data.user_info_list()) { os << user_info << ", "; } @@ -191,6 +228,23 @@ return *this; } +AccessorySheetData::Builder&& AccessorySheetData::Builder::SetOptionToggle( + base::string16 display_text, + bool enabled, + autofill::AccessoryAction action) && { + // Calls SetOptionToggle(...)& since |this| is an lvalue. + return std::move(SetOptionToggle(std::move(display_text), enabled, action)); +} + +AccessorySheetData::Builder& AccessorySheetData::Builder::SetOptionToggle( + base::string16 display_text, + bool enabled, + autofill::AccessoryAction action) & { + accessory_sheet_data_.set_option_toggle( + OptionToggle(std::move(display_text), enabled, action)); + return *this; +} + AccessorySheetData::Builder&& AccessorySheetData::Builder::AddUserInfo( std::string origin, UserInfo::IsPslMatch is_psl_match) && {
diff --git a/components/autofill/core/browser/ui/accessory_sheet_data.h b/components/autofill/core/browser/ui/accessory_sheet_data.h index 86d51f4e..32bc5e00 100644 --- a/components/autofill/core/browser/ui/accessory_sheet_data.h +++ b/components/autofill/core/browser/ui/accessory_sheet_data.h
@@ -8,6 +8,7 @@ #include <utility> #include <vector> +#include "base/optional.h" #include "base/strings/string16.h" #include "base/util/type_safety/strong_alias.h" #include "components/autofill/core/browser/ui/accessory_sheet_enums.h" @@ -123,6 +124,35 @@ std::ostream& operator<<(std::ostream& out, const AccessoryTabType& type); +// Toggle to be displayed above the suggestions. One such toggle can be used, +// for example, to turn password saving on for the current origin. +class OptionToggle { + public: + OptionToggle(base::string16 display_text, + bool enabled, + AccessoryAction accessory_action); + OptionToggle(const OptionToggle& option_toggle); + OptionToggle(OptionToggle&& option_toggle); + + ~OptionToggle(); + + OptionToggle& operator=(const OptionToggle& option_toggle); + OptionToggle& operator=(OptionToggle&& option_toggle); + + const base::string16& display_text() const { return display_text_; } + + bool is_enabled() const { return enabled_; } + + AccessoryAction accessory_action() const { return accessory_action_; } + + bool operator==(const OptionToggle& option_toggle) const; + + private: + base::string16 display_text_; + bool enabled_; + autofill::AccessoryAction accessory_action_; +}; + // Represents the contents of a bottom sheet tab below the keyboard accessory, // which can correspond to passwords, credit cards, or profiles data. class AccessorySheetData { @@ -147,6 +177,13 @@ const base::string16& warning() const { return warning_; } void set_warning(base::string16 warning) { warning_ = std::move(warning); } + void set_option_toggle(OptionToggle toggle) { + option_toggle_ = std::move(toggle); + } + const base::Optional<OptionToggle>& option_toggle() const { + return option_toggle_; + } + void add_user_info(UserInfo user_info) { user_info_list_.emplace_back(std::move(user_info)); } @@ -171,6 +208,7 @@ AccessoryTabType sheet_type_; base::string16 title_; base::string16 warning_; + base::Optional<OptionToggle> option_toggle_; std::vector<UserInfo> user_info_list_; std::vector<FooterCommand> footer_commands_; }; @@ -199,6 +237,14 @@ Builder&& SetWarning(base::string16 warning) &&; Builder& SetWarning(base::string16 warning) &; + // Sets the option toggle in the accessory sheet. + Builder&& SetOptionToggle(base::string16 display_text, + bool enabled, + autofill::AccessoryAction action) &&; + Builder& SetOptionToggle(base::string16 display_text, + bool enabled, + autofill::AccessoryAction action) &; + // Adds a new UserInfo object to |accessory_sheet_data_|. Builder&& AddUserInfo( std::string origin = std::string(),
diff --git a/components/autofill/core/browser/ui/accessory_sheet_enums.h b/components/autofill/core/browser/ui/accessory_sheet_enums.h index 029536c3..e2086f5 100644 --- a/components/autofill/core/browser/ui/accessory_sheet_enums.h +++ b/components/autofill/core/browser/ui/accessory_sheet_enums.h
@@ -36,6 +36,7 @@ MANAGE_CREDIT_CARDS = 3, MANAGE_ADDRESSES = 4, GENERATE_PASSWORD_MANUAL = 5, + TOGGLE_SAVE_PASSWORDS = 6, COUNT, };
diff --git a/components/autofill_assistant/browser/interactions.proto b/components/autofill_assistant/browser/interactions.proto index b33b5568..460c88ae 100644 --- a/components/autofill_assistant/browser/interactions.proto +++ b/components/autofill_assistant/browser/interactions.proto
@@ -34,6 +34,7 @@ ComputeValueProto compute_value = 4; SetUserActionsProto set_user_actions = 5; EndActionProto end_action = 6; + ShowCalendarPopupProto show_calendar_popup = 7; } } @@ -152,3 +153,16 @@ // The status to report to the backend. optional ProcessedActionStatusProto status = 1; } + +// Displays a calendar popup that lets the user select a date. +message ShowCalendarPopupProto { + // The date model identifier (both input and output). Must point to a single + // DateList. If not set, the calendar will default to the current date. + optional string date_model_identifier = 1; + // The model identifier for the minimum allowed date. Must point to a single + // DateList. + optional string min_date_model_identifier = 2; + // The model identifier for the minimum allowed date. Must point to a single + // DateList. + optional string max_date_model_identifier = 3; +}
diff --git a/components/autofill_assistant/browser/model.proto b/components/autofill_assistant/browser/model.proto index 4594e542..fc705cb 100644 --- a/components/autofill_assistant/browser/model.proto +++ b/components/autofill_assistant/browser/model.proto
@@ -27,6 +27,7 @@ BooleanList booleans = 2; IntList ints = 3; UserActionList user_actions = 4; + DateList dates = 5; } } @@ -46,6 +47,10 @@ repeated UserActionProto values = 1; } +message DateList { + repeated DateProto values = 1; +} + // Next: 22 enum ProcessedActionStatusProto { UNKNOWN_ACTION_STATUS = 0; @@ -244,3 +249,29 @@ // A unique identifier for this user action. optional string identifier = 3; } + +message DateProto { + optional int64 year = 1; + + // Month of the year in the range [1-12]. + optional int32 month = 2; + + // Day of the month in the range [1-31]. + optional int32 day = 3; +} + +message TimeProto { + // Hour in the range [0-23]. + optional int32 hour = 1; + + // Minute in the range [0-59]. + optional int32 minute = 2; + + // Second in the range [0-59]. + optional int32 second = 3; +} + +message DateTimeProto { + optional DateProto date = 1; + optional TimeProto time = 2; +}
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto index 814dd0b..068b88a 100644 --- a/components/autofill_assistant/browser/service.proto +++ b/components/autofill_assistant/browser/service.proto
@@ -1424,32 +1424,6 @@ reserved 1; // stop_action_type } -message DateProto { - optional int64 year = 1; - - // Month of the year in the range [1-12]. - optional int32 month = 2; - - // Day of the month in the range [1-31]. - optional int32 day = 3; -} - -message TimeProto { - // Hour in the range [0-23]. - optional int32 hour = 1; - - // Minute in the range [0-59]. - optional int32 minute = 2; - - // Second in the range [0-59]. - optional int32 second = 3; -} - -message DateTimeProto { - optional DateProto date = 1; - optional TimeProto time = 2; -} - message DetailsChangesProto { // Whether the changes require user approval. This de-emphasize // non-highlighted fields.
diff --git a/components/autofill_assistant/browser/value_util.cc b/components/autofill_assistant/browser/value_util.cc index 299c83b0..d32b7dd 100644 --- a/components/autofill_assistant/browser/value_util.cc +++ b/components/autofill_assistant/browser/value_util.cc
@@ -49,6 +49,8 @@ return value_a.ints().values() == value_b.ints().values(); case ValueProto::kUserActions: return value_a.user_actions().values() == value_b.user_actions().values(); + case ValueProto::kDates: + return value_a.dates().values() == value_b.dates().values(); case ValueProto::KIND_NOT_SET: return true; } @@ -89,6 +91,12 @@ value_a.identifier() == value_b.identifier(); } +// Compares two |DateProto| instances and returns true if they exactly match. +bool operator==(const DateProto& value_a, const DateProto& value_b) { + return value_a.year() == value_b.year() && + value_a.month() == value_b.month() && value_a.day() == value_b.day(); +} + // Intended for debugging. Writes a string representation of |values| to |out|. template <typename T> std::ostream& WriteRepeatedField(std::ostream& out, const T& values) { @@ -122,6 +130,12 @@ return out; } +// Intended for debugging. '<<' operator specialization for DateProto. +std::ostream& operator<<(std::ostream& out, const DateProto& value) { + out << value.year() << "-" << value.month() << "-" << value.day(); + return out; +} + // Intended for debugging. Writes a string representation of |value| to |out|. std::ostream& operator<<(std::ostream& out, const ValueProto& value) { switch (value.kind_case()) { @@ -137,6 +151,9 @@ case ValueProto::kUserActions: out << value.user_actions().values(); break; + case ValueProto::kDates: + out << value.dates().values(); + break; case ValueProto::KIND_NOT_SET: break; } @@ -169,6 +186,15 @@ return value; } +ValueProto SimpleValue(const DateProto& proto) { + ValueProto value; + auto* date = value.mutable_dates()->add_values(); + date->set_year(proto.year()); + date->set_month(proto.month()); + date->set_day(proto.day()); + return value; +} + ModelProto::ModelValue SimpleModelValue(const std::string& identifier, const ValueProto& value) { ModelProto::ModelValue model_value; @@ -213,6 +239,10 @@ if (value.user_actions().values_size() != target_size) return false; break; + case ValueProto::kDates: + if (value.dates().values_size() != target_size) + return false; + break; case ValueProto::KIND_NOT_SET: if (target_size != 0) { return false; @@ -261,6 +291,12 @@ *result.mutable_user_actions()->add_values() = action; }); break; + case ValueProto::kDates: + std::for_each(value.dates().values().begin(), + value.dates().values().end(), [&](const auto& date) { + *result.mutable_dates()->add_values() = date; + }); + break; case ValueProto::KIND_NOT_SET: NOTREACHED(); return base::nullopt;
diff --git a/components/autofill_assistant/browser/value_util.h b/components/autofill_assistant/browser/value_util.h index 24931a7..0dc557d 100644 --- a/components/autofill_assistant/browser/value_util.h +++ b/components/autofill_assistant/browser/value_util.h
@@ -31,16 +31,21 @@ // Custom comparison operator for |UserActionProto|. bool operator==(const UserActionProto& value_a, const UserActionProto& value_b); +// Custom comparison operator for |DateProto|. +bool operator==(const DateProto& value_a, const DateProto& value_b); + // Intended for debugging. std::ostream& operator<<(std::ostream& out, const ValueProto& value); std::ostream& operator<<(std::ostream& out, const ModelProto::ModelValue& value); std::ostream& operator<<(std::ostream& out, const UserActionProto& value); +std::ostream& operator<<(std::ostream& out, const DateProto& value); // Convenience constructors. ValueProto SimpleValue(bool value); ValueProto SimpleValue(const std::string& value); ValueProto SimpleValue(int value); +ValueProto SimpleValue(const DateProto& value); ModelProto::ModelValue SimpleModelValue(const std::string& identifier, const ValueProto& value);
diff --git a/components/autofill_assistant/browser/value_util_unittest.cc b/components/autofill_assistant/browser/value_util_unittest.cc index 83c4326..bd4ced1 100644 --- a/components/autofill_assistant/browser/value_util_unittest.cc +++ b/components/autofill_assistant/browser/value_util_unittest.cc
@@ -9,38 +9,48 @@ namespace value_util { +namespace { +ValueProto CreateStringValue() { + ValueProto value; + value.mutable_strings()->add_values("Aurea prima"); + value.mutable_strings()->add_values("sata est,"); + value.mutable_strings()->add_values("aetas quae"); + value.mutable_strings()->add_values("vindice nullo"); + value.mutable_strings()->add_values("ü万𠜎"); + return value; +} + +ValueProto CreateIntValue() { + ValueProto value; + value.mutable_ints()->add_values(1); + value.mutable_ints()->add_values(123); + value.mutable_ints()->add_values(5); + value.mutable_ints()->add_values(-132); + return value; +} + +ValueProto CreateBoolValue() { + ValueProto value; + value.mutable_booleans()->add_values(true); + value.mutable_booleans()->add_values(false); + value.mutable_booleans()->add_values(true); + value.mutable_booleans()->add_values(true); + return value; +} + +DateProto CreateDateProto(int year, int month, int day) { + DateProto proto; + proto.set_year(year); + proto.set_month(month); + proto.set_day(day); + return proto; +} +} // namespace + class ValueUtilTest : public testing::Test { public: ValueUtilTest() = default; ~ValueUtilTest() override {} - - ValueProto CreateStringValue() const { - ValueProto value; - value.mutable_strings()->add_values("Aurea prima"); - value.mutable_strings()->add_values("sata est,"); - value.mutable_strings()->add_values("aetas quae"); - value.mutable_strings()->add_values("vindice nullo"); - value.mutable_strings()->add_values("ü万𠜎"); - return value; - } - - ValueProto CreateIntValue() const { - ValueProto value; - value.mutable_ints()->add_values(1); - value.mutable_ints()->add_values(123); - value.mutable_ints()->add_values(5); - value.mutable_ints()->add_values(-132); - return value; - } - - ValueProto CreateBoolValue() const { - ValueProto value; - value.mutable_booleans()->add_values(true); - value.mutable_booleans()->add_values(false); - value.mutable_booleans()->add_values(true); - value.mutable_booleans()->add_values(true); - return value; - } }; TEST_F(ValueUtilTest, DifferentTypesComparison) { @@ -48,18 +58,24 @@ ValueProto value_b = CreateStringValue(); ValueProto value_c = CreateIntValue(); ValueProto value_d = CreateBoolValue(); + ValueProto value_e = SimpleValue(CreateDateProto(2020, 8, 30)); EXPECT_FALSE(value_a == value_b); EXPECT_FALSE(value_a == value_c); EXPECT_FALSE(value_a == value_d); + EXPECT_FALSE(value_a == value_e); EXPECT_FALSE(value_b == value_c); EXPECT_FALSE(value_b == value_d); + EXPECT_FALSE(value_b == value_e); EXPECT_FALSE(value_c == value_d); + EXPECT_FALSE(value_c == value_e); + EXPECT_FALSE(value_d == value_e); EXPECT_TRUE(value_a == value_a); EXPECT_TRUE(value_b == value_b); EXPECT_TRUE(value_c == value_c); EXPECT_TRUE(value_d == value_d); + EXPECT_TRUE(value_e == value_e); } TEST_F(ValueUtilTest, EmptyValueComparison) { @@ -120,6 +136,19 @@ EXPECT_TRUE(value_a == value_b); } +TEST_F(ValueUtilTest, DateComparison) { + ValueProto value_a = SimpleValue(CreateDateProto(2020, 4, 18)); + ValueProto value_b = value_a; + EXPECT_TRUE(value_a == value_b); + + *value_a.mutable_dates()->add_values() = CreateDateProto(2020, 6, 14); + *value_b.mutable_dates()->add_values() = CreateDateProto(2020, 6, 15); + EXPECT_FALSE(value_a == value_b); + + *value_b.mutable_dates()->mutable_values(1) = CreateDateProto(2020, 6, 14); + EXPECT_TRUE(value_a == value_b); +} + TEST_F(ValueUtilTest, AreAllValuesOfType) { ValueProto value_a; ValueProto value_b;
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc index b1825f4c..cbf7b658 100644 --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc
@@ -47,11 +47,6 @@ return const_cast<BookmarkNode*>(node); } -// Helper to get a mutable permanent bookmark node. -BookmarkPermanentNode* AsMutable(const BookmarkPermanentNode* node) { - return const_cast<BookmarkPermanentNode*>(node); -} - // Comparator used when sorting permanent nodes. Nodes that are initially // visible are sorted before nodes that are initially hidden. class VisibilityComparator { @@ -774,31 +769,6 @@ store_.reset(); } -void BookmarkModel::SetPermanentNodeVisible(BookmarkNode::Type type, - bool value) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - BookmarkPermanentNode* node = AsMutable(PermanentNode(type)); - node->set_visible(value || client_->IsPermanentNodeVisible(node)); -} - -const BookmarkPermanentNode* BookmarkModel::PermanentNode( - BookmarkNode::Type type) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(loaded_); - - switch (type) { - case BookmarkNode::BOOKMARK_BAR: - return bookmark_bar_node_; - case BookmarkNode::OTHER_NODE: - return other_node_; - case BookmarkNode::MOBILE: - return mobile_node_; - default: - NOTREACHED(); - return nullptr; - } -} - void BookmarkModel::RestoreRemovedNode(const BookmarkNode* parent, size_t index, std::unique_ptr<BookmarkNode> node) {
diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h index 672e75e..ed953cc 100644 --- a/components/bookmarks/browser/bookmark_model.h +++ b/components/bookmarks/browser/bookmark_model.h
@@ -277,14 +277,6 @@ return expanded_state_tracker_.get(); } - // Sets the visibility of one of the permanent nodes (unless the node must - // always be visible, see |BookmarkClient::IsPermanentNodeVisible| for more - // details). This is set by sync. - void SetPermanentNodeVisible(BookmarkNode::Type type, bool value); - - // Returns the permanent node of type |type|. - const BookmarkPermanentNode* PermanentNode(BookmarkNode::Type type); - // Sets/deletes meta info of |node|. void SetNodeMetaInfo(const BookmarkNode* node, const std::string& key,
diff --git a/components/bookmarks/browser/bookmark_model_unittest.cc b/components/bookmarks/browser/bookmark_model_unittest.cc index 667e475..a5e0d251 100644 --- a/components/bookmarks/browser/bookmark_model_unittest.cc +++ b/components/bookmarks/browser/bookmark_model_unittest.cc
@@ -1124,17 +1124,6 @@ EXPECT_TRUE(model_->other_node()->IsVisible()); EXPECT_FALSE(model_->mobile_node()->IsVisible()); - // Visibility of permanent node can only be changed if they are not - // forced to be visible by the client. - model_->SetPermanentNodeVisible(BookmarkNode::BOOKMARK_BAR, false); - EXPECT_TRUE(model_->bookmark_bar_node()->IsVisible()); - model_->SetPermanentNodeVisible(BookmarkNode::OTHER_NODE, false); - EXPECT_TRUE(model_->other_node()->IsVisible()); - model_->SetPermanentNodeVisible(BookmarkNode::MOBILE, true); - EXPECT_TRUE(model_->mobile_node()->IsVisible()); - model_->SetPermanentNodeVisible(BookmarkNode::MOBILE, false); - EXPECT_FALSE(model_->mobile_node()->IsVisible()); - // Arbitrary node should be visible TestNode bbn; PopulateNodeFromString("B", &bbn);
diff --git a/components/browser_ui/widget/android/java/res/layout/list_menu_item.xml b/components/browser_ui/widget/android/java/res/layout/list_menu_item.xml index 8d16bff3..b299a01 100644 --- a/components/browser_ui/widget/android/java/res/layout/list_menu_item.xml +++ b/components/browser_ui/widget/android/java/res/layout/list_menu_item.xml
@@ -2,16 +2,30 @@ <!-- Copyright 2017 The Chromium Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> - -<org.chromium.components.browser_ui.widget.text.TextViewWithCompoundDrawables - xmlns:android="http://schemas.android.com/apk/res/android" +<!-- Do not replace this with TextViewWithCompoundDrawables + https://crbug.com/1053448 --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - android:id="@+id/menu_item" android:layout_width="match_parent" - android:layout_height="?android:attr/listPreferredItemHeightSmall" - android:textAppearance="@style/TextAppearance.ListMenuItem" - android:drawablePadding="@dimen/menu_drawable_padding" - android:gravity="center_vertical" + android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" + android:gravity="center_vertical" style="@style/ListMenuItemStyle" - app:chromeDrawableTint="@color/default_icon_color_secondary" /> + android:minHeight="?android:attr/listPreferredItemHeightSmall" > + + <org.chromium.ui.widget.ChromeImageView + android:id="@+id/menu_item_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:tint="@color/default_icon_color_secondary" /> + + <TextView + android:id="@+id/menu_item_text" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_vertical" + android:singleLine="false" + android:textAppearance="@style/TextAppearance.ListMenuItem" /> + +</LinearLayout>
diff --git a/components/browser_ui/widget/android/java/res/values/dimens.xml b/components/browser_ui/widget/android/java/res/values/dimens.xml index d2cd3afb..19cfeaa 100644 --- a/components/browser_ui/widget/android/java/res/values/dimens.xml +++ b/components/browser_ui/widget/android/java/res/values/dimens.xml
@@ -38,7 +38,6 @@ <!-- Custom Menu dimensions --> <dimen name="menu_negative_software_vertical_offset">0dp</dimen> <dimen name="menu_divider_padding">8dp</dimen> - <dimen name="menu_drawable_padding">16dp</dimen> <dimen name="menu_padding_start">16dp</dimen> <!-- Drag-Reorderable List dimensions -->
diff --git a/components/browser_ui/widget/android/java/res/values/styles.xml b/components/browser_ui/widget/android/java/res/values/styles.xml index 228d959..c485bbd 100644 --- a/components/browser_ui/widget/android/java/res/values/styles.xml +++ b/components/browser_ui/widget/android/java/res/values/styles.xml
@@ -25,8 +25,8 @@ <!-- ListMenuButton --> <style name="ListMenuItemStyle"> - <item name="android:paddingStart">?android:attr/listPreferredItemPaddingStart</item> - <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingEnd</item> + <item name="android:paddingStart">@dimen/default_list_row_padding</item> + <item name="android:paddingEnd">@dimen/default_list_row_padding</item> </style> <style name="OverflowMenuAnim">
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemProperties.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemProperties.java index 97d4c1e0..c2c98cb 100644 --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemProperties.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemProperties.java
@@ -9,7 +9,8 @@ import org.chromium.ui.modelutil.PropertyModel.WritableIntPropertyKey; /** - * The properties controlling the state of the list menu items. + * The properties controlling the state of the list menu items. Any given list item can have either + * one start icon or one end icon but not both. */ public class ListMenuItemProperties { public static final WritableIntPropertyKey TITLE_ID = new WritableIntPropertyKey();
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemViewBinder.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemViewBinder.java index 64864a6..e5143be 100644 --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemViewBinder.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/listmenu/ListMenuItemViewBinder.java
@@ -7,45 +7,54 @@ import android.graphics.drawable.Drawable; import android.support.v7.content.res.AppCompatResources; import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; import androidx.core.content.ContextCompat; +import org.chromium.base.ApiCompatibilityUtils; import org.chromium.components.browser_ui.widget.R; -import org.chromium.components.browser_ui.widget.text.TextViewWithCompoundDrawables; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModel.ReadableIntPropertyKey; /** * Class responsible for binding the model of the ListMenuItem and the view. */ public class ListMenuItemViewBinder { public static void binder(PropertyModel model, View view, PropertyKey propertyKey) { - TextViewWithCompoundDrawables textView = (TextViewWithCompoundDrawables) view; + TextView textView = view.findViewById(R.id.menu_item_text); + ImageView imageView = view.findViewById(R.id.menu_item_icon); if (propertyKey == ListMenuItemProperties.TITLE_ID) { textView.setText(model.get(ListMenuItemProperties.TITLE_ID)); - } else if (propertyKey == ListMenuItemProperties.START_ICON_ID) { - int id = model.get(ListMenuItemProperties.START_ICON_ID); - Drawable[] drawables = textView.getCompoundDrawablesRelative(); + } else if (propertyKey == ListMenuItemProperties.START_ICON_ID + || propertyKey == ListMenuItemProperties.END_ICON_ID) { + int id = model.get((ReadableIntPropertyKey) propertyKey); Drawable drawable = id == 0 ? null : AppCompatResources.getDrawable(view.getContext(), id); - textView.setCompoundDrawablesRelativeWithIntrinsicBounds( - drawable, drawables[1], drawables[2], drawables[3]); - if (id != 0) { - // need more space between the start and the icon if icon is on the start. - textView.setPaddingRelative( - view.getResources().getDimensionPixelOffset(R.dimen.menu_padding_start), - view.getPaddingTop(), view.getPaddingEnd(), view.getPaddingBottom()); + imageView.setImageDrawable(drawable); + if (drawable != null) { + if (propertyKey == ListMenuItemProperties.START_ICON_ID) { + // need more space between the start and the icon if icon is on the start. + textView.setPaddingRelative( + view.getResources().getDimensionPixelOffset(R.dimen.menu_padding_start), + textView.getPaddingTop(), textView.getPaddingEnd(), + textView.getPaddingBottom()); + } else { + // Move to the end. + ViewGroup layout = (ViewGroup) view; + layout.removeView(imageView); + layout.addView(imageView); + } } - } else if (propertyKey == ListMenuItemProperties.END_ICON_ID) { - int id = model.get(ListMenuItemProperties.END_ICON_ID); - Drawable[] drawables = textView.getCompoundDrawablesRelative(); - Drawable drawable = - id == 0 ? null : AppCompatResources.getDrawable(view.getContext(), id); - textView.setCompoundDrawablesRelativeWithIntrinsicBounds( - drawables[0], drawables[1], drawable, drawables[3]); } else if (propertyKey == ListMenuItemProperties.TINT_COLOR_ID) { - textView.setDrawableTintColor(ContextCompat.getColorStateList( - view.getContext(), model.get(ListMenuItemProperties.TINT_COLOR_ID))); + ApiCompatibilityUtils.setImageTintList(imageView, + ContextCompat.getColorStateList( + view.getContext(), model.get(ListMenuItemProperties.TINT_COLOR_ID))); + } else if (propertyKey == ListMenuItemProperties.ENABLED) { + textView.setEnabled(model.get(ListMenuItemProperties.ENABLED)); + imageView.setEnabled(model.get(ListMenuItemProperties.ENABLED)); } } }
diff --git a/components/external_intents/android/BUILD.gn b/components/external_intents/android/BUILD.gn index 10824a28..95cdbf1 100644 --- a/components/external_intents/android/BUILD.gn +++ b/components/external_intents/android/BUILD.gn
@@ -5,5 +5,8 @@ import("//build/config/android/rules.gni") android_library("java") { - sources = [ "java/src/org/chromium/components/external_intents/ExternalIntentsSwitches.java" ] + sources = [ + "java/src/org/chromium/components/external_intents/ExternalIntentsSwitches.java", + "java/src/org/chromium/components/external_intents/RedirectHandler.java", + ] }
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/RedirectHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/RedirectHandler.java new file mode 100644 index 0000000..a9aceff --- /dev/null +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/RedirectHandler.java
@@ -0,0 +1,63 @@ +// 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. + +package org.chromium.components.external_intents; + +import android.content.Intent; +import android.content.pm.ResolveInfo; + +import java.util.List; + +/** + * This interface allows the embedder to supply the logic that ExternalNavigationHandler.java uses + * to determine effective navigation/redirect while handling a given intent. + */ +public interface RedirectHandler { + /** + * @return whether on effective intent redirect chain or not. + */ + boolean isOnEffectiveIntentRedirectChain(); + + /** + * @param hasExternalProtocol whether the destination URI has an external protocol or not. + * @param isForTrustedCallingApp whether the app we would launch to is trusted and what launched + * this embedder. + * @return whether we should stay in this app or not. + */ + boolean shouldStayInApp(boolean hasExternalProtocol, boolean isForTrustedCallingApp); + + /** + * @return Whether the current navigation is of the type that should always stay in this app. + */ + boolean shouldNavigationTypeStayInApp(); + + /** + * @return Whether this navigation is initiated by a Custom Tab {@link Intent}. + */ + boolean isFromCustomTabIntent(); + + /** + * @return whether navigation is from a user's typing or not. + */ + boolean isNavigationFromUserTyping(); + + /** + * Will cause shouldNotOverrideUrlLoading() to return true until a new user-initiated navigation + * occurs. The embedder implementation is responsible for enforcing these semantics. + */ + void setShouldNotOverrideUrlLoadingOnCurrentRedirectChain(); + + /** + * @return whether we should stay in this app or not. + */ + boolean shouldNotOverrideUrlLoading(); + + /** + * @return whether |resolvingInfos| contains a new resolver for the intent on which this + * redirect handler was operating, compared to the resolvers shown when the user chose this app + * to handle that intent. Relevant only if this app is one that handles incoming user + * intents. + */ + boolean hasNewResolver(List<ResolveInfo> resolvingInfos); +}
diff --git a/components/page_info/android/java/res/layout/cookie_controls_view.xml b/components/page_info/android/java/res/layout/cookie_controls_view.xml index d0d7020b..92e0f97 100644 --- a/components/page_info/android/java/res/layout/cookie_controls_view.xml +++ b/components/page_info/android/java/res/layout/cookie_controls_view.xml
@@ -2,7 +2,8 @@ <!-- 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. --> -<merge xmlns:android="http://schemas.android.com/apk/res/android"> +<merge xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:layout_width="wrap_content" @@ -23,6 +24,7 @@ android:layout_gravity="center_vertical" android:layout_marginEnd="16dp" android:src="@drawable/permission_cookie" + app:tint="@color/default_icon_color" android:importantForAccessibility="no" /> <LinearLayout @@ -35,7 +37,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/new_tab_otr_third_party_cookie" - android:textAppearance="@style/TextAppearance.TextMedium.Primary" /> + android:textAppearance="@style/TextAppearance.TextMediumThick.Primary" /> <TextView android:id="@+id/cookie_controls_blocked_cookies_text"
diff --git a/components/page_info/android/java/res/layout/page_info.xml b/components/page_info/android/java/res/layout/page_info.xml index 93dceea..7ea99b22 100644 --- a/components/page_info/android/java/res/layout/page_info.xml +++ b/components/page_info/android/java/res/layout/page_info.xml
@@ -97,6 +97,19 @@ style="@style/FilledButton" /> <View + android:id="@+id/page_info_cookie_controls_separator" + android:layout_marginTop="16dp" + style="@style/HorizontalDivider"/> + + <org.chromium.components.page_info.CookieControlsView + android:id="@+id/page_info_cookie_controls_view" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:layout_marginTop="16dp" + android:paddingStart="@dimen/page_info_popup_padding_sides" + android:paddingEnd="@dimen/page_info_popup_padding_sides"/> + + <View android:id="@+id/page_info_permissions_separator" android:layout_marginTop="16dp" style="@style/HorizontalDivider" /> @@ -120,19 +133,6 @@ android:paddingEnd="@dimen/page_info_popup_padding_sides" > </LinearLayout> - <View - android:id="@+id/page_info_cookie_controls_separator" - android:layout_marginTop="16dp" - style="@style/HorizontalDivider"/> - - <org.chromium.components.page_info.CookieControlsView - android:id="@+id/page_info_cookie_controls_view" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:layout_marginTop="16dp" - android:paddingStart="@dimen/page_info_popup_padding_sides" - android:paddingEnd="@dimen/page_info_popup_padding_sides"/> - <org.chromium.ui.widget.ButtonCompat android:id="@+id/page_info_site_settings_button" android:layout_width="wrap_content"
diff --git a/components/paint_preview/browser/paint_preview_base_service.cc b/components/paint_preview/browser/paint_preview_base_service.cc index 9b7841b..85a18b9 100644 --- a/components/paint_preview/browser/paint_preview_base_service.cc +++ b/components/paint_preview/browser/paint_preview_base_service.cc
@@ -114,7 +114,7 @@ base::UnguessableToken guid, mojom::PaintPreviewStatus status, std::unique_ptr<PaintPreviewProto> proto) { - if (status != mojom::PaintPreviewStatus::kOk) { + if (status != mojom::PaintPreviewStatus::kOk || !proto) { DVLOG(1) << "ERROR: Paint Preview failed to capture for document " << guid.ToString() << " with error " << status; std::move(callback).Run(kCaptureFailed, nullptr);
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc index ce5096b..f69c503 100644 --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc
@@ -200,6 +200,7 @@ user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); registry->RegisterDoublePref(prefs::kLastTimeObsoleteHttpCredentialsRemoved, 0.0); + registry->RegisterDoublePref(prefs::kLastTimePasswordCheckCompleted, 0.0); registry->RegisterIntegerPref( prefs::kPasswordManagerOnboardingState, static_cast<int>(metrics_util::OnboardingState::kDoNotShow));
diff --git a/components/password_manager/core/common/password_manager_pref_names.cc b/components/password_manager/core/common/password_manager_pref_names.cc index 52e97c0..9cac5d4 100644 --- a/components/password_manager/core/common/password_manager_pref_names.cc +++ b/components/password_manager/core/common/password_manager_pref_names.cc
@@ -49,6 +49,9 @@ const char kLastTimeObsoleteHttpCredentialsRemoved[] = "profile.last_time_obsolete_http_credentials_removed"; +const char kLastTimePasswordCheckCompleted[] = + "profile.last_time_password_check_completed"; + const char kPasswordHashDataList[] = "profile.password_hash_data_list"; const char kPasswordManagerOnboardingState[] =
diff --git a/components/password_manager/core/common/password_manager_pref_names.h b/components/password_manager/core/common/password_manager_pref_names.h index 1f95dd4b..0f45890 100644 --- a/components/password_manager/core/common/password_manager_pref_names.h +++ b/components/password_manager/core/common/password_manager_pref_names.h
@@ -80,6 +80,9 @@ // credentials was performed. extern const char kLastTimeObsoleteHttpCredentialsRemoved[]; +// The last time the password check has run to completion. +extern const char kLastTimePasswordCheckCompleted[]; + // List that contains captured password hashes. extern const char kPasswordHashDataList[];
diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc index 3071b5ec..dde93aa9 100644 --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc
@@ -17,6 +17,10 @@ return ContentSettingsType::DEFAULT; } +base::string16 PermissionRequest::GetMessageTextWarningFragment() const { + return base::string16(); +} + #if defined(OS_ANDROID) base::string16 PermissionRequest::GetQuietTitleText() const { return base::string16();
diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h index bb9ba670..6e8dbb8 100644 --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h
@@ -114,6 +114,9 @@ // be displayed next to an image and indicate the user grants the permission. virtual base::string16 GetMessageTextFragment() const = 0; + // Returns a warning prompt text related to this permission. + virtual base::string16 GetMessageTextWarningFragment() const; + // Get the origin on whose behalf this permission request is being made. virtual GURL GetOrigin() const = 0;
diff --git a/components/permissions/permission_request_impl.cc b/components/permissions/permission_request_impl.cc index c66dd27d..54960201 100644 --- a/components/permissions/permission_request_impl.cc +++ b/components/permissions/permission_request_impl.cc
@@ -244,6 +244,12 @@ return l10n_util::GetStringUTF16(message_id); } +base::string16 PermissionRequestImpl::GetMessageTextWarningFragment() const { + if (content_settings_type_ == ContentSettingsType::PLUGINS) + return l10n_util::GetStringUTF16(IDS_FLASH_PERMISSION_WARNING_FRAGMENT); + return base::string16(); +} + GURL PermissionRequestImpl::GetOrigin() const { return request_origin_; }
diff --git a/components/permissions/permission_request_impl.h b/components/permissions/permission_request_impl.h index 90fcf92..b038f7f 100644 --- a/components/permissions/permission_request_impl.h +++ b/components/permissions/permission_request_impl.h
@@ -41,6 +41,7 @@ base::string16 GetQuietMessageText() const override; #endif base::string16 GetMessageTextFragment() const override; + base::string16 GetMessageTextWarningFragment() const override; GURL GetOrigin() const override; void PermissionGranted() override; void PermissionDenied() override;
diff --git a/components/permissions_strings.grdp b/components/permissions_strings.grdp index 670c929..29ae078f 100644 --- a/components/permissions_strings.grdp +++ b/components/permissions_strings.grdp
@@ -75,6 +75,9 @@ <message name="IDS_FLASH_PERMISSION_FRAGMENT" desc="Permission asked in the permission bubble when a URL wants to use Flash Plugins on the page. Preceded by the prompt 'This site would like to:'. 'Flash' is the name of a plugin and should not be translated."> Run Flash </message> + <message name="IDS_FLASH_PERMISSION_WARNING_FRAGMENT" desc="Warning in the permission bubble when a URL wants to use Flash Plugins on the page."> + Flash Player will no longer be supported after December 2020. + </message> <message name="IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_FRAGMENT" desc="Permission fragment shown in the permissions bubble when a web page requests access to the computer's microphone."> Use your microphone </message>
diff --git a/components/schema_org/BUILD.gn b/components/schema_org/BUILD.gn index 8eb8ef1..e4936ef 100644 --- a/components/schema_org/BUILD.gn +++ b/components/schema_org/BUILD.gn
@@ -14,7 +14,7 @@ ":generate_schema_org_code", ":schema_org_properties", "//base", - "//components/schema_org/common:mojom", + "//components/schema_org/common:improved_mojom", "//testing/gmock", "//testing/gtest", ] @@ -70,6 +70,6 @@ deps = [ "//components/schema_org:generate_schema_org_code", "//components/schema_org:schema_org_properties", - "//components/schema_org/common:mojom", + "//components/schema_org/common:improved_mojom", ] }
diff --git a/components/schema_org/common/BUILD.gn b/components/schema_org/common/BUILD.gn index 477c865..b99cbc1b 100644 --- a/components/schema_org/common/BUILD.gn +++ b/components/schema_org/common/BUILD.gn
@@ -10,3 +10,10 @@ public_deps = [ "//url/mojom:url_mojom_gurl" ] } + +mojom("improved_mojom") { + generate_java = true + sources = [ "improved_metadata.mojom" ] + + public_deps = [ "//url/mojom:url_mojom_gurl" ] +}
diff --git a/components/schema_org/common/improved_metadata.mojom b/components/schema_org/common/improved_metadata.mojom new file mode 100644 index 0000000..8314444 --- /dev/null +++ b/components/schema_org/common/improved_metadata.mojom
@@ -0,0 +1,34 @@ +// 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. + +// This file is a fork of ./metadata.mojom. The original file is in-use by the +// down-stream clank repositories. The fork was created so that changes can be +// made here iteratively without breaking clank. Once this file has become +// fairly stable, the intent is to merge it back into the original with as few +// changes as possible. + +module schema_org.improved.mojom; + +// A property can have arrays of different types simultaneously. Non-array +// values are converted to arrays of one element. +struct Values { + array<bool> bool_values; + array<int64> long_values; + array<string> string_values; + array<Entity> entity_values; +}; + +// Key-value pair for the attributes of an |Entity|. +struct Property { + string name; + Values values; +}; + +// Top-level metadata entry using schema.org vocabulary. +// Tree structure of entities is possible. +// Ref: https://developers.google.com/schemas/formats/json-ld +struct Entity { + string type; // Correspond to the "@type" key, defined in JSON-LD. + array<Property> properties; +};
diff --git a/components/schema_org/extractor.cc b/components/schema_org/extractor.cc index ba48e2c2..9f4bbe3 100644 --- a/components/schema_org/extractor.cc +++ b/components/schema_org/extractor.cc
@@ -13,7 +13,7 @@ #include "base/json/json_parser.h" #include "base/strings/string_number_conversions.h" #include "base/values.h" -#include "components/schema_org/common/metadata.mojom.h" +#include "components/schema_org/common/improved_metadata.mojom.h" #include "components/schema_org/schema_org_entity_names.h" namespace schema_org { @@ -38,6 +38,13 @@ constexpr char kJSONLDKeyType[] = "@type"; +using improved::mojom::Entity; +using improved::mojom::EntityPtr; +using improved::mojom::Property; +using improved::mojom::PropertyPtr; +using improved::mojom::Values; +using improved::mojom::ValuesPtr; + const std::unordered_set<std::string> kSupportedTypes{ entity::kVideoObject, entity::kMovie, entity::kTVEpisode, entity::kTVSeason, entity::kTVSeries}; @@ -45,67 +52,28 @@ return kSupportedTypes.find(type) != kSupportedTypes.end(); } -void ExtractEntity(base::DictionaryValue*, mojom::Entity&, int recursionLevel); +void ExtractEntity(const base::DictionaryValue&, Entity*, int recursion_level); -bool ParseRepeatedValue(base::Value::ListView& arr, - mojom::Values& values, - int recursionLevel) { +bool ParseRepeatedValue(const base::Value::ConstListView& arr, + Values* values, + int recursion_level) { + DCHECK(values); if (arr.empty()) { return false; } - bool is_first_item = true; - base::Value::Type type = base::Value::Type::NONE; - for (size_t j = 0; j < std::min(arr.size(), kMaxRepeatedSize); ++j) { auto& listItem = arr[j]; - if (is_first_item) { - is_first_item = false; - type = listItem.type(); - switch (type) { - case base::Value::Type::BOOLEAN: - values.set_bool_values(std::vector<bool>()); - break; - case base::Value::Type::INTEGER: - values.set_long_values(std::vector<int64_t>()); - break; - case base::Value::Type::DOUBLE: - // App Indexing doesn't support double type, so just encode its - // decimal value as a string instead. - values.set_string_values(std::vector<std::string>()); - break; - case base::Value::Type::STRING: - values.set_string_values(std::vector<std::string>()); - break; - case base::Value::Type::DICTIONARY: - if (recursionLevel + 1 >= kMaxDepth) { - return false; - } - values.set_entity_values(std::vector<mojom::EntityPtr>()); - break; - case base::Value::Type::LIST: - // App Indexing doesn't support nested arrays. - return false; - default: - // Unknown value type. - return false; - } - } - if (listItem.type() != type) { - // App Indexing doesn't support mixed types. If there are mixed - // types in the parsed object, we will drop the property. - return false; - } switch (listItem.type()) { case base::Value::Type::BOOLEAN: { bool v; listItem.GetAsBoolean(&v); - values.get_bool_values().push_back(v); + values->bool_values.push_back(v); } break; case base::Value::Type::INTEGER: { int v = listItem.GetInt(); - values.get_long_values().push_back(v); + values->long_values.push_back(v); } break; case base::Value::Type::DOUBLE: { // App Indexing doesn't support double type, so just encode its decimal @@ -113,22 +81,24 @@ double v = listItem.GetDouble(); std::string s = base::NumberToString(v); s = s.substr(0, kMaxStringLength); - values.get_string_values().push_back(s); + values->string_values.push_back(s); } break; case base::Value::Type::STRING: { std::string v = listItem.GetString(); v = v.substr(0, kMaxStringLength); - values.get_string_values().push_back(v); + values->string_values.push_back(v); } break; case base::Value::Type::DICTIONARY: { - values.get_entity_values().push_back(mojom::Entity::New()); - - base::DictionaryValue* dict_value = nullptr; + const base::DictionaryValue* dict_value = nullptr; if (listItem.GetAsDictionary(&dict_value)) { - ExtractEntity(dict_value, *(values.get_entity_values().at(j)), - recursionLevel + 1); + auto entity = Entity::New(); + ExtractEntity(*dict_value, entity.get(), recursion_level + 1); + values->entity_values.push_back(std::move(entity)); } } break; + case base::Value::Type::LIST: + // App Indexing doesn't support nested arrays. + return false; default: break; } @@ -136,96 +106,95 @@ return true; } -void ExtractEntity(base::DictionaryValue* val, - mojom::Entity& entity, - int recursionLevel) { - if (recursionLevel >= kMaxDepth) { +void ExtractEntity(const base::DictionaryValue& val, + Entity* entity, + int recursion_level) { + if (recursion_level >= kMaxDepth) { return; } std::string type = ""; - val->GetString(kJSONLDKeyType, &type); + val.GetString(kJSONLDKeyType, &type); if (type == "") { type = "Thing"; } - entity.type = type; - for (const auto& entry : val->DictItems()) { - if (entity.properties.size() >= kMaxNumFields) { + entity->type = type; + for (const auto& entry : val.DictItems()) { + if (entity->properties.size() >= kMaxNumFields) { break; } - mojom::PropertyPtr property = mojom::Property::New(); + PropertyPtr property = Property::New(); property->name = entry.first; if (property->name == kJSONLDKeyType) { continue; } - property->values = mojom::Values::New(); + property->values = Values::New(); if (entry.second.is_bool()) { bool v; - val->GetBoolean(entry.first, &v); - property->values->set_bool_values({v}); + val.GetBoolean(entry.first, &v); + property->values->bool_values.push_back(v); } else if (entry.second.is_int()) { int v; - val->GetInteger(entry.first, &v); - property->values->set_long_values({v}); + val.GetInteger(entry.first, &v); + property->values->long_values.push_back(v); } else if (entry.second.is_double()) { double v; - val->GetDouble(entry.first, &v); + val.GetDouble(entry.first, &v); std::string s = base::NumberToString(v); s = s.substr(0, kMaxStringLength); - property->values->set_string_values({s}); + property->values->string_values.push_back(s); } else if (entry.second.is_string()) { std::string v; - val->GetString(entry.first, &v); + val.GetString(entry.first, &v); v = v.substr(0, kMaxStringLength); - property->values->set_string_values({v}); + property->values->string_values.push_back(v); } else if (entry.second.is_dict()) { - if (recursionLevel + 1 >= kMaxDepth) { + if (recursion_level + 1 >= kMaxDepth) { continue; } - property->values->set_entity_values(std::vector<mojom::EntityPtr>()); - property->values->get_entity_values().push_back(mojom::Entity::New()); - - base::DictionaryValue* dict_value = nullptr; + const base::DictionaryValue* dict_value = nullptr; if (!entry.second.GetAsDictionary(&dict_value)) { continue; } - ExtractEntity(dict_value, *(property->values->get_entity_values().at(0)), - recursionLevel + 1); + auto nested_entity = Entity::New(); + ExtractEntity(*dict_value, nested_entity.get(), recursion_level + 1); + property->values->entity_values.push_back(std::move(nested_entity)); } else if (entry.second.is_list()) { - base::Value::ListView list_view = entry.second.GetList(); - if (!ParseRepeatedValue(list_view, *(property->values), recursionLevel)) { + const auto& list_view = entry.second.GetList(); + if (!ParseRepeatedValue(list_view, property->values.get(), + recursion_level)) { continue; } } - entity.properties.push_back(std::move(property)); + entity->properties.push_back(std::move(property)); } } // Extract a JSONObject which corresponds to a single (possibly nested) entity. -mojom::EntityPtr ExtractTopLevelEntity(base::DictionaryValue* val) { - mojom::EntityPtr entity = mojom::Entity::New(); +EntityPtr ExtractTopLevelEntity(const base::DictionaryValue& val) { + EntityPtr entity = Entity::New(); std::string type; - val->GetString(kJSONLDKeyType, &type); + val.GetString(kJSONLDKeyType, &type); if (!IsSupportedType(type)) { return nullptr; } - ExtractEntity(val, *entity, 0); + ExtractEntity(val, entity.get(), 0); return entity; } } // namespace -mojom::EntityPtr Extractor::Extract(const std::string& content) { +EntityPtr Extractor::Extract(const std::string& content) { base::Optional<base::Value> value(base::JSONReader::Read(content)); - base::DictionaryValue* dict_value = nullptr; + const base::DictionaryValue* dict_value = nullptr; if (!value || !value.value().GetAsDictionary(&dict_value)) { return nullptr; } - return ExtractTopLevelEntity(dict_value); + return ExtractTopLevelEntity(*dict_value); } } // namespace schema_org
diff --git a/components/schema_org/extractor.h b/components/schema_org/extractor.h index 6f0337a..0a301f6 100644 --- a/components/schema_org/extractor.h +++ b/components/schema_org/extractor.h
@@ -7,14 +7,14 @@ #include <string> -#include "components/schema_org/common/metadata.mojom-forward.h" +#include "components/schema_org/common/improved_metadata.mojom-forward.h" namespace schema_org { // Extract structured metadata (schema.org in JSON-LD) from text content. class Extractor { public: - static mojom::EntityPtr Extract(const std::string& content); + static improved::mojom::EntityPtr Extract(const std::string& content); }; } // namespace schema_org
diff --git a/components/schema_org/extractor_unittest.cc b/components/schema_org/extractor_unittest.cc index 167d43a..16d1592 100644 --- a/components/schema_org/extractor_unittest.cc +++ b/components/schema_org/extractor_unittest.cc
@@ -9,17 +9,17 @@ #include <vector> #include "base/strings/string_number_conversions.h" -#include "components/schema_org/common/metadata.mojom.h" +#include "components/schema_org/common/improved_metadata.mojom.h" #include "testing/gtest/include/gtest/gtest.h" namespace schema_org { -using mojom::Entity; -using mojom::EntityPtr; -using mojom::Property; -using mojom::PropertyPtr; -using mojom::Values; -using mojom::ValuesPtr; +using improved::mojom::Entity; +using improved::mojom::EntityPtr; +using improved::mojom::Property; +using improved::mojom::PropertyPtr; +using improved::mojom::Values; +using improved::mojom::ValuesPtr; class SchemaOrgExtractorTest : public testing::Test { public: @@ -46,7 +46,7 @@ PropertyPtr property = Property::New(); property->name = name; property->values = Values::New(); - property->values->set_string_values({value}); + property->values->string_values.push_back(value); return property; } @@ -56,7 +56,7 @@ PropertyPtr property = Property::New(); property->name = name; property->values = Values::New(); - property->values->set_bool_values({value}); + property->values->bool_values.push_back(value); return property; } @@ -65,7 +65,7 @@ PropertyPtr property = Property::New(); property->name = name; property->values = Values::New(); - property->values->set_long_values({value}); + property->values->long_values.push_back(value); return property; } @@ -75,8 +75,7 @@ PropertyPtr property = Property::New(); property->name = name; property->values = Values::New(); - property->values->set_entity_values(std::vector<EntityPtr>()); - property->values->get_entity_values().push_back(std::move(value)); + property->values->entity_values.push_back(std::move(value)); return property; } @@ -164,16 +163,32 @@ PropertyPtr name = Property::New(); name->name = "name"; name->values = Values::New(); - std::vector<std::string> nameValues; - nameValues.push_back("Movie Title"); - nameValues.push_back("The Second One"); - name->values->set_string_values(nameValues); + name->values->string_values = {"Movie Title", "The Second One"}; expected->properties.push_back(std::move(name)); EXPECT_EQ(expected, extracted); } +TEST_F(SchemaOrgExtractorTest, MixedRepeatedProperty) { + EntityPtr extracted = + Extract("{\"@type\": \"VideoObject\", \"version\": [\"6.5a\", 6] }"); + ASSERT_FALSE(extracted.is_null()); + + EntityPtr expected = Entity::New(); + expected->type = "VideoObject"; + + PropertyPtr version = Property::New(); + version->name = "version"; + version->values = Values::New(); + version->values->string_values.push_back("6.5a"); + version->values->long_values.push_back(6); + + expected->properties.push_back(std::move(version)); + + EXPECT_EQ(expected, extracted); +} + TEST_F(SchemaOrgExtractorTest, RepeatedObject) { EntityPtr extracted = Extract( "{\"@type\": \"VideoObject\", \"actor\": [ {\"@type\": \"Person\", " @@ -187,17 +202,16 @@ PropertyPtr actorProperty = Property::New(); actorProperty->name = "actor"; actorProperty->values = Values::New(); - actorProperty->values->set_entity_values(std::vector<EntityPtr>()); EntityPtr nested1 = Entity::New(); nested1->type = "Person"; nested1->properties.push_back(CreateStringProperty("name", "Talented Actor")); - actorProperty->values->get_entity_values().push_back(std::move(nested1)); + actorProperty->values->entity_values.push_back(std::move(nested1)); EntityPtr nested2 = Entity::New(); nested2->type = "Person"; nested2->properties.push_back(CreateStringProperty("name", "Famous Actor")); - actorProperty->values->get_entity_values().push_back(std::move(nested2)); + actorProperty->values->entity_values.push_back(std::move(nested2)); expected->properties.push_back(std::move(actorProperty)); @@ -259,7 +273,7 @@ for (int i = 0; i < 100; i++) { nameValues.push_back("a"); } - name->values->set_string_values(nameValues); + name->values->string_values = std::move(nameValues); expected->properties.push_back(std::move(name)); EXPECT_EQ(expected, extracted); @@ -298,17 +312,6 @@ EXPECT_EQ(expected, extracted); } -TEST_F(SchemaOrgExtractorTest, IgnorePropertyWithMixedTypes) { - EntityPtr extracted = - Extract("{\"@type\": \"VideoObject\", \"name\": [\"Name\", 1] }"); - ASSERT_FALSE(extracted.is_null()); - - EntityPtr expected = Entity::New(); - expected->type = "VideoObject"; - - EXPECT_EQ(expected, extracted); -} - TEST_F(SchemaOrgExtractorTest, IgnorePropertyWithNestedArray) { EntityPtr extracted = Extract("{\"@type\": \"VideoObject\", \"name\": [[\"Name\"]] }");
diff --git a/components/sync/driver/fake_sync_service.cc b/components/sync/driver/fake_sync_service.cc index 582c842e..a02fb9370 100644 --- a/components/sync/driver/fake_sync_service.cc +++ b/components/sync/driver/fake_sync_service.cc
@@ -55,6 +55,10 @@ return ModelTypeSet(); } +ModelTypeSet FakeSyncService::GetBackedOffDataTypes() const { + return ModelTypeSet(); +} + void FakeSyncService::AddObserver(SyncServiceObserver* observer) {} void FakeSyncService::RemoveObserver(SyncServiceObserver* observer) {}
diff --git a/components/sync/driver/fake_sync_service.h b/components/sync/driver/fake_sync_service.h index 375a359..24a9669 100644 --- a/components/sync/driver/fake_sync_service.h +++ b/components/sync/driver/fake_sync_service.h
@@ -34,6 +34,7 @@ bool IsLocalSyncEnabled() const override; void TriggerRefresh(const ModelTypeSet& types) override; ModelTypeSet GetActiveDataTypes() const override; + ModelTypeSet GetBackedOffDataTypes() const override; void AddObserver(SyncServiceObserver* observer) override; void RemoveObserver(SyncServiceObserver* observer) override; bool HasObserver(const SyncServiceObserver* observer) const override;
diff --git a/components/sync/driver/glue/sync_engine_impl.cc b/components/sync/driver/glue/sync_engine_impl.cc index 3e916b25..7e803f32 100644 --- a/components/sync/driver/glue/sync_engine_impl.cc +++ b/components/sync/driver/glue/sync_engine_impl.cc
@@ -229,7 +229,7 @@ return backend_->sync_manager()->GetUserShare(); } -SyncEngineImpl::Status SyncEngineImpl::GetDetailedStatus() { +const SyncEngineImpl::Status& SyncEngineImpl::GetDetailedStatus() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsInitialized()); return cached_status_; @@ -438,7 +438,12 @@ void SyncEngineImpl::HandleSyncStatusChanged(const SyncStatus& status) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + const bool backed_off_types_changed = + (status.backed_off_types != cached_status_.backed_off_types); cached_status_ = status; + if (backed_off_types_changed) { + host_->OnBackedOffTypesChanged(); + } } void SyncEngineImpl::OnCookieJarChanged(bool account_mismatch,
diff --git a/components/sync/driver/glue/sync_engine_impl.h b/components/sync/driver/glue/sync_engine_impl.h index de7497b..9d900d5 100644 --- a/components/sync/driver/glue/sync_engine_impl.h +++ b/components/sync/driver/glue/sync_engine_impl.h
@@ -82,7 +82,7 @@ void DeactivateNonBlockingDataType(ModelType type) override; void EnableEncryptEverything() override; UserShare* GetUserShare() const override; - Status GetDetailedStatus() override; + const Status& GetDetailedStatus() const override; void HasUnsyncedItemsForTest( base::OnceCallback<void(bool)> cb) const override; void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) const override; @@ -160,7 +160,6 @@ void UpdateInvalidationVersions( const std::map<ModelType, int64_t>& invalidation_versions); - // Stores the new |status| in local cache. void HandleSyncStatusChanged(const SyncStatus& status); private:
diff --git a/components/sync/driver/mock_sync_service.h b/components/sync/driver/mock_sync_service.h index 858fb18f..b6138d1 100644 --- a/components/sync/driver/mock_sync_service.h +++ b/components/sync/driver/mock_sync_service.h
@@ -51,6 +51,7 @@ MOCK_CONST_METHOD0(GetRegisteredDataTypes, ModelTypeSet()); MOCK_CONST_METHOD0(GetPreferredDataTypes, ModelTypeSet()); MOCK_CONST_METHOD0(GetActiveDataTypes, ModelTypeSet()); + MOCK_CONST_METHOD0(GetBackedOffDataTypes, ModelTypeSet()); MOCK_METHOD0(StopAndClear, void()); MOCK_METHOD1(OnDataTypeRequestsSyncStartup, void(ModelType type));
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc index 9a9f6263..a243e9f 100644 --- a/components/sync/driver/profile_sync_service.cc +++ b/components/sync/driver/profile_sync_service.cc
@@ -1125,6 +1125,10 @@ NotifyObservers(); } +void ProfileSyncService::OnBackedOffTypesChanged() { + NotifyObservers(); +} + void ProfileSyncService::OnConfigureDone( const DataTypeManager::ConfigureResult& result) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -1352,6 +1356,14 @@ return data_type_manager_->GetActiveDataTypes(); } +ModelTypeSet ProfileSyncService::GetBackedOffDataTypes() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (engine_ && engine_->IsInitialized()) { + return engine_->GetDetailedStatus().backed_off_types; + } + return ModelTypeSet(); +} + void ProfileSyncService::SyncAllowedByPlatformChanged(bool allowed) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -1512,7 +1524,7 @@ return std::move(result); } - SyncStatus detailed_status = engine_->GetDetailedStatus(); + const SyncStatus& detailed_status = engine_->GetDetailedStatus(); const ModelTypeSet& throttled_types(detailed_status.throttled_types); const ModelTypeSet& backed_off_types(detailed_status.backed_off_types);
diff --git a/components/sync/driver/profile_sync_service.h b/components/sync/driver/profile_sync_service.h index 7fa5db1..b714293 100644 --- a/components/sync/driver/profile_sync_service.h +++ b/components/sync/driver/profile_sync_service.h
@@ -133,6 +133,7 @@ ModelTypeSet GetRegisteredDataTypes() const override; ModelTypeSet GetPreferredDataTypes() const override; ModelTypeSet GetActiveDataTypes() const override; + ModelTypeSet GetBackedOffDataTypes() const override; void StopAndClear() override; void OnDataTypeRequestsSyncStartup(ModelType type) override; void TriggerRefresh(const ModelTypeSet& types) override; @@ -188,6 +189,7 @@ void OnConnectionStatusChange(ConnectionStatus status) override; void OnMigrationNeededForTypes(ModelTypeSet types) override; void OnActionableError(const SyncProtocolError& error) override; + void OnBackedOffTypesChanged() override; // DataTypeManagerObserver implementation. void OnConfigureDone(const DataTypeManager::ConfigureResult& result) override;
diff --git a/components/sync/driver/sync_service.h b/components/sync/driver/sync_service.h index aac1b24..ca6909ed 100644 --- a/components/sync/driver/sync_service.h +++ b/components/sync/driver/sync_service.h
@@ -331,6 +331,10 @@ // be the empty set. Once the configuration completes the set will be updated. virtual ModelTypeSet GetActiveDataTypes() const = 0; + // Returns the set of currently backed off data types (e.g. returns non-empty + // result when the network was disabled during last sync cycle). + virtual ModelTypeSet GetBackedOffDataTypes() const = 0; + ////////////////////////////////////////////////////////////////////////////// // ACTIONS / STATE CHANGE REQUESTS //////////////////////////////////////////////////////////////////////////////
diff --git a/components/sync/driver/test_sync_service.cc b/components/sync/driver/test_sync_service.cc index 59d61b1d..730f961 100644 --- a/components/sync/driver/test_sync_service.cc +++ b/components/sync/driver/test_sync_service.cc
@@ -90,6 +90,10 @@ active_data_types_ = types; } +void TestSyncService::SetBackedOffDataTypes(const ModelTypeSet& types) { + backed_off_data_types_ = types; +} + void TestSyncService::SetLastCycleSnapshot(const SyncCycleSnapshot& snapshot) { last_cycle_snapshot_ = snapshot; } @@ -220,6 +224,10 @@ return active_data_types_; } +ModelTypeSet TestSyncService::GetBackedOffDataTypes() const { + return backed_off_data_types_; +} + void TestSyncService::StopAndClear() {} void TestSyncService::OnDataTypeRequestsSyncStartup(ModelType type) {}
diff --git a/components/sync/driver/test_sync_service.h b/components/sync/driver/test_sync_service.h index 47bb6458..abd328e 100644 --- a/components/sync/driver/test_sync_service.h +++ b/components/sync/driver/test_sync_service.h
@@ -38,6 +38,7 @@ void SetFirstSetupComplete(bool first_setup_complete); void SetPreferredDataTypes(const ModelTypeSet& types); void SetActiveDataTypes(const ModelTypeSet& types); + void SetBackedOffDataTypes(const ModelTypeSet& types); void SetLastCycleSnapshot(const SyncCycleSnapshot& snapshot); void SetUserDemographics( const UserDemographicsResult& user_demographics_result); @@ -78,6 +79,7 @@ ModelTypeSet GetRegisteredDataTypes() const override; ModelTypeSet GetPreferredDataTypes() const override; ModelTypeSet GetActiveDataTypes() const override; + ModelTypeSet GetBackedOffDataTypes() const override; void StopAndClear() override; void OnDataTypeRequestsSyncStartup(ModelType type) override; @@ -130,6 +132,7 @@ ModelTypeSet preferred_data_types_; ModelTypeSet active_data_types_; + ModelTypeSet backed_off_data_types_; bool detailed_sync_status_engine_available_ = false; SyncStatus detailed_sync_status_;
diff --git a/components/sync/engine/fake_sync_engine.cc b/components/sync/engine/fake_sync_engine.cc index e8c9e72..0bcc859d 100644 --- a/components/sync/engine/fake_sync_engine.cc +++ b/components/sync/engine/fake_sync_engine.cc
@@ -80,8 +80,8 @@ return nullptr; } -SyncStatus FakeSyncEngine::GetDetailedStatus() { - return SyncStatus(); +const SyncStatus& FakeSyncEngine::GetDetailedStatus() const { + return default_sync_status_; } void FakeSyncEngine::HasUnsyncedItemsForTest(
diff --git a/components/sync/engine/fake_sync_engine.h b/components/sync/engine/fake_sync_engine.h index 29b4c0a6..bf8d3cf 100644 --- a/components/sync/engine/fake_sync_engine.h +++ b/components/sync/engine/fake_sync_engine.h
@@ -77,7 +77,7 @@ UserShare* GetUserShare() const override; - SyncStatus GetDetailedStatus() override; + const SyncStatus& GetDetailedStatus() const override; void HasUnsyncedItemsForTest( base::OnceCallback<void(bool)> cb) const override; @@ -102,6 +102,7 @@ private: bool fail_initial_download_ = false; bool initialized_ = false; + const SyncStatus default_sync_status_; }; } // namespace syncer
diff --git a/components/sync/engine/mock_sync_engine.h b/components/sync/engine/mock_sync_engine.h index d79f1389..568dc9d 100644 --- a/components/sync/engine/mock_sync_engine.h +++ b/components/sync/engine/mock_sync_engine.h
@@ -52,7 +52,7 @@ MOCK_METHOD1(Shutdown, void(ShutdownReason)); MOCK_METHOD0(EnableEncryptEverything, void()); MOCK_CONST_METHOD0(GetUserShare, UserShare*()); - MOCK_METHOD0(GetDetailedStatus, SyncStatus()); + MOCK_CONST_METHOD0(GetDetailedStatus, const SyncStatus&()); MOCK_CONST_METHOD1(HasUnsyncedItemsForTest, void(base::OnceCallback<void(bool)>)); MOCK_CONST_METHOD1(GetModelSafeRoutingInfo, void(ModelSafeRoutingInfo*));
diff --git a/components/sync/engine/sync_engine.h b/components/sync/engine/sync_engine.h index 3f9c99bd..322cbdaa 100644 --- a/components/sync/engine/sync_engine.h +++ b/components/sync/engine/sync_engine.h
@@ -156,8 +156,8 @@ // OnBackendInitialized(). virtual UserShare* GetUserShare() const = 0; - // Called from any thread to obtain current detailed status information. - virtual SyncStatus GetDetailedStatus() = 0; + // Returns current detailed status information. + virtual const SyncStatus& GetDetailedStatus() const = 0; // Determines if the underlying sync engine has made any local changes to // items that have not yet been synced with the server.
diff --git a/components/sync/engine/sync_engine_host.h b/components/sync/engine/sync_engine_host.h index ca72d59..27ea927 100644 --- a/components/sync/engine/sync_engine_host.h +++ b/components/sync/engine/sync_engine_host.h
@@ -90,6 +90,9 @@ // Called when the sync cycle returns there is an user actionable error. virtual void OnActionableError(const SyncProtocolError& error) = 0; + + // Called when the set of backed off types is changed. + virtual void OnBackedOffTypesChanged() = 0; }; } // namespace syncer
diff --git a/components/sync/engine/sync_engine_host_stub.cc b/components/sync/engine/sync_engine_host_stub.cc index b849399..f221583 100644 --- a/components/sync/engine/sync_engine_host_stub.cc +++ b/components/sync/engine/sync_engine_host_stub.cc
@@ -42,4 +42,6 @@ void SyncEngineHostStub::OnActionableError(const SyncProtocolError& error) {} +void SyncEngineHostStub::OnBackedOffTypesChanged() {} + } // namespace syncer
diff --git a/components/sync/engine/sync_engine_host_stub.h b/components/sync/engine/sync_engine_host_stub.h index 7c9427e..40aacbd 100644 --- a/components/sync/engine/sync_engine_host_stub.h +++ b/components/sync/engine/sync_engine_host_stub.h
@@ -39,6 +39,7 @@ void OnConnectionStatusChange(ConnectionStatus status) override; void OnMigrationNeededForTypes(ModelTypeSet types) override; void OnActionableError(const SyncProtocolError& error) override; + void OnBackedOffTypesChanged() override; }; } // namespace syncer
diff --git a/components/sync_bookmarks/bookmark_local_changes_builder.cc b/components/sync_bookmarks/bookmark_local_changes_builder.cc index 7dd1d365..37f3c96f 100644 --- a/components/sync_bookmarks/bookmark_local_changes_builder.cc +++ b/components/sync_bookmarks/bookmark_local_changes_builder.cc
@@ -18,7 +18,7 @@ namespace sync_bookmarks { BookmarkLocalChangesBuilder::BookmarkLocalChangesBuilder( - const SyncedBookmarkTracker* const bookmark_tracker, + SyncedBookmarkTracker* const bookmark_tracker, bookmarks::BookmarkModel* bookmark_model) : bookmark_tracker_(bookmark_tracker), bookmark_model_(bookmark_model) { DCHECK(bookmark_tracker); @@ -71,6 +71,7 @@ entity->final_guid_matches(node->guid())); data->name = data->specifics.bookmark().title(); } + auto request = std::make_unique<syncer::CommitRequestData>(); request->entity = std::move(data); request->sequence_number = metadata->sequence_number(); @@ -79,6 +80,8 @@ // added/updated. request->specifics_hash = metadata->specifics_hash(); + bookmark_tracker_->MarkCommitMayHaveStarted(entity); + commit_requests.push_back(std::move(request)); } return commit_requests;
diff --git a/components/sync_bookmarks/bookmark_local_changes_builder.h b/components/sync_bookmarks/bookmark_local_changes_builder.h index 181c08ed..ee5ededa 100644 --- a/components/sync_bookmarks/bookmark_local_changes_builder.h +++ b/components/sync_bookmarks/bookmark_local_changes_builder.h
@@ -21,13 +21,13 @@ public: // |bookmark_tracker| and |bookmark_model| must not be null and must outlive // this object. - BookmarkLocalChangesBuilder(const SyncedBookmarkTracker* bookmark_tracker, + BookmarkLocalChangesBuilder(SyncedBookmarkTracker* bookmark_tracker, bookmarks::BookmarkModel* bookmark_model); // Builds the commit requests list. syncer::CommitRequestDataList BuildCommitRequests(size_t max_entries) const; private: - const SyncedBookmarkTracker* const bookmark_tracker_; + SyncedBookmarkTracker* const bookmark_tracker_; bookmarks::BookmarkModel* const bookmark_model_; DISALLOW_COPY_AND_ASSIGN(BookmarkLocalChangesBuilder);
diff --git a/components/sync_bookmarks/bookmark_model_merger.cc b/components/sync_bookmarks/bookmark_model_merger.cc index 61544b2..30712d20 100644 --- a/components/sync_bookmarks/bookmark_model_merger.cc +++ b/components/sync_bookmarks/bookmark_model_merger.cc
@@ -425,7 +425,7 @@ const RemoteTreeNode& remote_node) { const EntityData& remote_update_entity = remote_node.entity(); bookmark_tracker_->Add( - remote_update_entity.id, local_subtree_root, + local_subtree_root, remote_update_entity.id, remote_node.response_version(), remote_update_entity.creation_time, remote_update_entity.unique_position, remote_update_entity.specifics); @@ -570,7 +570,7 @@ remote_update_entity.is_folder, bookmark_model_, favicon_service_); DCHECK(bookmark_node); - bookmark_tracker_->Add(remote_update_entity.id, bookmark_node, + bookmark_tracker_->Add(bookmark_node, remote_update_entity.id, remote_node.response_version(), remote_update_entity.creation_time, remote_update_entity.unique_position, specifics); @@ -640,10 +640,10 @@ const sync_pb::EntitySpecifics specifics = CreateSpecificsFromBookmarkNode( node, bookmark_model_, /*force_favicon_load=*/true, /*include_guid=*/true); - bookmark_tracker_->Add(sync_id, node, server_version, creation_time, - pos.ToProto(), specifics); + const SyncedBookmarkTracker::Entity* entity = bookmark_tracker_->Add( + node, sync_id, server_version, creation_time, pos.ToProto(), specifics); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); for (size_t i = 0; i < node->children().size(); ++i) { // If a local node hasn't matched with any remote entity, its descendants // will neither, unless they have been or will be matched by GUID, in which
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl.cc b/components/sync_bookmarks/bookmark_model_observer_impl.cc index 0a2bbc67..b9bd1605 100644 --- a/components/sync_bookmarks/bookmark_model_observer_impl.cc +++ b/components/sync_bookmarks/bookmark_model_observer_impl.cc
@@ -62,17 +62,16 @@ const std::string& sync_id = entity->metadata()->server_id(); const base::Time modification_time = base::Time::Now(); - const sync_pb::UniquePosition unique_position = ComputePosition(*new_parent, new_index, sync_id).ToProto(); sync_pb::EntitySpecifics specifics = CreateSpecificsFromBookmarkNode( node, model, /*force_favicon_load=*/true, entity->has_final_guid()); - bookmark_tracker_->Update(sync_id, entity->metadata()->server_version(), + bookmark_tracker_->Update(entity, entity->metadata()->server_version(), modification_time, unique_position, specifics); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); nudge_for_commit_closure_.Run(); } @@ -108,10 +107,10 @@ sync_pb::EntitySpecifics specifics = CreateSpecificsFromBookmarkNode(node, model, /*force_favicon_load=*/true, /*include_guid=*/true); - bookmark_tracker_->Add(sync_id, node, server_version, creation_time, - unique_position, specifics); + const SyncedBookmarkTracker::Entity* entity = bookmark_tracker_->Add( + node, sync_id, server_version, creation_time, unique_position, specifics); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); nudge_for_commit_closure_.Run(); } @@ -198,12 +197,11 @@ // (e.g.upon a favicon load). return; } - const std::string& sync_id = entity->metadata()->server_id(); - bookmark_tracker_->Update(sync_id, entity->metadata()->server_version(), + bookmark_tracker_->Update(entity, entity->metadata()->server_version(), modification_time, entity->metadata()->unique_position(), specifics); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); nudge_for_commit_closure_.Run(); } @@ -271,10 +269,10 @@ child.get(), model, /*force_favicon_load=*/true, entity->has_final_guid()); - bookmark_tracker_->Update(sync_id, entity->metadata()->server_version(), + bookmark_tracker_->Update(entity, entity->metadata()->server_version(), modification_time, position.ToProto(), specifics); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); } nudge_for_commit_closure_.Run(); } @@ -352,17 +350,16 @@ bookmark_tracker_->GetEntityForBookmarkNode(node); // Shouldn't try to delete untracked entities. DCHECK(entity); - const std::string& sync_id = entity->metadata()->server_id(); // If the entity hasn't been committed and doesn't have an inflight commit // request, simply remove it from the tracker. if (entity->metadata()->server_version() == syncer::kUncommittedVersion && !entity->commit_may_have_started()) { - bookmark_tracker_->Remove(sync_id); + bookmark_tracker_->Remove(entity); return; } - bookmark_tracker_->MarkDeleted(sync_id); + bookmark_tracker_->MarkDeleted(entity); // Mark the entity that it needs to be committed. - bookmark_tracker_->IncrementSequenceNumber(sync_id); + bookmark_tracker_->IncrementSequenceNumber(entity); } } // namespace sync_bookmarks
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc index fadddbc..93e38335 100644 --- a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc +++ b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
@@ -51,8 +51,8 @@ sync_pb::EntitySpecifics specifics; specifics.mutable_bookmark()->set_title(kBookmarkBarTag); bookmark_tracker_->Add( - /*sync_id=*/kBookmarkBarId, /*bookmark_node=*/bookmark_model()->bookmark_bar_node(), + /*sync_id=*/kBookmarkBarId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -60,8 +60,8 @@ specifics); specifics.mutable_bookmark()->set_title(kOtherBookmarksTag); bookmark_tracker_->Add( - /*sync_id=*/kOtherBookmarksId, /*bookmark_node=*/bookmark_model()->other_node(), + /*sync_id=*/kOtherBookmarksId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -69,8 +69,8 @@ specifics); specifics.mutable_bookmark()->set_title(kMobileBookmarksTag); bookmark_tracker_->Add( - /*sync_id=*/kMobileBookmarksId, /*bookmark_node=*/bookmark_model()->mobile_node(), + /*sync_id=*/kMobileBookmarksId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -87,9 +87,9 @@ bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries)) { const std::string id = entity->metadata()->server_id(); // Don't simulate change in id for simplicity. - bookmark_tracker()->UpdateUponCommitResponse(id, id, - /*acked_sequence_number=*/1, - /*server_version=*/1); + bookmark_tracker()->UpdateUponCommitResponse(entity, id, + /*server_version=*/1, + /*acked_sequence_number=*/1); } } @@ -401,23 +401,22 @@ // Node should be tracked now. ASSERT_THAT(bookmark_tracker()->TrackedEntitiesCountForTest(), 4U); - const std::string id = bookmark_tracker() - ->GetEntityForBookmarkNode(folder_node) - ->metadata() - ->server_id(); + const SyncedBookmarkTracker::Entity* entity = + bookmark_tracker()->GetEntityForBookmarkNode(folder_node); + const std::string id = entity->metadata()->server_id(); ASSERT_THAT( bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries).size(), 1U); - bookmark_tracker()->MarkCommitMayHaveStarted(id); + bookmark_tracker()->MarkCommitMayHaveStarted(entity); // Remove the folder. bookmark_model()->Remove(folder_node); // Simulate a commit response for the first commit request (the creation). // Don't simulate change in id for simplicity. - bookmark_tracker()->UpdateUponCommitResponse(id, id, - /*acked_sequence_number=*/1, - /*server_version=*/1); + bookmark_tracker()->UpdateUponCommitResponse(entity, id, + /*server_version=*/1, + /*acked_sequence_number=*/1); // There should still be one local change (the deletion). EXPECT_THAT( @@ -427,9 +426,9 @@ EXPECT_THAT(bookmark_tracker()->TrackedEntitiesCountForTest(), 4U); // Commit the deletion. - bookmark_tracker()->UpdateUponCommitResponse(id, id, - /*acked_sequence_number=*/2, - /*server_version=*/2); + bookmark_tracker()->UpdateUponCommitResponse(entity, id, + /*server_version=*/2, + /*acked_sequence_number=*/2); // Entity should have been dropped. EXPECT_THAT(bookmark_tracker()->TrackedEntitiesCountForTest(), 3U); } @@ -515,8 +514,8 @@ sync_pb::EntitySpecifics specifics; specifics.mutable_bookmark()->set_title(kBookmarkBarTag); bookmark_tracker->Add( - /*sync_id=*/kBookmarkBarId, /*bookmark_node=*/model->bookmark_bar_node(), + /*sync_id=*/kBookmarkBarId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -524,8 +523,8 @@ specifics); specifics.mutable_bookmark()->set_title(kOtherBookmarksTag); bookmark_tracker->Add( - /*sync_id=*/kOtherBookmarksId, /*bookmark_node=*/model->other_node(), + /*sync_id=*/kOtherBookmarksId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -533,8 +532,8 @@ specifics); specifics.mutable_bookmark()->set_title(kMobileBookmarksTag); bookmark_tracker->Add( - /*sync_id=*/kMobileBookmarksId, /*bookmark_node=*/model->mobile_node(), + /*sync_id=*/kMobileBookmarksId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix()) @@ -586,8 +585,8 @@ sync_pb::EntitySpecifics specifics; specifics.mutable_bookmark()->set_title(kBookmarkBarTag); bookmark_tracker->Add( - /*sync_id=*/kBookmarkBarId, /*bookmark_node=*/bookmark_model()->bookmark_bar_node(), + /*sync_id=*/kBookmarkBarId, /*server_version=*/0, /*creation_time=*/base::Time::Now(), syncer::UniquePosition::InitialPosition( syncer::UniquePosition::RandomSuffix())
diff --git a/components/sync_bookmarks/bookmark_model_type_processor.cc b/components/sync_bookmarks/bookmark_model_type_processor.cc index 4164377..24e8643 100644 --- a/components/sync_bookmarks/bookmark_model_type_processor.cc +++ b/components/sync_bookmarks/bookmark_model_type_processor.cc
@@ -185,13 +185,7 @@ GetLocalChangesCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); BookmarkLocalChangesBuilder builder(bookmark_tracker_.get(), bookmark_model_); - syncer::CommitRequestDataList local_changes = - builder.BuildCommitRequests(max_entries); - for (const std::unique_ptr<syncer::CommitRequestData>& local_change : - local_changes) { - bookmark_tracker_->MarkCommitMayHaveStarted(local_change->entity->id); - } - std::move(callback).Run(std::move(local_changes)); + std::move(callback).Run(builder.BuildCommitRequests(max_entries)); } void BookmarkModelTypeProcessor::OnCommitCompleted( @@ -209,10 +203,19 @@ // during the commit, and |response.id| carries both the old and new ids. const std::string& old_sync_id = response.id_in_request.empty() ? response.id : response.id_in_request; - bookmark_tracker_->UpdateUponCommitResponse(old_sync_id, response.id, - response.sequence_number, - response.response_version); + const SyncedBookmarkTracker::Entity* entity = + bookmark_tracker_->GetEntityForSyncId(old_sync_id); + if (!entity) { + DLOG(WARNING) << "Received a commit response for an unknown entity: " + << old_sync_id; + continue; + } + + bookmark_tracker_->UpdateUponCommitResponse(entity, response.id, + response.response_version, + response.sequence_number); } + bookmark_tracker_->set_model_type_state(type_state); schedule_save_closure_.Run(); }
diff --git a/components/sync_bookmarks/bookmark_remote_updates_handler.cc b/components/sync_bookmarks/bookmark_remote_updates_handler.cc index aca5375..09c11de 100644 --- a/components/sync_bookmarks/bookmark_remote_updates_handler.cc +++ b/components/sync_bookmarks/bookmark_remote_updates_handler.cc
@@ -151,7 +151,7 @@ const size_t old_index = size_t{old_parent->GetIndexOf(node)}; const size_t new_index = ComputeChildNodeIndex(new_parent, update_entity.unique_position, tracker); - tracker->Update(update_entity.id, update.response_version, + tracker->Update(tracked_entity, update.response_version, update_entity.modification_time, update_entity.unique_position, update_entity.specifics); @@ -237,7 +237,7 @@ update_entity.server_defined_unique_tag.empty() && !tracked_entity->final_guid_matches(remote_guid)) { DCHECK(base::IsValidGUIDOutputString(remote_guid)); - bookmark_tracker_->PopulateFinalGuid(update_entity.id, remote_guid); + bookmark_tracker_->PopulateFinalGuid(tracked_entity, remote_guid); // In many cases final_guid_matches() may return false because a final // GUID is not known for sure, but actually it matches the local GUID. if (tracked_entity->bookmark_node() && @@ -263,8 +263,10 @@ // |original_client_item_id|. If we have a entry by that description, we // should update the |sync_id| in |bookmark_tracker_|. The rest of code will // handle this a conflict and adjust the model if needed. - if (bookmark_tracker_->GetEntityForSyncId( - update_entity.originator_client_item_id) != nullptr) { + const SyncedBookmarkTracker::Entity* old_tracked_entity = + bookmark_tracker_->GetEntityForSyncId( + update_entity.originator_client_item_id); + if (old_tracked_entity) { if (tracked_entity) { // We generally shouldn't have an entry for both the old ID and the new // ID, but it could happen due to some past bug (see crbug.com/1004205). @@ -272,10 +274,8 @@ // they have the same URL. // TODO(crbug.com/516866): Clean up the workaround once this has been // resolved. - const SyncedBookmarkTracker::Entity* old_entity = - bookmark_tracker_->GetEntityForSyncId( - update_entity.originator_client_item_id); - const bookmarks::BookmarkNode* old_node = old_entity->bookmark_node(); + const bookmarks::BookmarkNode* old_node = + old_tracked_entity->bookmark_node(); const bookmarks::BookmarkNode* new_node = tracked_entity->bookmark_node(); // |old_node| may be null when |old_entity| is a tombstone pending @@ -286,13 +286,13 @@ CHECK(old_node->url() == new_node->url()); bookmark_model_->Remove(old_node); } - bookmark_tracker_->Remove(update_entity.originator_client_item_id); + bookmark_tracker_->Remove(old_tracked_entity); continue; } - bookmark_tracker_->UpdateSyncForLocalCreationIfNeeded( - /*old_id=*/update_entity.originator_client_item_id, - /*new_id=*/update_entity.id); + bookmark_tracker_->UpdateSyncIdForLocalCreationIfNeeded( + old_tracked_entity, + /*sync_id=*/update_entity.id); // The tracker has changed. Re-retrieve the |tracker_entity|. tracked_entity = bookmark_tracker_->GetEntityForSyncId(update_entity.id); @@ -312,15 +312,16 @@ // encryption. Therefore, we can go ahead and process the next update. continue; } else if (!tracked_entity) { - bool success = ProcessCreate(*update); - if (!success) { + tracked_entity = ProcessCreate(*update); + if (!tracked_entity) { // If no new node has been tracked, we shouldn't worry about changes to // the encryption. continue; } // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. // Should be removed after figuring out the reason for the crash. - CHECK(bookmark_tracker_->GetEntityForSyncId(update_entity.id)); + CHECK_EQ(tracked_entity, + bookmark_tracker_->GetEntityForSyncId(update_entity.id)); } else { // Ignore changes to the permanent nodes (e.g. bookmarks bar). We only // care about their children. @@ -330,7 +331,8 @@ ProcessUpdate(*update, tracked_entity); // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. // Should be removed after figuring out the reason for the crash. - CHECK(bookmark_tracker_->GetEntityForSyncId(update_entity.id)); + CHECK_EQ(tracked_entity, + bookmark_tracker_->GetEntityForSyncId(update_entity.id)); } // If the received entity has out of date encryption, we schedule another // commit to fix it. @@ -339,7 +341,7 @@ DVLOG(2) << "Bookmarks: Requesting re-encrypt commit " << update->encryption_key_name << " -> " << bookmark_tracker_->model_type_state().encryption_key_name(); - bookmark_tracker_->IncrementSequenceNumber(update_entity.id); + bookmark_tracker_->IncrementSequenceNumber(tracked_entity); } if (got_new_encryption_requirements) { @@ -364,8 +366,7 @@ entity->metadata()->server_id()) != 0) { continue; } - bookmark_tracker_->IncrementSequenceNumber( - entity->metadata()->server_id()); + bookmark_tracker_->IncrementSequenceNumber(entity); } } bookmark_tracker_->CheckAllNodesTracked(bookmark_model_); @@ -458,7 +459,8 @@ return ordered_updates; } -bool BookmarkRemoteUpdatesHandler::ProcessCreate( +const SyncedBookmarkTracker::Entity* +BookmarkRemoteUpdatesHandler::ProcessCreate( const syncer::UpdateResponseData& update) { const syncer::EntityData& update_entity = update.entity; DCHECK(!update_entity.is_deleted()); @@ -467,7 +469,7 @@ << "Permanent nodes should have been merged during intial sync."; LogProblematicBookmark( RemoteBookmarkUpdateError::kPermanentNodeCreationAfterMerge); - return false; + return nullptr; } DCHECK(IsValidBookmarkSpecifics(update_entity.specifics.bookmark(), @@ -480,14 +482,14 @@ << " Node title: " << update_entity.specifics.bookmark().title() << ", parent id = " << update_entity.parent_id; LogProblematicBookmark(RemoteBookmarkUpdateError::kMissingParentNode); - return false; + return nullptr; } if (!parent_node->is_folder()) { DLOG(ERROR) << "Parent node is not a folder. Node title: " << update_entity.specifics.bookmark().title() << ", parent id: " << update_entity.parent_id; LogProblematicBookmark(RemoteBookmarkUpdateError::kParentNotFolder); - return false; + return nullptr; } const bookmarks::BookmarkNode* bookmark_node = CreateBookmarkNodeFromSpecifics( @@ -496,11 +498,10 @@ bookmark_tracker_), update_entity.is_folder, bookmark_model_, favicon_service_); DCHECK(bookmark_node); - bookmark_tracker_->Add(update_entity.id, bookmark_node, - update.response_version, update_entity.creation_time, - update_entity.unique_position, - update_entity.specifics); - return true; + return bookmark_tracker_->Add( + bookmark_node, update_entity.id, update.response_version, + update_entity.creation_time, update_entity.unique_position, + update_entity.specifics); } void BookmarkRemoteUpdatesHandler::ProcessUpdate( @@ -548,7 +549,7 @@ // to confirm that no updates to the model are needed. if (tracked_entity->MatchesDataIgnoringParent(update_entity) && new_parent == old_parent) { - bookmark_tracker_->Update(update_entity.id, update.response_version, + bookmark_tracker_->Update(tracked_entity, update.response_version, update_entity.modification_time, update_entity.unique_position, update_entity.specifics); @@ -601,7 +602,7 @@ if (tracked_entity->metadata()->is_deleted() && update_entity.is_deleted()) { // Both have been deleted, delete the corresponding entity from the tracker. - bookmark_tracker_->Remove(update_entity.id); + bookmark_tracker_->Remove(tracked_entity); DLOG(WARNING) << "Conflict: CHANGES_MATCH"; return; } @@ -609,7 +610,7 @@ if (update_entity.is_deleted()) { // Only remote has been deleted. Local wins. Record that we received the // update from the server but leave the pending commit intact. - bookmark_tracker_->UpdateServerVersion(update_entity.id, + bookmark_tracker_->UpdateServerVersion(tracked_entity, update.response_version); DLOG(WARNING) << "Conflict: USE_LOCAL"; return; @@ -618,7 +619,7 @@ if (tracked_entity->metadata()->is_deleted()) { // Only local node has been deleted. It should be restored from the server // data as a remote creation. - bookmark_tracker_->Remove(update_entity.id); + bookmark_tracker_->Remove(tracked_entity); ProcessCreate(update); DLOG(WARNING) << "Conflict: USE_REMOTE"; return; @@ -657,7 +658,7 @@ } // Either local and remote data match or server wins, and in both cases we // should squash any pending commits. - bookmark_tracker_->AckSequenceNumber(update_entity.id); + bookmark_tracker_->AckSequenceNumber(tracked_entity); // Node update could be either in the node data (e.g. title or // unique_position), or it could be that the node has moved under another @@ -665,7 +666,7 @@ // to confirm that no updates to the model are needed. if (tracked_entity->MatchesDataIgnoringParent(update_entity) && new_parent == old_parent) { - bookmark_tracker_->Update(update_entity.id, update.response_version, + bookmark_tracker_->Update(tracked_entity, update.response_version, update_entity.modification_time, update_entity.unique_position, update_entity.specifics); @@ -687,7 +688,7 @@ const SyncedBookmarkTracker::Entity* entity = bookmark_tracker_->GetEntityForBookmarkNode(node); DCHECK(entity); - bookmark_tracker_->Remove(entity->metadata()->server_id()); + bookmark_tracker_->Remove(entity); for (const auto& child : node->children()) RemoveEntityAndChildrenFromTracker(child.get());
diff --git a/components/sync_bookmarks/bookmark_remote_updates_handler.h b/components/sync_bookmarks/bookmark_remote_updates_handler.h index 9ce5510..b6ac1b31 100644 --- a/components/sync_bookmarks/bookmark_remote_updates_handler.h +++ b/components/sync_bookmarks/bookmark_remote_updates_handler.h
@@ -63,9 +63,10 @@ // ignored. // 3. Otherwise, a new node is created in the local bookmark model and // registered in |bookmark_tracker_|. - // Returns true if a new bookmark has been registered in the - // |bookmark_tracker_|, false otherwise. - bool ProcessCreate(const syncer::UpdateResponseData& update); + // + // Returns the newly tracked entity or null if the creation failed. + const SyncedBookmarkTracker::Entity* ProcessCreate( + const syncer::UpdateResponseData& update); // Processes a remote update of a bookmark node. |update| must not be a // deletion, and the server_id must be already tracked, otherwise, it is a
diff --git a/components/sync_bookmarks/bookmark_remote_updates_handler_unittest.cc b/components/sync_bookmarks/bookmark_remote_updates_handler_unittest.cc index a13e6fb..dbfc413 100644 --- a/components/sync_bookmarks/bookmark_remote_updates_handler_unittest.cc +++ b/components/sync_bookmarks/bookmark_remote_updates_handler_unittest.cc
@@ -297,16 +297,16 @@ // it. // - the second node is the copy with the same GUID (but it was committed // successfully and the client knows the new server id). - tracker()->Add(update_data.entity.originator_client_item_id, user_node_copy, - update_data.response_version, update_data.entity.creation_time, - update_data.entity.unique_position, - update_data.entity.specifics); + const SyncedBookmarkTracker::Entity* entity = tracker()->Add( + user_node_copy, update_data.entity.originator_client_item_id, + update_data.response_version, update_data.entity.creation_time, + update_data.entity.unique_position, update_data.entity.specifics); + ASSERT_THAT(entity, NotNull()); // Remove local node without committing. bookmark_model()->Remove(user_node_copy); - tracker()->MarkDeleted(update_data.entity.originator_client_item_id); - tracker()->IncrementSequenceNumber( - update_data.entity.originator_client_item_id); + tracker()->MarkDeleted(entity); + tracker()->IncrementSequenceNumber(entity); // Move the previous entity to a new parent. update_data.entity.parent_id = kMobileBookmarksId; @@ -314,7 +314,7 @@ ASSERT_THAT(tracker()->GetEntityForSyncId( update_data.entity.originator_client_item_id), - NotNull()); + Eq(entity)); ASSERT_THAT(tracker()->GetEntityForSyncId(update_data.entity.id), NotNull()); ASSERT_EQ(tracker()->TrackedEntitiesCountForTest(), 5U); @@ -376,7 +376,7 @@ // it. // - the second node is the copy with the same GUID (but it was committed // successfully and the client knows the new server id). - tracker()->Add(update_data.entity.originator_client_item_id, user_node_copy, + tracker()->Add(user_node_copy, update_data.entity.originator_client_item_id, update_data.response_version, update_data.entity.creation_time, update_data.entity.unique_position, update_data.entity.specifics); @@ -1067,12 +1067,13 @@ // Track a sync entity (similar to what happens after a local creation). The // |originator_client_item_id| is used a temp sync id and mark the entity that // it needs to be committed.. - tracker()->Add(/*sync_id=*/kOriginatorClientItemId, &node, kServerVersion, - kModificationTime, unique_position, specifics); - tracker()->IncrementSequenceNumber(/*sync_id=*/kOriginatorClientItemId); + const SyncedBookmarkTracker::Entity* entity = + tracker()->Add(&node, /*sync_id=*/kOriginatorClientItemId, kServerVersion, + kModificationTime, unique_position, specifics); + tracker()->IncrementSequenceNumber(entity); ASSERT_THAT(tracker()->GetEntityForSyncId(kOriginatorClientItemId), - NotNull()); + Eq(entity)); // Now receive an update with the actual server id. syncer::UpdateResponseDataList updates; @@ -1099,9 +1100,7 @@ // The sync id in the tracker should have been updated. EXPECT_THAT(tracker()->GetEntityForSyncId(kOriginatorClientItemId), IsNull()); - const SyncedBookmarkTracker::Entity* entity = - tracker()->GetEntityForSyncId(kSyncId); - ASSERT_THAT(entity, NotNull()); + EXPECT_THAT(tracker()->GetEntityForSyncId(kSyncId), Eq(entity)); EXPECT_THAT(entity->metadata()->server_id(), Eq(kSyncId)); EXPECT_THAT(entity->bookmark_node(), Eq(&node)); } @@ -1173,15 +1172,17 @@ const bookmarks::BookmarkNode* bookmark_bar_node = bookmark_model()->bookmark_bar_node(); ASSERT_THAT(bookmark_bar_node->children().size(), Eq(1u)); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); // Remove the bookmark from the local bookmark model. bookmark_model()->Remove(bookmark_bar_node->children().front().get()); ASSERT_THAT(bookmark_bar_node->children().size(), Eq(0u)); // Mark the entity as deleted locally. - tracker()->MarkDeleted(/*sync_id=*/kId); - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); + tracker()->MarkDeleted(entity); + tracker()->IncrementSequenceNumber(entity); ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); // Push a remote deletion for the same entity with an out of date encryption @@ -1253,8 +1254,10 @@ updates_handler()->Process(updates, /*got_new_encryption_requirements=*/false); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(entity->IsUnsynced(), Eq(false)); const bookmarks::BookmarkNode* bookmark_bar_node = bookmark_model()->bookmark_bar_node(); ASSERT_THAT(bookmark_bar_node->children().size(), Eq(1u)); @@ -1264,9 +1267,9 @@ ASSERT_THAT(bookmark_bar_node->children().size(), Eq(0u)); // Mark the entity as deleted locally. - tracker()->MarkDeleted(/*sync_id=*/kId); - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + tracker()->MarkDeleted(entity); + tracker()->IncrementSequenceNumber(entity); + ASSERT_THAT(entity->IsUnsynced(), Eq(true)); // Push a remote deletion for the same entity. updates.clear(); @@ -1309,12 +1312,14 @@ updates_handler()->Process(updates, /*got_new_encryption_requirements=*/false); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(entity->IsUnsynced(), Eq(false)); // Mark the entity as modified locally. - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + tracker()->IncrementSequenceNumber(entity); + ASSERT_THAT(entity->IsUnsynced(), Eq(true)); // Push a remote deletion for the same entity. updates.clear(); @@ -1333,7 +1338,8 @@ // There should have been conflict, and it should have been resolved with the // local version that will be committed later. - EXPECT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + ASSERT_THAT(tracker()->GetEntityForSyncId(kId), Eq(entity)); + EXPECT_THAT(entity->IsUnsynced(), Eq(true)); const bookmarks::BookmarkNode* bookmark_bar_node = bookmark_model()->bookmark_bar_node(); EXPECT_THAT(bookmark_bar_node->children().size(), Eq(1u)); @@ -1358,8 +1364,11 @@ updates_handler()->Process(updates, /*got_new_encryption_requirements=*/false); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(entity->IsUnsynced(), Eq(false)); + const bookmarks::BookmarkNode* bookmark_bar_node = bookmark_model()->bookmark_bar_node(); ASSERT_THAT(bookmark_bar_node->children().size(), Eq(1u)); @@ -1369,9 +1378,9 @@ ASSERT_THAT(bookmark_bar_node->children().size(), Eq(0u)); // Mark the entity as deleted locally. - tracker()->MarkDeleted(/*sync_id=*/kId); - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + tracker()->MarkDeleted(entity); + tracker()->IncrementSequenceNumber(entity); + ASSERT_THAT(entity->IsUnsynced(), Eq(true)); // Push an update for the same entity. updates.clear(); @@ -1389,10 +1398,12 @@ /*got_new_encryption_requirements=*/false); // There should have been conflict, and it should have been resolved with the - // remote version. - EXPECT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); - EXPECT_THAT(tracker()->GetEntityForSyncId(kId)->metadata()->is_deleted(), - Eq(false)); + // remote version. The implementation may or may not reuse |entity|, so let's + // look it up again. + entity = tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + EXPECT_THAT(entity->IsUnsynced(), Eq(false)); + EXPECT_THAT(entity->metadata()->is_deleted(), Eq(false)); // The bookmark should have been resurrected. EXPECT_THAT(bookmark_bar_node->children().size(), Eq(1u)); @@ -1420,12 +1431,15 @@ updates_handler()->Process(updates, /*got_new_encryption_requirements=*/false); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(entity->IsUnsynced(), Eq(false)); // Mark the entity as modified locally. - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + tracker()->IncrementSequenceNumber(entity); + ASSERT_THAT(entity->IsUnsynced(), Eq(true)); // Push an update for the same entity with the same information. updates.clear(); @@ -1443,7 +1457,8 @@ // There should have been conflict but both local and remote updates should // match. The conflict should have been resolved. - EXPECT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + ASSERT_THAT(tracker()->GetEntityForSyncId(kId), Eq(entity)); + EXPECT_THAT(entity->IsUnsynced(), Eq(false)); } TEST_F(BookmarkRemoteUpdatesHandlerWithInitialMergeTest, @@ -1469,12 +1484,15 @@ BookmarkRemoteUpdatesHandler updates_handler(bookmark_model(), favicon_service(), tracker()); updates_handler.Process(updates, /*got_new_encryption_requirements=*/false); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId), NotNull()); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + + const SyncedBookmarkTracker::Entity* entity = + tracker()->GetEntityForSyncId(kId); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(entity->IsUnsynced(), Eq(false)); // Mark the entity as modified locally. - tracker()->IncrementSequenceNumber(/*sync_id=*/kId); - ASSERT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(true)); + tracker()->IncrementSequenceNumber(entity); + ASSERT_THAT(entity->IsUnsynced(), Eq(true)); // Push an update for the same entity with a new title. updates.clear(); @@ -1493,7 +1511,8 @@ // There should have been conflict, and it should have been resolved with the // remote version. - EXPECT_THAT(tracker()->GetEntityForSyncId(kId)->IsUnsynced(), Eq(false)); + ASSERT_THAT(tracker()->GetEntityForSyncId(kId), Eq(entity)); + EXPECT_THAT(entity->IsUnsynced(), Eq(false)); const bookmarks::BookmarkNode* bookmark_bar_node = bookmark_model()->bookmark_bar_node(); ASSERT_THAT(bookmark_bar_node->children().size(), Eq(1u));
diff --git a/components/sync_bookmarks/synced_bookmark_tracker.cc b/components/sync_bookmarks/synced_bookmark_tracker.cc index b999ef1d..44386687e 100644 --- a/components/sync_bookmarks/synced_bookmark_tracker.cc +++ b/components/sync_bookmarks/synced_bookmark_tracker.cc
@@ -192,10 +192,14 @@ return it != sync_id_to_entities_map_.end() ? it->second.get() : nullptr; } -SyncedBookmarkTracker::Entity* SyncedBookmarkTracker::GetMutableEntityForSyncId( - const std::string& sync_id) { - auto it = sync_id_to_entities_map_.find(sync_id); - return it != sync_id_to_entities_map_.end() ? it->second.get() : nullptr; +SyncedBookmarkTracker::Entity* SyncedBookmarkTracker::AsMutableEntity( + const Entity* entity) { + DCHECK(entity); + DCHECK_EQ(entity, GetEntityForSyncId(entity->metadata()->server_id())); + + // As per DCHECK above, this tracker owns |*entity|, so it's legitimate to + // return non-const pointer. + return const_cast<Entity*>(entity); } const SyncedBookmarkTracker::Entity* @@ -205,14 +209,16 @@ return it != bookmark_node_to_entities_map_.end() ? it->second : nullptr; } -void SyncedBookmarkTracker::Add(const std::string& sync_id, - const bookmarks::BookmarkNode* bookmark_node, - int64_t server_version, - base::Time creation_time, - const sync_pb::UniquePosition& unique_position, - const sync_pb::EntitySpecifics& specifics) { +const SyncedBookmarkTracker::Entity* SyncedBookmarkTracker::Add( + const bookmarks::BookmarkNode* bookmark_node, + const std::string& sync_id, + int64_t server_version, + base::Time creation_time, + const sync_pb::UniquePosition& unique_position, + const sync_pb::EntitySpecifics& specifics) { DCHECK_GT(specifics.ByteSize(), 0); DCHECK(bookmark_node); + auto metadata = std::make_unique<sync_pb::EntityMetadata>(); metadata->set_is_deleted(false); metadata->set_server_id(sync_id); @@ -234,70 +240,67 @@ // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. // Should be removed after figuring out the reason for the crash. CHECK_EQ(0U, sync_id_to_entities_map_.count(sync_id)); + const Entity* raw_entity = entity.get(); sync_id_to_entities_map_[sync_id] = std::move(entity); + return raw_entity; } void SyncedBookmarkTracker::Update( - const std::string& sync_id, + const Entity* entity, int64_t server_version, base::Time modification_time, const sync_pb::UniquePosition& unique_position, const sync_pb::EntitySpecifics& specifics) { DCHECK_GT(specifics.ByteSize(), 0); - Entity* entity = GetMutableEntityForSyncId(sync_id); DCHECK(entity); - DCHECK_EQ(entity->metadata()->server_id(), sync_id); - entity->metadata()->set_server_version(server_version); - entity->metadata()->set_modification_time( + Entity* mutable_entity = AsMutableEntity(entity); + mutable_entity->metadata()->set_server_version(server_version); + mutable_entity->metadata()->set_modification_time( syncer::TimeToProtoTime(modification_time)); - *entity->metadata()->mutable_unique_position() = unique_position; - HashSpecifics(specifics, entity->metadata()->mutable_specifics_hash()); + *mutable_entity->metadata()->mutable_unique_position() = unique_position; + HashSpecifics(specifics, + mutable_entity->metadata()->mutable_specifics_hash()); // TODO(crbug.com/516866): in case of conflict, the entity might exist in // |ordered_local_tombstones_| as well if it has been locally deleted. } -void SyncedBookmarkTracker::UpdateServerVersion(const std::string& sync_id, +void SyncedBookmarkTracker::UpdateServerVersion(const Entity* entity, int64_t server_version) { - Entity* entity = GetMutableEntityForSyncId(sync_id); DCHECK(entity); - entity->metadata()->set_server_version(server_version); + AsMutableEntity(entity)->metadata()->set_server_version(server_version); } -void SyncedBookmarkTracker::PopulateFinalGuid(const std::string& sync_id, +void SyncedBookmarkTracker::PopulateFinalGuid(const Entity* entity, const std::string& guid) { - Entity* entity = GetMutableEntityForSyncId(sync_id); DCHECK(entity); - entity->set_final_guid(guid); + AsMutableEntity(entity)->set_final_guid(guid); } -void SyncedBookmarkTracker::MarkCommitMayHaveStarted( - const std::string& sync_id) { - Entity* entity = GetMutableEntityForSyncId(sync_id); +void SyncedBookmarkTracker::MarkCommitMayHaveStarted(const Entity* entity) { DCHECK(entity); - entity->set_commit_may_have_started(true); + AsMutableEntity(entity)->set_commit_may_have_started(true); } -void SyncedBookmarkTracker::MarkDeleted(const std::string& sync_id) { - Entity* entity = GetMutableEntityForSyncId(sync_id); +void SyncedBookmarkTracker::MarkDeleted(const Entity* entity) { DCHECK(entity); DCHECK(!entity->metadata()->is_deleted()); DCHECK(entity->bookmark_node()); DCHECK_EQ(1U, bookmark_node_to_entities_map_.count(entity->bookmark_node())); - entity->metadata()->set_is_deleted(true); + Entity* mutable_entity = AsMutableEntity(entity); + mutable_entity->metadata()->set_is_deleted(true); // Clear all references to the deleted bookmark node. - bookmark_node_to_entities_map_.erase(entity->bookmark_node()); - entity->clear_bookmark_node(); + bookmark_node_to_entities_map_.erase(mutable_entity->bookmark_node()); + mutable_entity->clear_bookmark_node(); // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. // Should be removed after figuring out the reason for the crash. CHECK_EQ(0, std::count(ordered_local_tombstones_.begin(), ordered_local_tombstones_.end(), entity)); - ordered_local_tombstones_.push_back(entity); + ordered_local_tombstones_.push_back(mutable_entity); } -void SyncedBookmarkTracker::Remove(const std::string& sync_id) { - const Entity* entity = GetEntityForSyncId(sync_id); +void SyncedBookmarkTracker::Remove(const Entity* entity) { DCHECK(entity); // TODO(rushans): erase only if entity is not a tombstone. if (entity->bookmark_node()) { @@ -310,19 +313,14 @@ bookmark_node_to_entities_map_.erase(entity->bookmark_node()); base::Erase(ordered_local_tombstones_, entity); - sync_id_to_entities_map_.erase(sync_id); + sync_id_to_entities_map_.erase(entity->metadata()->server_id()); } -void SyncedBookmarkTracker::IncrementSequenceNumber( - const std::string& sync_id) { - // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. - // Should be switched to a DCHECK after figuring out the reason for the crash. - CHECK_NE(0U, sync_id_to_entities_map_.count(sync_id)); - Entity* entity = GetMutableEntityForSyncId(sync_id); +void SyncedBookmarkTracker::IncrementSequenceNumber(const Entity* entity) { DCHECK(entity); // TODO(crbug.com/516866): Update base hash specifics here if the entity is // not already out of sync. - entity->metadata()->set_sequence_number( + AsMutableEntity(entity)->metadata()->set_sequence_number( entity->metadata()->sequence_number() + 1); } @@ -611,43 +609,45 @@ } void SyncedBookmarkTracker::UpdateUponCommitResponse( - const std::string& old_id, - const std::string& new_id, - int64_t acked_sequence_number, - int64_t server_version) { + const Entity* entity, + const std::string& sync_id, + int64_t server_version, + int64_t acked_sequence_number) { // TODO(crbug.com/516866): Update specifics if we decide to keep it. - Entity* entity = GetMutableEntityForSyncId(old_id); - if (!entity) { - DLOG(WARNING) << "Trying to update a non existing entity."; - return; - } + DCHECK(entity); - entity->metadata()->set_acked_sequence_number(acked_sequence_number); - entity->metadata()->set_server_version(server_version); + Entity* mutable_entity = AsMutableEntity(entity); + mutable_entity->metadata()->set_acked_sequence_number(acked_sequence_number); + mutable_entity->metadata()->set_server_version(server_version); // If there are no pending commits, remove tombstones. - if (!entity->IsUnsynced() && entity->metadata()->is_deleted()) { - Remove(old_id); + if (!mutable_entity->IsUnsynced() && + mutable_entity->metadata()->is_deleted()) { + Remove(mutable_entity); return; } - UpdateSyncForLocalCreationIfNeeded(old_id, new_id); + UpdateSyncIdForLocalCreationIfNeeded(mutable_entity, sync_id); } -void SyncedBookmarkTracker::UpdateSyncForLocalCreationIfNeeded( - const std::string& old_id, - const std::string& new_id) { - if (old_id == new_id) { +void SyncedBookmarkTracker::UpdateSyncIdForLocalCreationIfNeeded( + const Entity* entity, + const std::string& sync_id) { + DCHECK(entity); + + const std::string old_id = entity->metadata()->server_id(); + if (old_id == sync_id) { return; } // TODO(crbug.com/516866): The below CHECK is added to debug some crashes. // Should be removed after figuring out the reason for the crash. CHECK_EQ(1U, sync_id_to_entities_map_.count(old_id)); - CHECK_EQ(0U, sync_id_to_entities_map_.count(new_id)); + CHECK_EQ(0U, sync_id_to_entities_map_.count(sync_id)); - std::unique_ptr<Entity> entity = + std::unique_ptr<Entity> owned_entity = std::move(sync_id_to_entities_map_.at(old_id)); - entity->metadata()->set_server_id(new_id); - sync_id_to_entities_map_[new_id] = std::move(entity); + DCHECK_EQ(entity, owned_entity.get()); + owned_entity->metadata()->set_server_id(sync_id); + sync_id_to_entities_map_[sync_id] = std::move(owned_entity); sync_id_to_entities_map_.erase(old_id); } @@ -667,10 +667,9 @@ bookmark_node_to_entities_map_.erase(old_node); } -void SyncedBookmarkTracker::AckSequenceNumber(const std::string& sync_id) { - Entity* entity = GetMutableEntityForSyncId(sync_id); +void SyncedBookmarkTracker::AckSequenceNumber(const Entity* entity) { DCHECK(entity); - entity->metadata()->set_acked_sequence_number( + AsMutableEntity(entity)->metadata()->set_acked_sequence_number( entity->metadata()->sequence_number()); }
diff --git a/components/sync_bookmarks/synced_bookmark_tracker.h b/components/sync_bookmarks/synced_bookmark_tracker.h index 7f98d7b..e098f6f 100644 --- a/components/sync_bookmarks/synced_bookmark_tracker.h +++ b/components/sync_bookmarks/synced_bookmark_tracker.h
@@ -148,45 +148,48 @@ const SyncedBookmarkTracker::Entity* GetEntityForBookmarkNode( const bookmarks::BookmarkNode* node) const; - // Adds an entry for the |sync_id| and the corresponding local bookmark node - // and metadata in |sync_id_to_entities_map_|. - void Add(const std::string& sync_id, - const bookmarks::BookmarkNode* bookmark_node, - int64_t server_version, - base::Time creation_time, - const sync_pb::UniquePosition& unique_position, - const sync_pb::EntitySpecifics& specifics); + // Starts tracking local bookmark |bookmark_node|, which must not be tracked + // beforehand. The rest of the arguments represent the initial metadata. + // Returns the tracked entity. + const Entity* Add(const bookmarks::BookmarkNode* bookmark_node, + const std::string& sync_id, + int64_t server_version, + base::Time creation_time, + const sync_pb::UniquePosition& unique_position, + const sync_pb::EntitySpecifics& specifics); - // Updates an existing entry for the |sync_id| and the corresponding metadata - // in |sync_id_to_entities_map_|. - void Update(const std::string& sync_id, + // Updates the sync metadata for a tracked entity. |entity| must be owned by + // this tracker. + void Update(const Entity* entity, int64_t server_version, base::Time modification_time, const sync_pb::UniquePosition& unique_position, const sync_pb::EntitySpecifics& specifics); - // Updates the server version of an existing entry for the |sync_id|. - void UpdateServerVersion(const std::string& sync_id, int64_t server_version); + // Updates the server version of an existing entity. |entity| must be owned by + // this tracker. + void UpdateServerVersion(const Entity* entity, int64_t server_version); - // Populates a bookmark's final GUID. - void PopulateFinalGuid(const std::string& sync_id, const std::string& guid); + // Populates a bookmark's final GUID. |entity| must be owned by this tracker. + void PopulateFinalGuid(const Entity* entity, const std::string& guid); - // Marks an existing entry for |sync_id| that a commit request might have been - // sent to the server. - void MarkCommitMayHaveStarted(const std::string& sync_id); + // Marks an existing entry that a commit request might have been sent to the + // server. |entity| must be owned by this tracker. + void MarkCommitMayHaveStarted(const Entity* entity); // This class maintains the order of calls to this method and the same order // is guaranteed when returning local changes in // GetEntitiesWithLocalChanges() as well as in BuildBookmarkModelMetadata(). - void MarkDeleted(const std::string& sync_id); + // |entity| must be owned by this tracker. + void MarkDeleted(const Entity* entity); - // Removes the entry coressponding to the |sync_id| from - // |sync_id_to_entities_map_|. - void Remove(const std::string& sync_id); + // Untracks an entity, which also invalidates the pointer. |entity| must be + // owned by this tracker. + void Remove(const Entity* entity); - // Increment sequence number in the metadata for the entity with |sync_id|. - // Tracker must contain a non-tombstone entity with server id = |sync_id|. - void IncrementSequenceNumber(const std::string& sync_id); + // Increment sequence number in the metadata for |entity|. |entity| must be + // owned by this tracker. + void IncrementSequenceNumber(const Entity* entity); sync_pb::BookmarkModelMetadata BuildBookmarkModelMetadata() const; @@ -206,30 +209,30 @@ std::vector<const Entity*> GetEntitiesWithLocalChanges( size_t max_entries) const; - // Updates the tracker after receiving the commit response. |old_id| should be - // equal to |new_id| for all updates except the initial commit, where the - // temporary client-generated ID will be overriden by the server-provided - // final ID. In which case |sync_id_to_entities_map_| will be updated - // accordingly. - void UpdateUponCommitResponse(const std::string& old_id, - const std::string& new_id, - int64_t acked_sequence_number, - int64_t server_version); + // Updates the tracker after receiving the commit response. |sync_id| should + // match the already tracked sync ID for |entity|, with the exception of the + // initial commit, where the temporary client-generated ID will be overridden + // by the server-provided final ID. |entity| must be owned by this tracker. + void UpdateUponCommitResponse(const Entity* entity, + const std::string& sync_id, + int64_t server_version, + int64_t acked_sequence_number); - // Informs the tracker that the sync id for an entity has changed. It updates - // the internal state of the tracker accordingly. - void UpdateSyncForLocalCreationIfNeeded(const std::string& old_id, - const std::string& new_id); + // Informs the tracker that the sync ID for |entity| has changed. It updates + // the internal state of the tracker accordingly. |entity| must be owned by + // this tracker. + void UpdateSyncIdForLocalCreationIfNeeded(const Entity* entity, + const std::string& sync_id); // Informs the tracker that a BookmarkNode has been replaced. It updates // the internal state of the tracker accordingly. void UpdateBookmarkNodePointer(const bookmarks::BookmarkNode* old_node, const bookmarks::BookmarkNode* new_node); - // Set the value of |EntityMetadata.acked_sequence_number| in the entity with - // |sync_id| to be equal to |EntityMetadata.sequence_number| such that it is - // not returned in GetEntitiesWithLocalChanges(). - void AckSequenceNumber(const std::string& sync_id); + // Set the value of |EntityMetadata.acked_sequence_number| for |entity| to be + // equal to |EntityMetadata.sequence_number| such that it is not returned in + // GetEntitiesWithLocalChanges(). |entity| must be owned by this tracker. + void AckSequenceNumber(const Entity* entity); // Whether the tracker is empty or not. bool IsEmpty() const; @@ -281,8 +284,10 @@ const bookmarks::BookmarkModel* model, sync_pb::BookmarkModelMetadata model_metadata); - // Returns null if no entity is found. - Entity* GetMutableEntityForSyncId(const std::string& sync_id); + // Conceptually, find a tracked entity that matches |entity| and returns a + // non-const pointer of it. The actual implementation is a const_cast. + // |entity| must be owned by this tracker. + Entity* AsMutableEntity(const Entity* entity); // Reorders |entities| that represents local non-deletions such that parent // creation/update is before child creation/update. Returns the ordered list.
diff --git a/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc b/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc index 6285a5e2..d0e3a09 100644 --- a/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc +++ b/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc
@@ -110,10 +110,9 @@ GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), kUrl); - tracker->Add(kSyncId, &node, kServerVersion, kCreationTime, - unique_position.ToProto(), specifics); const SyncedBookmarkTracker::Entity* entity = - tracker->GetEntityForSyncId(kSyncId); + tracker->Add(&node, kSyncId, kServerVersion, kCreationTime, + unique_position.ToProto(), specifics); ASSERT_THAT(entity, NotNull()); EXPECT_THAT(entity->bookmark_node(), Eq(&node)); EXPECT_THAT(entity->metadata()->server_id(), Eq(kSyncId)); @@ -144,10 +143,12 @@ const sync_pb::EntitySpecifics specifics = GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), GURL()); - tracker->Add(kSyncId, &node, kServerVersion, kModificationTime, - unique_position, specifics); - ASSERT_THAT(tracker->GetEntityForSyncId(kSyncId), NotNull()); - tracker->Remove(kSyncId); + const SyncedBookmarkTracker::Entity* entity = + tracker->Add(&node, kSyncId, kServerVersion, kModificationTime, + unique_position, specifics); + ASSERT_THAT(entity, NotNull()); + ASSERT_THAT(tracker->GetEntityForSyncId(kSyncId), Eq(entity)); + tracker->Remove(entity); EXPECT_THAT(tracker->GetEntityForSyncId(kSyncId), IsNull()); } @@ -169,7 +170,7 @@ GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), kUrl); - tracker->Add(kSyncId, &node, kServerVersion, kCreationTime, + tracker->Add(&node, kSyncId, kServerVersion, kCreationTime, unique_position.ToProto(), specifics); sync_pb::BookmarkModelMetadata bookmark_model_metadata = @@ -195,11 +196,12 @@ const sync_pb::EntitySpecifics specifics = GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), GURL()); - tracker->Add(kSyncId, &node, kServerVersion, kModificationTime, - unique_position, specifics); + const SyncedBookmarkTracker::Entity* entity = + tracker->Add(&node, kSyncId, kServerVersion, kModificationTime, + unique_position, specifics); EXPECT_THAT(tracker->HasLocalChanges(), Eq(false)); - tracker->IncrementSequenceNumber(kSyncId); + tracker->IncrementSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(true)); // TODO(crbug.com/516866): Test HasLocalChanges after submitting commit // request in a separate test probably. @@ -218,23 +220,24 @@ const sync_pb::EntitySpecifics specifics = GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), GURL()); - tracker->Add(kSyncId, &node, kServerVersion, kModificationTime, - unique_position, specifics); + const SyncedBookmarkTracker::Entity* entity = + tracker->Add(&node, kSyncId, kServerVersion, kModificationTime, + unique_position, specifics); // Test simple scenario of ack'ing an incrememented sequence number. EXPECT_THAT(tracker->HasLocalChanges(), Eq(false)); - tracker->IncrementSequenceNumber(kSyncId); + tracker->IncrementSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(true)); - tracker->AckSequenceNumber(kSyncId); + tracker->AckSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(false)); // Test ack'ing of a multiple times incremented sequence number. - tracker->IncrementSequenceNumber(kSyncId); + tracker->IncrementSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(true)); - tracker->IncrementSequenceNumber(kSyncId); - tracker->IncrementSequenceNumber(kSyncId); + tracker->IncrementSequenceNumber(entity); + tracker->IncrementSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(true)); - tracker->AckSequenceNumber(kSyncId); + tracker->AckSequenceNumber(entity); EXPECT_THAT(tracker->HasLocalChanges(), Eq(false)); } @@ -253,18 +256,23 @@ const sync_pb::EntitySpecifics specifics = GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(kId, base::GenerateGUID(), GURL()); - tracker->Add(kSyncId, &node, kServerVersion, kModificationTime, - unique_position, specifics); - ASSERT_THAT(tracker->GetEntityForSyncId(kSyncId), NotNull()); - // Receive a commit response with a changed id. - tracker->UpdateUponCommitResponse( - kSyncId, kNewSyncId, /*acked_sequence_number=*/1, kNewServerVersion); - // Old id shouldn't be there. - EXPECT_THAT(tracker->GetEntityForSyncId(kSyncId), IsNull()); - const SyncedBookmarkTracker::Entity* entity = - tracker->GetEntityForSyncId(kNewSyncId); + tracker->Add(&node, kSyncId, kServerVersion, kModificationTime, + unique_position, specifics); ASSERT_THAT(entity, NotNull()); + + // Initially only the old ID should be tracked. + ASSERT_THAT(tracker->GetEntityForSyncId(kSyncId), Eq(entity)); + ASSERT_THAT(tracker->GetEntityForSyncId(kNewSyncId), IsNull()); + + // Receive a commit response with a changed id. + tracker->UpdateUponCommitResponse(entity, kNewSyncId, kNewServerVersion, + /*acked_sequence_number=*/1); + + // Old id shouldn't be there, but the new one should. + EXPECT_THAT(tracker->GetEntityForSyncId(kSyncId), IsNull()); + EXPECT_THAT(tracker->GetEntityForSyncId(kNewSyncId), Eq(entity)); + EXPECT_THAT(entity->metadata()->server_id(), Eq(kNewSyncId)); EXPECT_THAT(entity->bookmark_node(), Eq(&node)); EXPECT_THAT(entity->metadata()->server_version(), Eq(kNewServerVersion)); @@ -284,18 +292,18 @@ GenerateSpecifics(/*title=*/std::string(), /*url=*/std::string()); bookmarks::BookmarkNode node(/*id=*/1, base::GenerateGUID(), GURL()); // Track a sync entity. - tracker->Add(kSyncId, &node, kServerVersion, kModificationTime, - unique_position, specifics); - - ASSERT_THAT(tracker->GetEntityForSyncId(kSyncId), NotNull()); - // Update the sync id. - tracker->UpdateSyncForLocalCreationIfNeeded(kSyncId, kNewSyncId); - // Old id shouldn't be there. - EXPECT_THAT(tracker->GetEntityForSyncId(kSyncId), IsNull()); - const SyncedBookmarkTracker::Entity* entity = - tracker->GetEntityForSyncId(kNewSyncId); + tracker->Add(&node, kSyncId, kServerVersion, kModificationTime, + unique_position, specifics); + ASSERT_THAT(entity, NotNull()); + // Update the sync id. + tracker->UpdateSyncIdForLocalCreationIfNeeded(entity, kNewSyncId); + + // Old id shouldn't be there, but the new one should. + EXPECT_THAT(tracker->GetEntityForSyncId(kSyncId), IsNull()); + EXPECT_THAT(tracker->GetEntityForSyncId(kNewSyncId), Eq(entity)); + EXPECT_THAT(entity->metadata()->server_id(), Eq(kNewSyncId)); EXPECT_THAT(entity->bookmark_node(), Eq(&node)); EXPECT_THAT(entity->metadata()->server_version(), Eq(kServerVersion)); @@ -406,9 +414,9 @@ ASSERT_THAT(tracker, NotNull()); // Mark entities deleted in that order kId2, kId4, kId1 - tracker->MarkDeleted(kId2); - tracker->MarkDeleted(kId4); - tracker->MarkDeleted(kId1); + tracker->MarkDeleted(tracker->GetEntityForSyncId(kId2)); + tracker->MarkDeleted(tracker->GetEntityForSyncId(kId4)); + tracker->MarkDeleted(tracker->GetEntityForSyncId(kId1)); const sync_pb::BookmarkModelMetadata output_model_metadata = tracker->BuildBookmarkModelMetadata(); @@ -480,10 +488,10 @@ // Mark the entities that they have local changes. (in shuffled order just to // verify the tracker doesn't simply maintain the order of updates similar to // with deletions). - tracker->IncrementSequenceNumber(kId3); - tracker->IncrementSequenceNumber(kId1); - tracker->IncrementSequenceNumber(kId2); - tracker->IncrementSequenceNumber(kId0); + tracker->IncrementSequenceNumber(tracker->GetEntityForSyncId(kId3)); + tracker->IncrementSequenceNumber(tracker->GetEntityForSyncId(kId1)); + tracker->IncrementSequenceNumber(tracker->GetEntityForSyncId(kId2)); + tracker->IncrementSequenceNumber(tracker->GetEntityForSyncId(kId0)); std::vector<const SyncedBookmarkTracker::Entity*> entities_with_local_change = tracker->GetEntitiesWithLocalChanges(kMaxEntries);
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc index d9bc455..bd5b3e0 100644 --- a/components/viz/service/display/gl_renderer.cc +++ b/components/viz/service/display/gl_renderer.cc
@@ -373,7 +373,6 @@ const auto& context_caps = output_surface_->context_provider()->ContextCapabilities(); - DCHECK(!context_caps.iosurface || context_caps.texture_rectangle); use_discard_framebuffer_ = context_caps.discard_framebuffer; use_sync_query_ = context_caps.sync_query;
diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc index dcc3095..5738a22 100644 --- a/components/viz/service/main/viz_main_impl.cc +++ b/components/viz/service/main/viz_main_impl.cc
@@ -19,7 +19,6 @@ #include "components/viz/service/gl/gpu_service_impl.h" #include "gpu/command_buffer/common/activity_flags.h" #include "gpu/config/gpu_finch_features.h" -#include "gpu/ipc/gpu_in_process_thread_service.h" #include "gpu/ipc/service/gpu_init.h" #include "gpu/ipc/service/gpu_watchdog_thread.h" #include "media/gpu/buildflags.h" @@ -235,15 +234,12 @@ // the same signature. https://crbug.com/928845 CHECK(!task_executor_); task_executor_ = std::make_unique<gpu::GpuInProcessThreadService>( - gpu_thread_task_runner_, gpu_service_->GetGpuScheduler(), + this, gpu_thread_task_runner_, gpu_service_->GetGpuScheduler(), gpu_service_->sync_point_manager(), gpu_service_->mailbox_manager(), - gpu_service_->share_group(), format, gpu_service_->gpu_feature_info(), + format, gpu_service_->gpu_feature_info(), gpu_service_->gpu_channel_manager()->gpu_preferences(), gpu_service_->shared_image_manager(), - gpu_service_->gpu_channel_manager()->program_cache(), - // Unretained is safe since |gpu_service_| outlives |task_executor_|. - base::BindRepeating(&GpuServiceImpl::GetContextState, - base::Unretained(gpu_service_.get()))); + gpu_service_->gpu_channel_manager()->program_cache()); viz_compositor_thread_runner_->CreateFrameSinkManager( std::move(params), task_executor_.get(), gpu_service_.get()); @@ -255,6 +251,14 @@ #endif } +scoped_refptr<gpu::SharedContextState> VizMainImpl::GetSharedContextState() { + return gpu_service_->GetContextState(); +} + +scoped_refptr<gl::GLShareGroup> VizMainImpl::GetShareGroup() { + return gpu_service_->share_group(); +} + void VizMainImpl::ExitProcess(bool immediately) { DCHECK(gpu_thread_task_runner_->BelongsToCurrentThread());
diff --git a/components/viz/service/main/viz_main_impl.h b/components/viz/service/main/viz_main_impl.h index 9f1e4ff..265fea4 100644 --- a/components/viz/service/main/viz_main_impl.h +++ b/components/viz/service/main/viz_main_impl.h
@@ -14,6 +14,7 @@ #include "build/build_config.h" #include "components/discardable_memory/client/client_discardable_shared_memory_manager.h" #include "components/viz/service/main/viz_compositor_thread_runner_impl.h" +#include "gpu/ipc/gpu_in_process_thread_service.h" #include "gpu/ipc/in_process_command_buffer.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" @@ -41,7 +42,8 @@ namespace viz { class GpuServiceImpl; -class VizMainImpl : public mojom::VizMain { +class VizMainImpl : public mojom::VizMain, + public gpu::GpuInProcessThreadServiceDelegate { public: struct LogMessage { int severity; @@ -120,6 +122,10 @@ void CreateFrameSinkManager(mojom::FrameSinkManagerParamsPtr params) override; void CreateVizDevTools(mojom::VizDevToolsParamsPtr params) override; + // gpu::GpuInProcessThreadServiceDelegate implementation: + scoped_refptr<gpu::SharedContextState> GetSharedContextState() override; + scoped_refptr<gl::GLShareGroup> GetShareGroup() override; + GpuServiceImpl* gpu_service() { return gpu_service_.get(); } const GpuServiceImpl* gpu_service() const { return gpu_service_.get(); }
diff --git a/components/viz/test/DEPS b/components/viz/test/DEPS index 2fbc85e..b74ac3b 100644 --- a/components/viz/test/DEPS +++ b/components/viz/test/DEPS
@@ -49,13 +49,13 @@ ], "test_gpu_service_holder\.h": [ + "+gpu/ipc/gpu_in_process_thread_service.h", "+gpu/vulkan/buildflags.h", ], "test_gpu_service_holder\.cc": [ "+gpu/command_buffer/service/service_utils.h", "+gpu/config", - "+gpu/ipc/gpu_in_process_thread_service.h", "+gpu/ipc/service/gpu_watchdog_thread.h", "+gpu/vulkan/init/vulkan_factory.h", "+gpu/vulkan/vulkan_implementation.h",
diff --git a/components/viz/test/test_gpu_service_holder.cc b/components/viz/test/test_gpu_service_holder.cc index 506c31f..cf5e509 100644 --- a/components/viz/test/test_gpu_service_holder.cc +++ b/components/viz/test/test_gpu_service_holder.cc
@@ -24,7 +24,6 @@ #include "gpu/config/gpu_info_collector.h" #include "gpu/config/gpu_preferences.h" #include "gpu/config/gpu_util.h" -#include "gpu/ipc/gpu_in_process_thread_service.h" #include "gpu/ipc/service/gpu_watchdog_thread.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "testing/gtest/include/gtest/gtest.h" @@ -162,6 +161,15 @@ io_thread_.Stop(); } +scoped_refptr<gpu::SharedContextState> +TestGpuServiceHolder::GetSharedContextState() { + return gpu_service_->GetContextState(); +} + +scoped_refptr<gl::GLShareGroup> TestGpuServiceHolder::GetShareGroup() { + return gpu_service_->share_group(); +} + void TestGpuServiceHolder::ScheduleGpuTask(base::OnceClosure callback) { DCHECK(gpu_task_sequence_); gpu_task_sequence_->ScheduleTask(std::move(callback), {}); @@ -236,19 +244,15 @@ /*shutdown_event=*/nullptr); task_executor_ = std::make_unique<gpu::GpuInProcessThreadService>( - gpu_thread_.task_runner(), gpu_service_->GetGpuScheduler(), + this, gpu_thread_.task_runner(), gpu_service_->GetGpuScheduler(), gpu_service_->sync_point_manager(), gpu_service_->mailbox_manager(), - gpu_service_->share_group(), gpu_service_->gpu_channel_manager() ->default_offscreen_surface() ->GetFormat(), gpu_service_->gpu_feature_info(), gpu_service_->gpu_channel_manager()->gpu_preferences(), gpu_service_->shared_image_manager(), - gpu_service_->gpu_channel_manager()->program_cache(), - // Unretained is safe since |gpu_service_| outlives |task_executor_|. - base::BindRepeating(&GpuServiceImpl::GetContextState, - base::Unretained(gpu_service_.get()))); + gpu_service_->gpu_channel_manager()->program_cache()); // TODO(weiliangc): Since SkiaOutputSurface should not depend on command // buffer, the |gpu_task_sequence_| should be coming from
diff --git a/components/viz/test/test_gpu_service_holder.h b/components/viz/test/test_gpu_service_holder.h index d69abf2..612d6ae 100644 --- a/components/viz/test/test_gpu_service_holder.h +++ b/components/viz/test/test_gpu_service_holder.h
@@ -10,6 +10,7 @@ #include "base/macros.h" #include "base/memory/scoped_refptr.h" #include "base/threading/thread.h" +#include "gpu/ipc/gpu_in_process_thread_service.h" #include "gpu/vulkan/buildflags.h" namespace gpu { @@ -32,7 +33,7 @@ // Starts GPU Main and IO threads, and creates a GpuServiceImpl that can be used // to create a SkiaOutputSurfaceImpl. This isn't a full GPU service // implementation and should only be used in tests. -class TestGpuServiceHolder { +class TestGpuServiceHolder : public gpu::GpuInProcessThreadServiceDelegate { public: class ScopedResetter { public: @@ -62,7 +63,7 @@ static void DoNotResetOnTestExit(); explicit TestGpuServiceHolder(const gpu::GpuPreferences& preferences); - ~TestGpuServiceHolder(); + ~TestGpuServiceHolder() override; scoped_refptr<base::SingleThreadTaskRunner> gpu_thread_task_runner() { return gpu_thread_.task_runner(); @@ -86,6 +87,10 @@ #endif } + // gpu::GpuInProcessThreadServiceDelegate implementation: + scoped_refptr<gpu::SharedContextState> GetSharedContextState() override; + scoped_refptr<gl::GLShareGroup> GetShareGroup() override; + private: friend struct base::DefaultSingletonTraits<TestGpuServiceHolder>;
diff --git a/content/browser/cross_origin_opener_policy_browsertest.cc b/content/browser/cross_origin_opener_policy_browsertest.cc index 8b1fe2f..670f735b 100644 --- a/content/browser/cross_origin_opener_policy_browsertest.cc +++ b/content/browser/cross_origin_opener_policy_browsertest.cc
@@ -274,6 +274,7 @@ GURL coop_page(embedded_test_server()->GetURL( "a.com", "/cross-origin-opener-policy_same-origin.html")); + EXPECT_TRUE(NavigateToURL(shell(), non_coop_page)); scoped_refptr<SiteInstance> initial_site_instance( current_frame_host()->GetSiteInstance()); @@ -307,8 +308,417 @@ EXPECT_EQ(iframe_rfh->GetLastCommittedURL(), iframe_navigation_url); EXPECT_EQ(iframe_rfh->GetSiteInstance(), non_coop_iframe_site_instance); + // TODO(pmeuleman, ahemery): Don't store COOP on subframes as it will not be + // used anyway. EXPECT_EQ(iframe_rfh->cross_origin_opener_policy(), network::mojom::CrossOriginOpenerPolicy::kSameOrigin); } +IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, + NonCoopPageCrashIntoCoop) { + IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); + GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); + GURL coop_page(https_server()->GetURL( + "a.com", "/cross-origin-opener-policy_same-origin.html")); + + // Test a crash before the navigation. + { + // Navigate to a non coop page. + EXPECT_TRUE(NavigateToURL(shell(), non_coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + GURL non_coop_cross_site_page( + https_server()->GetURL("b.com", "/title1.html")); + OpenPopup(current_frame_host(), non_coop_cross_site_page, ""); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + EXPECT_FALSE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kSameOrigin); + + // The COOP page should no longer have any RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } + + // Test a crash during the navigation. + { + // Navigate to a non coop page. + EXPECT_TRUE(NavigateToURL(shell(), non_coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + GURL non_coop_cross_site_page( + https_server()->GetURL("b.com", "/title1.html")); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + OpenPopup(current_frame_host(), non_coop_cross_site_page, ""); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Start navigating to a COOP page. + TestNavigationManager coop_navigation(web_contents(), coop_page); + shell()->LoadURL(coop_page); + EXPECT_TRUE(coop_navigation.WaitForRequestStart()); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Finish the navigation to the COOP page. + coop_navigation.WaitForNavigationFinished(); + EXPECT_TRUE(coop_navigation.was_successful()); + EXPECT_FALSE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kSameOrigin); + + // The COOP page should no longer have any RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } +} + +IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, + CoopPageCrashIntoNonCoop) { + IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); + GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); + GURL coop_page(https_server()->GetURL( + "a.com", "/cross-origin-opener-policy_same-origin.html")); + + // Test a crash before the navigation. + { + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + Shell* popup_shell = OpenPopup(current_frame_host(), coop_page, ""); + GURL cross_site_iframe(https_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager iframe_navigation(popup_shell->web_contents(), + cross_site_iframe); + EXPECT_TRUE(ExecJs(popup_shell->web_contents(), + "var iframe = document.createElement('iframe');" + "iframe.src = '" + + cross_site_iframe.spec() + + "';" + "document.body.appendChild(iframe);")); + iframe_navigation.WaitForNavigationFinished(); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Navigate to a non COOP page. + EXPECT_TRUE(NavigateToURL(shell(), non_coop_page)); + EXPECT_FALSE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kUnsafeNone); + + // The non COOP page should no longer have any RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } + + // Test a crash during the navigation. + { + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + Shell* popup_shell = OpenPopup(current_frame_host(), coop_page, ""); + GURL cross_site_iframe(https_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager iframe_navigation(popup_shell->web_contents(), + cross_site_iframe); + EXPECT_TRUE(ExecJs(popup_shell->web_contents(), + "var iframe = document.createElement('iframe');" + "iframe.src = '" + + cross_site_iframe.spec() + + "';" + "document.body.appendChild(iframe);")); + iframe_navigation.WaitForNavigationFinished(); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Start navigating to a non COOP page. + TestNavigationManager non_coop_navigation(web_contents(), non_coop_page); + shell()->LoadURL(non_coop_page); + EXPECT_TRUE(non_coop_navigation.WaitForRequestStart()); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Finish the navigation to the non COOP page. + non_coop_navigation.WaitForNavigationFinished(); + EXPECT_TRUE(non_coop_navigation.was_successful()); + EXPECT_FALSE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kUnsafeNone); + + // The non COOP page should no longer have any RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } +} + +IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, + CoopPageCrashIntoCoop) { + IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); + GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); + GURL coop_page(https_server()->GetURL( + "a.com", "/cross-origin-opener-policy_same-origin.html")); + + // Test a crash before the navigation. + { + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + Shell* popup_shell = OpenPopup(current_frame_host(), coop_page, ""); + GURL cross_site_iframe(https_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager iframe_navigation(popup_shell->web_contents(), + cross_site_iframe); + EXPECT_TRUE(ExecJs(popup_shell->web_contents(), + "var iframe = document.createElement('iframe');" + "iframe.src = '" + + cross_site_iframe.spec() + + "';" + "document.body.appendChild(iframe);")); + iframe_navigation.WaitForNavigationFinished(); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + EXPECT_TRUE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kSameOrigin); + + // TODO(pmeuleman): The COOP page should still have RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } + + // Test a crash during the navigation. + { + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + Shell* popup_shell = OpenPopup(current_frame_host(), coop_page, ""); + GURL cross_site_iframe(https_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager iframe_navigation(popup_shell->web_contents(), + cross_site_iframe); + EXPECT_TRUE(ExecJs(popup_shell->web_contents(), + "var iframe = document.createElement('iframe');" + "iframe.src = '" + + cross_site_iframe.spec() + + "';" + "document.body.appendChild(iframe);")); + iframe_navigation.WaitForNavigationFinished(); + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 1u); + + // Start navigating to a COOP page. + TestNavigationManager coop_navigation(web_contents(), coop_page); + shell()->LoadURL(coop_page); + EXPECT_TRUE(coop_navigation.WaitForRequestStart()); + + // Simulate the renderer process crashing. + RenderProcessHost* process = initial_site_instance->GetProcess(); + ASSERT_TRUE(process); + std::unique_ptr<RenderProcessHostWatcher> crash_observer( + new RenderProcessHostWatcher( + process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT)); + process->Shutdown(0); + crash_observer->Wait(); + crash_observer.reset(); + + // Finish the navigation to the COOP page. + coop_navigation.WaitForNavigationFinished(); + EXPECT_TRUE(coop_navigation.was_successful()); + EXPECT_TRUE(current_frame_host()->GetSiteInstance()->IsRelatedSiteInstance( + initial_site_instance.get())); + EXPECT_EQ(current_frame_host()->cross_origin_opener_policy(), + network::mojom::CrossOriginOpenerPolicy::kSameOrigin); + + // TODO(pmeuleman): The COOP page should still have RenderFrameHostProxies. + EXPECT_EQ(web_contents() + ->GetFrameTree() + ->root() + ->render_manager() + ->GetProxyCount(), + 0u); + } +} + +IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, + ProxiesAreRemovedWhenCrossingCoopBoundary) { + GURL non_coop_page(https_server()->GetURL("a.com", "/title1.html")); + GURL coop_page(https_server()->GetURL( + "a.com", "/cross-origin-opener-policy_same-origin.html")); + + RenderFrameHostManager* main_window_rfhm = + web_contents()->GetFrameTree()->root()->render_manager(); + EXPECT_TRUE(NavigateToURL(shell(), non_coop_page)); + EXPECT_EQ(main_window_rfhm->GetProxyCount(), 0u); + + Shell* popup_shell = OpenPopup(shell(), coop_page, ""); + + // The main frame should not have the popup referencing it. + EXPECT_EQ(main_window_rfhm->GetProxyCount(), 0u); + + // It should not have any other related SiteInstance. + EXPECT_EQ( + current_frame_host()->GetSiteInstance()->GetRelatedActiveContentsCount(), + 1u); + + // The popup should not have the main frame referencing it. + FrameTreeNode* popup = + static_cast<WebContentsImpl*>(popup_shell->web_contents()) + ->GetFrameTree() + ->root(); + RenderFrameHostManager* popup_rfhm = popup->render_manager(); + EXPECT_EQ(popup_rfhm->GetProxyCount(), 0u); + + // The popup should have an empty opener. + EXPECT_FALSE(popup->opener()); +} + +IN_PROC_BROWSER_TEST_F(CrossOriginOpenerPolicyBrowserTest, + ProxiesAreKeptWhenNavigatingFromCoopToCoop) { + IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess()); + GURL coop_page(https_server()->GetURL( + "a.com", "/cross-origin-opener-policy_same-origin.html")); + + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + scoped_refptr<SiteInstance> initial_site_instance( + current_frame_host()->GetSiteInstance()); + + // Ensure it has a RenderFrameHostProxy for another cross-site page. + Shell* popup_shell = OpenPopup(current_frame_host(), coop_page, ""); + GURL cross_site_iframe(https_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager iframe_navigation(popup_shell->web_contents(), + cross_site_iframe); + EXPECT_TRUE(ExecJs(popup_shell->web_contents(), + "var iframe = document.createElement('iframe');" + "iframe.src = '" + + cross_site_iframe.spec() + + "';" + "document.body.appendChild(iframe);")); + iframe_navigation.WaitForNavigationFinished(); + EXPECT_EQ( + web_contents()->GetFrameTree()->root()->render_manager()->GetProxyCount(), + 1u); + + // Navigate to a COOP page. + EXPECT_TRUE(NavigateToURL(shell(), coop_page)); + + // The COOP page should still have a RenderFrameProxyHost. + EXPECT_EQ( + web_contents()->GetFrameTree()->root()->render_manager()->GetProxyCount(), + 1u); +} + } // namespace content
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc index 05ad8674..a803a8b9 100644 --- a/content/browser/frame_host/frame_tree.cc +++ b/content/browser/frame_host/frame_tree.cc
@@ -388,11 +388,6 @@ int32_t main_frame_routing_id, int32_t widget_routing_id, bool swapped_out) { - scoped_refptr<RenderViewHostImpl> existing_rvh = - GetRenderViewHost(site_instance); - if (existing_rvh) - return existing_rvh; - RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(RenderViewHostFactory::Create( site_instance, render_view_delegate_, render_widget_delegate_,
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc index 767fd31..c1bb496 100644 --- a/content/browser/frame_host/interstitial_page_impl.cc +++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -786,16 +786,14 @@ void InterstitialPageImpl::CreateNewWidget( int32_t render_process_id, int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) { + mojo::PendingRemote<mojom::Widget> widget) { NOTREACHED() << "InterstitialPage does not support showing drop-downs."; } void InterstitialPageImpl::CreateNewFullscreenWidget( int32_t render_process_id, int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) { + mojo::PendingRemote<mojom::Widget> widget) { NOTREACHED() << "InterstitialPage does not support showing full screen popups."; }
diff --git a/content/browser/frame_host/interstitial_page_impl.h b/content/browser/frame_host/interstitial_page_impl.h index a59c7ad..a2c6c16 100644 --- a/content/browser/frame_host/interstitial_page_impl.h +++ b/content/browser/frame_host/interstitial_page_impl.h
@@ -140,6 +140,13 @@ int context_id) override; void AudioContextPlaybackStopped(RenderFrameHost* host, int context_id) override; + void CreateNewWidget(int32_t render_process_id, + int32_t route_id, + mojo::PendingRemote<mojom::Widget> widget) override; + void CreateNewFullscreenWidget( + int32_t render_process_id, + int32_t route_id, + mojo::PendingRemote<mojom::Widget> widget) override; // RenderViewHostDelegate implementation: RenderViewHostDelegateView* GetDelegateView() override; @@ -151,14 +158,6 @@ int error_code) override; blink::mojom::RendererPreferences GetRendererPrefs( BrowserContext* browser_context) const override; - void CreateNewWidget(int32_t render_process_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; - void CreateNewFullscreenWidget(int32_t render_process_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; void ShowCreatedWidget(int process_id, int route_id, const gfx::Rect& initial_rect) override;
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc index cae391a..147bce2 100644 --- a/content/browser/frame_host/navigation_request.cc +++ b/content/browser/frame_host/navigation_request.cc
@@ -1572,6 +1572,16 @@ return; } + if (const auto blocked_reason = IsBlockedByCorp()) { + OnRequestFailedInternal(network::URLLoaderCompletionStatus(*blocked_reason), + false /* skip_throttles */, + base::nullopt /* error_page_content */, + false /* collapse_frame */); + // DO NOT ADD CODE after this. The previous call to + // OnRequestFailedInternal has destroyed the NavigationRequest. + return; + } + // For now, DevTools needs the POST data sent to the renderer process even if // it is no longer a POST after the redirect. if (redirect_info.new_method != "POST") @@ -1798,52 +1808,43 @@ } } + if (const auto blocked_reason = IsBlockedByCorp()) { + OnRequestFailedInternal(network::URLLoaderCompletionStatus(*blocked_reason), + false /* skip_throttles */, + base::nullopt /* error_page_content */, + false /* collapse_frame */); + // DO NOT ADD CODE after this. The previous call to + // OnRequestFailedInternal has destroyed the NavigationRequest. + return; + } + auto cross_origin_embedder_policy = response_head_->cross_origin_embedder_policy; if (base::FeatureList::IsEnabled(network::features::kCrossOriginIsolation)) { - // https://mikewest.github.io/corpp/#process-navigation-response. - if (GetParentFrame() && - cross_origin_embedder_policy.value == - network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp && - !common_params_->url.SchemeIsBlob() && - !common_params_->url.SchemeIs(url::kDataScheme)) { - // The CORP check for nested navigation. - if (base::Optional<network::BlockedByResponseReason> blocked_reason = - network::CrossOriginResourcePolicy::IsNavigationBlocked( - common_params_->url, redirect_chain_[0], - GetParentFrame()->GetLastCommittedOrigin(), *response_head_, - GetParentFrame()->GetLastCommittedOrigin(), - cross_origin_embedder_policy)) { - OnRequestFailedInternal( - network::URLLoaderCompletionStatus(*blocked_reason), - false /* skip_throttles */, base::nullopt /* error_page_content */, - false /* collapse_frame */); - // DO NOT ADD CODE after this. The previous call to - // OnRequestFailedInternal has destroyed the NavigationRequest. - return; - } - } - if (GetParentFrame() && - GetParentFrame()->cross_origin_embedder_policy().value == - network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp) { - // Some special URLs not loaded using the network are inheriting the - // Cross-Origin-Embedder-Policy header from their parent. - if (common_params_->url.SchemeIsBlob() || - common_params_->url.SchemeIs(url::kDataScheme)) { - cross_origin_embedder_policy.value = - network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp; - } - if (cross_origin_embedder_policy.value == - network::mojom::CrossOriginEmbedderPolicyValue::kNone) { - OnRequestFailedInternal(network::URLLoaderCompletionStatus( - network::BlockedByResponseReason:: - kCoepFrameResourceNeedsCoepHeader), - false /* skip_throttles */, - base::nullopt /* error_page_content */, - false /* collapse_frame */); - // DO NOT ADD CODE after this. The previous call to - // OnRequestFailedInternal has destroyed the NavigationRequest. - return; + // https://mikewest.github.io/corpp/#integration-html + if (auto* const parent_frame = GetParentFrame()) { + const auto& parent_coep = parent_frame->cross_origin_embedder_policy(); + const auto& url = common_params_->url; + if (parent_coep.value == + network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp) { + if (url.SchemeIsBlob() || url.SchemeIs(url::kDataScheme)) { + // Some special URLs not loaded using the network are inheriting the + // Cross-Origin-Embedder-Policy header from their parent. + cross_origin_embedder_policy.value = + network::mojom::CrossOriginEmbedderPolicyValue::kRequireCorp; + } + if (cross_origin_embedder_policy.value == + network::mojom::CrossOriginEmbedderPolicyValue::kNone) { + OnRequestFailedInternal(network::URLLoaderCompletionStatus( + network::BlockedByResponseReason:: + kCoepFrameResourceNeedsCoepHeader), + false /* skip_throttles */, + base::nullopt /* error_page_content */, + false /* collapse_frame */); + // DO NOT ADD CODE after this. The previous call to + // OnRequestFailedInternal has destroyed the NavigationRequest. + return; + } } } @@ -4033,6 +4034,29 @@ commit_params_->force_enabled_origin_trials = trials; } +base::Optional<network::BlockedByResponseReason> +NavigationRequest::IsBlockedByCorp() { + if (!base::FeatureList::IsEnabled(network::features::kCrossOriginIsolation)) { + return base::nullopt; + } + // https://mikewest.github.io/corpp/#integration-html + auto* parent_frame = GetParentFrame(); + if (!parent_frame) { + return base::nullopt; + } + const auto& url = common_params_->url; + // Some special URLs not loaded using the network are inheriting the + // Cross-Origin-Embedder-Policy header from their parent. + if (url.SchemeIsBlob() || url.SchemeIs(url::kDataScheme)) { + return base::nullopt; + } + return network::CrossOriginResourcePolicy::IsNavigationBlocked( + url, redirect_chain_[0], parent_frame->GetLastCommittedOrigin(), + *response_head_, parent_frame->GetLastCommittedOrigin(), + parent_frame->cross_origin_embedder_policy(), + parent_frame->coep_reporter()); +} + std::unique_ptr<PeakGpuMemoryTracker> NavigationRequest::TakePeakGpuMemoryTracker() { return std::move(loading_mem_tracker_);
diff --git a/content/browser/frame_host/navigation_request.h b/content/browser/frame_host/navigation_request.h index f5cac5b..eb302a5 100644 --- a/content/browser/frame_host/navigation_request.h +++ b/content/browser/frame_host/navigation_request.h
@@ -40,6 +40,7 @@ #include "mojo/public/cpp/system/data_pipe.h" #include "net/base/proxy_server.h" #include "net/dns/public/resolve_error_info.h" +#include "services/network/public/cpp/blocked_by_response_reason.h" #include "services/network/public/cpp/origin_policy.h" #if defined(OS_ANDROID) @@ -876,6 +877,8 @@ void ForceEnableOriginTrials(const std::vector<std::string>& trials) override; + base::Optional<network::BlockedByResponseReason> IsBlockedByCorp(); + FrameTreeNode* frame_tree_node_; // Invariant: At least one of |loader_| or |render_frame_host_| is null.
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc index 59ed983..c013dfd0 100644 --- a/content/browser/frame_host/navigator_impl.cc +++ b/content/browser/frame_host/navigator_impl.cc
@@ -176,7 +176,10 @@ // frame's origin. See https://crbug.com/825283. frame_tree_node->render_manager()->DidNavigateFrame( render_frame_host, params.gesture == NavigationGestureUser, - is_same_document_navigation, pending_frame_policy); + is_same_document_navigation, + navigation_request + ->require_coop_browsing_instance_swap() /* clear_proxies_on_commit */, + pending_frame_policy); // Save the new page's origin and other properties, and replicate them to // proxies, including the proxy created in DidNavigateFrame() to replace the
diff --git a/content/browser/frame_host/render_frame_host_delegate.h b/content/browser/frame_host/render_frame_host_delegate.h index 5b1e90b18..fc312f0 100644 --- a/content/browser/frame_host/render_frame_host_delegate.h +++ b/content/browser/frame_host/render_frame_host_delegate.h
@@ -571,8 +571,22 @@ // decide if we should consume user activation when entering fullscreen. virtual bool HasSeenRecentScreenOrientationChange(); + // The page is trying to open a new widget (e.g. a select popup). The + // widget should be created associated with the given |widget_route_id| in the + // process |render_process_id|, but it should not be shown yet. That should + // happen in response to ShowCreatedWidget. + virtual void CreateNewWidget(int32_t render_process_id, + int32_t widget_route_id, + mojo::PendingRemote<mojom::Widget> widget) {} + + // Creates a full screen RenderWidget. Similar to above. + virtual void CreateNewFullscreenWidget( + int32_t render_process_id, + int32_t widget_route_id, + mojo::PendingRemote<mojom::Widget> widget) {} + protected: - virtual ~RenderFrameHostDelegate() {} + virtual ~RenderFrameHostDelegate() = default; }; } // namespace content
diff --git a/content/browser/frame_host/render_frame_host_factory.cc b/content/browser/frame_host/render_frame_host_factory.cc index 9a2e987..38a64d03 100644 --- a/content/browser/frame_host/render_frame_host_factory.cc +++ b/content/browser/frame_host/render_frame_host_factory.cc
@@ -23,18 +23,15 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) { if (factory_) { return factory_->CreateRenderFrameHost( site_instance, std::move(render_view_host), delegate, frame_tree, - frame_tree_node, routing_id, widget_routing_id, - renderer_initiated_creation); + frame_tree_node, routing_id, renderer_initiated_creation); } - return base::WrapUnique( - new RenderFrameHostImpl(site_instance, std::move(render_view_host), - delegate, frame_tree, frame_tree_node, routing_id, - widget_routing_id, renderer_initiated_creation)); + return base::WrapUnique(new RenderFrameHostImpl( + site_instance, std::move(render_view_host), delegate, frame_tree, + frame_tree_node, routing_id, renderer_initiated_creation)); } // static
diff --git a/content/browser/frame_host/render_frame_host_factory.h b/content/browser/frame_host/render_frame_host_factory.h index c229c2d..44363a7 100644 --- a/content/browser/frame_host/render_frame_host_factory.h +++ b/content/browser/frame_host/render_frame_host_factory.h
@@ -36,7 +36,6 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation); // Returns true if there is currently a globally-registered factory. @@ -55,7 +54,6 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) = 0; // Registers a factory to be called when new RenderFrameHostImpls are created.
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 458a1c89..7c3574b 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -868,7 +868,6 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) : render_view_host_(std::move(render_view_host)), delegate_(delegate), @@ -939,7 +938,12 @@ base::BindRepeating(&RenderFrameHostImpl::BeforeUnloadTimeout, weak_ptr_factory_.GetWeakPtr()))); - if (widget_routing_id != MSG_ROUTING_NONE) { + // Local roots are: + // - main frames; or + // - subframes in a different SiteInstance from their parent. + // + // Local roots require a RenderWidget for input/layout/painting. + if (!parent_ || IsCrossProcessSubframe()) { mojo::PendingRemote<mojom::Widget> widget; GetRemoteInterfaces()->GetInterface( widget.InitWithNewPipeAndPassReceiver()); @@ -950,18 +954,17 @@ // RenderWidgetHostImpl, the main render frame should probably start // owning the RenderWidgetHostImpl itself. DCHECK(GetLocalRenderWidgetHost()); - DCHECK_EQ(GetLocalRenderWidgetHost()->GetRoutingID(), widget_routing_id); DCHECK(!GetLocalRenderWidgetHost()->owned_by_render_frame_host()); // Make the RenderWidgetHostImpl able to call the mojo Widget interface // (implemented by the RenderWidgetImpl). GetLocalRenderWidgetHost()->SetWidget(std::move(widget)); } else { - // For subframes, the RenderFrameHost directly creates and owns its - // RenderWidgetHost. + // For local child roots, the RenderFrameHost directly creates and owns + // its RenderWidgetHost. + int32_t widget_routing_id = + site_instance->GetProcess()->GetNextRoutingID(); DCHECK_EQ(nullptr, GetLocalRenderWidgetHost()); - DCHECK_EQ(nullptr, RenderWidgetHostImpl::FromID(GetProcess()->GetID(), - widget_routing_id)); owned_render_widget_host_ = RenderWidgetHostFactory::Create( frame_tree_->render_widget_delegate(), GetProcess(), widget_routing_id, std::move(widget), /*hidden=*/true); @@ -4838,6 +4841,24 @@ portal->GetDevToolsFrameToken()); } +void RenderFrameHostImpl::CreateNewWidget( + mojo::PendingRemote<mojom::Widget> widget, + CreateNewWidgetCallback callback) { + int32_t widget_route_id = GetProcess()->GetNextRoutingID(); + std::move(callback).Run(widget_route_id); + delegate_->CreateNewWidget(GetProcess()->GetID(), widget_route_id, + std::move(widget)); +} + +void RenderFrameHostImpl::CreateNewFullscreenWidget( + mojo::PendingRemote<mojom::Widget> widget, + CreateNewFullscreenWidgetCallback callback) { + int32_t widget_route_id = GetProcess()->GetNextRoutingID(); + std::move(callback).Run(widget_route_id); + delegate_->CreateNewFullscreenWidget(GetProcess()->GetID(), widget_route_id, + std::move(widget)); +} + void RenderFrameHostImpl::IssueKeepAliveHandle( mojo::PendingReceiver<mojom::KeepAliveHandle> receiver) { DCHECK_CURRENTLY_ON(BrowserThread::UI);
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h index 2e1155e..637e71f 100644 --- a/content/browser/frame_host/render_frame_host_impl.h +++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1446,7 +1446,6 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation); // The SendCommit* functions below are wrappers for commit calls @@ -1572,6 +1571,8 @@ FRIEND_TEST_ALL_PREFIXES(SitePerProcessSSLBrowserTest, UnloadHandlersArePowerfulGrandChild); FRIEND_TEST_ALL_PREFIXES(RenderFrameHostImplTest, ExpectedMainWorldOrigin); + FRIEND_TEST_ALL_PREFIXES(SecurityExploitBrowserTest, + AttemptDuplicateRenderWidgetHost); class DroppedInterfaceRequestLogger; @@ -1645,6 +1646,11 @@ CreatePortalCallback callback) override; void AdoptPortal(const base::UnguessableToken& portal_token, AdoptPortalCallback callback) override; + void CreateNewWidget(mojo::PendingRemote<mojom::Widget> widget, + CreateNewWidgetCallback callback) override; + void CreateNewFullscreenWidget( + mojo::PendingRemote<mojom::Widget> widget, + CreateNewFullscreenWidgetCallback callback) override; void IssueKeepAliveHandle( mojo::PendingReceiver<mojom::KeepAliveHandle> receiver) override; void DidCommitProvisionalLoad(
diff --git a/content/browser/frame_host/render_frame_host_impl_browsertest.cc b/content/browser/frame_host/render_frame_host_impl_browsertest.cc index eb25461e..6f175d5a 100644 --- a/content/browser/frame_host/render_frame_host_impl_browsertest.cc +++ b/content/browser/frame_host/render_frame_host_impl_browsertest.cc
@@ -448,12 +448,10 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) override { return base::WrapUnique(new RenderFrameHostImplForBeforeUnloadInterceptor( site_instance, std::move(render_view_host), delegate, frame_tree, - frame_tree_node, routing_id, widget_routing_id, - renderer_initiated_creation)); + frame_tree_node, routing_id, renderer_initiated_creation)); } };
diff --git a/content/browser/frame_host/render_frame_host_impl_unittest.cc b/content/browser/frame_host/render_frame_host_impl_unittest.cc index 8850ae4..00c86a8 100644 --- a/content/browser/frame_host/render_frame_host_impl_unittest.cc +++ b/content/browser/frame_host/render_frame_host_impl_unittest.cc
@@ -80,4 +80,13 @@ EXPECT_EQ(initial_rfh, main_rfh()); } +// Create a full screen popup RenderWidgetHost and View. +TEST_F(RenderFrameHostImplTest, CreateFullscreenWidget) { + mojo::PendingRemote<mojom::Widget> widget; + std::unique_ptr<MockWidgetImpl> widget_impl = + std::make_unique<MockWidgetImpl>(widget.InitWithNewPipeAndPassReceiver()); + main_test_rfh()->CreateNewFullscreenWidget(std::move(widget), + base::DoNothing()); +} + } // namespace content
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc index 1f188a5..88e0657 100644 --- a/content/browser/frame_host/render_frame_host_manager.cc +++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -416,9 +416,11 @@ RenderFrameHostImpl* render_frame_host, bool was_caused_by_user_gesture, bool is_same_document_navigation, + bool clear_proxies_on_commit, const blink::FramePolicy& frame_policy) { CommitPendingIfNecessary(render_frame_host, was_caused_by_user_gesture, - is_same_document_navigation); + is_same_document_navigation, + clear_proxies_on_commit); // Make sure any dynamic changes to this frame's sandbox flags and feature // policy that were made prior to navigation take effect. This should only @@ -430,7 +432,8 @@ void RenderFrameHostManager::CommitPendingIfNecessary( RenderFrameHostImpl* render_frame_host, bool was_caused_by_user_gesture, - bool is_same_document_navigation) { + bool is_same_document_navigation, + bool clear_proxies_on_commit) { if (!speculative_render_frame_host_) { // There's no speculative RenderFrameHost so it must be that the current // renderer process completed a navigation. @@ -447,7 +450,8 @@ // speculative RenderFrameHost replaces the current one in the commit call // below. CommitPending(std::move(speculative_render_frame_host_), - std::move(bfcache_entry_to_restore_)); + std::move(bfcache_entry_to_restore_), + clear_proxies_on_commit); frame_tree_node_->ResetNavigationRequest(false); return; } @@ -935,7 +939,8 @@ navigation_rfh->Send( new FrameMsg_SwapIn(navigation_rfh->GetRoutingID())); } - CommitPending(std::move(speculative_render_frame_host_), nullptr); + CommitPending(std::move(speculative_render_frame_host_), nullptr, + request->require_coop_browsing_instance_swap()); } } DCHECK(navigation_rfh && @@ -2048,11 +2053,15 @@ // Create a RVH for main frames, or find the existing one for subframes. FrameTree* frame_tree = frame_tree_node_->frame_tree(); - scoped_refptr<RenderViewHostImpl> render_view_host; + scoped_refptr<RenderViewHostImpl> render_view_host = + frame_tree->GetRenderViewHost(site_instance); + if (frame_tree_node_->IsMainFrame()) { - render_view_host = frame_tree->CreateRenderViewHost( - site_instance, view_routing_id, frame_routing_id, widget_routing_id, - false); + if (!render_view_host) { + render_view_host = frame_tree->CreateRenderViewHost( + site_instance, view_routing_id, frame_routing_id, widget_routing_id, + /*swapped_out=*/false); + } // TODO(avi): It's a bit bizarre that this logic lives here instead of in // CreateRenderFrame(). It turns out that FrameTree::CreateRenderViewHost // doesn't /always/ create a new RenderViewHost. It first tries to find an @@ -2068,14 +2077,12 @@ DCHECK_NE(view_routing_id, widget_routing_id); DCHECK_EQ(view_routing_id, render_view_host->GetRoutingID()); } - } else { - render_view_host = frame_tree->GetRenderViewHost(site_instance); - CHECK(render_view_host); } + CHECK(render_view_host); return RenderFrameHostFactory::Create( site_instance, render_view_host, frame_tree->render_frame_delegate(), - frame_tree, frame_tree_node_, frame_routing_id, widget_routing_id, + frame_tree, frame_tree_node_, frame_routing_id, renderer_initiated_creation); } @@ -2136,20 +2143,9 @@ DCHECK(render_frame_host_->GetSiteInstance() != instance || render_frame_host_->must_be_replaced() || IsRenderDocumentEnabled()); - // A RenderFrame in a different process from its parent RenderFrame - // requires a RenderWidget for input/layout/painting. - // - // TODO(ajwong): When RVH no longer owns a RWH, this logic should be - // simplified as the decision to create a RWH will be centralized here. - // https://crbug.com/545684 - FrameTreeNode* parent = frame_tree_node_->parent(); - int32_t widget_routing_id = MSG_ROUTING_NONE; - if (parent && parent->current_frame_host()->GetSiteInstance() != instance) - widget_routing_id = instance->GetProcess()->GetNextRoutingID(); - std::unique_ptr<RenderFrameHostImpl> new_render_frame_host = CreateRenderFrameHost(instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, - widget_routing_id, false); + MSG_ROUTING_NONE, false); DCHECK_EQ(new_render_frame_host->GetSiteInstance(), instance); // Prevent the process from exiting while we're trying to navigate in it. @@ -2233,16 +2229,16 @@ if (!proxy) { // The RenderViewHost creates the page level structure in Blink. The first // object to depend on it is necessarily a main frame one. - CHECK(frame_tree_node_->frame_tree()->GetRenderViewHost(instance) || - frame_tree_node_->IsMainFrame()); - - // Before creating a new RenderFrameProxyHost, ensure a RenderViewHost - // exists for |instance|, as it creates the page level structure in Blink. scoped_refptr<RenderViewHostImpl> render_view_host = - frame_tree_node_->frame_tree()->CreateRenderViewHost( - instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, MSG_ROUTING_NONE, - /*swapped_out=*/true); - + frame_tree_node_->frame_tree()->GetRenderViewHost(instance); + CHECK(render_view_host || frame_tree_node_->IsMainFrame()); + if (!render_view_host) { + // Before creating a new RenderFrameProxyHost, ensure a RenderViewHost + // exists for |instance|, as it creates the page level structure in Blink. + render_view_host = frame_tree_node_->frame_tree()->CreateRenderViewHost( + instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, MSG_ROUTING_NONE, + /*swapped_out=*/true); + } proxy = CreateRenderFrameProxyHost(instance, std::move(render_view_host)); } @@ -2547,7 +2543,8 @@ void RenderFrameHostManager::CommitPending( std::unique_ptr<RenderFrameHostImpl> pending_rfh, - std::unique_ptr<BackForwardCacheImpl::Entry> pending_bfcache_entry) { + std::unique_ptr<BackForwardCacheImpl::Entry> pending_bfcache_entry, + bool clear_proxies_on_commit) { TRACE_EVENT1("navigation", "RenderFrameHostManager::CommitPending", "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); DCHECK(pending_rfh); @@ -2750,6 +2747,35 @@ // for its SiteInstance. Delete any existing ones. DeleteRenderFrameProxyHost(render_frame_host_->GetSiteInstance()); + // If this is a top-level frame, and COOP triggered a BrowsingInstance swap, + // make sure all relationships with the previous BrowsingInstance are severed + // by removing the opener and proxies with unrelated SiteInstances. + if (clear_proxies_on_commit) { + DCHECK(frame_tree_node_->IsMainFrame()); + if (frame_tree_node_->opener() && + !render_frame_host_->GetSiteInstance()->IsRelatedSiteInstance( + frame_tree_node_->opener() + ->current_frame_host() + ->GetSiteInstance())) { + frame_tree_node_->SetOpener(nullptr); + // Note: It usually makes sense to notify the proxies of that frame that + // the opener was removed. However since these proxies are destroyed right + // after it is not necessary in this particuliar case. + } + + std::vector<RenderFrameProxyHost*> removed_proxies; + for (auto& it : proxy_hosts_) { + const auto& proxy = it.second; + if (!render_frame_host_->GetSiteInstance()->IsRelatedSiteInstance( + proxy->GetSiteInstance())) { + removed_proxies.push_back(proxy.get()); + } + } + + for (auto* proxy : removed_proxies) + DeleteRenderFrameProxyHost(proxy->GetSiteInstance()); + } + // If this is a subframe, it should have a CrossProcessFrameConnector // created already. Use it to link the new RFH's view to the proxy that // belongs to the parent frame's SiteInstance. If this navigation causes @@ -3048,7 +3074,8 @@ // WebContents::AttachToOuterWebContentsFrame is called. speculative_render_frame_host_->Send( new FrameMsg_SwapIn(speculative_render_frame_host_->GetRoutingID())); - CommitPending(std::move(speculative_render_frame_host_), nullptr); + CommitPending(std::move(speculative_render_frame_host_), nullptr, + false /* clear_proxies_on_commit */); NotifyPrepareForInnerDelegateAttachComplete(true /* success */); }
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h index 693db3b4..8741164 100644 --- a/content/browser/frame_host/render_frame_host_manager.h +++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -260,6 +260,7 @@ void DidNavigateFrame(RenderFrameHostImpl* render_frame_host, bool was_caused_by_user_gesture, bool is_same_document_navigation, + bool clear_proxies_on_commit, const blink::FramePolicy& frame_policy); // Called when this frame's opener is changed to the frame specified by @@ -721,14 +722,19 @@ // In that case, |pending_rfh| is the RenderFrameHost to be restored, and // |pending_bfcache_entry| provides additional state to be restored, such as // proxies. + // |clear_proxies_on_commit| Indicates if the proxies and opener must be + // removed during the commit. This can happen following some BrowsingInstance + // swaps, such as those for COOP. void CommitPending( std::unique_ptr<RenderFrameHostImpl> pending_rfh, - std::unique_ptr<BackForwardCacheImpl::Entry> pending_bfcache_entry); + std::unique_ptr<BackForwardCacheImpl::Entry> pending_bfcache_entry, + bool clear_proxies_on_commit); // Helper to call CommitPending() in all necessary cases. void CommitPendingIfNecessary(RenderFrameHostImpl* render_frame_host, bool was_caused_by_user_gesture, - bool is_same_document_navigation); + bool is_same_document_navigation, + bool clear_proxies_on_commit); // Commits given frame policy when the renderer's frame navigates. void CommitFramePolicy(const blink::FramePolicy& frame_policy);
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc index 9d16815..b57e96b 100644 --- a/content/browser/frame_host/render_frame_host_manager_unittest.cc +++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -865,6 +865,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Commit to SiteInstance should be delayed until RenderFrame commit. EXPECT_TRUE(host == manager->current_frame_host()); @@ -892,6 +893,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_TRUE(host == manager->current_frame_host()); ASSERT_TRUE(host); @@ -919,7 +921,8 @@ // Commit. manager->DidNavigateFrame( GetPendingFrameHost(manager), true /* was_caused_by_user_gesture */, - false /* is_same_document_navigation */, blink::FramePolicy()); + false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_TRUE(host == manager->current_frame_host()); ASSERT_TRUE(host); EXPECT_TRUE(host->GetSiteInstance()->HasSite()); @@ -978,6 +981,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_TRUE(host->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); } @@ -1018,6 +1022,7 @@ // Commit and ensure we still have bindings. manager1->DidNavigateFrame(host1, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); SiteInstance* webui_instance = host1->GetSiteInstance(); EXPECT_EQ(host1, manager1->current_frame_host()); @@ -1052,6 +1057,7 @@ manager2->DidNavigateFrame(host2, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); } @@ -1427,6 +1433,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Commit to SiteInstance should be delayed until RenderFrame commit. EXPECT_EQ(host, manager->current_frame_host()); @@ -1452,6 +1459,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_EQ(host, manager->current_frame_host()); ASSERT_TRUE(host); @@ -1509,6 +1517,7 @@ // Commit. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Commit to SiteInstance should be delayed until RenderFrame commits. @@ -1823,6 +1832,7 @@ // Commit. iframe1->DidNavigateFrame(host1, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Commit to SiteInstance should be delayed until RenderFrame commit. EXPECT_TRUE(host1 == iframe1->current_frame_host()); @@ -1957,6 +1967,7 @@ RenderFrameHostImpl* cross_site = NavigateToEntry(iframe, &entry); iframe->DidNavigateFrame(cross_site, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // A proxy to the iframe should now exist in the SiteInstance of the main @@ -2325,9 +2336,11 @@ child1->DidNavigateFrame(host1, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); child2->DidNavigateFrame(host2, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Navigate the third subframe to C. @@ -2349,6 +2362,7 @@ child3->DidNavigateFrame(host3, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Make sure the first two subframes and the third subframe are placed in @@ -2424,6 +2438,7 @@ static_cast<TestRenderFrameHost*>(NavigateToEntry(child, &entryB)); child->DidNavigateFrame(hostB, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); // Ensure that the main page is focused. @@ -2449,6 +2464,7 @@ child->DidNavigateFrame(hostC, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); base::RunLoop().RunUntilIdle(); @@ -2508,6 +2524,7 @@ // The RenderFrameHost committed. manager->DidNavigateFrame(current_host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_EQ(current_host, manager->current_frame_host()); EXPECT_TRUE(current_host->web_ui()); @@ -2823,6 +2840,7 @@ // The RenderFrameHost committed. manager->DidNavigateFrame(host, true /* was_caused_by_user_gesture */, false /* is_same_document_navigation */, + false /* clear_proxies_on_commit */, blink::FramePolicy()); EXPECT_EQ(host, manager->current_frame_host()); EXPECT_FALSE(GetPendingFrameHost(manager));
diff --git a/content/browser/navigation_browsertest.cc b/content/browser/navigation_browsertest.cc index 4a5d1df..2d6523b 100644 --- a/content/browser/navigation_browsertest.cc +++ b/content/browser/navigation_browsertest.cc
@@ -167,12 +167,10 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) override { return base::WrapUnique(new RenderFrameHostImplForHistoryBackInterceptor( site_instance, std::move(render_view_host), delegate, frame_tree, - frame_tree_node, routing_id, widget_routing_id, - renderer_initiated_creation)); + frame_tree_node, routing_id, renderer_initiated_creation)); } };
diff --git a/content/browser/payments/payment_app_provider_impl.cc b/content/browser/payments/payment_app_provider_impl.cc index c26bf7f..c587ace 100644 --- a/content/browser/payments/payment_app_provider_impl.cc +++ b/content/browser/payments/payment_app_provider_impl.cc
@@ -43,15 +43,25 @@ namespace content { namespace { +using payments::mojom::CanMakePaymentEventDataPtr; +using payments::mojom::CanMakePaymentEventResponseType; +using payments::mojom::CanMakePaymentResponse; +using payments::mojom::CanMakePaymentResponsePtr; +using payments::mojom::PaymentDetailsModifierPtr; using payments::mojom::PaymentEventResponseType; +using payments::mojom::PaymentHandlerResponse; +using payments::mojom::PaymentHandlerResponseCallback; +using payments::mojom::PaymentHandlerResponsePtr; +using payments::mojom::PaymentMethodDataPtr; +using payments::mojom::PaymentRequestEventDataPtr; using ServiceWorkerStartCallback = base::OnceCallback<void(scoped_refptr<ServiceWorkerVersion>, blink::ServiceWorkerStatusCode)>; -payments::mojom::PaymentHandlerResponsePtr CreateBlankPaymentHandlerResponse( +PaymentHandlerResponsePtr CreateBlankPaymentHandlerResponse( PaymentEventResponseType response_type) { - return payments::mojom::PaymentHandlerResponse::New( + return PaymentHandlerResponse::New( "" /*=method_name*/, "" /*=stringified_details*/, response_type, base::nullopt /*=payer_name*/, base::nullopt /*=payer_email*/, base::nullopt /*=payer_phone*/, nullptr /*=shipping_address*/, @@ -72,6 +82,12 @@ return base::Singleton<InvokePaymentAppCallbackRepository>::get(); } + // Disallow copy and assign. + InvokePaymentAppCallbackRepository( + const InvokePaymentAppCallbackRepository& other) = delete; + InvokePaymentAppCallbackRepository& operator=( + const InvokePaymentAppCallbackRepository& other) = delete; + RespondWithCallbacks* GetCallback(BrowserContext* browser_context) { DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); auto it = invoke_callbacks_.find(browser_context); @@ -93,8 +109,8 @@ } private: - InvokePaymentAppCallbackRepository() {} - ~InvokePaymentAppCallbackRepository() {} + InvokePaymentAppCallbackRepository() = default; + ~InvokePaymentAppCallbackRepository() = default; friend struct base::DefaultSingletonTraits< InvokePaymentAppCallbackRepository>; @@ -104,46 +120,71 @@ // Note that one and only one of the callbacks from this class must/should be // called. -class RespondWithCallbacks - : public payments::mojom::PaymentHandlerResponseCallback { +class RespondWithCallbacks : public PaymentHandlerResponseCallback { public: - RespondWithCallbacks( + static RespondWithCallbacks* CreateForInvoke( BrowserContext* browser_context, - ServiceWorkerMetrics::EventType event_type, scoped_refptr<ServiceWorkerVersion> service_worker_version, - PaymentAppProvider::InvokePaymentAppCallback callback) - : browser_context_(browser_context), - event_type_(event_type), - service_worker_version_(service_worker_version), - invoke_payment_app_callback_(std::move(callback)) { - request_id_ = service_worker_version->StartRequest( - event_type, base::BindOnce(&RespondWithCallbacks::OnErrorStatus, - weak_ptr_factory_.GetWeakPtr())); + PaymentAppProvider::InvokePaymentAppCallback callback) { + RespondWithCallbacks* callbacks = new RespondWithCallbacks( + browser_context, ServiceWorkerMetrics::EventType::PAYMENT_REQUEST, + service_worker_version, + /*invoke_callback=*/std::move(callback), + PaymentAppProvider::PaymentEventResultCallback()); InvokePaymentAppCallbackRepository::GetInstance()->SetCallback( - browser_context, this); + browser_context, callbacks); + return callbacks; } - RespondWithCallbacks( + static RespondWithCallbacks* CreateForEvent( BrowserContext* browser_context, ServiceWorkerMetrics::EventType event_type, scoped_refptr<ServiceWorkerVersion> service_worker_version, - PaymentAppProvider::PaymentEventResultCallback callback) - : browser_context_(browser_context), - event_type_(event_type), - service_worker_version_(service_worker_version), - payment_event_result_callback_(std::move(callback)) { - request_id_ = service_worker_version->StartRequest( - event_type, base::BindOnce(&RespondWithCallbacks::OnErrorStatus, - weak_ptr_factory_.GetWeakPtr())); + PaymentAppProvider::PaymentEventResultCallback callback) { + RespondWithCallbacks* callbacks = new RespondWithCallbacks( + browser_context, event_type, service_worker_version, + PaymentAppProvider::InvokePaymentAppCallback(), + /*event_callback=*/std::move(callback)); + return callbacks; } - mojo::PendingRemote<payments::mojom::PaymentHandlerResponseCallback> + // Disallow copy and assign. + RespondWithCallbacks(const RespondWithCallbacks& other) = delete; + RespondWithCallbacks& operator=(const RespondWithCallbacks& other) = delete; + + mojo::PendingRemote<PaymentHandlerResponseCallback> BindNewPipeAndPassRemote() { return receiver_.BindNewPipeAndPassRemote(); } + void AbortPaymentSinceOpennedWindowClosing(PaymentEventResponseType reason) { + DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); + + service_worker_version_->FinishRequest(request_id_, false); + RespondWithErrorAndDeleteSelf(reason); + } + + private: + RespondWithCallbacks( + BrowserContext* browser_context, + ServiceWorkerMetrics::EventType event_type, + scoped_refptr<ServiceWorkerVersion> service_worker_version, + PaymentAppProvider::InvokePaymentAppCallback invoke_callback, + PaymentAppProvider::PaymentEventResultCallback event_callback) + : browser_context_(browser_context), + event_type_(event_type), + service_worker_version_(service_worker_version), + invoke_payment_app_callback_(std::move(invoke_callback)), + payment_event_result_callback_(std::move(event_callback)) { + request_id_ = service_worker_version->StartRequest( + event_type, base::BindOnce(&RespondWithCallbacks::OnErrorStatus, + weak_ptr_factory_.GetWeakPtr())); + } + + ~RespondWithCallbacks() override = default; + void OnResponseForPaymentRequest( - payments::mojom::PaymentHandlerResponsePtr response) override { + PaymentHandlerResponsePtr response) override { DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); service_worker_version_->FinishRequest(request_id_, false); RunOrPostTaskOnThread( @@ -156,7 +197,7 @@ } void OnResponseForCanMakePayment( - payments::mojom::CanMakePaymentResponsePtr response) override { + CanMakePaymentResponsePtr response) override { DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); service_worker_version_->FinishRequest(request_id_, false); RunOrPostTaskOnThread( @@ -220,18 +261,6 @@ RespondWithErrorAndDeleteSelf(response_type); } - int request_id() { return request_id_; } - - void AbortPaymentSinceOpennedWindowClosing(PaymentEventResponseType reason) { - DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); - - service_worker_version_->FinishRequest(request_id_, false); - RespondWithErrorAndDeleteSelf(reason); - } - - private: - ~RespondWithCallbacks() override {} - void ClearCallbackRepositoryAndCloseWindow() { DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); @@ -254,12 +283,9 @@ scoped_refptr<ServiceWorkerVersion> service_worker_version_; PaymentAppProvider::InvokePaymentAppCallback invoke_payment_app_callback_; PaymentAppProvider::PaymentEventResultCallback payment_event_result_callback_; - mojo::Receiver<payments::mojom::PaymentHandlerResponseCallback> receiver_{ - this}; + mojo::Receiver<PaymentHandlerResponseCallback> receiver_{this}; base::WeakPtrFactory<RespondWithCallbacks> weak_ptr_factory_{this}; - - DISALLOW_COPY_AND_ASSIGN(RespondWithCallbacks); }; void DidGetAllPaymentAppsOnCoreThread( @@ -296,10 +322,12 @@ int event_finish_id = active_version->StartRequest( ServiceWorkerMetrics::EventType::CAN_MAKE_PAYMENT, base::DoNothing()); - // This object self-deletes after either success or error callback is invoked. - RespondWithCallbacks* invocation_callbacks = new RespondWithCallbacks( - browser_context, ServiceWorkerMetrics::EventType::ABORT_PAYMENT, - active_version, std::move(callback)); + // This object self-deletes after either success or error callback is + // invoked. + RespondWithCallbacks* invocation_callbacks = + RespondWithCallbacks::CreateForEvent( + browser_context, ServiceWorkerMetrics::EventType::ABORT_PAYMENT, + active_version, std::move(callback)); active_version->endpoint()->DispatchAbortPaymentEvent( invocation_callbacks->BindNewPipeAndPassRemote(), @@ -308,7 +336,7 @@ void DispatchCanMakePaymentEvent( BrowserContext* browser_context, - payments::mojom::CanMakePaymentEventDataPtr event_data, + CanMakePaymentEventDataPtr event_data, PaymentAppProvider::PaymentEventResultCallback callback, scoped_refptr<ServiceWorkerVersion> active_version, blink::ServiceWorkerStatusCode service_worker_status) { @@ -325,10 +353,12 @@ int event_finish_id = active_version->StartRequest( ServiceWorkerMetrics::EventType::CAN_MAKE_PAYMENT, base::DoNothing()); - // This object self-deletes after either success or error callback is invoked. - RespondWithCallbacks* invocation_callbacks = new RespondWithCallbacks( - browser_context, ServiceWorkerMetrics::EventType::CAN_MAKE_PAYMENT, - active_version, std::move(callback)); + // This object self-deletes after either success or error callback is + // invoked. + RespondWithCallbacks* invocation_callbacks = + RespondWithCallbacks::CreateForEvent( + browser_context, ServiceWorkerMetrics::EventType::CAN_MAKE_PAYMENT, + active_version, std::move(callback)); active_version->endpoint()->DispatchCanMakePaymentEvent( std::move(event_data), invocation_callbacks->BindNewPipeAndPassRemote(), @@ -337,7 +367,7 @@ void DispatchPaymentRequestEvent( BrowserContext* browser_context, - payments::mojom::PaymentRequestEventDataPtr event_data, + PaymentRequestEventDataPtr event_data, PaymentAppProvider::InvokePaymentAppCallback callback, scoped_refptr<ServiceWorkerVersion> active_version, blink::ServiceWorkerStatusCode service_worker_status) { @@ -358,10 +388,11 @@ int event_finish_id = active_version->StartRequest( ServiceWorkerMetrics::EventType::PAYMENT_REQUEST, base::DoNothing()); - // This object self-deletes after either success or error callback is invoked. - RespondWithCallbacks* invocation_callbacks = new RespondWithCallbacks( - browser_context, ServiceWorkerMetrics::EventType::PAYMENT_REQUEST, - active_version, std::move(callback)); + // This object self-deletes after either success or error callback is + // invoked. + RespondWithCallbacks* invocation_callbacks = + RespondWithCallbacks::CreateForInvoke(browser_context, active_version, + std::move(callback)); active_version->endpoint()->DispatchPaymentRequestEvent( std::move(event_data), invocation_callbacks->BindNewPipeAndPassRemote(), @@ -417,7 +448,7 @@ void OnInstallPaymentApp( const url::Origin& sw_origin, - payments::mojom::PaymentRequestEventDataPtr event_data, + PaymentRequestEventDataPtr event_data, PaymentAppProvider::RegistrationIdCallback registration_id_callback, PaymentAppProvider::InvokePaymentAppCallback callback, BrowserContext* browser_context, @@ -469,9 +500,8 @@ callback->AbortPaymentSinceOpennedWindowClosing(reason); } -void AddMethodDataToMap( - const std::vector<payments::mojom::PaymentMethodDataPtr>& method_data, - std::map<std::string, std::string>* out) { +void AddMethodDataToMap(const std::vector<PaymentMethodDataPtr>& method_data, + std::map<std::string, std::string>* out) { for (size_t i = 0; i < method_data.size(); ++i) { std::string counter = method_data.size() == 1 ? "" : " #" + base::NumberToString(i); @@ -480,9 +510,8 @@ } } -void AddModifiersToMap( - const std::vector<payments::mojom::PaymentDetailsModifierPtr>& modifiers, - std::map<std::string, std::string>* out) { +void AddModifiersToMap(const std::vector<PaymentDetailsModifierPtr>& modifiers, + std::map<std::string, std::string>* out) { for (size_t i = 0; i < modifiers.size(); ++i) { std::string prefix = "Modifier" + @@ -567,7 +596,7 @@ const url::Origin& sw_origin, const std::string& payment_request_id, PaymentAppProvider::InvokePaymentAppCallback callback, - payments::mojom::PaymentHandlerResponsePtr response) { + PaymentHandlerResponsePtr response) { auto* dev_tools = GetDevToolsForInstanceGroup(instance_group, sw_origin); if (dev_tools) { std::stringstream response_type; @@ -618,7 +647,7 @@ BrowserContext* browser_context, int64_t registration_id, const url::Origin& sw_origin, - payments::mojom::PaymentRequestEventDataPtr event_data, + PaymentRequestEventDataPtr event_data, InvokePaymentAppCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -653,7 +682,7 @@ void PaymentAppProviderImpl::InstallAndInvokePaymentApp( WebContents* web_contents, - payments::mojom::PaymentRequestEventDataPtr event_data, + PaymentRequestEventDataPtr event_data, const std::string& app_name, const SkBitmap& app_icon, const std::string& sw_js_url, @@ -702,7 +731,7 @@ int64_t registration_id, const url::Origin& sw_origin, const std::string& payment_request_id, - payments::mojom::CanMakePaymentEventDataPtr event_data, + CanMakePaymentEventDataPtr event_data, PaymentEventResultCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI);
diff --git a/content/browser/payments/payment_app_provider_impl.h b/content/browser/payments/payment_app_provider_impl.h index 28a5424..0281619 100644 --- a/content/browser/payments/payment_app_provider_impl.h +++ b/content/browser/payments/payment_app_provider_impl.h
@@ -5,7 +5,6 @@ #ifndef CONTENT_BROWSER_PAYMENTS_PAYMENT_APP_PROVIDER_IMPL_H_ #define CONTENT_BROWSER_PAYMENTS_PAYMENT_APP_PROVIDER_IMPL_H_ -#include "base/macros.h" #include "base/memory/singleton.h" #include "content/common/content_export.h" #include "content/public/browser/payment_app_provider.h" @@ -17,6 +16,11 @@ public: static PaymentAppProviderImpl* GetInstance(); + // Disallow copy and assign. + PaymentAppProviderImpl(const PaymentAppProviderImpl& other) = delete; + PaymentAppProviderImpl& operator=(const PaymentAppProviderImpl& other) = + delete; + // PaymentAppProvider implementation: // Should be accessed only on the UI thread. void GetAllPaymentApps(BrowserContext* browser_context, @@ -75,8 +79,6 @@ // Map to maintain at most one opened window per browser context. std::map<BrowserContext*, std::unique_ptr<PaymentHandlerWindowObserver>> payment_handler_windows_; - - DISALLOW_COPY_AND_ASSIGN(PaymentAppProviderImpl); }; } // namespace content
diff --git a/content/browser/pointer_lock_browsertest.cc b/content/browser/pointer_lock_browsertest.cc index 11c9c8e..fee8a3d 100644 --- a/content/browser/pointer_lock_browsertest.cc +++ b/content/browser/pointer_lock_browsertest.cc
@@ -142,7 +142,8 @@ base::test::ScopedFeatureList feature_list_; }; -IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, PointerLockBasic) { +// crbug.com/1060129 +IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, DISABLED_PointerLockBasic) { GURL main_url(embedded_test_server()->GetURL( "a.com", "/cross_site_iframe_factory.html?a(b)")); EXPECT_TRUE(NavigateToURL(shell(), main_url)); @@ -188,7 +189,9 @@ EvalJs(child, "document.pointerLockElement == document.body")); } -IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, PointerLockAndUserActivation) { +// crbug.com/1060129 +IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, + DISABLED_PointerLockAndUserActivation) { GURL main_url(embedded_test_server()->GetURL( "a.com", "/cross_site_iframe_factory.html?a(b(b))")); EXPECT_TRUE(NavigateToURL(shell(), main_url)); @@ -341,7 +344,9 @@ // Tests that the browser will not unlock the pointer if a RenderWidgetHostView // that doesn't hold the pointer lock is destroyed. -IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, PointerLockChildFrameDetached) { +// crbug.com/1060129 +IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, + DISABLED_PointerLockChildFrameDetached) { GURL main_url(embedded_test_server()->GetURL( "a.com", "/cross_site_iframe_factory.html?a(b)")); EXPECT_TRUE(NavigateToURL(shell(), main_url));
diff --git a/content/browser/portal/portal_browsertest.cc b/content/browser/portal/portal_browsertest.cc index 5759b9d..a3d0b4d 100644 --- a/content/browser/portal/portal_browsertest.cc +++ b/content/browser/portal/portal_browsertest.cc
@@ -1353,13 +1353,11 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) override { return base::WrapUnique( new RenderFrameHostImplForNavigationControlInterceptor( site_instance, std::move(render_view_host), delegate, frame_tree, - frame_tree_node, routing_id, widget_routing_id, - renderer_initiated_creation)); + frame_tree_node, routing_id, renderer_initiated_creation)); } };
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc index e9a4806..014fb6f2 100644 --- a/content/browser/renderer_host/render_message_filter.cc +++ b/content/browser/renderer_host/render_message_filter.cc
@@ -118,26 +118,6 @@ std::move(callback).Run(render_widget_helper_->GetNextRoutingID()); } -void RenderMessageFilter::CreateNewWidget( - int32_t opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateNewWidgetCallback callback) { - int route_id = MSG_ROUTING_NONE; - render_widget_helper_->CreateNewWidget(opener_id, std::move(widget), - &route_id); - std::move(callback).Run(route_id); -} - -void RenderMessageFilter::CreateFullscreenWidget( - int opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateFullscreenWidgetCallback callback) { - int route_id = 0; - render_widget_helper_->CreateNewFullscreenWidget(opener_id, std::move(widget), - &route_id); - std::move(callback).Run(route_id); -} - #if defined(OS_LINUX) void RenderMessageFilter::SetThreadPriorityOnFileThread( base::PlatformThreadId ns_tid,
diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h index a110df96..7475c7c 100644 --- a/content/browser/renderer_host/render_message_filter.h +++ b/content/browser/renderer_host/render_message_filter.h
@@ -78,12 +78,6 @@ // mojom::RenderMessageFilter: void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override; - void CreateNewWidget(int32_t opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateNewWidgetCallback callback) override; - void CreateFullscreenWidget(int opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateFullscreenWidgetCallback callback) override; void HasGpuProcess(HasGpuProcessCallback callback) override; #if defined(OS_LINUX) void SetThreadPriority(int32_t ns_tid,
diff --git a/content/browser/renderer_host/render_view_host_delegate.h b/content/browser/renderer_host/render_view_host_delegate.h index 76812d2db..4b87c47 100644 --- a/content/browser/renderer_host/render_view_host_delegate.h +++ b/content/browser/renderer_host/render_view_host_delegate.h
@@ -123,22 +123,6 @@ // The contents' preferred size changed. virtual void UpdatePreferredSize(const gfx::Size& pref_size) {} - // The page is trying to open a new widget (e.g. a select popup). The - // widget should be created associated with the given |route_id| in the - // process |render_process_id|, but it should not be shown yet. That should - // happen in response to ShowCreatedWidget. - virtual void CreateNewWidget(int32_t render_process_id, - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) {} - - // Creates a full screen RenderWidget. Similar to above. - virtual void CreateNewFullscreenWidget( - int32_t render_process_id, - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) {} - // Show the newly created widget with the specified bounds. // The widget is identified by the route_id passed to CreateNewWidget. virtual void ShowCreatedWidget(int process_id,
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index dca9a9b7..bb89107b 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -853,20 +853,6 @@ ClosePageIgnoringUnloadEvents(); } -void RenderViewHostImpl::CreateNewWidget( - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget) { - delegate_->CreateNewWidget(GetProcess()->GetID(), widget_route_id, - std::move(widget), this); -} - -void RenderViewHostImpl::CreateNewFullscreenWidget( - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget) { - delegate_->CreateNewFullscreenWidget(GetProcess()->GetID(), widget_route_id, - std::move(widget), this); -} - void RenderViewHostImpl::OnShowWidget(int widget_route_id, const gfx::Rect& initial_rect) { delegate_->ShowCreatedWidget(GetProcess()->GetID(), widget_route_id,
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h index 6c0ef47..9418a362 100644 --- a/content/browser/renderer_host/render_view_host_impl.h +++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -191,14 +191,6 @@ sudden_termination_allowed_ = enabled; } - // Creates a new RenderWidget with the given route id. - void CreateNewWidget(int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget); - - // Creates a full screen RenderWidget. - void CreateNewFullscreenWidget(int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget); - // Send RenderViewReady to observers once the process is launched, but not // re-entrantly. void PostRenderViewReady();
diff --git a/content/browser/renderer_host/render_view_host_unittest.cc b/content/browser/renderer_host/render_view_host_unittest.cc index f571c6d..2c7cc1e0 100644 --- a/content/browser/renderer_host/render_view_host_unittest.cc +++ b/content/browser/renderer_host/render_view_host_unittest.cc
@@ -82,16 +82,6 @@ EXPECT_EQ(GURL(kBlockedURL), controller().GetVisibleEntry()->GetURL()); } -// Create a full screen popup RenderWidgetHost and View. -TEST_F(RenderViewHostTest, CreateFullscreenWidget) { - int32_t routing_id = process()->GetNextRoutingID(); - - mojo::PendingRemote<mojom::Widget> widget; - std::unique_ptr<MockWidgetImpl> widget_impl = - std::make_unique<MockWidgetImpl>(widget.InitWithNewPipeAndPassReceiver()); - test_rvh()->CreateNewFullscreenWidget(routing_id, std::move(widget)); -} - // The RenderViewHost tells the renderer process about SetBackgroundOpaque() // changes. TEST_F(RenderViewHostTest, SetBackgroundOpaque) {
diff --git a/content/browser/renderer_host/render_widget_helper.cc b/content/browser/renderer_host/render_widget_helper.cc index 53abb69..7bc045c 100644 --- a/content/browser/renderer_host/render_widget_helper.cc +++ b/content/browser/renderer_host/render_widget_helper.cc
@@ -65,46 +65,4 @@ return (ci == g_widget_helpers.Get().end())? NULL : ci->second; } -void RenderWidgetHelper::CreateNewWidget( - int opener_id, - mojo::PendingRemote<mojom::Widget> widget, - int* route_id) { - *route_id = GetNextRoutingID(); - - base::PostTask(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&RenderWidgetHelper::OnCreateWidgetOnUI, this, - opener_id, *route_id, std::move(widget))); -} - -void RenderWidgetHelper::CreateNewFullscreenWidget( - int opener_id, - mojo::PendingRemote<mojom::Widget> widget, - int* route_id) { - *route_id = GetNextRoutingID(); - base::PostTask( - FROM_HERE, {BrowserThread::UI}, - base::BindOnce(&RenderWidgetHelper::OnCreateFullscreenWidgetOnUI, this, - opener_id, *route_id, std::move(widget))); -} - -void RenderWidgetHelper::OnCreateWidgetOnUI( - int32_t opener_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget) { - RenderViewHostImpl* host = RenderViewHostImpl::FromID( - render_process_id_, opener_id); - if (host) - host->CreateNewWidget(route_id, std::move(widget)); -} - -void RenderWidgetHelper::OnCreateFullscreenWidgetOnUI( - int32_t opener_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget) { - RenderViewHostImpl* host = RenderViewHostImpl::FromID( - render_process_id_, opener_id); - if (host) - host->CreateNewFullscreenWidget(route_id, std::move(widget)); -} - } // namespace content
diff --git a/content/browser/renderer_host/render_widget_helper.h b/content/browser/renderer_host/render_widget_helper.h index a6c7da70..89a85444 100644 --- a/content/browser/renderer_host/render_widget_helper.h +++ b/content/browser/renderer_host/render_widget_helper.h
@@ -45,14 +45,6 @@ // store in a scoped_refptr. static RenderWidgetHelper* FromProcessHostID(int render_process_host_id); - // IO THREAD ONLY ----------------------------------------------------------- - void CreateNewWidget(int opener_id, - mojo::PendingRemote<mojom::Widget>, - int* route_id); - void CreateNewFullscreenWidget(int opener_id, - mojo::PendingRemote<mojom::Widget>, - int* route_id); - private: friend class base::RefCountedThreadSafe<RenderWidgetHelper>; friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>; @@ -60,16 +52,6 @@ ~RenderWidgetHelper(); - // Called on the UI thread to finish creating a widget. - void OnCreateWidgetOnUI(int32_t opener_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget); - - // Called on the UI thread to create a fullscreen widget. - void OnCreateFullscreenWidgetOnUI(int32_t opener_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget); - int render_process_id_; // The next routing id to use.
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc index b0a27fc..17036d8e 100644 --- a/content/browser/security_exploit_browsertest.cc +++ b/content/browser/security_exploit_browsertest.cc
@@ -372,8 +372,7 @@ // different timing in the test, let's simulate a CreateNewWidget call coming // from the IO thread. Use the existing window routing id to cause a // deliberate collision. - pending_rfh->render_view_host()->CreateNewWidget(duplicate_routing_id, - std::move(widget)); + pending_rfh->CreateNewWidget(std::move(widget), base::DoNothing()); // If the above operation doesn't crash, the test has succeeded! }
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index ef4f7e9..aea0e0674 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3051,28 +3051,27 @@ return new_contents_impl; } -void WebContentsImpl::CreateNewWidget(int32_t render_process_id, - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) { +void WebContentsImpl::CreateNewWidget( + int32_t render_process_id, + int32_t widget_route_id, + mojo::PendingRemote<mojom::Widget> widget) { CreateNewWidget(render_process_id, widget_route_id, /*is_fullscreen=*/false, - std::move(widget), render_view_host); + std::move(widget)); } void WebContentsImpl::CreateNewFullscreenWidget( int32_t render_process_id, int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) { + mojo::PendingRemote<mojom::Widget> widget) { CreateNewWidget(render_process_id, widget_route_id, /*is_fullscreen=*/true, - std::move(widget), render_view_host); + std::move(widget)); } -void WebContentsImpl::CreateNewWidget(int32_t render_process_id, - int32_t route_id, - bool is_fullscreen, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) { +void WebContentsImpl::CreateNewWidget( + int32_t render_process_id, + int32_t route_id, + bool is_fullscreen, + mojo::PendingRemote<mojom::Widget> widget) { RenderProcessHost* process = RenderProcessHost::FromID(render_process_id); // A message to create a new widget can only come from an active process for // this WebContentsImpl instance. If any other process sends the request,
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index a1576606..93669b52 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h
@@ -706,6 +706,13 @@ void OnPageScaleFactorChanged(RenderFrameHostImpl* source, float page_scale_factor) override; bool HasSeenRecentScreenOrientationChange() override; + void CreateNewWidget(int32_t render_process_id, + int32_t route_id, + mojo::PendingRemote<mojom::Widget> widget) override; + void CreateNewFullscreenWidget( + int32_t render_process_id, + int32_t widget_route_id, + mojo::PendingRemote<mojom::Widget> widget) override; // RenderViewHostDelegate ---------------------------------------------------- RenderViewHostDelegateView* GetDelegateView() override; @@ -737,14 +744,6 @@ void OnIgnoredUIEvent() override; void Activate() override; void UpdatePreferredSize(const gfx::Size& pref_size) override; - void CreateNewWidget(int32_t render_process_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; - void CreateNewFullscreenWidget(int32_t render_process_id, - int32_t widget_route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; void ShowCreatedWidget(int process_id, int widget_route_id, const gfx::Rect& initial_rect) override; @@ -1475,8 +1474,7 @@ void CreateNewWidget(int32_t render_process_id, int32_t route_id, bool is_fullscreen, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host); + mojo::PendingRemote<mojom::Widget> widget); // Helper for ShowCreatedWidget/ShowCreatedFullscreenWidget. void ShowCreatedWidget(int process_id,
diff --git a/content/common/frame.mojom b/content/common/frame.mojom index 443ab90..db3ef34 100644 --- a/content/common/frame.mojom +++ b/content/common/frame.mojom
@@ -9,6 +9,7 @@ import "content/common/native_types.mojom"; import "content/common/navigation_client.mojom"; import "content/common/navigation_params.mojom"; +import "content/common/widget.mojom"; import "content/public/common/browser_controls_state.mojom"; import "content/public/common/transferrable_url_loader.mojom"; import "content/public/common/window_container_type.mojom"; @@ -377,6 +378,16 @@ FrameReplicationState replicated_state, mojo_base.mojom.UnguessableToken devtools_frame_token); + + // Similar to CreateNewWindow, except used for sub-widgets, like <select> + // dropdowns. + [Sync] CreateNewWidget(pending_remote<Widget> widget) + => (int32 routing_id); + + // Similar to CreateNewWidget except the widget is a full screen window. + [Sync] CreateNewFullscreenWidget(pending_remote<Widget> widget) + => (int32 routing_id); + // Creates and returns a KeepAliveHandle. IssueKeepAliveHandle(pending_receiver<KeepAliveHandle> keep_alive_handle);
diff --git a/content/common/render_message_filter.mojom b/content/common/render_message_filter.mojom index 18aa808..78a8f75 100644 --- a/content/common/render_message_filter.mojom +++ b/content/common/render_message_filter.mojom
@@ -4,25 +4,12 @@ module content.mojom; -import "content/common/input/input_handler.mojom"; -import "content/common/widget.mojom"; import "mojo/public/mojom/base/thread_priority.mojom"; -import "mojo/public/mojom/base/time.mojom"; -import "url/mojom/url.mojom"; interface RenderMessageFilter { // Synchronously generates a new routing ID for the caller. [Sync] GenerateRoutingID() => (int32 routing_id); - // Similar to CreateWindow, except used for sub-widgets, like <select> - // dropdowns. - [Sync] CreateNewWidget(int32 opener_id, pending_remote<Widget> widget) - => (int32 route_id); - - // Similar to CreateWidget except the widget is a full screen window. - [Sync] CreateFullscreenWidget(int32 opener_id, pending_remote<Widget> widget) - => (int32 route_id); - // A renderer sends this when it wants to know whether a gpu process exists. [Sync] HasGpuProcess() => (bool has_gpu_process);
diff --git a/content/public/test/mock_render_thread.cc b/content/public/test/mock_render_thread.cc index 77f8cb2..c0281ff 100644 --- a/content/public/test/mock_render_thread.cc +++ b/content/public/test/mock_render_thread.cc
@@ -38,9 +38,8 @@ class MockRenderMessageFilterImpl : public mojom::RenderMessageFilter { public: - explicit MockRenderMessageFilterImpl(MockRenderThread* thread) - : thread_(thread) {} - ~MockRenderMessageFilterImpl() override {} + MockRenderMessageFilterImpl() = default; + ~MockRenderMessageFilterImpl() override = default; // mojom::RenderMessageFilter: void GenerateRoutingID(GenerateRoutingIDCallback callback) override { @@ -48,27 +47,6 @@ std::move(callback).Run(MSG_ROUTING_NONE); } - void CreateNewWidget(int32_t opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateNewWidgetCallback callback) override { - // See comment in CreateNewWindow(). - NOTREACHED(); - } - - bool CreateNewWidget(int32_t opener_id, - mojo::PendingRemote<mojom::Widget> widget, - int32_t* route_id) override { - thread_->OnCreateWidget(opener_id, route_id); - return true; - } - - void CreateFullscreenWidget( - int opener_id, - mojo::PendingRemote<mojom::Widget> widget, - CreateFullscreenWidgetCallback callback) override { - NOTREACHED(); - } - void HasGpuProcess(HasGpuProcessCallback callback) override { std::move(callback).Run(false); } @@ -77,16 +55,13 @@ void SetThreadPriority(int32_t platform_thread_id, base::ThreadPriority thread_priority) override {} #endif - - private: - MockRenderThread* const thread_; }; } // namespace MockRenderThread::MockRenderThread() : next_routing_id_(kFirstGeneratedRoutingId), - mock_render_message_filter_(new MockRenderMessageFilterImpl(this)) { + mock_render_message_filter_(new MockRenderMessageFilterImpl()) { RenderThreadImpl::SetRenderMessageFilterForTesting( mock_render_message_filter_.get()); } @@ -252,12 +227,6 @@ return next_routing_id_++; } -// The Widget expects to be returned a valid route_id. -void MockRenderThread::OnCreateWidget(int opener_id, - int* route_id) { - *route_id = GetNextRoutingID(); -} - mojo::PendingReceiver<service_manager::mojom::InterfaceProvider> MockRenderThread::TakeInitialInterfaceProviderRequestForFrame( int32_t routing_id) {
diff --git a/content/public/test/mock_render_thread.h b/content/public/test/mock_render_thread.h index 2de1981..8b7bcab9 100644 --- a/content/public/test/mock_render_thread.h +++ b/content/public/test/mock_render_thread.h
@@ -107,9 +107,6 @@ void OnCreateWindow(const mojom::CreateNewWindowParams& params, mojom::CreateNewWindowReply* reply); - // The Widget expects to be returned a valid route_id. - void OnCreateWidget(int opener_id, int* route_id); - // Returns the receiver end of the InterfaceProvider interface whose client // end was passed in to construct RenderFrame with |routing_id|; if any. The // client end will be used by the RenderFrame to service interface receivers
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 6969b989f..4489dc3 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -2026,10 +2026,8 @@ // Synchronous IPC to obtain a routing id for the fullscreen widget. int32_t fullscreen_widget_routing_id = MSG_ROUTING_NONE; - if (!RenderThreadImpl::current_render_message_filter() - ->CreateFullscreenWidget(render_view()->GetRoutingID(), - std::move(widget_channel), - &fullscreen_widget_routing_id)) { + if (!GetFrameHost()->CreateNewFullscreenWidget( + std::move(widget_channel), &fullscreen_widget_routing_id)) { return nullptr; } RenderWidget::ShowCallback show_callback = @@ -6308,8 +6306,8 @@ navigation_client_remote.InitWithNewEndpointAndPassReceiver()); navigation_client_impl_->MarkWasInitiatedInThisFrame(); - mojo::PendingRemote<blink::mojom::NavigationInitiator> navigation_initiator( - std::move(info->navigation_initiator_handle), 0); + mojo::PendingRemote<blink::mojom::NavigationInitiator> navigation_initiator = + std::move(info->navigation_initiator_remote); bool current_frame_has_download_sandbox_flag = !frame_->IsAllowedToDownload(); bool has_download_sandbox_flag =
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 85271cf..1b137014 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -1348,8 +1348,8 @@ // Do a synchronous IPC to obtain a routing ID. int32_t widget_routing_id = MSG_ROUTING_NONE; bool success = - RenderThreadImpl::current_render_message_filter()->CreateNewWidget( - GetRoutingID(), std::move(widget_channel), &widget_routing_id); + RenderFrameImpl::FromWebFrame(creator)->GetFrameHost()->CreateNewWidget( + std::move(widget_channel), &widget_routing_id); if (!success) { // When the renderer is being killed the mojo message will fail. return nullptr;
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc index 5dc8c96..bb8048c 100644 --- a/content/renderer/service_worker/service_worker_context_client.cc +++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -483,11 +483,8 @@ auto preload_request = std::make_unique<NavigationPreloadRequest>( this, fetch_event_id, GURL(url), blink::mojom::FetchEventPreloadHandle::New( - mojo::PendingRemote<network::mojom::URLLoader>( - std::move(preload_handle->url_loader), - network::mojom::URLLoader::Version_), - mojo::PendingReceiver<network::mojom::URLLoaderClient>( - std::move(preload_handle->url_loader_client_receiver)))); + std::move(preload_handle->url_loader), + std::move(preload_handle->url_loader_client_receiver))); context_->preload_requests.AddWithID(std::move(preload_request), fetch_event_id); }
diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn index 5e8b1b27..6985ce7 100644 --- a/content/shell/BUILD.gn +++ b/content/shell/BUILD.gn
@@ -854,6 +854,7 @@ sources = [ "$root_out_dir/egl_intermediates/libEGL.dylib", "$root_out_dir/egl_intermediates/libGLESv2.dylib", + "$root_out_dir/egl_intermediates/libvulkan.dylib", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ] public_deps = [ "//ui/gl:angle_library_copy" ] @@ -864,9 +865,14 @@ sources = [ "$root_out_dir/egl_intermediates/libswiftshader_libEGL.dylib", "$root_out_dir/egl_intermediates/libswiftshader_libGLESv2.dylib", + "$root_out_dir/vk_intermediates/libvk_swiftshader.dylib", + "$root_out_dir/vk_intermediates/vk_swiftshader_icd.json", ] outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ] - public_deps = [ "//ui/gl:swiftshader_library_copy" ] + public_deps = [ + "//ui/gl:swiftshader_egl_library_copy", + "//ui/gl:swiftshader_vk_library_copy", + ] } }
diff --git a/content/test/gpu/gpu_tests/gpu_helper.py b/content/test/gpu/gpu_tests/gpu_helper.py index 6997e90a..724d536 100644 --- a/content/test/gpu/gpu_tests/gpu_helper.py +++ b/content/test/gpu/gpu_tests/gpu_helper.py
@@ -109,6 +109,9 @@ return 'opengles' elif 'OpenGL' in gl_renderer: return 'opengl' + # SwiftShader first because it also contains Vulkan + elif 'SwiftShader' in gl_renderer: + return 'swiftshader' elif 'Vulkan' in gl_renderer: return 'vulkan' return 'no_angle'
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py index 0520fa3..00f792b2 100644 --- a/content/test/gpu/gpu_tests/gpu_integration_test.py +++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
@@ -172,13 +172,9 @@ # generator? if len(args) == 1 and isinstance(args[0], tuple): args = args[0] - expected_crashes = self.GetExpectedCrashes(args) self.RunActualGpuTest(url, *args) except Exception: if ResultType.Failure in expected_results or should_retry_on_failure: - # We don't check the return value here since we'll be raising the - # caught exception already. - self._ClearExpectedCrashes(expected_crashes) if should_retry_on_failure: logging.exception('Exception while running flaky test %s', test_name) # For robustness, shut down the browser and restart it @@ -210,16 +206,9 @@ self._RestartBrowser('unexpected test failure') raise else: - # We always want to clear any expected crashes, but we don't bother - # failing the test if it's expected to fail. - actual_and_expected_crashes_match = self._ClearExpectedCrashes( - expected_crashes) if ResultType.Failure in expected_results: logging.warning( '%s was expected to fail, but passed.\n', test_name) - else: - if not actual_and_expected_crashes_match: - raise RuntimeError('Actual and expected crashes did not match') def _IsIntel(self, vendor_id): return vendor_id == 0x8086 @@ -249,59 +238,6 @@ return True return False - def _ClearExpectedCrashes(self, expected_crashes): - """Clears any expected crash minidumps so they're not caught later. - - Args: - expected_crashes: A dictionary mapping crash types as strings to the - number of expected crashes of that type. - - Returns: - True if the actual number of crashes matched the expected number, - otherwise False. - """ - # We can't get crashes if we don't have a browser. - if self.browser is None: - return True - # TODO(crbug.com/1006331): Properly match type once we have a way of - # checking the crashed process type without symbolizing the minidump. - total_expected_crashes = sum(expected_crashes.values()) - # The Telemetry-wide cleanup will handle any remaining minidumps, so early - # return here since we don't expect any, which saves us a bit of work. - if total_expected_crashes == 0: - return True - unsymbolized_minidumps = self.browser.GetAllUnsymbolizedMinidumpPaths() - total_unsymbolized_minidumps = len(unsymbolized_minidumps) - - if total_expected_crashes == total_unsymbolized_minidumps: - for path in unsymbolized_minidumps: - self.browser.IgnoreMinidump(path) - return True - - logging.error( - 'Found %d unsymbolized minidumps when we expected %d. Expected ' - 'crash breakdown: %s', total_unsymbolized_minidumps, - total_expected_crashes, expected_crashes) - return False - - def GetExpectedCrashes(self, args): - """Returns which crashes, per process type, to expect for the current test. - - Should be overridden by child classes to actually return valid data if - available. - - Args: - args: The list passed to _RunGpuTest() - - Returns: - A dictionary mapping crash types as strings to the number of expected - crashes of that type. Examples include 'gpu' for the GPU process, - 'renderer' for the renderer process, and 'browser' for the browser - process. - """ - del args - return {} - @classmethod def GenerateGpuTests(cls, options): """Subclasses must implement this to yield (test_name, url, args)
diff --git a/content/test/gpu/gpu_tests/pixel_integration_test.py b/content/test/gpu/gpu_tests/pixel_integration_test.py index a315e6a..02483819 100644 --- a/content/test/gpu/gpu_tests/pixel_integration_test.py +++ b/content/test/gpu/gpu_tests/pixel_integration_test.py
@@ -116,21 +116,6 @@ # test makes assertions about the active GPU. time.sleep(4) - def GetExpectedCrashes(self, args): - """Returns which crashes, per process type, to expect for the current test. - - Args: - args: The list passed to _RunGpuTest() - - Returns: - A dictionary mapping crash types as strings to the number of expected - crashes of that type. Examples include 'gpu' for the GPU process, - 'renderer' for the renderer process, and 'browser' for the browser - process. - """ - # args[0] is the PixelTestPage for the current test. - return args[0].expected_per_process_crashes - def _RunSkiaGoldBasedPixelTest(self, do_page_action, page): """Captures and compares a test image using Skia Gold.
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py index 54fc5e07..029364d 100644 --- a/content/test/gpu/gpu_tests/pixel_test_pages.py +++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -30,9 +30,6 @@ ] -CRASH_TYPE_GPU = 'gpu' - - class PixelTestPage(object): """A wrapper class mimicking the functionality of the PixelTestsStorySet from the old-style GPU tests. @@ -40,8 +37,7 @@ def __init__(self, url, name, test_rect, tolerance=2, browser_args=None, expected_colors=None, gpu_process_disabled=False, optional_action=None, restart_browser_after_test=False, - other_args=None, grace_period_end=None, - expected_per_process_crashes=None): + other_args=None, grace_period_end=None): super(PixelTestPage, self).__init__() self.url = url self.name = name @@ -79,10 +75,6 @@ # be triaged without turning the bots red. # This should be a datetime.date object. self.grace_period_end = grace_period_end - # This lets the test runner know that one or more crashes are expected as - # part of the test. Should be a map of process type (str) to expected number - # of crashes (int). - self.expected_per_process_crashes = expected_per_process_crashes or {} def CopyWithNewBrowserArgsAndSuffix(self, browser_args, suffix): return PixelTestPage( @@ -476,10 +468,7 @@ base_name + '_Video_Context_Loss_MP4', test_rect=[0, 0, 240, 135], tolerance=tolerance, - expected_colors=_FOUR_COLOR_VIDEO_240x135_EXPECTED_COLORS, - expected_per_process_crashes={ - CRASH_TYPE_GPU: 1, - }), + expected_colors=_FOUR_COLOR_VIDEO_240x135_EXPECTED_COLORS), # The VP9 test clip is primarily software decoded on bots. PixelTestPage( @@ -488,10 +477,7 @@ base_name + '_Video_Context_Loss_VP9', test_rect=[0, 0, 240, 135], tolerance=tolerance_vp9, - expected_colors=_FOUR_COLOR_VIDEO_240x135_EXPECTED_COLORS, - expected_per_process_crashes={ - CRASH_TYPE_GPU: 1, - }), + expected_colors=_FOUR_COLOR_VIDEO_240x135_EXPECTED_COLORS), PixelTestPage( 'pixel_video_backdrop_filter.html',
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt index 9bc4f2a6..0e0a89e 100644 --- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -214,6 +214,7 @@ crbug.com/887578 [ opengl win passthrough nvidia ] deqp/data/gles3/shaders/conversions.html [ RetryOnFailure ] crbug.com/965648 [ opengl win passthrough nvidia-0x1cb3 ] deqp/functional/gles3/shaderstruct.html [ RetryOnFailure ] crbug.com/822733 [ opengl win nvidia-0x1cb3 ] deqp/functional/gles3/transformfeedback/* [ RetryOnFailure ] +crbug.com/1060024 [ opengl win passthrough nvidia-0x1cb3 ] deqp/functional/gles3/shaderloop_do_while.html [ RetryOnFailure ] # Win / AMD
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py index 9880234..5fbd02b 100644 --- a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py +++ b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
@@ -235,6 +235,7 @@ 'opengl': 'gl', 'opengles': 'gles', 'vulkan': 'vulkan', + 'swiftshader': 'swiftshader', } current_angle_backend = gpu_helper.GetANGLERenderer(gpu_info) if (current_angle_backend not in known_backend_flag_map or
diff --git a/content/test/test_render_frame.cc b/content/test/test_render_frame.cc index daccd1e..8d09a93 100644 --- a/content/test/test_render_frame.cc +++ b/content/test/test_render_frame.cc
@@ -134,6 +134,25 @@ return true; } + bool CreateNewWidget(mojo::PendingRemote<::content::mojom::Widget> widget, + int32_t* out_routing_id) override { + MockRenderThread* mock_render_thread = + static_cast<MockRenderThread*>(RenderThread::Get()); + *out_routing_id = mock_render_thread->GetNextRoutingID(); + return true; + } + + void CreateNewWidget(mojo::PendingRemote<mojom::Widget> widget, + CreateNewWidgetCallback callback) override { + std::move(callback).Run(MSG_ROUTING_NONE); + } + + void CreateNewFullscreenWidget( + mojo::PendingRemote<mojom::Widget> widget, + CreateNewFullscreenWidgetCallback callback) override { + std::move(callback).Run(MSG_ROUTING_NONE); + } + void CreatePortal(mojo::PendingAssociatedReceiver<blink::mojom::Portal>, mojo::PendingAssociatedRemote<blink::mojom::PortalClient>, CreatePortalCallback callback) override {
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc index 0219fd4..2b78e77b 100644 --- a/content/test/test_render_frame_host.cc +++ b/content/test/test_render_frame_host.cc
@@ -63,15 +63,13 @@ RenderFrameHostDelegate* delegate, FrameTree* frame_tree, FrameTreeNode* frame_tree_node, - int32_t routing_id, - int32_t widget_routing_id) + int32_t routing_id) : RenderFrameHostImpl(site_instance, std::move(render_view_host), delegate, frame_tree, frame_tree_node, routing_id, - widget_routing_id, /*renderer_initiated_creation=*/false), child_creation_observer_(delegate ? delegate->GetAsWebContents() : nullptr),
diff --git a/content/test/test_render_frame_host.h b/content/test/test_render_frame_host.h index 5f90f84..b9d7bab 100644 --- a/content/test/test_render_frame_host.h +++ b/content/test/test_render_frame_host.h
@@ -55,8 +55,7 @@ RenderFrameHostDelegate* delegate, FrameTree* frame_tree, FrameTreeNode* frame_tree_node, - int32_t routing_id, - int32_t widget_routing_id); + int32_t routing_id); ~TestRenderFrameHost() override; // RenderFrameHostImpl overrides (same values, but in Test*/Mock* types) @@ -208,6 +207,9 @@ // callbacks. void SimulateLoadingCompleted(LoadingScenario loading_scenario); + // Expose CreateNewFullscreenWidget for tests. + using RenderFrameHostImpl::CreateNewFullscreenWidget; + protected: void SendCommitNavigation( mojom::NavigationClient* navigation_client,
diff --git a/content/test/test_render_frame_host_factory.cc b/content/test/test_render_frame_host_factory.cc index e808fab..e4b3526e 100644 --- a/content/test/test_render_frame_host_factory.cc +++ b/content/test/test_render_frame_host_factory.cc
@@ -26,12 +26,11 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) { DCHECK(!renderer_initiated_creation); return std::make_unique<TestRenderFrameHost>( site_instance, std::move(render_view_host), delegate, frame_tree, - frame_tree_node, routing_id, widget_routing_id); + frame_tree_node, routing_id); } } // namespace content
diff --git a/content/test/test_render_frame_host_factory.h b/content/test/test_render_frame_host_factory.h index f27d534..fb72e0bb 100644 --- a/content/test/test_render_frame_host_factory.h +++ b/content/test/test_render_frame_host_factory.h
@@ -34,7 +34,6 @@ FrameTree* frame_tree, FrameTreeNode* frame_tree_node, int32_t routing_id, - int32_t widget_routing_id, bool renderer_initiated_creation) override; private:
diff --git a/content/test/test_web_contents.cc b/content/test/test_web_contents.cc index 3d65ebf..468abd7 100644 --- a/content/test/test_web_contents.cc +++ b/content/test/test_web_contents.cc
@@ -385,16 +385,15 @@ return nullptr; } -void TestWebContents::CreateNewWidget(int32_t render_process_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) {} +void TestWebContents::CreateNewWidget( + int32_t render_process_id, + int32_t route_id, + mojo::PendingRemote<mojom::Widget> widget) {} void TestWebContents::CreateNewFullscreenWidget( int32_t render_process_id, int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) {} + mojo::PendingRemote<mojom::Widget> widget) {} void TestWebContents::ShowCreatedWindow(int process_id, int route_id,
diff --git a/content/test/test_web_contents.h b/content/test/test_web_contents.h index a9b2c73..3e42429 100644 --- a/content/test/test_web_contents.h +++ b/content/test/test_web_contents.h
@@ -179,12 +179,11 @@ SessionStorageNamespace* session_storage_namespace) override; void CreateNewWidget(int32_t render_process_id, int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; - void CreateNewFullscreenWidget(int32_t render_process_id, - int32_t route_id, - mojo::PendingRemote<mojom::Widget> widget, - RenderViewHostImpl* render_view_host) override; + mojo::PendingRemote<mojom::Widget> widget) override; + void CreateNewFullscreenWidget( + int32_t render_process_id, + int32_t route_id, + mojo::PendingRemote<mojom::Widget> widget) override; void ShowCreatedWindow(int process_id, int route_id, WindowOpenDisposition disposition,
diff --git a/gpu/command_buffer/client/webgpu_cmd_helper_autogen.h b/gpu/command_buffer/client/webgpu_cmd_helper_autogen.h index ce8d364..750268f 100644 --- a/gpu/command_buffer/client/webgpu_cmd_helper_autogen.h +++ b/gpu/command_buffer/client/webgpu_cmd_helper_autogen.h
@@ -37,11 +37,13 @@ } } -void DissociateMailbox(GLuint texture_id, GLuint texture_generation) { +void DissociateMailbox(GLuint64 device_client_id, + GLuint texture_id, + GLuint texture_generation) { webgpu::cmds::DissociateMailbox* c = GetCmdSpace<webgpu::cmds::DissociateMailbox>(); if (c) { - c->Init(texture_id, texture_generation); + c->Init(device_client_id, texture_id, texture_generation); } }
diff --git a/gpu/command_buffer/client/webgpu_implementation_autogen.h b/gpu/command_buffer/client/webgpu_implementation_autogen.h index 07702e40..8458b85 100644 --- a/gpu/command_buffer/client/webgpu_implementation_autogen.h +++ b/gpu/command_buffer/client/webgpu_implementation_autogen.h
@@ -20,6 +20,8 @@ GLuint usage, const GLbyte* mailbox) override; -void DissociateMailbox(GLuint texture_id, GLuint texture_generation) override; +void DissociateMailbox(GLuint64 device_client_id, + GLuint texture_id, + GLuint texture_generation) override; #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/webgpu_implementation_impl_autogen.h b/gpu/command_buffer/client/webgpu_implementation_impl_autogen.h index 4762273..ce49c09 100644 --- a/gpu/command_buffer/client/webgpu_implementation_impl_autogen.h +++ b/gpu/command_buffer/client/webgpu_implementation_impl_autogen.h
@@ -32,12 +32,14 @@ CheckGLError(); } -void WebGPUImplementation::DissociateMailbox(GLuint texture_id, +void WebGPUImplementation::DissociateMailbox(GLuint64 device_client_id, + GLuint texture_id, GLuint texture_generation) { GPU_CLIENT_SINGLE_THREAD_CHECK(); - GPU_CLIENT_LOG("[" << GetLogPrefix() << "] wgDissociateMailbox(" << texture_id - << ", " << texture_generation << ")"); - helper_->DissociateMailbox(texture_id, texture_generation); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] wgDissociateMailbox(" + << device_client_id << ", " << texture_id << ", " + << texture_generation << ")"); + helper_->DissociateMailbox(device_client_id, texture_id, texture_generation); } #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_IMPLEMENTATION_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/webgpu_implementation_unittest_autogen.h b/gpu/command_buffer/client/webgpu_implementation_unittest_autogen.h index 66a91a3..d2f97a2 100644 --- a/gpu/command_buffer/client/webgpu_implementation_unittest_autogen.h +++ b/gpu/command_buffer/client/webgpu_implementation_unittest_autogen.h
@@ -34,9 +34,9 @@ cmds::DissociateMailbox cmd; }; Cmds expected; - expected.cmd.Init(1, 2); + expected.cmd.Init(1, 2, 3); - gl_->DissociateMailbox(1, 2); + gl_->DissociateMailbox(1, 2, 3); EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); } #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_IMPLEMENTATION_UNITTEST_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/webgpu_interface_autogen.h b/gpu/command_buffer/client/webgpu_interface_autogen.h index 2c043da..10af23f 100644 --- a/gpu/command_buffer/client/webgpu_interface_autogen.h +++ b/gpu/command_buffer/client/webgpu_interface_autogen.h
@@ -19,6 +19,7 @@ GLuint generation, GLuint usage, const GLbyte* mailbox) = 0; -virtual void DissociateMailbox(GLuint texture_id, +virtual void DissociateMailbox(GLuint64 device_client_id, + GLuint texture_id, GLuint texture_generation) = 0; #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_INTERFACE_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/webgpu_interface_stub_autogen.h b/gpu/command_buffer/client/webgpu_interface_stub_autogen.h index 45345ad..18a083a 100644 --- a/gpu/command_buffer/client/webgpu_interface_stub_autogen.h +++ b/gpu/command_buffer/client/webgpu_interface_stub_autogen.h
@@ -18,5 +18,7 @@ GLuint generation, GLuint usage, const GLbyte* mailbox) override; -void DissociateMailbox(GLuint texture_id, GLuint texture_generation) override; +void DissociateMailbox(GLuint64 device_client_id, + GLuint texture_id, + GLuint texture_generation) override; #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_INTERFACE_STUB_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/webgpu_interface_stub_impl_autogen.h b/gpu/command_buffer/client/webgpu_interface_stub_impl_autogen.h index 9190976b..cf164130 100644 --- a/gpu/command_buffer/client/webgpu_interface_stub_impl_autogen.h +++ b/gpu/command_buffer/client/webgpu_interface_stub_impl_autogen.h
@@ -18,6 +18,7 @@ GLuint /* generation */, GLuint /* usage */, const GLbyte* /* mailbox */) {} -void WebGPUInterfaceStub::DissociateMailbox(GLuint /* texture_id */, +void WebGPUInterfaceStub::DissociateMailbox(GLuint64 /* device_client_id */, + GLuint /* texture_id */, GLuint /* texture_generation */) {} #endif // GPU_COMMAND_BUFFER_CLIENT_WEBGPU_INTERFACE_STUB_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/common/gpu_memory_buffer_support.cc b/gpu/command_buffer/common/gpu_memory_buffer_support.cc index bc4862c..79ea620 100644 --- a/gpu/command_buffer/common/gpu_memory_buffer_support.cc +++ b/gpu/command_buffer/common/gpu_memory_buffer_support.cc
@@ -14,6 +14,10 @@ namespace gpu { +#if defined(OS_MACOSX) +static uint32_t macos_specific_texture_target = GL_TEXTURE_RECTANGLE_ARB; +#endif // defined(OS_MACOSX) + bool IsImageFromGpuMemoryBufferFormatSupported( gfx::BufferFormat format, const gpu::Capabilities& capabilities) { @@ -49,7 +53,7 @@ uint32_t GetPlatformSpecificTextureTarget() { #if defined(OS_MACOSX) - return GL_TEXTURE_RECTANGLE_ARB; + return macos_specific_texture_target; #elif defined(OS_ANDROID) || defined(OS_LINUX) return GL_TEXTURE_EXTERNAL_OES; #elif defined(OS_WIN) || defined(OS_FUCHSIA) @@ -62,6 +66,14 @@ #endif } +#if defined(OS_MACOSX) +GPU_EXPORT void SetMacOSSpecificTextureTarget(uint32_t texture_target) { + DCHECK(texture_target == GL_TEXTURE_2D || + texture_target == GL_TEXTURE_RECTANGLE_ARB); + macos_specific_texture_target = texture_target; +} +#endif // defined(OS_MACOSX) + GPU_EXPORT uint32_t GetBufferTextureTarget(gfx::BufferUsage usage, gfx::BufferFormat format, const Capabilities& capabilities) {
diff --git a/gpu/command_buffer/common/gpu_memory_buffer_support.h b/gpu/command_buffer/common/gpu_memory_buffer_support.h index 7d51d66..7da3fb9 100644 --- a/gpu/command_buffer/common/gpu_memory_buffer_support.h +++ b/gpu/command_buffer/common/gpu_memory_buffer_support.h
@@ -5,6 +5,7 @@ #ifndef GPU_COMMAND_BUFFER_COMMON_GPU_MEMORY_BUFFER_SUPPORT_H_ #define GPU_COMMAND_BUFFER_COMMON_GPU_MEMORY_BUFFER_SUPPORT_H_ +#include "build/build_config.h" #include "gpu/gpu_export.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/geometry/size.h" @@ -53,6 +54,11 @@ // Returns the texture target to use with native GpuMemoryBuffers. GPU_EXPORT uint32_t GetPlatformSpecificTextureTarget(); +#if defined(OS_MACOSX) +// Set the texture target to use with MacOS native GpuMemoryBuffers. +GPU_EXPORT void SetMacOSSpecificTextureTarget(uint32_t texture_target); +#endif // defined(OS_MACOSX) + // Returns the texture target to be used for the given |usage| and |format| // based on |capabilities|. GPU_EXPORT uint32_t GetBufferTextureTarget(gfx::BufferUsage usage,
diff --git a/gpu/command_buffer/common/skia_utils.cc b/gpu/command_buffer/common/skia_utils.cc index 4eeb1bee..07070c76 100644 --- a/gpu/command_buffer/common/skia_utils.cc +++ b/gpu/command_buffer/common/skia_utils.cc
@@ -41,6 +41,12 @@ auto* dump = GetOrCreateAllocatorDump(dump_name); dump->AddScalar(value_name, units, value); } + void dumpStringValue(const char* dump_name, + const char* value_name, + const char* value) override { + auto* dump = GetOrCreateAllocatorDump(dump_name); + dump->AddString(value_name, "", value); + } void setMemoryBacking(const char* dump_name, const char* backing_type,
diff --git a/gpu/command_buffer/common/webgpu_cmd_format_autogen.h b/gpu/command_buffer/common/webgpu_cmd_format_autogen.h index de415eb7..b975fb3 100644 --- a/gpu/command_buffer/common/webgpu_cmd_format_autogen.h +++ b/gpu/command_buffer/common/webgpu_cmd_format_autogen.h
@@ -157,30 +157,50 @@ void SetHeader() { header.SetCmd<ValueType>(); } - void Init(GLuint _texture_id, GLuint _texture_generation) { + void Init(GLuint64 _device_client_id, + GLuint _texture_id, + GLuint _texture_generation) { SetHeader(); + gles2::GLES2Util::MapUint64ToTwoUint32( + static_cast<uint64_t>(_device_client_id), &device_client_id_0, + &device_client_id_1); texture_id = _texture_id; texture_generation = _texture_generation; } - void* Set(void* cmd, GLuint _texture_id, GLuint _texture_generation) { - static_cast<ValueType*>(cmd)->Init(_texture_id, _texture_generation); + void* Set(void* cmd, + GLuint64 _device_client_id, + GLuint _texture_id, + GLuint _texture_generation) { + static_cast<ValueType*>(cmd)->Init(_device_client_id, _texture_id, + _texture_generation); return NextCmdAddress<ValueType>(cmd); } + GLuint64 device_client_id() const volatile { + return static_cast<GLuint64>(gles2::GLES2Util::MapTwoUint32ToUint64( + device_client_id_0, device_client_id_1)); + } + gpu::CommandHeader header; + uint32_t device_client_id_0; + uint32_t device_client_id_1; uint32_t texture_id; uint32_t texture_generation; }; -static_assert(sizeof(DissociateMailbox) == 12, - "size of DissociateMailbox should be 12"); +static_assert(sizeof(DissociateMailbox) == 20, + "size of DissociateMailbox should be 20"); static_assert(offsetof(DissociateMailbox, header) == 0, "offset of DissociateMailbox header should be 0"); -static_assert(offsetof(DissociateMailbox, texture_id) == 4, - "offset of DissociateMailbox texture_id should be 4"); -static_assert(offsetof(DissociateMailbox, texture_generation) == 8, - "offset of DissociateMailbox texture_generation should be 8"); +static_assert(offsetof(DissociateMailbox, device_client_id_0) == 4, + "offset of DissociateMailbox device_client_id_0 should be 4"); +static_assert(offsetof(DissociateMailbox, device_client_id_1) == 8, + "offset of DissociateMailbox device_client_id_1 should be 8"); +static_assert(offsetof(DissociateMailbox, texture_id) == 12, + "offset of DissociateMailbox texture_id should be 12"); +static_assert(offsetof(DissociateMailbox, texture_generation) == 16, + "offset of DissociateMailbox texture_generation should be 16"); struct RequestAdapter { typedef RequestAdapter ValueType;
diff --git a/gpu/command_buffer/common/webgpu_cmd_format_test_autogen.h b/gpu/command_buffer/common/webgpu_cmd_format_test_autogen.h index 50960d2..589388b 100644 --- a/gpu/command_buffer/common/webgpu_cmd_format_test_autogen.h +++ b/gpu/command_buffer/common/webgpu_cmd_format_test_autogen.h
@@ -70,13 +70,14 @@ TEST_F(WebGPUFormatTest, DissociateMailbox) { cmds::DissociateMailbox& cmd = *GetBufferAs<cmds::DissociateMailbox>(); - void* next_cmd = - cmd.Set(&cmd, static_cast<GLuint>(11), static_cast<GLuint>(12)); + void* next_cmd = cmd.Set(&cmd, static_cast<GLuint64>(11), + static_cast<GLuint>(12), static_cast<GLuint>(13)); EXPECT_EQ(static_cast<uint32_t>(cmds::DissociateMailbox::kCmdId), cmd.header.command); EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u); - EXPECT_EQ(static_cast<GLuint>(11), cmd.texture_id); - EXPECT_EQ(static_cast<GLuint>(12), cmd.texture_generation); + EXPECT_EQ(static_cast<GLuint64>(11), cmd.device_client_id()); + EXPECT_EQ(static_cast<GLuint>(12), cmd.texture_id); + EXPECT_EQ(static_cast<GLuint>(13), cmd.texture_generation); CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd)); }
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 59b608e..57f9346 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
@@ -38,7 +38,9 @@ #include "ui/gl/gl_gl_api_implementation.h" #include "ui/gl/gl_image_native_pixmap.h" #include "ui/gl/gl_image_shared_memory.h" +#include "ui/gl/gl_implementation.h" #include "ui/gl/gl_version_info.h" +#include "ui/gl/scoped_binders.h" #include "ui/gl/shared_gl_fence_egl.h" #include "ui/gl/trace_util.h" @@ -241,6 +243,19 @@ return texture_passthrough_; } + void EndAccess() override { + GLenum target = texture_passthrough_->target(); + gl::GLImage* image = texture_passthrough_->GetLevelImage(target, 0); + if (!image) + return; + if (image->ShouldBindOrCopy() == gl::GLImage::BIND) { + gl::ScopedTextureBinder binder(target, + texture_passthrough_->service_id()); + image->ReleaseTexImage(target); + image->BindTexImage(target); + } + } + private: scoped_refptr<gles2::TexturePassthrough> texture_passthrough_; }; @@ -784,8 +799,9 @@ gl::BufferFormatToGLInternalFormat(buffer_format)); if (base::Contains(gpu_preferences.texture_target_exception_list, gfx::BufferUsageAndFormat(gfx::BufferUsage::SCANOUT, - buffer_format))) + buffer_format))) { info.target_for_scanout = gpu::GetPlatformSpecificTextureTarget(); + } } } @@ -862,8 +878,17 @@ // bindable. Currently NativeBufferNeedsPlatformSpecificTextureTarget can // only return false on Chrome OS where GLImageNativePixmap is used which is // always bindable. +#if DCHECK_IS_ON() + bool texture_2d_support = false; +#if defined(OS_MACOSX) + // If the PlatformSpecificTextureTarget on Mac is GL_TEXTURE_2D, this is + // supported. + texture_2d_support = + (gpu::GetPlatformSpecificTextureTarget() == GL_TEXTURE_2D); +#endif // defined(OS_MACOSX) DCHECK(handle.type == gfx::SHARED_MEMORY_BUFFER || target != GL_TEXTURE_2D || - image->ShouldBindOrCopy() == gl::GLImage::BIND); + texture_2d_support || image->ShouldBindOrCopy() == gl::GLImage::BIND); +#endif // DCHECK_IS_ON() if (color_space.IsValid()) image->SetColorSpace(color_space);
diff --git a/gpu/command_buffer/service/shared_image_representation.h b/gpu/command_buffer/service/shared_image_representation.h index 83dd216f..f4278420 100644 --- a/gpu/command_buffer/service/shared_image_representation.h +++ b/gpu/command_buffer/service/shared_image_representation.h
@@ -158,6 +158,7 @@ protected: friend class SharedImageRepresentationSkiaGL; + friend class SharedImageRepresentationGLTextureImpl; // Can be overridden to handle clear state tracking when GL access begins or // ends.
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 8e895d7..5dd3de8 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -150,13 +150,34 @@ void PerformPollingWork(); error::Error HandleDawnCommands(const volatile char* dawn_commands, size_t size); - bool InjectTexture(WGPUTexture texture, uint32_t id, uint32_t generation); + + error::Error AssociateMailbox( + SharedImageRepresentationFactory* shared_image_representation_factory, + const Mailbox& mailbox, + uint32_t texture_id, + uint32_t texture_generation, + uint32_t usage); + error::Error DissociateMailbox(uint32_t texture_id, + uint32_t texture_generation); private: WGPUDevice wgpu_device_ = nullptr; std::unique_ptr<dawn_wire::WireServer> wire_server_; std::unique_ptr<WireServerCommandSerializer> wire_serializer_; const DawnProcTable dawn_procs_; + + // Helper struct which holds a representation and its ScopedAccess, ensuring + // safe destruction order. + struct SharedImageRepresentationAndAccess { + std::unique_ptr<SharedImageRepresentationDawn> representation; + std::unique_ptr<SharedImageRepresentationDawn::ScopedAccess> access; + }; + + // Map from the <ID, generation> pair for a wire texture to the shared image + // representation and access for it. + base::flat_map<std::tuple<uint32_t, uint32_t>, + std::unique_ptr<SharedImageRepresentationAndAccess>> + associated_shared_image_map_; }; DawnDeviceAndWireServer::DawnDeviceAndWireServer( @@ -182,6 +203,8 @@ } DawnDeviceAndWireServer::~DawnDeviceAndWireServer() { + associated_shared_image_map_.clear(); + // Reset the wire server first so all objects are destroyed before the // device. // TODO(enga): Handle Device/Context lost. @@ -209,10 +232,79 @@ return error::kNoError; } -bool DawnDeviceAndWireServer::InjectTexture(WGPUTexture texture, - uint32_t id, - uint32_t generation) { - return wire_server_->InjectTexture(texture, id, generation); +error::Error DawnDeviceAndWireServer::AssociateMailbox( + SharedImageRepresentationFactory* shared_image_representation_factory, + const Mailbox& mailbox, + uint32_t texture_id, + uint32_t texture_generation, + uint32_t usage) { + static constexpr uint32_t kAllowedTextureUsages = static_cast<uint32_t>( + WGPUTextureUsage_CopySrc | WGPUTextureUsage_CopyDst | + WGPUTextureUsage_Sampled | WGPUTextureUsage_OutputAttachment); + if (usage & ~kAllowedTextureUsages) { + DLOG(ERROR) << "AssociateMailbox: Invalid usage"; + return error::kInvalidArguments; + } + WGPUTextureUsage wgpu_usage = static_cast<WGPUTextureUsage>(usage); + + // Create a WGPUTexture from the mailbox. + std::unique_ptr<SharedImageRepresentationDawn> shared_image = + shared_image_representation_factory->ProduceDawn(mailbox, wgpu_device_); + if (!shared_image) { + DLOG(ERROR) << "AssociateMailbox: Couldn't produce shared image"; + return error::kInvalidArguments; + } + + // TODO(cwallez@chromium.org): Handle texture clearing. We should either + // pre-clear textures, or implement a way to detect whether DAWN has cleared + // a texture. crbug.com/1036080 + std::unique_ptr<SharedImageRepresentationDawn::ScopedAccess> + shared_image_access = shared_image->BeginScopedAccess( + wgpu_usage, SharedImageRepresentation::AllowUnclearedAccess::kYes); + if (!shared_image_access) { + DLOG(ERROR) << "AssociateMailbox: Couldn't begin shared image access"; + return error::kInvalidArguments; + } + + // Inject the texture in the dawn_wire::Server and remember which shared image + // it is associated with. + if (!wire_server_->InjectTexture(shared_image_access->texture(), texture_id, + texture_generation)) { + DLOG(ERROR) << "AssociateMailbox: Invalid texture ID"; + return error::kInvalidArguments; + } + + std::unique_ptr<SharedImageRepresentationAndAccess> + representation_and_access = + std::make_unique<SharedImageRepresentationAndAccess>(); + representation_and_access->representation = std::move(shared_image); + representation_and_access->access = std::move(shared_image_access); + + std::tuple<uint32_t, uint32_t> id_and_generation{texture_id, + texture_generation}; + auto insertion = associated_shared_image_map_.emplace( + id_and_generation, std::move(representation_and_access)); + + // InjectTexture already validated that the (ID, generation) can't have been + // registered before. + DCHECK(insertion.second); + + return error::kNoError; +} + +error::Error DawnDeviceAndWireServer::DissociateMailbox( + uint32_t texture_id, + uint32_t texture_generation) { + std::tuple<uint32_t, uint32_t> id_and_generation{texture_id, + texture_generation}; + auto it = associated_shared_image_map_.find(id_and_generation); + if (it == associated_shared_image_map_.end()) { + DLOG(ERROR) << "DissociateMailbox: Invalid texture ID"; + return error::kInvalidArguments; + } + + associated_shared_image_map_.erase(it); + return error::kNoError; } } // namespace @@ -461,19 +553,6 @@ std::unique_ptr<SharedImageRepresentationFactory> shared_image_representation_factory_; - // Helper struct which holds a representation and its ScopedAccess, ensuring - // safe destruction order. - struct SharedImageRepresentationAndAccess { - std::unique_ptr<SharedImageRepresentationDawn> representation; - std::unique_ptr<SharedImageRepresentationDawn::ScopedAccess> access; - }; - - // Map from the <ID, generation> pair for a wire texture to the shared image - // representation and access for it. - base::flat_map<std::tuple<uint32_t, uint32_t>, - std::unique_ptr<SharedImageRepresentationAndAccess>> - associated_shared_image_map_; - base::flat_map<DawnDeviceClientID, std::unique_ptr<DawnDeviceAndWireServer>> dawn_device_and_wire_servers_; @@ -525,7 +604,6 @@ } WebGPUDecoderImpl::~WebGPUDecoderImpl() { - associated_shared_image_map_.clear(); dawn_device_and_wire_servers_.clear(); } @@ -885,66 +963,17 @@ DLOG_IF(ERROR, !mailbox.Verify()) << "AssociateMailbox was passed an invalid mailbox"; + // Get the correct DawnDeviceAndWireServer auto iter = dawn_device_and_wire_servers_.find(device_client_id); if (iter == dawn_device_and_wire_servers_.end() || device_generation != 0) { DLOG(ERROR) << "AssociateMailbox: Invalid device client ID"; return error::kInvalidArguments; } - DawnDeviceAndWireServer* dawn_device_and_wire_server = iter->second.get(); - static constexpr uint32_t kAllowedTextureUsages = static_cast<uint32_t>( - WGPUTextureUsage_CopySrc | WGPUTextureUsage_CopyDst | - WGPUTextureUsage_Sampled | WGPUTextureUsage_OutputAttachment); - if (usage & ~kAllowedTextureUsages) { - DLOG(ERROR) << "AssociateMailbox: Invalid usage"; - return error::kInvalidArguments; - } - WGPUTextureUsage wgpu_usage = static_cast<WGPUTextureUsage>(usage); - // Create a WGPUTexture from the mailbox. - WGPUDevice wgpu_device = dawn_device_and_wire_server->GetWGPUDevice(); - DCHECK(wgpu_device); - std::unique_ptr<SharedImageRepresentationDawn> shared_image = - shared_image_representation_factory_->ProduceDawn(mailbox, wgpu_device); - if (!shared_image) { - DLOG(ERROR) << "AssociateMailbox: Couldn't produce shared image"; - return error::kInvalidArguments; - } - - // TODO(cwallez@chromium.org): Handle texture clearing. We should either - // pre-clear textures, or implement a way to detect whether DAWN has cleared - // a texture. crbug.com/1036080 - std::unique_ptr<SharedImageRepresentationDawn::ScopedAccess> - shared_image_access = shared_image->BeginScopedAccess( - wgpu_usage, SharedImageRepresentation::AllowUnclearedAccess::kYes); - if (!shared_image_access) { - DLOG(ERROR) << "AssociateMailbox: Couldn't begin shared image access"; - return error::kInvalidArguments; - } - - // Inject the texture in the dawn_wire::Server and remember which shared image - // it is associated with. - if (!dawn_device_and_wire_server->InjectTexture( - shared_image_access->texture(), id, generation)) { - DLOG(ERROR) << "AssociateMailbox: Invalid texture ID"; - return error::kInvalidArguments; - } - - std::unique_ptr<SharedImageRepresentationAndAccess> - representation_and_access = - std::make_unique<SharedImageRepresentationAndAccess>(); - representation_and_access->representation = std::move(shared_image); - representation_and_access->access = std::move(shared_image_access); - - std::tuple<uint32_t, uint32_t> id_and_generation{id, generation}; - auto insertion = associated_shared_image_map_.emplace( - id_and_generation, std::move(representation_and_access)); - - // InjectTexture already validated that the (ID, generation) can't have been - // registered before. - DCHECK(insertion.second); - - return error::kNoError; + return dawn_device_and_wire_server->AssociateMailbox( + shared_image_representation_factory_.get(), mailbox, id, generation, + usage); } error::Error WebGPUDecoderImpl::HandleDissociateMailbox( @@ -952,19 +981,21 @@ const volatile void* cmd_data) { const volatile webgpu::cmds::DissociateMailbox& c = *static_cast<const volatile webgpu::cmds::DissociateMailbox*>(cmd_data); + DawnDeviceClientID device_client_id = + static_cast<DawnDeviceClientID>(c.device_client_id()); uint32_t texture_id = static_cast<uint32_t>(c.texture_id); uint32_t texture_generation = static_cast<uint32_t>(c.texture_generation); - std::tuple<uint32_t, uint32_t> id_and_generation{texture_id, - texture_generation}; - auto it = associated_shared_image_map_.find(id_and_generation); - if (it == associated_shared_image_map_.end()) { - DLOG(ERROR) << "DissociateMailbox: Invalid texture ID"; + // Get the correct DawnDeviceAndWireServer + auto iter = dawn_device_and_wire_servers_.find(device_client_id); + if (iter == dawn_device_and_wire_servers_.end()) { + DLOG(ERROR) << "AssociateMailbox: Invalid device client ID"; return error::kInvalidArguments; } + DawnDeviceAndWireServer* dawn_device_and_wire_server = iter->second.get(); - associated_shared_image_map_.erase(it); - return error::kNoError; + return dawn_device_and_wire_server->DissociateMailbox(texture_id, + texture_generation); } error::Error WebGPUDecoderImpl::HandleRemoveDevice(
diff --git a/gpu/command_buffer/service/webgpu_decoder_unittest.cc b/gpu/command_buffer/service/webgpu_decoder_unittest.cc index 57441740..055a3ca 100644 --- a/gpu/command_buffer/service/webgpu_decoder_unittest.cc +++ b/gpu/command_buffer/service/webgpu_decoder_unittest.cc
@@ -169,10 +169,20 @@ ExecuteImmediateCmd(cmd.cmd, sizeof(bad_mailbox.name))); } - // Error case: device doesn't exist. + // Error case: device client id doesn't exist. { AssociateMailboxCmdStorage cmd; - cmd.cmd.Init(42, 42, 1, 0, WGPUTextureUsage_Sampled, mailbox.name); + cmd.cmd.Init(kDeviceClientID + 1, 0, 1, 0, WGPUTextureUsage_Sampled, + mailbox.name); + EXPECT_EQ(error::kInvalidArguments, + ExecuteImmediateCmd(cmd.cmd, sizeof(mailbox.name))); + } + + // Error case: device generation is invalid. + { + AssociateMailboxCmdStorage cmd; + cmd.cmd.Init(kDeviceClientID, 42, 1, 0, WGPUTextureUsage_Sampled, + mailbox.name); EXPECT_EQ(error::kInvalidArguments, ExecuteImmediateCmd(cmd.cmd, sizeof(mailbox.name))); } @@ -229,7 +239,7 @@ // Dissociate the image from the control case to remove its reference. { cmds::DissociateMailbox cmd; - cmd.Init(1, 0); + cmd.Init(kDeviceClientID, 1, 0); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); } } @@ -258,14 +268,28 @@ // Error case: wrong texture ID { cmds::DissociateMailbox cmd; - cmd.Init(42, 42); + cmd.Init(kDeviceClientID, 42, 0); + EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); + } + + // Error case: wrong texture generation + { + cmds::DissociateMailbox cmd; + cmd.Init(kDeviceClientID, 1, 42); + EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); + } + + // Error case: invalid client device ID + { + cmds::DissociateMailbox cmd; + cmd.Init(kDeviceClientID + 1, 1, 0); EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd)); } // Success case { cmds::DissociateMailbox cmd; - cmd.Init(1, 0); + cmd.Init(kDeviceClientID, 1, 0); EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); } }
diff --git a/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc b/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc index 0403825..421df0f 100644 --- a/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc +++ b/gpu/command_buffer/tests/webgpu_mailbox_unittest.cc
@@ -128,7 +128,8 @@ // Dissociate the mailbox, flushing previous commands first webgpu()->FlushCommands(); - webgpu()->DissociateMailbox(reservation.id, reservation.generation); + webgpu()->DissociateMailbox(device_client_id, reservation.id, + reservation.generation); } // Part 2: Read back the texture using Dawn @@ -175,7 +176,8 @@ // Dissociate the mailbox, flushing previous commands first webgpu()->FlushCommands(); - webgpu()->DissociateMailbox(reservation.id, reservation.generation); + webgpu()->DissociateMailbox(device_client_id, reservation.id, + reservation.generation); // Map the buffer and assert the pixel is the correct value. readback_buffer.MapReadAsync(ToMockBufferMapReadCallback, 0); @@ -224,7 +226,8 @@ webgpu()->AssociateMailbox( device_client_id, 0, reservation.id, reservation.generation, WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailbox)); - webgpu()->DissociateMailbox(reservation.id, reservation.generation); + webgpu()->DissociateMailbox(device_client_id, reservation.id, + reservation.generation); // Try using the texture, it should produce a validation error. wgpu::TextureView view = texture.CreateView(); @@ -263,10 +266,10 @@ // Create a the shared images. SharedImageInterface* sii = GetSharedImageInterface(); - Mailbox mailboxA = sii->CreateSharedImage( + Mailbox mailbox_a = sii->CreateSharedImage( viz::ResourceFormat::RGBA_8888, {1, 1}, gfx::ColorSpace::CreateSRGB(), SHARED_IMAGE_USAGE_WEBGPU); - Mailbox mailboxB = sii->CreateSharedImage( + Mailbox mailbox_b = sii->CreateSharedImage( viz::ResourceFormat::RGBA_8888, {1, 1}, gfx::ColorSpace::CreateSRGB(), SHARED_IMAGE_USAGE_WEBGPU); @@ -276,21 +279,77 @@ webgpu::DawnDeviceClientID device_client_id = device_and_id.client_id; // Associate both mailboxes - gpu::webgpu::ReservedTexture reservationA = + gpu::webgpu::ReservedTexture reservation_a = webgpu()->ReserveTexture(device_client_id); webgpu()->AssociateMailbox( - device_client_id, 0, reservationA.id, reservationA.generation, - WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailboxA)); + device_client_id, 0, reservation_a.id, reservation_a.generation, + WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailbox_a)); - gpu::webgpu::ReservedTexture reservationB = + gpu::webgpu::ReservedTexture reservation_b = webgpu()->ReserveTexture(device_client_id); webgpu()->AssociateMailbox( - device_client_id, 0, reservationB.id, reservationB.generation, - WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailboxB)); + device_client_id, 0, reservation_b.id, reservation_b.generation, + WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailbox_b)); // Dissociate both mailboxes in the same order. - webgpu()->DissociateMailbox(reservationA.id, reservationA.generation); - webgpu()->DissociateMailbox(reservationB.id, reservationB.generation); + webgpu()->DissociateMailbox(device_client_id, reservation_a.id, + reservation_a.generation); + webgpu()->DissociateMailbox(device_client_id, reservation_b.id, + reservation_b.generation); + + // Send all the previous commands to the WebGPU decoder. + webgpu()->FlushCommands(); +} + +// Regression test for a bug where the (id, generation) for associated shared +// images was stored globally instead of per-device. This meant that of two +// devices tried to create shared images with the same (id, generation) (which +// is possible because they can be on different Dawn wires) they would conflict. +TEST_F(WebGPUMailboxTest, AssociateOnTwoDevicesAtTheSameTime) { + if (!WebGPUSupported()) { + LOG(ERROR) << "Test skipped because WebGPU isn't supported"; + return; + } + if (!WebGPUSharedImageSupported()) { + LOG(ERROR) << "Test skipped because WebGPUSharedImage isn't supported"; + return; + } + + // Create a the shared images. + SharedImageInterface* sii = GetSharedImageInterface(); + Mailbox mailbox_a = sii->CreateSharedImage( + viz::ResourceFormat::RGBA_8888, {1, 1}, gfx::ColorSpace::CreateSRGB(), + SHARED_IMAGE_USAGE_WEBGPU); + + Mailbox mailbox_b = sii->CreateSharedImage( + viz::ResourceFormat::RGBA_8888, {1, 1}, gfx::ColorSpace::CreateSRGB(), + SHARED_IMAGE_USAGE_WEBGPU); + + // Two WebGPU devices to associate the shared images to. + DeviceAndClientID device_and_id_a = GetNewDeviceAndClientID(); + webgpu::DawnDeviceClientID client_id_a = device_and_id_a.client_id; + + DeviceAndClientID device_and_id_b = GetNewDeviceAndClientID(); + webgpu::DawnDeviceClientID client_id_b = device_and_id_b.client_id; + + // Associate both mailboxes + gpu::webgpu::ReservedTexture reservation_a = + webgpu()->ReserveTexture(client_id_a); + webgpu()->AssociateMailbox( + client_id_a, 0, reservation_a.id, reservation_a.generation, + WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailbox_a)); + + gpu::webgpu::ReservedTexture reservation_b = + webgpu()->ReserveTexture(client_id_b); + webgpu()->AssociateMailbox( + client_id_b, 0, reservation_b.id, reservation_b.generation, + WGPUTextureUsage_OutputAttachment, reinterpret_cast<GLbyte*>(&mailbox_b)); + + // Dissociate both mailboxes in the same order. + webgpu()->DissociateMailbox(client_id_a, reservation_a.id, + reservation_a.generation); + webgpu()->DissociateMailbox(client_id_b, reservation_b.id, + reservation_b.generation); // Send all the previous commands to the WebGPU decoder. webgpu()->FlushCommands();
diff --git a/gpu/command_buffer/webgpu_cmd_buffer_functions.txt b/gpu/command_buffer/webgpu_cmd_buffer_functions.txt index 0203b01..4f34880 100644 --- a/gpu/command_buffer/webgpu_cmd_buffer_functions.txt +++ b/gpu/command_buffer/webgpu_cmd_buffer_functions.txt
@@ -8,7 +8,7 @@ // completely ignored. GL_APICALL void GL_APIENTRY wgDawnCommands (GLuint64 device_client_id, const char* commands, size_t size); GL_APICALL void GL_APIENTRY wgAssociateMailbox (GLuint64 device_client_id, GLuint device_generation, GLuint id, GLuint generation, GLuint usage, const GLbyte* mailbox); -GL_APICALL void GL_APIENTRY wgDissociateMailbox (GLuint texture_id, GLuint texture_generation); +GL_APICALL void GL_APIENTRY wgDissociateMailbox (GLuint64 device_client_id, GLuint texture_id, GLuint texture_generation); GL_APICALL void GL_APIENTRY wgRequestAdapter (GLuint64 request_adapter_serial, EnumClassPowerPreference power_preference = PowerPreference::kDefault); GL_APICALL void GL_APIENTRY wgRequestDevice (GLuint64 device_client_id, GLuint adapter_service_id, const char* dawn_request_device_properties, size_t request_device_properties_size); -GL_APICALL void GL_APIENTRY wgRemoveDevice (GLuint64 device_client_id); \ No newline at end of file +GL_APICALL void GL_APIENTRY wgRemoveDevice (GLuint64 device_client_id);
diff --git a/gpu/config/BUILD.gn b/gpu/config/BUILD.gn index 86c4f0c..a0e03e0 100644 --- a/gpu/config/BUILD.gn +++ b/gpu/config/BUILD.gn
@@ -179,6 +179,7 @@ "//base", "//build:branding_buildflags", "//build:chromecast_buildflags", + "//gpu/command_buffer/common:common_sources", "//gpu/ipc/common:gpu_preferences_interface", "//gpu/vulkan:buildflags", "//media:media_buildflags",
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc index a4e6473..c920171 100644 --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc
@@ -70,6 +70,10 @@ const base::Feature kGpuWatchdogV1NewTimeout{"GpuWatchdogV1NewTimeout", base::FEATURE_ENABLED_BY_DEFAULT}; +// Use a different set of watchdog timeouts on V2 +const base::Feature kGpuWatchdogV2NewTimeout{"GpuWatchdogV2NewTimeout", + base::FEATURE_DISABLED_BY_DEFAULT}; + #if defined(OS_MACOSX) // Enable use of Metal for OOP rasterization. const base::Feature kMetal{"Metal", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h index e53915a..afd2201 100644 --- a/gpu/config/gpu_finch_features.h +++ b/gpu/config/gpu_finch_features.h
@@ -36,6 +36,8 @@ GPU_EXPORT extern const base::Feature kGpuWatchdogV1NewTimeout; +GPU_EXPORT extern const base::Feature kGpuWatchdogV2NewTimeout; + #if defined(OS_MACOSX) GPU_EXPORT extern const base::Feature kMetal; #endif
diff --git a/gpu/config/gpu_info.cc b/gpu/config/gpu_info.cc index b8ab105..f063cd4 100644 --- a/gpu/config/gpu_info.cc +++ b/gpu/config/gpu_info.cc
@@ -4,9 +4,15 @@ #include <stdint.h> +#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" #include "gpu/config/gpu_info.h" #include "gpu/config/gpu_util.h" +#if defined(OS_MACOSX) +#include <GLES2/gl2.h> +#include <GLES2/gl2extchromium.h> +#endif // OS_MACOSX + namespace { void EnumerateGPUDevice(const gpu::GPUInfo::GPUDevice& device, @@ -146,6 +152,19 @@ } #endif // OS_WIN +#if defined(OS_MACOSX) +GPU_EXPORT bool ValidateMacOSSpecificTextureTarget(int target) { + switch (target) { + case GL_TEXTURE_2D: + case GL_TEXTURE_RECTANGLE_ARB: + return true; + + default: + return false; + } +} +#endif // OS_MACOSX + VideoDecodeAcceleratorCapabilities::VideoDecodeAcceleratorCapabilities() : flags(0) {} @@ -195,6 +214,9 @@ sandboxed(false), in_process_gpu(true), passthrough_cmd_decoder(false), +#if defined(OS_MACOSX) + macos_specific_texture_target(gpu::GetPlatformSpecificTextureTarget()), +#endif // OS_MACOSX jpeg_decode_accelerator_supported(false), oop_rasterization_supported(false), subpixel_font_rendering(true) { @@ -250,6 +272,9 @@ bool in_process_gpu; bool passthrough_cmd_decoder; bool can_support_threaded_texture_mailbox; +#if defined(OS_MACOSX) + uint32_t macos_specific_texture_target; +#endif // OS_MACOSX #if defined(OS_WIN) DxDiagNode dx_diagnostics; Dx12VulkanVersionInfo dx12_vulkan_version_info; @@ -311,6 +336,10 @@ enumerator->AddBool("passthroughCmdDecoder", passthrough_cmd_decoder); enumerator->AddBool("canSupportThreadedTextureMailbox", can_support_threaded_texture_mailbox); +#if defined(OS_MACOSX) + enumerator->AddInt("macOSSpecificTextureTarget", + macos_specific_texture_target); +#endif // OS_MACOSX // TODO(kbr): add dx_diagnostics on Windows. #if defined(OS_WIN) EnumerateOverlayInfo(overlay_info, enumerator);
diff --git a/gpu/config/gpu_info.h b/gpu/config/gpu_info.h index 35817eb..c089163 100644 --- a/gpu/config/gpu_info.h +++ b/gpu/config/gpu_info.h
@@ -208,6 +208,10 @@ #endif +#if defined(OS_MACOSX) +GPU_EXPORT bool ValidateMacOSSpecificTextureTarget(int target); +#endif // OS_MACOSX + struct GPU_EXPORT GPUInfo { struct GPU_EXPORT GPUDevice { GPUDevice(); @@ -348,6 +352,12 @@ // is only implemented on Android. bool can_support_threaded_texture_mailbox = false; +#if defined(OS_MACOSX) + // Enum describing which texture target is used for native GpuMemoryBuffers on + // MacOS. Valid values are GL_TEXTURE_2D and GL_TEXTURE_RECTANGLE_ARB. + uint32_t macos_specific_texture_target; +#endif // OS_MACOSX + #if defined(OS_WIN) // The information returned by the DirectX Diagnostics Tool. DxDiagNode dx_diagnostics;
diff --git a/gpu/config/gpu_info_collector_mac.mm b/gpu/config/gpu_info_collector_mac.mm index 62b5c07..fc58409f 100644 --- a/gpu/config/gpu_info_collector_mac.mm +++ b/gpu/config/gpu_info_collector_mac.mm
@@ -5,6 +5,7 @@ #include "gpu/config/gpu_info_collector.h" #include "base/trace_event/trace_event.h" +#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" #include "third_party/angle/src/gpu_info_util/SystemInfo.h" namespace gpu { @@ -13,6 +14,10 @@ DCHECK(gpu_info); TRACE_EVENT0("gpu", "gpu_info_collector::CollectGraphicsInfo"); + + gpu_info->macos_specific_texture_target = + gpu::GetPlatformSpecificTextureTarget(); + return CollectGraphicsInfoGL(gpu_info); }
diff --git a/gpu/ipc/client/gpu_channel_host.cc b/gpu/ipc/client/gpu_channel_host.cc index 502ebf9..6288951f 100644 --- a/gpu/ipc/client/gpu_channel_host.cc +++ b/gpu/ipc/client/gpu_channel_host.cc
@@ -15,6 +15,7 @@ #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" #include "gpu/ipc/client/client_shared_image_interface.h" #include "gpu/ipc/common/command_buffer_id.h" #include "gpu/ipc/common/gpu_messages.h" @@ -52,6 +53,10 @@ for (int32_t i = 0; i <= static_cast<int32_t>(GpuChannelReservedRoutes::kMaxValue); ++i) next_route_id_.GetNext(); + +#if defined(OS_MACOSX) + gpu::SetMacOSSpecificTextureTarget(gpu_info.macos_specific_texture_target); +#endif // defined(OS_MACOSX) } bool GpuChannelHost::Send(IPC::Message* msg) {
diff --git a/gpu/ipc/command_buffer_task_executor.cc b/gpu/ipc/command_buffer_task_executor.cc index b843ee6..3d5e9498 100644 --- a/gpu/ipc/command_buffer_task_executor.cc +++ b/gpu/ipc/command_buffer_task_executor.cc
@@ -18,7 +18,6 @@ const GpuFeatureInfo& gpu_feature_info, SyncPointManager* sync_point_manager, MailboxManager* mailbox_manager, - scoped_refptr<gl::GLShareGroup> share_group, gl::GLSurfaceFormat share_group_surface_format, SharedImageManager* shared_image_manager, gles2::ProgramCache* program_cache) @@ -26,7 +25,6 @@ gpu_feature_info_(gpu_feature_info), sync_point_manager_(sync_point_manager), mailbox_manager_(mailbox_manager), - share_group_(share_group), share_group_surface_format_(share_group_surface_format), program_cache_(program_cache), discardable_manager_(gpu_preferences_), @@ -39,12 +37,6 @@ CommandBufferTaskExecutor::~CommandBufferTaskExecutor() = default; -scoped_refptr<gl::GLShareGroup> CommandBufferTaskExecutor::share_group() { - if (!share_group_) - share_group_ = base::MakeRefCounted<gl::GLShareGroup>(); - return share_group_; -} - gles2::Outputter* CommandBufferTaskExecutor::outputter() { if (!outputter_) { outputter_ =
diff --git a/gpu/ipc/command_buffer_task_executor.h b/gpu/ipc/command_buffer_task_executor.h index 8c36557..3b34f04d 100644 --- a/gpu/ipc/command_buffer_task_executor.h +++ b/gpu/ipc/command_buffer_task_executor.h
@@ -47,7 +47,6 @@ const GpuFeatureInfo& gpu_feature_info, SyncPointManager* sync_point_manager, MailboxManager* mailbox_manager, - scoped_refptr<gl::GLShareGroup> share_group, gl::GLSurfaceFormat share_group_surface_format, SharedImageManager* shared_image_manager, gles2::ProgramCache* program_cache); @@ -75,6 +74,8 @@ // Returns the shared offscreen context state. virtual scoped_refptr<SharedContextState> GetSharedContextState() = 0; + virtual scoped_refptr<gl::GLShareGroup> GetShareGroup() = 0; + const GpuPreferences& gpu_preferences() const { return gpu_preferences_; } const GpuFeatureInfo& gpu_feature_info() const { return gpu_feature_info_; } gl::GLSurfaceFormat share_group_surface_format() const { @@ -100,7 +101,6 @@ SharedImageManager* shared_image_manager() { return shared_image_manager_; } // These methods construct accessed fields if not already initialized. - scoped_refptr<gl::GLShareGroup> share_group(); gles2::Outputter* outputter(); gles2::ProgramCache* program_cache(); @@ -110,7 +110,6 @@ SyncPointManager* sync_point_manager_; MailboxManager* mailbox_manager_; std::unique_ptr<gles2::Outputter> outputter_; - scoped_refptr<gl::GLShareGroup> share_group_; gl::GLSurfaceFormat share_group_surface_format_; std::unique_ptr<gles2::ProgramCache> owned_program_cache_; gles2::ProgramCache* program_cache_;
diff --git a/gpu/ipc/common/gpu_info.mojom b/gpu/ipc/common/gpu_info.mojom index 7ad64aa..82d1209 100644 --- a/gpu/ipc/common/gpu_info.mojom +++ b/gpu/ipc/common/gpu_info.mojom
@@ -160,6 +160,9 @@ bool passthrough_cmd_decoder; bool can_support_threaded_texture_mailbox; + [EnableIf=is_mac] + uint32 macos_specific_texture_target; + [EnableIf=is_win] DxDiagNode dx_diagnostics; [EnableIf=is_win]
diff --git a/gpu/ipc/common/gpu_info_mojom_traits.cc b/gpu/ipc/common/gpu_info_mojom_traits.cc index 44d2ea2..264b9d57 100644 --- a/gpu/ipc/common/gpu_info_mojom_traits.cc +++ b/gpu/ipc/common/gpu_info_mojom_traits.cc
@@ -384,6 +384,13 @@ out->passthrough_cmd_decoder = data.passthrough_cmd_decoder(); out->can_support_threaded_texture_mailbox = data.can_support_threaded_texture_mailbox(); +#if defined(OS_MACOSX) + if (!gpu::ValidateMacOSSpecificTextureTarget( + data.macos_specific_texture_target())) { + return false; + } + out->macos_specific_texture_target = data.macos_specific_texture_target(); +#endif // OS_MACOSX out->jpeg_decode_accelerator_supported = data.jpeg_decode_accelerator_supported();
diff --git a/gpu/ipc/common/gpu_info_mojom_traits.h b/gpu/ipc/common/gpu_info_mojom_traits.h index 995d1eb..5fc0b43 100644 --- a/gpu/ipc/common/gpu_info_mojom_traits.h +++ b/gpu/ipc/common/gpu_info_mojom_traits.h
@@ -353,6 +353,12 @@ return input.can_support_threaded_texture_mailbox; } +#if defined(OS_MACOSX) + static uint32_t macos_specific_texture_target(const gpu::GPUInfo& input) { + return input.macos_specific_texture_target; + } +#endif // OS_MACOSX + #if defined(OS_WIN) static const gpu::DxDiagNode& dx_diagnostics(const gpu::GPUInfo& input) {
diff --git a/gpu/ipc/gpu_in_process_thread_service.cc b/gpu/ipc/gpu_in_process_thread_service.cc index 1d535a5f..c6a5ccdf 100644 --- a/gpu/ipc/gpu_in_process_thread_service.cc +++ b/gpu/ipc/gpu_in_process_thread_service.cc
@@ -14,29 +14,32 @@ namespace gpu { +GpuInProcessThreadServiceDelegate::GpuInProcessThreadServiceDelegate() = + default; +GpuInProcessThreadServiceDelegate::~GpuInProcessThreadServiceDelegate() = + default; + GpuInProcessThreadService::GpuInProcessThreadService( + GpuInProcessThreadServiceDelegate* delegate, scoped_refptr<base::SingleThreadTaskRunner> task_runner, Scheduler* scheduler, SyncPointManager* sync_point_manager, MailboxManager* mailbox_manager, - scoped_refptr<gl::GLShareGroup> share_group, gl::GLSurfaceFormat share_group_surface_format, const GpuFeatureInfo& gpu_feature_info, const GpuPreferences& gpu_preferences, SharedImageManager* shared_image_manager, - gles2::ProgramCache* program_cache, - SharedContextStateGetter shared_context_state_getter) + gles2::ProgramCache* program_cache) : CommandBufferTaskExecutor(gpu_preferences, gpu_feature_info, sync_point_manager, mailbox_manager, - share_group, share_group_surface_format, shared_image_manager, program_cache), + delegate_(delegate), task_runner_(task_runner), - scheduler_(scheduler), - shared_context_state_getter_(std::move(shared_context_state_getter)) {} + scheduler_(scheduler) {} GpuInProcessThreadService::~GpuInProcessThreadService() = default; @@ -69,7 +72,11 @@ scoped_refptr<SharedContextState> GpuInProcessThreadService::GetSharedContextState() { - return shared_context_state_getter_.Run(); + return delegate_->GetSharedContextState(); +} + +scoped_refptr<gl::GLShareGroup> GpuInProcessThreadService::GetShareGroup() { + return delegate_->GetShareGroup(); } } // namespace gpu
diff --git a/gpu/ipc/gpu_in_process_thread_service.h b/gpu/ipc/gpu_in_process_thread_service.h index cefa13f..442861a 100644 --- a/gpu/ipc/gpu_in_process_thread_service.h +++ b/gpu/ipc/gpu_in_process_thread_service.h
@@ -25,27 +25,37 @@ class ProgramCache; } // namespace gles2 +class GL_IN_PROCESS_CONTEXT_EXPORT GpuInProcessThreadServiceDelegate { + public: + GpuInProcessThreadServiceDelegate(); + + GpuInProcessThreadServiceDelegate(const GpuInProcessThreadServiceDelegate&) = + delete; + GpuInProcessThreadServiceDelegate& operator=( + const GpuInProcessThreadServiceDelegate&) = delete; + + virtual ~GpuInProcessThreadServiceDelegate(); + + virtual scoped_refptr<SharedContextState> GetSharedContextState() = 0; + virtual scoped_refptr<gl::GLShareGroup> GetShareGroup() = 0; +}; + // Default Service class when no service is specified. GpuInProcessThreadService // is used by Mus and unit tests. class GL_IN_PROCESS_CONTEXT_EXPORT GpuInProcessThreadService : public CommandBufferTaskExecutor { public: - // Must be valid to call through lifetime of GpuInProcessThreadService. - using SharedContextStateGetter = - base::RepeatingCallback<scoped_refptr<SharedContextState>()>; - GpuInProcessThreadService( + GpuInProcessThreadServiceDelegate* delegate, scoped_refptr<base::SingleThreadTaskRunner> task_runner, Scheduler* scheduler, SyncPointManager* sync_point_manager, MailboxManager* mailbox_manager, - scoped_refptr<gl::GLShareGroup> share_group, gl::GLSurfaceFormat share_group_surface_format, const GpuFeatureInfo& gpu_feature_info, const GpuPreferences& gpu_preferences, SharedImageManager* shared_image_manager, - gles2::ProgramCache* program_cache, - SharedContextStateGetter shared_context_state_getter); + gles2::ProgramCache* program_cache); ~GpuInProcessThreadService() override; // CommandBufferTaskExecutor implementation. @@ -56,11 +66,12 @@ void ScheduleDelayedWork(base::OnceClosure task) override; void PostNonNestableToClient(base::OnceClosure callback) override; scoped_refptr<SharedContextState> GetSharedContextState() override; + scoped_refptr<gl::GLShareGroup> GetShareGroup() override; private: + GpuInProcessThreadServiceDelegate* const delegate_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; Scheduler* scheduler_; - SharedContextStateGetter shared_context_state_getter_; DISALLOW_COPY_AND_ASSIGN(GpuInProcessThreadService); };
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc index e3bd62b..4d32bd2 100644 --- a/gpu/ipc/in_process_command_buffer.cc +++ b/gpu/ipc/in_process_command_buffer.cc
@@ -469,7 +469,7 @@ } else { // When using the validating command decoder, always use the global share // group. - gl_share_group_ = task_executor_->share_group(); + gl_share_group_ = task_executor_->GetShareGroup(); } if (params.attribs.context_type == CONTEXT_TYPE_WEBGPU) {
diff --git a/gpu/ipc/in_process_gpu_thread_holder.cc b/gpu/ipc/in_process_gpu_thread_holder.cc index 050aa72..5a027ba 100644 --- a/gpu/ipc/in_process_gpu_thread_holder.cc +++ b/gpu/ipc/in_process_gpu_thread_holder.cc
@@ -17,7 +17,6 @@ #include "gpu/command_buffer/service/sync_point_manager.h" #include "gpu/config/gpu_info_collector.h" #include "gpu/config/gpu_util.h" -#include "gpu/ipc/gpu_in_process_thread_service.h" #include "ui/gl/init/gl_factory.h" namespace gpu { @@ -103,11 +102,9 @@ gpu_driver_bug_workarounds, nullptr); task_executor_ = std::make_unique<GpuInProcessThreadService>( - task_runner(), scheduler_.get(), sync_point_manager_.get(), - mailbox_manager_.get(), nullptr, gl::GLSurfaceFormat(), gpu_feature_info_, - gpu_preferences_, shared_image_manager_.get(), nullptr, - base::BindRepeating(&InProcessGpuThreadHolder::GetSharedContextState, - base::Unretained(this))); + this, task_runner(), scheduler_.get(), sync_point_manager_.get(), + mailbox_manager_.get(), gl::GLSurfaceFormat(), gpu_feature_info_, + gpu_preferences_, shared_image_manager_.get(), nullptr); completion->Signal(); } @@ -130,4 +127,10 @@ return context_state_; } +scoped_refptr<gl::GLShareGroup> InProcessGpuThreadHolder::GetShareGroup() { + if (!share_group_) + share_group_ = base::MakeRefCounted<gl::GLShareGroup>(); + return share_group_; +} + } // namespace gpu
diff --git a/gpu/ipc/in_process_gpu_thread_holder.h b/gpu/ipc/in_process_gpu_thread_holder.h index 802dd3f..1762e54 100644 --- a/gpu/ipc/in_process_gpu_thread_holder.h +++ b/gpu/ipc/in_process_gpu_thread_holder.h
@@ -14,6 +14,7 @@ #include "gpu/command_buffer/service/shared_context_state.h" #include "gpu/config/gpu_feature_info.h" #include "gpu/config/gpu_preferences.h" +#include "gpu/ipc/gpu_in_process_thread_service.h" namespace gpu { class CommandBufferTaskExecutor; @@ -27,7 +28,8 @@ // default GpuPreferences and GpuFeatureInfo will be constructed from the // command line when this class is first created. class COMPONENT_EXPORT(GPU_THREAD_HOLDER) InProcessGpuThreadHolder - : public base::Thread { + : public base::Thread, + public GpuInProcessThreadServiceDelegate { public: InProcessGpuThreadHolder(); ~InProcessGpuThreadHolder() override; @@ -44,10 +46,13 @@ // executor will be created the first time this is called. CommandBufferTaskExecutor* GetTaskExecutor(); + // gpu::GpuInProcessThreadServiceDelegate implementation: + scoped_refptr<gpu::SharedContextState> GetSharedContextState() override; + scoped_refptr<gl::GLShareGroup> GetShareGroup() override; + private: void InitializeOnGpuThread(base::WaitableEvent* completion); void DeleteOnGpuThread(); - scoped_refptr<SharedContextState> GetSharedContextState(); GpuPreferences gpu_preferences_; GpuFeatureInfo gpu_feature_info_;
diff --git a/gpu/ipc/service/gpu_channel_manager.cc b/gpu/ipc/service/gpu_channel_manager.cc index 5f5c429..3e6b1c6b 100644 --- a/gpu/ipc/service/gpu_channel_manager.cc +++ b/gpu/ipc/service/gpu_channel_manager.cc
@@ -388,6 +388,7 @@ void GpuChannelManager::LoseAllContexts() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + share_group_ = base::MakeRefCounted<gl::GLShareGroup>(); for (auto& kv : gpu_channels_) { kv.second->MarkAllContextsLost(); }
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc index f89a00a..e3eae31 100644 --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc
@@ -13,6 +13,7 @@ #include "base/trace_event/trace_event.h" #include "build/build_config.h" #include "build/chromecast_buildflags.h" +#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" #include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/service_utils.h" #include "gpu/config/gpu_driver_bug_list.h" @@ -33,6 +34,10 @@ #include "ui/gl/gl_utils.h" #include "ui/gl/init/gl_factory.h" +#if defined(OS_MACOSX) +#include <GLES2/gl2.h> +#endif + #if defined(USE_OZONE) #include "ui/ozone/public/ozone_platform.h" #include "ui/ozone/public/surface_factory_ozone.h" @@ -338,6 +343,19 @@ } #endif + // On MacOS, the default texture target for native GpuMemoryBuffers is + // GL_TEXTURE_RECTANGLE_ARB. This is due to CGL's requirements for creating + // a GL surface. However, when ANGLE is used on top of SwiftShader, it's + // necessary to use GL_TEXTURE_2D instead. + // TODO(crbug.com/1056312): The proper behavior is to check the config + // parameter set by the EGL_ANGLE_iosurface_client_buffer extension +#if defined(OS_MACOSX) + if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE && + gl::GetANGLEImplementation() == gl::ANGLEImplementation::kSwiftShader) { + gpu::SetMacOSSpecificTextureTarget(GL_TEXTURE_2D); + } +#endif // defined(OS_MACOSX) + bool gl_disabled = gl::GetGLImplementation() == gl::kGLImplementationDisabled; // Compute passthrough decoder status before ComputeGpuFeatureInfo below.
diff --git a/gpu/ipc/service/gpu_watchdog_thread.h b/gpu/ipc/service/gpu_watchdog_thread.h index 7db0ef9..a2c633d 100644 --- a/gpu/ipc/service/gpu_watchdog_thread.h +++ b/gpu/ipc/service/gpu_watchdog_thread.h
@@ -53,8 +53,14 @@ kProgressAfterWait, // Just continue if it's not on the TTY of our host X11 server. kContinueOnNonHostServerTty, - - kMaxValue = kContinueOnNonHostServerTty, + // Windows only: After detecting GPU hang and continuing running through + // OnGpuWatchdogTimeout for the max cycles, the GPU main thread still cannot + // get the full thread time. + kLessThanFullThreadTimeAfterCapped, + // Windows only: The GPU main thread went through the + // kLessThanFullThreadTimeAfterCapped stage before the process is killed. + kKillOnLessThreadTime, + kMaxValue = kKillOnLessThreadTime, }; // A thread that intermitently sends tasks to a group of watched message loops
diff --git a/gpu/ipc/service/gpu_watchdog_thread_unittest.cc b/gpu/ipc/service/gpu_watchdog_thread_unittest.cc index 614d87e..420faeb 100644 --- a/gpu/ipc/service/gpu_watchdog_thread_unittest.cc +++ b/gpu/ipc/service/gpu_watchdog_thread_unittest.cc
@@ -20,6 +20,8 @@ constexpr auto kGpuWatchdogTimeoutForTesting = base::TimeDelta::FromMilliseconds(1000); +constexpr int kMaxExtraCyclesBeforeKillForTesting = 1; + // This task will run for duration_ms milliseconds. void SimpleTask(base::TimeDelta duration) { base::PlatformThread::Sleep(duration); @@ -71,6 +73,7 @@ watchdog_thread_ = gpu::GpuWatchdogThreadImplV2::Create( /*start_backgrounded*/ false, /*timeout*/ kGpuWatchdogTimeoutForTesting, + /*max_extra_cycles_before_kill*/ kMaxExtraCyclesBeforeKillForTesting, /*test_mode*/ true); } @@ -139,12 +142,15 @@ TEST_F(GpuWatchdogTest, GpuInitializationHang) { // GPU init takes longer than timeout. #if defined(OS_WIN) - SimpleTask(kGpuWatchdogTimeoutForTesting * kInitFactor + - kGpuWatchdogTimeoutForTesting * - kMaxCountOfMoreGpuThreadTimeAllowed + - base::TimeDelta::FromMilliseconds(3000)); + SimpleTask( + kGpuWatchdogTimeoutForTesting * kInitFactor + + kGpuWatchdogTimeoutForTesting * kMaxCountOfMoreGpuThreadTimeAllowed + + kGpuWatchdogTimeoutForTesting * kMaxExtraCyclesBeforeKillForTesting + + base::TimeDelta::FromMilliseconds(3000)); #else SimpleTask(kGpuWatchdogTimeoutForTesting * kInitFactor + + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(3000)); #endif @@ -199,13 +205,15 @@ base::BindOnce(&SimpleTask, kGpuWatchdogTimeoutForTesting * 2 + kGpuWatchdogTimeoutForTesting * kMaxCountOfMoreGpuThreadTimeAllowed + - + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4000))); #else task_environment_.GetMainThreadTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&SimpleTask, kGpuWatchdogTimeoutForTesting * 2 + - + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4000))); #endif @@ -258,7 +266,8 @@ /*duration*/ kGpuWatchdogTimeoutForTesting * 2 + kGpuWatchdogTimeoutForTesting * kMaxCountOfMoreGpuThreadTimeAllowed + - + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4200), /*time_to_switch_to_foreground*/ base::TimeDelta::FromMilliseconds(200))); @@ -268,7 +277,8 @@ base::BindOnce(&GpuWatchdogTest::LongTaskFromBackgroundToForeground, base::Unretained(this), /*duration*/ kGpuWatchdogTimeoutForTesting * 2 + - + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4200), /*time_to_switch_to_foreground*/ base::TimeDelta::FromMilliseconds(200))); @@ -301,12 +311,15 @@ watchdog_thread_->ResumeWatchdog(); // The Gpu init continues for (init timeout + 4000) ms. #if defined(OS_WIN) - SimpleTask(kGpuWatchdogTimeoutForTesting * kInitFactor + - kGpuWatchdogTimeoutForTesting * - kMaxCountOfMoreGpuThreadTimeAllowed + - base::TimeDelta::FromMilliseconds(4000)); + SimpleTask( + kGpuWatchdogTimeoutForTesting * kInitFactor + + kGpuWatchdogTimeoutForTesting * kMaxCountOfMoreGpuThreadTimeAllowed + + kGpuWatchdogTimeoutForTesting * kMaxExtraCyclesBeforeKillForTesting + + base::TimeDelta::FromMilliseconds(4000)); #else SimpleTask(kGpuWatchdogTimeoutForTesting * kInitFactor + + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4000)); #endif @@ -350,6 +363,8 @@ /*duration*/ kGpuWatchdogTimeoutForTesting * kRestartFactor + kGpuWatchdogTimeoutForTesting * kMaxCountOfMoreGpuThreadTimeAllowed + + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4200), /*time_to_power_resume*/ base::TimeDelta::FromMilliseconds(200))); @@ -359,6 +374,8 @@ base::BindOnce( &GpuWatchdogPowerTest::LongTaskOnResume, base::Unretained(this), /*duration*/ kGpuWatchdogTimeoutForTesting * kRestartFactor + + kGpuWatchdogTimeoutForTesting * + kMaxExtraCyclesBeforeKillForTesting + base::TimeDelta::FromMilliseconds(4200), /*time_to_power_resume*/ base::TimeDelta::FromMilliseconds(200)));
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.cc b/gpu/ipc/service/gpu_watchdog_thread_v2.cc index b0b81a7..cfaa7b0 100644 --- a/gpu/ipc/service/gpu_watchdog_thread_v2.cc +++ b/gpu/ipc/service/gpu_watchdog_thread_v2.cc
@@ -13,8 +13,8 @@ #include "base/files/file_util.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop_current.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" -#include "base/metrics/persistent_histogram_allocator.h" #include "base/native_library.h" #include "base/power_monitor/power_monitor.h" #include "base/strings/string_number_conversions.h" @@ -23,13 +23,17 @@ #include "base/time/time.h" #include "build/build_config.h" #include "gpu/config/gpu_crash_keys.h" +#include "gpu/config/gpu_finch_features.h" namespace gpu { -GpuWatchdogThreadImplV2::GpuWatchdogThreadImplV2(base::TimeDelta timeout, - bool is_test_mode) +GpuWatchdogThreadImplV2::GpuWatchdogThreadImplV2( + base::TimeDelta timeout, + int max_extra_cycles_before_kill, + bool is_test_mode) : watchdog_timeout_(timeout), in_gpu_initialization_(true), + max_extra_cycles_before_kill_(max_extra_cycles_before_kill), is_test_mode_(is_test_mode), watched_gpu_task_runner_(base::ThreadTaskRunnerHandle::Get()) { base::MessageLoopCurrent::Get()->AddTaskObserver(this); @@ -82,9 +86,10 @@ std::unique_ptr<GpuWatchdogThreadImplV2> GpuWatchdogThreadImplV2::Create( bool start_backgrounded, base::TimeDelta timeout, + int max_extra_cycles_before_kill, bool is_test_mode) { - auto watchdog_thread = - base::WrapUnique(new GpuWatchdogThreadImplV2(timeout, is_test_mode)); + auto watchdog_thread = base::WrapUnique(new GpuWatchdogThreadImplV2( + timeout, max_extra_cycles_before_kill, is_test_mode)); base::Thread::Options options; options.timer_slack = base::TIMER_SLACK_MAXIMUM; watchdog_thread->StartWithOptions(options); @@ -96,7 +101,31 @@ // static std::unique_ptr<GpuWatchdogThreadImplV2> GpuWatchdogThreadImplV2::Create( bool start_backgrounded) { - return Create(start_backgrounded, kGpuWatchdogTimeout, false); + base::TimeDelta gpu_watchdog_timeout = kGpuWatchdogTimeout; + int max_extra_cycles_before_kill = kMaxExtraCyclesBeforeKill; + + if (base::FeatureList::IsEnabled(features::kGpuWatchdogV2NewTimeout)) { + const char kNewTimeOutParam[] = "new_time_out"; + const char kMaxExtraCyclesBeforeKillParam[] = + "max_extra_cycles_before_kill"; +#if defined(OS_WIN) + constexpr int kFinchMaxExtraCyclesBeforeKill = 3; +#else + constexpr int kFinchMaxExtraCyclesBeforeKill = 2; +#endif + + int timeout = base::GetFieldTrialParamByFeatureAsInt( + features::kGpuWatchdogV2NewTimeout, kNewTimeOutParam, + kGpuWatchdogTimeout.InSeconds()); + gpu_watchdog_timeout = base::TimeDelta::FromSeconds(timeout); + + max_extra_cycles_before_kill = base::GetFieldTrialParamByFeatureAsInt( + features::kGpuWatchdogV2NewTimeout, kMaxExtraCyclesBeforeKillParam, + kFinchMaxExtraCyclesBeforeKill); + } + + return Create(start_backgrounded, gpu_watchdog_timeout, + max_extra_cycles_before_kill, false); } // Do not add power observer during watchdog init, PowerMonitor might not be up @@ -410,11 +439,15 @@ bool disarmed = arm_disarm_counter % 2 == 0; // even number bool gpu_makes_progress = arm_disarm_counter != last_arm_disarm_counter_; bool watched_thread_needs_more_time = - WatchedThreadNeedsMoreTime(disarmed || gpu_makes_progress); + WatchedThreadNeedsMoreThreadTime(disarmed || gpu_makes_progress); + bool no_gpu_hang = disarmed || gpu_makes_progress || + watched_thread_needs_more_time || + ContinueOnNonHostX11ServerTty(); + bool allows_extra_timeout = WatchedThreadGetsExtraTimeout(no_gpu_hang); + no_gpu_hang = no_gpu_hang || allows_extra_timeout; - // No gpu hang is detected. Continue with another OnWatchdogTimeout task - if (disarmed || gpu_makes_progress || watched_thread_needs_more_time || - ContinueOnNonHostX11ServerTty()) { + // No gpu hang. Continue with another OnWatchdogTimeout task. + if (no_gpu_hang) { last_on_watchdog_timeout_timeticks_ = base::TimeTicks::Now(); last_arm_disarm_counter_ = base::subtle::NoBarrier_Load(&arm_disarm_counter_); @@ -428,29 +461,35 @@ // Still armed without any progress. GPU possibly hangs. GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kKill); +#if defined(OS_WIN) + if (less_than_full_thread_time_after_capped_) + GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kKillOnLessThreadTime); +#endif + DeliberatelyTerminateToRecoverFromHang(); } -bool GpuWatchdogThreadImplV2::WatchedThreadNeedsMoreTime( +bool GpuWatchdogThreadImplV2::WatchedThreadNeedsMoreThreadTime( bool no_gpu_hang_detected) { #if defined(OS_WIN) if (!watched_thread_handle_) return false; - // For metrics only - - if (count_of_more_gpu_thread_time_allowed_ > 0) { - if (no_gpu_hang_detected) { - // If count_of_more_gpu_thread_time_allowed_ > 0, we know extra time was - // extended in the previous OnWatchdogTimeout(). Now we find gpu makes - // progress. Record this case. - GpuWatchdogTimeoutHistogram( - GpuWatchdogTimeoutEvent::kProgressAfterMoreThreadTime); - WindowsNumOfExtraTimeoutsHistogram(); - } - // Records the number of users who are still waiting. We can use this - // number to calculate the number of users who had already quit. - NumOfUsersWaitingWithExtraThreadTimeHistogram( - count_of_more_gpu_thread_time_allowed_); + // We allow extra thread time. When that runs out, we extend extra timeout + // cycles. Now, we are extending extra timeout cycles. Don't add extra thread + // time. + if (count_of_extra_cycles_ > 0) + return false; + + WatchedThreadNeedsMoreThreadTimeHistogram( + no_gpu_hang_detected, + /*start_of_more_thread_time*/ false); + + if (!no_gpu_hang_detected && count_of_more_gpu_thread_time_allowed_ >= + kMaxCountOfMoreGpuThreadTimeAllowed) { + less_than_full_thread_time_after_capped_ = true; + } else { + less_than_full_thread_time_after_capped_ = false; } // Calculate how many thread ticks the watched thread spent doing the work. @@ -468,15 +507,15 @@ // Reset the remaining thread ticks. remaining_watched_thread_ticks_ = watchdog_timeout_; count_of_more_gpu_thread_time_allowed_ = 0; + return false; } else { - count_of_more_gpu_thread_time_allowed_++; - // Only record it once for all extenteded timeout on the same detected gpu - // hang, so we know this is equivlent one crash in our crash reports. - if (count_of_more_gpu_thread_time_allowed_ == 1) { - GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kMoreThreadTime); - NumOfUsersWaitingWithExtraThreadTimeHistogram(0); + // This is the start of allowing more thread time. + if (count_of_more_gpu_thread_time_allowed_ == 0) { + WatchedThreadNeedsMoreThreadTimeHistogram( + no_gpu_hang_detected, /*start_of_more_thread_time*/ true); } + count_of_more_gpu_thread_time_allowed_++; return true; } @@ -515,6 +554,26 @@ } #endif +bool GpuWatchdogThreadImplV2::WatchedThreadGetsExtraTimeout(bool no_gpu_hang) { + if (max_extra_cycles_before_kill_ == 0) + return false; + + // We want to record histograms even if there is no gpu hang. + bool allows_more_timeouts = false; + WatchedThreadGetsExtraTimeoutHistogram(no_gpu_hang); + + if (no_gpu_hang) { + if (count_of_extra_cycles_ > 0) { + count_of_extra_cycles_ = 0; + } + } else if (count_of_extra_cycles_ < max_extra_cycles_before_kill_) { + count_of_extra_cycles_++; + allows_more_timeouts = true; + } + + return allows_more_timeouts; +} + void GpuWatchdogThreadImplV2::DeliberatelyTerminateToRecoverFromHang() { DCHECK(watchdog_thread_task_runner_->BelongsToCurrentThread()); // If this is for gpu testing, do not terminate the gpu process. @@ -551,8 +610,10 @@ base::TimeDelta timeticks_elapses = function_begin_timeticks - last_on_watchdog_timeout_timeticks_; base::debug::Alias(&timeticks_elapses); + base::debug::Alias(&max_extra_cycles_before_kill_); #if defined(OS_WIN) base::debug::Alias(&remaining_watched_thread_ticks_); + base::debug::Alias(&less_than_full_thread_time_after_capped_); #endif GpuWatchdogHistogram(GpuWatchdogThreadEvent::kGpuWatchdogKill); @@ -603,7 +664,7 @@ } #if defined(OS_WIN) -void GpuWatchdogThreadImplV2::WindowsNumOfExtraTimeoutsHistogram() { +void GpuWatchdogThreadImplV2::RecordExtraThreadTimeHistogram() { // Record the number of timeouts the GPU main thread needs to make a progress // after GPU OnWatchdogTimeout() is triggered. The maximum count is 6 which // is more than kMaxCountOfMoreGpuThreadTimeAllowed(4); @@ -642,15 +703,68 @@ } } -void GpuWatchdogThreadImplV2::NumOfUsersWaitingWithExtraThreadTimeHistogram( - int count) { +void GpuWatchdogThreadImplV2:: + RecordNumOfUsersWaitingWithExtraThreadTimeHistogram(int count) { constexpr int kMax = 4; base::UmaHistogramExactLinear("GPU.WatchdogThread.ExtraThreadTime.NumOfUsers", count, kMax); } + +void GpuWatchdogThreadImplV2::WatchedThreadNeedsMoreThreadTimeHistogram( + bool no_gpu_hang_detected, + bool start_of_more_thread_time) { + if (start_of_more_thread_time) { + // This is the start of allowing more thread time. Only record it once for + // all following timeouts on the same detected gpu hang, so we know this + // is equivlent one crash in our crash reports. + GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kMoreThreadTime); + RecordNumOfUsersWaitingWithExtraThreadTimeHistogram(0); + } else { + if (count_of_more_gpu_thread_time_allowed_ > 0) { + if (no_gpu_hang_detected) { + // If count_of_more_gpu_thread_time_allowed_ > 0, we know extra time was + // extended in the previous OnWatchdogTimeout(). Now we find gpu makes + // progress. Record this case. + GpuWatchdogTimeoutHistogram( + GpuWatchdogTimeoutEvent::kProgressAfterMoreThreadTime); + RecordExtraThreadTimeHistogram(); + } else { + if (count_of_more_gpu_thread_time_allowed_ >= + kMaxCountOfMoreGpuThreadTimeAllowed) { + GpuWatchdogTimeoutHistogram( + GpuWatchdogTimeoutEvent::kLessThanFullThreadTimeAfterCapped); + } + } + + // Records the number of users who are still waiting. We can use this + // number to calculate the number of users who had already quit. + RecordNumOfUsersWaitingWithExtraThreadTimeHistogram( + count_of_more_gpu_thread_time_allowed_); + } + } +} #endif +void GpuWatchdogThreadImplV2::WatchedThreadGetsExtraTimeoutHistogram( + bool no_gpu_hang) { + constexpr int kMax = 60; + if (count_of_extra_cycles_ == 0 && !no_gpu_hang) { + GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kTimeoutWait); + base::UmaHistogramExactLinear("GPU.WatchdogThread.WaitTime.NumOfUsers", 0, + kMax); + } else if (count_of_extra_cycles_ > 0) { + int count = watchdog_timeout_.InSeconds() * count_of_extra_cycles_; + base::UmaHistogramExactLinear("GPU.WatchdogThread.WaitTime.NumOfUsers", + count, kMax); + if (no_gpu_hang) { + GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent::kProgressAfterWait); + base::UmaHistogramExactLinear( + "GPU.WatchdogThread.WaitTime.ProgressAfterWait", count, kMax); + } + } +} + bool GpuWatchdogThreadImplV2::WithinOneMinFromPowerResumed() { size_t count = base::TimeDelta::FromSeconds(60) / watchdog_timeout_; return power_resumed_event_ && num_of_timeout_after_power_resume_ <= count;
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.h b/gpu/ipc/service/gpu_watchdog_thread_v2.h index dd00b6b..ba51a10 100644 --- a/gpu/ipc/service/gpu_watchdog_thread_v2.h +++ b/gpu/ipc/service/gpu_watchdog_thread_v2.h
@@ -5,6 +5,7 @@ #ifndef GPU_IPC_SERVICE_GPU_WATCHDOG_THREAD_V2_H_ #define GPU_IPC_SERVICE_GPU_WATCHDOG_THREAD_V2_H_ +#include "build/build_config.h" #include "gpu/ipc/service/gpu_watchdog_thread.h" namespace gpu { @@ -14,6 +15,7 @@ // OnGPUWatchdogTimeout for at most 4 times before the gpu thread is killed. constexpr int kMaxCountOfMoreGpuThreadTimeAllowed = 4; #endif +constexpr int kMaxExtraCyclesBeforeKill = 0; class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV2 : public GpuWatchdogThread, @@ -25,6 +27,7 @@ static std::unique_ptr<GpuWatchdogThreadImplV2> Create( bool start_backgrounded, base::TimeDelta timeout, + int max_extra_cycles_before_kill, bool test_mode); ~GpuWatchdogThreadImplV2() override; @@ -37,6 +40,7 @@ void OnGpuProcessTearDown() override; void ResumeWatchdog() override; void PauseWatchdog() override; + // Records "GPU.WatchdogThread.Event.V2" and "GPU.WatchdogThread.Event". void GpuWatchdogHistogram(GpuWatchdogThreadEvent thread_event) override; bool IsGpuHangDetectedForTesting() override; void WaitForPowerObserverAddedForTesting() override; @@ -65,6 +69,7 @@ }; GpuWatchdogThreadImplV2(base::TimeDelta timeout, + int max_extra_cycles_before_kill, bool test_mode); void OnAddPowerObserver(); void RestartWatchdogTimeoutTask(PauseResumeSource source_of_request); @@ -75,25 +80,39 @@ void InProgress(); bool IsArmed(); void OnWatchdogTimeout(); - bool WatchedThreadNeedsMoreTime(bool no_gpu_hang_detected); + bool WatchedThreadNeedsMoreThreadTime(bool no_gpu_hang_detected); #if defined(OS_WIN) base::ThreadTicks GetWatchedThreadTime(); #endif + bool WatchedThreadGetsExtraTimeout(bool no_gpu_hang); // Do not change the function name. It is used for [GPU HANG] carsh reports. void DeliberatelyTerminateToRecoverFromHang(); // Histogram recorded in OnWatchdogTimeout() + // Records "GPU.WatchdogThread.Timeout" void GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEvent timeout_event); #if defined(OS_WIN) - // The extra timeout the GPU main thread needs to make a progress. - void WindowsNumOfExtraTimeoutsHistogram(); + // The extra thread time the GPU main thread needs to make a progress. + // Records "GPU.WatchdogThread.ExtraThreadTime". + void RecordExtraThreadTimeHistogram(); // The number of users per timeout stay in Chrome after giving extra thread - // time. - void NumOfUsersWaitingWithExtraThreadTimeHistogram(int count); + // time. Records "GPU.WatchdogThread.ExtraThreadTime.NumOfUsers" and + // "GPU.WatchdogThread.Timeout". + void RecordNumOfUsersWaitingWithExtraThreadTimeHistogram(int count); + + // Histograms recorded for WatchedThreadNeedsMoreThreadTime() function. + void WatchedThreadNeedsMoreThreadTimeHistogram( + bool no_gpu_hang_detected, + bool start_of_more_thread_time); #endif + // The number of users stay in Chrome after the extra timeout wait cycles. + // Records "GPU.WatchdogThread.WaitTime.ProgressAfterWait", + // "GPU.WatchdogThread.WaitTime.NumOfUsers" and "GPU.WatchdogThread.Timeout". + void WatchedThreadGetsExtraTimeoutHistogram(bool no_gpu_hang); + // Used for metrics. It's 1 minute after the event. bool WithinOneMinFromPowerResumed(); bool WithinOneMinFromForegrounded(); @@ -148,6 +167,11 @@ // After GPU hang detected, how many times has the GPU thread been allowed to // continue due to not enough thread time. int count_of_more_gpu_thread_time_allowed_ = 0; + + // After detecting GPU hang and continuing running through + // OnGpuWatchdogTimeout for the max cycles, the GPU main thread still cannot + // get the full thread time. + bool less_than_full_thread_time_after_capped_ = false; #endif #if defined(USE_X11) @@ -182,6 +206,13 @@ // constructor. bool in_gpu_initialization_ = false; + // Don't kill the GPU process immediately after a gpu hang is detected. Wait + // for extra cycles of timeout. Kill it, if the GPU still doesn't respond + // after wait. + const int max_extra_cycles_before_kill_; + // how many cycles of timeout since we detect a hang. + int count_of_extra_cycles_ = 0; + // For the experiment and the debugging purpose size_t num_of_timeout_after_power_resume_ = 0; size_t num_of_timeout_after_foregrounded_ = 0;
diff --git a/infra/config/buckets/ci.star b/infra/config/buckets/ci.star index 5da75c5b..79ea772 100644 --- a/infra/config/buckets/ci.star +++ b/infra/config/buckets/ci.star
@@ -1176,6 +1176,10 @@ ci.fyi_ios_builder( name = 'ios13-beta-simulator', + executable = 'recipe:chromium', + properties = { + 'xcode_build_version': '11c29', + }, ) ci.fyi_ios_builder(
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 22a0a04..d5e77d12 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -6954,11 +6954,12 @@ dimensions: "cpu:x86-64" dimensions: "os:Mac" recipe: < - name: "ios/unified_builder_tester" + name: "chromium" cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" cipd_version: "refs/heads/master" properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}" properties_j: "mastername:\"chromium.fyi\"" + properties_j: "xcode_build_version:\"11c29\"" > execution_timeout_secs: 36000 caches: <
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.h b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.h index b16763a..0c6c8ad 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.h +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.h
@@ -74,7 +74,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; void WillBeginBatchOperation(WebStateList* web_state_list) override; void BatchOperationEnded(WebStateList* web_state_list) override;
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm index 96bc06e..767b506 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm
@@ -113,8 +113,8 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { - if (!(reason & WebStateListObserver::CHANGE_REASON_ACTIVATED)) { + ActiveWebStateChangeReason reason) { + if (reason != ActiveWebStateChangeReason::Activated) { return; }
diff --git a/ios/chrome/browser/crash_report/crash_report_helper.mm b/ios/chrome/browser/crash_report/crash_report_helper.mm index 0df584d..08fbfb6 100644 --- a/ios/chrome/browser/crash_report/crash_report_helper.mm +++ b/ios/chrome/browser/crash_report/crash_report_helper.mm
@@ -244,7 +244,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { if (!newWebState) return; web::NavigationItem* pendingItem =
diff --git a/ios/chrome/browser/installation_notifier.mm b/ios/chrome/browser/installation_notifier.mm index da0b968b..85d933c 100644 --- a/ios/chrome/browser/installation_notifier.mm +++ b/ios/chrome/browser/installation_notifier.mm
@@ -161,7 +161,6 @@ __weak InstallationNotifier* weakSelf = self; [_dispatcher dispatchAfter:delayInNSec withBlock:^{ - DCHECK_CURRENTLY_ON(web::WebThread::UI); InstallationNotifier* strongSelf = weakSelf; if (blockId == [strongSelf lastCreatedBlockId]) { [strongSelf pollForTheInstallationOfApps];
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.h b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.h index 3095fb2..4e91b02b 100644 --- a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.h +++ b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.h
@@ -157,7 +157,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; // SessionRestorationObserver implementation. void SessionRestorationFinished(
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm index c2feaeb..7a7b45b9d 100644 --- a/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm +++ b/ios/chrome/browser/metrics/tab_usage_recorder_browser_agent.mm
@@ -521,12 +521,11 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { - if ((reason & WebStateListObserver::CHANGE_REASON_ACTIVATED) || - (reason & WebStateListObserver::CHANGE_REASON_CLOSED) || - (reason & WebStateListObserver::CHANGE_REASON_INSERTED)) { - RecordTabSwitched(old_web_state, new_web_state); - } + ActiveWebStateChangeReason reason) { + if (reason == ActiveWebStateChangeReason::Replaced) + return; + + RecordTabSwitched(old_web_state, new_web_state); } void TabUsageRecorderBrowserAgent::SessionRestorationFinished(
diff --git a/ios/chrome/browser/overlays/overlay_presenter_impl.h b/ios/chrome/browser/overlays/overlay_presenter_impl.h index 278c80c..8c20cff 100644 --- a/ios/chrome/browser/overlays/overlay_presenter_impl.h +++ b/ios/chrome/browser/overlays/overlay_presenter_impl.h
@@ -63,7 +63,7 @@ // Setter for the active WebState. Setting to a new value will hide any // presented overlays and show the next overlay for the new active WebState. void SetActiveWebState(web::WebState* web_state, - WebStateListObserver::ChangeReason reason); + ActiveWebStateChangeReason reason); // Fetches the request queue for |web_state|, creating it if necessary. OverlayRequestQueueImpl* GetQueueForWebState(web::WebState* web_state) const; @@ -147,7 +147,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; // Whether the UI delegate is presenting overlay UI for this presenter. Stays // true from the beginning of the presentation until the end of the
diff --git a/ios/chrome/browser/overlays/overlay_presenter_impl.mm b/ios/chrome/browser/overlays/overlay_presenter_impl.mm index 29555fb..6bbd426 100644 --- a/ios/chrome/browser/overlays/overlay_presenter_impl.mm +++ b/ios/chrome/browser/overlays/overlay_presenter_impl.mm
@@ -60,7 +60,8 @@ for (int i = 0; i < web_state_list_->count(); ++i) { StartObservingWebState(web_state_list_->GetWebStateAt(i)); } - SetActiveWebState(web_state_list_->GetActiveWebState(), CHANGE_REASON_NONE); + SetActiveWebState(web_state_list_->GetActiveWebState(), + ActiveWebStateChangeReason::Activated); } OverlayPresenterImpl::~OverlayPresenterImpl() { @@ -124,7 +125,7 @@ void OverlayPresenterImpl::SetActiveWebState( web::WebState* web_state, - WebStateListObserver::ChangeReason reason) { + ActiveWebStateChangeReason reason) { if (active_web_state_ == web_state) return; @@ -135,8 +136,9 @@ // delegate's presentation context. This occurs: // - when the active WebState is replaced, and // - when the active WebState is detached from the WebStateList. - bool should_cancel_ui = - (reason & CHANGE_REASON_REPLACED) || detaching_active_web_state_; + const bool should_cancel_ui = + (reason == ActiveWebStateChangeReason::Replaced) || + detaching_active_web_state_; active_web_state_ = web_state; detaching_active_web_state_ = false; @@ -316,7 +318,7 @@ void OverlayPresenterImpl::BrowserDestroyed(Browser* browser) { SetPresentationContext(nullptr); - SetActiveWebState(nullptr, CHANGE_REASON_NONE); + SetActiveWebState(nullptr, ActiveWebStateChangeReason::Closed); for (int i = 0; i < web_state_list_->count(); ++i) { StopObservingWebState(web_state_list_->GetWebStateAt(i)); @@ -441,11 +443,11 @@ } } -void OverlayPresenterImpl::WebStateActivatedAt(WebStateList* web_state_list, - web::WebState* old_web_state, - web::WebState* new_web_state, - int active_index, - int reason) { - SetActiveWebState(new_web_state, - static_cast<WebStateListObserver::ChangeReason>(reason)); +void OverlayPresenterImpl::WebStateActivatedAt( + WebStateList* web_state_list, + web::WebState* old_web_state, + web::WebState* new_web_state, + int active_index, + ActiveWebStateChangeReason reason) { + SetActiveWebState(new_web_state, reason); }
diff --git a/ios/chrome/browser/providers/chromium_browser_provider.h b/ios/chrome/browser/providers/chromium_browser_provider.h index 2bcd926..1bbf87b 100644 --- a/ios/chrome/browser/providers/chromium_browser_provider.h +++ b/ios/chrome/browser/providers/chromium_browser_provider.h
@@ -23,6 +23,10 @@ id<LogoVendor> CreateLogoVendor(ChromeBrowserState* browser_state, web::WebState* web_state) const override NS_RETURNS_RETAINED; + id<LogoVendor> CreateLogoVendor( + Browser* browser, + web::WebState* web_state, + id<URLLoadingBridge> loading_bridge) const override NS_RETURNS_RETAINED; UserFeedbackProvider* GetUserFeedbackProvider() const override; AppDistributionProvider* GetAppDistributionProvider() const override; BrandedImageProvider* GetBrandedImageProvider() const override;
diff --git a/ios/chrome/browser/providers/chromium_browser_provider.mm b/ios/chrome/browser/providers/chromium_browser_provider.mm index 3d4691af..028d8f3 100644 --- a/ios/chrome/browser/providers/chromium_browser_provider.mm +++ b/ios/chrome/browser/providers/chromium_browser_provider.mm
@@ -69,6 +69,13 @@ id<LogoVendor> ChromiumBrowserProvider::CreateLogoVendor( ChromeBrowserState* browser_state, web::WebState* web_state) const { + return CreateLogoVendor(nullptr, web_state, nil); +} + +id<LogoVendor> ChromiumBrowserProvider::CreateLogoVendor( + Browser* browser, + web::WebState* web_state, + id<URLLoadingBridge> loading_bridge) const { return [[ChromiumLogoController alloc] init]; }
diff --git a/ios/chrome/browser/safe_browsing/OWNERS b/ios/chrome/browser/safe_browsing/OWNERS new file mode 100644 index 0000000..d936253f --- /dev/null +++ b/ios/chrome/browser/safe_browsing/OWNERS
@@ -0,0 +1,6 @@ +ajuma@chromium.org +kkhorimoto@chromium.org + +# TEAM: ios-directory-owners@chromium.org +# OS: iOS +# COMPONENT: UI>Browser>Navigation
diff --git a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h index 4fa7eb51..6f8ce5b 100644 --- a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h +++ b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h
@@ -52,7 +52,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; // WebStateObserver:: void WasShown(web::WebState* web_state) override;
diff --git a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.mm b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.mm index 4ea230e3..cbf75bb 100644 --- a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.mm +++ b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.mm
@@ -117,7 +117,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { DCHECK(entry_); // This can happen if the user close the last tab in the tab picker.
diff --git a/ios/chrome/browser/sessions/session_restoration_browser_agent.h b/ios/chrome/browser/sessions/session_restoration_browser_agent.h index 04e6cf0..5ac03570 100644 --- a/ios/chrome/browser/sessions/session_restoration_browser_agent.h +++ b/ios/chrome/browser/sessions/session_restoration_browser_agent.h
@@ -75,7 +75,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; // The service object which handles the actual saving of sessions. SessionServiceIOS* session_service_;
diff --git a/ios/chrome/browser/sessions/session_restoration_browser_agent.mm b/ios/chrome/browser/sessions/session_restoration_browser_agent.mm index 37b5bd47..724360b 100644 --- a/ios/chrome/browser/sessions/session_restoration_browser_agent.mm +++ b/ios/chrome/browser/sessions/session_restoration_browser_agent.mm
@@ -195,7 +195,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { if (new_web_state && new_web_state->IsLoading()) return;
diff --git a/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.h b/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.h index d1932cbb..3c665cd3 100644 --- a/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.h +++ b/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.h
@@ -22,7 +22,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; SnapshotCache* snapshot_cache_;
diff --git a/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.mm b/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.mm index 322aef26..57c1042c 100644 --- a/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.mm +++ b/ios/chrome/browser/snapshots/snapshot_cache_web_state_list_observer.mm
@@ -27,12 +27,9 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { - if (!((reason & WebStateListObserver::CHANGE_REASON_ACTIVATED) || - (reason & WebStateListObserver::CHANGE_REASON_CLOSED) || - (reason & WebStateListObserver::CHANGE_REASON_INSERTED))) { + ActiveWebStateChangeReason reason) { + if (reason == ActiveWebStateChangeReason::Replaced) return; - } NSMutableSet<NSString*>* set = [NSMutableSet set]; if (active_index > 0) {
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm index 3c83dadc..470c092 100644 --- a/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm +++ b/ios/chrome/browser/ui/autofill/form_input_accessory/form_input_accessory_mediator.mm
@@ -359,7 +359,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { [self reset]; [self updateWithNewWebState:newWebState]; }
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/form_observer_helper.mm b/ios/chrome/browser/ui/autofill/manual_fill/form_observer_helper.mm index e3608f2..8dc8451a 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/form_observer_helper.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/form_observer_helper.mm
@@ -101,7 +101,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { self.webState = newWebState; }
diff --git a/ios/chrome/browser/ui/badges/badge_mediator.mm b/ios/chrome/browser/ui/badges/badge_mediator.mm index da167c8..a920288 100644 --- a/ios/chrome/browser/ui/badges/badge_mediator.mm +++ b/ios/chrome/browser/ui/badges/badge_mediator.mm
@@ -322,7 +322,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(self.webStateList, webStateList); self.webState = newWebState; }
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 4c83c3e..2fd0d4a 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -3529,7 +3529,7 @@ } - (BOOL)shouldAllowOverscrollActions { - return YES; + return !self.toolbarAccessoryPresenter.presenting; } - (UIView*)headerView { @@ -4189,7 +4189,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { if (oldWebState) { oldWebState->WasHidden(); oldWebState->SetKeepRenderProcessAlive(false);
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm index 5b62898..45635e2b 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -45,10 +45,12 @@ #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h" #import "ios/chrome/browser/ui/settings/utils/pref_backed_boolean.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" +#import "ios/chrome/browser/url_loading/url_loading_params.h" #import "ios/chrome/browser/url_loading/url_loading_service.h" #import "ios/chrome/browser/url_loading/url_loading_service_factory.h" #import "ios/chrome/browser/voice/voice_search_availability.h" -#include "ios/public/provider/chrome/browser/chrome_browser_provider.h" +#import "ios/public/provider/chrome/browser/chrome_browser_provider.h" +#import "ios/public/provider/chrome/browser/url_loading_bridge.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -56,7 +58,8 @@ @interface ContentSuggestionsCoordinator () < ContentSuggestionsViewControllerAudience, - OverscrollActionsControllerDelegate> { + OverscrollActionsControllerDelegate, + URLLoadingBridge> { // Helper object managing the availability of the voice search feature. VoiceSearchAvailability _voiceSearchAvailability; } @@ -127,7 +130,7 @@ identityManager:IdentityManagerFactory::GetForBrowserState( self.browserState) logoVendor:ios::GetChromeBrowserProvider()->CreateLogoVendor( - self.browserState, self.webState) + self.browser, self.webState, self) voiceSearchAvailability:&_voiceSearchAvailability]; self.headerController = [[ContentSuggestionsHeaderViewController alloc] init]; @@ -285,6 +288,16 @@ return height + topInset; } +#pragma mark - URLLoadingBridge + +- (void)loadLogoURL:(GURL)URL { + UrlLoadParams params = UrlLoadParams::InCurrentTab(URL); + params.web_params.transition_type = ui::PageTransitionFromInt( + ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); + UrlLoadingServiceFactory::GetForBrowserState(self.browser->GetBrowserState()) + ->Load(params); +} + #pragma mark - Public methods - (UIView*)view {
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view_controller.mm index 91c8406..539c8d4 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view_controller.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_header_view_controller.mm
@@ -54,7 +54,7 @@ @property(nonatomic, assign) BOOL voiceSearchIsEnabled; // Exposes view and methods to drive the doodle. -@property(nonatomic, weak) id<LogoVendor> logoVendor; +@property(nonatomic, weak, readonly) id<LogoVendor> logoVendor; @property(nonatomic, strong) ContentSuggestionsHeaderView* headerView; @property(nonatomic, strong) UIButton* fakeOmnibox; @@ -73,11 +73,9 @@ @implementation ContentSuggestionsHeaderViewController @synthesize collectionSynchronizer = _collectionSynchronizer; -@synthesize logoVendor = _logoVendor; @synthesize promoCanShow = _promoCanShow; @synthesize showing = _showing; @synthesize omniboxFocused = _omniboxFocused; - @synthesize headerView = _headerView; @synthesize fakeOmnibox = _fakeOmnibox; @synthesize accessibilityButton = _accessibilityButton; @@ -538,6 +536,10 @@ [self updateLogoAndFakeboxDisplay]; } +- (void)setLogoVendor:(id<LogoVendor>)logoVendor { + _logoVendor = logoVendor; +} + - (void)locationBarBecomesFirstResponder { if (!self.isShowing) return;
diff --git a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h index f5eab0bc..2ce9a392 100644 --- a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h +++ b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h
@@ -11,6 +11,15 @@ // context. @interface ChromeActivityOverlayCoordinator : ChromeCoordinator +// Use -initWithBaseViewController:browser: +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + NS_UNAVAILABLE; + +// Use -initWithBaseViewController:browser: +- (instancetype)initWithBaseViewController:(UIViewController*)viewController + browserState:(ChromeBrowserState*)browserState + NS_UNAVAILABLE; + // Text that will be shown above the UIActivityIndicatorView. @property(nonatomic, copy) NSString* messageText;
diff --git a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator_unittest.mm b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator_unittest.mm index 968413a..8e61920 100644 --- a/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator_unittest.mm
@@ -4,6 +4,8 @@ #import "ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h" +#import "base/test/task_environment.h" +#import "ios/chrome/browser/main/test_browser.h" #include "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h" #include "testing/platform_test.h" @@ -19,10 +21,13 @@ TEST_F(ChromeActivityOverlayCoordinatorTest, StartAndStop) { __weak UIView* overlay_view; @autoreleasepool { + base::test::TaskEnvironment task_environment_; UIViewController* base_view_controller = [[UIViewController alloc] init]; + std::unique_ptr<Browser> browser_ = std::make_unique<TestBrowser>(); ChromeActivityOverlayCoordinator* coordinator = [[ChromeActivityOverlayCoordinator alloc] - initWithBaseViewController:base_view_controller]; + initWithBaseViewController:base_view_controller + browser:browser_.get()]; EXPECT_EQ(0u, [base_view_controller.childViewControllers count]);
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h index c6913893..72112f2 100644 --- a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h +++ b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h
@@ -49,7 +49,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; void WebStateDetachedAt(WebStateList* web_state_list, web::WebState* web_state, int index) override;
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.mm index 97b9aeb..cd7e57e1 100644 --- a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.mm +++ b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.mm
@@ -86,7 +86,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { WebStateWasActivated(new_web_state); }
diff --git a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm index 61c0654..b6ad6ba4 100644 --- a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm +++ b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm
@@ -48,7 +48,7 @@ - (void)start { self.clearBrowsingDataTableViewController = [[ClearBrowsingDataTableViewController alloc] - initWithBrowserState:self.browser->GetBrowserState()]; + initWithBrowser:self.browser]; self.clearBrowsingDataTableViewController.extendedLayoutIncludesOpaqueBars = YES; self.clearBrowsingDataTableViewController.delegate = self;
diff --git a/ios/chrome/browser/ui/infobars/infobar_container_mediator.mm b/ios/chrome/browser/ui/infobars/infobar_container_mediator.mm index 9deec43..87328ab 100644 --- a/ios/chrome/browser/ui/infobars/infobar_container_mediator.mm +++ b/ios/chrome/browser/ui/infobars/infobar_container_mediator.mm
@@ -74,7 +74,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(_webStateList, webStateList); if (!newWebState) return;
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm index 938e22d..311f5666 100644 --- a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm +++ b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
@@ -162,7 +162,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(_webStateList, webStateList); self.webState = newWebState; [self.consumer defocusOmnibox];
diff --git a/ios/chrome/browser/ui/main/browser_view_wrangler.mm b/ios/chrome/browser/ui/main/browser_view_wrangler.mm index 0dcb2d46..f951619 100644 --- a/ios/chrome/browser/ui/main/browser_view_wrangler.mm +++ b/ios/chrome/browser/ui/main/browser_view_wrangler.mm
@@ -297,7 +297,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { if (_isShutdown) return;
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm index ec5b14f..5bfd9f32 100644 --- a/ios/chrome/browser/ui/main/scene_controller.mm +++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -900,7 +900,7 @@ } - (NSString*)currentPageSyncedUserName { - ChromeBrowserState* browserState = self.currentBrowserState; + ChromeBrowserState* browserState = self.currentInterface.browserState; if (browserState->IsOffTheRecord()) return nil; signin::IdentityManager* identity_manager = @@ -1353,12 +1353,8 @@ focusOmnibox:focusOmnibox]; } -- (ChromeBrowserState*)currentBrowserState { - return self.browserViewWrangler.currentInterface.browserState; -} - -- (TabModel*)currentTabModel { - return self.browserViewWrangler.currentInterface.bvc.tabModel; +- (Browser*)currentBrowserForURLLoading { + return self.currentInterface.browser; } // Asks the respective Snapshot helper to update the snapshot for the active @@ -1504,7 +1500,7 @@ didDetachWebState:(web::WebState*)webState atIndex:(int)atIndex { // Do nothing on initialization. - if (![self currentTabModel].webStateList) + if (!self.currentInterface.browser) return; if (notifiedWebStateList->empty()) { @@ -1540,11 +1536,13 @@ // Nothing to do here. The next user action (like clicking on an existing // regular tab or creating a new incognito tab from the settings menu) will // take care of the logic to mode switch. - if (self.tabSwitcherIsActive || ![self.currentTabModel isOffTheRecord]) { + if (self.tabSwitcherIsActive || !self.currentInterface.incognito) { return; } - if ([self.currentTabModel count] == 0U) { + WebStateList* currentWebStateList = + self.currentInterface.browser->GetWebStateList(); + if (currentWebStateList->empty()) { [self showTabSwitcher]; } else { [self setCurrentInterfaceForMode:ApplicationMode::NORMAL]; @@ -1559,7 +1557,7 @@ // closure of tabs from the main tab model when the main tab model is not // current. // Nothing to do here. - if (self.tabSwitcherIsActive || [self.currentTabModel isOffTheRecord]) { + if (self.tabSwitcherIsActive || self.currentInterface.incognito) { return; } @@ -1587,7 +1585,7 @@ // until the callback is received. BrowsingDataRemover* browsingDataRemover = BrowsingDataRemoverFactory::GetForBrowserStateIfExists( - self.currentBrowserState); + self.currentInterface.browser->GetBrowserState()); if (browsingDataRemover && browsingDataRemover->IsRemoving()) return;
diff --git a/ios/chrome/browser/ui/main_content/web_scroll_view_main_content_ui_forwarder.mm b/ios/chrome/browser/ui/main_content/web_scroll_view_main_content_ui_forwarder.mm index edd281d4..fb1a79f 100644 --- a/ios/chrome/browser/ui/main_content/web_scroll_view_main_content_ui_forwarder.mm +++ b/ios/chrome/browser/ui/main_content/web_scroll_view_main_content_ui_forwarder.mm
@@ -191,7 +191,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { self.webState = newWebState; }
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h index fffaf9d..c7e72ed9f 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h
@@ -10,4 +10,7 @@ // Accessibility identifier for the Switch to Open Tab button. extern NSString* const kOmniboxPopupRowSwitchTabAccessibilityIdentifier; +// A11y identifier for the table view containing suggestions. +extern NSString* const kOmniboxPopupTableViewAccessibilityIdentifier; + #endif // IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_OMNIBOX_POPUP_ACCESSIBILITY_IDENTIFIER_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.mm index 8f480f1..c703511a 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.mm
@@ -10,3 +10,6 @@ NSString* const kOmniboxPopupRowSwitchTabAccessibilityIdentifier = @"OmniboxPopupRowSwitchTabAccessibilityIdentifier"; + +NSString* const kOmniboxPopupTableViewAccessibilityIdentifier = + @"OmniboxPopupTableViewAccessibilityIdentifier";
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm index f1b1a28..b87fa5d 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_egtest.mm
@@ -350,4 +350,42 @@ assertWithMatcher:grey_sufficientlyVisible()]; } +// Test that on iPhones, when the popup is scrolled, the keyboard is dismissed +// but the omnibox is still expanded and the suggestions are visible. +- (void)testScrollingDismissesKeyboardOnPhones { + [[EarlGrey selectElementWithMatcher:chrome_test_util::FakeOmnibox()] + performAction:grey_typeText(@"hello")]; + + // Matcher for a URL-what-you-typed suggestion. + id<GREYMatcher> row = grey_allOf( + grey_kindOfClassName(@"OmniboxPopupRowCell"), + grey_descendant( + chrome_test_util::StaticTextWithAccessibilityLabel(@"hello")), + grey_sufficientlyVisible(), nil); + + [[EarlGrey selectElementWithMatcher:row] + assertWithMatcher:grey_sufficientlyVisible()]; + GREYAssertTrue([ChromeEarlGrey isKeyboardShownWithError:nil], + @"Keyboard Should be Shown"); + + // Scroll the popup. + [[EarlGrey + selectElementWithMatcher: + grey_accessibilityID(kOmniboxPopupTableViewAccessibilityIdentifier)] + performAction:grey_swipeFastInDirection(kGREYDirectionUp)]; + + [[EarlGrey selectElementWithMatcher:row] + assertWithMatcher:grey_sufficientlyVisible()]; + + // The keyboard should only be dismissed on phones. Ipads, even in + // multitasking, are considered tall enough to fit all suggestions. + if ([ChromeEarlGrey isIPadIdiom]) { + GREYAssertTrue([ChromeEarlGrey isKeyboardShownWithError:nil], + @"Keyboard Should be Shown"); + } else { + GREYAssertFalse([ChromeEarlGrey isKeyboardShownWithError:nil], + @"Keyboard Should not be Shown"); + } +} + @end
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm index 069f535..e626886 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_view_controller.mm
@@ -11,6 +11,7 @@ #include "base/time/time.h" #import "ios/chrome/browser/ui/ntp_tile_views/ntp_tile_layout_util.h" #include "ios/chrome/browser/ui/omnibox/omnibox_constants.h" +#import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_accessibility_identifier_constants.h" #import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.h" #include "ios/chrome/browser/ui/omnibox/popup/self_sizing_table_view.h" #include "ios/chrome/browser/ui/toolbar/buttons/toolbar_configuration.h" @@ -98,6 +99,8 @@ - (void)viewDidLoad { [super viewDidLoad]; + self.tableView.accessibilityIdentifier = + kOmniboxPopupTableViewAccessibilityIdentifier; self.tableView.insetsContentViewsToSafeArea = YES; // Initialize the same size as the parent view, autoresize will correct this.
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm index 3825340c..63b7b62a 100644 --- a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm +++ b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator.mm
@@ -256,7 +256,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(_webStateList, webStateList); self.webState = newWebState; }
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn index 119db6d..e780278 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -37,6 +37,7 @@ "//ios/chrome/browser/browsing_data:feature_flags", "//ios/chrome/browser/feature_engagement", "//ios/chrome/browser/history", + "//ios/chrome/browser/main:public", "//ios/chrome/browser/signin", "//ios/chrome/browser/sync", "//ios/chrome/browser/ui:feature_flags",
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h index 6fe1df2..b0cc4ea2 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h
@@ -9,7 +9,7 @@ @protocol ApplicationCommands; @protocol BrowsingDataCommands; -class ChromeBrowserState; +class Browser; @protocol ClearBrowsingDataUIDelegate; // TableView for clearing browsing data (including history, @@ -17,9 +17,8 @@ @interface ClearBrowsingDataTableViewController : SettingsRootTableViewController <UIAdaptivePresentationControllerDelegate> -// Initializers. |browserState| can't be nil. -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState - NS_DESIGNATED_INITIALIZER; +// Initializers. |browser| can't be nil. +- (instancetype)initWithBrowser:(Browser*)browser NS_DESIGNATED_INITIALIZER; - (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE; // Prepares view controller so that -dismissViewControllerAnimated dismisses it.
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm index c68f02a3..fe1fc4c 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -12,6 +12,7 @@ #include "ios/chrome/browser/browsing_data/browsing_data_features.h" #include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h" #include "ios/chrome/browser/chrome_url_constants.h" +#import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h" #import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h" #import "ios/chrome/browser/ui/commands/application_commands.h" @@ -48,7 +49,10 @@ @property(nonatomic, readonly, strong) ClearBrowsingDataManager* dataManager; // Browser state. -@property(nonatomic, assign) ChromeBrowserState* browserState; +@property(nonatomic, readonly) ChromeBrowserState* browserState; + +// Browser. +@property(nonatomic, readonly) Browser* browser; // Coordinator that managers a UIAlertController to clear browsing data. @property(nonatomic, strong) ActionSheetCoordinator* actionSheetCoordinator; @@ -75,6 +79,7 @@ @synthesize actionSheetCoordinator = _actionSheetCoordinator; @synthesize alertCoordinator = _alertCoordinator; @synthesize browserState = _browserState; +@synthesize browser = _browser; @synthesize clearBrowsingDataBarButton = _clearBrowsingDataBarButton; @synthesize dataManager = _dataManager; @synthesize dispatcher = _dispatcher; @@ -83,12 +88,13 @@ #pragma mark - ViewController Lifecycle. -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState { +- (instancetype)initWithBrowser:(Browser*)browser { self = [super initWithStyle:UITableViewStylePlain]; if (self) { - _browserState = browserState; - _dataManager = - [[ClearBrowsingDataManager alloc] initWithBrowserState:browserState]; + _browser = browser; + _browserState = browser->GetBrowserState(); + _dataManager = [[ClearBrowsingDataManager alloc] + initWithBrowserState:browser->GetBrowserState()]; _dataManager.consumer = self; } return self; @@ -312,7 +318,8 @@ // Show activity indicator modal while removal is happening. self.chromeActivityOverlayCoordinator = [[ChromeActivityOverlayCoordinator alloc] - initWithBaseViewController:self.navigationController]; + initWithBaseViewController:self.navigationController + browser:_browser]; self.chromeActivityOverlayCoordinator.messageText = l10n_util::GetNSStringWithFixup( IDS_IOS_CLEAR_BROWSING_DATA_ACTIVITY_MODAL);
diff --git a/ios/chrome/browser/ui/settings/privacy_table_view_controller.h b/ios/chrome/browser/ui/settings/privacy_table_view_controller.h index e8fb373..f12369e 100644 --- a/ios/chrome/browser/ui/settings/privacy_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/privacy_table_view_controller.h
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h" -class ChromeBrowserState; +class Browser; // The accessibility identifier of the privacy settings collection view. extern NSString* const kPrivacyTableViewId; @@ -15,8 +15,7 @@ @interface PrivacyTableViewController : SettingsRootTableViewController // |browserState| cannot be nil -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState - NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithBrowser:(Browser*)browser NS_DESIGNATED_INITIALIZER; - (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm b/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm index 3464854..9772d45 100644 --- a/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm
@@ -14,6 +14,7 @@ #include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/browsing_data/browsing_data_features.h" +#import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/ui/commands/open_new_tab_command.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_cell.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_item.h" @@ -70,20 +71,24 @@ TableViewDetailIconItem* _handoffDetailItem; } +// Browser. +@property(nonatomic, readonly) Browser* browser; + @end @implementation PrivacyTableViewController #pragma mark - Initialization -- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState { - DCHECK(browserState); +- (instancetype)initWithBrowser:(Browser*)browser { + DCHECK(browser); UITableViewStyle style = base::FeatureList::IsEnabled(kSettingsRefresh) ? UITableViewStylePlain : UITableViewStyleGrouped; self = [super initWithStyle:style]; if (self) { - _browserState = browserState; + _browser = browser; + _browserState = browser->GetBrowserState(); self.title = l10n_util::GetNSString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY); @@ -210,7 +215,7 @@ case ItemTypeClearBrowsingDataClear: { ClearBrowsingDataTableViewController* clearBrowsingDataViewController = [[ClearBrowsingDataTableViewController alloc] - initWithBrowserState:_browserState]; + initWithBrowser:_browser]; clearBrowsingDataViewController.delegate = self; controller = clearBrowsingDataViewController; break;
diff --git a/ios/chrome/browser/ui/settings/privacy_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/privacy_table_view_controller_unittest.mm index 3e30157..495738f 100644 --- a/ios/chrome/browser/ui/settings/privacy_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/privacy_table_view_controller_unittest.mm
@@ -15,6 +15,7 @@ #include "components/sync_preferences/pref_service_syncable.h" #include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" +#import "ios/chrome/browser/main/test_browser.h" #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/prefs/browser_prefs.h" #include "ios/chrome/browser/system_flags.h" @@ -42,6 +43,8 @@ test_cbs_builder.SetPrefService(CreatePrefService()); chrome_browser_state_ = test_cbs_builder.Build(); + browser_ = std::make_unique<TestBrowser>(chrome_browser_state_.get()); + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; initialValueForSpdyProxyEnabled_ = [[defaults valueForKey:kSpdyProxyEnabled] copy]; @@ -71,13 +74,13 @@ } ChromeTableViewController* InstantiateController() override { - return [[PrivacyTableViewController alloc] - initWithBrowserState:chrome_browser_state_.get()]; + return [[PrivacyTableViewController alloc] initWithBrowser:browser_.get()]; } web::WebTaskEnvironment task_environment_; IOSChromeScopedTestingLocalState local_state_; std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; + std::unique_ptr<Browser> browser_; NSString* initialValueForSpdyProxyEnabled_; };
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm index dcc72ee..0b005fc 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm
@@ -825,8 +825,8 @@ initWithPrefs:_browserState->GetPrefs()]; break; case ItemTypePrivacy: - controller = [[PrivacyTableViewController alloc] - initWithBrowserState:_browserState]; + controller = + [[PrivacyTableViewController alloc] initWithBrowser:_browser]; break; case ItemTypeLanguageSettings: { LanguageSettingsMediator* mediator =
diff --git a/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm b/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm index 3980734..fc87d78 100644 --- a/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm +++ b/ios/chrome/browser/ui/side_swipe/side_swipe_controller.mm
@@ -683,7 +683,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { // If there is any an ongoing swipe for the old webState, cancel it and // dismiss the curtain. [self dismissCurtain];
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm index 598dd11b..478ca05 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_grid/grid/grid_view_controller.mm
@@ -243,7 +243,7 @@ return; } [self.collectionView selectItemAtIndexPath:CreateIndexPath(self.selectedIndex) - animated:animated + animated:NO scrollPosition:UICollectionViewScrollPositionTop]; // Update the delegate, in case it wasn't set when |items| was populated. [self.delegate gridViewController:self didChangeItemCount:self.items.count];
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm index 7b7e3ee..19815c9 100644 --- a/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm +++ b/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm
@@ -227,7 +227,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { // If the selected index changes as a result of the last webstate being // detached, atIndex will be -1. if (atIndex == -1) {
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm index 24d6a249..1393954 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -1040,7 +1040,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { if (!newWebState) return;
diff --git a/ios/chrome/browser/ui/text_zoom/text_zoom_mediator.mm b/ios/chrome/browser/ui/text_zoom/text_zoom_mediator.mm index 160824d05..01eba2ae 100644 --- a/ios/chrome/browser/ui/text_zoom/text_zoom_mediator.mm +++ b/ios/chrome/browser/ui/text_zoom/text_zoom_mediator.mm
@@ -105,7 +105,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { [self.commandHandler hideTextZoom]; }
diff --git a/ios/chrome/browser/ui/toolbar/fullscreen/legacy_toolbar_ui_updater.mm b/ios/chrome/browser/ui/toolbar/fullscreen/legacy_toolbar_ui_updater.mm index bd0613b5..02ea90e 100644 --- a/ios/chrome/browser/ui/toolbar/fullscreen/legacy_toolbar_ui_updater.mm +++ b/ios/chrome/browser/ui/toolbar/fullscreen/legacy_toolbar_ui_updater.mm
@@ -135,7 +135,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(self.webStateList, webStateList); self.webState = newWebState; }
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm b/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm index f04945f2..c0c2624 100644 --- a/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm +++ b/ios/chrome/browser/ui/toolbar/toolbar_mediator.mm
@@ -168,7 +168,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason { + reason:(ActiveWebStateChangeReason)reason { DCHECK_EQ(_webStateList, webStateList); self.webState = newWebState; }
diff --git a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h index e9fde6c0..d009dfd 100644 --- a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h +++ b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h
@@ -49,7 +49,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; void WebStateDetachedAt(WebStateList* web_state_list, web::WebState* web_state, int index) override;
diff --git a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.mm b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.mm index ed8c962..17ae40a3 100644 --- a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.mm +++ b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.mm
@@ -85,7 +85,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { SetWebState(new_web_state); }
diff --git a/ios/chrome/browser/url_loading/app_url_loading_service.h b/ios/chrome/browser/url_loading/app_url_loading_service.h index afed992..81e3bbda 100644 --- a/ios/chrome/browser/url_loading/app_url_loading_service.h +++ b/ios/chrome/browser/url_loading/app_url_loading_service.h
@@ -13,11 +13,9 @@ #include "ios/chrome/app/application_mode.h" #include "ui/base/page_transition_types.h" -class ChromeBrowserState; +class Browser; struct UrlLoadParams; -@class TabModel; - // Objective-C delegate for AppUrlLoadingService. @protocol AppURLLoadingServiceDelegate @@ -49,9 +47,8 @@ // doing unnecessary work related to showing the previously selected tab. - (void)expectNewForegroundTabForMode:(ApplicationMode)targetMode; -// TODO(crbug.com/907527): refactor to remove these and most methods above. -- (ChromeBrowserState*)currentBrowserState; -- (TabModel*)currentTabModel; +// TODO(crbug.com/907527): refactor to remove this and most methods above. +@property(nonatomic, readonly) Browser* currentBrowserForURLLoading; @end @@ -66,8 +63,8 @@ // Opens a url based on |params| in a new tab. virtual void LoadUrlInNewTab(const UrlLoadParams& params); - // Returns the current browser state. - virtual ChromeBrowserState* GetCurrentBrowserState(); + // Returns the current active browser in the scene owning this object. + virtual Browser* GetCurrentBrowser(); private: __weak id<AppURLLoadingServiceDelegate> delegate_;
diff --git a/ios/chrome/browser/url_loading/app_url_loading_service.mm b/ios/chrome/browser/url_loading/app_url_loading_service.mm index bc62021..05d4743c 100644 --- a/ios/chrome/browser/url_loading/app_url_loading_service.mm +++ b/ios/chrome/browser/url_loading/app_url_loading_service.mm
@@ -27,6 +27,9 @@ void AppUrlLoadingService::LoadUrlInNewTab(const UrlLoadParams& params) { DCHECK(delegate_); + ChromeBrowserState* current_browser_state = + delegate_.currentBrowserForURLLoading->GetBrowserState(); + if (params.web_params.url.is_valid()) { UrlLoadParams saved_params = params; saved_params.web_params.transition_type = ui::PAGE_TRANSITION_TYPED; @@ -46,19 +49,18 @@ [delegate_ dismissModalDialogsWithCompletion:^{ [delegate_ setCurrentInterfaceForMode:mode]; - UrlLoadingServiceFactory::GetForBrowserState( - [delegate_ currentBrowserState]) + UrlLoadingServiceFactory::GetForBrowserState(current_browser_state) ->Load(saved_params); } dismissOmnibox:YES]; } } else { - if ([delegate_ currentBrowserState] -> IsOffTheRecord() != - params.in_incognito) { + if (current_browser_state->IsOffTheRecord() != params.in_incognito) { // Must take a snapshot of the tab before we switch the incognito mode // because the currentTab will change after the switch. web::WebState* currentWebState = - [delegate_ currentTabModel].webStateList->GetActiveWebState(); + delegate_.currentBrowserForURLLoading->GetWebStateList() + ->GetActiveWebState(); if (currentWebState) { SnapshotTabHelper::FromWebState(currentWebState) ->UpdateSnapshotWithCallback(nil); @@ -81,6 +83,6 @@ } } -ChromeBrowserState* AppUrlLoadingService::GetCurrentBrowserState() { - return [delegate_ currentBrowserState]; +Browser* AppUrlLoadingService::GetCurrentBrowser() { + return [delegate_ currentBrowserForURLLoading]; }
diff --git a/ios/chrome/browser/url_loading/test_app_url_loading_service.h b/ios/chrome/browser/url_loading/test_app_url_loading_service.h index ea1508b..0700a50 100644 --- a/ios/chrome/browser/url_loading/test_app_url_loading_service.h +++ b/ios/chrome/browser/url_loading/test_app_url_loading_service.h
@@ -8,7 +8,7 @@ #include "ios/chrome/browser/url_loading/app_url_loading_service.h" #import "ios/chrome/browser/url_loading/url_loading_params.h" -class ChromeBrowserState; +class Browser; // Service used to manage url loading at application level. class TestAppUrlLoadingService : public AppUrlLoadingService { @@ -20,14 +20,14 @@ void LoadUrlInNewTab(const UrlLoadParams& params) override; // Returns the current browser state. - ChromeBrowserState* GetCurrentBrowserState() override; + Browser* GetCurrentBrowser() override; // These are the last parameters passed to |LoadUrlInNewTab|. - UrlLoadParams last_params; - int load_new_tab_call_count = 0; + UrlLoadParams last_params_; + int load_new_tab_call_count_ = 0; // This can be set by the test. - ChromeBrowserState* currentBrowserState; + Browser* current_browser_; }; #endif // IOS_CHROME_BROWSER_URL_LOADING_APP_URL_LOADING_SERVICE_H_
diff --git a/ios/chrome/browser/url_loading/test_app_url_loading_service.mm b/ios/chrome/browser/url_loading/test_app_url_loading_service.mm index 67c6511..716ae4a 100644 --- a/ios/chrome/browser/url_loading/test_app_url_loading_service.mm +++ b/ios/chrome/browser/url_loading/test_app_url_loading_service.mm
@@ -11,10 +11,10 @@ TestAppUrlLoadingService::TestAppUrlLoadingService() {} void TestAppUrlLoadingService::LoadUrlInNewTab(const UrlLoadParams& params) { - last_params = params; - load_new_tab_call_count++; + last_params_ = params; + load_new_tab_call_count_++; } -ChromeBrowserState* TestAppUrlLoadingService::GetCurrentBrowserState() { - return currentBrowserState; +Browser* TestAppUrlLoadingService::GetCurrentBrowser() { + return current_browser_; }
diff --git a/ios/chrome/browser/url_loading/url_loading_service.mm b/ios/chrome/browser/url_loading/url_loading_service.mm index 8dd27055..1d3f490c 100644 --- a/ios/chrome/browser/url_loading/url_loading_service.mm +++ b/ios/chrome/browser/url_loading/url_loading_service.mm
@@ -255,6 +255,8 @@ DCHECK(delegate_); DCHECK(browser_); ChromeBrowserState* browser_state = browser_->GetBrowserState(); + ChromeBrowserState* active_browser_state = + app_service_->GetCurrentBrowser()->GetBrowserState(); // Two UrlLoadingServices exist, normal and incognito. Handle two special // cases that need to be sent up to the AppUrlLoadingService: @@ -264,8 +266,7 @@ // so the AppUrlLoadingService needs to switch modes before loading the URL. if (params.in_incognito != browser_state->IsOffTheRecord() || (!params.in_background() && - params.in_incognito != - app_service_->GetCurrentBrowserState()->IsOffTheRecord())) { + params.in_incognito != active_browser_state->IsOffTheRecord())) { // When sending a load request that switches modes, ensure the tab // ends up appended to the end of the model, not just next to what is // currently selected in the other mode. This is done with the |append_to|
diff --git a/ios/chrome/browser/url_loading/url_loading_service_unittest.mm b/ios/chrome/browser/url_loading/url_loading_service_unittest.mm index e83567a..f627316 100644 --- a/ios/chrome/browser/url_loading/url_loading_service_unittest.mm +++ b/ios/chrome/browser/url_loading/url_loading_service_unittest.mm
@@ -69,7 +69,7 @@ otr_service_( UrlLoadingServiceFactory::GetForBrowserState(otr_browser_state_)) { // Configure app service. - app_service_->currentBrowserState = chrome_browser_state_; + app_service_->current_browser_ = browser_.get(); // Disable web usage on both browsers WebUsageEnablerBrowserAgent::CreateForBrowser(browser_.get()); @@ -153,7 +153,7 @@ service_->Load( UrlLoadParams::SwitchToTab(web::NavigationManager::WebLoadParams(url))); EXPECT_EQ(web_state_ptr_2, web_state_list->GetActiveWebState()); - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests that switch to open tab from the NTP close it if it doesn't have @@ -185,7 +185,7 @@ UrlLoadParams::SwitchToTab(web::NavigationManager::WebLoadParams(url))); EXPECT_EQ(web_state_ptr_2, web_state_list->GetActiveWebState()); EXPECT_EQ(1, web_state_list->count()); - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests that trying to switch to a closed tab open from the NTP opens it in the @@ -208,7 +208,7 @@ UrlLoadParams::SwitchToTab(web::NavigationManager::WebLoadParams(url))); EXPECT_EQ(1, web_state_list->count()); EXPECT_EQ(web_state_ptr, web_state_list->GetActiveWebState()); - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests open a new url in the NTP or the current tab. @@ -237,7 +237,7 @@ EXPECT_EQ(1, web_state_list->count()); // Check that we had no app level redirection. - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests opening a url in a new tab. @@ -258,7 +258,7 @@ EXPECT_EQ(2, web_state_list->count()); // Check that we had no app level redirection. - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests open a new url in the current incognito tab. @@ -269,9 +269,9 @@ ASSERT_EQ(0, otr_web_state_list->count()); // Make app level to be otr. - ChromeBrowserState* otr_browser_state = - chrome_browser_state_->GetOffTheRecordChromeBrowserState(); - app_service_->currentBrowserState = otr_browser_state; + std::unique_ptr<TestBrowser> otr_browser = std::make_unique<TestBrowser>( + chrome_browser_state_->GetOffTheRecordChromeBrowserState()); + app_service_->current_browser_ = otr_browser.get(); // Set a new tab. GURL newtab("chrome://newtab"); @@ -301,7 +301,7 @@ EXPECT_EQ(1, otr_web_state_list->count()); // Check that we had no app level redirection. - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Tests opening a url in a new incognito tab. @@ -311,9 +311,9 @@ WebStateList* otr_web_state_list = otr_browser_->GetWebStateList(); ASSERT_EQ(0, otr_web_state_list->count()); - ChromeBrowserState* otr_browser_state = - chrome_browser_state_->GetOffTheRecordChromeBrowserState(); - app_service_->currentBrowserState = otr_browser_state; + std::unique_ptr<TestBrowser> otr_browser = std::make_unique<TestBrowser>( + chrome_browser_state_->GetOffTheRecordChromeBrowserState()); + app_service_->current_browser_ = otr_browser.get(); GURL url1("http://test/1"); UrlLoadParams params1 = @@ -332,7 +332,7 @@ EXPECT_EQ(2, otr_web_state_list->count()); // Check if we had any app level redirection. - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } // Test opening a normal url in new tab with incognito service. @@ -342,9 +342,9 @@ WebStateList* otr_web_state_list = otr_browser_->GetWebStateList(); ASSERT_EQ(0, otr_web_state_list->count()); - ChromeBrowserState* otr_browser_state = - chrome_browser_state_->GetOffTheRecordChromeBrowserState(); - app_service_->currentBrowserState = otr_browser_state; + std::unique_ptr<TestBrowser> otr_browser = std::make_unique<TestBrowser>( + chrome_browser_state_->GetOffTheRecordChromeBrowserState()); + app_service_->current_browser_ = otr_browser.get(); // Send to right service. GURL url1("http://test/1"); @@ -365,7 +365,7 @@ EXPECT_EQ(1, otr_web_state_list->count()); // Check that had one app level redirection. - EXPECT_EQ(1, app_service_->load_new_tab_call_count); + EXPECT_EQ(1, app_service_->load_new_tab_call_count_); } // Test opening an incognito url in new tab with normal service. @@ -375,7 +375,7 @@ WebStateList* otr_web_state_list = otr_browser_->GetWebStateList(); ASSERT_EQ(0, otr_web_state_list->count()); - app_service_->currentBrowserState = chrome_browser_state_; + app_service_->current_browser_ = browser_.get(); // Send to wrong service. GURL url1("http://test/1"); @@ -396,7 +396,7 @@ EXPECT_EQ(0, otr_web_state_list->count()); // Check that we had one app level redirection. - EXPECT_EQ(1, app_service_->load_new_tab_call_count); + EXPECT_EQ(1, app_service_->load_new_tab_call_count_); } // Test opening an incognito url in new tab with normal service using load @@ -407,7 +407,7 @@ WebStateList* otr_web_state_list = otr_browser_->GetWebStateList(); ASSERT_EQ(0, otr_web_state_list->count()); - app_service_->currentBrowserState = chrome_browser_state_; + app_service_->current_browser_ = browser_.get(); // Send to normal service. GURL url1("http://test/1"); @@ -419,7 +419,7 @@ EXPECT_EQ(0, otr_web_state_list->count()); // Check that we had one app level redirection. - EXPECT_EQ(1, app_service_->load_new_tab_call_count); + EXPECT_EQ(1, app_service_->load_new_tab_call_count_); } // Test opening an incognito url in current tab with normal service using load @@ -431,9 +431,9 @@ ASSERT_EQ(0, otr_web_state_list->count()); // Make app level to be otr. - ChromeBrowserState* otr_browser_state = - chrome_browser_state_->GetOffTheRecordChromeBrowserState(); - app_service_->currentBrowserState = otr_browser_state; + std::unique_ptr<TestBrowser> otr_browser = std::make_unique<TestBrowser>( + chrome_browser_state_->GetOffTheRecordChromeBrowserState()); + app_service_->current_browser_ = otr_browser.get(); // Set a new incognito tab. GURL newtab("chrome://newtab"); @@ -463,7 +463,7 @@ EXPECT_EQ(1, otr_web_state_list->count()); // Check that we had no app level redirection. - EXPECT_EQ(0, app_service_->load_new_tab_call_count); + EXPECT_EQ(0, app_service_->load_new_tab_call_count_); } } // namespace
diff --git a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h index b71aad8..baab84c3 100644 --- a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h +++ b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h
@@ -29,7 +29,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; private: ScopedObserver<WebStateList, WebStateListObserver> web_state_list_observer_{
diff --git a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.mm b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.mm index 450e5dd..436427c 100644 --- a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.mm +++ b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.mm
@@ -31,7 +31,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { // If this class is created inside a |WebStateActivatedAt| callback, then it // will be initialized already observing |new_web_state|, so it doesn't need // to start or stop observing anything.
diff --git a/ios/chrome/browser/web_state_list/web_state_list.h b/ios/chrome/browser/web_state_list/web_state_list.h index 09a04dcb..91cd591 100644 --- a/ios/chrome/browser/web_state_list/web_state_list.h +++ b/ios/chrome/browser/web_state_list/web_state_list.h
@@ -24,6 +24,8 @@ class WebState; } +enum class ActiveWebStateChangeReason; + // Manages a list of WebStates. // // This class supports mutating the list and to observe the mutations via the @@ -231,7 +233,7 @@ // Makes the WebState at the specified index the active WebState. // // Assumes that the WebStateList is locked. - void ActivateWebStateAtImpl(int index, int reason); + void ActivateWebStateAtImpl(int index, ActiveWebStateChangeReason reason); // Sets the opener of any WebState that reference the WebState at the // specified index to null. @@ -239,7 +241,8 @@ // Notify the observers if the active WebState change. |reason| is the value // passed to the WebStateListObservers. - void NotifyIfActiveWebStateChanged(web::WebState* old_web_state, int reason); + void NotifyIfActiveWebStateChanged(web::WebState* old_web_state, + ActiveWebStateChangeReason reason); // Returns the index of the |n|-th WebState (with n > 0) in the sequence of // WebStates opened from the specified WebState starting the search from
diff --git a/ios/chrome/browser/web_state_list/web_state_list.mm b/ios/chrome/browser/web_state_list/web_state_list.mm index 98d6e799..b94a549b 100644 --- a/ios/chrome/browser/web_state_list/web_state_list.mm +++ b/ios/chrome/browser/web_state_list/web_state_list.mm
@@ -248,8 +248,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(ContainsIndex(index)); auto lock = LockForMutation(); - return ActivateWebStateAtImpl(index, - WebStateListObserver::CHANGE_REASON_ACTIVATED); + return ActivateWebStateAtImpl(index, ActiveWebStateChangeReason::Activated); } base::AutoReset<bool> WebStateList::LockForMutation() { @@ -296,7 +295,7 @@ SetOpenerOfWebStateAt(index, opener); if (activating) - ActivateWebStateAtImpl(index, WebStateListObserver::CHANGE_REASON_INSERTED); + ActivateWebStateAtImpl(index, ActiveWebStateChangeReason::Inserted); return index; } @@ -353,7 +352,7 @@ // When the active WebState is replaced, notify the observers as nearly // all of them needs to treat a replacement as the selection changed. NotifyIfActiveWebStateChanged(old_web_state.get(), - WebStateListObserver::CHANGE_REASON_REPLACED); + ActiveWebStateChangeReason::Replaced); delegate_->WebStateDetached(old_web_state.get()); return old_web_state; @@ -387,7 +386,7 @@ if (active_web_state_was_closed) { NotifyIfActiveWebStateChanged(web_state, - WebStateListObserver::CHANGE_REASON_NONE); + ActiveWebStateChangeReason::Closed); } delegate_->WebStateDetached(web_state); @@ -419,7 +418,7 @@ // one notification per WebState in the worst case (when the active // WebState is the last one and no opener is set to any WebState). web_state_list->ActivateWebStateAtImpl( - kInvalidIndex, WebStateListObserver::CHANGE_REASON_CLOSED); + kInvalidIndex, ActiveWebStateChangeReason::Closed); // Close the WebStates from last to first. while (!web_state_list->empty()) @@ -429,7 +428,8 @@ close_flags)); } -void WebStateList::ActivateWebStateAtImpl(int index, int reason) { +void WebStateList::ActivateWebStateAtImpl(int index, + ActiveWebStateChangeReason reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(locked_); DCHECK(ContainsIndex(index) || index == kInvalidIndex); @@ -468,8 +468,9 @@ } } -void WebStateList::NotifyIfActiveWebStateChanged(web::WebState* old_web_state, - int reason) { +void WebStateList::NotifyIfActiveWebStateChanged( + web::WebState* old_web_state, + ActiveWebStateChangeReason reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); web::WebState* new_web_state = GetActiveWebState(); if (old_web_state == new_web_state)
diff --git a/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.h b/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.h index 912dc6d..bf9c3b8 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.h +++ b/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.h
@@ -29,7 +29,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override; + ActiveWebStateChangeReason reason) override; private: // Counters for metrics.
diff --git a/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.mm b/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.mm index b4e60f1c..076e9092 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.mm +++ b/ios/chrome/browser/web_state_list/web_state_list_metrics_observer.mm
@@ -63,15 +63,12 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { if (metric_collection_paused_) return; ++activated_web_state_counter_; - if (!((reason & WebStateListObserver::CHANGE_REASON_ACTIVATED) || - (reason & WebStateListObserver::CHANGE_REASON_CLOSED) || - (reason & WebStateListObserver::CHANGE_REASON_INSERTED))) { + if (reason == ActiveWebStateChangeReason::Replaced) return; - } base::RecordAction(base::UserMetricsAction("MobileTabSwitched")); }
diff --git a/ios/chrome/browser/web_state_list/web_state_list_observer.h b/ios/chrome/browser/web_state_list/web_state_list_observer.h index 984906a..d45b960 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_observer.h +++ b/ios/chrome/browser/web_state_list/web_state_list_observer.h
@@ -13,31 +13,27 @@ class WebState; } +// Constants used when notifying about changes to active WebState. +enum class ActiveWebStateChangeReason { + // Used to indicate the active WebState changed because active WebState was + // replaced (e.g. a pre-rendered WebState is promoted to a real tab). + Replaced, + + // Used to indicate the active WebState changed because it was activated. + Activated, + + // Used to indicate the active WebState changed because active WebState was + // closed (or detached in case of multi-window). + Closed, + + // Used to indicate the active WebState changed because a new active + // WebState was inserted (e.g. the first WebState is created). + Inserted, +}; + // Interface for listening to events occurring to WebStateLists. class WebStateListObserver { public: - // Constants used when notifying about changes to active WebState. - enum ChangeReason { - // Used to indicate that none of the reasons below are responsible for - // the active WebState change. - CHANGE_REASON_NONE = 0, - - // Used to indicate the active WebState changed because active WebState was - // replaces. - CHANGE_REASON_REPLACED = 1 << 0, - - // Used to indicate the active WebState changed because it was activated. - CHANGE_REASON_ACTIVATED = 1 << 1, - - // Used to indicate the active WebState changed because active WebState was - // closed. - CHANGE_REASON_CLOSED = 1 << 2, - - // Used to indicate the active WebState changed because a new active - // WebState was inserted. - CHANGE_REASON_INSERTED = 1 << 3, - }; - WebStateListObserver(); virtual ~WebStateListObserver(); @@ -90,7 +86,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason); + ActiveWebStateChangeReason reason); // Invoked before a batched operations begins. The observer can use this // notification if it is interested in considering all those individual
diff --git a/ios/chrome/browser/web_state_list/web_state_list_observer.mm b/ios/chrome/browser/web_state_list/web_state_list_observer.mm index 168cec0..60e9161c 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_observer.mm +++ b/ios/chrome/browser/web_state_list/web_state_list_observer.mm
@@ -40,11 +40,12 @@ int index, bool user_action) {} -void WebStateListObserver::WebStateActivatedAt(WebStateList* web_state_list, - web::WebState* old_web_state, - web::WebState* new_web_state, - int active_index, - int reason) {} +void WebStateListObserver::WebStateActivatedAt( + WebStateList* web_state_list, + web::WebState* old_web_state, + web::WebState* new_web_state, + int active_index, + ActiveWebStateChangeReason reason) {} void WebStateListObserver::WillBeginBatchOperation( WebStateList* web_state_list) {}
diff --git a/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h b/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h index 8dfb59a..42d6e2c 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h +++ b/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h
@@ -64,7 +64,7 @@ didChangeActiveWebState:(web::WebState*)newWebState oldWebState:(web::WebState*)oldWebState atIndex:(int)atIndex - reason:(int)reason; + reason:(ActiveWebStateChangeReason)reason; // Invoked before a batched operations begins. The observer can use this // notification if it is interested in considering all those individual @@ -115,7 +115,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) final; + ActiveWebStateChangeReason reason) final; void WillBeginBatchOperation(WebStateList* web_state_list) final; void BatchOperationEnded(WebStateList* web_state_list) final;
diff --git a/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.mm b/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.mm index 930a82e8..b63da39c 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.mm +++ b/ios/chrome/browser/web_state_list/web_state_list_observer_bridge.mm
@@ -108,7 +108,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) { + ActiveWebStateChangeReason reason) { const SEL selector = @selector (webStateList:didChangeActiveWebState:oldWebState:atIndex:reason:); if (![observer_ respondsToSelector:selector])
diff --git a/ios/chrome/browser/web_state_list/web_state_list_unittest.mm b/ios/chrome/browser/web_state_list/web_state_list_unittest.mm index 4bc4439..9af3f02 100644 --- a/ios/chrome/browser/web_state_list/web_state_list_unittest.mm +++ b/ios/chrome/browser/web_state_list/web_state_list_unittest.mm
@@ -100,7 +100,7 @@ web::WebState* old_web_state, web::WebState* new_web_state, int active_index, - int reason) override { + ActiveWebStateChangeReason reason) override { web_state_activated_called_ = true; }
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 9bc0146..cbdb213 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -54,6 +54,8 @@ chrome_ios_eg_test("ios_chrome_bookmarks_egtests") { deps = [ "//ios/chrome/browser/ui/bookmarks:eg_tests" ] + + shards = 3 } chrome_ios_eg_test("ios_chrome_signin_egtests") { @@ -99,6 +101,8 @@ "//ios/chrome/browser/ui/toolbar:eg_tests", "//ios/chrome/browser/ui/webui:eg_tests", ] + + shards = 2 } chrome_ios_eg_test("ios_chrome_web_egtests") {
diff --git a/ios/chrome/test/earl_grey2/BUILD.gn b/ios/chrome/test/earl_grey2/BUILD.gn index c983833f..2aba2c9 100644 --- a/ios/chrome/test/earl_grey2/BUILD.gn +++ b/ios/chrome/test/earl_grey2/BUILD.gn
@@ -130,6 +130,8 @@ "//ios/chrome/browser/ui/webui:eg2_tests", ] data_deps = [ ":ios_chrome_eg2tests" ] + + shards = 2 } chrome_ios_eg2_test("ios_chrome_web_eg2tests_module") {
diff --git a/media/audio/audio_input_unittest.cc b/media/audio/audio_input_unittest.cc index e052d024..a42f05a 100644 --- a/media/audio/audio_input_unittest.cc +++ b/media/audio/audio_input_unittest.cc
@@ -173,47 +173,36 @@ }; // Test create and close of an AudioInputStream without recording audio. -TEST_F(AudioInputTest, CreateAndClose) { +// Disabled: crbug.com/1060165 +TEST_F(AudioInputTest, DISABLED_CreateAndClose) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); MakeAudioInputStreamOnAudioThread(); CloseAudioInputStreamOnAudioThread(); } -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) -// This test is failing on ARM linux: http://crbug.com/238490 -#define MAYBE_OpenAndClose DISABLED_OpenAndClose -#else -#define MAYBE_OpenAndClose OpenAndClose -#endif // Test create, open and close of an AudioInputStream without recording audio. -TEST_F(AudioInputTest, MAYBE_OpenAndClose) { +// This test is failing on ARM linux: http://crbug.com/238490 +// Disabled: crbug.com/1060165 +TEST_F(AudioInputTest, DISABLED_OpenAndClose) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); MakeAudioInputStreamOnAudioThread(); OpenAndCloseAudioInputStreamOnAudioThread(); } -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) -// This test is failing on ARM linux: http://crbug.com/238490 -#define MAYBE_OpenStopAndClose DISABLED_OpenStopAndClose -#else -#define MAYBE_OpenStopAndClose OpenStopAndClose -#endif // Test create, open, stop and close of an AudioInputStream without recording. -TEST_F(AudioInputTest, MAYBE_OpenStopAndClose) { +// This test is failing on ARM linux: http://crbug.com/238490 +// Disabled: crbug.com/1060165 +TEST_F(AudioInputTest, DISABLED_OpenStopAndClose) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); MakeAudioInputStreamOnAudioThread(); OpenStopAndCloseAudioInputStreamOnAudioThread(); } -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) -// This test is failing on ARM linux: http://crbug.com/238490 -#define MAYBE_Record DISABLED_Record -#else -#define MAYBE_Record Record -#endif // Test a normal recording sequence using an AudioInputStream. // Very simple test which starts capturing and verifies that recording starts. -TEST_F(AudioInputTest, MAYBE_Record) { +// This test is failing on ARM linux: http://crbug.com/238490 +// Disabled: crbug.com/1060165 +TEST_F(AudioInputTest, DISABLED_Record) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); MakeAudioInputStreamOnAudioThread();
diff --git a/media/audio/audio_manager_unittest.cc b/media/audio/audio_manager_unittest.cc index 89bfe3f6..351280a 100644 --- a/media/audio/audio_manager_unittest.cc +++ b/media/audio/audio_manager_unittest.cc
@@ -457,7 +457,8 @@ } #else // !defined(USE_CRAS) -TEST_F(AudioManagerTest, HandleDefaultDeviceIDs) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_HandleDefaultDeviceIDs) { // Use a fake manager so we can makeup device ids, this will still use the // AudioManagerBase code. CreateAudioManagerForTesting<FakeAudioManager>(); @@ -466,7 +467,8 @@ } // Test that devices can be enumerated. -TEST_F(AudioManagerTest, EnumerateInputDevices) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateInputDevices) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); AudioDeviceDescriptions device_descriptions; @@ -475,7 +477,8 @@ } // Test that devices can be enumerated. -TEST_F(AudioManagerTest, EnumerateOutputDevices) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateOutputDevices) { ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); AudioDeviceDescriptions device_descriptions; @@ -512,7 +515,8 @@ // sometimes be tested on a single system. These tests specifically // test Pulseaudio. -TEST_F(AudioManagerTest, EnumerateInputDevicesPulseaudio) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateInputDevicesPulseaudio) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); CreateAudioManagerForTesting<AudioManagerPulse>(); @@ -526,7 +530,8 @@ } } -TEST_F(AudioManagerTest, EnumerateOutputDevicesPulseaudio) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateOutputDevicesPulseaudio) { ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); CreateAudioManagerForTesting<AudioManagerPulse>(); @@ -546,7 +551,8 @@ // sometimes be tested on a single system. These tests specifically // test Alsa. -TEST_F(AudioManagerTest, EnumerateInputDevicesAlsa) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateInputDevicesAlsa) { ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); DVLOG(2) << "Testing AudioManagerAlsa."; @@ -556,7 +562,8 @@ CheckDeviceDescriptions(device_descriptions); } -TEST_F(AudioManagerTest, EnumerateOutputDevicesAlsa) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_EnumerateOutputDevicesAlsa) { ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); DVLOG(2) << "Testing AudioManagerAlsa."; @@ -567,7 +574,8 @@ } #endif // defined(USE_ALSA) -TEST_F(AudioManagerTest, GetDefaultOutputStreamParameters) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_GetDefaultOutputStreamParameters) { #if defined(OS_WIN) || defined(OS_MACOSX) ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable()); @@ -577,7 +585,8 @@ #endif // defined(OS_WIN) || defined(OS_MACOSX) } -TEST_F(AudioManagerTest, GetAssociatedOutputDeviceID) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_GetAssociatedOutputDeviceID) { #if defined(OS_WIN) || defined(OS_MACOSX) ABORT_AUDIO_TEST_IF_NOT(InputDevicesAvailable() && OutputDevicesAvailable()); @@ -653,7 +662,8 @@ } }; -TEST_F(AudioManagerTest, GroupId) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, DISABLED_GroupId) { CreateAudioManagerForTesting<TestAudioManager>(); // Groups: // input1, output1 @@ -688,7 +698,9 @@ EXPECT_NE(outputs[2].group_id, outputs[3].group_id); } -TEST_F(AudioManagerTest, DefaultCommunicationsLabelsContainRealLabels) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, + DISABLED_DefaultCommunicationsLabelsContainRealLabels) { CreateAudioManagerForTesting<TestAudioManager>(); std::string default_input_id = device_info_accessor_->GetDefaultInputDeviceID(); @@ -713,7 +725,9 @@ // GetPreferredOutputStreamParameters() can make changes to its input_params, // ensure that creating a stream with the default parameters always works. -TEST_F(AudioManagerTest, CheckMakeOutputStreamWithPreferredParameters) { +// Disabled: crbug.com/1060165 +TEST_F(AudioManagerTest, + DISABLED_CheckMakeOutputStreamWithPreferredParameters) { ABORT_AUDIO_TEST_IF_NOT(OutputDevicesAvailable()); AudioParameters params;
diff --git a/media/audio/audio_output_unittest.cc b/media/audio/audio_output_unittest.cc index f1c544a1..39a921a 100644 --- a/media/audio/audio_output_unittest.cc +++ b/media/audio/audio_output_unittest.cc
@@ -75,14 +75,16 @@ }; // Test that can it be created and closed. -TEST_P(AudioOutputTest, GetAndClose) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_GetAndClose) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); CreateWithDefaultParameters(); ASSERT_TRUE(stream_); } // Test that it can be opened and closed. -TEST_P(AudioOutputTest, OpenAndClose) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_OpenAndClose) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); CreateWithDefaultParameters(); @@ -91,7 +93,8 @@ } // Verify that Stop() can be called before Start(). -TEST_P(AudioOutputTest, StopBeforeStart) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_StopBeforeStart) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); CreateWithDefaultParameters(); EXPECT_TRUE(stream_->Open()); @@ -99,7 +102,8 @@ } // Verify that Stop() can be called more than once. -TEST_P(AudioOutputTest, StopTwice) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_StopTwice) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); CreateWithDefaultParameters(); EXPECT_TRUE(stream_->Open()); @@ -111,7 +115,8 @@ } // This test produces actual audio for .25 seconds on the default device. -TEST_P(AudioOutputTest, Play200HzTone) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_Play200HzTone) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); stream_params_ = @@ -149,7 +154,8 @@ } // Test that SetVolume() and GetVolume() work as expected. -TEST_P(AudioOutputTest, VolumeControl) { +// Disabled: crbug.com/1060165 +TEST_P(AudioOutputTest, DISABLED_VolumeControl) { ABORT_AUDIO_TEST_IF_NOT(audio_manager_device_info_->HasAudioOutputDevices()); CreateWithDefaultParameters();
diff --git a/media/gpu/v4l2/v4l2_device.cc b/media/gpu/v4l2/v4l2_device.cc index 1585ee5..aa2282ca 100644 --- a/media/gpu/v4l2/v4l2_device.cc +++ b/media/gpu/v4l2/v4l2_device.cc
@@ -1552,8 +1552,11 @@ // which in V4L2 always applies to the first component in physical plane // buffer. int coded_width = bytesperline * 8 / plane_horiz_bits_per_pixel; - // Sizeimage is coded_width * coded_height * total_bpp. - int coded_height = sizeimage * 8 / coded_width / total_bpp; + // Sizeimage is coded_width * coded_height * total_bpp. In the case that we + // don't have exact alignment due to padding in the driver, round up so that + // the buffer is large enough. + std::div_t res = std::div(sizeimage * 8, coded_width * total_bpp); + int coded_height = res.quot + std::min(res.rem, 1); coded_size.SetSize(coded_width, coded_height); DVLOGF(3) << "coded_size=" << coded_size.ToString();
diff --git a/mojo/public/cpp/bindings/pending_receiver.h b/mojo/public/cpp/bindings/pending_receiver.h index e95a941..07d300f 100644 --- a/mojo/public/cpp/bindings/pending_receiver.h +++ b/mojo/public/cpp/bindings/pending_receiver.h
@@ -5,9 +5,11 @@ #ifndef MOJO_PUBLIC_CPP_BINDINGS_PENDING_RECEIVER_H_ #define MOJO_PUBLIC_CPP_BINDINGS_PENDING_RECEIVER_H_ +#include <type_traits> #include <utility> #include "base/macros.h" +#include "build/build_config.h" #include "mojo/public/cpp/bindings/connection_group.h" #include "mojo/public/cpp/bindings/interface_request.h" #include "mojo/public/cpp/bindings/lib/bindings_internal.h" @@ -17,6 +19,9 @@ namespace mojo { +template <typename T> +struct PendingReceiverConverter; + // A PendingReceiver receives and accumulates a queue of incoming Interface // method calls made by a single corresponding Remote. PendingReceiver instances // may be freely moved to another thread/sequence, or even transferred to @@ -57,6 +62,21 @@ explicit PendingReceiver(ScopedMessagePipeHandle pipe) : state_(std::move(pipe)) {} + // Disabled on NaCl since it crashes old version of clang. +#if !defined(OS_NACL) + // Move conversion operator for custom receiver types. Only participates in + // overload resolution if a typesafe conversion is supported. + template < + typename T, + std::enable_if_t<std::is_same< + PendingReceiver<Interface>, + std::result_of_t<decltype (&PendingReceiverConverter<T>::template To< + Interface>)(T&&)>>::value>* = nullptr> + PendingReceiver(T&& other) + : PendingReceiver(PendingReceiverConverter<T>::template To<Interface>( + std::move(other))) {} +#endif // !defined(OS_NACL) + ~PendingReceiver() = default; PendingReceiver& operator=(PendingReceiver&&) noexcept = default;
diff --git a/mojo/public/cpp/bindings/pending_remote.h b/mojo/public/cpp/bindings/pending_remote.h index 1cc8525..e67dd1a 100644 --- a/mojo/public/cpp/bindings/pending_remote.h +++ b/mojo/public/cpp/bindings/pending_remote.h
@@ -6,11 +6,13 @@ #define MOJO_PUBLIC_CPP_BINDINGS_PENDING_REMOTE_H_ #include <cstdint> +#include <type_traits> #include <utility> #include "base/compiler_specific.h" #include "base/logging.h" #include "base/macros.h" +#include "build/build_config.h" #include "mojo/public/cpp/bindings/interface_ptr_info.h" #include "mojo/public/cpp/bindings/lib/pending_remote_state.h" #include "mojo/public/cpp/bindings/pending_receiver.h" @@ -18,6 +20,9 @@ namespace mojo { +template <typename T> +struct PendingRemoteConverter; + // A valid PendingRemote is entangled with exactly one Receiver or // PendingReceiver, and can be consumed to bind a Remote in order to begin // issuing method calls to that receiver. See Remote documentation for more @@ -59,6 +64,21 @@ PendingRemote(ScopedMessagePipeHandle pipe, uint32_t version) : state_(std::move(pipe), version) {} + // Disabled on NaCl since it crashes old version of clang. +#if !defined(OS_NACL) + // Move conversion operator for custom remote types. Only participates in + // overload resolution if a typesafe conversion is supported. + template < + typename T, + std::enable_if_t<std::is_same< + PendingRemote<Interface>, + std::result_of_t<decltype (&PendingRemoteConverter<T>::template To< + Interface>)(T&&)>>::value>* = nullptr> + PendingRemote(T&& other) + : PendingRemote(PendingRemoteConverter<T>::template To<Interface>( + std::move(other))) {} +#endif // !defined(OS_NACL) + ~PendingRemote() = default; PendingRemote& operator=(PendingRemote&&) noexcept = default;
diff --git a/mojo/public/tools/bindings/chromium_bindings_configuration.gni b/mojo/public/tools/bindings/chromium_bindings_configuration.gni index 3f4e071b..968f9f1 100644 --- a/mojo/public/tools/bindings/chromium_bindings_configuration.gni +++ b/mojo/public/tools/bindings/chromium_bindings_configuration.gni
@@ -61,7 +61,6 @@ "//ui/gfx/typemaps.gni", "//ui/gl/typemaps.gni", "//ui/latency/mojom/typemaps.gni", - "//url/mojom/typemaps.gni", ] _typemaps = []
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py index 41b6366..19d1ca27 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
@@ -230,12 +230,36 @@ full_path = os.path.join(self.output_dir, filename) WriteFile(contents, full_path) + def OptimizeEmpty(self, contents): + # Look for .cc files that contain no actual code. There are many of these + # and they collectively take a while to compile. + lines = contents.splitlines() + + for line in lines: + if line.startswith('#') or line.startswith('//'): + continue + if re.match(r'namespace .* {', line) or re.match(r'}.*//.*namespace', + line): + continue + if line.strip(): + # There is some actual code - return the unmodified contents. + return contents + + # If we reach here then we have a .cc file with no actual code. The + # includes are therefore unneeded and can be removed. + new_lines = [line for line in lines if not line.startswith('#include')] + if len(new_lines) < len(lines): + new_lines.append('') + new_lines.append('// Includes removed due to no code being generated.') + return '\n'.join(new_lines) + def WriteWithComment(self, contents, filename): generator_name = "mojom_bindings_generator.py" comment = r"// %s is auto generated by %s, do not edit" % (filename, generator_name) - contents = comment + '\n' + '\n' + contents; + if filename.endswith('.cc'): + contents = self.OptimizeEmpty(contents) self.Write(contents, filename) def GenerateFiles(self, args):
diff --git a/net/extras/sqlite/sqlite_persistent_store_backend_base.cc b/net/extras/sqlite/sqlite_persistent_store_backend_base.cc index 82d8c6e..a0a88a0 100644 --- a/net/extras/sqlite/sqlite_persistent_store_backend_base.cc +++ b/net/extras/sqlite/sqlite_persistent_store_backend_base.cc
@@ -81,10 +81,6 @@ return false; } - int64_t db_size = 0; - if (base::GetFileSize(path_, &db_size)) - base::UmaHistogramCounts1M(histogram_tag_ + ".DBSizeInKB", db_size / 1024); - db_ = std::make_unique<sql::Database>(); db_->set_histogram_tag(histogram_tag_);
diff --git a/net/http/structured_headers.cc b/net/http/structured_headers.cc index 141c665..1fc2a43 100644 --- a/net/http/structured_headers.cc +++ b/net/http/structured_headers.cc
@@ -273,10 +273,6 @@ if (!name) return base::nullopt; bool is_duplicate_key = !keys.insert(*name).second; - if (is_duplicate_key) { - DVLOG(1) << "ReadParameterizedMember: duplicated parameter: " << *name; - return base::nullopt; - } Item value{true}; if (ConsumeChar('=')) { @@ -285,7 +281,15 @@ return base::nullopt; value = std::move(*item); } - parameters.emplace_back(std::move(*name), std::move(value)); + if (is_duplicate_key) { + for (auto& param : parameters) { + if (param.first == name) + param.second = std::move(value); + break; + } + } else { + parameters.emplace_back(std::move(*name), std::move(value)); + } SkipWhitespaces(); } return parameters;
diff --git a/net/http/structured_headers_unittest.cc b/net/http/structured_headers_unittest.cc index f11da3d..27f5200 100644 --- a/net/http/structured_headers_unittest.cc +++ b/net/http/structured_headers_unittest.cc
@@ -454,6 +454,14 @@ {"missing terminal parameter value item", "text/html;q=1.0;a", {{Token("text/html"), {DoubleParam("q", 1), BooleanParam("a", true)}}}}, + {"duplicate parameter keys with different value", + "text/html;a=1;b=2;a=3.0", + {{Token("text/html"), {DoubleParam("a", 3), Param("b", 2L)}}}, + "text/html;a=3.0;b=2"}, + {"duplicate parameter keys with missing value", + "text/html;a;a=1", + {{Token("text/html"), {Param("a", 1L)}}}, + "text/html;a=1"}, {"whitespace before = parameterised item", "text/html, text/plain;q =0.5", base::nullopt}, {"whitespace after = parameterised item", "text/html, text/plain;q= 0.5", @@ -627,7 +635,7 @@ {"numeric key dictionary", "a=1,1b=2,a=1", base::nullopt}, {"uppercase key dictionary", "a=1,B=2,a=1", base::nullopt}, {"bad key dictionary", "a=1,b!=2,a=1", base::nullopt}, - // Paramaterised dictionary tests + // Parameterised dictionary tests {"basic parameterised dict", "abc=123;a=1;b=2, def=456, ghi=789;q=9;r=\"+w\"", {Dictionary{
diff --git a/remoting/host/mac/host_service_main.cc b/remoting/host/mac/host_service_main.cc index 7a9c523..a0b6b5c4 100644 --- a/remoting/host/mac/host_service_main.cc +++ b/remoting/host/mac/host_service_main.cc
@@ -280,7 +280,7 @@ // uses the chmod binary to do so. base::CommandLine chmod_cmd(base::FilePath("/bin/chmod")); chmod_cmd.AppendArg("+a"); - chmod_cmd.AppendArg(GetUsername() + ":allow:read"); + chmod_cmd.AppendArg("user:" + GetUsername() + ":allow:read"); chmod_cmd.AppendArgPath(config_file_); std::string output; if (!base::GetAppOutputAndError(chmod_cmd, &output)) {
diff --git a/services/audio/input_stream.cc b/services/audio/input_stream.cc index fbfd6b3..85f0b831 100644 --- a/services/audio/input_stream.cc +++ b/services/audio/input_stream.cc
@@ -40,11 +40,10 @@ return "UNKNOWN_ERROR"; } -std::string GetCtorLogString(const base::UnguessableToken& id, - const std::string& device_id, +std::string GetCtorLogString(const std::string& device_id, const media::AudioParameters& params, bool enable_agc) { - std::string str = base::StringPrintf("Ctor({id=%s}, ", id.ToString().c_str()); + std::string str = base::StringPrintf("Ctor("); base::StringAppendF(&str, "{device_id=%s}, ", device_id.c_str()); base::StringAppendF(&str, "{params=[%s]}, ", params.AsHumanReadableString().c_str()); @@ -95,7 +94,7 @@ TRACE_EVENT_NESTABLE_ASYNC_BEGIN2("audio", "InputStream", this, "device id", device_id, "params", params.AsHumanReadableString()); - SendLogMessage(GetCtorLogString(id_, device_id, params, enable_agc)); + SendLogMessage("%s", GetCtorLogString(device_id, params, enable_agc).c_str()); // |this| owns these objects, so unretained is safe. base::RepeatingClosure error_handler = base::BindRepeating( @@ -132,7 +131,7 @@ InputStream::~InputStream() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); - SendLogMessage("Dtor({id=" + id_.ToString() + "})"); + SendLogMessage("Dtor()"); if (log_) log_->OnClosed(); @@ -167,20 +166,15 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); DCHECK(controller_); controller_->SetOutputDeviceForAec(output_device_id); - if (log_) { - log_->OnLogMessage( - base::StrCat({"SetOutputDeviceForAec: ", output_device_id})); - } - SendLogMessage("SetOutputDeviceForAec({id=" + id_.ToString() + "}, " + - "{output_device_id=" + output_device_id + "})"); + SendLogMessage("%s({output_device_id=%s})", __func__, + output_device_id.c_str()); } void InputStream::Record() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); DCHECK(controller_); TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("audio", "Record", this); - SendLogMessage("Record({id=" + id_.ToString() + "})"); - + SendLogMessage("%s()", __func__); controller_->Record(); if (observer_) observer_->DidStartRecording(); @@ -209,8 +203,8 @@ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("audio", "Created", this, "initially muted", initially_muted); DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); - SendLogMessage(base::StringPrintf("OnCreated({id=%s}, {muted=%d})", - id_.ToString().c_str(), initially_muted)); + SendLogMessage("%s({muted=%s})", __func__, + initially_muted ? "true" : "false"); base::ReadOnlySharedMemoryRegion shared_memory_region = writer_->TakeSharedMemoryRegion(); @@ -233,12 +227,10 @@ TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("audio", "Error", this); client_->OnError(); - if (log_) { + if (log_) log_->OnError(); - SendLogMessage(base::StringPrintf("OnError({id=%s}, {error_code=%s})", - id_.ToString().c_str(), - ErrorCodeToString(error_code))); - } + SendLogMessage("%s({error_code=%s})", __func__, + ErrorCodeToString(error_code)); OnStreamError(true); } @@ -265,7 +257,7 @@ } if (signalPlatformError) { - SendLogMessage("OnStreamError({id=" + id_.ToString() + "})"); + SendLogMessage("%s()", __func__); } // Defer callback so we're not destructed while in the constructor. @@ -281,11 +273,15 @@ std::move(delete_callback_).Run(this); } -void InputStream::SendLogMessage(const std::string& message) { +void InputStream::SendLogMessage(const char* format, ...) { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); - if (log_) { - log_->OnLogMessage("audio::IS::" + message); - } + if (!log_) + return; + va_list args; + va_start(args, format); + log_->OnLogMessage("audio::IS::" + base::StringPrintV(format, args) + + base::StringPrintf(" [id=%s]", id_.ToString().c_str())); + va_end(args); } } // namespace audio
diff --git a/services/audio/input_stream.h b/services/audio/input_stream.h index a0e38fc..ca7e779 100644 --- a/services/audio/input_stream.h +++ b/services/audio/input_stream.h
@@ -77,7 +77,7 @@ private: void OnStreamError(bool signalPlatformError); void CallDeleter(); - void SendLogMessage(const std::string& message); + void SendLogMessage(const char* format, ...) PRINTF_FORMAT(2, 3); const base::UnguessableToken id_;
diff --git a/services/audio/output_stream.cc b/services/audio/output_stream.cc index 644704c301..0935b28 100644 --- a/services/audio/output_stream.cc +++ b/services/audio/output_stream.cc
@@ -20,13 +20,12 @@ // "blip" sounds won't be detected. http://crbug.com/339133#c4 const int kPowerMeasurementsPerSecond = 15; -std::string GetCtorLogString(const base::UnguessableToken& id, - media::AudioManager* audio_manager, +std::string GetCtorLogString(media::AudioManager* audio_manager, const std::string& device_id, const media::AudioParameters& params) { return base::StringPrintf( - "Ctor({id=%s}, {audio_manager_name=%s}, {device_id=%s}, {params=[%s]})", - id.ToString().c_str(), audio_manager->GetName(), device_id.c_str(), + "Ctor({audio_manager_name=%s}, {device_id=%s}, {params=[%s]})", + audio_manager->GetName(), device_id.c_str(), params.AsHumanReadableString().c_str()); } @@ -72,9 +71,8 @@ TRACE_EVENT_NESTABLE_ASYNC_BEGIN2("audio", "OutputStream", this, "device id", output_device_id, "params", params.AsHumanReadableString()); - SendLogMessage("%s", GetCtorLogString(processing_id, audio_manager, - output_device_id, params) - .c_str()); + SendLogMessage( + "%s", GetCtorLogString(audio_manager, output_device_id, params).c_str()); // |this| owns these objects, so unretained is safe. base::RepeatingClosure error_handler = @@ -128,6 +126,7 @@ void OutputStream::Play() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); + SendLogMessage("%s()", __func__); controller_.Play(); if (log_) @@ -136,6 +135,7 @@ void OutputStream::Pause() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); + SendLogMessage("%s()", __func__); controller_.Pause(); if (log_) @@ -144,6 +144,7 @@ void OutputStream::Flush() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); + SendLogMessage("%s()", __func__); controller_.Flush(); } @@ -168,8 +169,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); DCHECK(reader_.IsValid()); TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("audio", "CreateAudioPipe", this); - SendLogMessage("CreateAudioPipe({id=%s})", - processing_id().ToString().c_str()); + SendLogMessage("%s()", __func__); base::UnsafeSharedMemoryRegion shared_memory_region = reader_.TakeSharedMemoryRegion(); @@ -231,8 +231,7 @@ void OutputStream::OnControllerError() { DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_); TRACE_EVENT_NESTABLE_ASYNC_INSTANT0("audio", "OnControllerError", this); - SendLogMessage("OnControllerError({id=%s})", - processing_id().ToString().c_str()); + SendLogMessage("%s()", __func__); // Stop checking the audio level to avoid using this object while it's being // torn down. @@ -310,7 +309,9 @@ return; va_list args; va_start(args, format); - log_->OnLogMessage("audio::OS::" + base::StringPrintV(format, args)); + log_->OnLogMessage( + "audio::OS::" + base::StringPrintV(format, args) + + base::StringPrintf(" [id=%s]", processing_id().ToString().c_str())); va_end(args); }
diff --git a/services/audio/stream_factory.cc b/services/audio/stream_factory.cc index 0223930..6c83619 100644 --- a/services/audio/stream_factory.cc +++ b/services/audio/stream_factory.cc
@@ -65,7 +65,11 @@ // If the buffer size is incorrect, the data can't be fed into the APM. // This should never happen unless a renderer misbehaves. mojo::Remote<media::mojom::AudioLog> log(std::move(pending_log)); - log->OnLogMessage("Invalid APM config."); + + log->OnLogMessage( + "audio::SF::" + + base::StringPrintf("%s => (ERROR: Invalid APM configuration)", + __func__)); log->OnError(); // The callback must still be invoked or mojo complains. std::move(created_callback).Run(nullptr, false, base::nullopt);
diff --git a/services/network/trust_tokens/BUILD.gn b/services/network/trust_tokens/BUILD.gn index 9d213bd8..595c86c6 100644 --- a/services/network/trust_tokens/BUILD.gn +++ b/services/network/trust_tokens/BUILD.gn
@@ -21,6 +21,8 @@ "trust_token_http_headers.h", "trust_token_key_commitment_controller.cc", "trust_token_key_commitment_controller.h", + "trust_token_key_commitment_parser.cc", + "trust_token_key_commitment_parser.h", "trust_token_key_commitment_result.cc", "trust_token_key_commitment_result.h", "trust_token_operation_status.h", @@ -78,6 +80,7 @@ "sqlite_trust_token_persister_unittest.cc", "trust_token_database_owner_unittest.cc", "trust_token_key_commitment_controller_unittest.cc", + "trust_token_key_commitment_parser_unittest.cc", "trust_token_persister_unittest.cc", "trust_token_request_canonicalizer_unittest.cc", "trust_token_request_signing_helper_unittest.cc",
diff --git a/services/network/trust_tokens/trust_token_key_commitment_parser.cc b/services/network/trust_tokens/trust_token_key_commitment_parser.cc new file mode 100644 index 0000000..7ff1115 --- /dev/null +++ b/services/network/trust_tokens/trust_token_key_commitment_parser.cc
@@ -0,0 +1,152 @@ +// 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. + +#include "services/network/trust_tokens/trust_token_key_commitment_parser.h" + +#include "base/base64.h" +#include "base/json/json_reader.h" +#include "base/numerics/safe_conversions.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" +#include "base/values.h" +#include "services/network/trust_tokens/trust_token_key_commitment_result.h" + +namespace network { + +namespace { + +// Parses a single key label. If |in| is the string representation of an integer +// in in the representable range of uint32_t, sets |*out| to that integer value +// and returns true. Otherwise, returns false. +bool ParseSingleKeyLabel(base::StringPiece in, uint32_t* out) { + uint64_t key_label_in_uint64; + if (!base::StringToUint64(in, &key_label_in_uint64)) + return false; + if (!base::IsValueInRangeForNumericType<uint32_t>(key_label_in_uint64)) + return false; + *out = base::checked_cast<uint32_t>(key_label_in_uint64); + return true; +} + +enum class ParseKeyResult { + // Continue as if the key didn't exist. + kIgnore, + // Fail parsing totally. + kFail, + // Parsing the key succeeded. + kSucceed +}; + +// Parses a single key, consisting of a body (the key material) and an expiry +// timestamp. Fails the parse if either field is missing or malformed. If the +// key has expired but is otherwise valid, ignores the key rather than failing +// the prase. +ParseKeyResult ParseSingleKeyExceptLabel( + const base::Value& in, + TrustTokenKeyCommitmentResult::Key* out) { + CHECK(in.is_dict()); + + const std::string* expiry = + in.FindStringKey(kTrustTokenKeyCommitmentExpiryField); + const std::string* key_body = + in.FindStringKey(kTrustTokenKeyCommitmentKeyField); + if (!expiry || !key_body) + return ParseKeyResult::kFail; + + uint64_t expiry_microseconds_since_unix_epoch; + if (!base::StringToUint64(*expiry, &expiry_microseconds_since_unix_epoch)) + return ParseKeyResult::kFail; + + if (!base::Base64Decode(*key_body, &out->body)) + return ParseKeyResult::kFail; + + out->expiry = + base::Time::UnixEpoch() + + base::TimeDelta::FromMicroseconds(expiry_microseconds_since_unix_epoch); + if (out->expiry <= base::Time::Now()) + return ParseKeyResult::kIgnore; + + return ParseKeyResult::kSucceed; +} + +} // namespace + +const char kTrustTokenKeyCommitmentBatchsizeField[] = "batchsize"; +const char kTrustTokenKeyCommitmentSrrkeyField[] = "srrkey"; +const char kTrustTokenKeyCommitmentExpiryField[] = "expiry"; +const char kTrustTokenKeyCommitmentKeyField[] = "Y"; + +// https://docs.google.com/document/d/1TNnya6B8pyomDK2F1R9CL3dY10OAmqWlnCxsWyOBDVQ/edit#bookmark=id.6wh9crbxdizi +// { +// "batchsize" : ..., // Optional batch size; value of type int. +// "srrkey" : ..., // Required Signed Redemption Record (SRR) +// // verification key, in base64. +// +// "1" : { // Key label, a number in uint32_t range. +// "Y" : ..., // Required token issuance verification key, in +// // base64. +// "expiry" : ..., // Required token issuance key expiry time, in +// // microseconds since the Unix epoch. +// }, +// "17" : { // No guarantee that key labels (1, 17) are dense. +// "Y" : ..., +// "expiry" : ..., +// } +// } +std::unique_ptr<TrustTokenKeyCommitmentResult> +TrustTokenKeyCommitmentParser::Parse(base::StringPiece response_body) { + base::Optional<base::Value> maybe_value = + base::JSONReader::Read(response_body); + if (!maybe_value) + return nullptr; + + if (!maybe_value->is_dict()) + return nullptr; + + auto result = std::make_unique<TrustTokenKeyCommitmentResult>(); + + // Confirm that the batchsize field is type-safe, if it's present. + if (maybe_value->FindKey(kTrustTokenKeyCommitmentBatchsizeField) && + !maybe_value->FindIntKey(kTrustTokenKeyCommitmentBatchsizeField)) { + return nullptr; + } + result->batch_size = + maybe_value->FindIntKey(kTrustTokenKeyCommitmentBatchsizeField); + + // Confirm that the srrkey field is present and base64-encoded. + const std::string* maybe_srrkey = + maybe_value->FindStringKey(kTrustTokenKeyCommitmentSrrkeyField); + if (!maybe_srrkey) + return nullptr; + if (!base::Base64Decode(*maybe_srrkey, + &result->signed_redemption_record_verification_key)) { + return nullptr; + } + + // Parse the key commitments in the result (these are exactly the + // key-value pairs in the dictionary with dictionary-typed values). + for (const auto& kv : maybe_value->DictItems()) { + const base::Value& item = kv.second; + if (!item.is_dict()) + continue; + + TrustTokenKeyCommitmentResult::Key key; + + if (!ParseSingleKeyLabel(kv.first, &key.label)) + return nullptr; + + switch (ParseSingleKeyExceptLabel(item, &key)) { + case ParseKeyResult::kFail: + return nullptr; + case ParseKeyResult::kIgnore: + continue; + case ParseKeyResult::kSucceed: + result->keys.push_back(std::move(key)); + } + } + + return result; +} + +} // namespace network
diff --git a/services/network/trust_tokens/trust_token_key_commitment_parser.h b/services/network/trust_tokens/trust_token_key_commitment_parser.h new file mode 100644 index 0000000..7e24ab6 --- /dev/null +++ b/services/network/trust_tokens/trust_token_key_commitment_parser.h
@@ -0,0 +1,54 @@ +// 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. + +#ifndef SERVICES_NETWORK_TRUST_TOKENS_TRUST_TOKEN_KEY_COMMITMENT_PARSER_H_ +#define SERVICES_NETWORK_TRUST_TOKENS_TRUST_TOKEN_KEY_COMMITMENT_PARSER_H_ + +#include <memory> + +#include "base/strings/string_piece_forward.h" +#include "services/network/trust_tokens/trust_token_key_commitment_controller.h" + +namespace network { + +struct TrustTokenKeyCommitmentResult; + +// Field names from the key commitment JSON format specified in the Trust Tokens +// design doc +// (https://docs.google.com/document/d/1TNnya6B8pyomDK2F1R9CL3dY10OAmqWlnCxsWyOBDVQ/edit#bookmark=id.6wh9crbxdizi): +// - "batch size" (number of blinded tokens to provide per issuance request) +extern const char kTrustTokenKeyCommitmentBatchsizeField[]; +// - verification key for the signatures the issuer provides over its Signed +// Redemption Records (SRRs) +extern const char kTrustTokenKeyCommitmentSrrkeyField[]; +// - each issuance key's expiry timestamp +extern const char kTrustTokenKeyCommitmentExpiryField[]; +// - each issuance key's key material +extern const char kTrustTokenKeyCommitmentKeyField[]; + +class TrustTokenKeyCommitmentParser + : public TrustTokenKeyCommitmentController::Parser { + public: + TrustTokenKeyCommitmentParser() = default; + ~TrustTokenKeyCommitmentParser() override = default; + + // Parses a JSON key commitment response. + // + // This method returns nullptr unless: + // - the input is valid JSON; and + // - the JSON represents a nonempty dictionary; and + // - within this inner dictionary (which stores metadata like batch size, as + // well as more dictionaries denoting keys' information): + // - every dictionary-type value has an expiry field + // (|kTrustTokenKeyCommitmentExpiryField| above) and a key body field + // (|kTrustTokenKeyCommitmentKeyField|), and + // - the expiry field is a positive integer (microseconds since the Unix + // epoch) storing a time in the future. + std::unique_ptr<TrustTokenKeyCommitmentResult> Parse( + base::StringPiece response_body) override; +}; + +} // namespace network + +#endif // SERVICES_NETWORK_TRUST_TOKENS_TRUST_TOKEN_KEY_COMMITMENT_PARSER_H_
diff --git a/services/network/trust_tokens/trust_token_key_commitment_parser_unittest.cc b/services/network/trust_tokens/trust_token_key_commitment_parser_unittest.cc new file mode 100644 index 0000000..331c326e --- /dev/null +++ b/services/network/trust_tokens/trust_token_key_commitment_parser_unittest.cc
@@ -0,0 +1,405 @@ +// 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. + +#include "services/network/trust_tokens/trust_token_key_commitment_parser.h" + +#include "base/base64.h" +#include "base/json/json_reader.h" +#include "base/no_destructor.h" +#include "base/strings/string_number_conversions.h" +#include "base/strings/stringprintf.h" +#include "base/test/task_environment.h" +#include "base/time/time.h" +#include "services/network/trust_tokens/trust_token_key_commitment_result.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +using ::testing::ElementsAre; +using ::testing::Pointee; +using ::testing::UnorderedElementsAre; + +namespace network { + +TEST(TrustTokenKeyCommitmentParsing, RejectsEmpty) { + // If the input isn't valid JSON, we should + // reject it. In particular, we should reject + // empty input. + + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse("")); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsNonemptyMalformed) { + // If the input isn't valid JSON, we should + // reject it. + const char input[] = "certainly not valid JSON"; + + // Sanity check that the input is not valid JSON. + ASSERT_FALSE(base::JSONReader::Read(input)); + + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsNonDictionaryInput) { + // The outermost value should be a dictionary. + + // Valid JSON, but not a dictionary. + const char input[] = "5"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, AcceptsMinimal) { + std::string input = R"( { "srrkey": "aaaa" } )"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + TrustTokenKeyCommitmentResult expectation; + base::Base64Decode("aaaa", + &expectation.signed_redemption_record_verification_key); + + EXPECT_THAT(TrustTokenKeyCommitmentParser().Parse(input), + Pointee(expectation)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsMissingSrrkey) { + std::string input = R"( {} )"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + std::unique_ptr<TrustTokenKeyCommitmentResult> result = + TrustTokenKeyCommitmentParser().Parse(input); + EXPECT_FALSE(result); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsTypeUnsafeSrrkey) { + std::string input = R"( { "srrkey": 5 } )"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + std::unique_ptr<TrustTokenKeyCommitmentResult> result = + TrustTokenKeyCommitmentParser().Parse(input); + EXPECT_FALSE(result); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsNonBase64Srrkey) { + std::string input = R"( { "srrkey": "spaces aren't valid base64" } )"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + std::unique_ptr<TrustTokenKeyCommitmentResult> result = + TrustTokenKeyCommitmentParser().Parse(input); + EXPECT_FALSE(result); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithTypeUnsafeKeyLabel) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + // (The expiry will likely exceed the JSON spec's maximum integer value, so + // it's encoded as a string.) + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "this label is not an integer": { + "Y": "akey", + "expiry": "%s" + } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Key labels must be integers in the representable range of uint32_t, so this + // result shouldn't parse. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithKeyLabelTooSmall) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "-1": { + "Y": "akey", + "expiry": "%s" + } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Key labels must be integers in the representable range of uint32_t, so this + // result shouldn't parse. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithKeyLabelTooLarge) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "1000000000000": { + "Y": "akey", + "expiry": "%s" + } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Key labels must be integers in the representable range of uint32_t, so this + // result shouldn't parse. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsOtherwiseValidButNonBase64Key) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "1": { + "Y": "this key isn't valid base64, so it should be rejected", + "expiry": "%s" + } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON, + // and that the given time is valid. + ASSERT_TRUE(base::JSONReader::Read(input)); + + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, AcceptsKeyWithExpiryAndBody) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "1": { "Y": "akey", "expiry": "%s" } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON, + // and that the given time is valid. + ASSERT_TRUE(base::JSONReader::Read(input)); + + TrustTokenKeyCommitmentResult::Key my_key; + my_key.label = 1; + ASSERT_TRUE(base::Base64Decode("akey", &my_key.body)); + my_key.expiry = one_minute_from_now; + + auto result = TrustTokenKeyCommitmentParser().Parse(input); + ASSERT_TRUE(result); + EXPECT_THAT(result->keys, ElementsAre(my_key)); +} + +TEST(TrustTokenKeyCommitmentParsing, AcceptsMultipleKeys) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + base::Time two_minutes_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(2); + int64_t two_minutes_from_now_in_micros = + (two_minutes_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + const std::string input = base::StringPrintf( + R"({ + "srrkey": "aaaa", + "1": { "Y": "akey", "expiry": "%s" }, + "2": { "Y": "aaaa", "expiry": "%s" } + })", + base::NumberToString(one_minute_from_now_in_micros).c_str(), + base::NumberToString(two_minutes_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON, + // and that the given time is valid. + ASSERT_TRUE(base::JSONReader::Read(input)); + + TrustTokenKeyCommitmentResult::Key a_key; + a_key.label = 1; + ASSERT_TRUE(base::Base64Decode("akey", &a_key.body)); + a_key.expiry = one_minute_from_now; + + TrustTokenKeyCommitmentResult::Key another_key; + another_key.label = 2; + ASSERT_TRUE(base::Base64Decode("aaaa", &another_key.body)); + another_key.expiry = two_minutes_from_now; + + auto result = TrustTokenKeyCommitmentParser().Parse(input); + ASSERT_TRUE(result); + EXPECT_THAT(result->keys, UnorderedElementsAre(a_key, another_key)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithNoExpiry) { + // If a key has a missing "expiry" field, we should reject the entire + // record. + const std::string input = R"( { "srrkey": "aaaa", + "1": { "Y": "akey" } })"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Since the key doesn't have an expiry, reject it. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithMalformedExpiry) { + // If a key has a malformed "expiry" field, we should reject the entire + // record. + const std::string input = + R"( + { + "srrkey": "aaaa", + "1": { + "Y": "akey", + "expiry": "absolutely not a valid timestamp" + } + })"; + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Since the key doesn't have an expiry, reject it. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, IgnoreKeyWithExpiryInThePast) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_before_now = + base::Time::Now() - base::TimeDelta::FromMinutes(1); + int64_t one_minute_before_now_in_micros = + (one_minute_before_now - base::Time::UnixEpoch()).InMicroseconds(); + + // If the time has passed a key's "expiry" field, we should reject the entire + // record. + const std::string input = base::StringPrintf( + R"( { "srrkey": "aaaa", + "1": { "Y": "akey", "expiry": "%s" } })", + base::NumberToString(one_minute_before_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON. + ASSERT_TRUE(base::JSONReader::Read(input)); + + TrustTokenKeyCommitmentResult expectation; + base::Base64Decode("aaaa", + &expectation.signed_redemption_record_verification_key); + + EXPECT_THAT(TrustTokenKeyCommitmentParser().Parse(input), + Pointee(expectation)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsKeyWithNoBody) { + base::test::TaskEnvironment env( + base::test::TaskEnvironment::TimeSource::MOCK_TIME); + + base::Time one_minute_from_now = + base::Time::Now() + base::TimeDelta::FromMinutes(1); + int64_t one_minute_from_now_in_micros = + (one_minute_from_now - base::Time::UnixEpoch()).InMicroseconds(); + + // If a key has an expiry but is missing its body, + // we should reject the entire result. + const std::string input = base::StringPrintf( + R"( { "srrkey": "aaaa", "1": { "expiry": "%s" } } )", + base::NumberToString(one_minute_from_now_in_micros).c_str()); + + // Sanity check that the input is actually valid JSON, + // and that the date is valid. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Since the key doesn't have a body, reject it. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsEmptyKey) { + // If a key has neither an expiry or a body, + // we should reject the entire result. + + const std::string input = R"( { "srrkey": "aaaa", "1": { } })"; + + // Sanity check that the input is actually valid JSON, + // and that the date is valid. + ASSERT_TRUE(base::JSONReader::Read(input)); + + // Since the key doesn't have an expiry or a body, reject it. + EXPECT_FALSE(TrustTokenKeyCommitmentParser().Parse(input)); +} + +TEST(TrustTokenKeyCommitmentParsing, ParsesBatchSize) { + std::string input = + R"({ + "srrkey": "aaaa", + "batchsize": 5 + })"; + + std::unique_ptr<TrustTokenKeyCommitmentResult> result = + TrustTokenKeyCommitmentParser().Parse(input); + ASSERT_TRUE(result); + EXPECT_EQ(result->batch_size, 5); +} + +TEST(TrustTokenKeyCommitmentParsing, RejectsTypeUnsafeBatchSize) { + std::string input = + R"({ + "srrkey": "aaaa", + "batchsize": "not a number" + })"; + + std::unique_ptr<TrustTokenKeyCommitmentResult> result = + TrustTokenKeyCommitmentParser().Parse(input); + EXPECT_FALSE(result); +} + +} // namespace network
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc index fad844b..b9561e5 100644 --- a/services/network/url_loader_unittest.cc +++ b/services/network/url_loader_unittest.cc
@@ -4690,6 +4690,10 @@ {"require-corp; foo; report-to=\"x\"; bar=piyo", kNoHeader, kRequireCorp, "x", kNone, kNoEndpoint}, + // With duplicate reporting endpoints + {"require-corp; report-to=\"x\"; report-to=\"y\"", kNoHeader, + kRequireCorp, "y", kNone, kNoEndpoint}, + // Errors {"REQUIRE-CORP", kNoHeader, kNone, kNoEndpoint, kNone, kNoEndpoint}, {" require-corp; REPORT-TO=\"endpoint\"", kNoHeader, kNone, kNoEndpoint, @@ -4707,8 +4711,6 @@ kNone, kNoEndpoint}, {"TOTALLY BLOKEN", "require-corp; report-to=\"x\"", kNone, kNoEndpoint, kRequireCorp, "x"}, - {"require-corp; report-to=\"x\"; report-to=\"y\"", kNoHeader, kNone, - kNoEndpoint, kNone, kNoEndpoint}, }; for (const auto& testcase : cases) {
diff --git a/skia/ext/skia_trace_memory_dump_impl.cc b/skia/ext/skia_trace_memory_dump_impl.cc index a7aa6f7..6857669 100644 --- a/skia/ext/skia_trace_memory_dump_impl.cc +++ b/skia/ext/skia_trace_memory_dump_impl.cc
@@ -41,6 +41,13 @@ dump->AddScalar(valueName, units, value); } +void SkiaTraceMemoryDumpImpl::dumpStringValue(const char* dump_name, + const char* value_name, + const char* value) { + auto* dump = process_memory_dump_->GetOrCreateAllocatorDump(dump_name); + dump->AddString(value_name, "", value); +} + void SkiaTraceMemoryDumpImpl::setMemoryBacking(const char* dumpName, const char* backingType, const char* backingObjectId) {
diff --git a/skia/ext/skia_trace_memory_dump_impl.h b/skia/ext/skia_trace_memory_dump_impl.h index fa9baf1..9c9cef3 100644 --- a/skia/ext/skia_trace_memory_dump_impl.h +++ b/skia/ext/skia_trace_memory_dump_impl.h
@@ -43,6 +43,9 @@ const char* valueName, const char* units, uint64_t value) override; + void dumpStringValue(const char* dump_name, + const char* value_name, + const char* value) override; void setMemoryBacking(const char* dumpName, const char* backingType, const char* backingObjectId) override;
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json index bd411a56..8510021 100644 --- a/testing/buildbot/chrome.json +++ b/testing/buildbot/chrome.json
@@ -17,6 +17,68 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "kvm": "1", + "os": "Ubuntu-16.04", + "pool": "chrome.tests.cros-vm" + } + ], + "idempotent": false + }, + "test": "chrome_all_tast_tests", + "test_target": "//chromeos:chrome_all_tast_tests" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "kvm": "1", + "os": "Ubuntu-16.04", + "pool": "chrome.tests.cros-vm" + } + ] + }, + "test": "cros_browser_sanity_test", + "test_target": "//chromeos:cros_browser_sanity_test" + }, + { + "merge": { + "script": "//tools/perf/process_perf_results.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "kvm": "1", + "os": "Ubuntu-16.04", + "pool": "chrome.tests.cros-vm" + } + ], + "idempotent": false + }, + "test": "disk_usage_tast_test", + "test_target": "//chromeos:disk_usage_tast_test" + } + ] + }, + "chromeos-betty-pi-arc-chrome": { + "additional_compile_targets": [ + "chromiumos_preflight" + ], + "gtest_tests": [ + { "args": [ "--ozone-platform=headless" ], @@ -377,8 +439,7 @@ }, { "args": [ - "--vpython-dir=../../vpython_dir_linux_amd64", - "--gtest_filter=-NetworkQualityEstimatorTest.TestTCPSocketRTT" + "--vpython-dir=../../vpython_dir_linux_amd64" ], "merge": { "args": [], @@ -613,68 +674,6 @@ } ] }, - "chromeos-betty-pi-arc-chrome": { - "additional_compile_targets": [ - "chromiumos_preflight" - ], - "gtest_tests": [ - { - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "kvm": "1", - "os": "Ubuntu-16.04", - "pool": "chrome.tests.cros-vm" - } - ], - "idempotent": false - }, - "test": "chrome_all_tast_tests", - "test_target": "//chromeos:chrome_all_tast_tests" - }, - { - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "kvm": "1", - "os": "Ubuntu-16.04", - "pool": "chrome.tests.cros-vm" - } - ] - }, - "test": "cros_browser_sanity_test", - "test_target": "//chromeos:cros_browser_sanity_test" - }, - { - "merge": { - "script": "//tools/perf/process_perf_results.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "kvm": "1", - "os": "Ubuntu-16.04", - "pool": "chrome.tests.cros-vm" - } - ], - "idempotent": false - }, - "test": "disk_usage_tast_test", - "test_target": "//chromeos:disk_usage_tast_test" - } - ] - }, "chromeos-eve-chrome": { "additional_compile_targets": [ "chromiumos_preflight"
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 5d437f8..79ae60f 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -27824,52 +27824,6 @@ }, { "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "chrome_public_test_apk" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/luci/logdog/butler/${platform}", - "location": "bin", - "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" - } - ], - "dimension_sets": [ - { - "device_os": "KTU84P", - "device_os_type": "userdebug", - "device_type": "hammerhead", - "os": "Android" - } - ], - "output_links": [ - { - "link": [ - "https://luci-logdog.appspot.com/v/?s", - "=android%2Fswarming%2Flogcats%2F", - "${TASK_ID}%2F%2B%2Funified_logcats" - ], - "name": "shard #${SHARD_INDEX} logcats" - } - ], - "shards": 20 - }, - "test": "chrome_public_test_apk", - "test_target": "//chrome/android:chrome_public_test_apk" - }, - { - "args": [ "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_cardboard_skipdon_setupcomplete.json", "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk", "--gs-results-bucket=chromium-result-details",
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 49dd5af0..23abbeaf 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -12186,8 +12186,6457 @@ } ] }, - "ios-simulator-cr-recipe": { - "gtest_tests": [] + "ios13-beta-simulator": { + "additional_compile_targets": [ + "all" + ], + "gtest_tests": [ + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "base_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "base_unittests", + "test_target": "//base:base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "boringssl_crypto_tests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_crypto_tests", + "test_target": "//third_party/boringssl:boringssl_crypto_tests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "boringssl_crypto_tests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_crypto_tests", + "test_target": "//third_party/boringssl:boringssl_crypto_tests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "boringssl_ssl_tests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_ssl_tests", + "test_target": "//third_party/boringssl:boringssl_ssl_tests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "boringssl_ssl_tests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "boringssl_ssl_tests", + "test_target": "//third_party/boringssl:boringssl_ssl_tests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "components_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "components_unittests", + "test_target": "//components:components_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "crypto_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "crypto_unittests", + "test_target": "//crypto:crypto_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "crypto_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "crypto_unittests", + "test_target": "//crypto:crypto_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gfx_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gfx_unittests", + "test_target": "//ui/gfx:gfx_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "google_apis_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "google_apis_unittests", + "test_target": "//google_apis:google_apis_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "google_apis_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "google_apis_unittests", + "test_target": "//google_apis:google_apis_unittests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_bookmarks_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_bookmarks_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_integration_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_integration_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_integration_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_integration_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_integration_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_egtests_iPad Pro (12.9-inch) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_integration_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_integration_egtests" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_egtests_iPad Pro (12.9-inch) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_integration_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_integration_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_integration_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_integration_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_integration_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_integration_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_reading_list_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_reading_list_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_reading_list_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_reading_list_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_reading_list_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_reading_list_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_reading_list_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_reading_list_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_settings_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_settings_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_settings_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_settings_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_settings_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_settings_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_settings_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_settings_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_settings_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_settings_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_settings_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_settings_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 3 + }, + "test": "ios_chrome_settings_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_settings_egtests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_egtests_iPad Pro (12.9-inch) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_signin_egtests" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_egtests_iPad Pro (12.9-inch) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_signin_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_signin_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_signin_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_signin_egtests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_smoke_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_smoke_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_smoke_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_smoke_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_smoke_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_smoke_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_smoke_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_smoke_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_smoke_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_translate_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_translate_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_translate_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_translate_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_translate_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_translate_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_translate_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_translate_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_translate_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_translate_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_translate_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_translate_egtests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "ios_chrome_ui_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "ios_chrome_ui_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "ios_chrome_ui_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "ios_chrome_ui_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "ios_chrome_ui_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_egtests_iPad Pro (12.9-inch) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 5 + }, + "test": "ios_chrome_ui_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_ui_egtests" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_egtests_iPad Pro (12.9-inch) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 5 + }, + "test": "ios_chrome_ui_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_ui_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 5 + }, + "test": "ios_chrome_ui_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_ui_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 5 + }, + "test": "ios_chrome_ui_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_ui_egtests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_unittests", + "test_target": "//ios/chrome/test:ios_chrome_unittests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_eg2tests_module", + "test_target": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_web_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_web_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_web_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_web_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_chrome_web_egtests", + "test_target": "//ios/chrome/test/earl_grey:ios_chrome_web_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_components_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_components_unittests", + "test_target": "//ios/components:ios_components_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_components_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_components_unittests", + "test_target": "//ios/components:ios_components_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_net_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_net_unittests", + "test_target": "//ios/net:ios_net_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_net_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_net_unittests", + "test_target": "//ios/net:ios_net_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_remoting_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_remoting_unittests", + "test_target": "//remoting/ios:ios_remoting_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_remoting_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_remoting_unittests", + "test_target": "//remoting/ios:ios_remoting_unittests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_eg2tests_module", + "test_target": "//ios/showcase:ios_showcase_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_eg2tests_module", + "test_target": "//ios/showcase:ios_showcase_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_eg2tests_module", + "test_target": "//ios/showcase:ios_showcase_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_eg2tests_module", + "test_target": "//ios/showcase:ios_showcase_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_eg2tests_module", + "test_target": "//ios/showcase:ios_showcase_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_egtests_iPad Air (3rd generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_egtests", + "test_target": "//ios/showcase:ios_showcase_egtests" + }, + { + "args": [ + "--platform", + "iPad Air (3rd generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_egtests_iPad Air (3rd generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_egtests", + "test_target": "//ios/showcase:ios_showcase_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_egtests", + "test_target": "//ios/showcase:ios_showcase_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_showcase_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_showcase_egtests", + "test_target": "//ios/showcase:ios_showcase_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_testing_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_testing_unittests", + "test_target": "//ios/testing:ios_testing_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_testing_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_testing_unittests", + "test_target": "//ios/testing:ios_testing_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_inttests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_inttests", + "test_target": "//ios/web:ios_web_inttests" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPad (6th generation) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_eg2tests_module", + "test_target": "//ios/web/shell/test:ios_web_shell_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad (6th generation)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPad (6th generation) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_eg2tests_module", + "test_target": "//ios/web/shell/test:ios_web_shell_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPhone 7 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_eg2tests_module", + "test_target": "//ios/web/shell/test:ios_web_shell_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_eg2tests_module", + "test_target": "//ios/web/shell/test:ios_web_shell_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_eg2tests_module", + "test_target": "//ios/web/shell/test:ios_web_shell_eg2tests_module" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_egtests_iPad Pro (12.9-inch) 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_egtests", + "test_target": "//ios/web/shell/test:ios_web_shell_egtests" + }, + { + "args": [ + "--platform", + "iPad Pro (12.9-inch)", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_egtests_iPad Pro (12.9-inch) 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_egtests", + "test_target": "//ios/web/shell/test:ios_web_shell_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_egtests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_egtests", + "test_target": "//ios/web/shell/test:ios_web_shell_egtests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_egtests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_shell_egtests", + "test_target": "//ios/web/shell/test:ios_web_shell_egtests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_unittests", + "test_target": "//ios/web:ios_web_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_inttests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_inttests", + "test_target": "//ios/web_view:ios_web_view_inttests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_view_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ios_web_view_unittests", + "test_target": "//ios/web_view:ios_web_view_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "net_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "net_unittests", + "test_target": "//net:net_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "net_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "net_unittests", + "test_target": "//net:net_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "services_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "services_unittests", + "test_target": "//services:services_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "services_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "services_unittests", + "test_target": "//services:services_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "skia_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "skia_unittests", + "test_target": "//skia:skia_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "sql_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "sql_unittests", + "test_target": "//sql:sql_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "sql_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "sql_unittests", + "test_target": "//sql:sql_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPad Air 2 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPad Air 2", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPad Air 2 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPhone 6s Plus 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPhone 6s Plus", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPhone 6s Plus 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ui_base_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "ui_base_unittests", + "test_target": "//ui/base:ui_base_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "12.4", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "url_unittests_iPhone X 12.4", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "url_unittests", + "test_target": "//url:url_unittests" + }, + { + "args": [ + "--platform", + "iPhone X", + "--version", + "13.3", + "--out-dir", + "${ISOLATED_OUTDIR}" + ], + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "url_unittests_iPhone X 13.3", + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a" + } + ], + "dimension_sets": [ + { + "os": "Mac-10.14.6" + } + ], + "named_caches": [ + { + "name": "xcode_ios_11c29", + "path": "Xcode.app" + } + ], + "service_account": "ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "url_unittests", + "test_target": "//url:url_unittests" + } + ] }, "linux-annotator-rel": { "scripts": [
diff --git a/testing/buildbot/filters/android.emulator.chrome_public_test_apk.filter b/testing/buildbot/filters/android.emulator.chrome_public_test_apk.filter index 764190b..71d1a545 100644 --- a/testing/buildbot/filters/android.emulator.chrome_public_test_apk.filter +++ b/testing/buildbot/filters/android.emulator.chrome_public_test_apk.filter
@@ -35,3 +35,8 @@ -org.chromium.chrome.browser.translate.TranslateCompactInfoBarTest.testTranslateCompactInfoBarAppears -org.chromium.chrome.browser.translate.TranslateCompactInfoBarTest.testTranslateCompactInfoBarOverflowMenus -org.chromium.chrome.browser.translate.TranslateCompactInfoBarTest.testTranslateCompactInfoBarReopenOnTarget + +# crbug.com/1059168 +-org.chromium.chrome.browser.autofill_assistant.AutofillAssistantBottomsheetTest.testNoResize +-org.chromium.chrome.browser.autofill_assistant.AutofillAssistantBottomsheetTest.testResizeLayoutViewport +-org.chromium.chrome.browser.autofill_assistant.AutofillAssistantBottomsheetTest.testResizeVisualViewport
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index dff3a60..b2ce9e0 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -895,148 +895,183 @@ "ios_chrome_bookmarks_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_bookmarks_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_bookmarks_egtests", + "type": "generated_script", }, "ios_chrome_integration_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_integration_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_integration_egtests", + "type": "generated_script", }, "ios_chrome_reading_list_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_reading_list_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_reading_list_egtests", + "type": "generated_script", }, "ios_chrome_settings_egtests": { "args": [ "--enable-features=ClearSyncedData", ], "label": "//ios/chrome/test/earl_grey:ios_chrome_settings_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_settings_egtests", + "type": "generated_script", }, "ios_chrome_signin_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_signin_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_signin_egtests", + "type": "generated_script", }, "ios_chrome_translate_egtests": { "label": "//ios/chrome/test/earl_grey:ios_chrome_translate_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_translate_egtests", + "type": "generated_script", }, "ios_chrome_smoke_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_smoke_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_smoke_egtests", + "type": "generated_script", }, "ios_chrome_ui_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_ui_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_ui_egtests", + "type": "generated_script", }, "ios_chrome_unittests": { "args": [], "label": "//ios/chrome/test:ios_chrome_unittests", - "type": "raw", + "script": "bin/run_ios_chrome_unittests", + "type": "generated_script", }, "ios_chrome_web_egtests": { "args": [], "label": "//ios/chrome/test/earl_grey:ios_chrome_web_egtests", - "type": "raw", + "script": "bin/run_ios_chrome_web_egtests", + "type": "generated_script", }, "ios_chrome_bookmarks_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_bookmarks_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_bookmarks_eg2tests_module", + "type": "generated_script", }, "ios_chrome_integration_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_integration_eg2tests_module", + "type": "generated_script", }, "ios_chrome_settings_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_settings_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_settings_eg2tests_module", + "type": "generated_script", }, "ios_chrome_signin_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_signin_eg2tests_module", + "type": "generated_script", }, "ios_chrome_smoke_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_smoke_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_smoke_eg2tests_module", + "type": "generated_script", }, "ios_chrome_ui_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_ui_eg2tests_module", + "type": "generated_script", }, "ios_chrome_web_eg2tests_module": { "args": [], "label": "//ios/chrome/test/earl_grey2:ios_chrome_web_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_chrome_web_eg2tests_module", + "type": "generated_script", }, "ios_crash_xcuitests_module": { "args": [], "label": "//third_party/crashpad/crashpad/test/ios:ios_crash_xcuitests_module", - "type": "raw", - }, - "ios_web_shell_eg2tests_module": { - "args": [], - "label": "//ios/web/shell/test:ios_web_shell_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_crash_xcuitests_module", + "type": "generated_script", }, "ios_components_unittests": { "args": [], "label": "//ios/components:ios_components_unittests", - "type": "raw", + "script": "bin/run_ios_components_unittests", + "type": "generated_script", }, "ios_net_unittests": { "args": [], "label": "//ios/net:ios_net_unittests", - "type": "raw", + "script": "bin/run_ios_net_unittests", + "type": "generated_script", }, "ios_remoting_unittests": { "args": [], "label": "//remoting/ios:ios_remoting_unittests", - "type": "raw", + "script": "bin/run_ios_remoting_unittests", + "type": "generated_script", }, "ios_showcase_egtests": { "args": [], "label": "//ios/showcase:ios_showcase_egtests", - "type": "raw", + "script": "bin/run_ios_showcase_egtests", + "type": "generated_script", }, "ios_showcase_eg2tests_module": { "args":[], "label": "//ios/showcase:ios_showcase_eg2tests_module", - "type": "raw", + "script": "bin/run_ios_showcase_eg2tests_module", + "type": "generated_script", + }, + "ios_testing_unittests": { + "args": [], + "label": "//ios/testing:ios_testing_unittests", + "script": "bin/run_ios_testing_unittests", + "type": "generated_script", }, "ios_web_inttests": { "args": [], "label": "//ios/web:ios_web_inttests", - "type": "raw", + "script": "bin/run_ios_web_inttests", + "type": "generated_script", + }, + "ios_web_shell_eg2tests_module": { + "args": [], + "label": "//ios/web/shell/test:ios_web_shell_eg2tests_module", + "script": "bin/run_ios_web_shell_eg2tests_module", + "type": "generated_script", }, "ios_web_shell_egtests": { "args": [], "label": "//ios/web/shell/test:ios_web_shell_egtests", - "type": "raw", + "script": "bin/run_ios_web_shell_egtests", + "type": "generated_script", }, "ios_web_unittests": { "args": [], "label": "//ios/web:ios_web_unittests", - "type": "raw", + "script": "bin/run_ios_web_unittests", + "type": "generated_script", }, "ios_web_view_inttests": { "args": [], "label": "//ios/web_view:ios_web_view_inttests", - "type": "raw", + "script": "bin/run_ios_web_view_inttests", + "type": "generated_script", }, "ios_web_view_unittests": { "args": [], "label": "//ios/web_view:ios_web_view_unittests", - "type": "raw", + "script": "bin/run_ios_web_view_unittests", + "type": "generated_script", }, "ipc_tests": { "label": "//ipc:ipc_tests", @@ -1290,11 +1325,6 @@ "label": "//third_party/opus:opus_tests", "type": "console_test_launcher", }, - "ios_testing_unittests": { - "args": [], - "label": "//ios/testing:ios_testing_unittests", - "type": "raw", - }, "openscreen_unittests": { "label": "//chrome/browser/media/router:openscreen_unittests", "type": "console_test_launcher",
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl index 7d44864..68df1183 100644 --- a/testing/buildbot/mixins.pyl +++ b/testing/buildbot/mixins.pyl
@@ -227,13 +227,6 @@ }, }, }, - 'host_mac_10.14': { - 'swarming': { - 'dimensions': { - 'host os': 'Mac-10.14.6', - }, - }, - }, 'intel_iris_5100': { 'swarming': { 'dimensions': { @@ -241,6 +234,11 @@ }, }, }, + 'ios_swarming_account': { + 'swarming': { + 'service_account': 'ios-isolated-tester@chops-service-accounts.iam.gserviceaccount.com' + }, + }, 'kitkat': { 'swarming': { 'dimensions': { @@ -475,6 +473,17 @@ }, }, }, + 'mac_toolchain': { + 'swarming': { + 'cipd_packages': [ + { + "cipd_package": 'infra/tools/mac_toolchain/${platform}', + 'location': '.', + 'revision': 'git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a', + }, + ], + }, + }, 'marshmallow': { 'swarming': { 'dimensions': { @@ -536,6 +545,14 @@ }, }, }, + 'out_dir_arg': { + '$mixin_append': { + 'args': [ + '--out-dir', + '${ISOLATED_OUTDIR}' + ], + }, + }, 'pie-x86-emulator': { '$mixin_append': { 'args': [ @@ -734,16 +751,12 @@ }, 'xcode_11c29': { 'swarming': { - 'dimensions': { - 'xcode_build_version': '11c29', - }, - }, - }, - 'xcode_parallelization': { - 'swarming': { - 'dimensions': { - 'xcode_parallelization': 'true', - }, + 'named_caches': [ + { + 'name': 'xcode_ios_11c29', + 'path': 'Xcode.app', + }, + ], }, }, }
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 205fb51d..06fd5df 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -603,6 +603,7 @@ 'remove_from': [ 'android-asan', # https://crbug.com/964562 'android-code-coverage-native', # https://crbug.com/1018780 + 'android-kitkat-arm-rel', # https://crbug.com/1060245 ], 'modifications': { 'KitKat Phone Tester (dbg)': {
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 25a7e59..4d3af78 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -2642,39 +2642,236 @@ 'ios_components_unittests': {}, }, + 'ios_common_tests': { + 'boringssl_crypto_tests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'boringssl_ssl_tests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'crypto_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'google_apis_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_components_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_net_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_remoting_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_testing_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'net_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'services_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'sql_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'url_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + }, + 'ios_eg2_tests': { + 'ios_chrome_bookmarks_eg2tests_module': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, 'ios_chrome_integration_eg2tests_module': { - 'app': 'ios_chrome_integration_eg2tests_module', - 'host': 'ios_chrome_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_chrome_settings_eg2tests_module': { - 'app': 'ios_chrome_settings_eg2tests_module', - 'host': 'ios_chrome_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_chrome_signin_eg2tests_module': { - 'app': 'ios_chrome_signin_eg2tests_module', - 'host': 'ios_chrome_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_chrome_smoke_eg2tests_module': { - 'app': 'ios_chrome_smoke_eg2tests_module', - 'host': 'ios_chrome_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_chrome_ui_eg2tests_module': { - 'app': 'ios_chrome_ui_eg2tests_module', - 'host': 'ios_chrome_eg2tests', - 'shards': 2, + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + }, + 'swarming': { + 'shards': 2, + } }, 'ios_chrome_web_eg2tests_module': { - 'app': 'ios_chrome_web_eg2tests_module', - 'host': 'ios_chrome_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_showcase_eg2tests_module': { - 'app': 'ios_showcase_eg2tests_module', - 'host': 'ios_showcase_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, 'ios_web_shell_eg2tests_module': { - 'app': 'ios_web_shell_eg2tests_module', - 'host': 'ios_web_shell_eg2tests', + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + }, + + 'ios_eg_cq_tests': { + 'ios_chrome_integration_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + }, + 'swarming': { + 'shards': 3, + } + }, + 'ios_chrome_signin_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + }, + }, + 'ios_chrome_ui_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + }, + 'swarming': { + 'shards': 5, + } + }, + 'ios_web_shell_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + }, + + 'ios_eg_tests': { + 'ios_chrome_bookmarks_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_chrome_reading_list_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_chrome_settings_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + }, + 'swarming': { + 'shards': 3, + } + }, + 'ios_chrome_translate_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_chrome_web_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_showcase_egtests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + }, + + 'ios_screen_size_dependent_tests': { + 'base_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'components_unittests': { + 'merge': { + 'args': [], + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'gfx_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_chrome_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_web_inttests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_web_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_web_view_inttests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ios_web_view_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'skia_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } + }, + 'ui_base_unittests': { + 'merge': { + 'script': '//testing/merge_scripts/standard_isolated_script_merge.py' + } }, }, @@ -4509,31 +4706,48 @@ 'matrix_compound_suites': { - # This is a sample and is not functional - 'ios_simulator_cr_recipe_gtests': { - 'ios_eg2_tests': { - 'swarming': { - 'dimension_sets': [ - { - 'device type': 'iPhone X', - 'os': '13.3', - }, - { - 'device type': 'iPhone 7', - 'os': '13.3', - }, - { - 'device type': 'iPhone X', - 'os': '12.4', - }, - { - 'device type': 'iPad (6th generation)', - 'os': '12.4', - }, - ], - }, + 'ios13_beta_simulator_gtests': { + 'ios_common_tests': { + 'variants': [ + 'SIM_IPHONE_X_13_3', + 'SIM_IPHONE_X_12_4', + ], }, - }, - + 'ios_eg2_tests': { + 'variants': [ + 'SIM_IPHONE_X_13_3', + 'SIM_IPHONE_7_13_3', + 'SIM_IPAD_6_GEN_13_3', + 'SIM_IPHONE_X_12_4', + 'SIM_IPAD_6_GEN_12_4', + ] + }, + 'ios_eg_cq_tests': { + 'variants': [ + 'SIM_IPHONE_X_13_3', + 'SIM_IPAD_PRO_13_3', + 'SIM_IPHONE_X_12_4', + 'SIM_IPAD_PRO_12_4', + ] + }, + 'ios_eg_tests': { + 'variants': [ + 'SIM_IPHONE_X_13_3', + 'SIM_IPAD_AIR_3RD_GEN_13_3', + 'SIM_IPHONE_X_12_4', + 'SIM_IPAD_AIR_3RD_GEN_12_4', + ] + }, + 'ios_screen_size_dependent_tests': { + 'variants': [ + 'SIM_IPHONE_6S_PLUS_13_3', + 'SIM_IPHONE_X_13_3', + 'SIM_IPAD_AIR_2_13_3', + 'SIM_IPHONE_6S_PLUS_12_4', + 'SIM_IPHONE_X_12_4', + 'SIM_IPAD_AIR_2_12_4', + ], + }, + } } }
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 08d15e6..2be1e1b8 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -8,4 +8,122 @@ # * comments are allowed, using '#' syntax; and # * trailing commas are allowed. -{} +{ + 'SIM_IPAD_AIR_2_12_4': { + 'args': [ + '--platform', + 'iPad Air 2', + '--version', + '12.4' + ], + 'identifier': 'iPad Air 2 12.4' + }, + 'SIM_IPAD_AIR_2_13_3': { + 'args': [ + '--platform', + 'iPad Air 2', + '--version', + '13.3' + ], + 'identifier': 'iPad Air 2 13.3' + }, + 'SIM_IPAD_AIR_3RD_GEN_12_4': { + 'args': [ + '--platform', + 'iPad Air (3rd generation)', + '--version', + '12.4' + ], + 'identifier': 'iPad Air (3rd generation) 12.4' + }, + 'SIM_IPAD_AIR_3RD_GEN_13_3': { + 'args': [ + '--platform', + 'iPad Air (3rd generation)', + '--version', + '13.3' + ], + 'identifier': 'iPad Air (3rd generation) 13.3' + }, + 'SIM_IPAD_PRO_12_4': { + 'args': [ + '--platform', + 'iPad Pro (12.9-inch)', + '--version', + '12.4', + ], + 'identifier': 'iPad Pro (12.9-inch) 12.4' + }, + 'SIM_IPAD_PRO_13_3': { + 'args': [ + '--platform', + 'iPad Pro (12.9-inch)', + '--version', + '13.3', + ], + 'identifier': 'iPad Pro (12.9-inch) 13.3' + }, + 'SIM_IPAD_6_GEN_12_4': { + 'args': [ + '--platform', + 'iPad (6th generation)', + '--version', + '12.4', + ], + 'identifier': 'iPad (6th generation) 12.4' + }, + 'SIM_IPAD_6_GEN_13_3': { + 'args': [ + '--platform', + 'iPad (6th generation)', + '--version', + '13.3', + ], + 'identifier': 'iPad (6th generation) 13.3' + }, + 'SIM_IPHONE_6S_PLUS_12_4': { + 'args': [ + '--platform', + 'iPhone 6s Plus', + '--version', + '12.4', + ], + 'identifier': 'iPhone 6s Plus 12.4' + }, + 'SIM_IPHONE_6S_PLUS_13_3': { + 'args': [ + '--platform', + 'iPhone 6s Plus', + '--version', + '13.3', + ], + 'identifier': 'iPhone 6s Plus 13.3' + }, + 'SIM_IPHONE_7_13_3': { + 'args': [ + '--platform', + 'iPhone 7', + '--version', + '13.3', + ], + 'identifier': 'iPhone 7 13.3' + }, + 'SIM_IPHONE_X_12_4': { + 'args': [ + '--platform', + 'iPhone X', + '--version', + '12.4', + ], + 'identifier': 'iPhone X 12.4' + }, + 'SIM_IPHONE_X_13_3': { + 'args': [ + '--platform', + 'iPhone X', + '--version', + '13.3', + ], + 'identifier': 'iPhone X 13.3' + }, +}
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 4e4ac10b..8b9b30ba 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -27,8 +27,7 @@ 'chromiumos_preflight', ], 'test_suites': { - 'gtest_tests': 'chromeos_vm_gtests', - 'isolated_scripts': 'chromeos_isolated_scripts', + 'gtest_tests': 'chromeos_browser_integration_tests', }, 'swarming': { 'dimension_sets': [ @@ -45,7 +44,8 @@ 'chromiumos_preflight', ], 'test_suites': { - 'gtest_tests': 'chromeos_browser_integration_tests', + 'gtest_tests': 'chromeos_vm_gtests', + 'isolated_scripts': 'chromeos_isolated_scripts', }, 'swarming': { 'dimension_sets': [ @@ -1775,15 +1775,19 @@ 'gtest_tests': 'ios_code_coverage_gtests', }, }, - 'ios-simulator-cr-recipe': { + 'ios13-beta-simulator': { + 'additional_compile_targets': [ + 'all', + ], 'mixins': [ - 'chrome-swarming-pool', - 'host_mac_10.14', + 'ios_swarming_account', + 'mac_10.14', + 'mac_toolchain', + 'out_dir_arg', 'xcode_11c29', - 'xcode_parallelization', ], 'test_suites': { - 'gtest_tests': 'ios_simulator_cr_recipe_gtests', + 'gtest_tests': 'ios13_beta_simulator_gtests' }, }, 'linux-annotator-rel': {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 522e7e5..e61c3eec 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5938,6 +5938,7 @@ "UseSkiaRenderer": [ { "platforms": [ + "android", "linux", "windows" ],
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn index c9784565..a0172ad 100644 --- a/third_party/blink/public/BUILD.gn +++ b/third_party/blink/public/BUILD.gn
@@ -115,6 +115,7 @@ "platform/audio/web_audio_device_source_type.h", "platform/blame_context.h", "platform/code_cache_loader.h", + "platform/cross_variant_mojo_util.h", "platform/file_path_conversion.h", "platform/interface_registry.h", "platform/linux/web_sandbox_support.h", @@ -455,6 +456,7 @@ } group("blink_devtools_frontend_resources_files") { + testonly = true data_deps = [ "$devtools_frontend_path:devtools_all_files" ] }
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom index 7c78b3fc..2541661 100644 --- a/third_party/blink/public/mojom/web_feature/web_feature.mojom +++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2518,6 +2518,10 @@ kBreakIteratorTypeLine = 3177, kV8FileSystemDirectoryHandle_Resolve_Method = 3178, kV8FileSystemHandle_IsSameEntry_Method = 3179, + kV8RTCRtpSender_CreateEncodedAudioStreams_Method = 3180, + kV8RTCRtpSender_CreateEncodedVideoStreams_Method = 3181, + kV8RTCRtpReceiver_CreateEncodedAudioStreams_Method = 3182, + kV8RTCRtpReceiver_CreateEncodedVideoStreams_Method = 3183, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/platform/cross_variant_mojo_util.h b/third_party/blink/public/platform/cross_variant_mojo_util.h new file mode 100644 index 0000000..7d76080 --- /dev/null +++ b/third_party/blink/public/platform/cross_variant_mojo_util.h
@@ -0,0 +1,157 @@ +// 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. +// +// This header defines utilities for converting between Mojo interface variant +// types. This is useful for maintaining type safety when message pipes need to +// be passed across the Blink public API boundary. +// +// Example conversion from the Blink variant into a cross-variant handle: +// +// namespace blink { +// +// void WebLocalFrameImpl::PassGoatTeleporter() { +// mojo::PendingRemote<mojom::blink::GoatTeleporter> remote = +// ProcureGoatTeleporter(); +// +// // CrossVariantMojoReceiver and CrossVariantMojoRemote may created from +// // any interface variant. Note the use of the unrelated *InterfaceBase +// // class as the cross-variant handle's template parameter. This is an empty +// // helper class defined by the .mojom-shared.h header that is common to all +// // variants of a Mojo interface and is useful for implementing type safety +// // checks such as this one. +// web_local_frame_client->PassGoatTeleporter( +// ToCrossVariantMojoRemote(std::move(cross_variant_remote))); +// } +// +// } // namespace blink +// +// Example conversion from a cross-variant handle into the regular variant: +// +// namespace content { +// +// void RenderFrameImpl::PassGoatTeleporter( +// blink::CrossVariantMojoRemote<GoatTeleporterInterfaceBase> +// cross_variant_remote) { +// mojo::PendingRemote<blink::mojom::GoatTeleporter> remote = +// cross_variant_remote +// .PassAsPendingRemote<blink::mojom::GoatTeleporter>(); +// } +// +// } // namespace content + +#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_CROSS_VARIANT_MOJO_UTIL_H_ +#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_CROSS_VARIANT_MOJO_UTIL_H_ + +#include <type_traits> +#include <utility> + +#include "base/logging.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/system/message_pipe.h" + +namespace blink { + +template <typename Interface> +class CrossVariantMojoReceiver { + public: + CrossVariantMojoReceiver() = default; + ~CrossVariantMojoReceiver() = default; + + CrossVariantMojoReceiver(CrossVariantMojoReceiver&&) noexcept = default; + CrossVariantMojoReceiver& operator=(CrossVariantMojoReceiver&&) noexcept = + default; + + CrossVariantMojoReceiver(const CrossVariantMojoReceiver&) = delete; + CrossVariantMojoReceiver& operator=(const CrossVariantMojoReceiver&) = + default; + + template <typename VariantInterface, + typename CrossVariantBase = typename VariantInterface::Base_, + std::enable_if_t< + std::is_same<CrossVariantBase, Interface>::value>* = nullptr> + CrossVariantMojoReceiver(mojo::PendingReceiver<VariantInterface> receiver) + : pipe_(receiver.PassPipe()) {} + + private: + friend struct mojo::PendingReceiverConverter<CrossVariantMojoReceiver>; + + // Constructs a valid CrossVariantMojoReceiver from a valid raw message pipe + // handle. + explicit CrossVariantMojoReceiver(mojo::ScopedMessagePipeHandle pipe) + : pipe_(std::move(pipe)) { + DCHECK(pipe_.is_valid()); + } + + mojo::ScopedMessagePipeHandle pipe_; +}; + +template <typename Interface> +class CrossVariantMojoRemote { + public: + CrossVariantMojoRemote() = default; + ~CrossVariantMojoRemote() = default; + + CrossVariantMojoRemote(CrossVariantMojoRemote&&) noexcept = default; + CrossVariantMojoRemote& operator=(CrossVariantMojoRemote&&) noexcept = + default; + + CrossVariantMojoRemote(const CrossVariantMojoRemote&) = delete; + CrossVariantMojoRemote& operator=(const CrossVariantMojoRemote&) = default; + + template <typename VariantInterface, + typename CrossVariantBase = typename VariantInterface::Base_, + std::enable_if_t< + std::is_same<CrossVariantBase, Interface>::value>* = nullptr> + CrossVariantMojoRemote(mojo::PendingRemote<VariantInterface> remote) + : version_(remote.version()), pipe_(remote.PassPipe()) {} + + private: + friend struct mojo::PendingRemoteConverter<CrossVariantMojoRemote>; + + // Constructs a valid CrossVariantMojoRemote from a valid raw message pipe + // handle. + explicit CrossVariantMojoRemote(mojo::ScopedMessagePipeHandle pipe, + uint32_t version) + : pipe_(std::move(pipe)), version_(version) { + DCHECK(pipe_.is_valid()); + } + + // Subtle: |version_| is ordered before |pipe_| so it can be initialized first + // in the move conversion constructor. |PendingRemote::PassPipe()| invalidates + // all other state on PendingRemote so it must be called last. + uint32_t version_; + mojo::ScopedMessagePipeHandle pipe_; +}; + +} // namespace blink + +namespace mojo { + +template <typename CrossVariantBase> +struct PendingReceiverConverter< + blink::CrossVariantMojoReceiver<CrossVariantBase>> { + template <typename VariantBase> + static PendingReceiver<VariantBase> To( + blink::CrossVariantMojoReceiver<CrossVariantBase>&& in) { + return in.pipe_.is_valid() + ? PendingReceiver<VariantBase>(std::move(in.pipe_)) + : PendingReceiver<VariantBase>(); + } +}; + +template <typename CrossVariantBase> +struct PendingRemoteConverter<blink::CrossVariantMojoRemote<CrossVariantBase>> { + template <typename VariantBase> + static PendingRemote<VariantBase> To( + blink::CrossVariantMojoRemote<CrossVariantBase>&& in) { + return in.pipe_.is_valid() + ? PendingRemote<VariantBase>(std::move(in.pipe_), in.version_) + : PendingRemote<VariantBase>(); + } +}; + +} // namespace mojo + +#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_CROSS_VARIANT_MOJO_UTIL_H_
diff --git a/third_party/blink/public/web/DEPS b/third_party/blink/public/web/DEPS index 2f8535e..99d893d2 100644 --- a/third_party/blink/public/web/DEPS +++ b/third_party/blink/public/web/DEPS
@@ -33,6 +33,7 @@ "+services/network/public/mojom/fetch_api.mojom-shared.h", "+services/network/public/mojom/ip_address_space.mojom-shared.h", "+services/network/public/mojom/referrer_policy.mojom-shared.h", + "+services/network/public/mojom/url_loader.mojom-shared.h", "+services/service_manager/public", "+ui/events/types", "+ui/gfx/geometry",
diff --git a/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h b/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h index 4ff8ec8..cedb7e23 100644 --- a/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h +++ b/third_party/blink/public/web/modules/service_worker/web_service_worker_context_client.h
@@ -36,9 +36,11 @@ #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "mojo/public/cpp/system/message_pipe.h" +#include "services/network/public/mojom/url_loader.mojom-shared.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-shared.h" #include "third_party/blink/public/mojom/service_worker/service_worker_event_status.mojom-shared.h" #include "third_party/blink/public/mojom/web_feature/web_feature.mojom-shared.h" +#include "third_party/blink/public/platform/cross_variant_mojo_util.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_fetch_context.h" #include "third_party/blink/public/platform/web_url.h" #include "v8/include/v8.h" @@ -55,10 +57,9 @@ // Used to pass the mojom struct blink.mojom.FetchEventPreloadHandle across the // boundary between //content and Blink. struct WebFetchEventPreloadHandle { - // For mojo::PendingRemote<network::mojom::URLLoader>. - mojo::ScopedMessagePipeHandle url_loader; - // For mojo::PendingReceiver<network::mojom::URLLoaderClient>. - mojo::ScopedMessagePipeHandle url_loader_client_receiver; + CrossVariantMojoRemote<network::mojom::URLLoaderInterfaceBase> url_loader; + CrossVariantMojoReceiver<network::mojom::URLLoaderClientInterfaceBase> + url_loader_client_receiver; }; // WebServiceWorkerContextClient is a "client" of a service worker execution
diff --git a/third_party/blink/public/web/web_navigation_params.h b/third_party/blink/public/web/web_navigation_params.h index f62b52b..e4acce3 100644 --- a/third_party/blink/public/web/web_navigation_params.h +++ b/third_party/blink/public/web/web_navigation_params.h
@@ -17,6 +17,8 @@ #include "third_party/blink/public/common/frame/frame_policy.h" #include "third_party/blink/public/common/navigation/triggering_event_info.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h" +#include "third_party/blink/public/mojom/frame/navigation_initiator.mojom-shared.h" +#include "third_party/blink/public/platform/cross_variant_mojo_util.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h" #include "third_party/blink/public/platform/web_common.h" #include "third_party/blink/public/platform/web_content_security_policy_struct.h" @@ -133,7 +135,8 @@ WebContentSecurityPolicySourceExpression initiator_self_source; // The navigation initiator, if any. - mojo::ScopedMessagePipeHandle navigation_initiator_handle; + CrossVariantMojoRemote<mojom::NavigationInitiatorInterfaceBase> + navigation_initiator_remote; // Specifies whether or not a MHTML Archive can be used to load a subframe // resource instead of doing a network request.
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/enumeration.py b/third_party/blink/renderer/bindings/scripts/bind_gen/enumeration.py index aac174a..aaff26cf 100644 --- a/third_party/blink/renderer/bindings/scripts/bind_gen/enumeration.py +++ b/third_party/blink/renderer/bindings/scripts/bind_gen/enumeration.py
@@ -163,30 +163,10 @@ def make_nested_enum_class_def(cg_context): assert isinstance(cg_context, CodeGenContext) - enum_values = [] - used_names = set() - for value in cg_context.enumeration.values: - name = name_style.constant(value) - # ChooseFileSystemEntriesType is defined as follows: - # - # enum ChooseFileSystemEntriesType { - # "open-file", - # "openFile", - # "save-file", - # "saveFile", - # "open-directory", - # "openDirectory" - # }; - # - # Workaround until the old values get gone. - # TODO(https://crbug.com/1020715): Remove the workaround once the issue - # gets resolved. - if name in used_names: - assert (cg_context.enumeration.identifier == - "ChooseFileSystemEntriesType") - name = name + "2" - enum_values.append(TextNode(name)) - used_names.add(name) + enum_values = [ + TextNode(name_style.constant(value)) + for value in cg_context.enumeration.values + ] return ListNode([ TextNode("enum class Enum : enum_int_t {"),
diff --git a/third_party/blink/renderer/core/animation/animation_effect_test.cc b/third_party/blink/renderer/core/animation/animation_effect_test.cc index cf5671c..9026593 100644 --- a/third_party/blink/renderer/core/animation/animation_effect_test.cc +++ b/third_party/blink/renderer/core/animation/animation_effect_test.cc
@@ -101,7 +101,8 @@ DCHECK(!local_time || !IsNull(local_time.value())); local_time_ = local_time; time_to_next_iteration_ = time_to_next_iteration; - return AnimationTimeDelta::FromSecondsD(-1); + return AnimationTimeDelta::FromSecondsD( + std::numeric_limits<double>::infinity()); } double TakeLocalTime() { DCHECK(local_time_);
diff --git a/third_party/blink/renderer/core/animation/compositor_animations.cc b/third_party/blink/renderer/core/animation/compositor_animations.cc index 5d680232..48c03da0 100644 --- a/third_party/blink/renderer/core/animation/compositor_animations.cc +++ b/third_party/blink/renderer/core/animation/compositor_animations.cc
@@ -566,8 +566,9 @@ if (out.scaled_time_offset.is_max() || out.scaled_time_offset.is_min()) return false; - out.adjusted_iteration_count = - std::isfinite(timing.iteration_count) ? timing.iteration_count : -1; + out.adjusted_iteration_count = std::isfinite(timing.iteration_count) + ? timing.iteration_count + : std::numeric_limits<double>::infinity(); out.scaled_duration = timing.iteration_duration.value(); out.direction = timing.direction; @@ -579,7 +580,8 @@ DCHECK_GT(out.scaled_duration, AnimationTimeDelta()); DCHECK(out.adjusted_iteration_count > 0 || - out.adjusted_iteration_count == -1); + out.adjusted_iteration_count == + std::numeric_limits<double>::infinity()); DCHECK(std::isfinite(out.playback_rate) && out.playback_rate); DCHECK_GE(out.iteration_start, 0);
diff --git a/third_party/blink/renderer/core/animation/compositor_animations_test.cc b/third_party/blink/renderer/core/animation/compositor_animations_test.cc index 86389b0..0a3e45e 100644 --- a/third_party/blink/renderer/core/animation/compositor_animations_test.cc +++ b/third_party/blink/renderer/core/animation/compositor_animations_test.cc
@@ -724,14 +724,16 @@ timing_.iteration_count = std::numeric_limits<double>::infinity(); EXPECT_TRUE(ConvertTimingForCompositor(timing_, compositor_timing_)); - EXPECT_EQ(-1, compositor_timing_.adjusted_iteration_count); + EXPECT_EQ(std::numeric_limits<double>::infinity(), + compositor_timing_.adjusted_iteration_count); timing_.iteration_count = std::numeric_limits<double>::infinity(); timing_.iteration_duration = AnimationTimeDelta::FromSecondsD(5); timing_.start_delay = -6.0; EXPECT_TRUE(ConvertTimingForCompositor(timing_, compositor_timing_)); EXPECT_DOUBLE_EQ(6.0, compositor_timing_.scaled_time_offset.InSecondsF()); - EXPECT_EQ(-1, compositor_timing_.adjusted_iteration_count); + EXPECT_EQ(std::numeric_limits<double>::infinity(), + compositor_timing_.adjusted_iteration_count); } TEST_P(AnimationCompositorAnimationsTest,
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc index de09295..60496637 100644 --- a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
@@ -38,6 +38,7 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/blink/public/common/blob/blob_utils.h" #include "third_party/blink/public/common/feature_policy/feature_policy.h" +#include "third_party/blink/public/mojom/frame/navigation_initiator.mojom-blink.h" #include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom-blink-forward.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_provider.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_provider_client.h" @@ -570,8 +571,8 @@ ConvertToPublic(std::move(initiator_self_source)); } navigation_info->initiator_address_space = initiator_address_space; - navigation_info->navigation_initiator_handle = - navigation_initiator.PassPipe(); + navigation_info->navigation_initiator_remote = + std::move(navigation_initiator); // Can be null. LocalFrame* local_parent_frame = GetLocalParentFrame(web_frame_);
diff --git a/third_party/blink/renderer/core/exported/web_frame.cc b/third_party/blink/renderer/core/exported/web_frame.cc index c4c019d7..a1903ef 100644 --- a/third_party/blink/renderer/core/exported/web_frame.cc +++ b/third_party/blink/renderer/core/exported/web_frame.cc
@@ -306,10 +306,11 @@ if (!frame) return; - if (auto* web_local_frame = DynamicTo<WebLocalFrameImpl>(frame)) - visitor->Trace(web_local_frame); - else + if (frame->IsWebLocalFrame()) { + visitor->Trace(To<WebLocalFrameImpl>(frame)); + } else { visitor->Trace(To<WebRemoteFrameImpl>(frame)); + } } void WebFrame::TraceFrames(Visitor* visitor, WebFrame* frame) {
diff --git a/third_party/blink/renderer/core/layout/BUILD.gn b/third_party/blink/renderer/core/layout/BUILD.gn index 1997cbe..8a0de26b 100644 --- a/third_party/blink/renderer/core/layout/BUILD.gn +++ b/third_party/blink/renderer/core/layout/BUILD.gn
@@ -139,6 +139,8 @@ "layout_image_resource_style_image.h", "layout_inline.cc", "layout_inline.h", + "layout_inside_list_marker.cc", + "layout_inside_list_marker.h", "layout_list_item.cc", "layout_list_item.h", "layout_list_marker.cc", @@ -158,6 +160,8 @@ "layout_object_factory.cc", "layout_object_factory.h", "layout_object_inlines.h", + "layout_outside_list_marker.cc", + "layout_outside_list_marker.h", "layout_progress.cc", "layout_progress.h", "layout_quote.cc",
diff --git a/third_party/blink/renderer/core/layout/api/line_layout_list_marker.h b/third_party/blink/renderer/core/layout/api/line_layout_list_marker.h index f78350e8..f5cc4ed 100644 --- a/third_party/blink/renderer/core/layout/api/line_layout_list_marker.h +++ b/third_party/blink/renderer/core/layout/api/line_layout_list_marker.h
@@ -24,16 +24,7 @@ LineLayoutListMarker() = default; - bool IsInside() const { return ToListMarker()->IsInside(); } - - private: - LayoutListMarker* ToListMarker() { - return ToLayoutListMarker(GetLayoutObject()); - } - - const LayoutListMarker* ToListMarker() const { - return ToLayoutListMarker(GetLayoutObject()); - } + bool IsInside() const { return GetLayoutObject()->IsInsideListMarker(); } }; } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_inside_list_marker.cc b/third_party/blink/renderer/core/layout/layout_inside_list_marker.cc new file mode 100644 index 0000000..ada7d6b1 --- /dev/null +++ b/third_party/blink/renderer/core/layout/layout_inside_list_marker.cc
@@ -0,0 +1,14 @@ +// 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. + +#include "third_party/blink/renderer/core/layout/layout_inside_list_marker.h" + +namespace blink { + +LayoutInsideListMarker::LayoutInsideListMarker(Element* element) + : LayoutListMarker(element) {} + +LayoutInsideListMarker::~LayoutInsideListMarker() = default; + +} // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_inside_list_marker.h b/third_party/blink/renderer/core/layout/layout_inside_list_marker.h new file mode 100644 index 0000000..22426df --- /dev/null +++ b/third_party/blink/renderer/core/layout/layout_inside_list_marker.h
@@ -0,0 +1,33 @@ +// 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_ + +#include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/layout/layout_list_marker.h" + +namespace blink { + +// Used to layout the list item's inside marker. +// The LayoutInsideListMarker always has to be a child of a LayoutListItem. +class CORE_EXPORT LayoutInsideListMarker final : public LayoutListMarker { + public: + explicit LayoutInsideListMarker(Element*); + ~LayoutInsideListMarker() override; + + const char* GetName() const override { return "LayoutInsideListMarker"; } + + private: + bool IsOfType(LayoutObjectType type) const override { + return type == kLayoutObjectInsideListMarker || + LayoutListMarker::IsOfType(type); + } +}; + +DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutInsideListMarker, IsInsideListMarker()); + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_
diff --git a/third_party/blink/renderer/core/layout/layout_list_item.cc b/third_party/blink/renderer/core/layout/layout_list_item.cc index a10d1e4..c744ed1 100644 --- a/third_party/blink/renderer/core/layout/layout_list_item.cc +++ b/third_party/blink/renderer/core/layout/layout_list_item.cc
@@ -91,7 +91,7 @@ // If the marker is inside we need to redo the preferred width calculations // as the size of the item now includes the size of the list marker. - if (marker->IsInside()) + if (marker->IsInsideListMarker()) SetPreferredLogicalWidthsDirty(); } @@ -176,13 +176,14 @@ const LayoutObject* line_box_parent) { LayoutListMarker* marker = Marker(); LayoutObject* marker_parent = marker->Parent(); + bool is_inside = marker->IsInsideListMarker(); // Deal with the situation of layout tree changed. if (marker_parent && marker_parent->IsAnonymous()) { bool marker_parent_has_lines = line_box_parent && line_box_parent->IsDescendantOf(marker_parent); // When list-position-style change from outside to inside, we need to - // restore LogicalHeight to auto. So add IsInside(). - if (marker->IsInside() || marker_parent_has_lines) { + // restore LogicalHeight to auto. So add is_inside. + if (is_inside || marker_parent_has_lines) { // Set marker_container's LogicalHeight to auto. if (marker_parent->StyleRef().LogicalHeight().IsZero()) ForceLogicalHeight(*marker_parent, Length()); @@ -192,7 +193,7 @@ // new empty line in cases like <li><span><div>text<div><span></li> // If the marker is inside and there are inline contents, we want them to // share the same block container to avoid a line break between them. - if (marker->IsInside() != marker_parent_has_lines) { + if (is_inside != marker_parent_has_lines) { marker->Remove(); marker_parent = nullptr; } @@ -204,7 +205,7 @@ // Create marker_container, set its height to 0px, and add it to li. if (!marker_parent) { LayoutObject* before_child = FirstNonMarkerChild(this); - if (!marker->IsInside() && before_child && !before_child->IsInline()) { + if (!is_inside && before_child && !before_child->IsInline()) { // Create marker_container and set its LogicalHeight to 0px. LayoutBlock* marker_container = CreateAnonymousBlock(); if (line_box_parent) @@ -246,7 +247,7 @@ AddChild(marker, FirstChild()); } - if (!marker->IsInside()) + if (marker->IsOutsideListMarker()) line_box_parent = GetParentOfFirstLineBox(this); if (line_box_parent && (line_box_parent->HasOverflowClip() || !line_box_parent->IsLayoutBlockFlow() || @@ -396,7 +397,7 @@ void LayoutListItem::UpdateOverflow() { LayoutListMarker* marker = Marker(); if (!marker || !marker->Parent() || !marker->Parent()->IsBox() || - marker->IsInside() || !marker->InlineBoxWrapper()) + marker->IsInsideListMarker() || !marker->InlineBoxWrapper()) return; if (need_block_direction_align_)
diff --git a/third_party/blink/renderer/core/layout/layout_list_marker.cc b/third_party/blink/renderer/core/layout/layout_list_marker.cc index 604fb33..d72cec9e 100644 --- a/third_party/blink/renderer/core/layout/layout_list_marker.cc +++ b/third_party/blink/renderer/core/layout/layout_list_marker.cc
@@ -281,7 +281,7 @@ LayoutUnit margin_start; LayoutUnit margin_end; const ComputedStyle& style = StyleRef(); - if (IsInside()) { + if (IsInsideListMarker()) { std::tie(margin_start, margin_end) = InlineMarginsForInside(style, IsImage()); } else { @@ -442,14 +442,6 @@ } } -bool LayoutListMarker::IsInside() const { - const LayoutListItem* list_item = ListItem(); - const ComputedStyle& parent_style = list_item->StyleRef(); - return parent_style.ListStylePosition() == EListStylePosition::kInside || - (IsA<HTMLLIElement>(list_item->GetNode()) && - !parent_style.IsInsideListElement()); -} - LayoutRect LayoutListMarker::GetRelativeMarkerRect() const { if (IsImage()) return LayoutRect(LayoutPoint(), ImageBulletSize());
diff --git a/third_party/blink/renderer/core/layout/layout_list_marker.h b/third_party/blink/renderer/core/layout/layout_list_marker.h index a87910c..c4ba72d 100644 --- a/third_party/blink/renderer/core/layout/layout_list_marker.h +++ b/third_party/blink/renderer/core/layout/layout_list_marker.h
@@ -31,9 +31,8 @@ class LayoutListItem; -// Used to layout the list item's marker. -// The LayoutListMarker always has to be a child of a LayoutListItem. -class CORE_EXPORT LayoutListMarker final : public LayoutBox { +// This class holds code shared among legacy classes for list markers. +class CORE_EXPORT LayoutListMarker : public LayoutBox { public: explicit LayoutListMarker(Element*); ~LayoutListMarker() override; @@ -53,8 +52,6 @@ ListStyleCategory GetListStyleCategory() const; static ListStyleCategory GetListStyleCategory(EListStyleType); - bool IsInside() const; - void UpdateMarginsAndContent(); // Compute inline margins for 'list-style-position: inside' and 'outside'. @@ -75,8 +72,6 @@ const LayoutListItem* ListItem() const; LayoutSize ImageBulletSize() const; - const char* GetName() const override { return "LayoutListMarker"; } - LayoutUnit LineOffset() const { return line_offset_; } protected: @@ -85,10 +80,6 @@ private: void ComputePreferredLogicalWidths() override; - bool IsOfType(LayoutObjectType type) const override { - return type == kLayoutObjectListMarker || LayoutBox::IsOfType(type); - } - void Paint(const PaintInfo&) const override; void UpdateLayout() override;
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index ce854f4..fff8e11 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -3629,10 +3629,6 @@ return true; } -bool LayoutObject::IsOutsideListMarker() const { - return IsListMarker() && !ToLayoutListMarker(this)->IsInside(); -} - int LayoutObject::CaretMinOffset() const { return 0; }
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index 7a005e4..888d1f1 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -647,6 +647,9 @@ } bool IsFrame() const { return IsOfType(kLayoutObjectFrame); } bool IsFrameSet() const { return IsOfType(kLayoutObjectFrameSet); } + bool IsInsideListMarker() const { + return IsOfType(kLayoutObjectInsideListMarker); + } bool IsLayoutNGBlockFlow() const { return IsOfType(kLayoutObjectNGBlockFlow); } @@ -655,25 +658,27 @@ } bool IsLayoutNGMixin() const { return IsOfType(kLayoutObjectNGMixin); } bool IsLayoutNGListItem() const { return IsOfType(kLayoutObjectNGListItem); } - bool IsLayoutNGOutsideListMarker() const { - return IsOfType(kLayoutObjectNGOutsideListMarker); - } bool IsLayoutNGInsideListMarker() const { return IsOfType(kLayoutObjectNGInsideListMarker); } bool IsLayoutNGListMarkerImage() const { return IsOfType(kLayoutObjectNGListMarkerImage); } + bool IsLayoutNGOutsideListMarker() const { + return IsOfType(kLayoutObjectNGOutsideListMarker); + } bool IsLayoutNGProgress() const { return IsOfType(kLayoutObjectNGProgress); } bool IsLayoutNGText() const { return IsOfType(kLayoutObjectNGText); } bool IsLayoutTableCol() const { return IsOfType(kLayoutObjectLayoutTableCol); } bool IsListItem() const { return IsOfType(kLayoutObjectListItem); } - bool IsListMarker() const { return IsOfType(kLayoutObjectListMarker); } bool IsMathML() const { return IsOfType(kLayoutObjectMathML); } bool IsMathMLRoot() const { return IsOfType(kLayoutObjectMathMLRoot); } bool IsMedia() const { return IsOfType(kLayoutObjectMedia); } + bool IsOutsideListMarker() const { + return IsOfType(kLayoutObjectOutsideListMarker); + } bool IsProgress() const { return IsOfType(kLayoutObjectProgress); } bool IsQuote() const { return IsOfType(kLayoutObjectQuote); } bool IsLayoutButton() const { return IsOfType(kLayoutObjectLayoutButton); } @@ -835,8 +840,8 @@ bool IsSVGResourceContainer() const { return IsOfType(kLayoutObjectSVGResourceContainer); } - bool IsSVGResourceFilterPrimitive() const { - return IsOfType(kLayoutObjectSVGResourceFilterPrimitive); + bool IsSVGFilterPrimitive() const { + return IsOfType(kLayoutObjectSVGFilterPrimitive); } // FIXME: Those belong into a SVG specific base-class for all layoutObjects @@ -1993,13 +1998,15 @@ // There are 3 types of list marker. LayoutNG creates different types for // inside and outside; outside is derived from LayoutBlockFlow, and inside // from LayoutInline. Legacy is derived from LayoutBox. + bool IsListMarker() const { + return IsOutsideListMarker() || IsInsideListMarker(); + } bool IsListMarkerIncludingNGOutside() const { return IsListMarker() || IsLayoutNGOutsideListMarker(); } bool IsListMarkerIncludingNGOutsideAndInside() const { return IsListMarkerIncludingNGOutside() || IsLayoutNGInsideListMarker(); } - bool IsOutsideListMarker() const; virtual bool IsCombineText() const { return false; } @@ -2537,9 +2544,9 @@ kLayoutObjectFileUploadControl, kLayoutObjectFrame, kLayoutObjectFrameSet, + kLayoutObjectInsideListMarker, kLayoutObjectLayoutTableCol, kLayoutObjectListItem, - kLayoutObjectListMarker, kLayoutObjectMathML, kLayoutObjectMathMLRoot, kLayoutObjectMedia, @@ -2553,6 +2560,7 @@ kLayoutObjectNGListMarkerImage, kLayoutObjectNGProgress, kLayoutObjectNGText, + kLayoutObjectOutsideListMarker, kLayoutObjectProgress, kLayoutObjectQuote, kLayoutObjectLayoutButton, @@ -2599,7 +2607,7 @@ kLayoutObjectSVGImage, kLayoutObjectSVGForeignObject, kLayoutObjectSVGResourceContainer, - kLayoutObjectSVGResourceFilterPrimitive, + kLayoutObjectSVGFilterPrimitive, }; virtual bool IsOfType(LayoutObjectType type) const { return false; }
diff --git a/third_party/blink/renderer/core/layout/layout_object_factory.cc b/third_party/blink/renderer/core/layout/layout_object_factory.cc index 49e193e..1357db0 100644 --- a/third_party/blink/renderer/core/layout/layout_object_factory.cc +++ b/third_party/blink/renderer/core/layout/layout_object_factory.cc
@@ -10,8 +10,9 @@ #include "third_party/blink/renderer/core/layout/layout_deprecated_flexible_box.h" #include "third_party/blink/renderer/core/layout/layout_fieldset.h" #include "third_party/blink/renderer/core/layout/layout_flexible_box.h" +#include "third_party/blink/renderer/core/layout/layout_inside_list_marker.h" #include "third_party/blink/renderer/core/layout/layout_list_item.h" -#include "third_party/blink/renderer/core/layout/layout_list_marker.h" +#include "third_party/blink/renderer/core/layout/layout_outside_list_marker.h" #include "third_party/blink/renderer/core/layout/layout_table_caption.h" #include "third_party/blink/renderer/core/layout/layout_table_cell.h" #include "third_party/blink/renderer/core/layout/layout_text.h" @@ -115,10 +116,10 @@ (IsA<HTMLLIElement>(parent) && !parent_style->IsInsideListElement()); if (is_inside) { return CreateObject<LayoutObject, LayoutNGInsideListMarker, - LayoutListMarker>(node, style, legacy); + LayoutInsideListMarker>(node, style, legacy); } return CreateObject<LayoutObject, LayoutNGOutsideListMarker, - LayoutListMarker>(node, style, legacy); + LayoutOutsideListMarker>(node, style, legacy); } LayoutTableCaption* LayoutObjectFactory::CreateTableCaption(
diff --git a/third_party/blink/renderer/core/layout/layout_outside_list_marker.cc b/third_party/blink/renderer/core/layout/layout_outside_list_marker.cc new file mode 100644 index 0000000..4195697 --- /dev/null +++ b/third_party/blink/renderer/core/layout/layout_outside_list_marker.cc
@@ -0,0 +1,14 @@ +// 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. + +#include "third_party/blink/renderer/core/layout/layout_outside_list_marker.h" + +namespace blink { + +LayoutOutsideListMarker::LayoutOutsideListMarker(Element* element) + : LayoutListMarker(element) {} + +LayoutOutsideListMarker::~LayoutOutsideListMarker() = default; + +} // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_outside_list_marker.h b/third_party/blink/renderer/core/layout/layout_outside_list_marker.h new file mode 100644 index 0000000..20ff17c1 --- /dev/null +++ b/third_party/blink/renderer/core/layout/layout_outside_list_marker.h
@@ -0,0 +1,33 @@ +// 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_ + +#include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/layout/layout_list_marker.h" + +namespace blink { + +// Used to layout the list item's outside marker. +// The LayoutOutsideListMarker always has to be a child of a LayoutListItem. +class CORE_EXPORT LayoutOutsideListMarker final : public LayoutListMarker { + public: + explicit LayoutOutsideListMarker(Element*); + ~LayoutOutsideListMarker() override; + + const char* GetName() const override { return "LayoutOutsideListMarker"; } + + private: + bool IsOfType(LayoutObjectType type) const override { + return type == kLayoutObjectOutsideListMarker || + LayoutListMarker::IsOfType(type); + } +}; + +DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutOutsideListMarker, IsOutsideListMarker()); + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_
diff --git a/third_party/blink/renderer/core/layout/svg/BUILD.gn b/third_party/blink/renderer/core/layout/svg/BUILD.gn index 3c0d78b..b01361cc 100644 --- a/third_party/blink/renderer/core/layout/svg/BUILD.gn +++ b/third_party/blink/renderer/core/layout/svg/BUILD.gn
@@ -12,6 +12,8 @@ "layout_svg_container.h", "layout_svg_ellipse.cc", "layout_svg_ellipse.h", + "layout_svg_filter_primitive.cc", + "layout_svg_filter_primitive.h", "layout_svg_foreign_object.cc", "layout_svg_foreign_object.h", "layout_svg_hidden_container.cc", @@ -34,8 +36,6 @@ "layout_svg_resource_container.h", "layout_svg_resource_filter.cc", "layout_svg_resource_filter.h", - "layout_svg_resource_filter_primitive.cc", - "layout_svg_resource_filter_primitive.h", "layout_svg_resource_gradient.cc", "layout_svg_resource_gradient.h", "layout_svg_resource_linear_gradient.cc",
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.cc similarity index 87% rename from third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.cc rename to third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.cc index bbc7bb3..7ab5397 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.cc
@@ -25,12 +25,16 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.h" +#include "third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.h" #include "third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.h" namespace blink { +LayoutSVGFilterPrimitive::LayoutSVGFilterPrimitive( + SVGFilterPrimitiveStandardAttributes* filter_primitive_element) + : LayoutObject(filter_primitive_element) {} + static bool CurrentColorChanged(StyleDifference diff, const StyleColor& color) { return diff.TextDecorationOrColorChanged() && color.IsCurrentColor(); } @@ -51,15 +55,11 @@ element.PrimitiveAttributeChanged(attr_name); } -void LayoutSVGResourceFilterPrimitive::StyleDidChange( - StyleDifference diff, - const ComputedStyle* old_style) { - LayoutSVGHiddenContainer::StyleDidChange(diff, old_style); - +void LayoutSVGFilterPrimitive::StyleDidChange(StyleDifference diff, + const ComputedStyle* old_style) { if (!old_style) return; - DCHECK(GetElement()); - auto& element = To<SVGFilterPrimitiveStandardAttributes>(*GetElement()); + auto& element = To<SVGFilterPrimitiveStandardAttributes>(*GetNode()); const SVGComputedStyle& new_style = StyleRef().SvgStyle(); if (IsA<SVGFEFloodElement>(element) || IsA<SVGFEDropShadowElement>(element)) { CheckForColorChange(element, svg_names::kFloodColorAttr, diff, @@ -80,4 +80,8 @@ } } +void LayoutSVGFilterPrimitive::UpdateLayout() { + ClearNeedsLayout(); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.h b/third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.h similarity index 64% rename from third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.h rename to third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.h index d52bdae9..b0e16f4 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.h
@@ -24,34 +24,42 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_RESOURCE_FILTER_PRIMITIVE_H_ -#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_RESOURCE_FILTER_PRIMITIVE_H_ +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_FILTER_PRIMITIVE_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_FILTER_PRIMITIVE_H_ -#include "third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h" +#include "third_party/blink/renderer/core/layout/layout_object.h" namespace blink { -class LayoutSVGResourceFilterPrimitive final : public LayoutSVGHiddenContainer { - public: - explicit LayoutSVGResourceFilterPrimitive( - SVGElement* filter_primitive_element) - : LayoutSVGHiddenContainer(filter_primitive_element) {} +class SVGFilterPrimitiveStandardAttributes; +class LayoutSVGFilterPrimitive final : public LayoutObject { + public: + explicit LayoutSVGFilterPrimitive(SVGFilterPrimitiveStandardAttributes*); + + private: bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const override { return false; } void StyleDidChange(StyleDifference, const ComputedStyle*) override; + void UpdateLayout() override; - const char* GetName() const override { - return "LayoutSVGResourceFilterPrimitive"; - } + const char* GetName() const override { return "LayoutSVGFilterPrimitive"; } bool IsOfType(LayoutObjectType type) const override { - return type == kLayoutObjectSVGResourceFilterPrimitive || - LayoutSVGHiddenContainer::IsOfType(type); + return type == kLayoutObjectSVG || + type == kLayoutObjectSVGFilterPrimitive || + LayoutObject::IsOfType(type); + } + FloatRect ObjectBoundingBox() const override { return FloatRect(); } + FloatRect VisualRectInLocalSVGCoordinates() const override { + return FloatRect(); + } + FloatRect LocalBoundingBoxRectForAccessibility() const override { + return FloatRect(); } }; } // namespace blink -#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_RESOURCE_FILTER_PRIMITIVE_H_ +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_LAYOUT_SVG_FILTER_PRIMITIVE_H_
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc index 7530f56..75a42df 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
@@ -48,7 +48,7 @@ bool LayoutSVGResourceFilter::IsChildAllowed(LayoutObject* child, const ComputedStyle&) const { - return child->IsSVGResourceFilterPrimitive(); + return child->IsSVGFilterPrimitive(); } void LayoutSVGResourceFilter::RemoveAllClientsFromCache() {
diff --git a/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc b/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc index 52bf790a..214b062 100644 --- a/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc +++ b/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc
@@ -647,9 +647,6 @@ void WriteSVGContainer(WTF::TextStream& ts, const LayoutObject& container, int indent) { - // Currently LayoutSVGResourceFilterPrimitive has no meaningful output. - if (container.IsSVGResourceFilterPrimitive()) - return; WriteStandardPrefix(ts, container, indent); WritePositionAndStyle(ts, container); ts << "\n";
diff --git a/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc b/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc index 98eec5c..fa0576a 100644 --- a/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc +++ b/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc
@@ -136,11 +136,8 @@ if (!diff.HasDifference() || !layout_object.Parent()) return; - // In this case the proper SVGFE*Element will decide whether the modified CSS - // properties require - // a relayout or paintInvalidation. - if (layout_object.IsSVGResourceFilterPrimitive() && !diff.NeedsLayout()) - return; + // LayoutObjects for SVGFE*Element should not be calling this function. + DCHECK(!layout_object.IsSVGFilterPrimitive()); // Dynamic changes of CSS properties like 'clip-path' may require us to // recompute the associated resources for a LayoutObject.
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc index 4dcc533..447f7c8 100644 --- a/third_party/blink/renderer/core/paint/paint_layer.cc +++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -2534,7 +2534,7 @@ } void PaintLayer::UpdateFilterReferenceBox() { - if (!NeedsFilterReferenceBox()) + if (!HasFilterThatMovesPixels()) return; FloatRect reference_box = FloatRect(PhysicalBoundingBoxIncludingStackingChildren( @@ -2548,16 +2548,6 @@ EnsureResourceInfo().SetFilterReferenceBox(reference_box); } -bool PaintLayer::NeedsFilterReferenceBox() const { - if (GetLayoutObject().HasReflection() && GetLayoutObject().IsBox()) - return true; - FilterOperations operations = GetLayoutObject().StyleRef().Filter(); - if (operations.HasBlurOrReferenceFilter()) - return true; - operations = GetLayoutObject().StyleRef().BackdropFilter(); - return !operations.IsEmpty(); -} - FloatRect PaintLayer::FilterReferenceBox() const { DCHECK(IsAllowedToQueryCompositingState()); if (ResourceInfo()) @@ -3485,7 +3475,7 @@ const ComputedStyle& style = GetLayoutObject().StyleRef(); if (style.HasFilter() && style.Filter().HasFilterThatMovesPixels()) return true; - if (style.HasBoxReflect()) + if (GetLayoutObject().HasReflection()) return true; return false; }
diff --git a/third_party/blink/renderer/core/paint/paint_layer.h b/third_party/blink/renderer/core/paint/paint_layer.h index d9526c0..1d195b9 100644 --- a/third_party/blink/renderer/core/paint/paint_layer.h +++ b/third_party/blink/renderer/core/paint/paint_layer.h
@@ -1270,8 +1270,6 @@ bool ShouldApplyTransformToBoundingBox(const PaintLayer& composited_layer, CalculateBoundsOptions) const; - bool NeedsFilterReferenceBox() const; - AncestorDependentCompositingInputs& EnsureAncestorDependentCompositingInputs() const { if (!ancestor_dependent_compositing_inputs_) {
diff --git a/third_party/blink/renderer/core/paint/svg_filter_painter.cc b/third_party/blink/renderer/core/paint/svg_filter_painter.cc index 0f3b3b4..2cf4f70 100644 --- a/third_party/blink/renderer/core/paint/svg_filter_painter.cc +++ b/third_party/blink/renderer/core/paint/svg_filter_painter.cc
@@ -32,19 +32,15 @@ return context_.get(); } -sk_sp<PaintRecord> SVGFilterRecordingContext::EndContent( - const FloatRect& bounds) { +sk_sp<PaintRecord> SVGFilterRecordingContext::EndContent() { // Use the context that contains the filtered content. DCHECK(paint_controller_); DCHECK(context_); - context_->BeginRecording(bounds); paint_controller_->CommitNewDisplayItems(); + sk_sp<PaintRecord> content = + paint_controller_->GetPaintArtifact().GetPaintRecord( + initial_context_.GetPaintController().CurrentPaintChunkProperties()); - paint_controller_->GetPaintArtifact().Replay( - *context_, - initial_context_.GetPaintController().CurrentPaintChunkProperties()); - - sk_sp<PaintRecord> content = context_->EndRecording(); // Content is cached by the source graphic so temporaries can be freed. paint_controller_ = nullptr; context_ = nullptr; @@ -54,7 +50,7 @@ void SVGFilterRecordingContext::Abort() { if (!paint_controller_) return; - EndContent(FloatRect()); + EndContent(); } static void PaintFilteredContent(GraphicsContext& context, @@ -155,7 +151,7 @@ FloatRect bounds = filter->FilterRegion(); if (filter_data->state_ == FilterData::kRecordingContent) { DCHECK(filter->GetSourceGraphic()); - sk_sp<PaintRecord> content = recording_context.EndContent(bounds); + sk_sp<PaintRecord> content = recording_context.EndContent(); paint_filter_builder::BuildSourceGraphic(filter->GetSourceGraphic(), std::move(content), bounds); filter_data->state_ = FilterData::kReadyToPaint;
diff --git a/third_party/blink/renderer/core/paint/svg_filter_painter.h b/third_party/blink/renderer/core/paint/svg_filter_painter.h index 142f60647..7738f2ab 100644 --- a/third_party/blink/renderer/core/paint/svg_filter_painter.h +++ b/third_party/blink/renderer/core/paint/svg_filter_painter.h
@@ -25,7 +25,7 @@ : initial_context_(initial_context) {} GraphicsContext* BeginContent(); - sk_sp<PaintRecord> EndContent(const FloatRect&); + sk_sp<PaintRecord> EndContent(); void Abort(); GraphicsContext& PaintingContext() const { return initial_context_; }
diff --git a/third_party/blink/renderer/core/style/filter_operations.cc b/third_party/blink/renderer/core/style/filter_operations.cc index d3eecfd3..e0f03d3 100644 --- a/third_party/blink/renderer/core/style/filter_operations.cc +++ b/third_party/blink/renderer/core/style/filter_operations.cc
@@ -70,16 +70,6 @@ return true; } -bool FilterOperations::HasBlurOrReferenceFilter() const { - for (const auto& operation : operations_) { - FilterOperation::OperationType type = operation->GetType(); - if (type == FilterOperation::BLUR || type == FilterOperation::REFERENCE) { - return true; - } - } - return false; -} - FloatRect FilterOperations::MapRect(const FloatRect& rect) const { auto accumulate_mapped_rect = [](const FloatRect& rect, const Member<FilterOperation>& op) {
diff --git a/third_party/blink/renderer/core/style/filter_operations.h b/third_party/blink/renderer/core/style/filter_operations.h index 44df3ce..7e1f4f2 100644 --- a/third_party/blink/renderer/core/style/filter_operations.h +++ b/third_party/blink/renderer/core/style/filter_operations.h
@@ -70,8 +70,6 @@ bool HasFilterThatAffectsOpacity() const; bool HasFilterThatMovesPixels() const; - bool HasBlurOrReferenceFilter() const; - void AddClient(SVGResourceClient&) const; void RemoveClient(SVGResourceClient&) const;
diff --git a/third_party/blink/renderer/core/svg/svg_fe_light_element.cc b/third_party/blink/renderer/core/svg/svg_fe_light_element.cc index c0eb5429..80aa829c 100644 --- a/third_party/blink/renderer/core/svg/svg_fe_light_element.cc +++ b/third_party/blink/renderer/core/svg/svg_fe_light_element.cc
@@ -127,7 +127,7 @@ return; LayoutObject* layout_object = parent->GetLayoutObject(); - if (!layout_object || !layout_object->IsSVGResourceFilterPrimitive()) + if (!layout_object || !layout_object->IsSVGFilterPrimitive()) return; SVGElement::InvalidationGuard invalidation_guard(this); @@ -148,7 +148,7 @@ if (!change.ByParser()) { if (ContainerNode* parent = parentNode()) { LayoutObject* layout_object = parent->GetLayoutObject(); - if (layout_object && layout_object->IsSVGResourceFilterPrimitive()) + if (layout_object && layout_object->IsSVGFilterPrimitive()) MarkForLayoutAndParentResourceInvalidation(*layout_object); } }
diff --git a/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc b/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc index 896f685..5654af88 100644 --- a/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc +++ b/third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.cc
@@ -21,7 +21,7 @@ #include "third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.h" -#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter_primitive.h" +#include "third_party/blink/renderer/core/layout/svg/layout_svg_filter_primitive.h" #include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h" #include "third_party/blink/renderer/core/svg/svg_filter_element.h" #include "third_party/blink/renderer/core/svg/svg_length.h" @@ -167,7 +167,7 @@ LayoutObject* SVGFilterPrimitiveStandardAttributes::CreateLayoutObject( const ComputedStyle&, LegacyLayout) { - return new LayoutSVGResourceFilterPrimitive(this); + return new LayoutSVGFilterPrimitive(this); } bool SVGFilterPrimitiveStandardAttributes::LayoutObjectIsNeeded(
diff --git a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_breakdown.idl b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_breakdown.idl index ebc32fc..fb7fc06 100644 --- a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_breakdown.idl +++ b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_breakdown.idl
@@ -8,5 +8,5 @@ dictionary MeasureMemoryBreakdown { unsigned long long bytes; sequence<DOMString> attribution; - DOMString type; + sequence<DOMString> userAgentSpecificType; };
diff --git a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_delegate.cc b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_delegate.cc index 087994c98..d669385 100644 --- a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_delegate.cc +++ b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_delegate.cc
@@ -153,11 +153,11 @@ } MeasureMemoryBreakdown* CreateMeasureMemoryBreakdown(size_t bytes, - const String& type, + const Vector<String>& type, const String& url) { MeasureMemoryBreakdown* result = MeasureMemoryBreakdown::Create(); result->setBytes(bytes); - result->setType(type); + result->setUserAgentSpecificType(type); result->setAttribution(url.length() ? Vector<String>{url} : Vector<String>()); return result; } @@ -191,16 +191,20 @@ HeapHashMap<Member<const Frame>, size_t> per_frame( GroupByFrame(frame, context_sizes)); size_t attributed_size = 0; + const String kWindow("Window"); + const String kJS("JS"); for (const auto& it : per_frame) { attributed_size += it.value; - breakdown.push_back( - CreateMeasureMemoryBreakdown(it.value, "window/js", GetUrl(it.key))); + breakdown.push_back(CreateMeasureMemoryBreakdown( + it.value, Vector<String>{kWindow, kJS}, GetUrl(it.key))); } + const String kDetached("Detached"); + const String kShared("Shared"); size_t detached_size = total_size - attributed_size; - breakdown.push_back( - CreateMeasureMemoryBreakdown(detached_size, "window/js/detached", "")); - breakdown.push_back( - CreateMeasureMemoryBreakdown(unattributed_size, "window/js/shared", "")); + breakdown.push_back(CreateMeasureMemoryBreakdown( + detached_size, Vector<String>{kWindow, kJS, kDetached}, "")); + breakdown.push_back(CreateMeasureMemoryBreakdown( + unattributed_size, Vector<String>{kWindow, kJS, kShared}, "")); result->setBreakdown(breakdown); v8::Local<v8::Promise::Resolver> promise_resolver = promise_resolver_.NewLocal(isolate_);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl index 868b9c0..8c3ca1e7 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.idl
@@ -15,6 +15,6 @@ sequence<RTCRtpSynchronizationSource> getSynchronizationSources(); sequence<RTCRtpContributingSource> getContributingSources(); [CallWith=ScriptState] Promise<RTCStatsReport> getStats(); - [RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedAudioStreams(); - [RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedVideoStreams(); + [Measure, RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedAudioStreams(); + [Measure, RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedVideoStreams(); };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl index 0be101d..70517c3 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.idl
@@ -15,6 +15,6 @@ [Measure] readonly attribute RTCDTMFSender? dtmf; [Measure, RaisesException] void setStreams(MediaStream... streams); [CallWith=ScriptState] Promise<RTCStatsReport> getStats(); - [RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedAudioStreams(); - [RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedVideoStreams(); + [Measure, RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedAudioStreams(); + [Measure, RuntimeEnabled=RTCInsertableStreams, CallWith=ScriptState, RaisesException] RTCInsertableStreams createEncodedVideoStreams(); };
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc index 6fb4415..8cc3133 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc
@@ -274,9 +274,9 @@ mojom::blink::FetchEventPreloadHandlePtr preload_handle) { DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_); auto web_preload_handle = std::make_unique<WebFetchEventPreloadHandle>(); - web_preload_handle->url_loader = preload_handle->url_loader.PassPipe(); + web_preload_handle->url_loader = std::move(preload_handle->url_loader); web_preload_handle->url_loader_client_receiver = - preload_handle->url_loader_client_receiver.PassPipe(); + std::move(preload_handle->url_loader_client_receiver); Client().SetupNavigationPreload(fetch_event_id, url, std::move(web_preload_handle)); }
diff --git a/third_party/blink/renderer/modules/storage/storage_controller.h b/third_party/blink/renderer/modules/storage/storage_controller.h index 42afea9..3deb45c0 100644 --- a/third_party/blink/renderer/modules/storage/storage_controller.h +++ b/third_party/blink/renderer/modules/storage/storage_controller.h
@@ -44,8 +44,7 @@ // // The LocalStorage StorageNamespace object is owned internally, and // StorageController delegates the following methods to that namespace: -// GetLocalStorageArea, GetWebLocalStorageArea, -// AddLocalStorageInspectorStorageAgent, +// GetLocalStorageArea, AddLocalStorageInspectorStorageAgent, // RemoveLocalStorageInspectorStorageAgent, DidDispatchLocalStorageEvent class MODULES_EXPORT StorageController : public mojom::blink::DomStorageClient { USING_FAST_MALLOC(StorageController);
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl index 7491acde..d396fb7 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl +++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
@@ -31,13 +31,20 @@ Exposed=Window ] interface AudioBuffer { [RaisesException, Measure] constructor(AudioBufferOptions options); - readonly attribute long length; // in sample-frames + readonly attribute unsigned long length; // in sample-frames readonly attribute double duration; // in seconds readonly attribute float sampleRate; // in sample-frames per second // Channel access readonly attribute unsigned long numberOfChannels; - [HighEntropy, Measure, RaisesException] Float32Array getChannelData(unsigned long channelIndex); - [HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long bufferOffset = 0); - [RaisesException] void copyToChannel(Float32Array source, long channelNumber, optional unsigned long bufferOffset = 0); + [HighEntropy, Measure, RaisesException] Float32Array getChannelData( + unsigned long channelIndex); + [HighEntropy, Measure, RaisesException] void copyFromChannel( + Float32Array destination, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); + [RaisesException] void copyToChannel( + Float32Array source, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); };
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc index e5f6499..ffcadb1 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_swap_chain.cc
@@ -21,7 +21,7 @@ usage_(AsDawnEnum<WGPUTextureUsage>(descriptor->usage())) { // TODO: Use label from GPUObjectDescriptorBase. swap_buffers_ = base::AdoptRef(new WebGPUSwapBufferProvider( - this, GetDawnControlClient(), usage_, + this, GetDawnControlClient(), device_->GetClientID(), usage_, AsDawnEnum<WGPUTextureFormat>(descriptor->format()))); } @@ -66,8 +66,8 @@ return texture_; } - WGPUTexture dawn_client_texture = swap_buffers_->GetNewTexture( - device_->GetClientID(), context_->CanvasSize()); + WGPUTexture dawn_client_texture = + swap_buffers_->GetNewTexture(context_->CanvasSize()); DCHECK(dawn_client_texture); texture_ = MakeGarbageCollected<GPUTexture>(device_, dawn_client_texture); return texture_;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc index 02e8245..ee8aba5 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
@@ -778,7 +778,7 @@ if (ShouldUseChromiumImage()) { // A CHROMIUM_image backed texture requires a specialized set of parameters // on OSX. - texture_target_ = GC3D_TEXTURE_RECTANGLE_ARB; + texture_target_ = gpu::GetPlatformSpecificTextureTarget(); } #endif
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc index 44a580d..2ab22233 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
@@ -29,10 +29,12 @@ WebGPUSwapBufferProvider::WebGPUSwapBufferProvider( Client* client, scoped_refptr<DawnControlClientHolder> dawn_control_client, + uint64_t device_client_id, WGPUTextureUsage usage, WGPUTextureFormat format) : dawn_control_client_(dawn_control_client), client_(client), + device_client_id_(device_client_id), usage_(usage), format_(WGPUFormatToViz(format)) { // Create a layer that will be used by the canvas and will ask for a @@ -82,8 +84,7 @@ neutered_ = true; } -WGPUTexture WebGPUSwapBufferProvider::GetNewTexture(uint64_t device_client_id, - const IntSize& size) { +WGPUTexture WebGPUSwapBufferProvider::GetNewTexture(const IntSize& size) { DCHECK(!current_swap_buffer_ && !dawn_control_client_->IsDestroyed()); gpu::webgpu::WebGPUInterface* webgpu = dawn_control_client_->GetInterface(); @@ -110,13 +111,13 @@ // Associate the mailbox to a dawn_wire client DawnTexture object gpu::webgpu::ReservedTexture reservation = - webgpu->ReserveTexture(device_client_id); + webgpu->ReserveTexture(device_client_id_); DCHECK(reservation.texture); wire_texture_id_ = reservation.id; wire_texture_generation_ = reservation.generation; webgpu->AssociateMailbox( - device_client_id, 0, reservation.id, reservation.generation, usage_, + device_client_id_, 0, reservation.id, reservation.generation, usage_, reinterpret_cast<GLbyte*>(¤t_swap_buffer_->mailbox)); // When the page request a texture it means we'll need to present it on the @@ -144,7 +145,8 @@ // to the texture are errors. gpu::webgpu::WebGPUInterface* webgpu = dawn_control_client_->GetInterface(); DCHECK_NE(wire_texture_id_, 0u); - webgpu->DissociateMailbox(wire_texture_id_, wire_texture_generation_); + webgpu->DissociateMailbox(device_client_id_, wire_texture_id_, + wire_texture_generation_); // Make the compositor wait on previous Dawn commands. webgpu->GenUnverifiedSyncTokenCHROMIUM(
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h index a93c9db..e1a6ae4 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h +++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h
@@ -35,13 +35,14 @@ WebGPUSwapBufferProvider( Client* client, scoped_refptr<DawnControlClientHolder> dawn_control_client, + uint64_t device_client_id, WGPUTextureUsage usage, WGPUTextureFormat format); ~WebGPUSwapBufferProvider() override; cc::Layer* CcLayer(); void Neuter(); - WGPUTexture GetNewTexture(uint64_t device_client_id, const IntSize& size); + WGPUTexture GetNewTexture(const IntSize& size); // cc::TextureLayerClient implementation. bool PrepareTransferableResource( @@ -81,6 +82,7 @@ scoped_refptr<DawnControlClientHolder> dawn_control_client_; Client* client_; + uint64_t device_client_id_; scoped_refptr<cc::TextureLayer> layer_; bool neutered_ = false;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc index 7f09077..19100740 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc
@@ -58,10 +58,15 @@ WebGPUSwapBufferProviderForTests( bool* alive, Client* client, + uint64_t client_device_id_, scoped_refptr<DawnControlClientHolder> dawn_control_client, WGPUTextureUsage usage, WGPUTextureFormat format) - : WebGPUSwapBufferProvider(client, dawn_control_client, usage, format), + : WebGPUSwapBufferProvider(client, + dawn_control_client, + client_device_id_, + usage, + format), alive_(alive) {} ~WebGPUSwapBufferProviderForTests() override { *alive_ = false; } @@ -83,13 +88,13 @@ dawn_control_client_ = base::MakeRefCounted<DawnControlClientHolder>(std::move(provider)); + + static const uint64_t kDeviceClientID = 1; provider_ = base::MakeRefCounted<WebGPUSwapBufferProviderForTests>( - &provider_alive_, &client_, dawn_control_client_, + &provider_alive_, &client_, kDeviceClientID, dawn_control_client_, WGPUTextureUsage_OutputAttachment, WGPUTextureFormat_RGBA8Unorm); } - const static uint64_t kDeviceClientID = 1; - scoped_refptr<DawnControlClientHolder> dawn_control_client_; MockWebGPUInterface* webgpu_; viz::TestSharedImageInterface* sii_; @@ -119,17 +124,17 @@ // Produce resources. EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation1)); - provider_->GetNewTexture(kDeviceClientID, kSize); + provider_->GetNewTexture(kSize); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource1, &release_callback1)); EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation2)); - provider_->GetNewTexture(kDeviceClientID, kSize); + provider_->GetNewTexture(kSize); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource2, &release_callback2)); EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation3)); - provider_->GetNewTexture(kDeviceClientID, kSize); + provider_->GetNewTexture(kSize); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource3, &release_callback3)); @@ -157,7 +162,7 @@ // Produce one resource of size kSize. EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation)); - provider_->GetNewTexture(kDeviceClientID, static_cast<IntSize>(kSize)); + provider_->GetNewTexture(static_cast<IntSize>(kSize)); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource, &release_callback)); EXPECT_EQ(static_cast<gfx::Size>(kSize), sii_->MostRecentSize()); @@ -165,7 +170,7 @@ // Produce one resource of size kOtherSize. EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation)); - provider_->GetNewTexture(kDeviceClientID, static_cast<IntSize>(kOtherSize)); + provider_->GetNewTexture(static_cast<IntSize>(kOtherSize)); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource, &release_callback)); EXPECT_EQ(static_cast<gfx::Size>(kOtherSize), sii_->MostRecentSize()); @@ -173,7 +178,7 @@ // Produce one resource of size kSize again. EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation)); - provider_->GetNewTexture(kDeviceClientID, static_cast<IntSize>(kSize)); + provider_->GetNewTexture(static_cast<IntSize>(kSize)); EXPECT_TRUE(provider_->PrepareTransferableResource(nullptr, &resource, &release_callback)); EXPECT_EQ(static_cast<gfx::Size>(kSize), sii_->MostRecentSize()); @@ -191,7 +196,7 @@ // Produce the first resource, check that WebGPU will wait for the creation of // the shared image EXPECT_CALL(*webgpu_, ReserveTexture(_)).WillOnce(Return(reservation)); - provider_->GetNewTexture(kDeviceClientID, static_cast<IntSize>(kSize)); + provider_->GetNewTexture(static_cast<IntSize>(kSize)); EXPECT_EQ(sii_->MostRecentGeneratedToken(), webgpu_->most_recent_waited_token);
diff --git a/third_party/blink/renderer/platform/mojo/BUILD.gn b/third_party/blink/renderer/platform/mojo/BUILD.gn index d6499b7..23ffc07 100644 --- a/third_party/blink/renderer/platform/mojo/BUILD.gn +++ b/third_party/blink/renderer/platform/mojo/BUILD.gn
@@ -18,3 +18,38 @@ ] public_deps = [ "//mojo/public/cpp/base" ] } + +mojom_cpp_typemap("url_typemap") { + types = [ + { + mojom = "url.mojom.Url" + cpp = "::blink::KURL" + force_serialize = true + }, + ] + public_headers = [ + "//third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h", + "//third_party/blink/renderer/platform/weborigin/kurl.h", + "//third_party/blink/renderer/platform/weborigin/kurl_hash.h", + ] + + # NOTE: Consumers of this typemap must themselves depend on platform. + public_deps = [ "//url" ] +} + +mojom_cpp_typemap("origin_typemap") { + types = [ + { + mojom = "url.mojom.Origin" + cpp = "::scoped_refptr<const ::blink::SecurityOrigin>" + nullable_is_same_type = true + }, + ] + public_headers = [ + "//third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h", + "//third_party/blink/renderer/platform/weborigin/security_origin.h", + ] + + # NOTE: Consumers of this typemap must themselves depend on platform. + public_deps = [ "//url" ] +}
diff --git a/third_party/blink/renderer/platform/mojo/blink_typemaps.gni b/third_party/blink/renderer/platform/mojo/blink_typemaps.gni index 5b1506a..434a7cb 100644 --- a/third_party/blink/renderer/platform/mojo/blink_typemaps.gni +++ b/third_party/blink/renderer/platform/mojo/blink_typemaps.gni
@@ -22,8 +22,6 @@ "//third_party/blink/renderer/platform/blob/serialized_blob.typemap", "//third_party/blink/renderer/platform/cookie/canonical_cookie.typemap", "//third_party/blink/renderer/platform/mojo/fetch_api_request_headers.typemap", - "//third_party/blink/renderer/platform/mojo/kurl.typemap", - "//third_party/blink/renderer/platform/mojo/security_origin.typemap", "//third_party/blink/renderer/platform/mojo/string.typemap", "//third_party/blink/renderer/platform/mojo/time.typemap", "//third_party/blink/renderer/platform/network/encoded_form_data_element.typemap",
diff --git a/third_party/blink/renderer/platform/mojo/kurl.typemap b/third_party/blink/renderer/platform/mojo/kurl.typemap deleted file mode 100644 index 8a25d18..0000000 --- a/third_party/blink/renderer/platform/mojo/kurl.typemap +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -mojom = "//url/mojom/url.mojom" -public_headers = [ - "//third_party/blink/renderer/platform/weborigin/kurl.h", - "//third_party/blink/renderer/platform/weborigin/kurl_hash.h", -] -traits_headers = - [ "//third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h" ] - -# Note: consumers of this typemap must themselves depend on platform. -deps = [ - "//mojo/public/cpp/bindings", - "//url", -] -type_mappings = [ "url.mojom.Url=::blink::KURL[force_serialize]" ]
diff --git a/third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h b/third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h index bcd6a69..f50dd84 100644 --- a/third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h +++ b/third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h
@@ -5,15 +5,16 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_KURL_MOJOM_TRAITS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_KURL_MOJOM_TRAITS_H_ +#include "mojo/public/cpp/bindings/string_traits_wtf.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" -#include "url/mojom/url.mojom-blink-forward.h" +#include "url/mojom/url.mojom-shared.h" #include "url/url_constants.h" namespace mojo { template <> -struct StructTraits<url::mojom::blink::Url::DataView, ::blink::KURL> { +struct StructTraits<url::mojom::UrlDataView, ::blink::KURL> { static WTF::String url(const ::blink::KURL& blinkUrl) { if (!blinkUrl.IsValid() || blinkUrl.GetString().length() > url::kMaxURLChars) { @@ -22,7 +23,7 @@ return blinkUrl.GetString(); } - static bool Read(url::mojom::blink::Url::DataView data, ::blink::KURL* out) { + static bool Read(url::mojom::UrlDataView data, ::blink::KURL* out) { WTF::String urlString; if (!data.ReadUrl(&urlString)) return false;
diff --git a/third_party/blink/renderer/platform/mojo/security_origin.typemap b/third_party/blink/renderer/platform/mojo/security_origin.typemap deleted file mode 100644 index f94a2bb..0000000 --- a/third_party/blink/renderer/platform/mojo/security_origin.typemap +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -mojom = "//url/mojom/origin.mojom" -public_headers = - [ "//third_party/blink/renderer/platform/weborigin/security_origin.h" ] -traits_headers = [ - "//third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h", -] - -# Note: consumers of this typemap must themselves depend on platform. -deps = [ - "//mojo/public/cpp/bindings", - "//url", -] -type_mappings = [ "url.mojom.Origin=::scoped_refptr<const ::blink::SecurityOrigin>[nullable_is_same_type]" ]
diff --git a/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h b/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h index 7a420cab..925965d0 100644 --- a/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h +++ b/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h
@@ -5,10 +5,12 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_SECURITY_ORIGIN_MOJOM_TRAITS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_SECURITY_ORIGIN_MOJOM_TRAITS_H_ +#include "mojo/public/cpp/base/unguessable_token_mojom_traits.h" +#include "mojo/public/cpp/bindings/string_traits_wtf.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" -#include "url/mojom/origin.mojom-blink-forward.h" +#include "url/mojom/origin.mojom-shared.h" #include "url/scheme_host_port.h" namespace mojo { @@ -45,7 +47,7 @@ }; template <> -struct StructTraits<url::mojom::blink::Origin::DataView, +struct StructTraits<url::mojom::OriginDataView, scoped_refptr<const ::blink::SecurityOrigin>> { static WTF::String scheme( const scoped_refptr<const ::blink::SecurityOrigin>& origin) { @@ -65,7 +67,7 @@ const scoped_refptr<const ::blink::SecurityOrigin>& origin) { return UrlOriginAdapter::nonce_if_opaque(origin); } - static bool Read(url::mojom::blink::Origin::DataView data, + static bool Read(url::mojom::OriginDataView data, scoped_refptr<const ::blink::SecurityOrigin>* out) { // This implementation is very close to // SecurityOrigin::CreateFromUrlOrigin, so keep in sync if modifications
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index dd887f2..91988175 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1464,6 +1464,8 @@ // Enables the use of Insertable Streams. { name: "RTCInsertableStreams", + origin_trial_feature_name: "RTCInsertableStreams", + status: "experimental", }, // Enables the use of the RTCQuicTransport object. { @@ -1691,6 +1693,7 @@ { name: "TransferableStreams", status: "experimental", + implied_by: ["RTCInsertableStreams"], }, // This is conditionally set if the platform supports translation. {
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index e58dbab..835c3c9a 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -6346,6 +6346,10 @@ crbug.com/1040059 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html [ Pass Crash ] crbug.com/1040059 external/wpt/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html [ Pass Crash ] crbug.com/1040059 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html [ Pass Crash ] +crbug.com/1040059 external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html [ Pass Crash ] + +# COOP timeout failure. +crbug.com/1046698 external/wpt/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Timeout ] # Broken in https://chromium-review.googlesource.com/c/chromium/src/+/1636716 crbug.com/963183 http/tests/devtools/sources/debugger-breakpoints/disable-breakpoints.js [ Pass Failure Timeout ] @@ -6562,9 +6566,6 @@ crbug.com/1041851 [ Mac ] external/wpt/bluetooth/idl/idlharness.tentative.https.window.html [ Pass Timeout ] crbug.com/1041851 [ Win10 ] external/wpt/bluetooth/idl/idlharness.tentative.https.window.html [ Pass Timeout ] -# COOP timeout failure. -crbug.com/1046698 external/wpt/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Timeout ] - # Sheriff 2020-01-29 crbug.com/1041847 virtual/gpu/fast/canvas/color-space/canvas-colorManaged-convertToBlob-roundtrip.html [ Pass Timeout ] crbug.com/995663 [ Linux ] http/tests/media/autoplay/document-user-activation-cross-origin-feature-policy-header.html [ Pass Failure Timeout ] @@ -6746,9 +6747,6 @@ crbug.com/1058073 [ Mac ] http/tests/devtools/service-workers/sw-navigate-useragent.js [ Pass Failure ] crbug.com/1058137 virtual/threaded/http/tests/devtools/tracing/timeline-paint/timeline-paint.js [ Pass Failure ] -# Sheriff 2020-03-04 -crbug.com/1058244 [ Mac ] virtual/compositor_threaded_scrollbar_scrolling/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html [ Pass Failure ] - # Ecosystem-Infra Sheriff 2020-03-04 crbug.com/1058403 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https.html [ Failure ] @@ -6773,7 +6771,7 @@ # Sheriff 2020-03-09 crbug.com/1059123 http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces-worklet-scope.html [ Pass Failure ] -crbug.com/1059123 virtual/omt-worker-fetch/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces-worklet-scope.html [ Pass Failure ] +crbug.com/1059123 virtual/omt-worker-fetch/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces-worklet-scope.html [ Pass Failure Timeout ] crbug.com/1059123 virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces-worklet-scope.html [ Pass Failure ] # Temporarily disable to land https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/1981175 @@ -6783,3 +6781,261 @@ crbug.com/1056384 third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js [ Pass Failure ] crbug.com/1056384 third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js [ Pass Failure ] crbug.com/1056384 third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-search.js [ Pass Failure ] + +# Sheriff 2020-03-10 +crbug.com/1060175 [ Mac ] accessibility/aom-click-action.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] accessibility/aom-contextmenu-action.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] accessibility/scroll-div-horiz-sends-notification.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] editing/pasteboard/clipboard-image-paste-types.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] editing/pasteboard/drag-selected-image-to-contenteditable.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/css/selectors/hover-002-manual.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/inert/inert-retargeting-iframe.tentative.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/inert/inert-retargeting.tentative.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/measure-memory/measure-memory.tentative.window.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/pointerevents/pointerevent_disabled_form_control.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/pointerevents/pointerevent_suppress_compat_events_on_click.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/svg/interact/scripted/composed.window.svg [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/web-animations/interfaces/Animation/style-change-events.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/web-locks/query-ordering.tentative.https.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/canvas/OffscreenCanvas-Bitmaprenderer-toBlob.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/MutationObserver/mutation-callback-dead-context-crash.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/Window/window-open-no-multiple-windows.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/icon-url-property.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/timer-throttling-out-of-view-cross-origin-page.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/title-text-property-3.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/title-text-property-assigning-empty-string.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/dom/title-text-property.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/events/wheel/wheelevent-in-text-node.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/autofocus-focus-only-once.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/calendar-picker/week-picker-appearance.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/checkbox/checkbox-focus-by-mouse.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/date-multiple-fields/date-multiple-fields-validity-badinput.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/mailto/advanced-get.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/mailto/advanced-put.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/forms/text/input-appearance-autocomplete-suggestion-maxlength.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/frames/sandboxed-iframe-autofocus-denied.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/history/change-viewport-height-in-onpopstate.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/layers/clip-rects-transformed-2.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/loader/scroll-restore-on-back-ordering.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/loader/stateobjects/pushstate-clears-forward-history.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/mediastream/MediaStream-onactive-oninactive.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/preloader/is-preloaded-after-load.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/scroll-snap/snaps-after-touchpad-scrolling.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/spatial-navigation/snav-start-at-document-bottom.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/workers/worker-exception-during-navigation.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fast/xsl/xslt-mismatched-tags-in-xslt.xml [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fullscreen/full-screen-iframe-allowed-video.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fullscreen/full-screen-inline-split-crash.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] fullscreen/video-specified-size.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] hid/hidDevice_deviceInfo.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] html/details_summary/details-remove-summary-1-and-click.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] html/dialog/modal-dialog-blocks-mouse-events.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/asmjs/asm-warnings.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/history/push-state-in-grandchild-after-reload.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/inspector-protocol/network/navigate-iframe-out2in.js [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/loading/bad-scheme-subframe.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/loading/remove-child-triggers-parser.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/isolatedWorld/bypass-main-world-csp-for-inline-script.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/isolatedWorld/bypass-main-world-csp-for-inline-style.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/isolatedWorld/isolated-world-eval-csp.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/mixedContent/empty-url-plugin-in-frame.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/mixedContent/insecure-plugin-in-iframe.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/promise-access-control-allow.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/security/vibration/vibrate-in-same-origin-iframe-with-user-gesture-allowed.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] http/tests/xmlhttprequest/cross-origin-no-credential-prompt.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] images/feature-policy-oversized-images-responsive-image.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] images/feature-policy-oversized-images-styles.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] images/feature-policy-oversized-images.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] media/audio-no-installed-engines.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] media/controls/click-and-drag-on-overflow-menu-doesnt-close.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] plugins/focus-change-1-no-change.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] plugins/mouse-click-iframe-to-plugin.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] plugins/plugin-persists.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] plugins/plugin-remove-subframe.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] plugins/refcount-leaks.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] rootscroller/fixed-chaining-with-implicit.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] storage/websql/open-database-over-quota.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] storage/websql/open-database-set-empty-version.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/audio-service/http/tests/media/gc-while-network-loading.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/cascade/fast/forms/date/date-appearance-basic.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-click.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-key-enter.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-key-space.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-webkitdirectory-click.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-webkitdirectory-key-enter.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/file/file-input-webkitdirectory-key-space.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/form-submission-create-crash.xhtml [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/mailto/advanced-put.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/form-controls-refresh-disabled/fast/forms/mailto/formenctype-attribute-input-2.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/isolated_world_csp/http/tests/security/isolatedWorld/websocket/isolated-world-websocket-csp.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/omt-worker-fetch/external/wpt/workers/modules/shared-worker-import-csp.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/omt-worker-fetch/fast/workers/worker-exception-during-navigation.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-compositing-descendant.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/threaded-prefer-compositing/fast/scrolling/no-hover-during-scroll.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/threaded-prefer-compositing/fast/scrolling/percentage-mousewheel-scroll.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-slow.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-zero.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/web-components-v0-disabled/fast/dom/Document/xml-document-focus.xml [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/web-components-v0-disabled/fast/dom/MutationObserver/mutation-callback-dead-context-crash.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/web-components-v0-disabled/fast/dom/icon-url-property.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/web-components-v0-disabled/fast/dom/title-text-property-2.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] virtual/web-components-v0-disabled/fast/dom/title-text-property-3.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] wpt_internal/std-switch/tentative/focus.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Mac ] wpt_internal/webxr/xrSession_dataProviderDisconnect_inline.https.html [ Pass Failure Timeout ] +crbug.com/1060175 [ Win ] external/wpt/animation-worklet/worklet-animation-pause-resume.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/animation-worklet/worklet-animation-with-non-ascii-name.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/abspos/abspos-containing-block-initial-004d.xht [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/cascade-import/cascade-import-dynamic-003.xht [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/floats-clear/clear-applies-to-012.xht [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/floats/float-nowrap-5.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/floats/floats-wrap-bfc-003-right-table.xht [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/CSS2/floats/floats-wrap-top-below-inline-003l.xht [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/auto-block-size/negative.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/baseline/child-baseline.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/baseline/flex-baseline.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/child-constraints/available-block-size-htb-vrl.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/child-constraints/fixed-block-size-vrl.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/child-constraints/percentage-size-quirks-mode.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/constraints-data.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/constraints/fixed-block-size-block-none.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/constraints/fixed-block-size-percentage.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/constraints/fixed-inline-size-absolute-left-right.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/edges/padding-vrl.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/fallback-intrinsic-sizes/bad-return.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/fallback-layout/bad-return.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/fallback-layout/error.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/fallback-layout/unresolved-promise.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/intrinsic-sizes/child-replaced-percentage-02.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/intrinsic-sizes/child-size-03.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/intrinsic-sizes/negative-max.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/layout-child/inlines.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/layout-child/text-01.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/position-fragment/vrl-rtl.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/css/css-layout-api/style-map-multi.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/feature-policy/experimental-features/vertical-scroll-touch-action-manual.tentative.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/html/rendering/non-replaced-elements/tables/table-width-s.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/native-file-system/native_FileSystemWritableFileStream-manual.https.tentative.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/shadow-dom/layout-slot-no-longer-assigned.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/shadow-dom/untriaged/shadow-trees/nested-shadow-trees/nested_tree_reftest.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/storage-access-api/requestStorageAccess.sub.window.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/svg/linking/reftests/use-hidden-attr-change.html [ Pass Failure ] +crbug.com/1060175 [ Win ] external/wpt/web-animations/interfaces/Animation/style-change-events.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/block/basic/adding-near-anonymous-block.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/block/basic/quirk-percent-height-table-cell.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/block/positioning/vertical-lr/005.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/body-propagation/background-image/009-xhtml.xhtml [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/css/namespaces/namespaces-invalid-at.xml [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/dom/outerText.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/dom/scroll-reveal-left-overflow.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/events/touch/gesture/gesture-tap-frame-overlap.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/forms/button/button-enter-click.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/lists/007.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/lists/list-marker-padding-overflow-hidden.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/mediastream/MediaStream-onactive-oninactive.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fast/scrolling/events/scrollend-event-fired-to-window.html [ Pass Failure ] +crbug.com/1060175 [ Win ] fullscreen/full-screen-iframe-allowed-video.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/accessibility/slow-document-load.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/css/css-resources-referrer-srcdoc.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/css/object-fit-delayed-img-svg.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/css/pending-stylesheet-offset-width.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/csspaint/entire-canvas-visible-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/csspaint/hidpi/geometry-with-hidpi-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/csspaint/line-dash-scale-with-page-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/csspaint/shadow-scale-with-page-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/csspaint/transform-with-page-zoom-002.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/devtools/portals/portals-elements-nesting-after-adoption.js [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/images/restyle-decode-error.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/inspector-protocol/target/target-expose-devtools-protocol.js [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/media/controls/toggle-class-with-state-source-buffer.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/navigation/replacestate-base-illegal.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/origin_trials/feature-policy-reporting/feature-policy-reporting-no-trial.php [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/preload/warning/request-method.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/contentSecurityPolicy/object-src-none-allowed.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/contentSecurityPolicy/source-list-parsing-08.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/cross-origin-xsl-BLOCKED.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/local-image-from-remote-whitelisted.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/mixedContent/insecure-css-in-iframe.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/mixedContent/insecure-image-in-main-frame-allowed.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/mixedContent/insecure-plugin-in-iframe.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/mixedContent/insecure-script-in-iframe.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/referrer-policy-conflicting-policies-image-set.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/security/referrer-policy-conflicting-policies.html [ Pass Failure ] +crbug.com/1060175 [ Win ] http/tests/serviceworker/fetch-script-onerror.html [ Pass Failure ] +crbug.com/1060175 [ Win ] ietestcenter/css3/bordersbackgrounds/background-color-border-box.htm [ Pass Failure ] +crbug.com/1060175 [ Win ] ietestcenter/css3/bordersbackgrounds/background_repeat_space_content_box.htm [ Pass Failure ] +crbug.com/1060175 [ Win ] inspector-protocol/input/dispatchMouseEvent-emulated-viewport.js [ Pass Failure ] +crbug.com/1060175 [ Win ] media/video-persistence.html [ Pass Failure ] +crbug.com/1060175 [ Win ] media/video-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/audio-service/http/tests/media/controls/toggle-class-with-state-source-buffer.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/audio-service/media/picture-in-picture/v2/detached-iframe.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/audio-service/media/video-persistence.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/geometry-border-image-001.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/geometry-border-image-004.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/invalid-image-constructor-error.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/parse-input-arguments-015.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/registered-property-interpolation-003.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/external/wpt/css/css-paint-api/registered-property-value-010.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/fast/backgrounds/mask-composite.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/fast/forms/date/date-appearance-basic.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/fast/forms/datetimelocal/datetimelocal-appearance-basic.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/cascade/fast/forms/month/month-appearance-basic.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/compositor_threaded_scrollbar_scrolling/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/gpu-rasterization/images/feature-policy-oversized-images-edge-cases.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/gpu-rasterization/images/feature-policy-oversized-images-styles.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/gpu/fast/canvas/OffscreenCanvas-2d-pattern.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/custom-property-animation-on-main-thread.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/geometry-background-image-002.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/geometry-border-image-001.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/geometry-border-image-004.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/geometry-border-image-005.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/invalid-image-paint-error.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/non-registered-property-value.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/overdraw.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/paint2d-composite.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/paint2d-image.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/paint2d-paths.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/parse-input-arguments-002.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/parse-input-arguments-005.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/parse-input-arguments-009.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/parse-input-arguments-012.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/parse-input-arguments-015.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-001.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-003.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-004.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-007.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-008.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-interpolation-009.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-invalidation-002.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-stylemap.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-007.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-009.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-011.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-013.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-014.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-017.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/registered-property-value-018.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/setTransform-002.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/setTransform-003.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/setTransform-004.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/valid-image-after-load.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/valid-image-before-load.https.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/http/tests/csspaint/border-color.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/off-main-thread-css-paint/http/tests/csspaint/line-dash-scale-with-page-zoom.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/threaded-prefer-compositing/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/threaded/fast/scroll-snap/snaps-after-scrollbar-scrolling.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/web-components-v0-disabled/fast/dom/HTMLDocument/set-focus-on-valid-element.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/web-components-v0-disabled/html/sections/remove-body-during-body-replacement2.html [ Pass Failure ] +crbug.com/1060175 [ Win ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Pass Failure ] +crbug.com/1060175 [ Win ] wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any.html [ Pass Failure ] +crbug.com/1060175 [ Win ] wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any.worker.html [ Pass Failure ] +crbug.com/1060175 [ Win ] wpt_internal/virtual-scroller/large-child-comment.html [ Pass Failure ] +crbug.com/1060175 [ Win ] wpt_internal/webxr/xr_view_projection_detached.https.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/editing/execCommand/create-list-1-expected.txt b/third_party/blink/web_tests/editing/execCommand/create-list-1-expected.txt index 613c7d3..8dfa753 100644 --- a/third_party/blink/web_tests/editing/execCommand/create-list-1-expected.txt +++ b/third_party/blink/web_tests/editing/execCommand/create-list-1-expected.txt
@@ -19,7 +19,7 @@ LayoutBR {BR} at (99,14) size 0x0 LayoutBlockFlow {OL} at (0,34) size 784x18 LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker {::marker} at (-20,0) size 16x18 + LayoutOutsideListMarker {::marker} at (-20,0) size 16x18 LayoutBlockFlow (anonymous) at (0,68) size 784x18 LayoutText {#text} at (0,0) size 102x18 text run at (0,0) width 102: "Paragraph Two."
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json index 09ad524..fe8928d3 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json
@@ -522551,7 +522551,7 @@ "support" ], "interfaces/webxr.idl": [ - "6734f5c209216d6912bdebeadd4afe2fb7dd728e", + "e95acca7ca3d1f8170cd0fd28d0281581fb59544", "support" ], "interfaces/worklets.idl": [ @@ -605715,11 +605715,11 @@ "testharness" ], "webxr/idlharness.https.window-expected.txt": [ - "17b7f40d2c74bb2180dbfe378a026447843cda2c", + "9599044465cb8e464934cc227fc0e85902dec206", "support" ], "webxr/idlharness.https.window.js": [ - "3e54e367787cb95dada398790fe23b10174df29f", + "04b2e3d91eb38acb512ec469b1bb261d8eb625b2", "testharness" ], "webxr/navigator_xr_sameObject.https.html": [
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/none.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/none.https.html index 5485259..e603753 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/none.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/none.https.html
@@ -84,8 +84,6 @@ assert_equals(win, null); }, `"require-corp" top-level noopener popup: navigating to "none" should succeed`); -// CORP is checked because COEP of the frame is "require-corp". The parent -// frame's COEP value doesn't matter. async_test(t => { const frame = document.createElement("iframe"); const id = token(); @@ -96,33 +94,8 @@ t.done(); } })); - // REMOTE_ORIGIN is cross-origin, same-site. - frame.src = `${HOST.HTTPS_REMOTE_ORIGIN}${BASE}/navigate-require-corp-same-site.sub.html?token=${id}`; - document.body.append(frame); -}, 'CORP: same-site is checked and allowed.'); - -// CORP is checked because COEP of the frame is "require-corp". The parent -// frame's COEP value doesn't matter. -async_test(t => { - const frame = document.createElement("iframe"); - const id = token(); - t.add_cleanup(() => frame.remove()); - let loaded = false; - window.addEventListener('message', t.step_func((e) => { - if (e.data === id) { - loaded = true; - } - })); - t.step_timeout(() => { - // Make sure the iframe didn't load. See https://github.com/whatwg/html/issues/125 for why a - // timeout is used here. Long term all network error handling should be similar and have a - // reliable event. - assert_false(loaded); - t.done(); - }, 2000); - - // NOTESAMESITE_ORIGIN is cross-origin, cross-site. frame.src = `${HOST.HTTPS_NOTSAMESITE_ORIGIN}${BASE}/navigate-require-corp-same-site.sub.html?token=${id}`; document.body.append(frame); -}, 'CORP: same-site is checked and blocked.'); +}, 'CORP: same-site is not checked.'); + </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html index 3a0aebe4..bb0a6a2 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html
@@ -8,61 +8,139 @@ <script src="/common/get-host-info.sub.js"></script> <script> const HOST = get_host_info(); -function getIframeUrl(filename, token1, token2) { - let query = `template=${filename}`; - if (token1) { - query += `&coep=${token1}` - } - if (token2) { - query += `&coep-report-only=${token2}` - } - return `resources/reporting-iframe.py?${query}`; +const REMOTE_ORIGIN = HOST.REMOTE_ORIGIN; +const BASE = new URL("resources", location).pathname + +function wait(ms) { + return new Promise(resolve => step_timeout(resolve, ms)); } -function checkReports(reports, contextUrl) { - assert_not_equals(reports, null); - assert_equals(reports.length, 2); - assert_equals(reports[0].type, 'coep'); - assert_equals(reports[0].url, contextUrl); - assert_equals(reports[0].body.type, 'corp'); - assert_equals(reports[1].type, 'coep'); - assert_equals(reports[1].url, contextUrl); - assert_equals(reports[1].body.type, 'corp'); +async function pollReports(endpoint, reports) { + while (true) { + await wait(200); + const res = await fetch(`resources/report.py?endpoint=${endpoint}`, {cache: 'no-store'}); + if (res.status !== 200) { + continue; + } + for (const report of await res.json()) { + reports.push(report); + } + } +} - // The order of the reports is non-deterministic. - const actualBlockedUrls = reports.map((r) => r.body['blocked-url']).sort(); - const expectedBlockedUrls = [ - `${HOST.REMOTE_ORIGIN}/common/text-plain.txt`, - `${HOST.ORIGIN}/common/redirect.py?location=${HOST.REMOTE_ORIGIN}/common/text-plain.txt`, - ]; - assert_array_equals(actualBlockedUrls.sort(), expectedBlockedUrls.sort()); +let reports = [] +let reportsForReportOnly = [] +pollReports('endpoint', reports); +pollReports('report-only-endpoint', reportsForReportOnly); + +function checkCorpReportExistence(reports, blockedUrl, contextUrl) { + blockedUrl = new URL(blockedUrl, location).href; + contextUrl = new URL(contextUrl, location).href; + for (const report of reports) { + if (report.type !== 'coep' || report.url !== contextUrl || + report.body.type !== 'corp') { + continue; + } + if (report.body['blocked-url'] === blockedUrl) { + return; + } + } + assert_unreached(`A report whose blocked-url is ${blockedUrl} and url is ${contextUrl} is not found.`); +} + +function checkReportNonExistence(reports, blockedUrl, contextUrl) { + blockedUrl = new URL(blockedUrl, location).href; + contextUrl = new URL(contextUrl, location).href; + for (const report of reports) { + if (report.type !== 'coep' || report.url !== contextUrl) { + continue; + } + assert_not_equals(report.body['blocked-url'], blockedUrl); + } } async_test(async (t) => { try { const iframe = document.createElement('iframe'); t.add_cleanup(() => iframe.remove()); - const token1 = token(); - const token2 = token(); - iframe.src = `resources/subresource-corp.html?token1=${token1}&token2=${token2}`; + iframe.src = `resources/reporting-empty-frame.html` document.body.appendChild(iframe); + await new Promise(resolve => { + iframe.addEventListener('load', resolve, {once: true}); + }); + + function fetchInIframe(url) { + const init = { mode: 'no-cors', cache: 'no-store' }; + iframe.contentWindow.fetch(url, init).catch(() => {}); + } + + const suffix = 'subresource-corp'; + const sameOriginUrl = `/common/text-plain.txt?${suffix}`; + const blockedByPureCorp = `${REMOTE_ORIGIN}${BASE}/nothing-same-origin-corp.txt?${suffix}`; + const blockedDueToCoep = `${REMOTE_ORIGIN}/common/text-plain.txt?abc&${suffix}`; + const dest = `${REMOTE_ORIGIN}/common/text-plain.txt?xyz&${suffix}`; + const redirect = `/common/redirect.py?location=${encodeURIComponent(dest)}&${suffix}`; + + fetchInIframe(sameOriginUrl); + fetchInIframe(blockedByPureCorp); + fetchInIframe(blockedDueToCoep); + fetchInIframe(redirect); await new Promise(resolve => t.step_timeout(resolve, 3000)); - const res1 = await fetch(`resources/stash-take.py?key=${token1}`); - const res2 = await fetch(`resources/stash-take.py?key=${token2}`); - - const reports = JSON.parse(await res1.text()); - const reportsForReportOnly = JSON.parse(await res2.text()); - - checkReports(reports, iframe.src); - checkReports(reportsForReportOnly, iframe.src); + checkReportNonExistence(reports, sameOriginUrl, iframe.src); + checkReportNonExistence(reports, blockedByPureCorp, iframe.src); + checkCorpReportExistence(reports, blockedDueToCoep, iframe.src); + checkCorpReportExistence(reports, redirect, iframe.src); + checkReportNonExistence(reports, dest, iframe.src); t.done(); } catch (e) { t.step(() => { throw e }); - }; -}, 'report-to parameter for COEP and COEP-report-only'); + } +}, 'subresource CORP'); + +async_test(async (t) => { + try { + const iframe = document.createElement('iframe'); + t.add_cleanup(() => iframe.remove()); + + iframe.src = `resources/reporting-empty-frame.html` + document.body.appendChild(iframe); + await new Promise(resolve => { + iframe.addEventListener('load', resolve, {once: true}); + }); + + const w = iframe.contentWindow; + + function attachFrame(url) { + const frame = w.document.createElement('iframe'); + frame.src = url; + w.document.body.appendChild(frame); + } + + const suffix = 'navigation-corp'; + const sameOrigin = `/common/blank.html?${suffix}`; + const blockedDueToCoep = `${REMOTE_ORIGIN}/common/blank.html?abc&${suffix}`; + const dest = `${REMOTE_ORIGIN}/common/blank.html?xyz&${suffix}`; + const redirect = `/common/redirect.py?location=${encodeURIComponent(dest)}&${suffix}`; + + attachFrame(sameOrigin); + attachFrame(blockedDueToCoep); + attachFrame(redirect); + + await new Promise(resolve => t.step_timeout(resolve, 3000)); + + checkReportNonExistence(reports, sameOrigin, iframe.src); + checkCorpReportExistence(reports, blockedDueToCoep, iframe.src); + checkCorpReportExistence(reports, redirect, iframe.src); + checkReportNonExistence(reports, dest, iframe.src); + + t.done(); + } catch (e) { + t.step(() => { throw e }); + } +}, 'navigation CORP'); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html.sub.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html.sub.headers new file mode 100644 index 0000000..cda6ab22 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting.https.html.sub.headers
@@ -0,0 +1 @@ +report-to: { "group": "endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-embedder-policy/resources/report.py?endpoint=endpoint" }] }, { "group": "report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-embedder-policy/resources/report.py?endpoint=report-only-endpoint" }] }
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp.https.html index 6f799b6..769bc87 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/require-corp.https.html
@@ -232,4 +232,28 @@ document.body.append(frame); }, 'navigation CORP is checked with the parent frame, not the navigation source - to be blocked'); +async_test(t => { + const bc = new BroadcastChannel(token()); + let loaded = false; + bc.onmessage = t.step_func((event) => { + loaded = true; + }); + t.step_timeout(() => { + // Make sure the iframe didn't load. See + // https://github.com/whatwg/html/issues/125 for why a timeout is used + // here. Long term all network error handling should be similar and have a + // reliable event. + assert_false(loaded); + t.done(); + }, 2000); + + const dest = `${HOST.ORIGIN}${BASE}/navigate-require-corp.sub.html?channelName=${bc.name}`; + const frame = document.createElement("iframe"); + t.add_cleanup(() => frame.remove()); + // |dest| is a same-origin URL and hence not blocked by CORP but reidirect.py + // is a cross-origin (actually cross-site) URL, so blocked by CORP. + frame.src = `${HOST.HTTPS_NOTSAMESITE_ORIGIN}/common/redirect.py?location=${encodeURIComponent(dest)}`; + document.body.append(frame); +}, 'navigation CORP is checked for each redirect'); + </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/report.py b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/report.py index 8adf300..17ca65c 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/report.py +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/report.py
@@ -9,11 +9,29 @@ response.headers.set('Access-Control-Allow-Headers', 'content-type') return '' - url_dir = '/'.join(request.url_parts.path.split('/')[:-1]) + '/' - key = request.GET.first('key') - reports = request.server.stash.take(key, url_dir) or [] - for report in json.loads(request.body): - reports.append(report) - request.server.stash.put(key, reports, url_dir) + uuidMap = { + 'endpoint': '01234567-0123-0123-0123-0123456789AB', + 'report-only-endpoint': '01234567-0123-0123-0123-0123456789CD' + } + response.headers.set('Access-Control-Allow-Origin', '*') - return 'done' + endpoint = request.GET.first('endpoint') + if endpoint not in uuidMap: + response.status = 400 + return 'invalid endpoint' + + path = '/'.join(request.url_parts.path.split('/')[:-1]) + '/' + key = uuidMap[endpoint] + + if request.method == 'POST': + reports = request.server.stash.take(key, path) or [] + for report in json.loads(request.body): + reports.append(report) + request.server.stash.put(key, reports, path) + return 'done' + + if request.method == 'GET': + return json.dumps(request.server.stash.take(key, path) or []) + + response.status = 400 + return 'invalid method'
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html new file mode 100644 index 0000000..b1579ad --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html
@@ -0,0 +1,5 @@ +<!doctype html> +<html> +<body> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html.headers new file mode 100644 index 0000000..66302f10 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html.headers
@@ -0,0 +1,2 @@ +cross-origin-embedder-policy: require-corp; report-to="endpoint" +cross-origin-embedder-policy-report-only: require-corp; report-to="report-only-endpoint";
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/stash-take.py b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/stash-take.py deleted file mode 100644 index 73e0def..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/stash-take.py +++ /dev/null
@@ -1,9 +0,0 @@ -from wptserve.handlers import json_handler - - -@json_handler -def main(request, response): - path = '/'.join(request.url_parts.path.split('/')[:-1]) + '/' - key = request.GET.first('key') - response.headers.set('Access-Control-Allow-Origin', '*') - return request.server.stash.take(key, path)
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html deleted file mode 100644 index 4b02970..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html +++ /dev/null
@@ -1,35 +0,0 @@ -<!doctype html> -<html> -<script src="/common/get-host-info.sub.js"></script> -<script> -const HOST = get_host_info(); -const current = new URL(window.location.href); -const token = current.searchParams.get("token"); - -const cache = 'no-store'; -const mode = 'no-cors'; - -async function run() { - const init = { mode, cache }; - // This is not blocked. - await fetch('/common/text-plain.txt', init); - // This is blocked but not due to COEP. - try { - await fetch('nothing-same-origin-corp.txt', init); - } catch (e) { - } - - try { - await fetch(`${HOST.REMOTE_ORIGIN}/common/text-plain.txt`, init); - } catch (e) { - } - try { - await fetch(`/common/redirect.py?location=${HOST.REMOTE_ORIGIN}/common/text-plain.txt`, init); - } catch (e) { - } -} - -run(); - -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html.sub.headers b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html.sub.headers deleted file mode 100644 index 0060999..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/resources/subresource-corp.html.sub.headers +++ /dev/null
@@ -1,4 +0,0 @@ -cache-control: no-store, no-cache -report-to: { "group": "endpoint", "max_age": 3600, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-embedder-policy/resources/report.py?key={{GET[token1]}}" }] }, { "group": "report-only-endpoint", "max_age": 3600, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-embedder-policy/resources/report.py?key={{GET[token2]}}" }] } -cross-origin-embedder-policy: require-corp; report-to="endpoint" -cross-origin-embedder-policy-report-only: require-corp; report-to="report-only-endpoint"
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_0-1-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_0-1-expected.txt deleted file mode 100644 index aa7fcc1..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_0-1-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -PASS Popup navigating to same-origin with coop/coep -FAIL Popup navigating to same-site with coop/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-origin with no coop/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with no coop/coep assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_2-3-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_2-3-expected.txt deleted file mode 100644 index 6a28cd8..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_2-3-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL Popup navigating to same-origin with coop/no coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with coop/no coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-origin with no coop/no coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with no coop/no coep assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_4-last-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_4-last-expected.txt deleted file mode 100644 index e7b4ac6..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https_4-last-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL Popup navigating to same-origin with coop unsafe-none/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with coop unsafe-none/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-origin with coop unsafe-none/no coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with coop unsafe-none/no coep assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-redirect.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-redirect.https-expected.txt index 02d3e1d..78adc45 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-redirect.https-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-redirect.https-expected.txt
@@ -1,9 +1,9 @@ This is a testharness.js-based test. PASS Redirect from coop/coep to coop/coep -FAIL Redirect from coop/coep to no coop/coep assert_equals: Openee browsing context closed expected true but got false +PASS Redirect from coop/coep to no coop/coep FAIL Redirect from no coop/no coep to coop/coep assert_equals: name expected "" but got "Redirect-from-no-coop/no-coep-to-coop/coep" FAIL Redirect from coop/no coep to coop/coep assert_equals: name expected "" but got "Redirect-from-coop/no-coep-to-coop/coep" FAIL Redirect from coop unsafe-none/coep to coop/coep assert_equals: name expected "" but got "Redirect-from-coop-unsafe-none/coep-to-coop/coep" -FAIL Redirect from coop unsafe-none/coep to coop unsafe-inherit/coep assert_equals: Openee browsing context closed expected true but got false +PASS Redirect from coop unsafe-none/coep to coop unsafe-inherit/coep Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https-expected.txt index 3b1ae70..d935af0 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep.https-expected.txt
@@ -1,12 +1,12 @@ This is a testharness.js-based test. PASS Same-origin popup with coop/coep -FAIL historical: "same-site" popup with coop/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Same-origin popup with coop unsafe-none/coep assert_equals: Openee browsing context closed expected true but got false -FAIL historical: "same-site" popup with coop unsafe-none/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Same-origin popup with coop unsafe-none without coep assert_equals: Openee browsing context closed expected true but got false -FAIL historical: "same-site" popup with coop unsafe-none without coep assert_equals: Openee browsing context closed expected true but got false -FAIL Same-origin popup without coep assert_equals: Openee browsing context closed expected true but got false -FAIL historical: "same-site" popup without coep assert_equals: Openee browsing context closed expected true but got false +PASS historical: "same-site" popup with coop/coep +PASS Same-origin popup with coop unsafe-none/coep +PASS historical: "same-site" popup with coop unsafe-none/coep +PASS Same-origin popup with coop unsafe-none without coep +PASS historical: "same-site" popup with coop unsafe-none without coep +PASS Same-origin popup without coep +PASS historical: "same-site" popup without coep FAIL Bonus: window.crossOriginIsolated assert_true: expected true got undefined Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-history-popup.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-history-popup.https-expected.txt deleted file mode 100644 index 1c8d279..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-history-popup.https-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Popup navigating to other origin with COOP: same-origin and back in history assert_equals: opener expected false but got true -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt deleted file mode 100644 index 119c835..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-navigated-popup.https-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Open a popup to a document without COOP, then navigate it to a document with assert_true: expected true got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https-expected.txt deleted file mode 100644 index 7d597e0..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL Popup navigating to same-origin with coop unsafe-inherit/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with coop unsafe-inherit/coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-origin with coop unsafe-inherit/no coep assert_equals: Openee browsing context closed expected true but got false -FAIL Popup navigating to same-site with coop unsafe-inherit/no coep assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https-expected.txt deleted file mode 100644 index 5df2a13..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https-expected.txt deleted file mode 100644 index c0c9e22..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https-expected.txt deleted file mode 100644 index 22cb21f..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https-expected.txt deleted file mode 100644 index c8cdb9e7..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https-expected.txt deleted file mode 100644 index 7d19d9b..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https-expected.txt deleted file mode 100644 index cea04ce5..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https-expected.txt deleted file mode 100644 index 9630be7..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https-expected.txt deleted file mode 100644 index 3bbd6d5..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https-expected.txt deleted file mode 100644 index 92c7db6..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-none.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-none.https-expected.txt deleted file mode 100644 index 441401ec..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-none.https-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -PASS none document opening popup to https://web-platform.test:8444 with COOP: "" -PASS none document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -FAIL none document opening popup to https://web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "none_to_SAME_ORIGIN_same-site" -FAIL none document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_SAME_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL none document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "none_to_SAME_ORIGIN_same-origin" -FAIL none document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_SAME_ORIGIN_same-origin-unsafe-allow-outgoing" -PASS none document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS none document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -FAIL none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "none_to_SAME_SITE_same-site" -FAIL none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_SAME_SITE_same-site-unsafe-allow-outgoing" -FAIL none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "none_to_SAME_SITE_same-origin" -FAIL none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_SAME_SITE_same-origin-unsafe-allow-outgoing" -PASS none document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS none document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -FAIL none document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "none_to_CROSS_ORIGIN_same-site" -FAIL none document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_CROSS_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL none document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "none_to_CROSS_ORIGIN_same-origin" -FAIL none document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "none_to_CROSS_ORIGIN_same-origin-unsafe-allow-outgoing" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https-expected.txt deleted file mode 100644 index a315b35..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https-expected.txt +++ /dev/null
@@ -1,12 +0,0 @@ -This is a testharness.js-based test. -FAIL same-origin document opening popup redirect from https://web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache true and destCache false assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache false and destCache true assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache true and destCache true assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://not-web-platform.test:8444 to https://web-platform.test:8444 with redirectCache true and destCache false assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://not-web-platform.test:8444 to https://web-platform.test:8444 with redirectCache false and destCache true assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://not-web-platform.test:8444 to https://web-platform.test:8444 with redirectCache true and destCache true assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://www1.web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache true and destCache false assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://www1.web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache false and destCache true assert_equals: expected true but got false -FAIL same-origin document opening popup redirect from https://www1.web-platform.test:8444 to https://not-web-platform.test:8444 with redirectCache true and destCache true assert_equals: expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html index d68c806..2ef7c09 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html
@@ -13,13 +13,11 @@ const bc = new BroadcastChannel(channelName); bc.onmessage = t.step_func(event => { const payload = event.data; - assert_equals(payload.name, hasOpener ? channelName : ""); - assert_equals(payload.opener, hasOpener); - assert_equals(w.closed, !hasOpener); - bc.close() - - // test the same url for cache - url_test(t, url, channelName, hasOpener); + validate_results(() => { + bc.close() + // test the same url for cache + url_test(t, url, channelName, hasOpener); + }, t, w, channelName, hasOpener, undefined /* OpenerDomAccess */, payload) }); const w = window.open(url, channelName);
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https-expected.txt deleted file mode 100644 index 9759a2a..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin-allow-popups document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https-expected.txt deleted file mode 100644 index 2079085..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -PASS same-origin-allow-popups document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https-expected.txt deleted file mode 100644 index 79d6bd94..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin-allow-popups document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https-expected.txt deleted file mode 100644 index 559011a..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-unsafe-allow-outgoing.https-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -PASS same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_ORIGIN_same-site" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_ORIGIN_same-origin" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_SITE_same-site" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_SITE_same-site-unsafe-allow-outgoing" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_SITE_same-origin" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_SAME_SITE_same-origin-unsafe-allow-outgoing" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-site" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-origin" -FAIL same-origin_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-origin-unsafe-allow-outgoing" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https-expected.txt deleted file mode 100644 index 1f21d9ad..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https-expected.txt deleted file mode 100644 index 6e79cb3..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "jibberish" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-site" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -PASS same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-origin" -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https-expected.txt deleted file mode 100644 index 3284ad0..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin.https-expected.txt deleted file mode 100644 index 0d082385..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin.https-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-origin_to_SAME_ORIGIN_" -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-origin_to_SAME_ORIGIN_jibberish" -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_to_SAME_ORIGIN_same-site" -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_SAME_ORIGIN_same-site-unsafe-allow-outgoing" -PASS same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-origin" -FAIL same-origin document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_SAME_ORIGIN_same-origin-unsafe-allow-outgoing" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-origin_to_SAME_SITE_" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-origin_to_SAME_SITE_jibberish" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_to_SAME_SITE_same-site" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_SAME_SITE_same-site-unsafe-allow-outgoing" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-origin_to_SAME_SITE_same-origin" -FAIL same-origin document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_SAME_SITE_same-origin-unsafe-allow-outgoing" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_jibberish" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_same-site" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_same-origin" -FAIL same-origin document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-origin_to_CROSS_ORIGIN_same-origin-unsafe-allow-outgoing" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https-expected.txt deleted file mode 100644 index 2dfbfd7..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site-unsafe-allow-outgoing.https-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -PASS same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "" -PASS same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_ORIGIN_same-site" -PASS same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_ORIGIN_same-origin" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_ORIGIN_same-origin-unsafe-allow-outgoing" -PASS same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_SITE_same-site" -PASS same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_SITE_same-origin" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_SAME_SITE_same-origin-unsafe-allow-outgoing" -PASS same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-site" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-origin" -FAIL same-site_unsafe-allow-outgoing document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_unsafe-allow-outgoing_to_CROSS_ORIGIN_same-origin-unsafe-allow-outgoing" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site.https-expected.txt deleted file mode 100644 index dd1e4548..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-site.https-expected.txt +++ /dev/null
@@ -1,21 +0,0 @@ -This is a testharness.js-based test. -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-site_to_SAME_ORIGIN_" -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-site_to_SAME_ORIGIN_jibberish" -PASS same-site document opening popup to https://web-platform.test:8444 with COOP: "same-site" -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_SAME_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_to_SAME_ORIGIN_same-origin" -FAIL same-site document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_SAME_ORIGIN_same-origin-unsafe-allow-outgoing" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-site_to_SAME_SITE_" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-site_to_SAME_SITE_jibberish" -PASS same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_SAME_SITE_same-site-unsafe-allow-outgoing" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_to_SAME_SITE_same-origin" -FAIL same-site document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_SAME_SITE_same-origin-unsafe-allow-outgoing" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_jibberish" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_same-site" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_same-site-unsafe-allow-outgoing" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_same-origin" -FAIL same-site document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" assert_equals: expected "" but got "same-site_to_CROSS_ORIGIN_same-origin-unsafe-allow-outgoing" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https-expected.txt deleted file mode 100644 index 2aefa4d..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unsafe-none document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https-expected.txt deleted file mode 100644 index 14ec1a9..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "" -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unsafe-none document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https-expected.txt deleted file mode 100644 index 32bb897..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unsafe-none document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https-expected.txt deleted file mode 100644 index df6ca63..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "" -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "unsafe-none" -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "jibberish" -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "same-site" -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unspecified document opening popup to https://not-web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https-expected.txt deleted file mode 100644 index aefc505e..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "" -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "unsafe-none" -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "jibberish" -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "same-site" -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unspecified document opening popup to https://web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unspecified document opening popup to https://web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unspecified document opening popup to https://web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https-expected.txt b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https-expected.txt deleted file mode 100644 index 61164f7..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "" -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "unsafe-none" -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "jibberish" -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site" -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "same-site unsafe-allow-outgoing" -PASS unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin unsafe-allow-outgoing" -FAIL unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin" assert_equals: Openee browsing context closed expected true but got false -FAIL unspecified document opening popup to https://www1.web-platform.test:8444 with COOP: "same-origin-allow-popups" assert_equals: Openee browsing context closed expected true but got false -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js index 760db60..fb517e8 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/common.js
@@ -2,17 +2,38 @@ const SAME_SITE = {origin: get_host_info().HTTPS_REMOTE_ORIGIN, name: "SAME_SITE"}; const CROSS_ORIGIN = {origin: get_host_info().HTTPS_NOTSAMESITE_ORIGIN, name: "CROSS_ORIGIN"} +function verify_window(callback, w, hasOpener) { + // If there's no opener, the w must be closed: + assert_equals(w.closed, !hasOpener, 'w.closed'); + // Opener's access on w.length is possible only if hasOpener: + assert_equals(w.length, hasOpener? 1: 0, 'w.length'); + callback(); +} + +function validate_results(callback, test, w, channelName, hasOpener, openerDOMAccess, payload) { + assert_equals(payload.name, hasOpener ? channelName : "", 'name'); + assert_equals(payload.opener, hasOpener, 'opener'); + // TODO(zcorpan): add openerDOMAccess expectations to all tests + if (openerDOMAccess !== undefined) { + assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess'); + } + + // The window proxy in Chromium might still reflect the previous frame, + // until its unloaded. This delays the verification of w here. + if( !w.closed && w.length == 0) { + test.step_timeout( () => { + verify_window(callback, w, hasOpener); + }, 500); + } else { + verify_window(callback, w, hasOpener); + } +} + function url_test(t, url, channelName, hasOpener, openerDOMAccess) { const bc = new BroadcastChannel(channelName); - bc.onmessage = t.step_func_done(event => { + bc.onmessage = t.step_func(event => { const payload = event.data; - assert_equals(payload.name, hasOpener ? channelName : "", 'name'); - assert_equals(payload.opener, hasOpener, 'opener'); - // TODO(zcorpan): add openerDOMAccess expectations to all tests - if (openerDOMAccess !== undefined) { - assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess'); - } - assert_equals(w.closed, !hasOpener, 'Openee browsing context closed'); + validate_results(() => { t.done(); }, t, w, channelName, hasOpener, openerDOMAccess, payload); }); const w = window.open(url, channelName);
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/coop-coep.py b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/coop-coep.py index 0271d78..8a7e0bc0 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/coop-coep.py +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resources/coop-coep.py
@@ -19,7 +19,7 @@ <!doctype html> <meta charset=utf-8> <script src="/common/get-host-info.sub.js"></script> -<iframe></iframe> +<body></body> <script> const params = new URL(location).searchParams; const navHistory = params.get("navHistory"); @@ -57,13 +57,14 @@ close(); } }); - const iframe = document.querySelector("iframe"); + iframe = document.createElement("iframe"); iframe.onload = () => { const payload = { name: self.name, opener: !!self.opener, openerDOMAccess: openerDOMAccessAllowed }; iframe.contentWindow.postMessage(payload, "*"); }; const channelName = new URL(location).searchParams.get("channel"); iframe.src = `${get_host_info().HTTPS_ORIGIN}/html/cross-origin-opener-policy/resources/postback.html?channel=${channelName}`; + document.body.appendChild(iframe); } </script> """
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl index 6734f5c..e95acca 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
@@ -260,3 +260,13 @@ required XRReferenceSpace referenceSpace; XRRigidTransform transform; }; + +dictionary XRPermissionDescriptor: PermissionDescriptor { + XRSessionMode mode; + sequence<any> requiredFeatures; + sequence<any> optionalFeatures; +}; + +interface XRPermissionStatus: PermissionStatus { + attribute FrozenArray<any> granted; +};
diff --git a/third_party/blink/web_tests/external/wpt/measure-memory/resources/common.js b/third_party/blink/web_tests/external/wpt/measure-memory/resources/common.js index 92ff11b3..3b5201d 100644 --- a/third_party/blink/web_tests/external/wpt/measure-memory/resources/common.js +++ b/third_party/blink/web_tests/external/wpt/measure-memory/resources/common.js
@@ -5,8 +5,10 @@ let allowed = new Set(options.allowed); assert_own_property(breakdown, 'bytes'); assert_greater_than_equal(breakdown.bytes, 0); - assert_own_property(breakdown, 'type'); - assert_equals(typeof breakdown.type, 'string'); + assert_own_property(breakdown, 'userAgentSpecificType'); + for (let userAgentSpecificType of breakdown.userAgentSpecificType) { + assert_equals(typeof userAgentSpecificType, 'string'); + } assert_own_property(breakdown, 'attribution'); for (let attribution of breakdown.attribution) { assert_equals(typeof attribution, 'string');
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative-expected.txt deleted file mode 100644 index 51ea5759..0000000 --- a/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative-expected.txt +++ /dev/null
@@ -1,29 +0,0 @@ -This is a testharness.js-based test. -PASS User succesfully selected an empty directory. -PASS User granted write access. -PASS write() with an empty blob to an empty file -PASS write() a blob to an empty file -PASS write() called with a blob and a valid offset -FAIL write() called with an invalid offset assert_unreached: Should have rejected: undefined Reached unreachable code -PASS write() with an empty string to an empty file -PASS write() with a valid utf-8 string -PASS write() with a string with unix line ending preserved -PASS write() with a string with windows line ending preserved -PASS write() with an empty array buffer to an empty file -PASS write() with a valid typed array buffer -PASS truncate() to shrink a file -PASS truncate() to grow a file -PASS createWriter() fails when parent directory is removed -PASS write() fails when parent directory is removed -PASS truncate() fails when parent directory is removed -PASS atomic writes: close() fails when parent directory is removed -PASS atomic writes: writers make atomic changes on close -PASS atomic writes: write() after close() fails -PASS atomic writes: truncate() after close() fails -PASS atomic writes: close() after close() fails -PASS atomic writes: only one close() operation may succeed -PASS createWriter({keepExistingData: true}): atomic writer initialized with source contents -PASS createWriter({keepExistingData: false}): atomic writer initialized with empty file -PASS atomic writes: writer persists file on close, even if file is removed -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative.html b/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative.html deleted file mode 100644 index fbfbd30..0000000 --- a/third_party/blink/web_tests/external/wpt/native-file-system/native_FileSystemWriter-manual.https.tentative.html +++ /dev/null
@@ -1,10 +0,0 @@ -<!doctype html> -<meta charset=utf-8> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/testdriver.js"></script> -<script src="/resources/testdriver-vendor.js"></script> -<script src="resources/test-helpers.js"></script> -<script src="resources/native-fs-test-helpers.js"></script> -<script src="script-tests/FileSystemWriter.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/resources/test-helpers.js b/third_party/blink/web_tests/external/wpt/native-file-system/resources/test-helpers.js index d036092..eb123bf 100644 --- a/third_party/blink/web_tests/external/wpt/native-file-system/resources/test-helpers.js +++ b/third_party/blink/web_tests/external/wpt/native-file-system/resources/test-helpers.js
@@ -73,8 +73,8 @@ async function createFileWithContents(test, name, contents, parent) { const handle = await createEmptyFile(test, name, parent); - const writer = await handle.createWriter(); - await writer.write(0, new Blob([contents])); + const writer = await handle.createWritable(); + await writer.write(new Blob([contents])); await writer.close(); return handle; }
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js b/third_party/blink/web_tests/external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js deleted file mode 100644 index 8352e24..0000000 --- a/third_party/blink/web_tests/external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js +++ /dev/null
@@ -1,3 +0,0 @@ -// META: script=resources/test-helpers.js -// META: script=resources/sandboxed-fs-test-helpers.js -// META: script=script-tests/FileSystemWriter.js
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemFileHandle-getFile.js b/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemFileHandle-getFile.js index 6b7d9f9..80593418 100644 --- a/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemFileHandle-getFile.js +++ b/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemFileHandle-getFile.js
@@ -20,8 +20,8 @@ }); await timeout; - const writer = await handle.createWriter({keepExistingData: false}); - await writer.write(0, new Blob(['foo'])); + const writer = await handle.createWritable({keepExistingData: false}); + await writer.write(new Blob(['foo'])); await writer.close(); file = await handle.getFile();
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemWriter.js b/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemWriter.js deleted file mode 100644 index 5e1f319..0000000 --- a/third_party/blink/web_tests/external/wpt/native-file-system/script-tests/FileSystemWriter.js +++ /dev/null
@@ -1,287 +0,0 @@ -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'empty_blob', root); - const writer = await handle.createWriter(); - - await writer.write(0, new Blob([])); - await writer.close(); - - assert_equals(await getFileContents(handle), ''); - assert_equals(await getFileSize(handle), 0); -}, 'write() with an empty blob to an empty file'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'valid_blob', root); - const writer = await handle.createWriter(); - - await writer.write(0, new Blob(['1234567890'])); - await writer.close(); - - assert_equals(await getFileContents(handle), '1234567890'); - assert_equals(await getFileSize(handle), 10); -}, 'write() a blob to an empty file'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'blob_with_offset', root); - const writer = await handle.createWriter(); - - await writer.write(0, new Blob(['1234567890'])); - await writer.write(4, new Blob(['abc'])); - await writer.close(); - - assert_equals(await getFileContents(handle), '1234abc890'); - assert_equals(await getFileSize(handle), 10); -}, 'write() called with a blob and a valid offset'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'bad_offset', root); - const writer = await handle.createWriter(); - - await promise_rejects_dom( - t, 'InvalidStateError', writer.write(4, new Blob(['abc']))); - await writer.close(); - - assert_equals(await getFileContents(handle), ''); - assert_equals(await getFileSize(handle), 0); -}, 'write() called with an invalid offset'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'empty_string', root); - const writer = await handle.createWriter(); - - await writer.write(0, ''); - await writer.close(); - assert_equals(await getFileContents(handle), ''); - assert_equals(await getFileSize(handle), 0); -}, 'write() with an empty string to an empty file'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'valid_utf8_string', root); - const writer = await handle.createWriter(); - - await writer.write(0, 'foo🤘'); - await writer.close(); - assert_equals(await getFileContents(handle), 'foo🤘'); - assert_equals(await getFileSize(handle), 7); -}, 'write() with a valid utf-8 string'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'string_with_unix_line_ending', root); - const writer = await handle.createWriter(); - - await writer.write(0, 'foo\n'); - await writer.close(); - assert_equals(await getFileContents(handle), 'foo\n'); - assert_equals(await getFileSize(handle), 4); -}, 'write() with a string with unix line ending preserved'); - -directory_test(async (t, root) => { - const handle = - await createEmptyFile(t, 'string_with_windows_line_ending', root); - const writer = await handle.createWriter(); - - await writer.write(0, 'foo\r\n'); - await writer.close(); - assert_equals(await getFileContents(handle), 'foo\r\n'); - assert_equals(await getFileSize(handle), 5); -}, 'write() with a string with windows line ending preserved'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'empty_array_buffer', root); - const writer = await handle.createWriter(); - - let buf = new ArrayBuffer(0); - await writer.write(0, buf); - await writer.close(); - assert_equals(await getFileContents(handle), ''); - assert_equals(await getFileSize(handle), 0); -}, 'write() with an empty array buffer to an empty file'); - -directory_test(async (t, root) => { - const handle = - await createEmptyFile(t, 'valid_string_typed_byte_array', root); - const writer = await handle.createWriter(); - - let buf = new ArrayBuffer(3); - let intView = new Uint8Array(buf); - intView[0] = 0x66; - intView[1] = 0x6f; - intView[2] = 0x6f; - await writer.write(0, buf); - await writer.close(); - assert_equals(await getFileContents(handle), 'foo'); - assert_equals(await getFileSize(handle), 3); -}, 'write() with a valid typed array buffer'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'trunc_shrink', root); - const writer = await handle.createWriter(); - - await writer.write(0, new Blob(['1234567890'])); - await writer.truncate(5); - await writer.close(); - - assert_equals(await getFileContents(handle), '12345'); - assert_equals(await getFileSize(handle), 5); -}, 'truncate() to shrink a file'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'trunc_grow', root); - const writer = await handle.createWriter(); - - await writer.write(0, new Blob(['abc'])); - await writer.truncate(5); - await writer.close(); - - assert_equals(await getFileContents(handle), 'abc\0\0'); - assert_equals(await getFileSize(handle), 5); -}, 'truncate() to grow a file'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'parent_dir', root); - const file_name = 'create_writer_fails_when_dir_removed.txt'; - const handle = await createEmptyFile(t, file_name, dir); - - await root.removeEntry('parent_dir', {recursive: true}); - await promise_rejects_dom(t, 'NotFoundError', handle.createWriter()); -}, 'createWriter() fails when parent directory is removed'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'parent_dir', root); - const file_name = 'write_fails_when_dir_removed.txt'; - const handle = await createEmptyFile(t, file_name, dir); - const writer = await handle.createWriter(); - - await root.removeEntry('parent_dir', {recursive: true}); - await promise_rejects_dom(t, 'NotFoundError', writer.write(0, new Blob(['foo']))); -}, 'write() fails when parent directory is removed'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'parent_dir', root); - const file_name = 'truncate_fails_when_dir_removed.txt'; - const handle = await createEmptyFile(t, file_name, dir); - const writer = await handle.createWriter(); - - await root.removeEntry('parent_dir', {recursive: true}); - await promise_rejects_dom(t, 'NotFoundError', writer.truncate(0)); -}, 'truncate() fails when parent directory is removed'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'parent_dir', root); - const file_name = 'close_fails_when_dir_removed.txt'; - const handle = await createEmptyFile(t, file_name, dir); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foo'])); - - await root.removeEntry('parent_dir', {recursive: true}); - await promise_rejects_dom(t, 'NotFoundError', writer.close()); -}, 'atomic writes: close() fails when parent directory is removed'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'atomic_writes.txt', root); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foox'])); - - const writer2 = await handle.createWriter(); - await writer2.write(0, new Blob(['bar'])); - - assert_equals(await getFileSize(handle), 0); - - await writer2.close(); - assert_equals(await getFileContents(handle), 'bar'); - assert_equals(await getFileSize(handle), 3); - - await writer.close(); - assert_equals(await getFileContents(handle), 'foox'); - assert_equals(await getFileSize(handle), 4); -}, 'atomic writes: writers make atomic changes on close'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'atomic_write_after_close.txt', root); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foo'])); - - await writer.close(); - assert_equals(await getFileContents(handle), 'foo'); - assert_equals(await getFileSize(handle), 3); - - await promise_rejects_dom( - t, 'InvalidStateError', writer.write(0, new Blob(['abc']))); -}, 'atomic writes: write() after close() fails'); - -directory_test(async (t, root) => { - const handle = - await createEmptyFile(t, 'atomic_truncate_after_close.txt', root); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foo'])); - - await writer.close(); - assert_equals(await getFileContents(handle), 'foo'); - assert_equals(await getFileSize(handle), 3); - - await promise_rejects_dom(t, 'InvalidStateError', writer.truncate(0)); -}, 'atomic writes: truncate() after close() fails'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'atomic_close_after_close.txt', root); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foo'])); - - await writer.close(); - assert_equals(await getFileContents(handle), 'foo'); - assert_equals(await getFileSize(handle), 3); - - await promise_rejects_dom(t, 'InvalidStateError', writer.close()); -}, 'atomic writes: close() after close() fails'); - -directory_test(async (t, root) => { - const handle = await createEmptyFile(t, 'there_can_be_only_one.txt', root); - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['foo'])); - - // This test might be flaky if there is a race condition allowing - // close() to be called multiple times. - let success_promises = - [...Array(100)].map(() => writer.close().then(() => 1).catch(() => 0)); - let close_attempts = await Promise.all(success_promises); - let success_count = close_attempts.reduce((x, y) => x + y); - assert_equals(success_count, 1); -}, 'atomic writes: only one close() operation may succeed'); - -directory_test(async (t, root) => { - const handle = await createFileWithContents( - t, 'atomic_file_is_copied.txt', 'fooks', root); - const writer = await handle.createWriter({keepExistingData: true}); - - await writer.write(0, new Blob(['bar'])); - await writer.close(); - assert_equals(await getFileContents(handle), 'barks'); - assert_equals(await getFileSize(handle), 5); -}, 'createWriter({keepExistingData: true}): atomic writer initialized with source contents'); - -directory_test(async (t, root) => { - const handle = await createFileWithContents( - t, 'atomic_file_is_not_copied.txt', 'very long string', root); - const writer = await handle.createWriter({keepExistingData: false}); - - await writer.write(0, new Blob(['bar'])); - assert_equals(await getFileContents(handle), 'very long string'); - await writer.close(); - assert_equals(await getFileContents(handle), 'bar'); - assert_equals(await getFileSize(handle), 3); -}, 'createWriter({keepExistingData: false}): atomic writer initialized with empty file'); - -directory_test(async (t, root) => { - const dir = await createDirectory(t, 'parent_dir', root); - const file_name = 'atomic_writer_persists_removed.txt'; - const handle = await createFileWithContents(t, file_name, 'foo', dir); - - const writer = await handle.createWriter(); - await writer.write(0, new Blob(['bar'])); - - await dir.removeEntry(file_name); - await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle)); - - await writer.close(); - assert_equals(await getFileContents(handle), 'bar'); - assert_equals(await getFileSize(handle), 3); -}, 'atomic writes: writer persists file on close, even if file is removed');
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/protocol/bundle.https.html b/third_party/blink/web_tests/external/wpt/webrtc/protocol/bundle.https.html new file mode 100644 index 0000000..fcc9d47 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webrtc/protocol/bundle.https.html
@@ -0,0 +1,52 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCPeerConnection BUNDLE</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../RTCPeerConnection-helper.js"></script> +<script> +'use strict'; +promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + const stream = await getNoiseStream({audio: true, video: true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + stream.getTracks().forEach(track => caller.addTrack(track, stream)); + + let metadataToBeLoaded; + callee.ontrack = (e) => { + const stream = e.streams[0]; + const v = document.createElement('video'); + v.autoplay = true; + v.srcObject = stream; + v.id = stream.id + metadataToBeLoaded = new Promise((resolve) => { + v.addEventListener('loadedmetadata', () => { + resolve(); + }); + }); + }; + exchangeIceCandidates(caller, callee); + const offer = await caller.createOffer(); + // remove the a=group:BUNDLE from the SDP when signaling. + const sdp = offer.sdp.replace(/a=group:BUNDLE (.*)\r\n/, ''); + await callee.setRemoteDescription({type: 'offer', sdp}); + await caller.setLocalDescription(offer); + + const answer = await callee.createAnswer(); + await caller.setRemoteDescription(answer); + await callee.setLocalDescription(answer); + + await metadataToBeLoaded; + const senders = caller.getSenders(); + const dtlsTransports = senders.map(s => s.transport); + assert_equals(dtlsTransports.length, 2); + assert_not_equals(dtlsTransports[0], dtlsTransports[1]); + + const iceTransports = dtlsTransports.map(t => t.iceTransport); + assert_equals(iceTransports.length, 2); + assert_not_equals(iceTransports[0], iceTransports[1]); +}, 'not negotiating BUNDLE creates two separate ice and dtls transports'); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt index 17b7f40..9599044 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 200 tests; 198 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 208 tests; 199 PASS, 9 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Navigator: original interface defined @@ -8,6 +8,7 @@ PASS Partial dictionary WebGLContextAttributes: member names are unique PASS Partial interface mixin WebGLRenderingContextBase: original interface mixin defined PASS Partial interface mixin WebGLRenderingContextBase: member names are unique +PASS Partial interface Navigator[2]: member names are unique PASS Partial interface mixin NavigatorID: member names are unique FAIL WebGLRenderingContext includes WebGLRenderingContextBase: member names are unique assert_true: member canvas is unique expected true got false FAIL WebGLRenderingContext includes WebGLRenderingContextOverloads: member names are unique assert_true: member bufferData is unique expected true got false @@ -198,6 +199,13 @@ PASS XRReferenceSpaceEvent interface: existence and properties of interface prototype object's @@unscopables property PASS XRReferenceSpaceEvent interface: attribute referenceSpace PASS XRReferenceSpaceEvent interface: attribute transform +FAIL XRPermissionStatus interface: existence and properties of interface object assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface object length assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface object name assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing +FAIL XRPermissionStatus interface: attribute granted assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing PASS Navigator interface: attribute xr PASS Navigator interface: navigator must inherit property "xr" with the proper type Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window.js b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window.js index 3e54e36..04b2e3d 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window.js +++ b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window.js
@@ -7,7 +7,7 @@ idl_test( ['webxr'], - ['webgl1', 'html', 'dom'], + ['permissions', 'webgl1', 'html', 'dom'], async idl_array => { idl_array.add_objects({ Navigator: ['navigator'],
diff --git a/third_party/blink/web_tests/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html b/third_party/blink/web_tests/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html index b0820a04..2b98c2b98 100644 --- a/third_party/blink/web_tests/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html +++ b/third_party/blink/web_tests/fast/scrolling/scrollbars/scrollbar-rtl-manipulation.html
@@ -79,6 +79,7 @@ // Testing vertical scroll. let x = standardRect.left + TRACK_WIDTH / 2; let y = standardRect.top + (onMacPlatform ? 0 : BUTTON_WIDTH) + 2; + await mouseMoveTo(x, y); await mouseDownAt(x, y); await mouseMoveTo(x, y + 15); await mouseUpAt(x, y + 15); @@ -88,6 +89,7 @@ // Testing horizontal scroll. x = standardRect.right - (onMacPlatform ? 0 : BUTTON_WIDTH) - 2; y = standardRect.bottom - TRACK_WIDTH / 2; + await mouseMoveTo(x, y); await mouseDownAt(x, y); await mouseMoveTo(x - 15, y); await mouseUpAt(x - 15, y);
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt index 996b7e8..3682f231 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
@@ -21,7 +21,12 @@ { "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", "rect": [0, 0, 214, 260], - "reason": "geometry" + "reason": "paint property change" + }, + { + "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", + "rect": [0, 0, 160, 260], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt index 54873e58..1aea33c 100644 --- a/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt +++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/paint/invalidation/filters/filter-repaint-accelerated-on-accelerated-filter-expected.txt
@@ -21,7 +21,7 @@ { "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow accelerated'", "rect": [0, 0, 160, 260], - "reason": "geometry" + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/drag-to-contenteditable-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/drag-to-contenteditable-iframe-expected.txt index f8b58193..bffe94ef 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/drag-to-contenteditable-iframe-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/drag-to-contenteditable-iframe-expected.txt
@@ -13,7 +13,7 @@ LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {UL} at (0,229) size 800x20 LayoutListItem {LI} at (40,0) size 760x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 288x19 text run at (0,0) width 288: "Abe should be outside the frame and inside it." layer at (0,0) size 208x208
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNode-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNode-expected.txt index b2b672d..2f9a14c 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNode-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNode-expected.txt
@@ -20,6 +20,6 @@ text run at (0,0) width 26: "four" LayoutBlockFlow {UL} at (0,132) size 784x20 LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 54x19 text run at (0,0) width 54: "Success."
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNodeContents-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNodeContents-expected.txt index 792b73f6..55d388c 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNodeContents-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selectNodeContents-expected.txt
@@ -20,6 +20,6 @@ text run at (0,0) width 26: "four" LayoutBlockFlow {UL} at (0,132) size 784x20 LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 54x19 text run at (0,0) width 54: "Success."
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt index 0e443de..104f7e6 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
@@ -19,7 +19,12 @@ { "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow'", "rect": [0, 0, 212, 257], - "reason": "geometry" + "reason": "paint property change" + }, + { + "object": "LayoutBlockFlow DIV id='resize' class='drop-shadow'", + "rect": [0, 0, 158, 257], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/list-marker-2-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/list-marker-2-expected.txt index 9061622..3183c2b 100644 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/list-marker-2-expected.txt +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/list-marker-2-expected.txt
@@ -12,12 +12,12 @@ "reason": "geometry" }, { - "object": "LayoutListMarker ::marker", + "object": "LayoutOutsideListMarker ::marker", "rect": [30, 185, 7, 19], "reason": "geometry" }, { - "object": "LayoutListMarker ::marker", + "object": "LayoutOutsideListMarker ::marker", "rect": [30, 135, 7, 19], "reason": "geometry" }
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/network/cross-origin-isolation/coep-load-error-reporting-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/network/cross-origin-isolation/coep-load-error-reporting-expected.txt index d22db3a..b07b435 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/network/cross-origin-isolation/coep-load-error-reporting-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/network/cross-origin-isolation/coep-load-error-reporting-expected.txt
@@ -4,9 +4,9 @@ https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?corp=cross-origin: *loading finished* https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?corp=same-site: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-site https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?corp=same-origin: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-origin -https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php: net::ERR_BLOCKED_BY_RESPONSE coep-frame-resource-needs-coep-header +https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-origin-after-defaulted-to-same-origin-by-coep https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?coep: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-origin-after-defaulted-to-same-origin-by-coep https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?coep&corp=same-site: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-site https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php?coep&corp=same-origin: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-origin -https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php&coop: net::ERR_BLOCKED_BY_RESPONSE coep-frame-resource-needs-coep-header +https://devtools.oopif.test:8443/inspector-protocol/network/cross-origin-isolation/resources/page-with-coep-corp.php&coop: net::ERR_BLOCKED_BY_RESPONSE corp-not-same-origin-after-defaulted-to-same-origin-by-coep
diff --git a/third_party/blink/web_tests/platform/linux/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt b/third_party/blink/web_tests/platform/linux/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt index 5cd2dbb77..1daa5e5a 100644 --- a/third_party/blink/web_tests/platform/linux/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt
@@ -14,7 +14,7 @@ LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {UL} at (0,241) size 800x20 LayoutListItem {LI} at (40,0) size 760x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 409x19 text run at (0,0) width 409: "Abe should appear twice, once inside the div and once outside it." selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/linux/editing/pasteboard/input-field-1-expected.txt b/third_party/blink/web_tests/platform/linux/editing/pasteboard/input-field-1-expected.txt index 5a6b5827..2eeaf1a 100644 --- a/third_party/blink/web_tests/platform/linux/editing/pasteboard/input-field-1-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/pasteboard/input-field-1-expected.txt
@@ -16,7 +16,7 @@ LayoutTextControl {INPUT} at (185,0) size 185x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutBlockFlow {UL} at (0,74) size 784x20 LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 43x19 text run at (0,0) width 43: "Passed" layer at (12,47) size 177x16
diff --git a/third_party/blink/web_tests/platform/linux/editing/selection/move-by-line-002-expected.txt b/third_party/blink/web_tests/platform/linux/editing/selection/move-by-line-002-expected.txt index 3a3959c..3b7352d 100644 --- a/third_party/blink/web_tests/platform/linux/editing/selection/move-by-line-002-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/selection/move-by-line-002-expected.txt
@@ -10,22 +10,22 @@ LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutListItem {LI} at (40,0) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "1" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "1" LayoutText {#text} at (0,0) size 35x27 text run at (0,0) width 35: "one" LayoutListItem {LI} at (40,28) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "2" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "2" LayoutText {#text} at (0,0) size 36x27 text run at (0,0) width 36: "two" LayoutListItem {LI} at (40,56) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "3" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "3" LayoutBR {BR} at (0,0) size 0x27 LayoutListItem {LI} at (40,84) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "4" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "4" LayoutText {#text} at (0,0) size 40x27 text run at (0,0) width 40: "four" LayoutListItem {LI} at (40,112) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "5" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "5" LayoutText {#text} at (0,0) size 38x27 text run at (0,0) width 38: "five" caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-delete-001-expected.txt b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-delete-001-expected.txt index aeae2dc..b7e6d111 100644 --- a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-delete-001-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-delete-001-expected.txt
@@ -55,7 +55,7 @@ text run at (0,0) width 62: "before" LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 45x27 text run at (0,0) width 45: "after" caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-after-expected.txt b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-after-expected.txt index db545607..2d57a5e 100644 --- a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-after-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-after-expected.txt
@@ -44,30 +44,30 @@ LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 78x27 text run at (0,0) width 78: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 79x27 text run at (0,0) width 79: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 128x27 text run at (0,0) width 128: "line threexxx" LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 78x27 text run at (0,0) width 78: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 79x27 text run at (0,0) width 79: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 128x27 text run at (0,0) width 128: "line threexxx" caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-before-expected.txt b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-before-expected.txt index f53cf27..22c9132 100644 --- a/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-before-expected.txt +++ b/third_party/blink/web_tests/platform/linux/editing/unsupported-content/list-type-before-expected.txt
@@ -41,30 +41,30 @@ LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 114x27 text run at (0,0) width 114: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 79x27 text run at (0,0) width 79: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 92x27 text run at (0,0) width 92: "line three" LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 114x27 text run at (0,0) width 114: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 79x27 text run at (0,0) width 79: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 92x27 text run at (0,0) width 92: "line three" caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt index 7792506a..9c6b080b 100644 --- a/third_party/blink/web_tests/platform/linux/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt +++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
@@ -19,7 +19,12 @@ { "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", "rect": [0, 0, 212, 257], - "reason": "geometry" + "reason": "paint property change" + }, + { + "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", + "rect": [0, 0, 158, 257], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt b/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt index 9b2ecb9d..7bf5517 100644 --- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt
@@ -14,7 +14,7 @@ LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {UL} at (0,241) size 800x18 LayoutListItem {LI} at (40,0) size 760x18 - LayoutListMarker {::marker} at (-17,0) size 7x18: bullet + LayoutOutsideListMarker {::marker} at (-17,0) size 7x18: bullet LayoutText {#text} at (0,0) size 416x18 text run at (0,0) width 416: "Abe should appear twice, once inside the div and once outside it." selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.txt b/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.txt index 49c8107..6cf2184 100644 --- a/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/pasteboard/input-field-1-expected.txt
@@ -16,7 +16,7 @@ LayoutTextControl {INPUT} at (153,0) size 153x21 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutBlockFlow {UL} at (0,71) size 784x18 LayoutListItem {LI} at (40,0) size 744x18 - LayoutListMarker {::marker} at (-17,0) size 7x18: bullet + LayoutOutsideListMarker {::marker} at (-17,0) size 7x18: bullet LayoutText {#text} at (0,0) size 44x18 text run at (0,0) width 44: "Passed" layer at (12,45) size 145x15
diff --git a/third_party/blink/web_tests/platform/mac/editing/selection/move-by-line-002-expected.txt b/third_party/blink/web_tests/platform/mac/editing/selection/move-by-line-002-expected.txt index 42a844a..82424a7 100644 --- a/third_party/blink/web_tests/platform/mac/editing/selection/move-by-line-002-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/selection/move-by-line-002-expected.txt
@@ -10,22 +10,22 @@ LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutListItem {LI} at (40,0) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x28: "1" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "1" LayoutText {#text} at (0,0) size 35x28 text run at (0,0) width 35: "one" LayoutListItem {LI} at (40,28) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x28: "2" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "2" LayoutText {#text} at (0,0) size 36x28 text run at (0,0) width 36: "two" LayoutListItem {LI} at (40,56) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x28: "3" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "3" LayoutBR {BR} at (0,0) size 0x28 LayoutListItem {LI} at (40,84) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x28: "4" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "4" LayoutText {#text} at (0,0) size 40x28 text run at (0,0) width 40: "four" LayoutListItem {LI} at (40,112) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x28: "5" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "5" LayoutText {#text} at (0,0) size 36x28 text run at (0,0) width 36: "five" caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.txt b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.txt index bf03200..623828f 100644 --- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-delete-001-expected.txt
@@ -55,7 +55,7 @@ text run at (0,0) width 62: "before" LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 44x28 text run at (0,0) width 44: "after" caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.txt b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.txt index ccf9c784..659e3af 100644 --- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-after-expected.txt
@@ -44,30 +44,30 @@ LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 77x28 text run at (0,0) width 77: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 78x28 text run at (0,0) width 78: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 126x28 text run at (0,0) width 126: "line threexxx" LayoutBlockFlow {DIV} at (0,384) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 77x28 text run at (0,0) width 77: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 78x28 text run at (0,0) width 78: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 126x28 text run at (0,0) width 126: "line threexxx" caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.txt b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.txt index ea199a13..56b924e35 100644 --- a/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.txt +++ b/third_party/blink/web_tests/platform/mac/editing/unsupported-content/list-type-before-expected.txt
@@ -41,30 +41,30 @@ LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 113x28 text run at (0,0) width 113: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 78x28 text run at (0,0) width 78: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 90x28 text run at (0,0) width 90: "line three" LayoutBlockFlow {DIV} at (0,384) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 113x28 text run at (0,0) width 113: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 78x28 text run at (0,0) width 78: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x28: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet LayoutText {#text} at (0,0) size 90x28 text run at (0,0) width 90: "line three" caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt index 7792506a..9c6b080b 100644 --- a/third_party/blink/web_tests/platform/mac/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt +++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/filters/filter-repaint-accelerated-child-with-filter-child-expected.txt
@@ -19,7 +19,12 @@ { "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", "rect": [0, 0, 212, 257], - "reason": "geometry" + "reason": "paint property change" + }, + { + "object": "LayoutNGBlockFlow DIV id='resize' class='drop-shadow'", + "rect": [0, 0, 158, 257], + "reason": "paint property change" } ], "transform": 1
diff --git a/third_party/blink/web_tests/platform/win/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt b/third_party/blink/web_tests/platform/win/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt index 3e3402b..8efe35c 100644 --- a/third_party/blink/web_tests/platform/win/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/pasteboard/drag-selected-image-to-contenteditable-expected.txt
@@ -14,7 +14,7 @@ LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {UL} at (0,241) size 800x20 LayoutListItem {LI} at (40,0) size 760x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 391x19 text run at (0,0) width 391: "Abe should appear twice, once inside the div and once outside it." selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/win/editing/pasteboard/input-field-1-expected.txt b/third_party/blink/web_tests/platform/win/editing/pasteboard/input-field-1-expected.txt index e80fba1..268288f5 100644 --- a/third_party/blink/web_tests/platform/win/editing/pasteboard/input-field-1-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/pasteboard/input-field-1-expected.txt
@@ -16,7 +16,7 @@ LayoutTextControl {INPUT} at (177,0) size 177x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutBlockFlow {UL} at (0,74) size 784x20 LayoutListItem {LI} at (40,0) size 744x20 - LayoutListMarker {::marker} at (-18,0) size 7x19: bullet + LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet LayoutText {#text} at (0,0) size 43x19 text run at (0,0) width 43: "Passed" layer at (12,47) size 169x16
diff --git a/third_party/blink/web_tests/platform/win/editing/selection/move-by-line-002-expected.txt b/third_party/blink/web_tests/platform/win/editing/selection/move-by-line-002-expected.txt index 1b69eed56..c35716d 100644 --- a/third_party/blink/web_tests/platform/win/editing/selection/move-by-line-002-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/selection/move-by-line-002-expected.txt
@@ -10,22 +10,22 @@ LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutListItem {LI} at (40,0) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "1" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "1" LayoutText {#text} at (0,0) size 35x27 text run at (0,0) width 35: "one" LayoutListItem {LI} at (40,28) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "2" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "2" LayoutText {#text} at (0,0) size 36x27 text run at (0,0) width 36: "two" LayoutListItem {LI} at (40,56) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "3" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "3" LayoutBR {BR} at (0,0) size 0x27 LayoutListItem {LI} at (40,84) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "4" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "4" LayoutText {#text} at (0,0) size 40x27 text run at (0,0) width 40: "four" LayoutListItem {LI} at (40,112) size 716x28 - LayoutListMarker {::marker} at (-24,0) size 24x27: "5" + LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "5" LayoutText {#text} at (0,0) size 37x27 text run at (0,0) width 37: "five" caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-delete-001-expected.txt b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-delete-001-expected.txt index ed82040..36b5e10 100644 --- a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-delete-001-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-delete-001-expected.txt
@@ -55,7 +55,7 @@ text run at (0,0) width 62: "before" LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 45x27 text run at (0,0) width 45: "after" caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-after-expected.txt b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-after-expected.txt index 575576c..041cae97 100644 --- a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-after-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-after-expected.txt
@@ -44,30 +44,30 @@ LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 76x27 text run at (0,0) width 76: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 77x27 text run at (0,0) width 77: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 126x27 text run at (0,0) width 126: "line threexxx" LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 76x27 text run at (0,0) width 76: "line one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 77x27 text run at (0,0) width 77: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 126x27 text run at (0,0) width 126: "line threexxx" caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-before-expected.txt b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-before-expected.txt index b89dff9b..aa88dfb 100644 --- a/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-before-expected.txt +++ b/third_party/blink/web_tests/platform/win/editing/unsupported-content/list-type-before-expected.txt
@@ -41,30 +41,30 @@ LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 112x27 text run at (0,0) width 112: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 77x27 text run at (0,0) width 77: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 90x27 text run at (0,0) width 90: "line three" LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutListItem {LI} at (40,0) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 112x27 text run at (0,0) width 112: "xxxline one" LayoutListItem {LI} at (40,28) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 77x27 text run at (0,0) width 77: "line two" LayoutListItem {LI} at (40,56) size 740x28 - LayoutListMarker {::marker} at (-22,0) size 9x27: bullet + LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet LayoutText {#text} at (0,0) size 90x27 text run at (0,0) width 90: "line three" caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
diff --git a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/none.https-expected.txt b/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/none.https-expected.txt deleted file mode 100644 index e8ef669c..0000000 --- a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/none.https-expected.txt +++ /dev/null
@@ -1,9 +0,0 @@ -This is a testharness.js-based test. -PASS "none" top-level: navigating a frame to "none" should succeed -PASS "none" top-level: navigating a frame from "require-corp" to "none" should succeed -PASS "none" top-level: navigating a frame back from "require-corp" should succeed -PASS "require-corp" top-level noopener popup: navigating to "none" should succeed -PASS CORP: same-site is checked and allowed. -FAIL CORP: same-site is checked and blocked. assert_false: expected false got true -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/reporting.https-expected.txt b/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/reporting.https-expected.txt index 05293ef..9db132d9 100644 --- a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/reporting.https-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/reporting.https-expected.txt
@@ -1,4 +1,5 @@ This is a testharness.js-based test. -FAIL report-to parameter for COEP and COEP-report-only assert_not_equals: got disallowed value null +FAIL subresource CORP assert_unreached: A report whose blocked-url is https://www1.web-platform.test:8444/common/text-plain.txt?abc&subresource-corp and url is https://web-platform.test:8444/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html is not found. Reached unreachable code +FAIL navigation CORP assert_unreached: A report whose blocked-url is https://www1.web-platform.test:8444/common/blank.html?abc&navigation-corp and url is https://web-platform.test:8444/html/cross-origin-embedder-policy/resources/reporting-empty-frame.html is not found. Reached unreachable code Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/require-corp.https-expected.txt b/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/require-corp.https-expected.txt index ee6d0a2..de5188cf 100644 --- a/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/require-corp.https-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/external/wpt/html/cross-origin-embedder-policy/require-corp.https-expected.txt
@@ -14,5 +14,6 @@ FAIL CORP: same-site is checked and blocked. assert_false: expected false got true PASS navigation CORP is checked with the parent frame, not the navigation source - to be allowed PASS navigation CORP is checked with the parent frame, not the navigation source - to be blocked +FAIL navigation CORP is checked for each redirect assert_false: expected false got true Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/bundle.https-expected.txt b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/bundle.https-expected.txt new file mode 100644 index 0000000..60ed7f43 --- /dev/null +++ b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/bundle.https-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL not negotiating BUNDLE creates two separate ice and dtls transports assert_not_equals: got disallowed value null +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt index 3bd6bd98..c3b221a 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -6287,6 +6287,23 @@ method getRemoteCertificates setter onerror setter onstatechange +interface RTCEncodedAudioFrame + attribute @@toStringTag + getter additionalData + getter data + getter timestamp + method constructor + method toString + setter data +interface RTCEncodedVideoFrame + attribute @@toStringTag + getter additionalData + getter data + getter timestamp + getter type + method constructor + method toString + setter data interface RTCError : DOMException attribute @@toStringTag getter errorDetail @@ -6463,6 +6480,8 @@ getter track getter transport method constructor + method createEncodedAudioStreams + method createEncodedVideoStreams method getContributingSources method getParameters method getStats @@ -6476,6 +6495,8 @@ getter track getter transport method constructor + method createEncodedAudioStreams + method createEncodedVideoStreams method getParameters method getStats method replaceTrack
diff --git a/third_party/libaom/cmake_update.sh b/third_party/libaom/cmake_update.sh index 2620133..fe69f685 100755 --- a/third_party/libaom/cmake_update.sh +++ b/third_party/libaom/cmake_update.sh
@@ -179,6 +179,12 @@ reset_dirs linux/arm64 gen_config_files linux/arm64 "${toolchain}/arm64-linux-gcc.cmake ${all_platforms}" +reset_dirs ios/arm-neon +gen_config_files ios/arm-neon "${toolchain}/armv7-ios.cmake ${all_platforms}" + +reset_dirs ios/arm64 +gen_config_files ios/arm64 "${toolchain}/arm64-ios.cmake ${all_platforms}" + # Copy linux configurations and modify for Windows. reset_dirs win/arm64 cp "${CFG}/linux/arm64/config"/* "${CFG}/win/arm64/config/"
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm new file mode 100644 index 0000000..b85b52d --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm
@@ -0,0 +1,80 @@ +; +; Copyright (c) 2020, Alliance for Open Media. All rights reserved +; +; This source code is subject to the terms of the BSD 2 Clause License and +; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License +; was not distributed with this source code in the LICENSE file, you can +; obtain it at www.aomedia.org/license/software. If the Alliance for Open +; Media Patent License 1.0 was not distributed with this source code in the +; PATENTS file, you can obtain it at www.aomedia.org/license/patent. +; +ARCH_ARM equ 1 +ARCH_MIPS equ 0 +ARCH_PPC equ 0 +ARCH_X86 equ 0 +ARCH_X86_64 equ 0 +CONFIG_ACCOUNTING equ 0 +CONFIG_ANALYZER equ 0 +CONFIG_AV1_DECODER equ 1 +CONFIG_AV1_ENCODER equ 0 +CONFIG_AV1_HIGHBITDEPTH equ 1 +CONFIG_BIG_ENDIAN equ 0 +CONFIG_BITSTREAM_DEBUG equ 0 +CONFIG_COEFFICIENT_RANGE_CHECKING equ 0 +CONFIG_COLLECT_COMPONENT_TIMING equ 0 +CONFIG_COLLECT_PARTITION_STATS equ 0 +CONFIG_COLLECT_RD_STATS equ 0 +CONFIG_DEBUG equ 0 +CONFIG_DENOISE equ 1 +CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1 +CONFIG_DIST_8X8 equ 0 +CONFIG_ENTROPY_STATS equ 0 +CONFIG_GCC equ 1 +CONFIG_GCOV equ 0 +CONFIG_GPROF equ 0 +CONFIG_HTB_TRELLIS equ 0 +CONFIG_INSPECTION equ 0 +CONFIG_INTERNAL_STATS equ 0 +CONFIG_INTER_STATS_ONLY equ 0 +CONFIG_LIBYUV equ 0 +CONFIG_LPF_MASK equ 0 +CONFIG_MAX_DECODE_PROFILE equ 0 +CONFIG_MISMATCH_DEBUG equ 0 +CONFIG_MULTITHREAD equ 1 +CONFIG_NN_V2 equ 0 +CONFIG_NORMAL_TILE_MODE equ 1 +CONFIG_OS_SUPPORT equ 1 +CONFIG_PIC equ 0 +CONFIG_RD_DEBUG equ 0 +CONFIG_REALTIME_ONLY equ 0 +CONFIG_RUNTIME_CPU_DETECT equ 0 +CONFIG_SHARED equ 0 +CONFIG_SHARP_SETTINGS equ 0 +CONFIG_SIZE_LIMIT equ 1 +CONFIG_SPATIAL_RESAMPLING equ 1 +CONFIG_SPEED_STATS equ 0 +CONFIG_SUPERRES_IN_RECODE equ 1 +CONFIG_TUNE_VMAF equ 0 +CONFIG_WEBM_IO equ 1 +DECODE_HEIGHT_LIMIT equ 16384 +DECODE_WIDTH_LIMIT equ 16384 +FORCE_HIGHBITDEPTH_DECODING equ 0 +HAVE_AVX equ 0 +HAVE_AVX2 equ 0 +HAVE_DSPR2 equ 0 +HAVE_FEXCEPT equ 1 +HAVE_MIPS32 equ 0 +HAVE_MIPS64 equ 0 +HAVE_MMX equ 0 +HAVE_MSA equ 0 +HAVE_NEON equ 1 +HAVE_PTHREAD_H equ 1 +HAVE_SSE equ 0 +HAVE_SSE2 equ 0 +HAVE_SSE3 equ 0 +HAVE_SSE4_1 equ 0 +HAVE_SSE4_2 equ 0 +HAVE_SSSE3 equ 0 +HAVE_UNISTD_H equ 1 +HAVE_VSX equ 0 +HAVE_WXWIDGETS equ 0
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.c b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.c new file mode 100644 index 0000000..aa7b1ef3 --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.c
@@ -0,0 +1,13 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#include "aom/aom_codec.h" +static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/armv7-ios.cmake\" -DCONFIG_AV1_ENCODER=0 -DCONFIG_LIBYUV=0 -DCONFIG_MAX_DECODE_PROFILE=0 -DCONFIG_NORMAL_TILE_MODE=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;}
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h new file mode 100644 index 0000000..3a583a5 --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h
@@ -0,0 +1,84 @@ +/* + * Copyright (c) 2020, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_CONFIG_H_ +#define AOM_CONFIG_H_ +#define ARCH_ARM 1 +#define ARCH_MIPS 0 +#define ARCH_PPC 0 +#define ARCH_X86 0 +#define ARCH_X86_64 0 +#define CONFIG_ACCOUNTING 0 +#define CONFIG_ANALYZER 0 +#define CONFIG_AV1_DECODER 1 +#define CONFIG_AV1_ENCODER 0 +#define CONFIG_AV1_HIGHBITDEPTH 1 +#define CONFIG_BIG_ENDIAN 0 +#define CONFIG_BITSTREAM_DEBUG 0 +#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 +#define CONFIG_COLLECT_COMPONENT_TIMING 0 +#define CONFIG_COLLECT_PARTITION_STATS 0 +#define CONFIG_COLLECT_RD_STATS 0 +#define CONFIG_DEBUG 0 +#define CONFIG_DENOISE 1 +#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1 +#define CONFIG_DIST_8X8 0 +#define CONFIG_ENTROPY_STATS 0 +#define CONFIG_GCC 1 +#define CONFIG_GCOV 0 +#define CONFIG_GPROF 0 +#define CONFIG_HTB_TRELLIS 0 +#define CONFIG_INSPECTION 0 +#define CONFIG_INTERNAL_STATS 0 +#define CONFIG_INTER_STATS_ONLY 0 +#define CONFIG_LIBYUV 0 +#define CONFIG_LPF_MASK 0 +#define CONFIG_MAX_DECODE_PROFILE 0 +#define CONFIG_MISMATCH_DEBUG 0 +#define CONFIG_MULTITHREAD 1 +#define CONFIG_NN_V2 0 +#define CONFIG_NORMAL_TILE_MODE 1 +#define CONFIG_OS_SUPPORT 1 +#define CONFIG_PIC 0 +#define CONFIG_RD_DEBUG 0 +#define CONFIG_REALTIME_ONLY 0 +#define CONFIG_RUNTIME_CPU_DETECT 0 +#define CONFIG_SHARED 0 +#define CONFIG_SHARP_SETTINGS 0 +#define CONFIG_SIZE_LIMIT 1 +#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_SPEED_STATS 0 +#define CONFIG_SUPERRES_IN_RECODE 1 +#define CONFIG_TUNE_VMAF 0 +#define CONFIG_WEBM_IO 1 +#define DECODE_HEIGHT_LIMIT 16384 +#define DECODE_WIDTH_LIMIT 16384 +#define FORCE_HIGHBITDEPTH_DECODING 0 +#define HAVE_AVX 0 +#define HAVE_AVX2 0 +#define HAVE_DSPR2 0 +#define HAVE_FEXCEPT 1 +#define HAVE_MIPS32 0 +#define HAVE_MIPS64 0 +#define HAVE_MMX 0 +#define HAVE_MSA 0 +#define HAVE_NEON 1 +#define HAVE_PTHREAD_H 1 +#define HAVE_SSE 0 +#define HAVE_SSE2 0 +#define HAVE_SSE3 0 +#define HAVE_SSE4_1 0 +#define HAVE_SSE4_2 0 +#define HAVE_SSSE3 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VSX 0 +#define HAVE_WXWIDGETS 0 +#define INLINE inline +#endif // AOM_CONFIG_H_
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_dsp_rtcd.h b/third_party/libaom/source/config/ios/arm-neon/config/aom_dsp_rtcd.h new file mode 100644 index 0000000..795a992e --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_dsp_rtcd.h
@@ -0,0 +1,3320 @@ +// This file is generated. Do not edit. +#ifndef AOM_DSP_RTCD_H_ +#define AOM_DSP_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * DSP + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/aom_dsp_common.h" +#include "av1/common/blockd.h" +#include "av1/common/enums.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +void aom_blend_a64_hmask_neon(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_hmask aom_blend_a64_hmask_neon + +void aom_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh); +#define aom_blend_a64_mask aom_blend_a64_mask_c + +void aom_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +void aom_blend_a64_vmask_neon(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_vmask aom_blend_a64_vmask_neon + +void aom_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_horiz aom_convolve8_horiz_c + +void aom_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_vert aom_convolve8_vert_c + +void aom_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int filter_x_stride, + const int16_t* filter_y, + int filter_y_stride, + int w, + int h); +#define aom_convolve_copy aom_convolve_copy_c + +void aom_dc_128_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_neon + +void aom_dc_128_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_c + +void aom_dc_128_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x4 aom_dc_128_predictor_16x4_c + +void aom_dc_128_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x64 aom_dc_128_predictor_16x64_c + +void aom_dc_128_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_c + +void aom_dc_128_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_2x2 aom_dc_128_predictor_2x2_c + +void aom_dc_128_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x16 aom_dc_128_predictor_32x16_c + +void aom_dc_128_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x32 aom_dc_128_predictor_32x32_neon + +void aom_dc_128_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x64 aom_dc_128_predictor_32x64_c + +void aom_dc_128_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x8 aom_dc_128_predictor_32x8_c + +void aom_dc_128_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x16 aom_dc_128_predictor_4x16_c + +void aom_dc_128_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_neon + +void aom_dc_128_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_c + +void aom_dc_128_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x16 aom_dc_128_predictor_64x16_c + +void aom_dc_128_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x32 aom_dc_128_predictor_64x32_c + +void aom_dc_128_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x64 aom_dc_128_predictor_64x64_c + +void aom_dc_128_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_c + +void aom_dc_128_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x32 aom_dc_128_predictor_8x32_c + +void aom_dc_128_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_c + +void aom_dc_128_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_neon + +void aom_dc_left_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_neon + +void aom_dc_left_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_c + +void aom_dc_left_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x4 aom_dc_left_predictor_16x4_c + +void aom_dc_left_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x64 aom_dc_left_predictor_16x64_c + +void aom_dc_left_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_c + +void aom_dc_left_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_2x2 aom_dc_left_predictor_2x2_c + +void aom_dc_left_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x16 aom_dc_left_predictor_32x16_c + +void aom_dc_left_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x32 aom_dc_left_predictor_32x32_neon + +void aom_dc_left_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x64 aom_dc_left_predictor_32x64_c + +void aom_dc_left_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x8 aom_dc_left_predictor_32x8_c + +void aom_dc_left_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x16 aom_dc_left_predictor_4x16_c + +void aom_dc_left_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_neon + +void aom_dc_left_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_c + +void aom_dc_left_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x16 aom_dc_left_predictor_64x16_c + +void aom_dc_left_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x32 aom_dc_left_predictor_64x32_c + +void aom_dc_left_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x64 aom_dc_left_predictor_64x64_c + +void aom_dc_left_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_c + +void aom_dc_left_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x32 aom_dc_left_predictor_8x32_c + +void aom_dc_left_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_c + +void aom_dc_left_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_neon + +void aom_dc_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_neon + +void aom_dc_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_c + +void aom_dc_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x4 aom_dc_predictor_16x4_c + +void aom_dc_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x64 aom_dc_predictor_16x64_c + +void aom_dc_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_c + +void aom_dc_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_2x2 aom_dc_predictor_2x2_c + +void aom_dc_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x16 aom_dc_predictor_32x16_c + +void aom_dc_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x32 aom_dc_predictor_32x32_neon + +void aom_dc_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x64 aom_dc_predictor_32x64_c + +void aom_dc_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x8 aom_dc_predictor_32x8_c + +void aom_dc_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x16 aom_dc_predictor_4x16_c + +void aom_dc_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_neon + +void aom_dc_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_c + +void aom_dc_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x16 aom_dc_predictor_64x16_c + +void aom_dc_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x32 aom_dc_predictor_64x32_c + +void aom_dc_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x64 aom_dc_predictor_64x64_c + +void aom_dc_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_c + +void aom_dc_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x32 aom_dc_predictor_8x32_c + +void aom_dc_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_c + +void aom_dc_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_neon + +void aom_dc_top_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_neon + +void aom_dc_top_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_c + +void aom_dc_top_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x4 aom_dc_top_predictor_16x4_c + +void aom_dc_top_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x64 aom_dc_top_predictor_16x64_c + +void aom_dc_top_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_c + +void aom_dc_top_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_2x2 aom_dc_top_predictor_2x2_c + +void aom_dc_top_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x16 aom_dc_top_predictor_32x16_c + +void aom_dc_top_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x32 aom_dc_top_predictor_32x32_neon + +void aom_dc_top_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x64 aom_dc_top_predictor_32x64_c + +void aom_dc_top_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x8 aom_dc_top_predictor_32x8_c + +void aom_dc_top_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x16 aom_dc_top_predictor_4x16_c + +void aom_dc_top_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_neon + +void aom_dc_top_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_c + +void aom_dc_top_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x16 aom_dc_top_predictor_64x16_c + +void aom_dc_top_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x32 aom_dc_top_predictor_64x32_c + +void aom_dc_top_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x64 aom_dc_top_predictor_64x64_c + +void aom_dc_top_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_c + +void aom_dc_top_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x32 aom_dc_top_predictor_8x32_c + +void aom_dc_top_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_c + +void aom_dc_top_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_neon + +void aom_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x16 aom_h_predictor_16x16_neon + +void aom_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x32 aom_h_predictor_16x32_c + +void aom_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x4 aom_h_predictor_16x4_c + +void aom_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x64 aom_h_predictor_16x64_c + +void aom_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x8 aom_h_predictor_16x8_c + +void aom_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_2x2 aom_h_predictor_2x2_c + +void aom_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x16 aom_h_predictor_32x16_c + +void aom_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x32 aom_h_predictor_32x32_neon + +void aom_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x64 aom_h_predictor_32x64_c + +void aom_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x8 aom_h_predictor_32x8_c + +void aom_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x16 aom_h_predictor_4x16_c + +void aom_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x4 aom_h_predictor_4x4_neon + +void aom_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x8 aom_h_predictor_4x8_c + +void aom_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x16 aom_h_predictor_64x16_c + +void aom_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x32 aom_h_predictor_64x32_c + +void aom_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x64 aom_h_predictor_64x64_c + +void aom_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x16 aom_h_predictor_8x16_c + +void aom_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x32 aom_h_predictor_8x32_c + +void aom_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x4 aom_h_predictor_8x4_c + +void aom_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x8 aom_h_predictor_8x8_neon + +void aom_highbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params, + const int bd); +#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c + +void aom_highbd_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_hmask aom_highbd_blend_a64_hmask_c + +void aom_highbd_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + int bd); +#define aom_highbd_blend_a64_mask aom_highbd_blend_a64_mask_c + +void aom_highbd_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_vmask aom_highbd_blend_a64_vmask_c + +void aom_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bd); +#define aom_highbd_convolve8_horiz aom_highbd_convolve8_horiz_c + +void aom_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bd); +#define aom_highbd_convolve8_vert aom_highbd_convolve8_vert_c + +void aom_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int filter_x_stride, + const int16_t* filter_y, + int filter_y_stride, + int w, + int h, + int bd); +#define aom_highbd_convolve_copy aom_highbd_convolve_copy_c + +void aom_highbd_dc_128_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x16 aom_highbd_dc_128_predictor_16x16_c + +void aom_highbd_dc_128_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x32 aom_highbd_dc_128_predictor_16x32_c + +void aom_highbd_dc_128_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x4 aom_highbd_dc_128_predictor_16x4_c + +void aom_highbd_dc_128_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x64 aom_highbd_dc_128_predictor_16x64_c + +void aom_highbd_dc_128_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x8 aom_highbd_dc_128_predictor_16x8_c + +void aom_highbd_dc_128_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_2x2 aom_highbd_dc_128_predictor_2x2_c + +void aom_highbd_dc_128_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x16 aom_highbd_dc_128_predictor_32x16_c + +void aom_highbd_dc_128_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x32 aom_highbd_dc_128_predictor_32x32_c + +void aom_highbd_dc_128_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x64 aom_highbd_dc_128_predictor_32x64_c + +void aom_highbd_dc_128_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x8 aom_highbd_dc_128_predictor_32x8_c + +void aom_highbd_dc_128_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x16 aom_highbd_dc_128_predictor_4x16_c + +void aom_highbd_dc_128_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x4 aom_highbd_dc_128_predictor_4x4_c + +void aom_highbd_dc_128_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x8 aom_highbd_dc_128_predictor_4x8_c + +void aom_highbd_dc_128_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x16 aom_highbd_dc_128_predictor_64x16_c + +void aom_highbd_dc_128_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x32 aom_highbd_dc_128_predictor_64x32_c + +void aom_highbd_dc_128_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x64 aom_highbd_dc_128_predictor_64x64_c + +void aom_highbd_dc_128_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x16 aom_highbd_dc_128_predictor_8x16_c + +void aom_highbd_dc_128_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x32 aom_highbd_dc_128_predictor_8x32_c + +void aom_highbd_dc_128_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x4 aom_highbd_dc_128_predictor_8x4_c + +void aom_highbd_dc_128_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x8 aom_highbd_dc_128_predictor_8x8_c + +void aom_highbd_dc_left_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x16 aom_highbd_dc_left_predictor_16x16_c + +void aom_highbd_dc_left_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x32 aom_highbd_dc_left_predictor_16x32_c + +void aom_highbd_dc_left_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x4 aom_highbd_dc_left_predictor_16x4_c + +void aom_highbd_dc_left_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x64 aom_highbd_dc_left_predictor_16x64_c + +void aom_highbd_dc_left_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x8 aom_highbd_dc_left_predictor_16x8_c + +void aom_highbd_dc_left_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_2x2 aom_highbd_dc_left_predictor_2x2_c + +void aom_highbd_dc_left_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x16 aom_highbd_dc_left_predictor_32x16_c + +void aom_highbd_dc_left_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x32 aom_highbd_dc_left_predictor_32x32_c + +void aom_highbd_dc_left_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x64 aom_highbd_dc_left_predictor_32x64_c + +void aom_highbd_dc_left_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x8 aom_highbd_dc_left_predictor_32x8_c + +void aom_highbd_dc_left_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x16 aom_highbd_dc_left_predictor_4x16_c + +void aom_highbd_dc_left_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x4 aom_highbd_dc_left_predictor_4x4_c + +void aom_highbd_dc_left_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x8 aom_highbd_dc_left_predictor_4x8_c + +void aom_highbd_dc_left_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x16 aom_highbd_dc_left_predictor_64x16_c + +void aom_highbd_dc_left_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x32 aom_highbd_dc_left_predictor_64x32_c + +void aom_highbd_dc_left_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x64 aom_highbd_dc_left_predictor_64x64_c + +void aom_highbd_dc_left_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x16 aom_highbd_dc_left_predictor_8x16_c + +void aom_highbd_dc_left_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x32 aom_highbd_dc_left_predictor_8x32_c + +void aom_highbd_dc_left_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x4 aom_highbd_dc_left_predictor_8x4_c + +void aom_highbd_dc_left_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x8 aom_highbd_dc_left_predictor_8x8_c + +void aom_highbd_dc_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_16x16_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x16 aom_highbd_dc_predictor_16x16_neon + +void aom_highbd_dc_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x32 aom_highbd_dc_predictor_16x32_c + +void aom_highbd_dc_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x4 aom_highbd_dc_predictor_16x4_c + +void aom_highbd_dc_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x64 aom_highbd_dc_predictor_16x64_c + +void aom_highbd_dc_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x8 aom_highbd_dc_predictor_16x8_c + +void aom_highbd_dc_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_2x2 aom_highbd_dc_predictor_2x2_c + +void aom_highbd_dc_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x16 aom_highbd_dc_predictor_32x16_c + +void aom_highbd_dc_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_32x32_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x32 aom_highbd_dc_predictor_32x32_neon + +void aom_highbd_dc_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x64 aom_highbd_dc_predictor_32x64_c + +void aom_highbd_dc_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x8 aom_highbd_dc_predictor_32x8_c + +void aom_highbd_dc_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x16 aom_highbd_dc_predictor_4x16_c + +void aom_highbd_dc_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_4x4_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x4 aom_highbd_dc_predictor_4x4_neon + +void aom_highbd_dc_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x8 aom_highbd_dc_predictor_4x8_c + +void aom_highbd_dc_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x16 aom_highbd_dc_predictor_64x16_c + +void aom_highbd_dc_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x32 aom_highbd_dc_predictor_64x32_c + +void aom_highbd_dc_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_64x64_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x64 aom_highbd_dc_predictor_64x64_neon + +void aom_highbd_dc_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x16 aom_highbd_dc_predictor_8x16_c + +void aom_highbd_dc_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x32 aom_highbd_dc_predictor_8x32_c + +void aom_highbd_dc_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x4 aom_highbd_dc_predictor_8x4_c + +void aom_highbd_dc_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_8x8_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x8 aom_highbd_dc_predictor_8x8_neon + +void aom_highbd_dc_top_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x16 aom_highbd_dc_top_predictor_16x16_c + +void aom_highbd_dc_top_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x32 aom_highbd_dc_top_predictor_16x32_c + +void aom_highbd_dc_top_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x4 aom_highbd_dc_top_predictor_16x4_c + +void aom_highbd_dc_top_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x64 aom_highbd_dc_top_predictor_16x64_c + +void aom_highbd_dc_top_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x8 aom_highbd_dc_top_predictor_16x8_c + +void aom_highbd_dc_top_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_2x2 aom_highbd_dc_top_predictor_2x2_c + +void aom_highbd_dc_top_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x16 aom_highbd_dc_top_predictor_32x16_c + +void aom_highbd_dc_top_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x32 aom_highbd_dc_top_predictor_32x32_c + +void aom_highbd_dc_top_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x64 aom_highbd_dc_top_predictor_32x64_c + +void aom_highbd_dc_top_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x8 aom_highbd_dc_top_predictor_32x8_c + +void aom_highbd_dc_top_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x16 aom_highbd_dc_top_predictor_4x16_c + +void aom_highbd_dc_top_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x4 aom_highbd_dc_top_predictor_4x4_c + +void aom_highbd_dc_top_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x8 aom_highbd_dc_top_predictor_4x8_c + +void aom_highbd_dc_top_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x16 aom_highbd_dc_top_predictor_64x16_c + +void aom_highbd_dc_top_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x32 aom_highbd_dc_top_predictor_64x32_c + +void aom_highbd_dc_top_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x64 aom_highbd_dc_top_predictor_64x64_c + +void aom_highbd_dc_top_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x16 aom_highbd_dc_top_predictor_8x16_c + +void aom_highbd_dc_top_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x32 aom_highbd_dc_top_predictor_8x32_c + +void aom_highbd_dc_top_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x4 aom_highbd_dc_top_predictor_8x4_c + +void aom_highbd_dc_top_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x8 aom_highbd_dc_top_predictor_8x8_c + +void aom_highbd_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x16 aom_highbd_h_predictor_16x16_c + +void aom_highbd_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x32 aom_highbd_h_predictor_16x32_c + +void aom_highbd_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x4 aom_highbd_h_predictor_16x4_c + +void aom_highbd_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x64 aom_highbd_h_predictor_16x64_c + +void aom_highbd_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x8 aom_highbd_h_predictor_16x8_c + +void aom_highbd_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_2x2 aom_highbd_h_predictor_2x2_c + +void aom_highbd_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x16 aom_highbd_h_predictor_32x16_c + +void aom_highbd_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x32 aom_highbd_h_predictor_32x32_c + +void aom_highbd_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x64 aom_highbd_h_predictor_32x64_c + +void aom_highbd_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x8 aom_highbd_h_predictor_32x8_c + +void aom_highbd_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x16 aom_highbd_h_predictor_4x16_c + +void aom_highbd_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x4 aom_highbd_h_predictor_4x4_c + +void aom_highbd_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x8 aom_highbd_h_predictor_4x8_c + +void aom_highbd_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x16 aom_highbd_h_predictor_64x16_c + +void aom_highbd_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x32 aom_highbd_h_predictor_64x32_c + +void aom_highbd_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x64 aom_highbd_h_predictor_64x64_c + +void aom_highbd_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x16 aom_highbd_h_predictor_8x16_c + +void aom_highbd_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x32 aom_highbd_h_predictor_8x32_c + +void aom_highbd_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x4 aom_highbd_h_predictor_8x4_c + +void aom_highbd_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x8 aom_highbd_h_predictor_8x8_c + +void aom_highbd_lpf_horizontal_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_14 aom_highbd_lpf_horizontal_14_c + +void aom_highbd_lpf_horizontal_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_14_dual aom_highbd_lpf_horizontal_14_dual_c + +void aom_highbd_lpf_horizontal_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_4 aom_highbd_lpf_horizontal_4_c + +void aom_highbd_lpf_horizontal_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_4_dual aom_highbd_lpf_horizontal_4_dual_c + +void aom_highbd_lpf_horizontal_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_6 aom_highbd_lpf_horizontal_6_c + +void aom_highbd_lpf_horizontal_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_6_dual aom_highbd_lpf_horizontal_6_dual_c + +void aom_highbd_lpf_horizontal_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_8 aom_highbd_lpf_horizontal_8_c + +void aom_highbd_lpf_horizontal_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_8_dual aom_highbd_lpf_horizontal_8_dual_c + +void aom_highbd_lpf_vertical_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_14 aom_highbd_lpf_vertical_14_c + +void aom_highbd_lpf_vertical_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_14_dual aom_highbd_lpf_vertical_14_dual_c + +void aom_highbd_lpf_vertical_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_4 aom_highbd_lpf_vertical_4_c + +void aom_highbd_lpf_vertical_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_4_dual aom_highbd_lpf_vertical_4_dual_c + +void aom_highbd_lpf_vertical_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_6 aom_highbd_lpf_vertical_6_c + +void aom_highbd_lpf_vertical_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_6_dual aom_highbd_lpf_vertical_6_dual_c + +void aom_highbd_lpf_vertical_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_8 aom_highbd_lpf_vertical_8_c + +void aom_highbd_lpf_vertical_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_8_dual aom_highbd_lpf_vertical_8_dual_c + +void aom_highbd_paeth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x16 aom_highbd_paeth_predictor_16x16_c + +void aom_highbd_paeth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x32 aom_highbd_paeth_predictor_16x32_c + +void aom_highbd_paeth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x4 aom_highbd_paeth_predictor_16x4_c + +void aom_highbd_paeth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x64 aom_highbd_paeth_predictor_16x64_c + +void aom_highbd_paeth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x8 aom_highbd_paeth_predictor_16x8_c + +void aom_highbd_paeth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_2x2 aom_highbd_paeth_predictor_2x2_c + +void aom_highbd_paeth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x16 aom_highbd_paeth_predictor_32x16_c + +void aom_highbd_paeth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x32 aom_highbd_paeth_predictor_32x32_c + +void aom_highbd_paeth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x64 aom_highbd_paeth_predictor_32x64_c + +void aom_highbd_paeth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x8 aom_highbd_paeth_predictor_32x8_c + +void aom_highbd_paeth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x16 aom_highbd_paeth_predictor_4x16_c + +void aom_highbd_paeth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x4 aom_highbd_paeth_predictor_4x4_c + +void aom_highbd_paeth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x8 aom_highbd_paeth_predictor_4x8_c + +void aom_highbd_paeth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x16 aom_highbd_paeth_predictor_64x16_c + +void aom_highbd_paeth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x32 aom_highbd_paeth_predictor_64x32_c + +void aom_highbd_paeth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x64 aom_highbd_paeth_predictor_64x64_c + +void aom_highbd_paeth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x16 aom_highbd_paeth_predictor_8x16_c + +void aom_highbd_paeth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x32 aom_highbd_paeth_predictor_8x32_c + +void aom_highbd_paeth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x4 aom_highbd_paeth_predictor_8x4_c + +void aom_highbd_paeth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x8 aom_highbd_paeth_predictor_8x8_c + +void aom_highbd_smooth_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x16 \ + aom_highbd_smooth_h_predictor_16x16_c + +void aom_highbd_smooth_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x32 \ + aom_highbd_smooth_h_predictor_16x32_c + +void aom_highbd_smooth_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x4 aom_highbd_smooth_h_predictor_16x4_c + +void aom_highbd_smooth_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x64 \ + aom_highbd_smooth_h_predictor_16x64_c + +void aom_highbd_smooth_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x8 aom_highbd_smooth_h_predictor_16x8_c + +void aom_highbd_smooth_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_2x2 aom_highbd_smooth_h_predictor_2x2_c + +void aom_highbd_smooth_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x16 \ + aom_highbd_smooth_h_predictor_32x16_c + +void aom_highbd_smooth_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x32 \ + aom_highbd_smooth_h_predictor_32x32_c + +void aom_highbd_smooth_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x64 \ + aom_highbd_smooth_h_predictor_32x64_c + +void aom_highbd_smooth_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x8 aom_highbd_smooth_h_predictor_32x8_c + +void aom_highbd_smooth_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x16 aom_highbd_smooth_h_predictor_4x16_c + +void aom_highbd_smooth_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x4 aom_highbd_smooth_h_predictor_4x4_c + +void aom_highbd_smooth_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x8 aom_highbd_smooth_h_predictor_4x8_c + +void aom_highbd_smooth_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x16 \ + aom_highbd_smooth_h_predictor_64x16_c + +void aom_highbd_smooth_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x32 \ + aom_highbd_smooth_h_predictor_64x32_c + +void aom_highbd_smooth_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x64 \ + aom_highbd_smooth_h_predictor_64x64_c + +void aom_highbd_smooth_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x16 aom_highbd_smooth_h_predictor_8x16_c + +void aom_highbd_smooth_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x32 aom_highbd_smooth_h_predictor_8x32_c + +void aom_highbd_smooth_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x4 aom_highbd_smooth_h_predictor_8x4_c + +void aom_highbd_smooth_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x8 aom_highbd_smooth_h_predictor_8x8_c + +void aom_highbd_smooth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x16 aom_highbd_smooth_predictor_16x16_c + +void aom_highbd_smooth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x32 aom_highbd_smooth_predictor_16x32_c + +void aom_highbd_smooth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x4 aom_highbd_smooth_predictor_16x4_c + +void aom_highbd_smooth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x64 aom_highbd_smooth_predictor_16x64_c + +void aom_highbd_smooth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x8 aom_highbd_smooth_predictor_16x8_c + +void aom_highbd_smooth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_2x2 aom_highbd_smooth_predictor_2x2_c + +void aom_highbd_smooth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x16 aom_highbd_smooth_predictor_32x16_c + +void aom_highbd_smooth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x32 aom_highbd_smooth_predictor_32x32_c + +void aom_highbd_smooth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x64 aom_highbd_smooth_predictor_32x64_c + +void aom_highbd_smooth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x8 aom_highbd_smooth_predictor_32x8_c + +void aom_highbd_smooth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x16 aom_highbd_smooth_predictor_4x16_c + +void aom_highbd_smooth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x4 aom_highbd_smooth_predictor_4x4_c + +void aom_highbd_smooth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x8 aom_highbd_smooth_predictor_4x8_c + +void aom_highbd_smooth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x16 aom_highbd_smooth_predictor_64x16_c + +void aom_highbd_smooth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x32 aom_highbd_smooth_predictor_64x32_c + +void aom_highbd_smooth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x64 aom_highbd_smooth_predictor_64x64_c + +void aom_highbd_smooth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x16 aom_highbd_smooth_predictor_8x16_c + +void aom_highbd_smooth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x32 aom_highbd_smooth_predictor_8x32_c + +void aom_highbd_smooth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x4 aom_highbd_smooth_predictor_8x4_c + +void aom_highbd_smooth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x8 aom_highbd_smooth_predictor_8x8_c + +void aom_highbd_smooth_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x16 \ + aom_highbd_smooth_v_predictor_16x16_c + +void aom_highbd_smooth_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x32 \ + aom_highbd_smooth_v_predictor_16x32_c + +void aom_highbd_smooth_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x4 aom_highbd_smooth_v_predictor_16x4_c + +void aom_highbd_smooth_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x64 \ + aom_highbd_smooth_v_predictor_16x64_c + +void aom_highbd_smooth_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x8 aom_highbd_smooth_v_predictor_16x8_c + +void aom_highbd_smooth_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_2x2 aom_highbd_smooth_v_predictor_2x2_c + +void aom_highbd_smooth_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x16 \ + aom_highbd_smooth_v_predictor_32x16_c + +void aom_highbd_smooth_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x32 \ + aom_highbd_smooth_v_predictor_32x32_c + +void aom_highbd_smooth_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x64 \ + aom_highbd_smooth_v_predictor_32x64_c + +void aom_highbd_smooth_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x8 aom_highbd_smooth_v_predictor_32x8_c + +void aom_highbd_smooth_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x16 aom_highbd_smooth_v_predictor_4x16_c + +void aom_highbd_smooth_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x4 aom_highbd_smooth_v_predictor_4x4_c + +void aom_highbd_smooth_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x8 aom_highbd_smooth_v_predictor_4x8_c + +void aom_highbd_smooth_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x16 \ + aom_highbd_smooth_v_predictor_64x16_c + +void aom_highbd_smooth_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x32 \ + aom_highbd_smooth_v_predictor_64x32_c + +void aom_highbd_smooth_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x64 \ + aom_highbd_smooth_v_predictor_64x64_c + +void aom_highbd_smooth_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x16 aom_highbd_smooth_v_predictor_8x16_c + +void aom_highbd_smooth_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x32 aom_highbd_smooth_v_predictor_8x32_c + +void aom_highbd_smooth_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x4 aom_highbd_smooth_v_predictor_8x4_c + +void aom_highbd_smooth_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x8 aom_highbd_smooth_v_predictor_8x8_c + +void aom_highbd_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x16 aom_highbd_v_predictor_16x16_c + +void aom_highbd_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x32 aom_highbd_v_predictor_16x32_c + +void aom_highbd_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x4 aom_highbd_v_predictor_16x4_c + +void aom_highbd_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x64 aom_highbd_v_predictor_16x64_c + +void aom_highbd_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x8 aom_highbd_v_predictor_16x8_c + +void aom_highbd_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_2x2 aom_highbd_v_predictor_2x2_c + +void aom_highbd_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x16 aom_highbd_v_predictor_32x16_c + +void aom_highbd_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x32 aom_highbd_v_predictor_32x32_c + +void aom_highbd_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x64 aom_highbd_v_predictor_32x64_c + +void aom_highbd_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x8 aom_highbd_v_predictor_32x8_c + +void aom_highbd_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x16 aom_highbd_v_predictor_4x16_c + +void aom_highbd_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x4 aom_highbd_v_predictor_4x4_c + +void aom_highbd_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x8 aom_highbd_v_predictor_4x8_c + +void aom_highbd_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x16 aom_highbd_v_predictor_64x16_c + +void aom_highbd_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x32 aom_highbd_v_predictor_64x32_c + +void aom_highbd_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x64 aom_highbd_v_predictor_64x64_c + +void aom_highbd_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x16 aom_highbd_v_predictor_8x16_c + +void aom_highbd_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x32 aom_highbd_v_predictor_8x32_c + +void aom_highbd_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x4 aom_highbd_v_predictor_8x4_c + +void aom_highbd_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x8 aom_highbd_v_predictor_8x8_c + +void aom_lowbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params); +void aom_lowbd_blend_a64_d16_mask_neon(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params); +#define aom_lowbd_blend_a64_d16_mask aom_lowbd_blend_a64_d16_mask_neon + +void aom_lpf_horizontal_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_14_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_14 aom_lpf_horizontal_14_neon + +void aom_lpf_horizontal_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_14_dual aom_lpf_horizontal_14_dual_c + +void aom_lpf_horizontal_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_4_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_neon + +void aom_lpf_horizontal_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c + +void aom_lpf_horizontal_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_6_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_6 aom_lpf_horizontal_6_neon + +void aom_lpf_horizontal_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_6_dual aom_lpf_horizontal_6_dual_c + +void aom_lpf_horizontal_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_8_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_neon + +void aom_lpf_horizontal_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c + +void aom_lpf_vertical_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_14_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_14 aom_lpf_vertical_14_neon + +void aom_lpf_vertical_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_14_dual aom_lpf_vertical_14_dual_c + +void aom_lpf_vertical_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_4_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_4 aom_lpf_vertical_4_neon + +void aom_lpf_vertical_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c + +void aom_lpf_vertical_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_6_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_6 aom_lpf_vertical_6_neon + +void aom_lpf_vertical_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_6_dual aom_lpf_vertical_6_dual_c + +void aom_lpf_vertical_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_8_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_8 aom_lpf_vertical_8_neon + +void aom_lpf_vertical_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c + +void aom_paeth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x16 aom_paeth_predictor_16x16_c + +void aom_paeth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x32 aom_paeth_predictor_16x32_c + +void aom_paeth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x4 aom_paeth_predictor_16x4_c + +void aom_paeth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x64 aom_paeth_predictor_16x64_c + +void aom_paeth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x8 aom_paeth_predictor_16x8_c + +void aom_paeth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_2x2 aom_paeth_predictor_2x2_c + +void aom_paeth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x16 aom_paeth_predictor_32x16_c + +void aom_paeth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x32 aom_paeth_predictor_32x32_c + +void aom_paeth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x64 aom_paeth_predictor_32x64_c + +void aom_paeth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x8 aom_paeth_predictor_32x8_c + +void aom_paeth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x16 aom_paeth_predictor_4x16_c + +void aom_paeth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x4 aom_paeth_predictor_4x4_c + +void aom_paeth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x8 aom_paeth_predictor_4x8_c + +void aom_paeth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x16 aom_paeth_predictor_64x16_c + +void aom_paeth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x32 aom_paeth_predictor_64x32_c + +void aom_paeth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x64 aom_paeth_predictor_64x64_c + +void aom_paeth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x16 aom_paeth_predictor_8x16_c + +void aom_paeth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x32 aom_paeth_predictor_8x32_c + +void aom_paeth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x4 aom_paeth_predictor_8x4_c + +void aom_paeth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x8 aom_paeth_predictor_8x8_c + +void aom_smooth_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c + +void aom_smooth_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c + +void aom_smooth_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x4 aom_smooth_h_predictor_16x4_c + +void aom_smooth_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x64 aom_smooth_h_predictor_16x64_c + +void aom_smooth_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c + +void aom_smooth_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_2x2 aom_smooth_h_predictor_2x2_c + +void aom_smooth_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c + +void aom_smooth_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c + +void aom_smooth_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x64 aom_smooth_h_predictor_32x64_c + +void aom_smooth_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x8 aom_smooth_h_predictor_32x8_c + +void aom_smooth_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x16 aom_smooth_h_predictor_4x16_c + +void aom_smooth_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c + +void aom_smooth_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c + +void aom_smooth_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x16 aom_smooth_h_predictor_64x16_c + +void aom_smooth_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x32 aom_smooth_h_predictor_64x32_c + +void aom_smooth_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x64 aom_smooth_h_predictor_64x64_c + +void aom_smooth_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c + +void aom_smooth_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x32 aom_smooth_h_predictor_8x32_c + +void aom_smooth_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c + +void aom_smooth_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c + +void aom_smooth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x16 aom_smooth_predictor_16x16_c + +void aom_smooth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x32 aom_smooth_predictor_16x32_c + +void aom_smooth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x4 aom_smooth_predictor_16x4_c + +void aom_smooth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x64 aom_smooth_predictor_16x64_c + +void aom_smooth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x8 aom_smooth_predictor_16x8_c + +void aom_smooth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_2x2 aom_smooth_predictor_2x2_c + +void aom_smooth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x16 aom_smooth_predictor_32x16_c + +void aom_smooth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x32 aom_smooth_predictor_32x32_c + +void aom_smooth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x64 aom_smooth_predictor_32x64_c + +void aom_smooth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x8 aom_smooth_predictor_32x8_c + +void aom_smooth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x16 aom_smooth_predictor_4x16_c + +void aom_smooth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x4 aom_smooth_predictor_4x4_c + +void aom_smooth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x8 aom_smooth_predictor_4x8_c + +void aom_smooth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x16 aom_smooth_predictor_64x16_c + +void aom_smooth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x32 aom_smooth_predictor_64x32_c + +void aom_smooth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x64 aom_smooth_predictor_64x64_c + +void aom_smooth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x16 aom_smooth_predictor_8x16_c + +void aom_smooth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x32 aom_smooth_predictor_8x32_c + +void aom_smooth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x4 aom_smooth_predictor_8x4_c + +void aom_smooth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x8 aom_smooth_predictor_8x8_c + +void aom_smooth_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c + +void aom_smooth_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c + +void aom_smooth_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x4 aom_smooth_v_predictor_16x4_c + +void aom_smooth_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x64 aom_smooth_v_predictor_16x64_c + +void aom_smooth_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c + +void aom_smooth_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_2x2 aom_smooth_v_predictor_2x2_c + +void aom_smooth_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c + +void aom_smooth_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c + +void aom_smooth_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x64 aom_smooth_v_predictor_32x64_c + +void aom_smooth_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x8 aom_smooth_v_predictor_32x8_c + +void aom_smooth_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x16 aom_smooth_v_predictor_4x16_c + +void aom_smooth_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c + +void aom_smooth_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c + +void aom_smooth_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x16 aom_smooth_v_predictor_64x16_c + +void aom_smooth_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x32 aom_smooth_v_predictor_64x32_c + +void aom_smooth_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x64 aom_smooth_v_predictor_64x64_c + +void aom_smooth_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c + +void aom_smooth_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x32 aom_smooth_v_predictor_8x32_c + +void aom_smooth_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c + +void aom_smooth_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c + +void aom_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x16 aom_v_predictor_16x16_neon + +void aom_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x32 aom_v_predictor_16x32_c + +void aom_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x4 aom_v_predictor_16x4_c + +void aom_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x64 aom_v_predictor_16x64_c + +void aom_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x8 aom_v_predictor_16x8_c + +void aom_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_2x2 aom_v_predictor_2x2_c + +void aom_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x16 aom_v_predictor_32x16_c + +void aom_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x32 aom_v_predictor_32x32_neon + +void aom_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x64 aom_v_predictor_32x64_c + +void aom_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x8 aom_v_predictor_32x8_c + +void aom_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x16 aom_v_predictor_4x16_c + +void aom_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x4 aom_v_predictor_4x4_neon + +void aom_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x8 aom_v_predictor_4x8_c + +void aom_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x16 aom_v_predictor_64x16_c + +void aom_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x32 aom_v_predictor_64x32_c + +void aom_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x64 aom_v_predictor_64x64_c + +void aom_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x16 aom_v_predictor_8x16_c + +void aom_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x32 aom_v_predictor_8x32_c + +void aom_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x4 aom_v_predictor_8x4_c + +void aom_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x8 aom_v_predictor_8x8_neon + +void aom_dsp_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_scale_rtcd.h b/third_party/libaom/source/config/ios/arm-neon/config/aom_scale_rtcd.h new file mode 100644 index 0000000..e27b558 --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_scale_rtcd.h
@@ -0,0 +1,172 @@ +// This file is generated. Do not edit. +#ifndef AOM_SCALE_RTCD_H_ +#define AOM_SCALE_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +struct yv12_buffer_config; + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_borders aom_extend_frame_borders_c + +void aom_extend_frame_borders_y_c(struct yv12_buffer_config* ybf); +#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c + +void aom_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c + +void aom_horizontal_line_2_1_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c + +void aom_horizontal_line_5_3_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c + +void aom_horizontal_line_5_4_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c + +void aom_vertical_band_2_1_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c + +void aom_vertical_band_2_1_scale_i_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c + +void aom_vertical_band_5_3_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c + +void aom_vertical_band_5_4_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c + +void aom_yv12_copy_frame_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + const int num_planes); +#define aom_yv12_copy_frame aom_yv12_copy_frame_c + +void aom_yv12_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_u aom_yv12_copy_u_c + +void aom_yv12_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_v aom_yv12_copy_v_c + +void aom_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc); +#define aom_yv12_copy_y aom_yv12_copy_y_c + +void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c + +void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c + +void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c + +void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c + +void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c + +void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c + +void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config* src_ybc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_ybc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c + +int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config* ybf, + int new_border, + int byte_alignment, + int num_planes); +#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c + +void aom_scale_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/av1_rtcd.h b/third_party/libaom/source/config/ios/arm-neon/config/av1_rtcd.h new file mode 100644 index 0000000..6139fefa --- /dev/null +++ b/third_party/libaom/source/config/ios/arm-neon/config/av1_rtcd.h
@@ -0,0 +1,1171 @@ +// This file is generated. Do not edit. +#ifndef AV1_RTCD_H_ +#define AV1_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * AV1 + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/txfm_common.h" +#include "av1/common/av1_txfm.h" +#include "av1/common/common.h" +#include "av1/common/convolve.h" +#include "av1/common/enums.h" +#include "av1/common/filter.h" +#include "av1/common/odintrin.h" +#include "av1/common/quant_common.h" +#include "av1/common/restoration.h" + +struct macroblockd; + +/* Encoder forward decls */ +struct macroblock; +struct txfm_param; +struct aom_variance_vtable; +struct search_site_config; +struct yv12_buffer_config; +struct NN_CONFIG; +typedef struct NN_CONFIG NN_CONFIG; + +enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION); +#if CONFIG_NN_V2 +enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS); +struct NN_CONFIG_V2; +typedef struct NN_CONFIG_V2 NN_CONFIG_V2; +struct FC_LAYER; +typedef struct FC_LAYER FC_LAYER; +#endif // CONFIG_NN_V2 + +struct CNN_CONFIG; +typedef struct CNN_CONFIG CNN_CONFIG; +struct CNN_LAYER_CONFIG; +typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG; +struct CNN_THREAD_DATA; +typedef struct CNN_THREAD_DATA CNN_THREAD_DATA; +struct CNN_BRANCH_CONFIG; +typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG; +struct CNN_MULTI_OUT; +typedef struct CNN_MULTI_OUT CNN_MULTI_OUT; + +/* Function pointers return by CfL functions */ +typedef void (*cfl_subsample_lbd_fn)(const uint8_t* input, + int input_stride, + uint16_t* output_q3); + +#if CONFIG_AV1_HIGHBITDEPTH +typedef void (*cfl_subsample_hbd_fn)(const uint16_t* input, + int input_stride, + uint16_t* output_q3); + +typedef void (*cfl_predict_hbd_fn)(const int16_t* src, + uint16_t* dst, + int dst_stride, + int alpha_q3, + int bd); +#endif + +typedef void (*cfl_subtract_average_fn)(const uint16_t* src, int16_t* dst); + +typedef void (*cfl_predict_lbd_fn)(const int16_t* src, + uint8_t* dst, + int dst_stride, + int alpha_q3); + +#ifdef __cplusplus +extern "C" { +#endif + +void av1_apply_selfguided_restoration_c(const uint8_t* dat, + int width, + int height, + int stride, + int eps, + const int* xqd, + uint8_t* dst, + int dst_stride, + int32_t* tmpbuf, + int bit_depth, + int highbd); +void av1_apply_selfguided_restoration_neon(const uint8_t* dat, + int width, + int height, + int stride, + int eps, + const int* xqd, + uint8_t* dst, + int dst_stride, + int32_t* tmpbuf, + int bit_depth, + int highbd); +#define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_neon + +void av1_build_compound_diffwtd_mask_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w); +#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c + +void av1_build_compound_diffwtd_mask_d16_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const CONV_BUF_TYPE* src0, + int src0_stride, + const CONV_BUF_TYPE* src1, + int src1_stride, + int h, + int w, + ConvolveParams* conv_params, + int bd); +void av1_build_compound_diffwtd_mask_d16_neon(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const CONV_BUF_TYPE* src0, + int src0_stride, + const CONV_BUF_TYPE* src1, + int src1_stride, + int h, + int w, + ConvolveParams* conv_params, + int bd); +#define av1_build_compound_diffwtd_mask_d16 \ + av1_build_compound_diffwtd_mask_d16_neon + +void av1_build_compound_diffwtd_mask_highbd_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w, + int bd); +#define av1_build_compound_diffwtd_mask_highbd \ + av1_build_compound_diffwtd_mask_highbd_c + +int64_t av1_calc_frame_error_c(const uint8_t* const ref, + int stride, + const uint8_t* const dst, + int p_width, + int p_height, + int p_stride); +#define av1_calc_frame_error av1_calc_frame_error_c + +void av1_cnn_activate_c(float** input, + int channels, + int width, + int height, + int stride, + ACTIVATION layer_activation); +#define av1_cnn_activate av1_cnn_activate_c + +void av1_cnn_add_c(float** input, + int channels, + int width, + int height, + int stride, + const float** add); +#define av1_cnn_add av1_cnn_add_c + +void av1_cnn_batchnorm_c(float** image, + int channels, + int width, + int height, + int stride, + const float* gamma, + const float* beta, + const float* mean, + const float* std); +#define av1_cnn_batchnorm av1_cnn_batchnorm_c + +void av1_cnn_convolve_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_LAYER_CONFIG* layer_config, + float** output, + int out_stride, + int start_idx, + int step); +#define av1_cnn_convolve av1_cnn_convolve_c + +void av1_cnn_deconvolve_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_LAYER_CONFIG* layer_config, + float** output, + int out_stride); +#define av1_cnn_deconvolve av1_cnn_deconvolve_c + +void av1_cnn_predict_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_CONFIG* cnn_config, + const CNN_THREAD_DATA* thread_data, + CNN_MULTI_OUT* output_struct); +#define av1_cnn_predict av1_cnn_predict_c + +void av1_convolve_2d_copy_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_2d_copy_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_copy_sr av1_convolve_2d_copy_sr_neon + +void av1_convolve_2d_scale_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int x_step_qn, + const int subpel_y_qn, + const int y_step_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_scale av1_convolve_2d_scale_c + +void av1_convolve_2d_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_2d_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_sr av1_convolve_2d_sr_neon + +void av1_convolve_horiz_rs_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn); +#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c + +void av1_convolve_x_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_x_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_x_sr av1_convolve_x_sr_neon + +void av1_convolve_y_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_y_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_y_sr av1_convolve_y_sr_neon + +void av1_dist_wtd_convolve_2d_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_2d_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_neon + +void av1_dist_wtd_convolve_2d_copy_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_2d_copy_neon( + const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_neon + +void av1_dist_wtd_convolve_x_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_x_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_neon + +void av1_dist_wtd_convolve_y_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_y_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_neon + +void av1_dr_prediction_z1_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int dx, + int dy); +#define av1_dr_prediction_z1 av1_dr_prediction_z1_c + +void av1_dr_prediction_z2_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z2 av1_dr_prediction_z2_c + +void av1_dr_prediction_z3_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z3 av1_dr_prediction_z3_c + +void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength); +#define av1_filter_intra_edge av1_filter_intra_edge_c + +void av1_filter_intra_edge_high_c(uint16_t* p, int sz, int strength); +#define av1_filter_intra_edge_high av1_filter_intra_edge_high_c + +void av1_filter_intra_predictor_c(uint8_t* dst, + ptrdiff_t stride, + TX_SIZE tx_size, + const uint8_t* above, + const uint8_t* left, + int mode); +#define av1_filter_intra_predictor av1_filter_intra_predictor_c + +void av1_highbd_convolve8_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8 av1_highbd_convolve8_c + +void av1_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c + +void av1_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c + +void av1_highbd_convolve_2d_copy_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_copy_sr av1_highbd_convolve_2d_copy_sr_c + +void av1_highbd_convolve_2d_scale_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int x_step_qn, + const int subpel_y_qn, + const int y_step_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c + +void av1_highbd_convolve_2d_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c + +void av1_highbd_convolve_avg_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c + +void av1_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c + +void av1_highbd_convolve_horiz_rs_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn, + int bd); +#define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c + +void av1_highbd_convolve_x_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c + +void av1_highbd_convolve_y_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c + +void av1_highbd_dist_wtd_convolve_2d_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c + +void av1_highbd_dist_wtd_convolve_2d_copy_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d_copy \ + av1_highbd_dist_wtd_convolve_2d_copy_c + +void av1_highbd_dist_wtd_convolve_x_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c + +void av1_highbd_dist_wtd_convolve_y_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c + +void av1_highbd_dr_prediction_z1_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c + +void av1_highbd_dr_prediction_z2_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c + +void av1_highbd_dr_prediction_z3_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c + +void av1_highbd_inv_txfm_add_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c + +void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c + +void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c + +void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c + +void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c + +void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c + +void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c + +void av1_highbd_iwht4x4_16_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c + +void av1_highbd_iwht4x4_1_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c + +void av1_highbd_warp_affine_c(const int32_t* mat, + const uint16_t* ref, + int width, + int height, + int stride, + uint16_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + int bd, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_highbd_warp_affine av1_highbd_warp_affine_c + +void av1_highbd_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params, + int bd); +#define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c + +void av1_inv_txfm2d_add_16x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c + +void av1_inv_txfm2d_add_16x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c + +void av1_inv_txfm2d_add_16x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c + +void av1_inv_txfm2d_add_16x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c + +void av1_inv_txfm2d_add_16x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c + +void av1_inv_txfm2d_add_32x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c + +void av1_inv_txfm2d_add_32x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c + +void av1_inv_txfm2d_add_32x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c + +void av1_inv_txfm2d_add_32x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c + +void av1_inv_txfm2d_add_4x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c + +void av1_inv_txfm2d_add_4x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c + +void av1_inv_txfm2d_add_4x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c + +void av1_inv_txfm2d_add_64x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c + +void av1_inv_txfm2d_add_64x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c + +void av1_inv_txfm2d_add_64x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c + +void av1_inv_txfm2d_add_8x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c + +void av1_inv_txfm2d_add_8x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c + +void av1_inv_txfm2d_add_8x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c + +void av1_inv_txfm2d_add_8x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c + +void av1_inv_txfm_add_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +void av1_inv_txfm_add_neon(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_inv_txfm_add av1_inv_txfm_add_neon + +void av1_round_shift_array_c(int32_t* arr, int size, int bit); +void av1_round_shift_array_neon(int32_t* arr, int size, int bit); +#define av1_round_shift_array av1_round_shift_array_neon + +int av1_selfguided_restoration_c(const uint8_t* dgd8, + int width, + int height, + int dgd_stride, + int32_t* flt0, + int32_t* flt1, + int flt_stride, + int sgr_params_idx, + int bit_depth, + int highbd); +int av1_selfguided_restoration_neon(const uint8_t* dgd8, + int width, + int height, + int dgd_stride, + int32_t* flt0, + int32_t* flt1, + int flt_stride, + int sgr_params_idx, + int bit_depth, + int highbd); +#define av1_selfguided_restoration av1_selfguided_restoration_neon + +void av1_upsample_intra_edge_c(uint8_t* p, int sz); +#define av1_upsample_intra_edge av1_upsample_intra_edge_c + +void av1_upsample_intra_edge_high_c(uint16_t* p, int sz, int bd); +#define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c + +void av1_warp_affine_c(const int32_t* mat, + const uint8_t* ref, + int width, + int height, + int stride, + uint8_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +void av1_warp_affine_neon(const int32_t* mat, + const uint8_t* ref, + int width, + int height, + int stride, + uint8_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_warp_affine av1_warp_affine_neon + +void av1_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params); +void av1_wiener_convolve_add_src_neon(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params); +#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_neon + +void cdef_copy_rect8_16bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint16_t* src, + int sstride, + int v, + int h); +void cdef_copy_rect8_16bit_to_16bit_neon(uint16_t* dst, + int dstride, + const uint16_t* src, + int sstride, + int v, + int h); +#define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_neon + +void cdef_copy_rect8_8bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint8_t* src, + int sstride, + int v, + int h); +void cdef_copy_rect8_8bit_to_16bit_neon(uint16_t* dst, + int dstride, + const uint8_t* src, + int sstride, + int v, + int h); +#define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_neon + +void cdef_filter_block_c(uint8_t* dst8, + uint16_t* dst16, + int dstride, + const uint16_t* in, + int pri_strength, + int sec_strength, + int dir, + int pri_damping, + int sec_damping, + int bsize, + int coeff_shift); +void cdef_filter_block_neon(uint8_t* dst8, + uint16_t* dst16, + int dstride, + const uint16_t* in, + int pri_strength, + int sec_strength, + int dir, + int pri_damping, + int sec_damping, + int bsize, + int coeff_shift); +#define cdef_filter_block cdef_filter_block_neon + +int cdef_find_dir_c(const uint16_t* img, + int stride, + int32_t* var, + int coeff_shift); +int cdef_find_dir_neon(const uint16_t* img, + int stride, + int32_t* var, + int coeff_shift); +#define cdef_find_dir cdef_find_dir_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_neon + +cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size); +cfl_predict_hbd_fn cfl_get_predict_hbd_fn_neon(TX_SIZE tx_size); +#define cfl_get_predict_hbd_fn cfl_get_predict_hbd_fn_neon + +cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size); +cfl_predict_lbd_fn cfl_get_predict_lbd_fn_neon(TX_SIZE tx_size); +#define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_neon + +cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size); +cfl_subtract_average_fn cfl_get_subtract_average_fn_neon(TX_SIZE tx_size); +#define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_neon + +void av1_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_config.asm b/third_party/libaom/source/config/ios/arm64/config/aom_config.asm new file mode 100644 index 0000000..b85b52d --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/aom_config.asm
@@ -0,0 +1,80 @@ +; +; Copyright (c) 2020, Alliance for Open Media. All rights reserved +; +; This source code is subject to the terms of the BSD 2 Clause License and +; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License +; was not distributed with this source code in the LICENSE file, you can +; obtain it at www.aomedia.org/license/software. If the Alliance for Open +; Media Patent License 1.0 was not distributed with this source code in the +; PATENTS file, you can obtain it at www.aomedia.org/license/patent. +; +ARCH_ARM equ 1 +ARCH_MIPS equ 0 +ARCH_PPC equ 0 +ARCH_X86 equ 0 +ARCH_X86_64 equ 0 +CONFIG_ACCOUNTING equ 0 +CONFIG_ANALYZER equ 0 +CONFIG_AV1_DECODER equ 1 +CONFIG_AV1_ENCODER equ 0 +CONFIG_AV1_HIGHBITDEPTH equ 1 +CONFIG_BIG_ENDIAN equ 0 +CONFIG_BITSTREAM_DEBUG equ 0 +CONFIG_COEFFICIENT_RANGE_CHECKING equ 0 +CONFIG_COLLECT_COMPONENT_TIMING equ 0 +CONFIG_COLLECT_PARTITION_STATS equ 0 +CONFIG_COLLECT_RD_STATS equ 0 +CONFIG_DEBUG equ 0 +CONFIG_DENOISE equ 1 +CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1 +CONFIG_DIST_8X8 equ 0 +CONFIG_ENTROPY_STATS equ 0 +CONFIG_GCC equ 1 +CONFIG_GCOV equ 0 +CONFIG_GPROF equ 0 +CONFIG_HTB_TRELLIS equ 0 +CONFIG_INSPECTION equ 0 +CONFIG_INTERNAL_STATS equ 0 +CONFIG_INTER_STATS_ONLY equ 0 +CONFIG_LIBYUV equ 0 +CONFIG_LPF_MASK equ 0 +CONFIG_MAX_DECODE_PROFILE equ 0 +CONFIG_MISMATCH_DEBUG equ 0 +CONFIG_MULTITHREAD equ 1 +CONFIG_NN_V2 equ 0 +CONFIG_NORMAL_TILE_MODE equ 1 +CONFIG_OS_SUPPORT equ 1 +CONFIG_PIC equ 0 +CONFIG_RD_DEBUG equ 0 +CONFIG_REALTIME_ONLY equ 0 +CONFIG_RUNTIME_CPU_DETECT equ 0 +CONFIG_SHARED equ 0 +CONFIG_SHARP_SETTINGS equ 0 +CONFIG_SIZE_LIMIT equ 1 +CONFIG_SPATIAL_RESAMPLING equ 1 +CONFIG_SPEED_STATS equ 0 +CONFIG_SUPERRES_IN_RECODE equ 1 +CONFIG_TUNE_VMAF equ 0 +CONFIG_WEBM_IO equ 1 +DECODE_HEIGHT_LIMIT equ 16384 +DECODE_WIDTH_LIMIT equ 16384 +FORCE_HIGHBITDEPTH_DECODING equ 0 +HAVE_AVX equ 0 +HAVE_AVX2 equ 0 +HAVE_DSPR2 equ 0 +HAVE_FEXCEPT equ 1 +HAVE_MIPS32 equ 0 +HAVE_MIPS64 equ 0 +HAVE_MMX equ 0 +HAVE_MSA equ 0 +HAVE_NEON equ 1 +HAVE_PTHREAD_H equ 1 +HAVE_SSE equ 0 +HAVE_SSE2 equ 0 +HAVE_SSE3 equ 0 +HAVE_SSE4_1 equ 0 +HAVE_SSE4_2 equ 0 +HAVE_SSSE3 equ 0 +HAVE_UNISTD_H equ 1 +HAVE_VSX equ 0 +HAVE_WXWIDGETS equ 0
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_config.c b/third_party/libaom/source/config/ios/arm64/config/aom_config.c new file mode 100644 index 0000000..10b2836e --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/aom_config.c
@@ -0,0 +1,13 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#include "aom/aom_codec.h" +static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/arm64-ios.cmake\" -DCONFIG_AV1_ENCODER=0 -DCONFIG_LIBYUV=0 -DCONFIG_MAX_DECODE_PROFILE=0 -DCONFIG_NORMAL_TILE_MODE=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;}
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_config.h b/third_party/libaom/source/config/ios/arm64/config/aom_config.h new file mode 100644 index 0000000..3a583a5 --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/aom_config.h
@@ -0,0 +1,84 @@ +/* + * Copyright (c) 2020, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#ifndef AOM_CONFIG_H_ +#define AOM_CONFIG_H_ +#define ARCH_ARM 1 +#define ARCH_MIPS 0 +#define ARCH_PPC 0 +#define ARCH_X86 0 +#define ARCH_X86_64 0 +#define CONFIG_ACCOUNTING 0 +#define CONFIG_ANALYZER 0 +#define CONFIG_AV1_DECODER 1 +#define CONFIG_AV1_ENCODER 0 +#define CONFIG_AV1_HIGHBITDEPTH 1 +#define CONFIG_BIG_ENDIAN 0 +#define CONFIG_BITSTREAM_DEBUG 0 +#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 +#define CONFIG_COLLECT_COMPONENT_TIMING 0 +#define CONFIG_COLLECT_PARTITION_STATS 0 +#define CONFIG_COLLECT_RD_STATS 0 +#define CONFIG_DEBUG 0 +#define CONFIG_DENOISE 1 +#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1 +#define CONFIG_DIST_8X8 0 +#define CONFIG_ENTROPY_STATS 0 +#define CONFIG_GCC 1 +#define CONFIG_GCOV 0 +#define CONFIG_GPROF 0 +#define CONFIG_HTB_TRELLIS 0 +#define CONFIG_INSPECTION 0 +#define CONFIG_INTERNAL_STATS 0 +#define CONFIG_INTER_STATS_ONLY 0 +#define CONFIG_LIBYUV 0 +#define CONFIG_LPF_MASK 0 +#define CONFIG_MAX_DECODE_PROFILE 0 +#define CONFIG_MISMATCH_DEBUG 0 +#define CONFIG_MULTITHREAD 1 +#define CONFIG_NN_V2 0 +#define CONFIG_NORMAL_TILE_MODE 1 +#define CONFIG_OS_SUPPORT 1 +#define CONFIG_PIC 0 +#define CONFIG_RD_DEBUG 0 +#define CONFIG_REALTIME_ONLY 0 +#define CONFIG_RUNTIME_CPU_DETECT 0 +#define CONFIG_SHARED 0 +#define CONFIG_SHARP_SETTINGS 0 +#define CONFIG_SIZE_LIMIT 1 +#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_SPEED_STATS 0 +#define CONFIG_SUPERRES_IN_RECODE 1 +#define CONFIG_TUNE_VMAF 0 +#define CONFIG_WEBM_IO 1 +#define DECODE_HEIGHT_LIMIT 16384 +#define DECODE_WIDTH_LIMIT 16384 +#define FORCE_HIGHBITDEPTH_DECODING 0 +#define HAVE_AVX 0 +#define HAVE_AVX2 0 +#define HAVE_DSPR2 0 +#define HAVE_FEXCEPT 1 +#define HAVE_MIPS32 0 +#define HAVE_MIPS64 0 +#define HAVE_MMX 0 +#define HAVE_MSA 0 +#define HAVE_NEON 1 +#define HAVE_PTHREAD_H 1 +#define HAVE_SSE 0 +#define HAVE_SSE2 0 +#define HAVE_SSE3 0 +#define HAVE_SSE4_1 0 +#define HAVE_SSE4_2 0 +#define HAVE_SSSE3 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VSX 0 +#define HAVE_WXWIDGETS 0 +#define INLINE inline +#endif // AOM_CONFIG_H_
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_dsp_rtcd.h b/third_party/libaom/source/config/ios/arm64/config/aom_dsp_rtcd.h new file mode 100644 index 0000000..795a992e --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/aom_dsp_rtcd.h
@@ -0,0 +1,3320 @@ +// This file is generated. Do not edit. +#ifndef AOM_DSP_RTCD_H_ +#define AOM_DSP_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * DSP + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/aom_dsp_common.h" +#include "av1/common/blockd.h" +#include "av1/common/enums.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +void aom_blend_a64_hmask_neon(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_hmask aom_blend_a64_hmask_neon + +void aom_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh); +#define aom_blend_a64_mask aom_blend_a64_mask_c + +void aom_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +void aom_blend_a64_vmask_neon(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h); +#define aom_blend_a64_vmask aom_blend_a64_vmask_neon + +void aom_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_horiz aom_convolve8_horiz_c + +void aom_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h); +#define aom_convolve8_vert aom_convolve8_vert_c + +void aom_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int filter_x_stride, + const int16_t* filter_y, + int filter_y_stride, + int w, + int h); +#define aom_convolve_copy aom_convolve_copy_c + +void aom_dc_128_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_neon + +void aom_dc_128_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_c + +void aom_dc_128_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x4 aom_dc_128_predictor_16x4_c + +void aom_dc_128_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x64 aom_dc_128_predictor_16x64_c + +void aom_dc_128_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_c + +void aom_dc_128_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_2x2 aom_dc_128_predictor_2x2_c + +void aom_dc_128_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x16 aom_dc_128_predictor_32x16_c + +void aom_dc_128_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x32 aom_dc_128_predictor_32x32_neon + +void aom_dc_128_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x64 aom_dc_128_predictor_32x64_c + +void aom_dc_128_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_32x8 aom_dc_128_predictor_32x8_c + +void aom_dc_128_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x16 aom_dc_128_predictor_4x16_c + +void aom_dc_128_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_neon + +void aom_dc_128_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_c + +void aom_dc_128_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x16 aom_dc_128_predictor_64x16_c + +void aom_dc_128_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x32 aom_dc_128_predictor_64x32_c + +void aom_dc_128_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_64x64 aom_dc_128_predictor_64x64_c + +void aom_dc_128_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_c + +void aom_dc_128_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x32 aom_dc_128_predictor_8x32_c + +void aom_dc_128_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_c + +void aom_dc_128_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_128_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_neon + +void aom_dc_left_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_neon + +void aom_dc_left_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_c + +void aom_dc_left_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x4 aom_dc_left_predictor_16x4_c + +void aom_dc_left_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x64 aom_dc_left_predictor_16x64_c + +void aom_dc_left_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_c + +void aom_dc_left_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_2x2 aom_dc_left_predictor_2x2_c + +void aom_dc_left_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x16 aom_dc_left_predictor_32x16_c + +void aom_dc_left_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x32 aom_dc_left_predictor_32x32_neon + +void aom_dc_left_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x64 aom_dc_left_predictor_32x64_c + +void aom_dc_left_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_32x8 aom_dc_left_predictor_32x8_c + +void aom_dc_left_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x16 aom_dc_left_predictor_4x16_c + +void aom_dc_left_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_neon + +void aom_dc_left_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_c + +void aom_dc_left_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x16 aom_dc_left_predictor_64x16_c + +void aom_dc_left_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x32 aom_dc_left_predictor_64x32_c + +void aom_dc_left_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_64x64 aom_dc_left_predictor_64x64_c + +void aom_dc_left_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_c + +void aom_dc_left_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x32 aom_dc_left_predictor_8x32_c + +void aom_dc_left_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_c + +void aom_dc_left_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_left_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_neon + +void aom_dc_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_neon + +void aom_dc_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_c + +void aom_dc_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x4 aom_dc_predictor_16x4_c + +void aom_dc_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x64 aom_dc_predictor_16x64_c + +void aom_dc_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_c + +void aom_dc_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_2x2 aom_dc_predictor_2x2_c + +void aom_dc_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x16 aom_dc_predictor_32x16_c + +void aom_dc_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x32 aom_dc_predictor_32x32_neon + +void aom_dc_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x64 aom_dc_predictor_32x64_c + +void aom_dc_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_32x8 aom_dc_predictor_32x8_c + +void aom_dc_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x16 aom_dc_predictor_4x16_c + +void aom_dc_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_neon + +void aom_dc_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_c + +void aom_dc_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x16 aom_dc_predictor_64x16_c + +void aom_dc_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x32 aom_dc_predictor_64x32_c + +void aom_dc_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_64x64 aom_dc_predictor_64x64_c + +void aom_dc_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_c + +void aom_dc_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x32 aom_dc_predictor_8x32_c + +void aom_dc_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_c + +void aom_dc_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_neon + +void aom_dc_top_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_neon + +void aom_dc_top_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_c + +void aom_dc_top_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x4 aom_dc_top_predictor_16x4_c + +void aom_dc_top_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x64 aom_dc_top_predictor_16x64_c + +void aom_dc_top_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_c + +void aom_dc_top_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_2x2 aom_dc_top_predictor_2x2_c + +void aom_dc_top_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x16 aom_dc_top_predictor_32x16_c + +void aom_dc_top_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x32 aom_dc_top_predictor_32x32_neon + +void aom_dc_top_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x64 aom_dc_top_predictor_32x64_c + +void aom_dc_top_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_32x8 aom_dc_top_predictor_32x8_c + +void aom_dc_top_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x16 aom_dc_top_predictor_4x16_c + +void aom_dc_top_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_neon + +void aom_dc_top_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_c + +void aom_dc_top_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x16 aom_dc_top_predictor_64x16_c + +void aom_dc_top_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x32 aom_dc_top_predictor_64x32_c + +void aom_dc_top_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_64x64 aom_dc_top_predictor_64x64_c + +void aom_dc_top_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_c + +void aom_dc_top_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x32 aom_dc_top_predictor_8x32_c + +void aom_dc_top_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_c + +void aom_dc_top_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_dc_top_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_neon + +void aom_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x16 aom_h_predictor_16x16_neon + +void aom_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x32 aom_h_predictor_16x32_c + +void aom_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x4 aom_h_predictor_16x4_c + +void aom_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x64 aom_h_predictor_16x64_c + +void aom_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_16x8 aom_h_predictor_16x8_c + +void aom_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_2x2 aom_h_predictor_2x2_c + +void aom_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x16 aom_h_predictor_32x16_c + +void aom_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x32 aom_h_predictor_32x32_neon + +void aom_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x64 aom_h_predictor_32x64_c + +void aom_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_32x8 aom_h_predictor_32x8_c + +void aom_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x16 aom_h_predictor_4x16_c + +void aom_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x4 aom_h_predictor_4x4_neon + +void aom_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_4x8 aom_h_predictor_4x8_c + +void aom_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x16 aom_h_predictor_64x16_c + +void aom_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x32 aom_h_predictor_64x32_c + +void aom_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_64x64 aom_h_predictor_64x64_c + +void aom_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x16 aom_h_predictor_8x16_c + +void aom_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x32 aom_h_predictor_8x32_c + +void aom_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x4 aom_h_predictor_8x4_c + +void aom_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_h_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_h_predictor_8x8 aom_h_predictor_8x8_neon + +void aom_highbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params, + const int bd); +#define aom_highbd_blend_a64_d16_mask aom_highbd_blend_a64_d16_mask_c + +void aom_highbd_blend_a64_hmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_hmask aom_highbd_blend_a64_hmask_c + +void aom_highbd_blend_a64_mask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + int bd); +#define aom_highbd_blend_a64_mask aom_highbd_blend_a64_mask_c + +void aom_highbd_blend_a64_vmask_c(uint8_t* dst, + uint32_t dst_stride, + const uint8_t* src0, + uint32_t src0_stride, + const uint8_t* src1, + uint32_t src1_stride, + const uint8_t* mask, + int w, + int h, + int bd); +#define aom_highbd_blend_a64_vmask aom_highbd_blend_a64_vmask_c + +void aom_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bd); +#define aom_highbd_convolve8_horiz aom_highbd_convolve8_horiz_c + +void aom_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bd); +#define aom_highbd_convolve8_vert aom_highbd_convolve8_vert_c + +void aom_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int filter_x_stride, + const int16_t* filter_y, + int filter_y_stride, + int w, + int h, + int bd); +#define aom_highbd_convolve_copy aom_highbd_convolve_copy_c + +void aom_highbd_dc_128_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x16 aom_highbd_dc_128_predictor_16x16_c + +void aom_highbd_dc_128_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x32 aom_highbd_dc_128_predictor_16x32_c + +void aom_highbd_dc_128_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x4 aom_highbd_dc_128_predictor_16x4_c + +void aom_highbd_dc_128_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x64 aom_highbd_dc_128_predictor_16x64_c + +void aom_highbd_dc_128_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_16x8 aom_highbd_dc_128_predictor_16x8_c + +void aom_highbd_dc_128_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_2x2 aom_highbd_dc_128_predictor_2x2_c + +void aom_highbd_dc_128_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x16 aom_highbd_dc_128_predictor_32x16_c + +void aom_highbd_dc_128_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x32 aom_highbd_dc_128_predictor_32x32_c + +void aom_highbd_dc_128_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x64 aom_highbd_dc_128_predictor_32x64_c + +void aom_highbd_dc_128_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_32x8 aom_highbd_dc_128_predictor_32x8_c + +void aom_highbd_dc_128_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x16 aom_highbd_dc_128_predictor_4x16_c + +void aom_highbd_dc_128_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x4 aom_highbd_dc_128_predictor_4x4_c + +void aom_highbd_dc_128_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_4x8 aom_highbd_dc_128_predictor_4x8_c + +void aom_highbd_dc_128_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x16 aom_highbd_dc_128_predictor_64x16_c + +void aom_highbd_dc_128_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x32 aom_highbd_dc_128_predictor_64x32_c + +void aom_highbd_dc_128_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_64x64 aom_highbd_dc_128_predictor_64x64_c + +void aom_highbd_dc_128_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x16 aom_highbd_dc_128_predictor_8x16_c + +void aom_highbd_dc_128_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x32 aom_highbd_dc_128_predictor_8x32_c + +void aom_highbd_dc_128_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x4 aom_highbd_dc_128_predictor_8x4_c + +void aom_highbd_dc_128_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_128_predictor_8x8 aom_highbd_dc_128_predictor_8x8_c + +void aom_highbd_dc_left_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x16 aom_highbd_dc_left_predictor_16x16_c + +void aom_highbd_dc_left_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x32 aom_highbd_dc_left_predictor_16x32_c + +void aom_highbd_dc_left_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x4 aom_highbd_dc_left_predictor_16x4_c + +void aom_highbd_dc_left_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x64 aom_highbd_dc_left_predictor_16x64_c + +void aom_highbd_dc_left_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_16x8 aom_highbd_dc_left_predictor_16x8_c + +void aom_highbd_dc_left_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_2x2 aom_highbd_dc_left_predictor_2x2_c + +void aom_highbd_dc_left_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x16 aom_highbd_dc_left_predictor_32x16_c + +void aom_highbd_dc_left_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x32 aom_highbd_dc_left_predictor_32x32_c + +void aom_highbd_dc_left_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x64 aom_highbd_dc_left_predictor_32x64_c + +void aom_highbd_dc_left_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_32x8 aom_highbd_dc_left_predictor_32x8_c + +void aom_highbd_dc_left_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x16 aom_highbd_dc_left_predictor_4x16_c + +void aom_highbd_dc_left_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x4 aom_highbd_dc_left_predictor_4x4_c + +void aom_highbd_dc_left_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_4x8 aom_highbd_dc_left_predictor_4x8_c + +void aom_highbd_dc_left_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x16 aom_highbd_dc_left_predictor_64x16_c + +void aom_highbd_dc_left_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x32 aom_highbd_dc_left_predictor_64x32_c + +void aom_highbd_dc_left_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_64x64 aom_highbd_dc_left_predictor_64x64_c + +void aom_highbd_dc_left_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x16 aom_highbd_dc_left_predictor_8x16_c + +void aom_highbd_dc_left_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x32 aom_highbd_dc_left_predictor_8x32_c + +void aom_highbd_dc_left_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x4 aom_highbd_dc_left_predictor_8x4_c + +void aom_highbd_dc_left_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_left_predictor_8x8 aom_highbd_dc_left_predictor_8x8_c + +void aom_highbd_dc_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_16x16_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x16 aom_highbd_dc_predictor_16x16_neon + +void aom_highbd_dc_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x32 aom_highbd_dc_predictor_16x32_c + +void aom_highbd_dc_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x4 aom_highbd_dc_predictor_16x4_c + +void aom_highbd_dc_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x64 aom_highbd_dc_predictor_16x64_c + +void aom_highbd_dc_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_16x8 aom_highbd_dc_predictor_16x8_c + +void aom_highbd_dc_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_2x2 aom_highbd_dc_predictor_2x2_c + +void aom_highbd_dc_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x16 aom_highbd_dc_predictor_32x16_c + +void aom_highbd_dc_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_32x32_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x32 aom_highbd_dc_predictor_32x32_neon + +void aom_highbd_dc_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x64 aom_highbd_dc_predictor_32x64_c + +void aom_highbd_dc_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_32x8 aom_highbd_dc_predictor_32x8_c + +void aom_highbd_dc_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x16 aom_highbd_dc_predictor_4x16_c + +void aom_highbd_dc_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_4x4_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x4 aom_highbd_dc_predictor_4x4_neon + +void aom_highbd_dc_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_4x8 aom_highbd_dc_predictor_4x8_c + +void aom_highbd_dc_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x16 aom_highbd_dc_predictor_64x16_c + +void aom_highbd_dc_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x32 aom_highbd_dc_predictor_64x32_c + +void aom_highbd_dc_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_64x64_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_64x64 aom_highbd_dc_predictor_64x64_neon + +void aom_highbd_dc_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x16 aom_highbd_dc_predictor_8x16_c + +void aom_highbd_dc_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x32 aom_highbd_dc_predictor_8x32_c + +void aom_highbd_dc_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x4 aom_highbd_dc_predictor_8x4_c + +void aom_highbd_dc_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +void aom_highbd_dc_predictor_8x8_neon(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_predictor_8x8 aom_highbd_dc_predictor_8x8_neon + +void aom_highbd_dc_top_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x16 aom_highbd_dc_top_predictor_16x16_c + +void aom_highbd_dc_top_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x32 aom_highbd_dc_top_predictor_16x32_c + +void aom_highbd_dc_top_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x4 aom_highbd_dc_top_predictor_16x4_c + +void aom_highbd_dc_top_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x64 aom_highbd_dc_top_predictor_16x64_c + +void aom_highbd_dc_top_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_16x8 aom_highbd_dc_top_predictor_16x8_c + +void aom_highbd_dc_top_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_2x2 aom_highbd_dc_top_predictor_2x2_c + +void aom_highbd_dc_top_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x16 aom_highbd_dc_top_predictor_32x16_c + +void aom_highbd_dc_top_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x32 aom_highbd_dc_top_predictor_32x32_c + +void aom_highbd_dc_top_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x64 aom_highbd_dc_top_predictor_32x64_c + +void aom_highbd_dc_top_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_32x8 aom_highbd_dc_top_predictor_32x8_c + +void aom_highbd_dc_top_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x16 aom_highbd_dc_top_predictor_4x16_c + +void aom_highbd_dc_top_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x4 aom_highbd_dc_top_predictor_4x4_c + +void aom_highbd_dc_top_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_4x8 aom_highbd_dc_top_predictor_4x8_c + +void aom_highbd_dc_top_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x16 aom_highbd_dc_top_predictor_64x16_c + +void aom_highbd_dc_top_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x32 aom_highbd_dc_top_predictor_64x32_c + +void aom_highbd_dc_top_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_64x64 aom_highbd_dc_top_predictor_64x64_c + +void aom_highbd_dc_top_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x16 aom_highbd_dc_top_predictor_8x16_c + +void aom_highbd_dc_top_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x32 aom_highbd_dc_top_predictor_8x32_c + +void aom_highbd_dc_top_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x4 aom_highbd_dc_top_predictor_8x4_c + +void aom_highbd_dc_top_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_dc_top_predictor_8x8 aom_highbd_dc_top_predictor_8x8_c + +void aom_highbd_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x16 aom_highbd_h_predictor_16x16_c + +void aom_highbd_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x32 aom_highbd_h_predictor_16x32_c + +void aom_highbd_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x4 aom_highbd_h_predictor_16x4_c + +void aom_highbd_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x64 aom_highbd_h_predictor_16x64_c + +void aom_highbd_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_16x8 aom_highbd_h_predictor_16x8_c + +void aom_highbd_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_2x2 aom_highbd_h_predictor_2x2_c + +void aom_highbd_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x16 aom_highbd_h_predictor_32x16_c + +void aom_highbd_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x32 aom_highbd_h_predictor_32x32_c + +void aom_highbd_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x64 aom_highbd_h_predictor_32x64_c + +void aom_highbd_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_32x8 aom_highbd_h_predictor_32x8_c + +void aom_highbd_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x16 aom_highbd_h_predictor_4x16_c + +void aom_highbd_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x4 aom_highbd_h_predictor_4x4_c + +void aom_highbd_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_4x8 aom_highbd_h_predictor_4x8_c + +void aom_highbd_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x16 aom_highbd_h_predictor_64x16_c + +void aom_highbd_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x32 aom_highbd_h_predictor_64x32_c + +void aom_highbd_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_64x64 aom_highbd_h_predictor_64x64_c + +void aom_highbd_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x16 aom_highbd_h_predictor_8x16_c + +void aom_highbd_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x32 aom_highbd_h_predictor_8x32_c + +void aom_highbd_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x4 aom_highbd_h_predictor_8x4_c + +void aom_highbd_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_h_predictor_8x8 aom_highbd_h_predictor_8x8_c + +void aom_highbd_lpf_horizontal_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_14 aom_highbd_lpf_horizontal_14_c + +void aom_highbd_lpf_horizontal_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_14_dual aom_highbd_lpf_horizontal_14_dual_c + +void aom_highbd_lpf_horizontal_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_4 aom_highbd_lpf_horizontal_4_c + +void aom_highbd_lpf_horizontal_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_4_dual aom_highbd_lpf_horizontal_4_dual_c + +void aom_highbd_lpf_horizontal_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_6 aom_highbd_lpf_horizontal_6_c + +void aom_highbd_lpf_horizontal_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_6_dual aom_highbd_lpf_horizontal_6_dual_c + +void aom_highbd_lpf_horizontal_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_horizontal_8 aom_highbd_lpf_horizontal_8_c + +void aom_highbd_lpf_horizontal_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_horizontal_8_dual aom_highbd_lpf_horizontal_8_dual_c + +void aom_highbd_lpf_vertical_14_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_14 aom_highbd_lpf_vertical_14_c + +void aom_highbd_lpf_vertical_14_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_14_dual aom_highbd_lpf_vertical_14_dual_c + +void aom_highbd_lpf_vertical_4_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_4 aom_highbd_lpf_vertical_4_c + +void aom_highbd_lpf_vertical_4_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_4_dual aom_highbd_lpf_vertical_4_dual_c + +void aom_highbd_lpf_vertical_6_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_6 aom_highbd_lpf_vertical_6_c + +void aom_highbd_lpf_vertical_6_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_6_dual aom_highbd_lpf_vertical_6_dual_c + +void aom_highbd_lpf_vertical_8_c(uint16_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh, + int bd); +#define aom_highbd_lpf_vertical_8 aom_highbd_lpf_vertical_8_c + +void aom_highbd_lpf_vertical_8_dual_c(uint16_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1, + int bd); +#define aom_highbd_lpf_vertical_8_dual aom_highbd_lpf_vertical_8_dual_c + +void aom_highbd_paeth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x16 aom_highbd_paeth_predictor_16x16_c + +void aom_highbd_paeth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x32 aom_highbd_paeth_predictor_16x32_c + +void aom_highbd_paeth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x4 aom_highbd_paeth_predictor_16x4_c + +void aom_highbd_paeth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x64 aom_highbd_paeth_predictor_16x64_c + +void aom_highbd_paeth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_16x8 aom_highbd_paeth_predictor_16x8_c + +void aom_highbd_paeth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_2x2 aom_highbd_paeth_predictor_2x2_c + +void aom_highbd_paeth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x16 aom_highbd_paeth_predictor_32x16_c + +void aom_highbd_paeth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x32 aom_highbd_paeth_predictor_32x32_c + +void aom_highbd_paeth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x64 aom_highbd_paeth_predictor_32x64_c + +void aom_highbd_paeth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_32x8 aom_highbd_paeth_predictor_32x8_c + +void aom_highbd_paeth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x16 aom_highbd_paeth_predictor_4x16_c + +void aom_highbd_paeth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x4 aom_highbd_paeth_predictor_4x4_c + +void aom_highbd_paeth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_4x8 aom_highbd_paeth_predictor_4x8_c + +void aom_highbd_paeth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x16 aom_highbd_paeth_predictor_64x16_c + +void aom_highbd_paeth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x32 aom_highbd_paeth_predictor_64x32_c + +void aom_highbd_paeth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_64x64 aom_highbd_paeth_predictor_64x64_c + +void aom_highbd_paeth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x16 aom_highbd_paeth_predictor_8x16_c + +void aom_highbd_paeth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x32 aom_highbd_paeth_predictor_8x32_c + +void aom_highbd_paeth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x4 aom_highbd_paeth_predictor_8x4_c + +void aom_highbd_paeth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_paeth_predictor_8x8 aom_highbd_paeth_predictor_8x8_c + +void aom_highbd_smooth_h_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x16 \ + aom_highbd_smooth_h_predictor_16x16_c + +void aom_highbd_smooth_h_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x32 \ + aom_highbd_smooth_h_predictor_16x32_c + +void aom_highbd_smooth_h_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x4 aom_highbd_smooth_h_predictor_16x4_c + +void aom_highbd_smooth_h_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x64 \ + aom_highbd_smooth_h_predictor_16x64_c + +void aom_highbd_smooth_h_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_16x8 aom_highbd_smooth_h_predictor_16x8_c + +void aom_highbd_smooth_h_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_2x2 aom_highbd_smooth_h_predictor_2x2_c + +void aom_highbd_smooth_h_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x16 \ + aom_highbd_smooth_h_predictor_32x16_c + +void aom_highbd_smooth_h_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x32 \ + aom_highbd_smooth_h_predictor_32x32_c + +void aom_highbd_smooth_h_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x64 \ + aom_highbd_smooth_h_predictor_32x64_c + +void aom_highbd_smooth_h_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_32x8 aom_highbd_smooth_h_predictor_32x8_c + +void aom_highbd_smooth_h_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x16 aom_highbd_smooth_h_predictor_4x16_c + +void aom_highbd_smooth_h_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x4 aom_highbd_smooth_h_predictor_4x4_c + +void aom_highbd_smooth_h_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_4x8 aom_highbd_smooth_h_predictor_4x8_c + +void aom_highbd_smooth_h_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x16 \ + aom_highbd_smooth_h_predictor_64x16_c + +void aom_highbd_smooth_h_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x32 \ + aom_highbd_smooth_h_predictor_64x32_c + +void aom_highbd_smooth_h_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_64x64 \ + aom_highbd_smooth_h_predictor_64x64_c + +void aom_highbd_smooth_h_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x16 aom_highbd_smooth_h_predictor_8x16_c + +void aom_highbd_smooth_h_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x32 aom_highbd_smooth_h_predictor_8x32_c + +void aom_highbd_smooth_h_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x4 aom_highbd_smooth_h_predictor_8x4_c + +void aom_highbd_smooth_h_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_h_predictor_8x8 aom_highbd_smooth_h_predictor_8x8_c + +void aom_highbd_smooth_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x16 aom_highbd_smooth_predictor_16x16_c + +void aom_highbd_smooth_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x32 aom_highbd_smooth_predictor_16x32_c + +void aom_highbd_smooth_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x4 aom_highbd_smooth_predictor_16x4_c + +void aom_highbd_smooth_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x64 aom_highbd_smooth_predictor_16x64_c + +void aom_highbd_smooth_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_16x8 aom_highbd_smooth_predictor_16x8_c + +void aom_highbd_smooth_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_2x2 aom_highbd_smooth_predictor_2x2_c + +void aom_highbd_smooth_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x16 aom_highbd_smooth_predictor_32x16_c + +void aom_highbd_smooth_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x32 aom_highbd_smooth_predictor_32x32_c + +void aom_highbd_smooth_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x64 aom_highbd_smooth_predictor_32x64_c + +void aom_highbd_smooth_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_32x8 aom_highbd_smooth_predictor_32x8_c + +void aom_highbd_smooth_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x16 aom_highbd_smooth_predictor_4x16_c + +void aom_highbd_smooth_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x4 aom_highbd_smooth_predictor_4x4_c + +void aom_highbd_smooth_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_4x8 aom_highbd_smooth_predictor_4x8_c + +void aom_highbd_smooth_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x16 aom_highbd_smooth_predictor_64x16_c + +void aom_highbd_smooth_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x32 aom_highbd_smooth_predictor_64x32_c + +void aom_highbd_smooth_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_64x64 aom_highbd_smooth_predictor_64x64_c + +void aom_highbd_smooth_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x16 aom_highbd_smooth_predictor_8x16_c + +void aom_highbd_smooth_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x32 aom_highbd_smooth_predictor_8x32_c + +void aom_highbd_smooth_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x4 aom_highbd_smooth_predictor_8x4_c + +void aom_highbd_smooth_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_predictor_8x8 aom_highbd_smooth_predictor_8x8_c + +void aom_highbd_smooth_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x16 \ + aom_highbd_smooth_v_predictor_16x16_c + +void aom_highbd_smooth_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x32 \ + aom_highbd_smooth_v_predictor_16x32_c + +void aom_highbd_smooth_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x4 aom_highbd_smooth_v_predictor_16x4_c + +void aom_highbd_smooth_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x64 \ + aom_highbd_smooth_v_predictor_16x64_c + +void aom_highbd_smooth_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_16x8 aom_highbd_smooth_v_predictor_16x8_c + +void aom_highbd_smooth_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_2x2 aom_highbd_smooth_v_predictor_2x2_c + +void aom_highbd_smooth_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x16 \ + aom_highbd_smooth_v_predictor_32x16_c + +void aom_highbd_smooth_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x32 \ + aom_highbd_smooth_v_predictor_32x32_c + +void aom_highbd_smooth_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x64 \ + aom_highbd_smooth_v_predictor_32x64_c + +void aom_highbd_smooth_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_32x8 aom_highbd_smooth_v_predictor_32x8_c + +void aom_highbd_smooth_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x16 aom_highbd_smooth_v_predictor_4x16_c + +void aom_highbd_smooth_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x4 aom_highbd_smooth_v_predictor_4x4_c + +void aom_highbd_smooth_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_4x8 aom_highbd_smooth_v_predictor_4x8_c + +void aom_highbd_smooth_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x16 \ + aom_highbd_smooth_v_predictor_64x16_c + +void aom_highbd_smooth_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x32 \ + aom_highbd_smooth_v_predictor_64x32_c + +void aom_highbd_smooth_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_64x64 \ + aom_highbd_smooth_v_predictor_64x64_c + +void aom_highbd_smooth_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x16 aom_highbd_smooth_v_predictor_8x16_c + +void aom_highbd_smooth_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x32 aom_highbd_smooth_v_predictor_8x32_c + +void aom_highbd_smooth_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x4 aom_highbd_smooth_v_predictor_8x4_c + +void aom_highbd_smooth_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_smooth_v_predictor_8x8 aom_highbd_smooth_v_predictor_8x8_c + +void aom_highbd_v_predictor_16x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x16 aom_highbd_v_predictor_16x16_c + +void aom_highbd_v_predictor_16x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x32 aom_highbd_v_predictor_16x32_c + +void aom_highbd_v_predictor_16x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x4 aom_highbd_v_predictor_16x4_c + +void aom_highbd_v_predictor_16x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x64 aom_highbd_v_predictor_16x64_c + +void aom_highbd_v_predictor_16x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_16x8 aom_highbd_v_predictor_16x8_c + +void aom_highbd_v_predictor_2x2_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_2x2 aom_highbd_v_predictor_2x2_c + +void aom_highbd_v_predictor_32x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x16 aom_highbd_v_predictor_32x16_c + +void aom_highbd_v_predictor_32x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x32 aom_highbd_v_predictor_32x32_c + +void aom_highbd_v_predictor_32x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x64 aom_highbd_v_predictor_32x64_c + +void aom_highbd_v_predictor_32x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_32x8 aom_highbd_v_predictor_32x8_c + +void aom_highbd_v_predictor_4x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x16 aom_highbd_v_predictor_4x16_c + +void aom_highbd_v_predictor_4x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x4 aom_highbd_v_predictor_4x4_c + +void aom_highbd_v_predictor_4x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_4x8 aom_highbd_v_predictor_4x8_c + +void aom_highbd_v_predictor_64x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x16 aom_highbd_v_predictor_64x16_c + +void aom_highbd_v_predictor_64x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x32 aom_highbd_v_predictor_64x32_c + +void aom_highbd_v_predictor_64x64_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_64x64 aom_highbd_v_predictor_64x64_c + +void aom_highbd_v_predictor_8x16_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x16 aom_highbd_v_predictor_8x16_c + +void aom_highbd_v_predictor_8x32_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x32 aom_highbd_v_predictor_8x32_c + +void aom_highbd_v_predictor_8x4_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x4 aom_highbd_v_predictor_8x4_c + +void aom_highbd_v_predictor_8x8_c(uint16_t* dst, + ptrdiff_t y_stride, + const uint16_t* above, + const uint16_t* left, + int bd); +#define aom_highbd_v_predictor_8x8 aom_highbd_v_predictor_8x8_c + +void aom_lowbd_blend_a64_d16_mask_c(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params); +void aom_lowbd_blend_a64_d16_mask_neon(uint8_t* dst, + uint32_t dst_stride, + const CONV_BUF_TYPE* src0, + uint32_t src0_stride, + const CONV_BUF_TYPE* src1, + uint32_t src1_stride, + const uint8_t* mask, + uint32_t mask_stride, + int w, + int h, + int subw, + int subh, + ConvolveParams* conv_params); +#define aom_lowbd_blend_a64_d16_mask aom_lowbd_blend_a64_d16_mask_neon + +void aom_lpf_horizontal_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_14_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_14 aom_lpf_horizontal_14_neon + +void aom_lpf_horizontal_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_14_dual aom_lpf_horizontal_14_dual_c + +void aom_lpf_horizontal_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_4_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_neon + +void aom_lpf_horizontal_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c + +void aom_lpf_horizontal_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_6_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_6 aom_lpf_horizontal_6_neon + +void aom_lpf_horizontal_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_6_dual aom_lpf_horizontal_6_dual_c + +void aom_lpf_horizontal_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_horizontal_8_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_neon + +void aom_lpf_horizontal_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c + +void aom_lpf_vertical_14_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_14_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_14 aom_lpf_vertical_14_neon + +void aom_lpf_vertical_14_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_14_dual aom_lpf_vertical_14_dual_c + +void aom_lpf_vertical_4_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_4_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_4 aom_lpf_vertical_4_neon + +void aom_lpf_vertical_4_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c + +void aom_lpf_vertical_6_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_6_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_6 aom_lpf_vertical_6_neon + +void aom_lpf_vertical_6_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_6_dual aom_lpf_vertical_6_dual_c + +void aom_lpf_vertical_8_c(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +void aom_lpf_vertical_8_neon(uint8_t* s, + int pitch, + const uint8_t* blimit, + const uint8_t* limit, + const uint8_t* thresh); +#define aom_lpf_vertical_8 aom_lpf_vertical_8_neon + +void aom_lpf_vertical_8_dual_c(uint8_t* s, + int pitch, + const uint8_t* blimit0, + const uint8_t* limit0, + const uint8_t* thresh0, + const uint8_t* blimit1, + const uint8_t* limit1, + const uint8_t* thresh1); +#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c + +void aom_paeth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x16 aom_paeth_predictor_16x16_c + +void aom_paeth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x32 aom_paeth_predictor_16x32_c + +void aom_paeth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x4 aom_paeth_predictor_16x4_c + +void aom_paeth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x64 aom_paeth_predictor_16x64_c + +void aom_paeth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_16x8 aom_paeth_predictor_16x8_c + +void aom_paeth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_2x2 aom_paeth_predictor_2x2_c + +void aom_paeth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x16 aom_paeth_predictor_32x16_c + +void aom_paeth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x32 aom_paeth_predictor_32x32_c + +void aom_paeth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x64 aom_paeth_predictor_32x64_c + +void aom_paeth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_32x8 aom_paeth_predictor_32x8_c + +void aom_paeth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x16 aom_paeth_predictor_4x16_c + +void aom_paeth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x4 aom_paeth_predictor_4x4_c + +void aom_paeth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_4x8 aom_paeth_predictor_4x8_c + +void aom_paeth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x16 aom_paeth_predictor_64x16_c + +void aom_paeth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x32 aom_paeth_predictor_64x32_c + +void aom_paeth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_64x64 aom_paeth_predictor_64x64_c + +void aom_paeth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x16 aom_paeth_predictor_8x16_c + +void aom_paeth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x32 aom_paeth_predictor_8x32_c + +void aom_paeth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x4 aom_paeth_predictor_8x4_c + +void aom_paeth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_paeth_predictor_8x8 aom_paeth_predictor_8x8_c + +void aom_smooth_h_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c + +void aom_smooth_h_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c + +void aom_smooth_h_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x4 aom_smooth_h_predictor_16x4_c + +void aom_smooth_h_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x64 aom_smooth_h_predictor_16x64_c + +void aom_smooth_h_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c + +void aom_smooth_h_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_2x2 aom_smooth_h_predictor_2x2_c + +void aom_smooth_h_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c + +void aom_smooth_h_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c + +void aom_smooth_h_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x64 aom_smooth_h_predictor_32x64_c + +void aom_smooth_h_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_32x8 aom_smooth_h_predictor_32x8_c + +void aom_smooth_h_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x16 aom_smooth_h_predictor_4x16_c + +void aom_smooth_h_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c + +void aom_smooth_h_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c + +void aom_smooth_h_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x16 aom_smooth_h_predictor_64x16_c + +void aom_smooth_h_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x32 aom_smooth_h_predictor_64x32_c + +void aom_smooth_h_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_64x64 aom_smooth_h_predictor_64x64_c + +void aom_smooth_h_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c + +void aom_smooth_h_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x32 aom_smooth_h_predictor_8x32_c + +void aom_smooth_h_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c + +void aom_smooth_h_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c + +void aom_smooth_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x16 aom_smooth_predictor_16x16_c + +void aom_smooth_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x32 aom_smooth_predictor_16x32_c + +void aom_smooth_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x4 aom_smooth_predictor_16x4_c + +void aom_smooth_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x64 aom_smooth_predictor_16x64_c + +void aom_smooth_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_16x8 aom_smooth_predictor_16x8_c + +void aom_smooth_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_2x2 aom_smooth_predictor_2x2_c + +void aom_smooth_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x16 aom_smooth_predictor_32x16_c + +void aom_smooth_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x32 aom_smooth_predictor_32x32_c + +void aom_smooth_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x64 aom_smooth_predictor_32x64_c + +void aom_smooth_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_32x8 aom_smooth_predictor_32x8_c + +void aom_smooth_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x16 aom_smooth_predictor_4x16_c + +void aom_smooth_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x4 aom_smooth_predictor_4x4_c + +void aom_smooth_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_4x8 aom_smooth_predictor_4x8_c + +void aom_smooth_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x16 aom_smooth_predictor_64x16_c + +void aom_smooth_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x32 aom_smooth_predictor_64x32_c + +void aom_smooth_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_64x64 aom_smooth_predictor_64x64_c + +void aom_smooth_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x16 aom_smooth_predictor_8x16_c + +void aom_smooth_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x32 aom_smooth_predictor_8x32_c + +void aom_smooth_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x4 aom_smooth_predictor_8x4_c + +void aom_smooth_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_predictor_8x8 aom_smooth_predictor_8x8_c + +void aom_smooth_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c + +void aom_smooth_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c + +void aom_smooth_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x4 aom_smooth_v_predictor_16x4_c + +void aom_smooth_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x64 aom_smooth_v_predictor_16x64_c + +void aom_smooth_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c + +void aom_smooth_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_2x2 aom_smooth_v_predictor_2x2_c + +void aom_smooth_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c + +void aom_smooth_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c + +void aom_smooth_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x64 aom_smooth_v_predictor_32x64_c + +void aom_smooth_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_32x8 aom_smooth_v_predictor_32x8_c + +void aom_smooth_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x16 aom_smooth_v_predictor_4x16_c + +void aom_smooth_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c + +void aom_smooth_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c + +void aom_smooth_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x16 aom_smooth_v_predictor_64x16_c + +void aom_smooth_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x32 aom_smooth_v_predictor_64x32_c + +void aom_smooth_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_64x64 aom_smooth_v_predictor_64x64_c + +void aom_smooth_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c + +void aom_smooth_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x32 aom_smooth_v_predictor_8x32_c + +void aom_smooth_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c + +void aom_smooth_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c + +void aom_v_predictor_16x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_16x16_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x16 aom_v_predictor_16x16_neon + +void aom_v_predictor_16x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x32 aom_v_predictor_16x32_c + +void aom_v_predictor_16x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x4 aom_v_predictor_16x4_c + +void aom_v_predictor_16x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x64 aom_v_predictor_16x64_c + +void aom_v_predictor_16x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_16x8 aom_v_predictor_16x8_c + +void aom_v_predictor_2x2_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_2x2 aom_v_predictor_2x2_c + +void aom_v_predictor_32x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x16 aom_v_predictor_32x16_c + +void aom_v_predictor_32x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_32x32_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x32 aom_v_predictor_32x32_neon + +void aom_v_predictor_32x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x64 aom_v_predictor_32x64_c + +void aom_v_predictor_32x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_32x8 aom_v_predictor_32x8_c + +void aom_v_predictor_4x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x16 aom_v_predictor_4x16_c + +void aom_v_predictor_4x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_4x4_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x4 aom_v_predictor_4x4_neon + +void aom_v_predictor_4x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_4x8 aom_v_predictor_4x8_c + +void aom_v_predictor_64x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x16 aom_v_predictor_64x16_c + +void aom_v_predictor_64x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x32 aom_v_predictor_64x32_c + +void aom_v_predictor_64x64_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_64x64 aom_v_predictor_64x64_c + +void aom_v_predictor_8x16_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x16 aom_v_predictor_8x16_c + +void aom_v_predictor_8x32_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x32 aom_v_predictor_8x32_c + +void aom_v_predictor_8x4_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x4 aom_v_predictor_8x4_c + +void aom_v_predictor_8x8_c(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +void aom_v_predictor_8x8_neon(uint8_t* dst, + ptrdiff_t y_stride, + const uint8_t* above, + const uint8_t* left); +#define aom_v_predictor_8x8 aom_v_predictor_8x8_neon + +void aom_dsp_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_scale_rtcd.h b/third_party/libaom/source/config/ios/arm64/config/aom_scale_rtcd.h new file mode 100644 index 0000000..e27b558 --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/aom_scale_rtcd.h
@@ -0,0 +1,172 @@ +// This file is generated. Do not edit. +#ifndef AOM_SCALE_RTCD_H_ +#define AOM_SCALE_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +struct yv12_buffer_config; + +#ifdef __cplusplus +extern "C" { +#endif + +void aom_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_borders aom_extend_frame_borders_c + +void aom_extend_frame_borders_y_c(struct yv12_buffer_config* ybf); +#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c + +void aom_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c + +void aom_horizontal_line_2_1_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c + +void aom_horizontal_line_5_3_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c + +void aom_horizontal_line_5_4_scale_c(const unsigned char* source, + unsigned int source_width, + unsigned char* dest, + unsigned int dest_width); +#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c + +void aom_vertical_band_2_1_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c + +void aom_vertical_band_2_1_scale_i_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c + +void aom_vertical_band_5_3_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c + +void aom_vertical_band_5_4_scale_c(unsigned char* source, + int src_pitch, + unsigned char* dest, + int dest_pitch, + unsigned int dest_width); +#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c + +void aom_yv12_copy_frame_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + const int num_planes); +#define aom_yv12_copy_frame aom_yv12_copy_frame_c + +void aom_yv12_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_u aom_yv12_copy_u_c + +void aom_yv12_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc); +#define aom_yv12_copy_v aom_yv12_copy_v_c + +void aom_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc); +#define aom_yv12_copy_y aom_yv12_copy_y_c + +void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf, + const int num_planes); +#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c + +void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c + +void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config* src_bc, + struct yv12_buffer_config* dst_bc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c + +void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config* src_ybc, + struct yv12_buffer_config* dst_ybc, + int hstart, + int hend, + int vstart, + int vend); +#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c + +void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c + +void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config* src_bc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_bc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c + +void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config* src_ybc, + int hstart1, + int hend1, + int vstart1, + int vend1, + struct yv12_buffer_config* dst_ybc, + int hstart2, + int vstart2); +#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c + +int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config* ybf, + int new_border, + int byte_alignment, + int num_planes); +#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c + +void aom_scale_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/third_party/libaom/source/config/ios/arm64/config/av1_rtcd.h b/third_party/libaom/source/config/ios/arm64/config/av1_rtcd.h new file mode 100644 index 0000000..6139fefa --- /dev/null +++ b/third_party/libaom/source/config/ios/arm64/config/av1_rtcd.h
@@ -0,0 +1,1171 @@ +// This file is generated. Do not edit. +#ifndef AV1_RTCD_H_ +#define AV1_RTCD_H_ + +#ifdef RTCD_C +#define RTCD_EXTERN +#else +#define RTCD_EXTERN extern +#endif + +/* + * AV1 + */ + +#include "aom/aom_integer.h" +#include "aom_dsp/txfm_common.h" +#include "av1/common/av1_txfm.h" +#include "av1/common/common.h" +#include "av1/common/convolve.h" +#include "av1/common/enums.h" +#include "av1/common/filter.h" +#include "av1/common/odintrin.h" +#include "av1/common/quant_common.h" +#include "av1/common/restoration.h" + +struct macroblockd; + +/* Encoder forward decls */ +struct macroblock; +struct txfm_param; +struct aom_variance_vtable; +struct search_site_config; +struct yv12_buffer_config; +struct NN_CONFIG; +typedef struct NN_CONFIG NN_CONFIG; + +enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION); +#if CONFIG_NN_V2 +enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS); +struct NN_CONFIG_V2; +typedef struct NN_CONFIG_V2 NN_CONFIG_V2; +struct FC_LAYER; +typedef struct FC_LAYER FC_LAYER; +#endif // CONFIG_NN_V2 + +struct CNN_CONFIG; +typedef struct CNN_CONFIG CNN_CONFIG; +struct CNN_LAYER_CONFIG; +typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG; +struct CNN_THREAD_DATA; +typedef struct CNN_THREAD_DATA CNN_THREAD_DATA; +struct CNN_BRANCH_CONFIG; +typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG; +struct CNN_MULTI_OUT; +typedef struct CNN_MULTI_OUT CNN_MULTI_OUT; + +/* Function pointers return by CfL functions */ +typedef void (*cfl_subsample_lbd_fn)(const uint8_t* input, + int input_stride, + uint16_t* output_q3); + +#if CONFIG_AV1_HIGHBITDEPTH +typedef void (*cfl_subsample_hbd_fn)(const uint16_t* input, + int input_stride, + uint16_t* output_q3); + +typedef void (*cfl_predict_hbd_fn)(const int16_t* src, + uint16_t* dst, + int dst_stride, + int alpha_q3, + int bd); +#endif + +typedef void (*cfl_subtract_average_fn)(const uint16_t* src, int16_t* dst); + +typedef void (*cfl_predict_lbd_fn)(const int16_t* src, + uint8_t* dst, + int dst_stride, + int alpha_q3); + +#ifdef __cplusplus +extern "C" { +#endif + +void av1_apply_selfguided_restoration_c(const uint8_t* dat, + int width, + int height, + int stride, + int eps, + const int* xqd, + uint8_t* dst, + int dst_stride, + int32_t* tmpbuf, + int bit_depth, + int highbd); +void av1_apply_selfguided_restoration_neon(const uint8_t* dat, + int width, + int height, + int stride, + int eps, + const int* xqd, + uint8_t* dst, + int dst_stride, + int32_t* tmpbuf, + int bit_depth, + int highbd); +#define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_neon + +void av1_build_compound_diffwtd_mask_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w); +#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c + +void av1_build_compound_diffwtd_mask_d16_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const CONV_BUF_TYPE* src0, + int src0_stride, + const CONV_BUF_TYPE* src1, + int src1_stride, + int h, + int w, + ConvolveParams* conv_params, + int bd); +void av1_build_compound_diffwtd_mask_d16_neon(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const CONV_BUF_TYPE* src0, + int src0_stride, + const CONV_BUF_TYPE* src1, + int src1_stride, + int h, + int w, + ConvolveParams* conv_params, + int bd); +#define av1_build_compound_diffwtd_mask_d16 \ + av1_build_compound_diffwtd_mask_d16_neon + +void av1_build_compound_diffwtd_mask_highbd_c(uint8_t* mask, + DIFFWTD_MASK_TYPE mask_type, + const uint8_t* src0, + int src0_stride, + const uint8_t* src1, + int src1_stride, + int h, + int w, + int bd); +#define av1_build_compound_diffwtd_mask_highbd \ + av1_build_compound_diffwtd_mask_highbd_c + +int64_t av1_calc_frame_error_c(const uint8_t* const ref, + int stride, + const uint8_t* const dst, + int p_width, + int p_height, + int p_stride); +#define av1_calc_frame_error av1_calc_frame_error_c + +void av1_cnn_activate_c(float** input, + int channels, + int width, + int height, + int stride, + ACTIVATION layer_activation); +#define av1_cnn_activate av1_cnn_activate_c + +void av1_cnn_add_c(float** input, + int channels, + int width, + int height, + int stride, + const float** add); +#define av1_cnn_add av1_cnn_add_c + +void av1_cnn_batchnorm_c(float** image, + int channels, + int width, + int height, + int stride, + const float* gamma, + const float* beta, + const float* mean, + const float* std); +#define av1_cnn_batchnorm av1_cnn_batchnorm_c + +void av1_cnn_convolve_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_LAYER_CONFIG* layer_config, + float** output, + int out_stride, + int start_idx, + int step); +#define av1_cnn_convolve av1_cnn_convolve_c + +void av1_cnn_deconvolve_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_LAYER_CONFIG* layer_config, + float** output, + int out_stride); +#define av1_cnn_deconvolve av1_cnn_deconvolve_c + +void av1_cnn_predict_c(const float** input, + int in_width, + int in_height, + int in_stride, + const CNN_CONFIG* cnn_config, + const CNN_THREAD_DATA* thread_data, + CNN_MULTI_OUT* output_struct); +#define av1_cnn_predict av1_cnn_predict_c + +void av1_convolve_2d_copy_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_2d_copy_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_copy_sr av1_convolve_2d_copy_sr_neon + +void av1_convolve_2d_scale_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int x_step_qn, + const int subpel_y_qn, + const int y_step_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_scale av1_convolve_2d_scale_c + +void av1_convolve_2d_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_2d_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_2d_sr av1_convolve_2d_sr_neon + +void av1_convolve_horiz_rs_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn); +#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c + +void av1_convolve_x_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_x_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_x_sr av1_convolve_x_sr_neon + +void av1_convolve_y_sr_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_convolve_y_sr_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_convolve_y_sr av1_convolve_y_sr_neon + +void av1_dist_wtd_convolve_2d_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_2d_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_neon + +void av1_dist_wtd_convolve_2d_copy_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_2d_copy_neon( + const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_neon + +void av1_dist_wtd_convolve_x_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_x_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_neon + +void av1_dist_wtd_convolve_y_c(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +void av1_dist_wtd_convolve_y_neon(const uint8_t* src, + int src_stride, + uint8_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params); +#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_neon + +void av1_dr_prediction_z1_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int dx, + int dy); +#define av1_dr_prediction_z1 av1_dr_prediction_z1_c + +void av1_dr_prediction_z2_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z2 av1_dr_prediction_z2_c + +void av1_dr_prediction_z3_c(uint8_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint8_t* above, + const uint8_t* left, + int upsample_left, + int dx, + int dy); +#define av1_dr_prediction_z3 av1_dr_prediction_z3_c + +void av1_filter_intra_edge_c(uint8_t* p, int sz, int strength); +#define av1_filter_intra_edge av1_filter_intra_edge_c + +void av1_filter_intra_edge_high_c(uint16_t* p, int sz, int strength); +#define av1_filter_intra_edge_high av1_filter_intra_edge_high_c + +void av1_filter_intra_predictor_c(uint8_t* dst, + ptrdiff_t stride, + TX_SIZE tx_size, + const uint8_t* above, + const uint8_t* left, + int mode); +#define av1_filter_intra_predictor av1_filter_intra_predictor_c + +void av1_highbd_convolve8_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8 av1_highbd_convolve8_c + +void av1_highbd_convolve8_horiz_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_horiz av1_highbd_convolve8_horiz_c + +void av1_highbd_convolve8_vert_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve8_vert av1_highbd_convolve8_vert_c + +void av1_highbd_convolve_2d_copy_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_copy_sr av1_highbd_convolve_2d_copy_sr_c + +void av1_highbd_convolve_2d_scale_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int x_step_qn, + const int subpel_y_qn, + const int y_step_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_scale av1_highbd_convolve_2d_scale_c + +void av1_highbd_convolve_2d_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_2d_sr av1_highbd_convolve_2d_sr_c + +void av1_highbd_convolve_avg_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_avg av1_highbd_convolve_avg_c + +void av1_highbd_convolve_copy_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + int bps); +#define av1_highbd_convolve_copy av1_highbd_convolve_copy_c + +void av1_highbd_convolve_horiz_rs_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const int16_t* x_filters, + int x0_qn, + int x_step_qn, + int bd); +#define av1_highbd_convolve_horiz_rs av1_highbd_convolve_horiz_rs_c + +void av1_highbd_convolve_x_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_x_sr av1_highbd_convolve_x_sr_c + +void av1_highbd_convolve_y_sr_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_convolve_y_sr av1_highbd_convolve_y_sr_c + +void av1_highbd_dist_wtd_convolve_2d_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d av1_highbd_dist_wtd_convolve_2d_c + +void av1_highbd_dist_wtd_convolve_2d_copy_c( + const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_2d_copy \ + av1_highbd_dist_wtd_convolve_2d_copy_c + +void av1_highbd_dist_wtd_convolve_x_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_x av1_highbd_dist_wtd_convolve_x_c + +void av1_highbd_dist_wtd_convolve_y_c(const uint16_t* src, + int src_stride, + uint16_t* dst, + int dst_stride, + int w, + int h, + const InterpFilterParams* filter_params_x, + const InterpFilterParams* filter_params_y, + const int subpel_x_qn, + const int subpel_y_qn, + ConvolveParams* conv_params, + int bd); +#define av1_highbd_dist_wtd_convolve_y av1_highbd_dist_wtd_convolve_y_c + +void av1_highbd_dr_prediction_z1_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z1 av1_highbd_dr_prediction_z1_c + +void av1_highbd_dr_prediction_z2_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_above, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z2 av1_highbd_dr_prediction_z2_c + +void av1_highbd_dr_prediction_z3_c(uint16_t* dst, + ptrdiff_t stride, + int bw, + int bh, + const uint16_t* above, + const uint16_t* left, + int upsample_left, + int dx, + int dy, + int bd); +#define av1_highbd_dr_prediction_z3 av1_highbd_dr_prediction_z3_c + +void av1_highbd_inv_txfm_add_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c + +void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c + +void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c + +void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c + +void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c + +void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c + +void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t* input, + uint8_t* dest, + int stride, + const TxfmParam* txfm_param); +#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c + +void av1_highbd_iwht4x4_16_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c + +void av1_highbd_iwht4x4_1_add_c(const tran_low_t* input, + uint8_t* dest, + int dest_stride, + int bd); +#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c + +void av1_highbd_warp_affine_c(const int32_t* mat, + const uint16_t* ref, + int width, + int height, + int stride, + uint16_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + int bd, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_highbd_warp_affine av1_highbd_warp_affine_c + +void av1_highbd_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params, + int bd); +#define av1_highbd_wiener_convolve_add_src av1_highbd_wiener_convolve_add_src_c + +void av1_inv_txfm2d_add_16x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c + +void av1_inv_txfm2d_add_16x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c + +void av1_inv_txfm2d_add_16x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c + +void av1_inv_txfm2d_add_16x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c + +void av1_inv_txfm2d_add_16x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c + +void av1_inv_txfm2d_add_32x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c + +void av1_inv_txfm2d_add_32x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c + +void av1_inv_txfm2d_add_32x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c + +void av1_inv_txfm2d_add_32x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c + +void av1_inv_txfm2d_add_4x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c + +void av1_inv_txfm2d_add_4x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c + +void av1_inv_txfm2d_add_4x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c + +void av1_inv_txfm2d_add_64x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c + +void av1_inv_txfm2d_add_64x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c + +void av1_inv_txfm2d_add_64x64_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c + +void av1_inv_txfm2d_add_8x16_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c + +void av1_inv_txfm2d_add_8x32_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c + +void av1_inv_txfm2d_add_8x4_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c + +void av1_inv_txfm2d_add_8x8_c(const int32_t* input, + uint16_t* output, + int stride, + TX_TYPE tx_type, + int bd); +#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c + +void av1_inv_txfm_add_c(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +void av1_inv_txfm_add_neon(const tran_low_t* dqcoeff, + uint8_t* dst, + int stride, + const TxfmParam* txfm_param); +#define av1_inv_txfm_add av1_inv_txfm_add_neon + +void av1_round_shift_array_c(int32_t* arr, int size, int bit); +void av1_round_shift_array_neon(int32_t* arr, int size, int bit); +#define av1_round_shift_array av1_round_shift_array_neon + +int av1_selfguided_restoration_c(const uint8_t* dgd8, + int width, + int height, + int dgd_stride, + int32_t* flt0, + int32_t* flt1, + int flt_stride, + int sgr_params_idx, + int bit_depth, + int highbd); +int av1_selfguided_restoration_neon(const uint8_t* dgd8, + int width, + int height, + int dgd_stride, + int32_t* flt0, + int32_t* flt1, + int flt_stride, + int sgr_params_idx, + int bit_depth, + int highbd); +#define av1_selfguided_restoration av1_selfguided_restoration_neon + +void av1_upsample_intra_edge_c(uint8_t* p, int sz); +#define av1_upsample_intra_edge av1_upsample_intra_edge_c + +void av1_upsample_intra_edge_high_c(uint16_t* p, int sz, int bd); +#define av1_upsample_intra_edge_high av1_upsample_intra_edge_high_c + +void av1_warp_affine_c(const int32_t* mat, + const uint8_t* ref, + int width, + int height, + int stride, + uint8_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +void av1_warp_affine_neon(const int32_t* mat, + const uint8_t* ref, + int width, + int height, + int stride, + uint8_t* pred, + int p_col, + int p_row, + int p_width, + int p_height, + int p_stride, + int subsampling_x, + int subsampling_y, + ConvolveParams* conv_params, + int16_t alpha, + int16_t beta, + int16_t gamma, + int16_t delta); +#define av1_warp_affine av1_warp_affine_neon + +void av1_wiener_convolve_add_src_c(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params); +void av1_wiener_convolve_add_src_neon(const uint8_t* src, + ptrdiff_t src_stride, + uint8_t* dst, + ptrdiff_t dst_stride, + const int16_t* filter_x, + int x_step_q4, + const int16_t* filter_y, + int y_step_q4, + int w, + int h, + const ConvolveParams* conv_params); +#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_neon + +void cdef_copy_rect8_16bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint16_t* src, + int sstride, + int v, + int h); +void cdef_copy_rect8_16bit_to_16bit_neon(uint16_t* dst, + int dstride, + const uint16_t* src, + int sstride, + int v, + int h); +#define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_neon + +void cdef_copy_rect8_8bit_to_16bit_c(uint16_t* dst, + int dstride, + const uint8_t* src, + int sstride, + int v, + int h); +void cdef_copy_rect8_8bit_to_16bit_neon(uint16_t* dst, + int dstride, + const uint8_t* src, + int sstride, + int v, + int h); +#define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_neon + +void cdef_filter_block_c(uint8_t* dst8, + uint16_t* dst16, + int dstride, + const uint16_t* in, + int pri_strength, + int sec_strength, + int dir, + int pri_damping, + int sec_damping, + int bsize, + int coeff_shift); +void cdef_filter_block_neon(uint8_t* dst8, + uint16_t* dst16, + int dstride, + const uint16_t* in, + int pri_strength, + int sec_strength, + int dir, + int pri_damping, + int sec_damping, + int bsize, + int coeff_shift); +#define cdef_filter_block cdef_filter_block_neon + +int cdef_find_dir_c(const uint16_t* img, + int stride, + int32_t* var, + int coeff_shift); +int cdef_find_dir_neon(const uint16_t* img, + int stride, + int32_t* var, + int coeff_shift); +#define cdef_find_dir cdef_find_dir_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_420_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_hbd cfl_get_luma_subsampling_420_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_422_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_hbd cfl_get_luma_subsampling_422_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_neon + +cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_c(TX_SIZE tx_size); +cfl_subsample_hbd_fn cfl_get_luma_subsampling_444_hbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_hbd cfl_get_luma_subsampling_444_hbd_neon + +cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size); +cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_neon(TX_SIZE tx_size); +#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_neon + +cfl_predict_hbd_fn cfl_get_predict_hbd_fn_c(TX_SIZE tx_size); +cfl_predict_hbd_fn cfl_get_predict_hbd_fn_neon(TX_SIZE tx_size); +#define cfl_get_predict_hbd_fn cfl_get_predict_hbd_fn_neon + +cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size); +cfl_predict_lbd_fn cfl_get_predict_lbd_fn_neon(TX_SIZE tx_size); +#define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_neon + +cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size); +cfl_subtract_average_fn cfl_get_subtract_average_fn_neon(TX_SIZE tx_size); +#define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_neon + +void av1_rtcd(void); + +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/arm.h" +static void setup_rtcd_internal(void) { + int flags = aom_arm_cpu_caps(); + + (void)flags; +} +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif
diff --git a/tools/android/eclipse/.classpath b/tools/android/eclipse/.classpath index 3422559..f791828b 100644 --- a/tools/android/eclipse/.classpath +++ b/tools/android/eclipse/.classpath
@@ -98,7 +98,6 @@ <classpathentry kind="src" path="chrome/android/webapk/shell_apk/javatests/src"/> <classpathentry kind="src" path="chrome/android/webapk/shell_apk/junit/src"/> <classpathentry kind="src" path="chrome/android/webapk/shell_apk/src"/> - <classpathentry kind="src" path="chrome/browser/android/lifecycle/java/src"/> <classpathentry kind="src" path="chrome/browser/android/metrics/javatests/src"/> <classpathentry kind="src" path="chrome/browser/android/thin_webview/internal/java/src"/> <classpathentry kind="src" path="chrome/browser/android/thin_webview/java/src"/> @@ -130,6 +129,7 @@ <classpathentry kind="src" path="chrome/browser/ui/messages/android/java/src"/> <classpathentry kind="src" path="chrome/browser/util/android/java/src"/> <classpathentry kind="src" path="chrome/browser/xsurface/android/java/src"/> + <classpathentry kind="src" path="chrome/lib/lifecycle/public/android/java/src"/> <classpathentry kind="src" path="chrome/test/android/cast_emulator/src"/> <classpathentry kind="src" path="chrome/test/android/javatests/src"/> <classpathentry kind="src" path="chrome/test/chromedriver/test/webview_shell/java/src"/>
diff --git a/tools/mb/mb.py b/tools/mb/mb.py index 4dd3ade..138e246 100755 --- a/tools/mb/mb.py +++ b/tools/mb/mb.py
@@ -46,6 +46,7 @@ """Default mixin values""" return { 'args_file': '', + # TODO(crbug.com/937821): Get rid of 'cros_passthrough'. 'cros_passthrough': False, 'gn_args': '', } @@ -1306,8 +1307,9 @@ # since that makes incremental builds incorrect. See # https://crbug.com/912946 is_android = 'target_os="android"' in vals['gn_args'] - is_cros = ('target_os="chromeos"' in vals['gn_args'] or - vals.get('cros_passthrough', False)) + is_cros = ('target_os="chromeos"' in vals['gn_args'] + or 'is_chromeos_device=true' in vals['gn_args'] + or vals.get('cros_passthrough', False)) is_mac = self.platform == 'darwin' is_msan = 'is_msan=true' in vals['gn_args'] is_ios = 'target_os="ios"' in vals['gn_args'] @@ -1500,7 +1502,8 @@ is_fuchsia = 'target_os="fuchsia"' in vals['gn_args'] is_cros = 'target_os="chromeos"' in vals['gn_args'] is_ios = 'target_os="ios"' in vals['gn_args'] - is_simplechrome = vals.get('cros_passthrough', False) + is_cros_device = ('is_chromeos_device=true' in vals['gn_args'] + or vals.get('cros_passthrough', False)) is_mac = self.platform == 'darwin' is_win = self.platform == 'win32' or 'target_os="win"' in vals['gn_args'] @@ -1574,7 +1577,7 @@ '--test-launcher-bot-mode', '--system-log-file', '${ISOLATED_OUTDIR}/system_log' ] - elif is_simplechrome and test_type != 'script': + elif is_cros_device and test_type != 'script': cmdline += [ '../../testing/test_env.py', os.path.join('bin', 'run_%s' % target), @@ -1613,7 +1616,7 @@ elif test_type == 'script': # If we're testing a CrOS simplechrome build, assume we need to prepare a # DUT for testing. So prepend the command to run with the test wrapper. - if is_simplechrome: + if is_cros_device: cmdline = [ os.path.join('bin', 'cros_test_wrapper'), '--logs-dir=${ISOLATED_OUTDIR}',
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index aa065de8..3fcca41 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -98,7 +98,7 @@ 'chromeos-amd64-generic-asan-rel': 'cros_chrome_sdk_asan', 'chromeos-amd64-generic-cfi-thin-lto-rel': 'cros_chrome_sdk_cfi_thin_lto', 'chromeos-amd64-generic-dbg': 'cros_chrome_sdk_dbg', - 'chromeos-amd64-generic-rel': 'cros_chrome_sdk', + 'chromeos-amd64-generic-rel': 'chromeos_amd64-generic', 'chromeos-arm-generic-dbg': 'cros_chrome_sdk_dbg', 'chromeos-arm-generic-rel': 'cros_chrome_sdk', 'chromeos-kevin-rel': 'cros_chrome_sdk', @@ -235,6 +235,7 @@ 'fuchsia-fyi-arm64-rel': 'release_bot_fuchsia_arm64', 'fuchsia-fyi-x64-dbg': 'debug_bot_fuchsia', 'fuchsia-fyi-x64-rel': 'release_bot_fuchsia', + 'ios13-beta-simulator': 'ios_simulator_debug_static_bot', 'ios-simulator': 'ios_error', 'ios-simulator-code-coverage': 'clang_code_coverage_ios', 'ios-simulator-cr-recipe': 'ios_simulator_debug_static_bot', @@ -755,7 +756,7 @@ # and two kevin bots when the PFQ has it enabled. 'chromeos-amd64-generic-cfi-thin-lto-rel': 'cros_chrome_sdk_cfi_thin_lto', 'chromeos-amd64-generic-dbg': 'cros_chrome_sdk_dbg', - 'chromeos-amd64-generic-rel': 'cros_chrome_sdk', + 'chromeos-amd64-generic-rel': 'chromeos_amd64-generic', 'chromeos-arm-generic-dbg': 'cros_chrome_sdk_dbg', 'chromeos-arm-generic-rel': 'cros_chrome_sdk_dcheck_always_on', 'chromeos-kevin-compile-rel': 'cros_chrome_sdk', @@ -1342,6 +1343,10 @@ 'cfi_full', 'cfi_icall', 'cfi_diag', 'thin_lto', 'release', 'static', 'dcheck_always_on', 'goma', ], + 'chromeos_amd64-generic': [ + 'chromeos_device', 'amd64-generic', + ], + 'chromeos_asan_lsan_fuzzer_v8_heap_release_bot': [ 'chromeos', 'asan', 'lsan', 'fuzzer', 'v8_heap', 'release_bot', ], @@ -2056,6 +2061,10 @@ 'mixins': { 'afl': { 'gn_args': 'use_afl=true' }, + 'amd64-generic': { + 'args_file': '//build/args/chromeos/amd64-generic.gni', + }, + # We build Android with codecs on most bots to ensure maximum test # coverage, but use 'android_without_codecs' on bots responsible for # building publicly advertised non-Official Android builds -- @@ -2149,6 +2158,11 @@ 'mixins': ['ffmpeg_branding_chromeos', 'proprietary_codecs'], }, + 'chromeos_device': { + 'gn_args': 'is_chromeos_device=true ozone_platform_headless=true', + 'mixins': ['goma'], + }, + 'chromeos_with_codecs': { 'mixins': ['chromeos', 'chromeos_codecs'], },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 5814ea3..39a9cf74 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -26757,6 +26757,10 @@ <int value="3177" label="BreakIteratorTypeLine"/> <int value="3178" label="V8FileSystemDirectoryHandle_Resolve_Method"/> <int value="3179" label="V8FileSystemHandle_IsSameEntry_Method"/> + <int value="3180" label="V8RTCRtpSender_CreateEncodedAudioStreams_Method"/> + <int value="3181" label="V8RTCRtpSender_CreateEncodedVideoStreams_Method"/> + <int value="3182" label="V8RTCRtpReceiver_CreateEncodedAudioStreams_Method"/> + <int value="3183" label="V8RTCRtpReceiver_CreateEncodedVideoStreams_Method"/> </enum> <enum name="FeaturePolicyAllowlistType"> @@ -31874,6 +31878,8 @@ <int value="4" label="TimeoutWait"/> <int value="5" label="ProgressAfterWait"/> <int value="6" label="ContinueOnNonHostServerTty"/> + <int value="7" label="LessThanFullThreadTimeAfterCapped"/> + <int value="8" label="KillOnLessThreadTime,"/> </enum> <enum name="GPUWebGraphicsContext3D_Init_CanLoseContext"> @@ -38070,6 +38076,8 @@ <int value="-1095947169" label="ModalPermissionDialogView:disabled"/> <int value="-1088804127" label="DuetTabStripIntegrationAndroid:disabled"/> <int value="-1086728979" label="kids-management-url-classification:enabled"/> + <int value="-1086656172" + label="PrefetchNotificationSchedulingIntegration:disabled"/> <int value="-1085492638" label="FetchKeepaliveTimeoutSetting:enabled"/> <int value="-1084055006" label="disable-web-notification-custom-layouts"/> <int value="-1083736482" label="OmniboxCompactSuggestions:enabled"/> @@ -38366,6 +38374,8 @@ <int value="-743103250" label="enable-linkable-ephemeral-apps"/> <int value="-742469530" label="DriveFS:disabled"/> <int value="-741806604" label="DownloadsUi:disabled"/> + <int value="-740850824" + label="PrefetchNotificationSchedulingIntegration:enabled"/> <int value="-738957187" label="OmniboxUIExperimentSwapTitleAndUrl:disabled"/> <int value="-735084806" label="NewTabLoadingAnimation:enabled"/> <int value="-734301625" @@ -38487,6 +38497,7 @@ <int value="-601384286" label="disable-contextual-search"/> <int value="-600792432" label="WebVrAutopresentFromIntent:disabled"/> <int value="-599932554" label="DoodlesOnLocalNtp:disabled"/> + <int value="-599005750" label="ScanningUI:disabled"/> <int value="-598050737" label="disable-es3-apis"/> <int value="-596337171" label="disable-ash-sidebar"/> <int value="-595819071" @@ -38617,6 +38628,7 @@ <int value="-424701311" label="SignedHTTPExchange:disabled"/> <int value="-424134004" label="WebPaymentsExperimentalFeatures:disabled"/> <int value="-418868128" label="enable-experimental-web-platform-features"/> + <int value="-418676305" label="ScanningUI:enabled"/> <int value="-416660617" label="EnforceTLS13Downgrade:disabled"/> <int value="-415186532" label="AndroidSiteSettingsUIRefresh:enabled"/> <int value="-412736561" label="EnableZeroStateMixedTypesRanker:enabled"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 76e06faa..86cd96c0 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -28429,7 +28429,7 @@ </histogram> <histogram name="Cookie.CorruptMetaTable" units="units" - expires_after="2020-05-31"> + expires_after="2020-09-09"> <owner>tnagel@chromium.org</owner> <summary> Records the detection of a corrupted meta table. See http://crbug.com/111376 @@ -28455,6 +28455,9 @@ </histogram> <histogram name="Cookie.DBSizeInKB" units="KB" expires_after="M81"> + <obsolete> + Removed as of March 9, 2020. + </obsolete> <owner>dmikurube@chromium.org</owner> <summary> The size, on disk, of the cookie database as it is being loaded. @@ -28568,7 +28571,7 @@ </histogram> <histogram name="Cookie.KillDatabaseResult" enum="BooleanSuccess" - expires_after="M82"> + expires_after="2020-09-09"> <owner>morlovich@chromium.org</owner> <owner>chlily@chromium.org</owner> <summary> @@ -131685,7 +131688,8 @@ </histogram> <histogram name="ReportingAndNEL.BackingStoreUpdateOutcome" - enum="NetReportingAndNelBackingStoreUpdateOutcome" expires_after="M82"> + enum="NetReportingAndNelBackingStoreUpdateOutcome" + expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131698,7 +131702,7 @@ </histogram> <histogram name="ReportingAndNEL.CorruptMetaTable" units="units" - expires_after="M82"> + expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131709,7 +131713,7 @@ </histogram> <histogram name="ReportingAndNEL.CorruptMetaTableRecoveryFailed" units="units" - expires_after="M82"> + expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131721,6 +131725,9 @@ </histogram> <histogram name="ReportingAndNEL.DBSizeInKB" units="KB" expires_after="M82"> + <obsolete> + Removed as of March 9, 2020. + </obsolete> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131731,7 +131738,7 @@ </histogram> <histogram name="ReportingAndNEL.InitializeDBOutcome" - enum="NetReportingAndNelInitializeDbOutcome" expires_after="M82"> + enum="NetReportingAndNelInitializeDbOutcome" expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131742,7 +131749,7 @@ </histogram> <histogram name="ReportingAndNEL.KillDatabaseResult" enum="BooleanSuccess" - expires_after="M82"> + expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131752,7 +131759,7 @@ </histogram> <histogram name="ReportingAndNEL.NumberOfLoadedNELPolicies" - units="policy count" expires_after="M82"> + units="policy count" expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131763,7 +131770,7 @@ </histogram> <histogram name="ReportingAndNEL.NumberOfLoadedReportingEndpointGroups" - units="endpoint group count" expires_after="M82"> + units="endpoint group count" expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131775,7 +131782,7 @@ </histogram> <histogram name="ReportingAndNEL.NumberOfLoadedReportingEndpoints" - units="endpoint count" expires_after="M82"> + units="endpoint count" expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -131787,7 +131794,7 @@ </histogram> <histogram name="ReportingAndNEL.TimeInitializeDB" units="ms" - expires_after="M82"> + expires_after="2020-09-09"> <owner>chlily@chromium.org</owner> <owner>sburnett@chromium.org</owner> <summary> @@ -148909,7 +148916,7 @@ </histogram> <histogram name="Signin.LoadedIdentities.Count" units="identities" - expires_after="2020-11-01"> + expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>msarda@chromium.org</owner> <summary> @@ -148921,7 +148928,7 @@ </histogram> <histogram name="Signin.LoadedIdentities.Duration" units="ms" - expires_after="2020-11-01"> + expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>msarda@chromium.org</owner> <summary> @@ -148933,7 +148940,7 @@ </histogram> <histogram name="Signin.LoadedIdentities.DurationPerIdentity" units="ms" - expires_after="2020-11-01"> + expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>msarda@chromium.org</owner> <summary> @@ -149362,7 +149369,7 @@ </histogram> <histogram name="Signin.SSOAuth.GetIdentities.ErrorCode" - enum="SigninSSOAuthGetIdentitiesErrorCode" expires_after="2020-04-19"> + enum="SigninSSOAuthGetIdentitiesErrorCode" expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -149372,7 +149379,7 @@ </histogram> <histogram name="Signin.SSOWKWebView.GetAllCookies.CookieCount" units="cookies" - expires_after="2020-11-01"> + expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -149384,7 +149391,7 @@ </histogram> <histogram name="Signin.SSOWKWebView.GetAllCookies.Duration" units="ms" - expires_after="2020-11-01"> + expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -149398,7 +149405,7 @@ </histogram> <histogram name="Signin.SSOWKWebView.GetAllCookies.Request" - enum="SigninSSOWKWebViewGetAllCookiesRequest" expires_after="2020-11-01"> + enum="SigninSSOWKWebViewGetAllCookiesRequest" expires_after="2021-04-19"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary>
diff --git a/tools/perf/core/minidump_unittest.py b/tools/perf/core/minidump_unittest.py index 365ca89..3c507b21 100644 --- a/tools/perf/core/minidump_unittest.py +++ b/tools/perf/core/minidump_unittest.py
@@ -21,6 +21,7 @@ # TODO(crbug.com/1038043): Test is failing on chromeos-betty-chrome. # TODO(crbug.com/1056235): Re-enable on Linux once the crashes are fixed. @decorators.Disabled('chromeos-local', 'chromeos-board-betty', + 'chromeos-board-betty-pi-arc', 'chromeos-amd64-generic-rel', 'linux') def testSymbolizeMinidump(self): # Wait for the browser to restart fully before crashing @@ -66,6 +67,7 @@ # TODO(crbug.com/1038043): Test is failing on chromeos-betty-chrome. # TODO(crbug.com/1056235): Re-enable on Linux once the crashes are fixed. @decorators.Disabled('chromeos-local', 'chromeos-board-betty', + 'chromeos-board-betty-pi-arc', 'chromeos-amd64-generic-rel', 'linux') def testMultipleCrashMinidumps(self): # Wait for the browser to restart fully before crashing @@ -147,10 +149,6 @@ self.assertEquals(after_symbolize_all_unsymbolized_paths, [first_crash_path]) - # Explicitly ignore the remaining minidump so that it isn't detected during - # teardown by the test runner. - self._browser.IgnoreMinidump(first_crash_path) - def _LoadPageThenWait(self, script, value): # We are occasionally seeing these tests fail on the first load and # call to GetMostRecentMinidumpPath, where the directory is coming up empty.
diff --git a/tools/vim/OWNERS b/tools/vim/OWNERS index 7338089..8c7e2c9a 100644 --- a/tools/vim/OWNERS +++ b/tools/vim/OWNERS
@@ -1,6 +1,7 @@ asanka@chromium.org dcheng@chromium.org eroman@chromium.org +lukasza@chromium.org scottmg@chromium.org # COMPONENT: Tools
diff --git a/ui/file_manager/file_manager/foreground/js/ui/breadcrumb.js b/ui/file_manager/file_manager/foreground/js/ui/breadcrumb.js index 20a96a89..038c59a 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/breadcrumb.js +++ b/ui/file_manager/file_manager/foreground/js/ui/breadcrumb.js
@@ -141,15 +141,15 @@ </style> <button id='first'></button> - <span class='caret' hidden aria-hidden></span> + <span class='caret' hidden></span> <button elider aria-haspopup='menu' aria-expanded='false'> - <span elider aria-hidden></span> + <span elider></span> </button> - <span class='caret' hidden aria-hidden></span> + <span class='caret' hidden></span> <button id='second'></button> - <span class='caret' hidden aria-hidden></span> + <span class='caret' hidden></span> <button id='third'></button> - <span class='caret' hidden aria-hidden></span> + <span class='caret' hidden></span> <button id='fourth'></button> <cr-action-menu id='elider-menu'></cr-menu-item> `;
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn index 477d322..cf9eee3 100644 --- a/ui/gl/BUILD.gn +++ b/ui/gl/BUILD.gn
@@ -416,16 +416,18 @@ sources = [ "$root_out_dir/libEGL.dylib", "$root_out_dir/libGLESv2.dylib", + "$root_out_dir/libvulkan.dylib", ] outputs = [ "$root_out_dir/egl_intermediates/{{source_file_part}}" ] deps = [ "//third_party/angle:libEGL", "//third_party/angle:libGLESv2", + "//third_party/angle/third_party/vulkan-loader/src:libvulkan", ] } if (enable_swiftshader) { - copy("swiftshader_library_copy") { + copy("swiftshader_egl_library_copy") { sources = [ "$root_out_dir/libswiftshader_libEGL.dylib", "$root_out_dir/libswiftshader_libGLESv2.dylib", @@ -436,6 +438,17 @@ "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2", ] } + copy("swiftshader_vk_library_copy") { + sources = [ + "$root_out_dir/libvk_swiftshader.dylib", + "$root_out_dir/vk_swiftshader_icd.json", + ] + outputs = [ "$root_out_dir/vk_intermediates/{{source_file_part}}" ] + deps = [ + "//third_party/swiftshader/src/Vulkan:icd_file", + "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan", + ] + } } }
diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h index ec7100eb..c9e3d69 100644 --- a/ui/gl/gl_image_io_surface.h +++ b/ui/gl/gl_image_io_surface.h
@@ -91,7 +91,7 @@ protected: GLImageIOSurface(const gfx::Size& size, unsigned internalformat); ~GLImageIOSurface() override; - virtual bool BindTexImageImpl(unsigned internalformat); + virtual bool BindTexImageImpl(unsigned target, unsigned internalformat); static bool ValidFormat(gfx::BufferFormat format); Type GetType() const override;
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm index c90f2009..1e4324f 100644 --- a/ui/gl/gl_image_io_surface.mm +++ b/ui/gl/gl_image_io_surface.mm
@@ -263,16 +263,9 @@ TRACE_EVENT0("gpu", "GLImageIOSurface::BindTexImage"); base::TimeTicks start_time = base::TimeTicks::Now(); - if (target != GL_TEXTURE_RECTANGLE_ARB) { - // This might be supported in the future. For now, perform strict - // validation so we know what's going on. - LOG(ERROR) << "IOSurface requires TEXTURE_RECTANGLE_ARB target"; - return false; - } - DCHECK(io_surface_); - if (!BindTexImageImpl(internalformat)) { + if (!BindTexImageImpl(target, internalformat)) { return false; } @@ -281,7 +274,15 @@ return true; } -bool GLImageIOSurface::BindTexImageImpl(unsigned internalformat) { +bool GLImageIOSurface::BindTexImageImpl(unsigned target, + unsigned internalformat) { + if (target != GL_TEXTURE_RECTANGLE_ARB) { + // This might be supported in the future. For now, perform strict + // validation so we know what's going on. + LOG(ERROR) << "IOSurface requires TEXTURE_RECTANGLE_ARB target"; + return false; + } + CGLContextObj cgl_context = static_cast<CGLContextObj>(GLContext::GetCurrent()->GetHandle());
diff --git a/ui/gl/gl_image_io_surface_egl.h b/ui/gl/gl_image_io_surface_egl.h index cac38cb..a0ed3c9 100644 --- a/ui/gl/gl_image_io_surface_egl.h +++ b/ui/gl/gl_image_io_surface_egl.h
@@ -23,7 +23,7 @@ protected: ~GLImageIOSurfaceEGL() override; - bool BindTexImageImpl(unsigned internalformat) override; + bool BindTexImageImpl(unsigned target, unsigned internalformat) override; bool CopyTexImage(unsigned target) override; private: @@ -36,6 +36,7 @@ EGLDisplay display_; EGLSurface pbuffer_; EGLConfig dummy_config_; + EGLint texture_target_; bool texture_bound_; };
diff --git a/ui/gl/gl_image_io_surface_egl.mm b/ui/gl/gl_image_io_surface_egl.mm index 64ec3c9..f89f115 100644 --- a/ui/gl/gl_image_io_surface_egl.mm +++ b/ui/gl/gl_image_io_surface_egl.mm
@@ -17,6 +17,7 @@ #define EGL_TEXTURE_RECTANGLE_ANGLE 0x345B #define EGL_TEXTURE_TYPE_ANGLE 0x345C #define EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D +#define EGL_BIND_TO_TEXTURE_TARGET_ANGLE 0x348D namespace gl { @@ -69,6 +70,46 @@ return {GL_NONE, GL_NONE}; } +GLint GLTargetFromEGLTarget(GLint egl_target) { + switch (egl_target) { + case EGL_TEXTURE_2D: + return GL_TEXTURE_2D; + case EGL_TEXTURE_RECTANGLE_ANGLE: + return GL_TEXTURE_RECTANGLE_ARB; + default: + NOTIMPLEMENTED() << " Target not supported."; + return GL_NONE; + } +} + +EGLint EGLTargetFromGLTarget(GLint gl_target) { + switch (gl_target) { + case GL_TEXTURE_2D: + return EGL_TEXTURE_2D; + case GL_TEXTURE_RECTANGLE_ARB: + return EGL_TEXTURE_RECTANGLE_ANGLE; + default: + NOTIMPLEMENTED() << " Target not supported."; + return EGL_NO_TEXTURE; + } +} + +GLenum TargetGetterFromGLTarget(GLint gl_target) { + switch (gl_target) { + case GL_TEXTURE_2D: + return GL_TEXTURE_BINDING_2D; + case GL_TEXTURE_CUBE_MAP: + return GL_TEXTURE_BINDING_CUBE_MAP; + case GL_TEXTURE_EXTERNAL_OES: + return GL_TEXTURE_BINDING_EXTERNAL_OES; + case GL_TEXTURE_RECTANGLE_ARB: + return GL_TEXTURE_BINDING_RECTANGLE_ARB; + default: + NOTIMPLEMENTED() << " Target not supported."; + return GL_NONE; + } +} + } // anonymous namespace GLImageIOSurfaceEGL::GLImageIOSurfaceEGL(const gfx::Size& size, @@ -79,6 +120,7 @@ display_(GLSurfaceEGL::GetHardwareDisplay()), pbuffer_(EGL_NO_SURFACE), dummy_config_(nullptr), + texture_target_(EGL_TEXTURE_RECTANGLE_ANGLE), texture_bound_(false) { DCHECK(display_ != EGL_NO_DISPLAY); @@ -90,9 +132,25 @@ DCHECK(result == EGL_TRUE); DCHECK(numConfigs = 1); DCHECK(dummy_config_ != nullptr); + const char* extensions = eglQueryString(display_, EGL_EXTENSIONS); + if (GLSurface::ExtensionsContain(extensions, + "EGL_ANGLE_iosurface_client_buffer")) { + result = + eglGetConfigAttrib(display_, dummy_config_, + EGL_BIND_TO_TEXTURE_TARGET_ANGLE, &texture_target_); + DCHECK(result == EGL_TRUE); + } + DCHECK(texture_target_ != EGL_NO_TEXTURE); } GLImageIOSurfaceEGL::~GLImageIOSurfaceEGL() { + GLint target_gl = GLTargetFromEGLTarget(texture_target_); + if (target_gl == GL_NONE) { + return; + } + if (texture_bound_) { + ReleaseTexImage(target_gl); + } if (pbuffer_ != EGL_NO_SURFACE) { EGLBoolean result = eglDestroySurface(display_, pbuffer_); DCHECK(result == EGL_TRUE); @@ -100,20 +158,41 @@ } void GLImageIOSurfaceEGL::ReleaseTexImage(unsigned target) { - DCHECK(target == GL_TEXTURE_RECTANGLE_ARB); - if (texture_bound_) { - DCHECK(pbuffer_ != EGL_NO_SURFACE); - - EGLBoolean result = eglReleaseTexImage(display_, pbuffer_, EGL_BACK_BUFFER); - DCHECK(result == EGL_TRUE); - texture_bound_ = false; + EGLint target_egl = EGLTargetFromGLTarget(target); + if (target_egl == EGL_NO_TEXTURE) { + return; } + + DCHECK(texture_target_ == target_egl); + + if (!texture_bound_) { + return; + } + + DCHECK(pbuffer_ != EGL_NO_SURFACE); + + EGLBoolean result = eglReleaseTexImage(display_, pbuffer_, EGL_BACK_BUFFER); + DCHECK(result == EGL_TRUE); + texture_bound_ = false; } -bool GLImageIOSurfaceEGL::BindTexImageImpl(unsigned internalformat) { +bool GLImageIOSurfaceEGL::BindTexImageImpl(unsigned target, + unsigned internalformat) { // TODO(cwallez@chromium.org): internalformat is used by Blink's // DrawingBuffer::SetupRGBEmulationForBlitFramebuffer to bind an RGBA // IOSurface as RGB. We should support this. + + if (texture_bound_) + return false; + + GLenum target_getter = TargetGetterFromGLTarget(target); + EGLint target_egl = EGLTargetFromGLTarget(target); + if (target_getter == GL_NONE || target_egl == EGL_NO_TEXTURE) { + return false; + } + + DCHECK(texture_target_ == target_egl); + if (internalformat != 0) { LOG(ERROR) << "GLImageIOSurfaceEGL doesn't support binding with a custom " "internal format yet."; @@ -132,7 +211,7 @@ EGL_WIDTH, size_.width(), EGL_HEIGHT, size_.height(), EGL_IOSURFACE_PLANE_ANGLE, 0, - EGL_TEXTURE_TARGET, EGL_TEXTURE_RECTANGLE_ANGLE, + EGL_TEXTURE_TARGET, texture_target_, EGL_TEXTURE_INTERNAL_FORMAT_ANGLE, formatType.format, EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA, EGL_TEXTURE_TYPE_ANGLE, formatType.type, @@ -165,6 +244,11 @@ bool GLImageIOSurfaceEGL::CopyTexImage(unsigned target) { DCHECK(thread_checker_.CalledOnValidThread()); + GLint target_gl = GLTargetFromEGLTarget(texture_target_); + if (target_gl == GL_NONE) { + return false; + } + if (format_ != gfx::BufferFormat::YUV_420_BIPLANAR) return false; @@ -178,23 +262,9 @@ // Note that state restoration is done explicitly instead of scoped binders to // avoid https://crbug.com/601729. GLint rgb_texture = 0; - GLenum target_getter = 0; - switch (target) { - case GL_TEXTURE_2D: - target_getter = GL_TEXTURE_BINDING_2D; - break; - case GL_TEXTURE_CUBE_MAP: - target_getter = GL_TEXTURE_BINDING_CUBE_MAP; - break; - case GL_TEXTURE_EXTERNAL_OES: - target_getter = GL_TEXTURE_BINDING_EXTERNAL_OES; - break; - case GL_TEXTURE_RECTANGLE_ARB: - target_getter = GL_TEXTURE_BINDING_RECTANGLE_ARB; - break; - default: - NOTIMPLEMENTED() << " Target not supported."; - return false; + GLenum target_getter = TargetGetterFromGLTarget(target); + if (target_getter == GL_NONE) { + return false; } EGLSurface y_surface = EGL_NO_SURFACE; @@ -222,7 +292,7 @@ glBindTexture(target, rgb_texture); }))); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, yuv_to_rgb_converter->y_texture()); + glBindTexture(target_gl, yuv_to_rgb_converter->y_texture()); if (glGetError() != GL_NO_ERROR) { LOG(ERROR) << "Can't bind Y texture"; return false; @@ -233,7 +303,7 @@ EGL_WIDTH, size_.width(), EGL_HEIGHT, size_.height(), EGL_IOSURFACE_PLANE_ANGLE, 0, - EGL_TEXTURE_TARGET, EGL_TEXTURE_RECTANGLE_ANGLE, + EGL_TEXTURE_TARGET, texture_target_, EGL_TEXTURE_INTERNAL_FORMAT_ANGLE, GL_RED, EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA, EGL_TEXTURE_TYPE_ANGLE, GL_UNSIGNED_BYTE, @@ -256,7 +326,7 @@ return false; } - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, yuv_to_rgb_converter->uv_texture()); + glBindTexture(target_gl, yuv_to_rgb_converter->uv_texture()); if (glGetError() != GL_NO_ERROR) { LOG(ERROR) << "Can't bind UV texture"; return false; @@ -267,7 +337,7 @@ EGL_WIDTH, size_.width() / 2, EGL_HEIGHT, size_.height() / 2, EGL_IOSURFACE_PLANE_ANGLE, 1, - EGL_TEXTURE_TARGET, EGL_TEXTURE_RECTANGLE_ANGLE, + EGL_TEXTURE_TARGET, texture_target_, EGL_TEXTURE_INTERNAL_FORMAT_ANGLE, GL_RG, EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA, EGL_TEXTURE_TYPE_ANGLE, GL_UNSIGNED_BYTE,
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc index 6e6992d..0d58dc40 100644 --- a/ui/gl/gl_implementation.cc +++ b/ui/gl/gl_implementation.cc
@@ -44,6 +44,7 @@ typedef std::vector<base::NativeLibrary> LibraryArray; GLImplementation g_gl_implementation = kGLImplementationNone; +ANGLEImplementation g_angle_implementation = ANGLEImplementation::kNone; LibraryArray* g_libraries; GLGetProcAddressProc g_get_proc_address; @@ -137,6 +138,14 @@ return g_gl_implementation; } +void SetANGLEImplementation(ANGLEImplementation implementation) { + g_angle_implementation = implementation; +} + +ANGLEImplementation GetANGLEImplementation() { + return g_angle_implementation; +} + bool HasDesktopGLFeatures() { return kGLImplementationDesktopGL == g_gl_implementation || kGLImplementationDesktopGLCoreProfile == g_gl_implementation ||
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h index 91036f59..4e8dafe 100644 --- a/ui/gl/gl_implementation.h +++ b/ui/gl/gl_implementation.h
@@ -38,6 +38,18 @@ kMaxValue = kGLImplementationEGLANGLE, }; +enum class ANGLEImplementation { + kNone = 0, + kD3D9 = 1, + kD3D11 = 2, + kOpenGL = 3, + kOpenGLES = 4, + kNull = 5, + kVulkan = 6, + kSwiftShader = 7, + kMaxValue = kSwiftShader, +}; + struct GL_EXPORT GLWindowSystemBindingInfo { GLWindowSystemBindingInfo(); ~GLWindowSystemBindingInfo(); @@ -85,6 +97,12 @@ // Get the current GL implementation. GL_EXPORT GLImplementation GetGLImplementation(); +// Set the current ANGLE implementation. +GL_EXPORT void SetANGLEImplementation(ANGLEImplementation implementation); + +// Get the current ANGLE implementation. +GL_EXPORT ANGLEImplementation GetANGLEImplementation(); + // Get the software GL implementation for the current platform. GL_EXPORT GLImplementation GetSoftwareGLImplementation();
diff --git a/ui/gl/gl_surface.h b/ui/gl/gl_surface.h index b0fd6f78..21bde00 100644 --- a/ui/gl/gl_surface.h +++ b/ui/gl/gl_surface.h
@@ -305,11 +305,11 @@ virtual void SetCurrent(); virtual bool IsCurrent(); + static bool ExtensionsContain(const char* extensions, const char* name); + protected: virtual ~GLSurface(); - static bool ExtensionsContain(const char* extensions, const char* name); - private: static void ClearCurrent();
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc index 9876f7f..ae2e63555 100644 --- a/ui/gl/gl_surface_egl.cc +++ b/ui/gl/gl_surface_egl.cc
@@ -443,6 +443,33 @@ } } +ANGLEImplementation GetANGLEImplementationFromDisplayType( + DisplayType display_type) { + switch (display_type) { + case ANGLE_D3D9: + return ANGLEImplementation::kD3D9; + case ANGLE_D3D11: + case ANGLE_D3D11_NULL: + case ANGLE_D3D11on12: + return ANGLEImplementation::kD3D11; + case ANGLE_OPENGL: + case ANGLE_OPENGL_NULL: + return ANGLEImplementation::kOpenGL; + case ANGLE_OPENGLES: + case ANGLE_OPENGLES_NULL: + return ANGLEImplementation::kOpenGLES; + case ANGLE_NULL: + return ANGLEImplementation::kNull; + case ANGLE_VULKAN: + case ANGLE_VULKAN_NULL: + return ANGLEImplementation::kVulkan; + case ANGLE_SWIFTSHADER: + return ANGLEImplementation::kSwiftShader; + default: + return ANGLEImplementation::kNone; + } +} + const char* DisplayTypeString(DisplayType display_type) { switch (display_type) { case DEFAULT: @@ -1107,6 +1134,10 @@ client_extensions, "EGL_ANGLE_platform_angle_device_type_swiftshader"); } + bool supports_angle = supports_angle_d3d || supports_angle_opengl || + supports_angle_null || supports_angle_vulkan || + supports_angle_swiftshader; + if (client_extensions) { g_egl_angle_feature_control_supported = ExtensionsContain(client_extensions, "EGL_ANGLE_feature_control"); @@ -1139,10 +1170,13 @@ } // Init ANGLE platform now that we have the global display. - if (supports_angle_d3d || supports_angle_opengl || supports_angle_null) { + if (supports_angle) { if (!angle::InitializePlatform(display)) { LOG(ERROR) << "ANGLE Platform initialization failed."; } + + SetANGLEImplementation( + GetANGLEImplementationFromDisplayType(display_type)); } if (!eglInitialize(display, nullptr, nullptr)) {
diff --git a/ui/gl/gl_version_info.cc b/ui/gl/gl_version_info.cc index 129e03f..ac2b1f38 100644 --- a/ui/gl/gl_version_info.cc +++ b/ui/gl/gl_version_info.cc
@@ -33,6 +33,7 @@ is_d3d(false), is_mesa(false), is_swiftshader(false), + is_angle_swiftshader(false), major_version(0), minor_version(0), is_es2(false), @@ -48,16 +49,21 @@ if (version_str) ParseVersionString(version_str); if (renderer_str) { + std::string renderer_string = std::string(renderer_str); + is_angle = base::StartsWith(renderer_str, "ANGLE", base::CompareCase::SENSITIVE); is_mesa = base::StartsWith(renderer_str, "Mesa", base::CompareCase::SENSITIVE); + if (is_angle) { + is_angle_swiftshader = + renderer_string.find("SwiftShader Device") != std::string::npos; + } + is_swiftshader = base::StartsWith(renderer_str, "Google SwiftShader", base::CompareCase::SENSITIVE); - // An ANGLE renderer string contains "Direct3D9", "Direct3DEx", or // "Direct3D11" on D3D backends. - std::string renderer_string = std::string(renderer_str); is_d3d = renderer_string.find("Direct3D") != std::string::npos; // (is_d3d should only be possible if is_angle is true.) DCHECK(!is_d3d || is_angle); @@ -191,7 +197,10 @@ if (pos != std::string::npos) rstr = rstr.substr(pos + 1, rstr.size() - 2); } - + if (is_angle_swiftshader) { + DCHECK(base::StartsWith(rstr, "SwiftShader", base::CompareCase::SENSITIVE)); + driver_vendor = "ANGLE (Google)"; + } if (base::StartsWith(rstr, "NVIDIA ", base::CompareCase::SENSITIVE)) driver_vendor = "ANGLE (NVIDIA)"; else if (base::StartsWith(rstr, "Radeon ", base::CompareCase::SENSITIVE))
diff --git a/ui/gl/gl_version_info.h b/ui/gl/gl_version_info.h index d03a8dcaf..f44cf44 100644 --- a/ui/gl/gl_version_info.h +++ b/ui/gl/gl_version_info.h
@@ -65,6 +65,7 @@ bool is_d3d; bool is_mesa; bool is_swiftshader; + bool is_angle_swiftshader; unsigned major_version; unsigned minor_version; bool is_es2;
diff --git a/ui/gl/yuv_to_rgb_converter.cc b/ui/gl/yuv_to_rgb_converter.cc index a5169cd7..5e2c4e23e2 100644 --- a/ui/gl/yuv_to_rgb_converter.cc +++ b/ui/gl/yuv_to_rgb_converter.cc
@@ -35,7 +35,13 @@ "#define ATTRIBUTE in\n" "#define VARYING out\n"; -const char kFragmentHeaderES2[] = +const char kFragmentHeaderES22D[] = + "precision mediump float;\n" + "#define VARYING varying\n" + "#define FRAGCOLOR gl_FragColor\n" + "#define TEX texture2D\n"; + +const char kFragmentHeaderES2Rect[] = "#extension GL_ARB_texture_rectangle : require\n" "precision mediump float;\n" "#define VARYING varying\n" @@ -50,7 +56,13 @@ "#define FRAGCOLOR frag_color\n" "out vec4 FRAGCOLOR;\n"; -const char kFragmentHeaderCompatiblityProfile[] = +const char kFragmentHeaderCompatiblityProfile2D[] = + "#version 110\n" + "#define VARYING varying\n" + "#define FRAGCOLOR gl_FragColor\n" + "#define TEX texture2D\n"; + +const char kFragmentHeaderCompatiblityProfileRect[] = "#version 110\n" "#extension GL_ARB_texture_rectangle : require\n" "#define VARYING varying\n" @@ -76,7 +88,20 @@ } ); -const char kFragmentShader[] = +const char kFragmentShader2D[] = +STRINGIZE( + uniform sampler2D a_y_texture; + uniform sampler2D a_uv_texture; + VARYING vec2 v_texCoord; + void main() { + vec3 yuv = vec3( + TEX(a_y_texture, v_texCoord).r, + TEX(a_uv_texture, v_texCoord * 0.5).rg); + FRAGCOLOR = vec4(DoColorConversion(yuv), 1.0); + } +); + +const char kFragmentShaderRect[] = STRINGIZE( uniform sampler2DRect a_y_texture; uniform sampler2DRect a_uv_texture; @@ -88,6 +113,7 @@ FRAGCOLOR = vec4(DoColorConversion(yuv), 1.0); } ); + // clang-format on } // namespace @@ -100,11 +126,20 @@ gfx::ColorTransform::Intent::INTENT_PERCEPTUAL); std::string do_color_conversion = color_transform->GetShaderSource(); + // On MacOS, the default texture target for native GpuMemoryBuffers is + // GL_TEXTURE_RECTANGLE_ARB. This is due to CGL's requirements for creating + // a GL surface. However, when ANGLE is used on top of SwiftShader, it's + // necessary to use GL_TEXTURE_2D instead. + // TODO(crbug.com/1056312): The proper behavior is to check the config + // parameter set by the EGL_ANGLE_iosurface_client_buffer extension + bool is_rect = !gl_version_info.is_angle_swiftshader; + source_texture_target_ = (is_rect ? GL_TEXTURE_RECTANGLE_ARB : GL_TEXTURE_2D); + const char* fragment_header = nullptr; const char* vertex_header = nullptr; if (gl_version_info.is_es2) { vertex_header = kVertexHeaderES2; - fragment_header = kFragmentHeaderES2; + fragment_header = (is_rect ? kFragmentHeaderES2Rect : kFragmentHeaderES22D); } else if (gl_version_info.is_es3) { vertex_header = kVertexHeaderES3; fragment_header = kFragmentHeaderES3; @@ -114,11 +149,13 @@ } else { DCHECK(!gl_version_info.is_es); vertex_header = kVertexHeaderCompatiblityProfile; - fragment_header = kFragmentHeaderCompatiblityProfile; + fragment_header = (is_rect ? kFragmentHeaderCompatiblityProfileRect + : kFragmentHeaderCompatiblityProfile2D); } DCHECK(vertex_header && fragment_header); glGenFramebuffersEXT(1, &framebuffer_); + vertex_buffer_ = GLHelper::SetupQuadVertexBuffer(); vertex_shader_ = GLHelper::LoadShader( GL_VERTEX_SHADER, @@ -126,7 +163,8 @@ fragment_shader_ = GLHelper::LoadShader( GL_FRAGMENT_SHADER, base::StringPrintf("%s\n%s\n%s", fragment_header, - do_color_conversion.c_str(), kFragmentShader) + do_color_conversion.c_str(), + (is_rect ? kFragmentShaderRect : kFragmentShader2D)) .c_str()); program_ = GLHelper::SetupProgram(vertex_shader_, fragment_shader_); @@ -167,16 +205,28 @@ void YUVToRGBConverter::CopyYUV420ToRGB(unsigned target, const gfx::Size& size, unsigned rgb_texture) { + GLenum source_target_getter = 0; + switch (source_texture_target_) { + case GL_TEXTURE_2D: + source_target_getter = GL_TEXTURE_BINDING_2D; + break; + case GL_TEXTURE_RECTANGLE_ARB: + source_target_getter = GL_TEXTURE_BINDING_RECTANGLE_ARB; + break; + default: + NOTIMPLEMENTED() << " Target not supported."; + return; + } // Note that state restoration is done explicitly instead of scoped binders to // avoid https://crbug.com/601729. GLint old_active_texture = -1; glGetIntegerv(GL_ACTIVE_TEXTURE, &old_active_texture); GLint old_texture0_binding = -1; glActiveTexture(GL_TEXTURE0); - glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_texture0_binding); + glGetIntegerv(source_target_getter, &old_texture0_binding); GLint old_texture1_binding = -1; glActiveTexture(GL_TEXTURE1); - glGetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_texture1_binding); + glGetIntegerv(source_target_getter, &old_texture1_binding); // Allocate the rgb texture. glActiveTexture(old_active_texture); @@ -186,9 +236,9 @@ // Set up and issue the draw call. glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, y_texture_); + glBindTexture(source_texture_target_, y_texture_); glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, uv_texture_); + glBindTexture(source_texture_target_, uv_texture_); ScopedFramebufferBinder framebuffer_binder(framebuffer_); ScopedViewport viewport(0, 0, size.width(), size.height()); glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, @@ -216,9 +266,9 @@ glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target, 0, 0); glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, old_texture0_binding); + glBindTexture(source_texture_target_, old_texture0_binding); glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, old_texture1_binding); + glBindTexture(source_texture_target_, old_texture1_binding); glActiveTexture(old_active_texture); }
diff --git a/ui/gl/yuv_to_rgb_converter.h b/ui/gl/yuv_to_rgb_converter.h index f706c13..3c8178d 100644 --- a/ui/gl/yuv_to_rgb_converter.h +++ b/ui/gl/yuv_to_rgb_converter.h
@@ -40,6 +40,7 @@ unsigned y_texture_ = 0; unsigned uv_texture_ = 0; unsigned vertex_array_object_ = 0; + unsigned source_texture_target_ = 0; }; } // namespace gl
diff --git a/url/mojom/BUILD.gn b/url/mojom/BUILD.gn index f809122c..fc99841 100644 --- a/url/mojom/BUILD.gn +++ b/url/mojom/BUILD.gn
@@ -7,6 +7,9 @@ mojom("url_mojom_gurl") { generate_java = true sources = [ "url.mojom" ] + cpp_typemaps = [ ":url_typemap" ] + blink_cpp_typemaps = + [ "//third_party/blink/renderer/platform/mojo:url_typemap" ] } mojom("url_mojom_origin") { @@ -19,6 +22,10 @@ ] check_includes_blink = false + + cpp_typemaps = [ ":origin_typemap" ] + blink_cpp_typemaps = + [ "//third_party/blink/renderer/platform/mojo:origin_typemap" ] } mojom("test_url_mojom_gurl") { @@ -29,3 +36,58 @@ ":url_mojom_origin", ] } + +component("mojom_traits") { + output_name = "url_mojom_traits" + + sources = [ + "origin_mojom_traits.cc", + "origin_mojom_traits.h", + "url_gurl_mojom_traits.cc", + "url_gurl_mojom_traits.h", + ] + + defines = [ "IS_URL_MOJOM_TRAITS_IMPL" ] + + public_deps = [ + ":url_mojom_gurl_shared", + ":url_mojom_origin_shared", + "//base", + "//mojo/public/cpp/base:shared_typemap_traits", + "//url", + ] +} + +mojom_cpp_typemap("url_typemap") { + types = [ + { + mojom = "url.mojom.Url" + cpp = "::GURL" + }, + ] + public_headers = [ + "//url/gurl.h", + "//url/mojom/url_gurl_mojom_traits.h", + ] + public_deps = [ + ":mojom_traits", + "//url", + ] +} + +mojom_cpp_typemap("origin_typemap") { + types = [ + { + mojom = "url.mojom.Origin" + cpp = "::url::Origin" + }, + ] + public_headers = [ + "//url/origin.h", + "//url/mojom/origin_mojom_traits.h", + ] + public_deps = [ + ":mojom_traits", + "//url", + ] +}
diff --git a/url/mojom/OWNERS b/url/mojom/OWNERS index ff78c432a..06776ee 100644 --- a/url/mojom/OWNERS +++ b/url/mojom/OWNERS
@@ -2,6 +2,4 @@ per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS -per-file *.typemap=set noparent -per-file *.typemap=file://ipc/SECURITY_OWNERS # COMPONENT: Internals>Mojo
diff --git a/url/mojom/gurl.typemap b/url/mojom/gurl.typemap deleted file mode 100644 index 64d8507..0000000 --- a/url/mojom/gurl.typemap +++ /dev/null
@@ -1,11 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -mojom = "//url/mojom/url.mojom" -public_headers = [ "//url/gurl.h" ] -traits_headers = [ "//url/mojom/url_gurl_mojom_traits.h" ] -deps = [ - "//url", -] -type_mappings = [ "url.mojom.Url=::GURL" ]
diff --git a/url/mojom/origin.typemap b/url/mojom/origin.typemap deleted file mode 100644 index 0dcf3bb0c..0000000 --- a/url/mojom/origin.typemap +++ /dev/null
@@ -1,11 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -mojom = "//url/mojom/origin.mojom" -public_headers = [ "//url/origin.h" ] -traits_headers = [ "//url/mojom/origin_mojom_traits.h" ] -deps = [ - "//url", -] -type_mappings = [ "url.mojom.Origin=::url::Origin" ]
diff --git a/url/mojom/origin_mojom_traits.cc b/url/mojom/origin_mojom_traits.cc new file mode 100644 index 0000000..213c43b --- /dev/null +++ b/url/mojom/origin_mojom_traits.cc
@@ -0,0 +1,34 @@ +// 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. + +#include "url/mojom/origin_mojom_traits.h" + +#include "base/strings/string_piece.h" + +namespace mojo { + +// static +bool StructTraits<url::mojom::OriginDataView, url::Origin>::Read( + url::mojom::OriginDataView data, + url::Origin* out) { + base::StringPiece scheme, host; + base::Optional<base::UnguessableToken> nonce_if_opaque; + if (!data.ReadScheme(&scheme) || !data.ReadHost(&host) || + !data.ReadNonceIfOpaque(&nonce_if_opaque)) + return false; + + base::Optional<url::Origin> creation_result = + nonce_if_opaque + ? url::Origin::UnsafelyCreateOpaqueOriginWithoutNormalization( + scheme, host, data.port(), url::Origin::Nonce(*nonce_if_opaque)) + : url::Origin::UnsafelyCreateTupleOriginWithoutNormalization( + scheme, host, data.port()); + if (!creation_result) + return false; + + *out = std::move(creation_result.value()); + return true; +} + +} // namespace mojo
diff --git a/url/mojom/origin_mojom_traits.h b/url/mojom/origin_mojom_traits.h index ac34fe9..79ee161 100644 --- a/url/mojom/origin_mojom_traits.h +++ b/url/mojom/origin_mojom_traits.h
@@ -5,16 +5,18 @@ #ifndef URL_MOJO_ORIGIN_MOJOM_TRAITS_H_ #define URL_MOJO_ORIGIN_MOJOM_TRAITS_H_ -#include "base/strings/string_piece.h" +#include "base/component_export.h" +#include "base/optional.h" #include "base/unguessable_token.h" #include "mojo/public/cpp/base/unguessable_token_mojom_traits.h" -#include "url/mojom/origin.mojom.h" +#include "url/mojom/origin.mojom-shared.h" #include "url/origin.h" namespace mojo { template <> -struct StructTraits<url::mojom::OriginDataView, url::Origin> { +struct COMPONENT_EXPORT(URL_MOJOM_TRAITS) + StructTraits<url::mojom::OriginDataView, url::Origin> { static const std::string& scheme(const url::Origin& r) { return r.GetTupleOrPrecursorTupleIfOpaque().scheme(); } @@ -29,26 +31,7 @@ // TODO(nasko): Consider returning a const reference here. return r.GetNonceForSerialization(); } - static bool Read(url::mojom::OriginDataView data, url::Origin* out) { - base::StringPiece scheme, host; - base::Optional<base::UnguessableToken> nonce_if_opaque; - if (!data.ReadScheme(&scheme) || !data.ReadHost(&host) || - !data.ReadNonceIfOpaque(&nonce_if_opaque)) - return false; - - base::Optional<url::Origin> creation_result = - nonce_if_opaque - ? url::Origin::UnsafelyCreateOpaqueOriginWithoutNormalization( - scheme, host, data.port(), - url::Origin::Nonce(*nonce_if_opaque)) - : url::Origin::UnsafelyCreateTupleOriginWithoutNormalization( - scheme, host, data.port()); - if (!creation_result) - return false; - - *out = std::move(creation_result.value()); - return true; - } + static bool Read(url::mojom::OriginDataView data, url::Origin* out); }; } // namespace mojo
diff --git a/url/mojom/typemaps.gni b/url/mojom/typemaps.gni deleted file mode 100644 index 53875c3cd..0000000 --- a/url/mojom/typemaps.gni +++ /dev/null
@@ -1,8 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -typemaps = [ - "//url/mojom/origin.typemap", - "//url/mojom/gurl.typemap", -]
diff --git a/url/mojom/url_gurl_mojom_traits.cc b/url/mojom/url_gurl_mojom_traits.cc new file mode 100644 index 0000000..4d776dba --- /dev/null +++ b/url/mojom/url_gurl_mojom_traits.cc
@@ -0,0 +1,40 @@ +// 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. + +#include "url/mojom/url_gurl_mojom_traits.h" + +#include "url/url_constants.h" + +namespace mojo { + +// static +base::StringPiece StructTraits<url::mojom::UrlDataView, GURL>::url( + const GURL& r) { + if (r.possibly_invalid_spec().length() > url::kMaxURLChars || !r.is_valid()) { + return base::StringPiece(); + } + + return base::StringPiece(r.possibly_invalid_spec().c_str(), + r.possibly_invalid_spec().length()); +} + +// static +bool StructTraits<url::mojom::UrlDataView, GURL>::Read( + url::mojom::UrlDataView data, + GURL* out) { + base::StringPiece url_string; + if (!data.ReadUrl(&url_string)) + return false; + + if (url_string.length() > url::kMaxURLChars) + return false; + + *out = GURL(url_string); + if (!url_string.empty() && !out->is_valid()) + return false; + + return true; +} + +} // namespace mojo
diff --git a/url/mojom/url_gurl_mojom_traits.h b/url/mojom/url_gurl_mojom_traits.h index 57a36c9..7d668209 100644 --- a/url/mojom/url_gurl_mojom_traits.h +++ b/url/mojom/url_gurl_mojom_traits.h
@@ -5,38 +5,19 @@ #ifndef URL_MOJOM_URL_GURL_MOJOM_TRAITS_H_ #define URL_MOJOM_URL_GURL_MOJOM_TRAITS_H_ +#include "base/component_export.h" #include "base/strings/string_piece.h" +#include "mojo/public/cpp/bindings/struct_traits.h" #include "url/gurl.h" -#include "url/mojom/url.mojom.h" -#include "url/url_constants.h" +#include "url/mojom/url.mojom-shared.h" namespace mojo { template <> -struct StructTraits<url::mojom::UrlDataView, GURL> { - static base::StringPiece url(const GURL& r) { - if (r.possibly_invalid_spec().length() > url::kMaxURLChars || - !r.is_valid()) { - return base::StringPiece(); - } - - return base::StringPiece(r.possibly_invalid_spec().c_str(), - r.possibly_invalid_spec().length()); - } - static bool Read(url::mojom::UrlDataView data, GURL* out) { - base::StringPiece url_string; - if (!data.ReadUrl(&url_string)) - return false; - - if (url_string.length() > url::kMaxURLChars) - return false; - - *out = GURL(url_string); - if (!url_string.empty() && !out->is_valid()) - return false; - - return true; - } +struct COMPONENT_EXPORT(URL_MOJOM_TRAITS) + StructTraits<url::mojom::UrlDataView, GURL> { + static base::StringPiece url(const GURL& r); + static bool Read(url::mojom::UrlDataView data, GURL* out); }; } // namespace mojo