diff options
Diffstat (limited to 'chromium/content')
93 files changed, 613 insertions, 52 deletions
diff --git a/chromium/content/app/strings/content_strings.grd b/chromium/content/app/strings/content_strings.grd index 36c2864a7cb..438d92fd0b1 100644 --- a/chromium/content/app/strings/content_strings.grd +++ b/chromium/content/app/strings/content_strings.grd @@ -765,6 +765,14 @@ below: more options </message> + <message name="IDS_AX_MEDIA_TOUCHLESS_SEEK_ACTION" desc="Accessibility help description for seek action on touchless device using DPAD."> + left and right to seek + </message> + + <message name="IDS_AX_MEDIA_TOUCHLESS_VOLUME_ACTION" desc="Accessibility help description for volume change action on touchless device using DPAD."> + up and down to change volume + </message> + <message name="IDS_AX_MILLISECOND_FIELD_TEXT" desc="Accessible description of the millisecond field in a date/time control"> Milliseconds </message> diff --git a/chromium/content/app/strings/translations/content_strings_am.xtb b/chromium/content/app/strings/translations/content_strings_am.xtb index 8f94face1da..725bb66c9e0 100644 --- a/chromium/content/app/strings/translations/content_strings_am.xtb +++ b/chromium/content/app/strings/translations/content_strings_am.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">ማህደረ መረጃን አውርድ</translation> <translation id="6981594929165378967">ማስገባት</translation> <translation id="6989848892321993519">እባክዎ ይህን ጽሑፍ ወደ <ph name="MIN_CHARACTERS" /> ወይም ከዚያ በላይ ቁምፊዎች ያራዝሙት (አሁን እየተጠቀሙ ያሉት 1 ቁምፊ ነው)።</translation> +<translation id="7033340931668032222">ድምጽ ለመቀየር ወደ ላይ እና ታች</translation> <translation id="709897737746224366">እባክዎ የተጠየቀውን ቅርጸት ያዛምዱ።</translation> <translation id="7118469954320184356">ምንም መግለጫ የለም።</translation> <translation id="7139483182332611405">መቅድም</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ሥዕላዊ ምልክት</translation> <translation id="8583702881314752957">የብየና ዝርዝር</translation> <translation id="8597182159515967513">ርዕስ</translation> +<translation id="8603553056539299761">ለመፈለግ ወደ ግራ እና ቀኝ</translation> <translation id="860475260694818407">ማውጫ</translation> <translation id="8613126697340063924">በርቀት መልሶ ማጫወትን ተቆጣጠር</translation> <translation id="862370744433916922">የግርጌ ጽሑፍ</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ar.xtb b/chromium/content/app/strings/translations/content_strings_ar.xtb index 537359c19bd..06de53d2e37 100644 --- a/chromium/content/app/strings/translations/content_strings_ar.xtb +++ b/chromium/content/app/strings/translations/content_strings_ar.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">تنزيل وسائط</translation> <translation id="6981594929165378967">إدراج</translation> <translation id="6989848892321993519">يُرجى إطالة هذا النص إلى <ph name="MIN_CHARACTERS" /> من الحروف أو أكثر (أنت الآن تستخدم حرفًا واحدًا).</translation> +<translation id="7033340931668032222">الضغط على السهم المتجه إلى الأعلى والآخر المتجه إلى الأسفل لتغيير مستوى الصوت</translation> <translation id="709897737746224366">يُرجى مطابقة التنسيق المطلوب.</translation> <translation id="7118469954320184356">لا يتوفر أي وصف.</translation> <translation id="7139483182332611405">تمهيد</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">رمز رسومي</translation> <translation id="8583702881314752957">قائمة تعريف</translation> <translation id="8597182159515967513">العنوان</translation> +<translation id="8603553056539299761">الضغط على السهم الأيمن والأيسر لتنفيذ الإجراء</translation> <translation id="860475260694818407">جدول المحتويات</translation> <translation id="8613126697340063924">التحكم في التشغيل عن بعد</translation> <translation id="862370744433916922">ترجمة مصاحِبة</translation> diff --git a/chromium/content/app/strings/translations/content_strings_bg.xtb b/chromium/content/app/strings/translations/content_strings_bg.xtb index 08b66efa071..a8cdc622ec9 100644 --- a/chromium/content/app/strings/translations/content_strings_bg.xtb +++ b/chromium/content/app/strings/translations/content_strings_bg.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">изтегляне на мултимедията</translation> <translation id="6981594929165378967">вмъкване</translation> <translation id="6989848892321993519">Моля, удължете този текст до поне <ph name="MIN_CHARACTERS" /> знака (понастоящем използвате 1 знак).</translation> +<translation id="7033340931668032222">нагоре и надолу за промяна на силата на звука</translation> <translation id="709897737746224366">Моля, спазвайте изисквания формат.</translation> <translation id="7118469954320184356">Няма описание.</translation> <translation id="7139483182332611405">предисловие</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">графичен символ</translation> <translation id="8583702881314752957">списък с дефиниции</translation> <translation id="8597182159515967513">заглавие</translation> +<translation id="8603553056539299761">наляво и надясно за придвижване</translation> <translation id="860475260694818407">съдържание</translation> <translation id="8613126697340063924">управление на отдалеченото възпроизвеждане</translation> <translation id="862370744433916922">подзаглавие</translation> diff --git a/chromium/content/app/strings/translations/content_strings_bn.xtb b/chromium/content/app/strings/translations/content_strings_bn.xtb index 7746b82ea65..46b6e143138 100644 --- a/chromium/content/app/strings/translations/content_strings_bn.xtb +++ b/chromium/content/app/strings/translations/content_strings_bn.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">মিডিয়া ডাউনলোড করুন</translation> <translation id="6981594929165378967">যোগ করা হচ্ছে</translation> <translation id="6989848892321993519">দয়া করে এই পাঠ্যকে ন্যূনতম <ph name="MIN_CHARACTERS" /> অক্ষরের বা তার বেশি দৈর্ঘ্যের করুন (আপনি বর্তমানে ১টি অক্ষর ব্যবহার করেছেন)।</translation> +<translation id="7033340931668032222">ভলিউম পরিবর্তন করতে উপরে এবং নিচে</translation> <translation id="709897737746224366">দয়া করে অনুরোধ হওয়া বিন্যাসটি মেলান৷</translation> <translation id="7118469954320184356">কোনও বিবরণ নেই।</translation> <translation id="7139483182332611405">মুখবন্ধ</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">গ্রাফিক্স চিহ্ন</translation> <translation id="8583702881314752957">সংজ্ঞার তালিকা</translation> <translation id="8597182159515967513">শিরোনাম</translation> +<translation id="8603553056539299761">খুঁজে পেতে ডানদিকে এবং বাঁদিকে</translation> <translation id="860475260694818407">সূচিপত্র</translation> <translation id="8613126697340063924">রিমোট প্লেব্যাক নিয়ন্ত্রণ করুন</translation> <translation id="862370744433916922">সাবটাইটেল</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ca.xtb b/chromium/content/app/strings/translations/content_strings_ca.xtb index e7f689336bf..e5dd528c318 100644 --- a/chromium/content/app/strings/translations/content_strings_ca.xtb +++ b/chromium/content/app/strings/translations/content_strings_ca.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">baixa els fitxers multimèdia</translation> <translation id="6981594929165378967">inserció</translation> <translation id="6989848892321993519">Allarga aquest text fins a <ph name="MIN_CHARACTERS" /> caràcters o més (ara n'utilitzes 1).</translation> +<translation id="7033340931668032222">amunt i avall per canviar el volum</translation> <translation id="709897737746224366">Feu servir el format sol·licitat.</translation> <translation id="7118469954320184356">No hi ha cap descripció disponible.</translation> <translation id="7139483182332611405">prefaci</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">símbol gràfic</translation> <translation id="8583702881314752957">llista de definicions</translation> <translation id="8597182159515967513">Encapçalament</translation> +<translation id="8603553056539299761">dreta i esquerra per avançar i retrocedir</translation> <translation id="860475260694818407">taula de continguts</translation> <translation id="8613126697340063924">reproducció amb comandament</translation> <translation id="862370744433916922">subtítol</translation> diff --git a/chromium/content/app/strings/translations/content_strings_cs.xtb b/chromium/content/app/strings/translations/content_strings_cs.xtb index 570b6d8b5b0..1f7bba3ec14 100644 --- a/chromium/content/app/strings/translations/content_strings_cs.xtb +++ b/chromium/content/app/strings/translations/content_strings_cs.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">stáhnout média</translation> <translation id="6981594929165378967">vložení</translation> <translation id="6989848892321993519">Prodlužte prosím tento text na <ph name="MIN_CHARACTERS" /> či více znaků. (Aktuálně má 1 znak.)</translation> +<translation id="7033340931668032222">směr nahoru a dolů slouží ke změně hlasitosti</translation> <translation id="709897737746224366">Zadejte hodnotu, která odpovídá požadovanému formátu.</translation> <translation id="7118469954320184356">Popis není k dispozici.</translation> <translation id="7139483182332611405">předmluva</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafický symbol</translation> <translation id="8583702881314752957">seznam definic</translation> <translation id="8597182159515967513">záhlaví</translation> +<translation id="8603553056539299761">směr vlevo a vpravo slouží k vyhledávání</translation> <translation id="860475260694818407">obsah</translation> <translation id="8613126697340063924">ovládání vzdáleného přehrávání</translation> <translation id="862370744433916922">titulek</translation> diff --git a/chromium/content/app/strings/translations/content_strings_da.xtb b/chromium/content/app/strings/translations/content_strings_da.xtb index 476afb52b26..899799c349a 100644 --- a/chromium/content/app/strings/translations/content_strings_da.xtb +++ b/chromium/content/app/strings/translations/content_strings_da.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">download medier</translation> <translation id="6981594929165378967">indsættelse</translation> <translation id="6989848892321993519">Forlæng denne tekst til <ph name="MIN_CHARACTERS" /> eller flere tegn (du bruger i øjeblikket ét tegn).</translation> +<translation id="7033340931668032222">op og ned for at justere lydstyrken</translation> <translation id="709897737746224366">Find et match til det anmodede format.</translation> <translation id="7118469954320184356">Der er ingen beskrivelse.</translation> <translation id="7139483182332611405">forord</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafiksymbol</translation> <translation id="8583702881314752957">liste over definitioner</translation> <translation id="8597182159515967513">overskrift</translation> +<translation id="8603553056539299761">venstre og højre for at søge</translation> <translation id="860475260694818407">indholdsfortegnelse</translation> <translation id="8613126697340063924">kontrollér afspilning via fjernadgang</translation> <translation id="862370744433916922">undertitel</translation> diff --git a/chromium/content/app/strings/translations/content_strings_de.xtb b/chromium/content/app/strings/translations/content_strings_de.xtb index 5b4d243f075..a4eefe2fd23 100644 --- a/chromium/content/app/strings/translations/content_strings_de.xtb +++ b/chromium/content/app/strings/translations/content_strings_de.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">Medien herunterladen</translation> <translation id="6981594929165378967">Einfügen</translation> <translation id="6989848892321993519">Verlängern Sie diesen Text auf mindestens <ph name="MIN_CHARACTERS" /> Zeichen. Derzeit verwenden Sie 1 Zeichen.</translation> +<translation id="7033340931668032222">oben und unten zum Ändern der Lautstärke</translation> <translation id="709897737746224366">Ihre Eingabe muss mit dem geforderten Format übereinstimmen.</translation> <translation id="7118469954320184356">Keine Beschreibung verfügbar.</translation> <translation id="7139483182332611405">Vorbemerkung</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">Grafiksymbol</translation> <translation id="8583702881314752957">Definitionsliste</translation> <translation id="8597182159515967513">Kopfzeile</translation> +<translation id="8603553056539299761">links und rechts zum Suchen</translation> <translation id="860475260694818407">Inhaltsverzeichnis</translation> <translation id="8613126697340063924">Remote-Wiedergabe steuern</translation> <translation id="862370744433916922">Untertitel</translation> diff --git a/chromium/content/app/strings/translations/content_strings_el.xtb b/chromium/content/app/strings/translations/content_strings_el.xtb index 7a9ba589d1e..b31d720d990 100644 --- a/chromium/content/app/strings/translations/content_strings_el.xtb +++ b/chromium/content/app/strings/translations/content_strings_el.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">λήψη μέσων</translation> <translation id="6981594929165378967">εισαγωγή</translation> <translation id="6989848892321993519">Αυξήστε την έκταση αυτού του κειμένου στους <ph name="MIN_CHARACTERS" /> χαρακτήρες ή περισσότερο (αυτήν τη στιγμή χρησιμοποιείτε 1 χαρακτήρα).</translation> +<translation id="7033340931668032222">επάνω και κάτω για αλλαγή της έντασης ήχου</translation> <translation id="709897737746224366">Αντιστοιχίστε τη ζητούμενη μορφή.</translation> <translation id="7118469954320184356">Δεν υπάρχει διαθέσιμη περιγραφή.</translation> <translation id="7139483182332611405">πρόλογος</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">σύμβολο γραφικών</translation> <translation id="8583702881314752957">λίστα ορισμών</translation> <translation id="8597182159515967513">επικεφαλίδα</translation> +<translation id="8603553056539299761">αριστερά και δεξιά για αναζήτηση</translation> <translation id="860475260694818407">πίνακας περιεχομένων</translation> <translation id="8613126697340063924">έλεγχος απομακρυσμένης αναπαραγωγής</translation> <translation id="862370744433916922">υπότιτλος</translation> diff --git a/chromium/content/app/strings/translations/content_strings_en-GB.xtb b/chromium/content/app/strings/translations/content_strings_en-GB.xtb index 3333d5ce733..3d77600b7e8 100644 --- a/chromium/content/app/strings/translations/content_strings_en-GB.xtb +++ b/chromium/content/app/strings/translations/content_strings_en-GB.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">download media</translation> <translation id="6981594929165378967">insertion</translation> <translation id="6989848892321993519">Please lengthen this text to <ph name="MIN_CHARACTERS" /> characters or more (you are currently using 1 character).</translation> +<translation id="7033340931668032222">up and down to change volume</translation> <translation id="709897737746224366">Please match the format requested.</translation> <translation id="7118469954320184356">No description available.</translation> <translation id="7139483182332611405">preface</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">graphics symbol</translation> <translation id="8583702881314752957">definition list</translation> <translation id="8597182159515967513">heading</translation> +<translation id="8603553056539299761">left and right to seek</translation> <translation id="860475260694818407">table of contents</translation> <translation id="8613126697340063924">control remote playback</translation> <translation id="862370744433916922">subtitle</translation> diff --git a/chromium/content/app/strings/translations/content_strings_es-419.xtb b/chromium/content/app/strings/translations/content_strings_es-419.xtb index b2e4514f8fe..e5d563eff02 100644 --- a/chromium/content/app/strings/translations/content_strings_es-419.xtb +++ b/chromium/content/app/strings/translations/content_strings_es-419.xtb @@ -136,7 +136,7 @@ <translation id="5677946354068040947">más opciones</translation> <translation id="576709008726043716">introducción</translation> <translation id="57838592816432529">Silenciar</translation> -<translation id="5860033963881614850">Desactivado</translation> +<translation id="5860033963881614850">No</translation> <translation id="588258955323874662">Pantalla completa</translation> <translation id="5888666972993069672">Transmitiendo ahora a <ph name="DEVICE_FRIENDLY_NAME" /></translation> <translation id="5939518447894949180">Restablecer</translation> @@ -176,6 +176,7 @@ <translation id="6941933287844615239">descargar medios</translation> <translation id="6981594929165378967">contenido agregado</translation> <translation id="6989848892321993519">Extiende este texto para que tenga <ph name="MIN_CHARACTERS" /> caracteres o más (actualmente usas 1 carácter).</translation> +<translation id="7033340931668032222">arriba y abajo para cambiar el volumen</translation> <translation id="709897737746224366">Haz coincidir el formato solicitado.</translation> <translation id="7118469954320184356">No hay una descripción disponible.</translation> <translation id="7139483182332611405">prefacio</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">símbolo gráfico</translation> <translation id="8583702881314752957">lista de definiciones</translation> <translation id="8597182159515967513">cabecera</translation> +<translation id="8603553056539299761">izquierda y derecha para buscar</translation> <translation id="860475260694818407">índice</translation> <translation id="8613126697340063924">controlar la reproducción remota</translation> <translation id="862370744433916922">subtítulo</translation> diff --git a/chromium/content/app/strings/translations/content_strings_es.xtb b/chromium/content/app/strings/translations/content_strings_es.xtb index 53ebbe2ddd3..6908e9bf0e5 100644 --- a/chromium/content/app/strings/translations/content_strings_es.xtb +++ b/chromium/content/app/strings/translations/content_strings_es.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">descargar archivos multimedia</translation> <translation id="6981594929165378967">inserción</translation> <translation id="6989848892321993519">Aumenta la longitud de este texto a <ph name="MIN_CHARACTERS" /> caracteres o más (actualmente, el texto tiene 1 carácter).</translation> +<translation id="7033340931668032222">arriba o abajo para subir o bajar el volumen</translation> <translation id="709897737746224366">Utiliza un formato que coincida con el solicitado</translation> <translation id="7118469954320184356">No hay ninguna descripción disponible.</translation> <translation id="7139483182332611405">prefacio</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">símbolo gráfico</translation> <translation id="8583702881314752957">lista de definiciones</translation> <translation id="8597182159515967513">cabecera</translation> +<translation id="8603553056539299761">izquierda o derecha para ir hacia delante o hacia atrás</translation> <translation id="860475260694818407">índice</translation> <translation id="8613126697340063924">reproducción de control remoto</translation> <translation id="862370744433916922">subtítulo</translation> diff --git a/chromium/content/app/strings/translations/content_strings_et.xtb b/chromium/content/app/strings/translations/content_strings_et.xtb index 142bc3b9fd9..dbc55f637f1 100644 --- a/chromium/content/app/strings/translations/content_strings_et.xtb +++ b/chromium/content/app/strings/translations/content_strings_et.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">laadi meedia alla</translation> <translation id="6981594929165378967">lisamine</translation> <translation id="6989848892321993519">Pikendage teksti vähemalt <ph name="MIN_CHARACTERS" /> tähemärgini (kasutate praegu ühte tähemärki).</translation> +<translation id="7033340931668032222">hääletugevuse muutmiseks üles- ja allanoole klahvi</translation> <translation id="709897737746224366">Vastendage nõutav vorming.</translation> <translation id="7118469954320184356">Kirjeldust pole.</translation> <translation id="7139483182332611405">eessõna</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">graafika sümbol</translation> <translation id="8583702881314752957">definitsioonide loend</translation> <translation id="8597182159515967513">pealkiri</translation> +<translation id="8603553056539299761">otsimiseks vasakut ja paremat klahvi</translation> <translation id="860475260694818407">sisukord</translation> <translation id="8613126697340063924">kaugesituse juhtimine</translation> <translation id="862370744433916922">alapealkiri</translation> diff --git a/chromium/content/app/strings/translations/content_strings_fa.xtb b/chromium/content/app/strings/translations/content_strings_fa.xtb index 61b1544df58..10fad531f33 100644 --- a/chromium/content/app/strings/translations/content_strings_fa.xtb +++ b/chromium/content/app/strings/translations/content_strings_fa.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">بارگیری رسانه</translation> <translation id="6981594929165378967">درج</translation> <translation id="6989848892321993519">لطفاً این نوشتار را به <ph name="MIN_CHARACTERS" /> نویسه یا بیشتر افزایش دهید (درحالحاضر از ۱ نویسه استفاده میکنید).</translation> +<translation id="7033340931668032222">برای تغییر میزان صدا، به بالا و پایین بروید</translation> <translation id="709897737746224366">لطفاً با قالب درخواستی مطابقت دهید.</translation> <translation id="7118469954320184356">توضیحی دردسترس نیست.</translation> <translation id="7139483182332611405">پیشگفتار</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">نماد گرافیکی</translation> <translation id="8583702881314752957">فهرست معنیها</translation> <translation id="8597182159515967513">عنوان</translation> +<translation id="8603553056539299761">برای جستجو، به چپ و راست بروید</translation> <translation id="860475260694818407">فهرست مطالب</translation> <translation id="8613126697340063924">کنترل بازپخش راه دور</translation> <translation id="862370744433916922">زیرنویس</translation> diff --git a/chromium/content/app/strings/translations/content_strings_fi.xtb b/chromium/content/app/strings/translations/content_strings_fi.xtb index ba7a3183271..b9788ae5407 100644 --- a/chromium/content/app/strings/translations/content_strings_fi.xtb +++ b/chromium/content/app/strings/translations/content_strings_fi.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">lataa media</translation> <translation id="6981594929165378967">lisäys</translation> <translation id="6989848892321993519">Pidennä tämä teksti vähintään <ph name="MIN_CHARACTERS" /> merkkiin (tällä hetkellä käytössä 1 merkki).</translation> +<translation id="7033340931668032222">ylös ja alas, niin voit muuttaa äänenvoimakkuutta</translation> <translation id="709897737746224366">Käytä pyydettyä muotoilua.</translation> <translation id="7118469954320184356">Ei kuvausta saatavilla</translation> <translation id="7139483182332611405">johdanto</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafiikkasymboli</translation> <translation id="8583702881314752957">määritelmäluettelo</translation> <translation id="8597182159515967513">otsikko</translation> +<translation id="8603553056539299761">vasemmalle ja oikealle, niin voit hakea</translation> <translation id="860475260694818407">sisällysluettelo</translation> <translation id="8613126697340063924">hallinnoi etätoistoa</translation> <translation id="862370744433916922">alaotsikko</translation> diff --git a/chromium/content/app/strings/translations/content_strings_fil.xtb b/chromium/content/app/strings/translations/content_strings_fil.xtb index 4221e6c6762..5426ac4dde8 100644 --- a/chromium/content/app/strings/translations/content_strings_fil.xtb +++ b/chromium/content/app/strings/translations/content_strings_fil.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">i-download ang media</translation> <translation id="6981594929165378967">paglagay</translation> <translation id="6989848892321993519">Pakidagdagan ang text na ito nang hanggang <ph name="MIN_CHARACTERS" /> (na) character o higit pa (kasalukuyan kang gumagamit ng 1 character).</translation> +<translation id="7033340931668032222">pataas at pababa para baguhin ang volume</translation> <translation id="709897737746224366">Pakitugma ang hiniling na format.</translation> <translation id="7118469954320184356">Walang available na paglalarawan.</translation> <translation id="7139483182332611405">preface</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">simbolo ng graphics</translation> <translation id="8583702881314752957">listahan ng kahulugan</translation> <translation id="8597182159515967513">heading</translation> +<translation id="8603553056539299761">pakaliwa at pakanan para mag-seek</translation> <translation id="860475260694818407">talaan ng nilalaman</translation> <translation id="8613126697340063924">kontrolin ang malayuang pag-playback</translation> <translation id="862370744433916922">subtitle</translation> diff --git a/chromium/content/app/strings/translations/content_strings_fr.xtb b/chromium/content/app/strings/translations/content_strings_fr.xtb index 686f4dfc3df..af33fcbc641 100644 --- a/chromium/content/app/strings/translations/content_strings_fr.xtb +++ b/chromium/content/app/strings/translations/content_strings_fr.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">télécharger des contenus multimédias</translation> <translation id="6981594929165378967">insertion</translation> <translation id="6989848892321993519">Veuillez allonger ce texte pour qu'il comporte au moins <ph name="MIN_CHARACTERS" /> caractères. Il en compte actuellement un seul.</translation> +<translation id="7033340931668032222">haut et bas pour modifier le volume</translation> <translation id="709897737746224366">Veuillez respecter le format requis.</translation> <translation id="7118469954320184356">Aucune description disponible.</translation> <translation id="7139483182332611405">préface</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">symbole graphique</translation> <translation id="8583702881314752957">liste de définitions</translation> <translation id="8597182159515967513">en-tête</translation> +<translation id="8603553056539299761">gauche et droite pour chercher</translation> <translation id="860475260694818407">sommaire</translation> <translation id="8613126697340063924">contrôler la lecture à distance</translation> <translation id="862370744433916922">sous-titre</translation> diff --git a/chromium/content/app/strings/translations/content_strings_gu.xtb b/chromium/content/app/strings/translations/content_strings_gu.xtb index f85240d7b19..f4b6b3e383a 100644 --- a/chromium/content/app/strings/translations/content_strings_gu.xtb +++ b/chromium/content/app/strings/translations/content_strings_gu.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">મીડિયા ડાઉનલોડ કરો</translation> <translation id="6981594929165378967">ઉમેરો</translation> <translation id="6989848892321993519">કૃપા કરીને આ ટેક્સ્ટને <ph name="MIN_CHARACTERS" /> અથવા તેથી વધુ અક્ષર સુધી લંબાવો (તમે હાલમાં 1 અક્ષરનો ઉપયોગ કરી રહ્યાં છો).</translation> +<translation id="7033340931668032222">વૉલ્યૂમમાં ફેરફાર કરવા માટે up અને down</translation> <translation id="709897737746224366">કૃપા કરીને વિનંતી કરેલા ફોર્મેટ સાથે મેળ કરો.</translation> <translation id="7118469954320184356">કોઈ વર્ણન ઉપલબ્ધ નથી.</translation> <translation id="7139483182332611405">પ્રસ્તાવના</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ગ્રાફિક્સ પ્રતીક</translation> <translation id="8583702881314752957">વિવરણ સૂચિ</translation> <translation id="8597182159515967513">મથાળું</translation> +<translation id="8603553056539299761">શોધવા માટે left અને right</translation> <translation id="860475260694818407">અનુક્રમણિકા</translation> <translation id="8613126697340063924">રિમોટ પ્લેબેકનું નિયંત્રણ કરો</translation> <translation id="862370744433916922">(સબટાઇટલ)</translation> diff --git a/chromium/content/app/strings/translations/content_strings_hi.xtb b/chromium/content/app/strings/translations/content_strings_hi.xtb index cec4049ae93..0506b102e65 100644 --- a/chromium/content/app/strings/translations/content_strings_hi.xtb +++ b/chromium/content/app/strings/translations/content_strings_hi.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">मीडिया डाउनलोड करें</translation> <translation id="6981594929165378967">डालना</translation> <translation id="6989848892321993519">कृपया इस लेख को <ph name="MIN_CHARACTERS" /> या उससे ज़्यादा वर्णों तक बढ़ाएं (आप इस समय 1 वर्ण का उपयोग कर रहे हैं).</translation> +<translation id="7033340931668032222">आवाज़ कम-ज़्यादा करने के लिए ऊपर और नीचे वाले बटन का इस्तेमाल करें</translation> <translation id="709897737746224366">कृपया अनुरोधित प्रारूप का मिलान करें.</translation> <translation id="7118469954320184356">कोई जानकारी मौजूद नहीं है.</translation> <translation id="7139483182332611405">आमुख</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ग्राफ़िक्स चिह्न</translation> <translation id="8583702881314752957">परिभाषा सूची</translation> <translation id="8597182159515967513">हेडिंग</translation> +<translation id="8603553056539299761">कार्रवाई के लिए बाएं और दाएं बटन का इस्तेमाल करें</translation> <translation id="860475260694818407">विषय सूची</translation> <translation id="8613126697340063924">दूरस्थ प्लेबैक नियंत्रित करें</translation> <translation id="862370744433916922">सबटाइटल</translation> diff --git a/chromium/content/app/strings/translations/content_strings_hr.xtb b/chromium/content/app/strings/translations/content_strings_hr.xtb index 56f67e9404b..2dcf9a18501 100644 --- a/chromium/content/app/strings/translations/content_strings_hr.xtb +++ b/chromium/content/app/strings/translations/content_strings_hr.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">preuzmi medij</translation> <translation id="6981594929165378967">umetanje</translation> <translation id="6989848892321993519">Produljite broj znakova u tekstu na minimalno <ph name="MIN_CHARACTERS" /> (trenutačno imate 1 znak).</translation> +<translation id="7033340931668032222">gore i dolje za regulaciju glasnoće</translation> <translation id="709897737746224366">Udovoljite zadanom formatu.</translation> <translation id="7118469954320184356">Opis nije dostupan.</translation> <translation id="7139483182332611405">predgovor</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafički simbol</translation> <translation id="8583702881314752957">popis definicija</translation> <translation id="8597182159515967513">naslov</translation> +<translation id="8603553056539299761">lijevo i desno za preskakanje</translation> <translation id="860475260694818407">sadržaj</translation> <translation id="8613126697340063924">upravljaj daljinskom reprodukcijom</translation> <translation id="862370744433916922">titl</translation> diff --git a/chromium/content/app/strings/translations/content_strings_hu.xtb b/chromium/content/app/strings/translations/content_strings_hu.xtb index 1bd932423a6..d495dce010c 100644 --- a/chromium/content/app/strings/translations/content_strings_hu.xtb +++ b/chromium/content/app/strings/translations/content_strings_hu.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">médiafájlok letöltése</translation> <translation id="6981594929165378967">beszúrás</translation> <translation id="6989848892321993519">Legalább <ph name="MIN_CHARACTERS" /> karakter hosszú szöveget adjon meg (jelenleg 1 karaktert használ).</translation> +<translation id="7033340931668032222">fel és le a hangerő módosításához</translation> <translation id="709897737746224366">Kérjük, tartsa magát a kívánt formátumhoz.</translation> <translation id="7118469954320184356">Nincs leírás.</translation> <translation id="7139483182332611405">bevezető</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafikus szimbólum</translation> <translation id="8583702881314752957">definíciós lista</translation> <translation id="8597182159515967513">fejléc</translation> +<translation id="8603553056539299761">balra és jobbra az ugráshoz</translation> <translation id="860475260694818407">tartalomjegyzék</translation> <translation id="8613126697340063924">távoli lejátszás kezelése</translation> <translation id="862370744433916922">felirat</translation> diff --git a/chromium/content/app/strings/translations/content_strings_id.xtb b/chromium/content/app/strings/translations/content_strings_id.xtb index f093d82578c..5455029d973 100644 --- a/chromium/content/app/strings/translations/content_strings_id.xtb +++ b/chromium/content/app/strings/translations/content_strings_id.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">download media</translation> <translation id="6981594929165378967">penyisipan</translation> <translation id="6989848892321993519">Perpanjang teks ini menjadi <ph name="MIN_CHARACTERS" /> karakter atau lebih (saat ini Anda menggunakan 1 karakter).</translation> +<translation id="7033340931668032222">ke atas dan ke bawah untuk mengubah volume</translation> <translation id="709897737746224366">Sesuaikan dengan format yang diminta.</translation> <translation id="7118469954320184356">Deskripsi tidak tersedia.</translation> <translation id="7139483182332611405">kata pengantar</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">simbol grafis</translation> <translation id="8583702881314752957">daftar definisi</translation> <translation id="8597182159515967513">kepala</translation> +<translation id="8603553056539299761">ke kiri dan ke kanan untuk mencari</translation> <translation id="860475260694818407">daftar isi</translation> <translation id="8613126697340063924">kontrol pemutaran jarak jauh</translation> <translation id="862370744433916922">subjudul</translation> diff --git a/chromium/content/app/strings/translations/content_strings_it.xtb b/chromium/content/app/strings/translations/content_strings_it.xtb index 10a39e36c6c..604a1117815 100644 --- a/chromium/content/app/strings/translations/content_strings_it.xtb +++ b/chromium/content/app/strings/translations/content_strings_it.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">scarica contenuti multimediali</translation> <translation id="6981594929165378967">inserimento</translation> <translation id="6989848892321993519">Prolunga questo testo a <ph name="MIN_CHARACTERS" /> o più caratteri (al momento stai utilizzando 1 carattere).</translation> +<translation id="7033340931668032222">verso l'alto e verso il basso per regolare il volume</translation> <translation id="709897737746224366">Rispetta il formato richiesto.</translation> <translation id="7118469954320184356">Descrizione non disponibile.</translation> <translation id="7139483182332611405">prefazione</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">simbolo grafico</translation> <translation id="8583702881314752957">elenco di definizioni</translation> <translation id="8597182159515967513">intestazione</translation> +<translation id="8603553056539299761">sinistra e destra per cercare</translation> <translation id="860475260694818407">sommario</translation> <translation id="8613126697340063924">gestisci riproduzione remota</translation> <translation id="862370744433916922">sottotitolo</translation> diff --git a/chromium/content/app/strings/translations/content_strings_iw.xtb b/chromium/content/app/strings/translations/content_strings_iw.xtb index f2c60942ead..7badfe1f4bb 100644 --- a/chromium/content/app/strings/translations/content_strings_iw.xtb +++ b/chromium/content/app/strings/translations/content_strings_iw.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">הורד מדיה</translation> <translation id="6981594929165378967">הוספה</translation> <translation id="6989848892321993519">עליך להאריך את הטקסט ל-<ph name="MIN_CHARACTERS" /> תווים או יותר (אתה משתמש כרגע בתו אחד).</translation> +<translation id="7033340931668032222">מעלה ומטה כדי לשנות את עוצמת הקול</translation> <translation id="709897737746224366">התאם את הפורמט המבוקש.</translation> <translation id="7118469954320184356">אין תיאור זמין.</translation> <translation id="7139483182332611405">הקדמה</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">סמל גרפי</translation> <translation id="8583702881314752957">רשימת הגדרות</translation> <translation id="8597182159515967513">כותרת</translation> +<translation id="8603553056539299761">שמאלה וימינה כדי להריץ</translation> <translation id="860475260694818407">תוכן העניינים</translation> <translation id="8613126697340063924">שליטה בהפעלה מרחוק</translation> <translation id="862370744433916922">כותרת משנה</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ja.xtb b/chromium/content/app/strings/translations/content_strings_ja.xtb index 39c8a1bd600..f846b79da14 100644 --- a/chromium/content/app/strings/translations/content_strings_ja.xtb +++ b/chromium/content/app/strings/translations/content_strings_ja.xtb @@ -88,7 +88,7 @@ <translation id="4151657705144244502">グラフィック</translation> <translation id="4193965531860883258">前書き</translation> <translation id="4201051445878709314">前の月を表示</translation> -<translation id="421884353938374759">色の選択</translation> +<translation id="421884353938374759">カラー選択ツール</translation> <translation id="4248100235867064564">メニューバー</translation> <translation id="4254339807215791271">コンテンツ情報</translation> <translation id="4360991593054037559">有効な値を入力してください。有効な値として最も近いのは <ph name="VALID_VALUE_LOW" /> と <ph name="VALID_VALUE_HIGHER" /> です。</translation> @@ -176,6 +176,7 @@ <translation id="6941933287844615239">メディアをダウンロード</translation> <translation id="6981594929165378967">挿入</translation> <translation id="6989848892321993519">このテキストは <ph name="MIN_CHARACTERS" /> 文字以上で指定してください(現在 1 文字で指定されています)。</translation> +<translation id="7033340931668032222">音量を変更するには上か下を押します</translation> <translation id="709897737746224366">指定されている形式で入力してください。</translation> <translation id="7118469954320184356">説明はありません。</translation> <translation id="7139483182332611405">序文</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">図形記号</translation> <translation id="8583702881314752957">定義リスト</translation> <translation id="8597182159515967513">見出し</translation> +<translation id="8603553056539299761">再生位置を移動するには左か右を押します</translation> <translation id="860475260694818407">目次</translation> <translation id="8613126697340063924">リモート再生をコントロール</translation> <translation id="862370744433916922">副題</translation> diff --git a/chromium/content/app/strings/translations/content_strings_kn.xtb b/chromium/content/app/strings/translations/content_strings_kn.xtb index 1fa7407bf4b..3cb3e160960 100644 --- a/chromium/content/app/strings/translations/content_strings_kn.xtb +++ b/chromium/content/app/strings/translations/content_strings_kn.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">ಮಾಧ್ಯಮ ಡೌನ್ಲೋಡ್</translation> <translation id="6981594929165378967">ಅಳವಡಿಕೆ</translation> <translation id="6989848892321993519">ಈ ಪಠ್ಯವನ್ನು <ph name="MIN_CHARACTERS" /> ಅಥವಾ ಇದಕ್ಕಿಂತಲೂ ಹೆಚ್ಚಿನ ಅಕ್ಷರಗಳಿಗೆ ಉದ್ದಗೊಳಿಸಿ (ನೀವು ಪ್ರಸ್ತುತ 1 ಅಕ್ಷರಗಳನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ).</translation> +<translation id="7033340931668032222">ವಾಲ್ಯೂಮ್ ಬದಲಾಯಿಸಲು ಮೇಲಕ್ಕೆ ಮತ್ತು ಕೆಳಕ್ಕೆ ಬಟನ್ ಒತ್ತಿರಿ</translation> <translation id="709897737746224366">ದಯವಿಟ್ಟು ವಿನಂತಿಸಿದ ಸ್ವರೂಪವನ್ನು ಹೊಂದಿಸಿ.</translation> <translation id="7118469954320184356">ಯಾವುದೇ ವಿವರಣೆ ಲಭ್ಯವಿಲ್ಲ.</translation> <translation id="7139483182332611405">ಮುನ್ನುಡಿ</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ಗ್ರಾಫಿಕ್ಸ್ ಚಿಹ್ನೆ</translation> <translation id="8583702881314752957">ವಿವರಣೆ ಪಟ್ಟಿ</translation> <translation id="8597182159515967513">ಶೀರ್ಷಿಕೆ</translation> +<translation id="8603553056539299761">ಸೀಕ್ಗಾಗಿ ಎಡ ಮತ್ತು ಬಲ ಬಟನ್ ಒತ್ತಿರಿ</translation> <translation id="860475260694818407">ಪರಿವಿಡಿ</translation> <translation id="8613126697340063924">ರಿಮೋಟ್ ಪ್ಲೇಬ್ಯಾಕ್ ನಿಯಂತ್ರಿಸಿ</translation> <translation id="862370744433916922">ಉಪಶೀರ್ಷಿಕೆ</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ko.xtb b/chromium/content/app/strings/translations/content_strings_ko.xtb index 0f5d9611b0c..6c5c16ca6e8 100644 --- a/chromium/content/app/strings/translations/content_strings_ko.xtb +++ b/chromium/content/app/strings/translations/content_strings_ko.xtb @@ -170,12 +170,13 @@ <translation id="6820355525329141109">플러그인을 로드할 수 없습니다.</translation> <translation id="6820615603175220800">참고문헌 참조</translation> <translation id="6843725295806269523">음소거</translation> -<translation id="6885760532393684712">디렉토리</translation> +<translation id="6885760532393684712">디렉터리</translation> <translation id="689129560213475294">출판사 이름</translation> <translation id="6934078000481955284">인용구</translation> <translation id="6941933287844615239">미디어 다운로드</translation> <translation id="6981594929165378967">삽입</translation> <translation id="6989848892321993519">이 텍스트를 <ph name="MIN_CHARACTERS" />자 이상으로 늘리세요(현재 1자 사용 중).</translation> +<translation id="7033340931668032222">위아래로 볼륨 조정</translation> <translation id="709897737746224366">요청한 형식과 일치시키세요.</translation> <translation id="7118469954320184356">설명이 없습니다.</translation> <translation id="7139483182332611405">머리말</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">그래픽 기호</translation> <translation id="8583702881314752957">정의 목록</translation> <translation id="8597182159515967513">항목</translation> +<translation id="8603553056539299761">좌우로 검색</translation> <translation id="860475260694818407">목차</translation> <translation id="8613126697340063924">원격 재생 제어</translation> <translation id="862370744433916922">부제</translation> diff --git a/chromium/content/app/strings/translations/content_strings_lt.xtb b/chromium/content/app/strings/translations/content_strings_lt.xtb index e5d93d752cb..6347a8a7ffd 100644 --- a/chromium/content/app/strings/translations/content_strings_lt.xtb +++ b/chromium/content/app/strings/translations/content_strings_lt.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">atsisiųsti mediją</translation> <translation id="6981594929165378967">įterpimas</translation> <translation id="6989848892321993519">Pailginkite šį tekstą iki <ph name="MIN_CHARACTERS" /> simb. ar daugiau (šiuo metu naudojate 1 simbolį).</translation> +<translation id="7033340931668032222">aukštyn ir žemyn – pakeisti garsumą</translation> <translation id="709897737746224366">Priderinkite reikalaujamą formatą.</translation> <translation id="7118469954320184356">Nepasiekiamas joks aprašas.</translation> <translation id="7139483182332611405">įvadas</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafikos simbolis</translation> <translation id="8583702881314752957">apibrėžimų sąrašas</translation> <translation id="8597182159515967513">antraštė</translation> +<translation id="8603553056539299761">kairėn ir dešinėn – ieškoti</translation> <translation id="860475260694818407">turinys</translation> <translation id="8613126697340063924">valdyti nuotolinį atkūrimą</translation> <translation id="862370744433916922">paantraštė</translation> diff --git a/chromium/content/app/strings/translations/content_strings_lv.xtb b/chromium/content/app/strings/translations/content_strings_lv.xtb index 3b48fe76940..374f99a5aaf 100644 --- a/chromium/content/app/strings/translations/content_strings_lv.xtb +++ b/chromium/content/app/strings/translations/content_strings_lv.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">lejupielādēt multivides failus</translation> <translation id="6981594929165378967">ievietošana</translation> <translation id="6989848892321993519">Lūdzu, papildiniet šo tekstu līdz vismaz <ph name="MIN_CHARACTERS" /> rakstzīmēm (pašlaik tas ietver 1 rakstzīmi).</translation> +<translation id="7033340931668032222">augšup un lejup, lai mainītu skaļumu</translation> <translation id="709897737746224366">Pieskaņojiet vērtību prasītajam formātam.</translation> <translation id="7118469954320184356">Nav apraksta.</translation> <translation id="7139483182332611405">ievadraksts</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafiskais simbols</translation> <translation id="8583702881314752957">definīciju saraksts</translation> <translation id="8597182159515967513">Virsraksts</translation> +<translation id="8603553056539299761">pa kreisi un pa labi, lai meklētu</translation> <translation id="860475260694818407">satura rādītājs</translation> <translation id="8613126697340063924">kontrolēt attālināto atskaņošanu</translation> <translation id="862370744433916922">apakšvirsraksts</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ml.xtb b/chromium/content/app/strings/translations/content_strings_ml.xtb index 875eeb43e93..7b80031f7c4 100644 --- a/chromium/content/app/strings/translations/content_strings_ml.xtb +++ b/chromium/content/app/strings/translations/content_strings_ml.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">മീഡിയ ഡൗൺലോഡ് ചെയ്യുക</translation> <translation id="6981594929165378967">ചേർക്കൽ</translation> <translation id="6989848892321993519">ഈ ടെക്സ്റ്റിന്റെ ദൈർഘ്യം <ph name="MIN_CHARACTERS" /> പ്രതീകങ്ങളോ അതിൽ കൂടുതലോ ആയി വർദ്ധിപ്പിക്കുക (നിങ്ങൾ നിലവിൽ ഒരു പ്രതീകം മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ).</translation> +<translation id="7033340931668032222">ശബ്ദം മാറ്റാൻ മുകളിലും താഴെയുമുള്ള ബട്ടണുകളിൽ അമർത്തുക</translation> <translation id="709897737746224366">അഭ്യര്ത്ഥി ച്ചഫോര്മാറ്റ് ദയവായി പൊരുത്തപ്പെടുത്തുക.</translation> <translation id="7118469954320184356">വിവരണം ലഭ്യമല്ല.</translation> <translation id="7139483182332611405">പീഠിക</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ഗ്രാഫിക്സ് ചിഹ്നം</translation> <translation id="8583702881314752957">നിർവചന ലിസ്റ്റ്</translation> <translation id="8597182159515967513">തലക്കെട്ട്</translation> +<translation id="8603553056539299761">നീക്കാൻ ഇടത്തും വലത്തുമുള്ള ബട്ടണുകളിൽ അമർത്തുക</translation> <translation id="860475260694818407">ഉള്ളടക്ക പട്ടിക</translation> <translation id="8613126697340063924">വിദൂര പ്ലേബാക്ക് നിയന്ത്രിക്കുക</translation> <translation id="862370744433916922">ഉപശീർഷകം</translation> diff --git a/chromium/content/app/strings/translations/content_strings_mr.xtb b/chromium/content/app/strings/translations/content_strings_mr.xtb index 57a63808bca..5afa1d4f006 100644 --- a/chromium/content/app/strings/translations/content_strings_mr.xtb +++ b/chromium/content/app/strings/translations/content_strings_mr.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">मीडिया डाउनलोड करा</translation> <translation id="6981594929165378967">घालणे</translation> <translation id="6989848892321993519">कृपया हा मजकूर <ph name="MIN_CHARACTERS" /> वर्ण किंवा त्यापेक्षा अधिक मोठा करा (तुम्ही सध्या 1 वर्ण वापरत आहात).</translation> +<translation id="7033340931668032222">व्हॉल्यूम बदलण्यासाठी अप आणि डाउन बटण</translation> <translation id="709897737746224366">कृपया विनंती केलेले स्वरूपन जुळवा.</translation> <translation id="7118469954320184356">कोणतेही वर्णन उपलब्ध नाही.</translation> <translation id="7139483182332611405">प्रस्तावना</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ग्राफिक्स चिन्ह</translation> <translation id="8583702881314752957">परिभाषा सूची</translation> <translation id="8597182159515967513">शीर्षलेख</translation> +<translation id="8603553056539299761">मिळवण्यासाठी डावे आणि उजवे बटण</translation> <translation id="860475260694818407">अनुक्रमणिका</translation> <translation id="8613126697340063924">दूरस्थ प्लेबॅक नियंत्रित करा</translation> <translation id="862370744433916922">उपशीर्षक</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ms.xtb b/chromium/content/app/strings/translations/content_strings_ms.xtb index eb8600bdad8..a5383d6b0d1 100644 --- a/chromium/content/app/strings/translations/content_strings_ms.xtb +++ b/chromium/content/app/strings/translations/content_strings_ms.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">muat turun media</translation> <translation id="6981594929165378967">penyisipan</translation> <translation id="6989848892321993519">Sila panjangkan teks ini kepada <ph name="MIN_CHARACTERS" /> aksara atau lebih (anda sedang menggunakan 1 aksara).</translation> +<translation id="7033340931668032222">atas dan bawah untuk mengubah kelantangan</translation> <translation id="709897737746224366">Sila padankan dengan format yang diminta.</translation> <translation id="7118469954320184356">Perihalan tidak tersedia.</translation> <translation id="7139483182332611405">kata penghantar</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">simbol grafik</translation> <translation id="8583702881314752957">senarai takrif</translation> <translation id="8597182159515967513">tajuk</translation> +<translation id="8603553056539299761">kiri dan kanan untuk mencari</translation> <translation id="860475260694818407">isi kandungan</translation> <translation id="8613126697340063924">kawal main balik jauh</translation> <translation id="862370744433916922">sari kata</translation> diff --git a/chromium/content/app/strings/translations/content_strings_nl.xtb b/chromium/content/app/strings/translations/content_strings_nl.xtb index d4ce6bd0b03..ea67aa8ba0d 100644 --- a/chromium/content/app/strings/translations/content_strings_nl.xtb +++ b/chromium/content/app/strings/translations/content_strings_nl.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">media downloaden</translation> <translation id="6981594929165378967">invoeging</translation> <translation id="6989848892321993519">Breid deze tekst uit tot <ph name="MIN_CHARACTERS" /> tekens of meer (je gebruikt momenteel één teken).</translation> +<translation id="7033340931668032222">omhoog en omlaag om het volume te wijzigen</translation> <translation id="709897737746224366">Zorg dat de indeling voldoet aan de gevraagde indeling.</translation> <translation id="7118469954320184356">Geen beschrijving beschikbaar.</translation> <translation id="7139483182332611405">voorwoord</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafisch symbool</translation> <translation id="8583702881314752957">definitielijst</translation> <translation id="8597182159515967513">kop</translation> +<translation id="8603553056539299761">naar links en rechts om te zoeken</translation> <translation id="860475260694818407">inhoudsopgave</translation> <translation id="8613126697340063924">afspelen bedienen op afstand</translation> <translation id="862370744433916922">ondertitel</translation> diff --git a/chromium/content/app/strings/translations/content_strings_no.xtb b/chromium/content/app/strings/translations/content_strings_no.xtb index dd7f1fda81b..c88080407a0 100644 --- a/chromium/content/app/strings/translations/content_strings_no.xtb +++ b/chromium/content/app/strings/translations/content_strings_no.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">last ned medier</translation> <translation id="6981594929165378967">innsetting</translation> <translation id="6989848892321993519">Øk lengden på denne teksten med minst <ph name="MIN_CHARACTERS" /> tegn (du bruker for øyeblikket 1 tegn).</translation> +<translation id="7033340931668032222">opp og ned for å endre volum</translation> <translation id="709897737746224366">Sørg for samsvar med det forespurte formatet.</translation> <translation id="7118469954320184356">Ingen beskrivelse er tilgjengelig.</translation> <translation id="7139483182332611405">forord</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafikksymbol</translation> <translation id="8583702881314752957">definisjonsliste</translation> <translation id="8597182159515967513">overskrift</translation> +<translation id="8603553056539299761">venstre og høyre for å hoppe</translation> <translation id="860475260694818407">innholdsfortegnelse</translation> <translation id="8613126697340063924">kontrollér ekstern avspilling</translation> <translation id="862370744433916922">undertittel</translation> diff --git a/chromium/content/app/strings/translations/content_strings_pl.xtb b/chromium/content/app/strings/translations/content_strings_pl.xtb index 2470f8d3486..5aa0f5ca0aa 100644 --- a/chromium/content/app/strings/translations/content_strings_pl.xtb +++ b/chromium/content/app/strings/translations/content_strings_pl.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">pobierz multimedia</translation> <translation id="6981594929165378967">wstawienie</translation> <translation id="6989848892321993519">Wydłuż ten tekst co najmniej do <ph name="MIN_CHARACTERS" /> znaków (teraz używasz jednego znaku).</translation> +<translation id="7033340931668032222">klawisze w górę i w dół – zmiana głośności</translation> <translation id="709897737746224366">Podaj wartość w wymaganym formacie.</translation> <translation id="7118469954320184356">Brak opisu.</translation> <translation id="7139483182332611405">wstęp</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">symbol graficzny</translation> <translation id="8583702881314752957">lista definicji</translation> <translation id="8597182159515967513">nagłówek</translation> +<translation id="8603553056539299761">klawisze w lewo i w prawo – przewijanie</translation> <translation id="860475260694818407">spis treści</translation> <translation id="8613126697340063924">sterowanie zdalnym odtwarzaniem</translation> <translation id="862370744433916922">podtytuł</translation> diff --git a/chromium/content/app/strings/translations/content_strings_pt-BR.xtb b/chromium/content/app/strings/translations/content_strings_pt-BR.xtb index 6f77b8c36c3..243e041c8ee 100644 --- a/chromium/content/app/strings/translations/content_strings_pt-BR.xtb +++ b/chromium/content/app/strings/translations/content_strings_pt-BR.xtb @@ -67,7 +67,7 @@ <translation id="3078740164268491126">tabela</translation> <translation id="3086746722712840547">note</translation> <translation id="310520048233152454">Insira um URL.</translation> -<translation id="3175736971608411871">temporizador</translation> +<translation id="3175736971608411871">timer</translation> <translation id="3199563858620722075">caixa de combinação</translation> <translation id="3450233048674729344">O valor deve ser menor ou igual a <ph name="MAXIMUM" />.</translation> <translation id="3486220673238053218">definição</translation> @@ -176,6 +176,7 @@ <translation id="6941933287844615239">fazer o download da mídia</translation> <translation id="6981594929165378967">inserção</translation> <translation id="6989848892321993519">Aumente esse texto para <ph name="MIN_CHARACTERS" /> caracteres ou mais. No momento, você está usando 1 caractere.</translation> +<translation id="7033340931668032222">para cima e para baixo para controlar o volume</translation> <translation id="709897737746224366">É preciso que o formato corresponda ao exigido.</translation> <translation id="7118469954320184356">Nenhuma descrição disponível.</translation> <translation id="7139483182332611405">prefácio</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">símbolo gráfico</translation> <translation id="8583702881314752957">lista de definições</translation> <translation id="8597182159515967513">cabeçalho</translation> +<translation id="8603553056539299761">direita e esquerda para procurar</translation> <translation id="860475260694818407">sumário</translation> <translation id="8613126697340063924">controlar reprodução remota</translation> <translation id="862370744433916922">subtítulo</translation> diff --git a/chromium/content/app/strings/translations/content_strings_pt-PT.xtb b/chromium/content/app/strings/translations/content_strings_pt-PT.xtb index aef47eda7f7..51e7d9db844 100644 --- a/chromium/content/app/strings/translations/content_strings_pt-PT.xtb +++ b/chromium/content/app/strings/translations/content_strings_pt-PT.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">transferir multimédia</translation> <translation id="6981594929165378967">inserção</translation> <translation id="6989848892321993519">Aumente este texto para <ph name="MIN_CHARACTERS" /> ou mais carateres (atualmente, está a utilizar 1 caráter).</translation> +<translation id="7033340931668032222">para cima e para baixo para alterar o volume</translation> <translation id="709897737746224366">Faça corresponder o formato pedido.</translation> <translation id="7118469954320184356">Nenhuma descrição disponível.</translation> <translation id="7139483182332611405">prefácio</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">símbolo de gráficos</translation> <translation id="8583702881314752957">lista de definições</translation> <translation id="8597182159515967513">cabeçalho</translation> +<translation id="8603553056539299761">para a esquerda e para a direita para procurar</translation> <translation id="860475260694818407">índice</translation> <translation id="8613126697340063924">controlar a reprodução remota</translation> <translation id="862370744433916922">legenda</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ro.xtb b/chromium/content/app/strings/translations/content_strings_ro.xtb index 7eb038249f7..27ee4ee1802 100644 --- a/chromium/content/app/strings/translations/content_strings_ro.xtb +++ b/chromium/content/app/strings/translations/content_strings_ro.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">descarcă conținut media</translation> <translation id="6981594929165378967">inserare</translation> <translation id="6989848892321993519">Mărește acest text la cel puțin <ph name="MIN_CHARACTERS" /> caractere (în prezent folosești 1 caracter).</translation> +<translation id="7033340931668032222">în sus și în jos pentru a modifica volumul</translation> <translation id="709897737746224366">Respectă formatul solicitat.</translation> <translation id="7118469954320184356">Nu există nicio descriere disponibilă.</translation> <translation id="7139483182332611405">prefață</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">simbol grafic</translation> <translation id="8583702881314752957">listă de definiții</translation> <translation id="8597182159515967513">antet</translation> +<translation id="8603553056539299761">în stânga și în dreapta pentru a derula</translation> <translation id="860475260694818407">cuprins</translation> <translation id="8613126697340063924">controlează redarea la distanță</translation> <translation id="862370744433916922">subtitlu</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ru.xtb b/chromium/content/app/strings/translations/content_strings_ru.xtb index 492881d7235..bed31bb2089 100644 --- a/chromium/content/app/strings/translations/content_strings_ru.xtb +++ b/chromium/content/app/strings/translations/content_strings_ru.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">скачать файл</translation> <translation id="6981594929165378967">вставка</translation> <translation id="6989848892321993519">Текст должен быть не короче <ph name="MIN_CHARACTERS" /> симв. Длина текста сейчас: 1 символ.</translation> +<translation id="7033340931668032222">вверх и вниз для регулировки громкости</translation> <translation id="709897737746224366">Введите данные в указанном формате.</translation> <translation id="7118469954320184356">Нет описания.</translation> <translation id="7139483182332611405">вступление</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">графический символ</translation> <translation id="8583702881314752957">список описаний</translation> <translation id="8597182159515967513">заголовок</translation> +<translation id="8603553056539299761">вправо и влево для поиска</translation> <translation id="860475260694818407">оглавление</translation> <translation id="8613126697340063924">управлять воспроизведением на удаленных устройствах</translation> <translation id="862370744433916922">подзаголовок</translation> diff --git a/chromium/content/app/strings/translations/content_strings_sk.xtb b/chromium/content/app/strings/translations/content_strings_sk.xtb index f607fc9bc0f..8a3993f4e0a 100644 --- a/chromium/content/app/strings/translations/content_strings_sk.xtb +++ b/chromium/content/app/strings/translations/content_strings_sk.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">stiahnuť médiá</translation> <translation id="6981594929165378967">vloženie</translation> <translation id="6989848892321993519">Predĺžte tento text aspoň na <ph name="MIN_CHARACTERS" /> alebo viac znakov (momentálne používate jeden znak).</translation> +<translation id="7033340931668032222">smery nahor a nadol slúžia na zmenu hlasitosti</translation> <translation id="709897737746224366">Zadajte hodnotu zodpovedajúcu požadovanému formátu.</translation> <translation id="7118469954320184356">Nie je k dispozícii žiadny popis.</translation> <translation id="7139483182332611405">predslov</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafický symbol</translation> <translation id="8583702881314752957">zoznam definícií</translation> <translation id="8597182159515967513">nadpis</translation> +<translation id="8603553056539299761">smery vľavo a vpravo slúžia na hľadanie</translation> <translation id="860475260694818407">obsah</translation> <translation id="8613126697340063924">ovládať vzdialené prehrávanie</translation> <translation id="862370744433916922">podnadpis</translation> diff --git a/chromium/content/app/strings/translations/content_strings_sl.xtb b/chromium/content/app/strings/translations/content_strings_sl.xtb index 17a318c1bd7..e3cb0b8f192 100644 --- a/chromium/content/app/strings/translations/content_strings_sl.xtb +++ b/chromium/content/app/strings/translations/content_strings_sl.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">prenos predstavnosti</translation> <translation id="6981594929165378967">vstavljanje</translation> <translation id="6989848892321993519">Podaljšajte to besedilo na toliko znakov ali več: <ph name="MIN_CHARACTERS" /> (trenutno uporabljate en znak).</translation> +<translation id="7033340931668032222">navzgor in navzdol za spreminjanje glasnosti</translation> <translation id="709897737746224366">Poskrbite za ujemanje z zahtevano obliko.</translation> <translation id="7118469954320184356">Ni opisa.</translation> <translation id="7139483182332611405">predgovor</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafični simbol</translation> <translation id="8583702881314752957">seznam opredelitev</translation> <translation id="8597182159515967513">naslov</translation> +<translation id="8603553056539299761">levo in desno za iskanje</translation> <translation id="860475260694818407">kazalo</translation> <translation id="8613126697340063924">upravljanje oddaljenega predvajanja</translation> <translation id="862370744433916922">podnaslov</translation> diff --git a/chromium/content/app/strings/translations/content_strings_sr.xtb b/chromium/content/app/strings/translations/content_strings_sr.xtb index 25dc6841005..373eb0a128a 100644 --- a/chromium/content/app/strings/translations/content_strings_sr.xtb +++ b/chromium/content/app/strings/translations/content_strings_sr.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">преузми медије</translation> <translation id="6981594929165378967">уметање</translation> <translation id="6989848892321993519">Продужите овај текст на бар <ph name="MIN_CHARACTERS" /> знак(ов)а (тренутно користите 1 знак).</translation> +<translation id="7033340931668032222">горе и доле да бисте променили јачину звука</translation> <translation id="709897737746224366">Изаберите захтевани формат.</translation> <translation id="7118469954320184356">Опис није доступан.</translation> <translation id="7139483182332611405">предговор</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">графички симбол</translation> <translation id="8583702881314752957">листа дефиниција</translation> <translation id="8597182159515967513">наслов</translation> +<translation id="8603553056539299761">улево и удесно да бисте премотали</translation> <translation id="860475260694818407">садржај</translation> <translation id="8613126697340063924">контролишите репродукцију на удаљеном уређају</translation> <translation id="862370744433916922">титл</translation> diff --git a/chromium/content/app/strings/translations/content_strings_sv.xtb b/chromium/content/app/strings/translations/content_strings_sv.xtb index 70984bce970..c9130d10896 100644 --- a/chromium/content/app/strings/translations/content_strings_sv.xtb +++ b/chromium/content/app/strings/translations/content_strings_sv.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">ladda ned media</translation> <translation id="6981594929165378967">infogning</translation> <translation id="6989848892321993519">Lägg till minst <ph name="MIN_CHARACTERS" /> tecken (för närvarande har du angett 1 tecken).</translation> +<translation id="7033340931668032222">ändra volym med uppåt och nedåt</translation> <translation id="709897737746224366">Matcha det format som anges.</translation> <translation id="7118469954320184356">Det finns ingen tillgänglig beskrivning.</translation> <translation id="7139483182332611405">företal</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafisk symbol</translation> <translation id="8583702881314752957">definitionslista</translation> <translation id="8597182159515967513">rubrik</translation> +<translation id="8603553056539299761">sök med vänster och höger</translation> <translation id="860475260694818407">innehållsförteckning</translation> <translation id="8613126697340063924">styra fjärruppspelning</translation> <translation id="862370744433916922">undertext</translation> diff --git a/chromium/content/app/strings/translations/content_strings_sw.xtb b/chromium/content/app/strings/translations/content_strings_sw.xtb index 543769600d6..1ec88570f4c 100644 --- a/chromium/content/app/strings/translations/content_strings_sw.xtb +++ b/chromium/content/app/strings/translations/content_strings_sw.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">pakua maudhui</translation> <translation id="6981594929165378967">uwekaji</translation> <translation id="6989848892321993519">Tafadhali refusha maandishi haya hadi herufi <ph name="MIN_CHARACTERS" /> au zaidi (kwa sasa unatumia herufi 1).</translation> +<translation id="7033340931668032222">juu na chini ili kubadilisha sauti</translation> <translation id="709897737746224366">Tafadhali linganisha umbizo lililoombwa.</translation> <translation id="7118469954320184356">Hakuna maelezo yanayopatikana.</translation> <translation id="7139483182332611405">dibaji</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">ishara ya picha</translation> <translation id="8583702881314752957">orodha ya ufafanuzi</translation> <translation id="8597182159515967513">kichwa</translation> +<translation id="8603553056539299761">kushoto na kulia ili kusogeza</translation> <translation id="860475260694818407">jedwali la yaliyomo</translation> <translation id="8613126697340063924">dhibiti kucheza kwa mbali</translation> <translation id="862370744433916922">kichwa kidogo</translation> diff --git a/chromium/content/app/strings/translations/content_strings_ta.xtb b/chromium/content/app/strings/translations/content_strings_ta.xtb index 27d846fecb6..014379f437d 100644 --- a/chromium/content/app/strings/translations/content_strings_ta.xtb +++ b/chromium/content/app/strings/translations/content_strings_ta.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">மீடியாவைப் பதிவிறக்கு</translation> <translation id="6981594929165378967">செருகும்</translation> <translation id="6989848892321993519">இந்த உரையில் <ph name="MIN_CHARACTERS" /> அல்லது அதற்கு மேற்பட்ட எழுத்துக்குறிகளைப் பயன்படுத்தவும் (தற்போது 1 எழுத்துக்குறியைப் பயன்படுத்துகிறீர்கள்).</translation> +<translation id="7033340931668032222">ஒலியளவை மாற்ற மேலும் கீழும் அசைக்கவும்</translation> <translation id="709897737746224366">கோரிய வடிவமைப்பில் தருக.</translation> <translation id="7118469954320184356">விவரம் எதுவுமில்லை.</translation> <translation id="7139483182332611405">முன்னுரை</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">கிராஃபிக்ஸ் சின்னம்</translation> <translation id="8583702881314752957">விளக்கப் பட்டியல்</translation> <translation id="8597182159515967513">தலைப்பு</translation> +<translation id="8603553056539299761">நகர்த்த இடது புறமும் வலது புறமும் அசைக்கவும்</translation> <translation id="860475260694818407">உள்ளடக்க அட்டவணை</translation> <translation id="8613126697340063924">தொலைநிலை இயக்கத்தைக் கட்டுப்படுத்தவும்</translation> <translation id="862370744433916922">துணை தலைப்பு</translation> diff --git a/chromium/content/app/strings/translations/content_strings_te.xtb b/chromium/content/app/strings/translations/content_strings_te.xtb index cbbb3642c59..18201342a1b 100644 --- a/chromium/content/app/strings/translations/content_strings_te.xtb +++ b/chromium/content/app/strings/translations/content_strings_te.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">మీడియా అంశం డౌన్లోడ్ చేయి</translation> <translation id="6981594929165378967">చొప్పించడం</translation> <translation id="6989848892321993519">దయచేసి ఈ వచనాన్ని <ph name="MIN_CHARACTERS" /> లేదా అంతకంటే ఎక్కువ అక్షరాలకు పొడిగించండి (ప్రస్తుతం మీరు 1 అక్షరాన్ని ఉపయోగిస్తున్నారు).</translation> +<translation id="7033340931668032222">వాల్యూమ్ మార్చడానికి కిందకు లేదా పైకి బటన్ను ఉపయోగించండి</translation> <translation id="709897737746224366">దయచేసి అభ్యర్థించిన ఆకృతీకరణను సరిపోల్చండి.</translation> <translation id="7118469954320184356">వివరణ అందుబాటులో లేదు.</translation> <translation id="7139483182332611405">ముందుమాట</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">గ్రాఫిక్స్ చిహ్నం</translation> <translation id="8583702881314752957">నిర్వచన జాబితా</translation> <translation id="8597182159515967513">శీర్షిక</translation> +<translation id="8603553056539299761">దాటవేయడానికి ఎడమ లేదా కుడి బటన్ను ఉపయోగించండి</translation> <translation id="860475260694818407">కంటెంట్ల పట్టిక</translation> <translation id="8613126697340063924">రిమోట్ ప్లేబ్యాక్ను నియంత్రిస్తుంది</translation> <translation id="862370744433916922">ఉపశీర్షిక</translation> diff --git a/chromium/content/app/strings/translations/content_strings_th.xtb b/chromium/content/app/strings/translations/content_strings_th.xtb index 23a9c518204..e4c09f42ca1 100644 --- a/chromium/content/app/strings/translations/content_strings_th.xtb +++ b/chromium/content/app/strings/translations/content_strings_th.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">ดาวน์โหลดสื่อ</translation> <translation id="6981594929165378967">การแทรก</translation> <translation id="6989848892321993519">โปรดกรอกข้อความนี้ให้มีอักขระอย่างน้อย <ph name="MIN_CHARACTERS" /> ตัว (ตอนนี้คุณมี 1 ตัว)</translation> +<translation id="7033340931668032222">ขึ้นและลงเพื่อเปลี่ยนระดับเสียง</translation> <translation id="709897737746224366">โปรดจับคู่รูปแบบที่ร้องขอ</translation> <translation id="7118469954320184356">ไม่มีคำอธิบาย</translation> <translation id="7139483182332611405">ส่วนนำ</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">สัญลักษณ์กราฟิก</translation> <translation id="8583702881314752957">รายการคำจำกัดความ</translation> <translation id="8597182159515967513">ส่วนหัว</translation> +<translation id="8603553056539299761">ซ้ายและขวาเพื่อกรอ</translation> <translation id="860475260694818407">สารบัญ</translation> <translation id="8613126697340063924">ควบคุมการเล่นระยะไกล</translation> <translation id="862370744433916922">คำบรรยาย</translation> diff --git a/chromium/content/app/strings/translations/content_strings_tr.xtb b/chromium/content/app/strings/translations/content_strings_tr.xtb index d965bc1f19e..7e8e4b9ef5d 100644 --- a/chromium/content/app/strings/translations/content_strings_tr.xtb +++ b/chromium/content/app/strings/translations/content_strings_tr.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">medyayı indir</translation> <translation id="6981594929165378967">ekleme</translation> <translation id="6989848892321993519">Lütfen bu metni <ph name="MIN_CHARACTERS" /> karakter veya daha fazla olacak şekilde uzatın (şu anda 1 karakter kullanıyorsunuz).</translation> +<translation id="7033340931668032222">sesi değiştirmek için yukarı ve aşağı</translation> <translation id="709897737746224366">Lütfen istenen biçimi eşleştirin.</translation> <translation id="7118469954320184356">Açıklama yok.</translation> <translation id="7139483182332611405">önsöz</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">grafik sembolü</translation> <translation id="8583702881314752957">tanım listesi</translation> <translation id="8597182159515967513">başlık</translation> +<translation id="8603553056539299761">belirli bir yere gitmek için sol ve sağ</translation> <translation id="860475260694818407">içindekiler</translation> <translation id="8613126697340063924">uzaktan oynatmayı kontrol et</translation> <translation id="862370744433916922">alt başlık</translation> diff --git a/chromium/content/app/strings/translations/content_strings_uk.xtb b/chromium/content/app/strings/translations/content_strings_uk.xtb index 54d3f71e7f3..29d136d694e 100644 --- a/chromium/content/app/strings/translations/content_strings_uk.xtb +++ b/chromium/content/app/strings/translations/content_strings_uk.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">завантажити медіафайл</translation> <translation id="6981594929165378967">вставлення</translation> <translation id="6989848892321993519">У тексті має бути не менше стількох символів: <ph name="MIN_CHARACTERS" />. Наразі ви ввели 1 символ.</translation> +<translation id="7033340931668032222">угору та вниз, щоб змінити гучність</translation> <translation id="709897737746224366">Виберіть потрібний формат.</translation> <translation id="7118469954320184356">Немає опису.</translation> <translation id="7139483182332611405">передмова</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">графічний символ</translation> <translation id="8583702881314752957">список визначень</translation> <translation id="8597182159515967513">заголовок</translation> +<translation id="8603553056539299761">уліво та вправо, щоб шукати</translation> <translation id="860475260694818407">зміст</translation> <translation id="8613126697340063924">керувати віддаленим відтворенням</translation> <translation id="862370744433916922">підзаголовок</translation> diff --git a/chromium/content/app/strings/translations/content_strings_vi.xtb b/chromium/content/app/strings/translations/content_strings_vi.xtb index 3e89109d1fa..a95f7500286 100644 --- a/chromium/content/app/strings/translations/content_strings_vi.xtb +++ b/chromium/content/app/strings/translations/content_strings_vi.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">tải xuống phương tiện</translation> <translation id="6981594929165378967">chèn</translation> <translation id="6989848892321993519">Vui lòng kéo dài văn bản này thành <ph name="MIN_CHARACTERS" /> ký tự trở lên (bạn hiện đang sử dụng 1 ký tự).</translation> +<translation id="7033340931668032222">lên và xuống để thay đổi âm lượng</translation> <translation id="709897737746224366">Vui lòng khớp với định dạng được yêu cầu.</translation> <translation id="7118469954320184356">Không có nội dung mô tả.</translation> <translation id="7139483182332611405">lời nói đầu</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">biểu tượng đồ họa</translation> <translation id="8583702881314752957">danh sách định nghĩa</translation> <translation id="8597182159515967513">đầu đề</translation> +<translation id="8603553056539299761">trái và phải để tìm kiếm</translation> <translation id="860475260694818407">mục lục</translation> <translation id="8613126697340063924">điều khiển phát lại từ xa</translation> <translation id="862370744433916922">phụ đề</translation> diff --git a/chromium/content/app/strings/translations/content_strings_zh-CN.xtb b/chromium/content/app/strings/translations/content_strings_zh-CN.xtb index 0460dc9eef2..61f983db18c 100644 --- a/chromium/content/app/strings/translations/content_strings_zh-CN.xtb +++ b/chromium/content/app/strings/translations/content_strings_zh-CN.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">下载媒体</translation> <translation id="6981594929165378967">插入</translation> <translation id="6989848892321993519">请将该内容增加到 <ph name="MIN_CHARACTERS" /> 个或更多字符(目前您使用了 1 个字符)。</translation> +<translation id="7033340931668032222">上下键用于更改音量</translation> <translation id="709897737746224366">请与所请求的格式保持一致。</translation> <translation id="7118469954320184356">尚无说明。</translation> <translation id="7139483182332611405">序言</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">图形符号</translation> <translation id="8583702881314752957">定义列表</translation> <translation id="8597182159515967513">标题</translation> +<translation id="8603553056539299761">左右键用于快进/快退</translation> <translation id="860475260694818407">目录</translation> <translation id="8613126697340063924">控制远程播放</translation> <translation id="862370744433916922">副标题</translation> diff --git a/chromium/content/app/strings/translations/content_strings_zh-TW.xtb b/chromium/content/app/strings/translations/content_strings_zh-TW.xtb index bbd73f82bd3..c67b2e8af19 100644 --- a/chromium/content/app/strings/translations/content_strings_zh-TW.xtb +++ b/chromium/content/app/strings/translations/content_strings_zh-TW.xtb @@ -176,6 +176,7 @@ <translation id="6941933287844615239">下載媒體</translation> <translation id="6981594929165378967">插入</translation> <translation id="6989848892321993519">請將這段文字加長到 <ph name="MIN_CHARACTERS" /> 個字元以上 (目前已有 1 個字元)。</translation> +<translation id="7033340931668032222">上下鍵可調整音量</translation> <translation id="709897737746224366">請符合要求的格式。</translation> <translation id="7118469954320184356">目前沒有說明。</translation> <translation id="7139483182332611405">前言</translation> @@ -227,6 +228,7 @@ <translation id="8550857728288566671">圖形符號</translation> <translation id="8583702881314752957">定義清單</translation> <translation id="8597182159515967513">標題</translation> +<translation id="8603553056539299761">左右鍵可調整播放進度</translation> <translation id="860475260694818407">目錄</translation> <translation id="8613126697340063924">控制遠端播放</translation> <translation id="862370744433916922">副標題</translation> diff --git a/chromium/content/browser/BUILD.gn b/chromium/content/browser/BUILD.gn index 38b6a3185b1..78e8ed893a2 100644 --- a/chromium/content/browser/BUILD.gn +++ b/chromium/content/browser/BUILD.gn @@ -59,6 +59,7 @@ jumbo_source_set("browser") { "//components/network_session_configurator/browser", "//components/offline_pages/buildflags", "//components/offline_pages/core/request_header", + "//components/os_crypt", "//components/rappor", "//components/services/filesystem:lib", "//components/services/leveldb:lib", diff --git a/chromium/content/browser/DEPS b/chromium/content/browser/DEPS index 0bc0b902738..edc485a8651 100644 --- a/chromium/content/browser/DEPS +++ b/chromium/content/browser/DEPS @@ -28,6 +28,7 @@ include_rules = [ "+components/variations/net/variations_http_headers.h", "+components/viz", "+components/cbor", + "+components/os_crypt/os_crypt_switches.h", "+content/public/app", "+content/public/browser", diff --git a/chromium/content/browser/appcache/appcache_browsertest.cc b/chromium/content/browser/appcache/appcache_browsertest.cc index 4a369037f37..b98ee28e771 100644 --- a/chromium/content/browser/appcache/appcache_browsertest.cc +++ b/chromium/content/browser/appcache/appcache_browsertest.cc @@ -4,10 +4,19 @@ #include <stdint.h> #include "base/bind.h" +#include "base/run_loop.h" +#include "base/strings/strcat.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/bind_test_util.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" #include "content/browser/appcache/appcache_subresource_url_factory.h" +#include "content/public/browser/navigation_entry.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/ssl_status.h" +#include "content/public/browser/storage_partition.h" +#include "content/public/browser/web_contents.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/content_browser_test.h" #include "content/public/test/content_browser_test_utils.h" @@ -19,6 +28,8 @@ #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" #include "services/network/public/cpp/features.h" +#include "services/network/public/mojom/network_context.mojom.h" + namespace content { // This class currently enables the network service feature, which allows us to @@ -105,4 +116,71 @@ IN_PROC_BROWSER_TEST_F(AppCacheNetworkServiceBrowserTest, } #endif +// Regression test for crbug.com/968179. +IN_PROC_BROWSER_TEST_F(AppCacheNetworkServiceBrowserTest, + CacheableResourcesReuse) { + net::EmbeddedTestServer embedded_test_server; + + std::string manifest_nonce = "# Version 1"; + int resource_request_count = 0; + embedded_test_server.RegisterRequestHandler(base::BindLambdaForTesting( + [&](const net::test_server::HttpRequest& request) + -> std::unique_ptr<net::test_server::HttpResponse> { + if (request.GetURL().path() != "/appcache/cache_reuse.manifest") { + ++resource_request_count; + return nullptr; + } + + // Return a dynamically generated manifest, to trigger AppCache updates. + auto http_response = + std::make_unique<net::test_server::BasicHttpResponse>(); + http_response->set_content_type("text/cache-manifest"); + http_response->set_content(base::StrCat({ + "CACHE MANIFEST\n", + manifest_nonce, + "\n/appcache/cache_reuse.html\n", + })); + return http_response; + })); + + embedded_test_server.SetSSLConfig(net::EmbeddedTestServer::CERT_OK, + net::SSLServerConfig()); + embedded_test_server.ServeFilesFromSourceDirectory(GetTestDataFilePath()); + ASSERT_TRUE(embedded_test_server.Start()); + + GURL main_url = embedded_test_server.GetURL("/appcache/cache_reuse.html"); + + // First navigation populates AppCache. + { + EXPECT_TRUE(NavigateToURL(shell(), main_url)); + base::string16 expected_title = base::ASCIIToUTF16("AppCache primed"); + TitleWatcher title_watcher(shell()->web_contents(), expected_title); + EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); + } + + // Flush the HTTP cache so cache_reuse.html won't be served from there. + base::RunLoop run_loop; + content::StoragePartition* storage_partition = shell() + ->web_contents() + ->GetMainFrame() + ->GetProcess() + ->GetStoragePartition(); + storage_partition->GetNetworkContext()->ClearHttpCache( + base::Time(), base::Time::Max(), nullptr, run_loop.QuitClosure()); + run_loop.Run(); + + // Second navigation triggers an AppCache update. + resource_request_count = 0; + manifest_nonce = "# Version 2"; + { + EXPECT_TRUE(NavigateToURL(shell(), main_url)); + base::string16 expected_title = base::ASCIIToUTF16("AppCache updated"); + TitleWatcher title_watcher(shell()->web_contents(), expected_title); + EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); + } + + // The AppCache update should only reload the manifest. + EXPECT_EQ(0, resource_request_count); +} + } // namespace content diff --git a/chromium/content/browser/appcache/appcache_update_job.cc b/chromium/content/browser/appcache/appcache_update_job.cc index afeb14b9751..229b2affbae 100644 --- a/chromium/content/browser/appcache/appcache_update_job.cc +++ b/chromium/content/browser/appcache/appcache_update_job.cc @@ -70,10 +70,72 @@ bool IsEvictableError(AppCacheUpdateJob::ResultType result, } bool CanUseExistingResource(const net::HttpResponseInfo* http_info) { + if (!http_info->headers) + return false; + + base::Time request_time = http_info->request_time; + base::Time response_time = http_info->response_time; + + // The logic below works around the following confluence of problems. + // + // 1) If a cached response contains a Last-Modified header, + // AppCacheUpdateJob::URLFetcher::AddConditionalHeaders() adds an + // If-Modified-Since header, so the server may return an HTTP 304 Not Modified + // response. AppCacheUpdateJob::HandleUrlFetchCompleted() reuses the existing + // cache entry when a 304 is received, even though the HTTP specification + // mandates updating the cached headers with the headers in the 304 response. + // + // This deviation from the HTTP specification is Web-observable when AppCache + // resources are served with Last-Modified and Cache-Control: max-age headers. + // Specifically, if a server returns a 304 with a Cache-Control: max-age + // header, the response stored in AppCache should be updated to reflect the + // new cache expiration time. Instead, Chrome ignores all the headers in the + // 304 response, so the Cache-Control: max-age directive is discarded. + // + // In other words, once a cached resource's lifetime expires, 304 responses + // won't refresh its lifetime. Chrome gets stuck in a cycle where it sends + // If-Modified-Since requests, the server responds with 304, and the response + // headers are discarded. + // + // 2) The implementation of + // AppCacheUpdateJob::UpdateURLLoaderRequest::OnReceiveResponse() introduced + // in https://crrev.com/c/599359 did not populate |request_time| and + // |response_time|. When the Network Service was enabled, caches got populated + // with the default value of base::Time, which is the Windows epoch. So, + // cached entries with max-age values below ~40 years will require + // re-validation. https://crrev.com/c/1636266 fixed the cache population bug, + // but did not address the incorrect times that have already been written to + // users' disks. + // + // The 1st problem, on its own, hasn't had a large impact. This is likely + // because we have been advising sites to set max-age=31536000 (~1 year) for + // immutable resources, and most AppCache caches have been getting evicted + // before the entries' max-age expired. However, the 2nd problem caused us to + // create a large number of expired cache entries, and the unnecessary + // If-Modified-Since requests are causing noticeable levels of traffic. + // + // The logic below is a workaround while a longer-term fix gets developed and + // deployed. We'll consider all cache entries with invalid times to have been + // created on Tue, Jan 29 2019. This is the day when M72 was released to + // Chrome's Stable channel, and was chosen because M72 had the first large + // Network Service deployment. + static constexpr base::Time::Exploded kInvalidTimePlaceholderExploded = { + 2019, 1, 2, 29, 0, 0, 0, 0}; + constexpr base::Time default_initialized_time; + if (request_time == default_initialized_time) { + bool conversion_succeeded = base::Time::FromUTCExploded( + kInvalidTimePlaceholderExploded, &request_time); + DCHECK(conversion_succeeded); + } + if (response_time == default_initialized_time) { + bool conversion_succeeded = base::Time::FromUTCExploded( + kInvalidTimePlaceholderExploded, &response_time); + DCHECK(conversion_succeeded); + } + // Check HTTP caching semantics based on max-age and expiration headers. - if (!http_info->headers || http_info->headers->RequiresValidation( - http_info->request_time, - http_info->response_time, base::Time::Now())) { + if (http_info->headers->RequiresValidation(request_time, response_time, + base::Time::Now())) { return false; } diff --git a/chromium/content/browser/appcache/appcache_update_url_loader_request.cc b/chromium/content/browser/appcache/appcache_update_url_loader_request.cc index dd51fd382ee..eebe377910b 100644 --- a/chromium/content/browser/appcache/appcache_update_url_loader_request.cc +++ b/chromium/content/browser/appcache/appcache_update_url_loader_request.cc @@ -137,7 +137,7 @@ void AppCacheUpdateJob::UpdateURLLoaderRequest::OnReceiveResponse( // Populate other fields in the HttpResponseInfo class. It would be good to // have a helper function which populates the HttpResponseInfo structure from // the ResourceResponseHead structure. - http_response_info_.reset(new net::HttpResponseInfo()); + http_response_info_ = std::make_unique<net::HttpResponseInfo>(); if (response_head.ssl_info.has_value()) http_response_info_->ssl_info = *response_head.ssl_info; http_response_info_->headers = response_head.headers; @@ -148,6 +148,8 @@ void AppCacheUpdateJob::UpdateURLLoaderRequest::OnReceiveResponse( response_head.alpn_negotiated_protocol; http_response_info_->connection_info = response_head.connection_info; http_response_info_->remote_endpoint = response_head.remote_endpoint; + http_response_info_->request_time = response_head.request_time; + http_response_info_->response_time = response_head.response_time; fetcher_->OnResponseStarted(net::OK); } diff --git a/chromium/content/browser/browser_main_runner_impl.cc b/chromium/content/browser/browser_main_runner_impl.cc index 28e6d582c17..11845c22119 100644 --- a/chromium/content/browser/browser_main_runner_impl.cc +++ b/chromium/content/browser/browser_main_runner_impl.cc @@ -181,7 +181,8 @@ void BrowserMainRunnerImpl::Shutdown() { main_loop_->PreShutdown(); // Finalize the startup tracing session if it is still active. - TracingControllerImpl::GetInstance()->FinalizeStartupTracingIfNeeded(); + if (TracingControllerImpl::GetInstance()) + TracingControllerImpl::GetInstance()->FinalizeStartupTracingIfNeeded(); { // The trace event has to stay between profiler creation and destruction. diff --git a/chromium/content/browser/devtools/devtools_session_encoding.cc b/chromium/content/browser/devtools/devtools_session_encoding.cc index c15d06271cc..e80f003e251 100644 --- a/chromium/content/browser/devtools/devtools_session_encoding.cc +++ b/chromium/content/browser/devtools/devtools_session_encoding.cc @@ -37,9 +37,7 @@ class ContentShellPlatform : public Platform { }; } // namespace bool EnableInternalDevToolsBinaryProtocol() { - static bool disabled = base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kDisableInternalDevToolsBinaryProtocol); - return !disabled; + return false; } // TODO(johannes): Push error handling to client code after devtools_session.cc diff --git a/chromium/content/browser/frame_host/frame_tree_node.cc b/chromium/content/browser/frame_host/frame_tree_node.cc index f0a1ad891d3..fff13c33952 100644 --- a/chromium/content/browser/frame_host/frame_tree_node.cc +++ b/chromium/content/browser/frame_host/frame_tree_node.cc @@ -164,17 +164,42 @@ FrameTreeNode::~FrameTreeNode() { g_frame_tree_node_id_map.Get().erase(frame_tree_node_id_); + bool did_stop_loading = false; + if (navigation_request_) { + navigation_request_.reset(); // PlzNavigate: if a frame with a pending navigation is detached, make sure // the WebContents (and its observers) update their loading state. - navigation_request_.reset(); - DidStopLoading(); + did_stop_loading = true; } - // ~SiteProcessCountTracker DCHECKs in some tests if CleanUpNavigation is not - // called last. Ideally this would be closer to (possible before) the - // ResetLoadingState() call above. - render_manager_.CleanUpNavigation(); + // ~SiteProcessCountTracker DCHECKs in some tests if the speculative + // RenderFrameHostImpl is not destroyed last. Ideally this would be closer to + // (possible before) the ResetLoadingState() call above. + // + // There is an inherent race condition causing bugs 838348/915179/et al, where + // the renderer may have committed the speculative main frame and the browser + // has not heard about it yet. If this is a main frame, then in that case the + // speculative RenderFrame was unable to be deleted (it is owned by the + // renderer) and we should not be able to cancel the navigation at this point. + // CleanUpNavigation() would normally be called here but it will try to undo + // the navigation and expose the race condition. When it replaces the main + // frame with a RenderFrameProxy, that leaks the committed main frame, leaving + // the frame and its friend group with pointers that will become invalid + // shortly as we are shutting everything down and deleting the RenderView etc. + // We avoid this problematic situation by not calling CleanUpNavigation() or + // DiscardUnusedFrame() here. The speculative RenderFrameHost is simply + // returned and deleted immediately. This satisfies the requirement that the + // speculative RenderFrameHost is removed from the RenderFrameHostManager + // before it is destroyed. + if (render_manager_.speculative_frame_host()) { + did_stop_loading |= render_manager_.speculative_frame_host()->is_loading(); + render_manager_.UnsetSpeculativeRenderFrameHost(); + } + + if (did_stop_loading) + DidStopLoading(); + DCHECK(!IsLoading()); } diff --git a/chromium/content/browser/frame_host/navigation_controller_delegate.h b/chromium/content/browser/frame_host/navigation_controller_delegate.h index 3a1e77dca06..2615790454e 100644 --- a/chromium/content/browser/frame_host/navigation_controller_delegate.h +++ b/chromium/content/browser/frame_host/navigation_controller_delegate.h @@ -56,6 +56,10 @@ class NavigationControllerDelegate { virtual void ActivateAndShowRepostFormWarningDialog() = 0; virtual bool HasAccessedInitialDocument() = 0; + // TODO(crbug.com/934637): Remove when pdf and any inner web contents user + // gesture is properly propagated. + virtual bool HadInnerWebContents() = 0; + // This method is needed, since we are no longer guaranteed that the // embedder for NavigationController will be a WebContents object. virtual WebContents* GetWebContents() = 0; diff --git a/chromium/content/browser/frame_host/navigation_controller_impl.cc b/chromium/content/browser/frame_host/navigation_controller_impl.cc index d47e3fba4fb..25f8796f96b 100644 --- a/chromium/content/browser/frame_host/navigation_controller_impl.cc +++ b/chromium/content/browser/frame_host/navigation_controller_impl.cc @@ -3410,8 +3410,12 @@ void NavigationControllerImpl::SetShouldSkipOnBackForwardUIIfNeeded( // Note that for a subframe, previous_document_was_activated is true if the // gesture happened in any subframe (propagated to main frame) or in the main // frame itself. + // TODO(crbug.com/934637): Remove the check for HadInnerWebContents() when + // pdf and any inner web contents user gesture is properly propagated. This is + // a temporary fix for history intervention to be disabled for pdfs + // (crbug.com/965434). if (replace_entry || previous_document_was_activated || - !is_renderer_initiated) { + !is_renderer_initiated || delegate_->HadInnerWebContents()) { if (last_committed_entry_index_ != -1) { UMA_HISTOGRAM_BOOLEAN( "Navigation.BackForward.SetShouldSkipOnBackForwardUI", false); diff --git a/chromium/content/browser/frame_host/render_frame_host_impl.cc b/chromium/content/browser/frame_host/render_frame_host_impl.cc index 64bd8abb107..fdac7116419 100644 --- a/chromium/content/browser/frame_host/render_frame_host_impl.cc +++ b/chromium/content/browser/frame_host/render_frame_host_impl.cc @@ -1239,7 +1239,8 @@ void RenderFrameHostImpl::ExecuteJavaScript(const base::string16& javascript, DCHECK_CURRENTLY_ON(BrowserThread::UI); CHECK(CanExecuteJavaScript()); - GetNavigationControl()->JavaScriptExecuteRequest(javascript, + const bool wants_result = !callback.is_null(); + GetNavigationControl()->JavaScriptExecuteRequest(javascript, wants_result, std::move(callback)); } @@ -1251,8 +1252,9 @@ void RenderFrameHostImpl::ExecuteJavaScriptInIsolatedWorld( DCHECK_GT(world_id, ISOLATED_WORLD_ID_GLOBAL); DCHECK_LE(world_id, ISOLATED_WORLD_ID_MAX); + const bool wants_result = !callback.is_null(); GetNavigationControl()->JavaScriptExecuteRequestInIsolatedWorld( - javascript, world_id, std::move(callback)); + javascript, wants_result, world_id, std::move(callback)); } void RenderFrameHostImpl::ExecuteJavaScriptForTests( @@ -1261,8 +1263,9 @@ void RenderFrameHostImpl::ExecuteJavaScriptForTests( DCHECK_CURRENTLY_ON(BrowserThread::UI); const bool has_user_gesture = false; + const bool wants_result = !callback.is_null(); GetNavigationControl()->JavaScriptExecuteRequestForTests( - javascript, has_user_gesture, std::move(callback)); + javascript, wants_result, has_user_gesture, std::move(callback)); } void RenderFrameHostImpl::ExecuteJavaScriptWithUserGestureForTests( @@ -1271,7 +1274,7 @@ void RenderFrameHostImpl::ExecuteJavaScriptWithUserGestureForTests( const bool has_user_gesture = true; GetNavigationControl()->JavaScriptExecuteRequestForTests( - javascript, has_user_gesture, base::NullCallback()); + javascript, false, has_user_gesture, base::NullCallback()); } void RenderFrameHostImpl::CopyImageAt(int x, int y) { @@ -1741,12 +1744,12 @@ bool RenderFrameHostImpl::CreateRenderFrame(int previous_routing_id, return true; } -void RenderFrameHostImpl::DeleteRenderFrame() { +void RenderFrameHostImpl::DeleteRenderFrame(FrameDeleteIntention intent) { if (!is_active()) return; if (render_frame_created_) { - Send(new FrameMsg_Delete(routing_id_)); + Send(new FrameMsg_Delete(routing_id_, intent)); // If this subframe has an unload handler (and isn't speculative), ensure // that it has a chance to execute by delaying process cleanup. This will @@ -2014,7 +2017,8 @@ void RenderFrameHostImpl::RemoveChild(FrameTreeNode* child) { // observers are notified of its deletion. std::unique_ptr<FrameTreeNode> node_to_delete(std::move(*iter)); children_.erase(iter); - node_to_delete->current_frame_host()->DeleteRenderFrame(); + node_to_delete->current_frame_host()->DeleteRenderFrame( + FrameDeleteIntention::kNotMainFrame); // Speculative RenderFrameHosts are deleted by the FrameTreeNode's // RenderFrameHostManager's destructor. RenderFrameProxyHosts send // FrameMsg_Delete automatically in the destructor. @@ -2037,7 +2041,8 @@ void RenderFrameHostImpl::ResetChildren() { // this RenderFrameHostImpl to detach the current frame's children, rather // than messaging each child's current frame host... for (auto& child : children) - child->current_frame_host()->DeleteRenderFrame(); + child->current_frame_host()->DeleteRenderFrame( + FrameDeleteIntention::kNotMainFrame); } void RenderFrameHostImpl::SetLastCommittedUrl(const GURL& url) { @@ -2364,7 +2369,7 @@ void RenderFrameHostImpl::DetachFromProxy() { return; // Start pending deletion on this frame and its children. - DeleteRenderFrame(); + DeleteRenderFrame(FrameDeleteIntention::kNotMainFrame); StartPendingDeletionOnSubtree(); // Some children with no unload handler may be eligible for immediate // deletion. Cut the dead branches now. This is a performance optimization. @@ -4461,7 +4466,7 @@ void RenderFrameHostImpl::StartPendingDeletionOnSubtree() { local_ancestor = rfh; } - local_ancestor->DeleteRenderFrame(); + local_ancestor->DeleteRenderFrame(FrameDeleteIntention::kNotMainFrame); if (local_ancestor != child) { child->unload_state_ = child->GetSuddenTerminationDisablerState(blink::kUnloadHandler) diff --git a/chromium/content/browser/frame_host/render_frame_host_impl.h b/chromium/content/browser/frame_host/render_frame_host_impl.h index 3186e56cfa2..1da0a57d6bc 100644 --- a/chromium/content/browser/frame_host/render_frame_host_impl.h +++ b/chromium/content/browser/frame_host/render_frame_host_impl.h @@ -41,6 +41,7 @@ #include "content/common/content_export.h" #include "content/common/content_security_policy/csp_context.h" #include "content/common/frame.mojom.h" +#include "content/common/frame_delete_intention.h" #include "content/common/frame_message_enums.h" #include "content/common/frame_replication_state.h" #include "content/common/image_downloader/image_downloader.mojom.h" @@ -328,7 +329,7 @@ class CONTENT_EXPORT RenderFrameHostImpl // Deletes the RenderFrame in the renderer process. // Postcondition: |is_active()| will return false. - void DeleteRenderFrame(); + void DeleteRenderFrame(FrameDeleteIntention intent); // Tracks whether the RenderFrame for this RenderFrameHost has been created in // the renderer process. This is currently only used for subframes. diff --git a/chromium/content/browser/frame_host/render_frame_host_manager.cc b/chromium/content/browser/frame_host/render_frame_host_manager.cc index 56aa5739aa3..8424a63b37a 100644 --- a/chromium/content/browser/frame_host/render_frame_host_manager.cc +++ b/chromium/content/browser/frame_host/render_frame_host_manager.cc @@ -786,7 +786,10 @@ void RenderFrameHostManager::CleanUpNavigation() { std::unique_ptr<RenderFrameHostImpl> RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { speculative_render_frame_host_->GetProcess()->RemovePendingView(); - speculative_render_frame_host_->DeleteRenderFrame(); + speculative_render_frame_host_->DeleteRenderFrame( + frame_tree_node_->parent() + ? FrameDeleteIntention::kNotMainFrame + : FrameDeleteIntention::kSpeculativeMainFrameForNavigationCancelled); return std::move(speculative_render_frame_host_); } @@ -2128,7 +2131,6 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( // mode, it is possible for renderer-intiated navigations to be allowed to // go cross-process. Check it first. bool can_renderer_initiate_transfer = - render_frame_host_->IsRenderFrameLive() && IsURLHandledByNetworkStack(request.common_params().url) && IsRendererTransferNeededForNavigation(render_frame_host_.get(), request.common_params().url); diff --git a/chromium/content/browser/renderer_host/input/input_router_impl.cc b/chromium/content/browser/renderer_host/input/input_router_impl.cc index 0e28047efd6..0eaa9ded4b3 100644 --- a/chromium/content/browser/renderer_host/input/input_router_impl.cc +++ b/chromium/content/browser/renderer_host/input/input_router_impl.cc @@ -621,10 +621,8 @@ void InputRouterImpl::TouchEventHandled( } } - bool should_stop_timeout_monitor = - !compositor_touch_action_enabled_ || - (compositor_touch_action_enabled_ && - touch_action_filter_.allowed_touch_action().has_value()); + // TODO(crbug.com/953547): find a proper way to stop the timeout monitor. + bool should_stop_timeout_monitor = true; // |touch_event_queue_| will forward to OnTouchEventAck when appropriate. touch_event_queue_.ProcessTouchAck(source, state, latency, touch_event.event.unique_touch_event_id, diff --git a/chromium/content/browser/renderer_host/input/input_router_impl_unittest.cc b/chromium/content/browser/renderer_host/input/input_router_impl_unittest.cc index b1ecd6ec5c4..f19d1ed21e8 100644 --- a/chromium/content/browser/renderer_host/input/input_router_impl_unittest.cc +++ b/chromium/content/browser/renderer_host/input/input_router_impl_unittest.cc @@ -2126,6 +2126,9 @@ TEST_P(InputRouterImplTest, TouchActionInCallback) { } TEST_P(InputRouterImplTest, TimeoutMonitorStopWithMainThreadTouchAction) { + // TODO(crbug.com/953547): enable this when the bug is fixed. + if (compositor_touch_action_enabled_) + return; SetUpForTouchAckTimeoutTest(1, 1); OnHasTouchEventHandlers(true); diff --git a/chromium/content/browser/renderer_host/render_process_host_impl.cc b/chromium/content/browser/renderer_host/render_process_host_impl.cc index f3a90e61f2b..0866af8555c 100644 --- a/chromium/content/browser/renderer_host/render_process_host_impl.cc +++ b/chromium/content/browser/renderer_host/render_process_host_impl.cc @@ -3451,6 +3451,7 @@ void RenderProcessHostImpl::Cleanup() { false /* already_dead */); info.status = base::TERMINATION_STATUS_NORMAL_TERMINATION; info.exit_code = 0; + PopulateTerminationInfoRendererFields(&info); for (auto& observer : observers_) { observer.RenderProcessExited(this, info); } @@ -3508,6 +3509,12 @@ void RenderProcessHostImpl::Cleanup() { std::make_unique<base::WeakPtrFactory<RenderProcessHostImpl>>(this); } +void RenderProcessHostImpl::PopulateTerminationInfoRendererFields( + ChildProcessTerminationInfo* info) { + info->renderer_has_visible_clients = VisibleClientCount() > 0; + info->renderer_was_subframe = GetFrameDepth() > 0; +} + void RenderProcessHostImpl::AddPendingView() { const bool had_pending_views = pending_views_++; if (!had_pending_views) @@ -4135,6 +4142,7 @@ void RenderProcessHostImpl::ProcessDied( #endif } } + PopulateTerminationInfoRendererFields(&info); child_process_launcher_.reset(); is_dead_ = true; @@ -4501,6 +4509,7 @@ void RenderProcessHostImpl::OnProcessLaunchFailed(int error_code) { ChildProcessTerminationInfo info; info.status = base::TERMINATION_STATUS_LAUNCH_FAILED; info.exit_code = error_code; + PopulateTerminationInfoRendererFields(&info); ProcessDied(true, &info); } diff --git a/chromium/content/browser/renderer_host/render_process_host_impl.h b/chromium/content/browser/renderer_host/render_process_host_impl.h index b001c2b104c..8ee98dfed01 100644 --- a/chromium/content/browser/renderer_host/render_process_host_impl.h +++ b/chromium/content/browser/renderer_host/render_process_host_impl.h @@ -647,6 +647,7 @@ class CONTENT_EXPORT RenderProcessHostImpl base::FilePath GetAecDumpFilePathWithExtensions(const base::FilePath& file); base::SequencedTaskRunner& GetAecDumpFileTaskRunner(); void NotifyRendererIfLockedToSite(); + void PopulateTerminationInfoRendererFields(ChildProcessTerminationInfo* info); static void OnMojoError(int render_process_id, const std::string& error); diff --git a/chromium/content/browser/renderer_host/render_view_host_delegate.cc b/chromium/content/browser/renderer_host/render_view_host_delegate.cc index 89feeaf9132..f8c11d0dac5 100644 --- a/chromium/content/browser/renderer_host/render_view_host_delegate.cc +++ b/chromium/content/browser/renderer_host/render_view_host_delegate.cc @@ -61,6 +61,10 @@ bool RenderViewHostDelegate::HasPersistentVideo() const { return false; } +bool RenderViewHostDelegate::IsSpatialNavigationDisabled() const { + return false; +} + RenderFrameHost* RenderViewHostDelegate::GetPendingMainFrame() { return nullptr; } diff --git a/chromium/content/browser/renderer_host/render_view_host_delegate.h b/chromium/content/browser/renderer_host/render_view_host_delegate.h index 3d15672209a..7ecbec7dab3 100644 --- a/chromium/content/browser/renderer_host/render_view_host_delegate.h +++ b/chromium/content/browser/renderer_host/render_view_host_delegate.h @@ -184,6 +184,9 @@ class CONTENT_EXPORT RenderViewHostDelegate { // Whether the WebContents as a persistent video. virtual bool HasPersistentVideo() const; + // Whether spatial navigation is permitted. + virtual bool IsSpatialNavigationDisabled() const; + // Returns the RenderFrameHost for a pending or speculative main frame // navigation for the page. Returns nullptr if there is no such navigation. virtual RenderFrameHost* GetPendingMainFrame(); diff --git a/chromium/content/browser/renderer_host/render_view_host_impl.cc b/chromium/content/browser/renderer_host/render_view_host_impl.cc index 5c17f54eaa2..2c4182e518c 100644 --- a/chromium/content/browser/renderer_host/render_view_host_impl.cc +++ b/chromium/content/browser/renderer_host/render_view_host_impl.cc @@ -566,6 +566,9 @@ const WebPreferences RenderViewHostImpl::ComputeWebPreferences() { prefs.spatial_navigation_enabled = command_line.HasSwitch( switches::kEnableSpatialNavigation); + if (delegate_ && delegate_->IsSpatialNavigationDisabled()) + prefs.spatial_navigation_enabled = false; + prefs.disable_reading_from_canvas = command_line.HasSwitch( switches::kDisableReadingFromCanvas); diff --git a/chromium/content/browser/site_per_process_browsertest.cc b/chromium/content/browser/site_per_process_browsertest.cc index 4b1e01a419f..eec2a9b2482 100644 --- a/chromium/content/browser/site_per_process_browsertest.cc +++ b/chromium/content/browser/site_per_process_browsertest.cc @@ -14467,6 +14467,42 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, actual_scroll_delta); } +// Check that if a frame starts a navigation, and the frame's current process +// dies before the response for the navigation comes back, the response will +// not trigger a process kill and will be allowed to commit in a new process. +// See https://crbug.com/968259. +IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, + ProcessDiesBeforeCrossSiteNavigationCompletes) { + GURL first_url(embedded_test_server()->GetURL("a.com", "/title1.html")); + EXPECT_TRUE(NavigateToURL(shell(), first_url)); + scoped_refptr<SiteInstanceImpl> first_site_instance( + web_contents()->GetMainFrame()->GetSiteInstance()); + + // Start a cross-site navigation and proceed only up to the request start. + GURL second_url(embedded_test_server()->GetURL("b.com", "/title1.html")); + TestNavigationManager delayer(web_contents(), second_url); + EXPECT_TRUE(ExecuteScript(shell(), JsReplace("location = $1", second_url))); + EXPECT_TRUE(delayer.WaitForRequestStart()); + + // Terminate the current a.com process. + RenderProcessHost* first_process = + web_contents()->GetMainFrame()->GetProcess(); + RenderProcessHostWatcher crash_observer( + first_process, RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT); + EXPECT_TRUE(first_process->Shutdown(0)); + crash_observer.Wait(); + EXPECT_FALSE(web_contents()->GetMainFrame()->IsRenderFrameLive()); + + // Resume the cross-site navigation and ensure it commits in a new + // SiteInstance and process. + delayer.WaitForNavigationFinished(); + EXPECT_TRUE(web_contents()->GetMainFrame()->IsRenderFrameLive()); + EXPECT_NE(web_contents()->GetMainFrame()->GetProcess(), first_process); + EXPECT_NE(web_contents()->GetMainFrame()->GetSiteInstance(), + first_site_instance); + EXPECT_EQ(second_url, web_contents()->GetMainFrame()->GetLastCommittedURL()); +} + class FeaturePolicyPropagationToAuxiliaryBrowsingContextTest : public SitePerProcessFeaturePolicyJavaScriptBrowserTest, public testing::WithParamInterface<std::tuple< diff --git a/chromium/content/browser/utility_process_host.cc b/chromium/content/browser/utility_process_host.cc index 51f72c8ac9e..56f8ef5d1f3 100644 --- a/chromium/content/browser/utility_process_host.cc +++ b/chromium/content/browser/utility_process_host.cc @@ -45,6 +45,10 @@ #include "ui/base/ui_base_switches.h" #include "ui/gl/gl_switches.h" +#if defined(OS_MACOSX) +#include "components/os_crypt/os_crypt_switches.h" +#endif + #if defined(OS_WIN) #include "sandbox/win/src/sandbox_policy.h" #include "sandbox/win/src/sandbox_types.h" @@ -377,6 +381,7 @@ bool UtilityProcessHost::StartProcess() { service_manager::switches::kNoSandbox, #if defined(OS_MACOSX) service_manager::switches::kEnableSandboxLogging, + os_crypt::switches::kUseMockKeychain, #endif switches::kDisableTestCerts, switches::kEnableLogging, diff --git a/chromium/content/browser/web_contents/web_contents_android.cc b/chromium/content/browser/web_contents/web_contents_android.cc index 7543b5ffdb7..d48a6cc2b96 100644 --- a/chromium/content/browser/web_contents/web_contents_android.cc +++ b/chromium/content/browser/web_contents/web_contents_android.cc @@ -666,6 +666,13 @@ void WebContentsAndroid::SetOverscrollRefreshHandler( overscroll_refresh_handler)); } +void WebContentsAndroid::SetSpatialNavigationDisabled( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj, + bool disabled) { + web_contents_->SetSpatialNavigationDisabled(disabled); +} + void WebContentsAndroid::WriteContentBitmapToDisk( JNIEnv* env, const JavaParamRef<jobject>& obj, diff --git a/chromium/content/browser/web_contents/web_contents_android.h b/chromium/content/browser/web_contents/web_contents_android.h index 2f818533244..d9d1a37b79d 100644 --- a/chromium/content/browser/web_contents/web_contents_android.h +++ b/chromium/content/browser/web_contents/web_contents_android.h @@ -181,6 +181,11 @@ class CONTENT_EXPORT WebContentsAndroid const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jobject>& overscroll_refresh_handler); + void SetSpatialNavigationDisabled( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj, + bool disabled); + // Relay the access from Java layer to RWHV::CopyFromSurface() through JNI. void WriteContentBitmapToDisk( JNIEnv* env, diff --git a/chromium/content/browser/web_contents/web_contents_impl.cc b/chromium/content/browser/web_contents/web_contents_impl.cc index 1491bf580c5..afb23ccce9d 100644 --- a/chromium/content/browser/web_contents/web_contents_impl.cc +++ b/chromium/content/browser/web_contents/web_contents_impl.cc @@ -592,6 +592,7 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context) #endif // !defined(OS_ANDROID) is_overlay_content_(false), showing_context_menu_(false), + had_inner_webcontents_(false), loading_weak_factory_(this), weak_factory_(this) { frame_tree_.SetFrameRemoveListener( @@ -687,7 +688,8 @@ WebContentsImpl::~WebContentsImpl() { // Do not update state as the WebContents is being destroyed. frame_tree_.root()->ResetNavigationRequest(true, true); if (root->speculative_frame_host()) { - root->speculative_frame_host()->DeleteRenderFrame(); + root->speculative_frame_host()->DeleteRenderFrame( + FrameDeleteIntention::kSpeculativeMainFrameForShutdown); root->speculative_frame_host()->SetRenderFrameCreated(false); root->speculative_frame_host()->ResetNavigationRequests(); } @@ -3513,6 +3515,10 @@ void WebContentsImpl::DidProceedOnInterstitial() { LoadingStateChanged(true, true, nullptr); } +bool WebContentsImpl::HadInnerWebContents() { + return had_inner_webcontents_; +} + void WebContentsImpl::DetachInterstitialPage(bool has_focus) { bool interstitial_pausing_throbber = ShowingInterstitialPage() && interstitial_page_->pause_throbber(); @@ -4423,6 +4429,9 @@ void WebContentsImpl::DidNavigateMainFramePostCommit( if (delegate_) delegate_->DidNavigateMainFramePostCommit(this); view_->SetOverscrollControllerEnabled(CanOverscrollContent()); + + if (!details.is_same_document && GetInnerWebContents().empty()) + had_inner_webcontents_ = false; } void WebContentsImpl::DidNavigateAnyFramePostCommit( @@ -5490,6 +5499,10 @@ bool WebContentsImpl::HasPersistentVideo() const { return has_persistent_video_; } +bool WebContentsImpl::IsSpatialNavigationDisabled() const { + return is_spatial_navigation_disabled_; +} + RenderFrameHost* WebContentsImpl::GetPendingMainFrame() { return GetRenderManager()->speculative_frame_host(); } @@ -5626,6 +5639,7 @@ void WebContentsImpl::FocusOuterAttachmentFrameChain() { } void WebContentsImpl::InnerWebContentsCreated(WebContents* inner_web_contents) { + had_inner_webcontents_ = true; for (auto& observer : observers_) observer.InnerWebContentsCreated(inner_web_contents); } @@ -6750,6 +6764,14 @@ void WebContentsImpl::SetHasPersistentVideo(bool has_persistent_video) { media_web_contents_observer()->RequestPersistentVideo(has_persistent_video); } +void WebContentsImpl::SetSpatialNavigationDisabled(bool disabled) { + if (is_spatial_navigation_disabled_ == disabled) + return; + + is_spatial_navigation_disabled_ = disabled; + NotifyPreferencesChanged(); +} + void WebContentsImpl::BrowserPluginGuestWillDetach() { WebContentsImpl* outermost = GetOutermostWebContents(); if (this != outermost && ContainsOrIsFocusedWebContents()) diff --git a/chromium/content/browser/web_contents/web_contents_impl.h b/chromium/content/browser/web_contents/web_contents_impl.h index d2c789a3480..9be280b6e06 100644 --- a/chromium/content/browser/web_contents/web_contents_impl.h +++ b/chromium/content/browser/web_contents/web_contents_impl.h @@ -664,6 +664,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, bool ShouldIgnoreUnresponsiveRenderer() override; bool HideDownloadUI() const override; bool HasPersistentVideo() const override; + bool IsSpatialNavigationDisabled() const override; RenderFrameHost* GetPendingMainFrame() override; void DidFirstVisuallyNonEmptyPaint(RenderViewHostImpl* source) override; void DidCommitAndDrawCompositorFrame(RenderViewHostImpl* source) override; @@ -885,6 +886,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, // Unpause the throbber if it was paused. void DidProceedOnInterstitial() override; + bool HadInnerWebContents() override; + // Forces overscroll to be disabled (used by touch emulation). void SetForceDisableOverscrollContent(bool force_disable); @@ -987,6 +990,9 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, // a video currently in Picture-in-Picture mode. void SetHasPictureInPictureVideo(bool has_picture_in_picture_video); + // Sets the spatial navigation state. + void SetSpatialNavigationDisabled(bool disabled); + #if defined(OS_ANDROID) // Called by FindRequestManager when all of the find match rects are in. void NotifyFindMatchRectsReply(int version, @@ -1825,6 +1831,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, bool has_persistent_video_ = false; + bool is_spatial_navigation_disabled_ = false; + bool is_currently_audible_ = false; bool was_ever_audible_ = false; @@ -1854,6 +1862,11 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, // WebContents can be found by using GetOuterWebContents(). Portal* portal_ = nullptr; + // TODO(crbug.com/934637): Remove this field when pdf/any inner web contents + // user gesture is properly propagated. This is a temporary fix for history + // intervention to be disabled for pdfs (crbug.com/965434). + bool had_inner_webcontents_; + base::WeakPtrFactory<WebContentsImpl> loading_weak_factory_; base::WeakPtrFactory<WebContentsImpl> weak_factory_; diff --git a/chromium/content/child/blink_platform_impl.cc b/chromium/content/child/blink_platform_impl.cc index e65e3629a22..3ce31a5ea07 100644 --- a/chromium/content/child/blink_platform_impl.cc +++ b/chromium/content/child/blink_platform_impl.cc @@ -137,6 +137,10 @@ static int ToMessageID(WebLocalizedString::Name name) { return IDS_AX_MEDIA_TIME_REMAINING_DISPLAY_HELP; case WebLocalizedString::kAXMediaOverflowButtonHelp: return IDS_AX_MEDIA_OVERFLOW_BUTTON_HELP; + case WebLocalizedString::kAXMediaTouchLessSeekAction: + return IDS_AX_MEDIA_TOUCHLESS_SEEK_ACTION; + case WebLocalizedString::kAXMediaTouchLessVolumeAction: + return IDS_AX_MEDIA_TOUCHLESS_VOLUME_ACTION; case WebLocalizedString::kAXMillisecondFieldText: return IDS_AX_MILLISECOND_FIELD_TEXT; case WebLocalizedString::kAXMinuteFieldText: diff --git a/chromium/content/common/BUILD.gn b/chromium/content/common/BUILD.gn index 080d08c52d8..775996a26f5 100644 --- a/chromium/content/common/BUILD.gn +++ b/chromium/content/common/BUILD.gn @@ -111,6 +111,7 @@ source_set("common") { "font_list_fontconfig.cc", "font_list_mac.mm", "font_list_win.cc", + "frame_delete_intention.h", "frame_message_enums.h", "frame_message_structs.cc", "frame_message_structs.h", diff --git a/chromium/content/common/cursors/webcursor.cc b/chromium/content/common/cursors/webcursor.cc index ba08cf18ccd..1ac3bb9b9d3 100644 --- a/chromium/content/common/cursors/webcursor.cc +++ b/chromium/content/common/cursors/webcursor.cc @@ -40,8 +40,14 @@ WebCursor::WebCursor(const CursorInfo& info) : info_(info) { ClampHotspot(); } -WebCursor::WebCursor(const WebCursor& other) : info_(other.info_) { - CopyPlatformData(other); +WebCursor::WebCursor(const WebCursor& other) { + CopyAllData(other); +} + +WebCursor& WebCursor::operator=(const WebCursor& other) { + CleanupPlatformData(); + CopyAllData(other); + return *this; } bool WebCursor::Deserialize(const base::Pickle* m, base::PickleIterator* iter) { @@ -98,6 +104,11 @@ bool WebCursor::operator!=(const WebCursor& other) const { return !(*this == other); } +void WebCursor::CopyAllData(const WebCursor& other) { + info_ = other.info_; + CopyPlatformData(other); +} + void WebCursor::ClampHotspot() { if (info_.type != WebCursorInfo::kTypeCustom) return; diff --git a/chromium/content/common/cursors/webcursor.h b/chromium/content/common/cursors/webcursor.h index 3a740af2e66..88b9cb2ba4f 100644 --- a/chromium/content/common/cursors/webcursor.h +++ b/chromium/content/common/cursors/webcursor.h @@ -35,6 +35,7 @@ class CONTENT_EXPORT WebCursor { WebCursor() = default; explicit WebCursor(const CursorInfo& info); explicit WebCursor(const WebCursor& other); + WebCursor& operator=(const WebCursor& other); ~WebCursor(); const CursorInfo& info() const { return info_; } @@ -67,6 +68,9 @@ class CONTENT_EXPORT WebCursor { // Returns true if this cursor's platform data matches that of |other|. bool IsPlatformDataEqual(const WebCursor& other) const; + // Copies all data from |other| to this object. + void CopyAllData(const WebCursor& other); + // Copies platform specific data from the WebCursor instance passed in. void CopyPlatformData(const WebCursor& other); diff --git a/chromium/content/common/frame.mojom b/chromium/content/common/frame.mojom index 7deab3ea78f..1b1f8704d3f 100644 --- a/chromium/content/common/frame.mojom +++ b/chromium/content/common/frame.mojom @@ -182,16 +182,22 @@ interface FrameNavigationControl { // |javascript| is the string containing the JavaScript to be executed in the // target frame's context. // + // |wants_result| is true if the result of this execution is required by the + // caller. If it is false, a reply is still required by Mojo, but a null value + // should be returned to avoid issues serializing a large, unwanted reply. + // // TODO(hajimehoshi): This requires navigate association to keep the message // order with other navigation-related messages. Fix this and move this to a // non-navigate-related interface if possible. JavaScriptExecuteRequest( - mojo_base.mojom.String16 javascript) => (mojo_base.mojom.Value result); + mojo_base.mojom.String16 javascript, + bool wants_result) => (mojo_base.mojom.Value result); // ONLY FOR TESTS: Same as above but adds a fake UserGestureIndicator around // execution. (crbug.com/408426) JavaScriptExecuteRequestForTests( mojo_base.mojom.String16 javascript, + bool wants_result, bool has_user_gesture) => (mojo_base.mojom.Value result); @@ -199,6 +205,7 @@ interface FrameNavigationControl { // isolated world specified by the fourth parameter. JavaScriptExecuteRequestInIsolatedWorld( mojo_base.mojom.String16 javascript, + bool wants_result, int32 world_id) => (mojo_base.mojom.Value result); // Posts a message from a frame in another process to the current renderer. diff --git a/chromium/content/common/frame_delete_intention.h b/chromium/content/common/frame_delete_intention.h new file mode 100644 index 00000000000..f30103c3656 --- /dev/null +++ b/chromium/content/common/frame_delete_intention.h @@ -0,0 +1,27 @@ +// 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. + +#ifndef CONTENT_COMMON_FRAME_DELETE_INTENTION_H_ +#define CONTENT_COMMON_FRAME_DELETE_INTENTION_H_ + +namespace content { + +enum class FrameDeleteIntention { + // The frame being deleted isn't a (speculative) main frame. + kNotMainFrame, + // The frame being deleted is a speculative main frame, and it is being + // deleted as part of the shutdown for that WebContents. The entire RenderView + // etc will be destroyed by a separate IPC sent later. + kSpeculativeMainFrameForShutdown, + // The frame being deleted is a speculative main frame, and it is being + // deleted because the speculative navigation was cancelled. This is not part + // of shutdown. + kSpeculativeMainFrameForNavigationCancelled, + + kMaxValue = kSpeculativeMainFrameForNavigationCancelled +}; + +} // namespace content + +#endif // CONTENT_COMMON_FRAME_DELETE_INTENTION_H_ diff --git a/chromium/content/common/frame_messages.h b/chromium/content/common/frame_messages.h index 8673d65844e..91e10a61934 100644 --- a/chromium/content/common/frame_messages.h +++ b/chromium/content/common/frame_messages.h @@ -26,6 +26,7 @@ #include "content/common/content_param_traits.h" #include "content/common/content_security_policy/csp_context.h" #include "content/common/content_security_policy_header.h" +#include "content/common/frame_delete_intention.h" #include "content/common/frame_message_enums.h" #include "content/common/frame_message_structs.h" #include "content/common/frame_owner_properties.h" @@ -101,6 +102,8 @@ using FrameMsg_GetSerializedHtmlWithLocalLinks_FrameRoutingIdMap = #define IPC_MESSAGE_EXPORT CONTENT_EXPORT #define IPC_MESSAGE_START FrameMsgStart +IPC_ENUM_TRAITS_MAX_VALUE(content::FrameDeleteIntention, + content::FrameDeleteIntention::kMaxValue) IPC_ENUM_TRAITS_MAX_VALUE(blink::FrameOwnerElementType, blink::FrameOwnerElementType::kMaxValue) IPC_ENUM_TRAITS_MAX_VALUE( @@ -804,7 +807,7 @@ IPC_MESSAGE_ROUTED1(FrameMsg_UpdateOpener, int /* opener_routing_id */) IPC_MESSAGE_ROUTED1(FrameMsg_VisualStateRequest, uint64_t /* id */) // Instructs the renderer to delete the RenderFrame. -IPC_MESSAGE_ROUTED0(FrameMsg_Delete) +IPC_MESSAGE_ROUTED1(FrameMsg_Delete, content::FrameDeleteIntention) // Instructs the renderer to invoke the frame's beforeunload event handler. // Expects the result to be returned via FrameHostMsg_BeforeUnload_ACK. diff --git a/chromium/content/public/browser/BUILD.gn b/chromium/content/public/browser/BUILD.gn index dc2f2f24869..ae744eda8ae 100644 --- a/chromium/content/public/browser/BUILD.gn +++ b/chromium/content/public/browser/BUILD.gn @@ -99,6 +99,7 @@ jumbo_source_set("browser_sources") { "child_process_data.h", "child_process_launcher_utils.h", "child_process_security_policy.h", + "child_process_termination_info.cc", "child_process_termination_info.h", "clear_site_data_utils.h", "client_certificate_delegate.h", diff --git a/chromium/content/public/browser/child_process_termination_info.cc b/chromium/content/public/browser/child_process_termination_info.cc new file mode 100644 index 00000000000..753880c1b38 --- /dev/null +++ b/chromium/content/public/browser/child_process_termination_info.cc @@ -0,0 +1,14 @@ +// 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. + +#include "content/public/browser/child_process_termination_info.h" + +namespace content { + +ChildProcessTerminationInfo::ChildProcessTerminationInfo() = default; +ChildProcessTerminationInfo::ChildProcessTerminationInfo( + const ChildProcessTerminationInfo& other) = default; +ChildProcessTerminationInfo::~ChildProcessTerminationInfo() = default; + +} // namespace content diff --git a/chromium/content/public/browser/child_process_termination_info.h b/chromium/content/public/browser/child_process_termination_info.h index 0331f00b95d..633ac786fa6 100644 --- a/chromium/content/public/browser/child_process_termination_info.h +++ b/chromium/content/public/browser/child_process_termination_info.h @@ -8,6 +8,7 @@ #include "base/process/kill.h" #include "base/time/time.h" #include "build/build_config.h" +#include "content/common/content_export.h" #include "content/public/common/result_codes.h" #if defined(OS_ANDROID) @@ -16,7 +17,11 @@ namespace content { -struct ChildProcessTerminationInfo { +struct CONTENT_EXPORT ChildProcessTerminationInfo { + ChildProcessTerminationInfo(); + ChildProcessTerminationInfo(const ChildProcessTerminationInfo& other); + ~ChildProcessTerminationInfo(); + base::TerminationStatus status = base::TERMINATION_STATUS_NORMAL_TERMINATION; // If |status| is TERMINATION_STATUS_LAUNCH_FAILED then |exit_code| will @@ -29,6 +34,15 @@ struct ChildProcessTerminationInfo { // ChildProcessTerminationInfo is computed. base::TimeDelta uptime = base::TimeDelta::Max(); + // Populated only for renderer process. True if there are any visible + // clients at the time of process death. + bool renderer_has_visible_clients = false; + + // Populated only for renderer process. True if + // RenderProcessHost::GetFrameDepth is bigger than 0. Note this is not exactly + // the same as not having main frames. + bool renderer_was_subframe = false; + #if defined(OS_ANDROID) // True if child service has strong or moderate binding at time of death. base::android::ChildBindingState binding_state = diff --git a/chromium/content/renderer/render_frame_impl.cc b/chromium/content/renderer/render_frame_impl.cc index c75b6177f06..dc3c7420d89 100644 --- a/chromium/content/renderer/render_frame_impl.cc +++ b/chromium/content/renderer/render_frame_impl.cc @@ -2427,7 +2427,46 @@ void RenderFrameImpl::OnSwapIn() { SwapIn(); } -void RenderFrameImpl::OnDeleteFrame() { +void RenderFrameImpl::OnDeleteFrame(FrameDeleteIntention intent) { + // The main frame (when not provisional) is owned by the renderer's frame tree + // via WebViewImpl. When a provisional main frame is swapped in, the ownership + // moves from the browser to the renderer, but this happens in the renderer + // process and is then the browser is informed. + // If the provisional main frame is swapped in while the browser is destroying + // it, the browser may request to delete |this|, thinking it has ownership + // of it, but the renderer has already taken ownership via SwapIn(). + switch (intent) { + case FrameDeleteIntention::kNotMainFrame: + // The frame was not a main frame, so the browser should always have + // ownership of it and we can just proceed with deleting it on + // request. + DCHECK(!is_main_frame_); + break; + case FrameDeleteIntention::kSpeculativeMainFrameForShutdown: + // In this case the renderer has taken ownership of the provisional main + // frame but the browser did not know yet and is shutting down. We can + // ignore this request as the frame will be destroyed when the RenderView + // is. This handles the shutdown case of https://crbug.com/957858. + DCHECK(is_main_frame_); + if (in_frame_tree_) + return; + break; + case FrameDeleteIntention::kSpeculativeMainFrameForNavigationCancelled: + // In this case the browser was navigating and cancelled the speculative + // navigation. The renderer *should* undo the SwapIn() but the old state + // has already been destroyed. Both ignoring the message or handling it + // would leave the renderer in an inconsistent state now. If we ignore it + // then the browser thinks the RenderView has a remote main frame, but it + // is incorrect. If we handle it, then we are deleting a local main frame + // out from under the RenderView and we will have bad pointers in the + // renderer. So all we can do is crash. We should instead prevent this + // scenario by blocking the browser from dropping the speculative main + // frame when a commit (and ownership transfer) is imminent. + // TODO(dcheng): This is the case of https://crbug.com/838348. + DCHECK(is_main_frame_); + break; + } + // This will result in a call to RenderFrameImpl::FrameDetached, which // deletes the object. Do not access |this| after detach. frame_->Detach(); @@ -2508,6 +2547,7 @@ void RenderFrameImpl::OnAddMessageToConsole( void RenderFrameImpl::JavaScriptExecuteRequest( const base::string16& javascript, + bool wants_result, JavaScriptExecuteRequestCallback callback) { TRACE_EVENT_INSTANT0("test_tracing", "JavaScriptExecuteRequest", TRACE_EVENT_SCOPE_THREAD); @@ -2522,11 +2562,15 @@ void RenderFrameImpl::JavaScriptExecuteRequest( if (!weak_this) return; - std::move(callback).Run(GetJavaScriptExecutionResult(result)); + if (wants_result) + std::move(callback).Run(GetJavaScriptExecutionResult(result)); + else + std::move(callback).Run({}); } void RenderFrameImpl::JavaScriptExecuteRequestForTests( const base::string16& javascript, + bool wants_result, bool has_user_gesture, JavaScriptExecuteRequestForTestsCallback callback) { TRACE_EVENT_INSTANT0("test_tracing", "JavaScriptExecuteRequestForTests", @@ -2548,11 +2592,15 @@ void RenderFrameImpl::JavaScriptExecuteRequestForTests( if (!weak_this) return; - std::move(callback).Run(GetJavaScriptExecutionResult(result)); + if (wants_result) + std::move(callback).Run(GetJavaScriptExecutionResult(result)); + else + std::move(callback).Run({}); } void RenderFrameImpl::JavaScriptExecuteRequestInIsolatedWorld( const base::string16& javascript, + bool wants_result, int32_t world_id, JavaScriptExecuteRequestInIsolatedWorldCallback callback) { TRACE_EVENT_INSTANT0("test_tracing", @@ -2571,15 +2619,18 @@ void RenderFrameImpl::JavaScriptExecuteRequestInIsolatedWorld( v8::HandleScope handle_scope(v8::Isolate::GetCurrent()); WebScriptSource script = WebScriptSource(WebString::FromUTF16(javascript)); JavaScriptIsolatedWorldRequest* request = new JavaScriptIsolatedWorldRequest( - weak_factory_.GetWeakPtr(), std::move(callback)); + weak_factory_.GetWeakPtr(), wants_result, std::move(callback)); frame_->RequestExecuteScriptInIsolatedWorld( world_id, &script, 1, false, WebLocalFrame::kSynchronous, request); } RenderFrameImpl::JavaScriptIsolatedWorldRequest::JavaScriptIsolatedWorldRequest( base::WeakPtr<RenderFrameImpl> render_frame_impl, + bool wants_result, JavaScriptExecuteRequestInIsolatedWorldCallback callback) - : render_frame_impl_(render_frame_impl), callback_(std::move(callback)) {} + : render_frame_impl_(render_frame_impl), + wants_result_(wants_result), + callback_(std::move(callback)) {} RenderFrameImpl::JavaScriptIsolatedWorldRequest:: ~JavaScriptIsolatedWorldRequest() { @@ -2594,7 +2645,7 @@ void RenderFrameImpl::JavaScriptIsolatedWorldRequest::Completed( } base::Value value; - if (!result.empty()) { + if (!result.empty() && wants_result_) { // It's safe to always use the main world context when converting // here. V8ValueConverterImpl shouldn't actually care about the // context scope, and it switches to v8::Object's creation context @@ -3101,7 +3152,7 @@ void RenderFrameImpl::LoadErrorPage(int reason) { } void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { - JavaScriptExecuteRequest(javascript, base::DoNothing()); + JavaScriptExecuteRequest(javascript, false, base::DoNothing()); } void RenderFrameImpl::BindLocalInterface( diff --git a/chromium/content/renderer/render_frame_impl.h b/chromium/content/renderer/render_frame_impl.h index 4613ce47c11..d35cfb8dd67 100644 --- a/chromium/content/renderer/render_frame_impl.h +++ b/chromium/content/renderer/render_frame_impl.h @@ -34,6 +34,7 @@ #include "content/common/buildflags.h" #include "content/common/download/mhtml_file_writer.mojom.h" #include "content/common/frame.mojom.h" +#include "content/common/frame_delete_intention.h" #include "content/common/frame_message_enums.h" #include "content/common/host_zoom.mojom.h" #include "content/common/media/renderer_audio_input_stream_factory.mojom.h" @@ -637,13 +638,16 @@ class CONTENT_EXPORT RenderFrameImpl void JavaScriptExecuteRequest( const base::string16& javascript, + bool wants_result, JavaScriptExecuteRequestCallback callback) override; void JavaScriptExecuteRequestForTests( const base::string16& javascript, + bool wants_result, bool has_user_gesture, JavaScriptExecuteRequestForTestsCallback callback) override; void JavaScriptExecuteRequestInIsolatedWorld( const base::string16& javascript, + bool wants_result, int32_t world_id, JavaScriptExecuteRequestInIsolatedWorldCallback callback) override; void OnPortalActivated(const base::UnguessableToken& portal_token, @@ -1029,6 +1033,7 @@ class CONTENT_EXPORT RenderFrameImpl public: JavaScriptIsolatedWorldRequest( base::WeakPtr<RenderFrameImpl> render_frame_impl, + bool wants_result, JavaScriptExecuteRequestInIsolatedWorldCallback callback); void Completed( const blink::WebVector<v8::Local<v8::Value>>& result) override; @@ -1037,6 +1042,7 @@ class CONTENT_EXPORT RenderFrameImpl ~JavaScriptIsolatedWorldRequest() override; base::WeakPtr<RenderFrameImpl> render_frame_impl_; + bool wants_result_; JavaScriptExecuteRequestInIsolatedWorldCallback callback_; DISALLOW_COPY_AND_ASSIGN(JavaScriptIsolatedWorldRequest); @@ -1111,7 +1117,7 @@ class CONTENT_EXPORT RenderFrameImpl void OnSwapOut(int proxy_routing_id, bool is_loading, const FrameReplicationState& replicated_frame_state); - void OnDeleteFrame(); + void OnDeleteFrame(FrameDeleteIntention intent); void OnStop(); void OnCollapse(bool collapse); void OnShowContextMenu(const gfx::Point& location); diff --git a/chromium/content/renderer/render_frame_impl_browsertest.cc b/chromium/content/renderer/render_frame_impl_browsertest.cc index 6772deaa8a0..c994c84d377 100644 --- a/chromium/content/renderer/render_frame_impl_browsertest.cc +++ b/chromium/content/renderer/render_frame_impl_browsertest.cc @@ -497,7 +497,7 @@ TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) { 1, "foo", true /* match_case */, true /* forward */, false /* find_next */, true /* force */, false /* wrap_within_frame */); - FrameMsg_Delete delete_message(0); + FrameMsg_Delete delete_message(0, FrameDeleteIntention::kNotMainFrame); frame()->OnMessageReceived(delete_message); } diff --git a/chromium/content/renderer/render_widget.cc b/chromium/content/renderer/render_widget.cc index 970bdf426ed..24449d77790 100644 --- a/chromium/content/renderer/render_widget.cc +++ b/chromium/content/renderer/render_widget.cc @@ -184,6 +184,18 @@ static const int kInvalidNextPreviousFlagsValue = -1; static const char* kOOPIF = "OOPIF"; static const char* kRenderer = "Renderer"; +#if defined(OS_ANDROID) +// With 32 bit pixels, this would mean less than 400kb per buffer. Much less +// than required for, say, nHD. +static const int kSmallScreenPixelThreshold = 1e5; +bool IsSmallScreen(const gfx::Size& size) { + int area = 0; + if (!size.GetCheckedArea().AssignIfValid(&area)) + return false; + return area < kSmallScreenPixelThreshold; +} +#endif + class WebWidgetLockTarget : public content::MouseLockDispatcher::LockTarget { public: explicit WebWidgetLockTarget(blink::WebWidget* webwidget) @@ -3013,7 +3025,8 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings( #if defined(OS_ANDROID) bool using_synchronous_compositor = compositor_deps->UsingSynchronousCompositing(); - bool using_low_memory_policy = base::SysInfo::IsLowEndDevice(); + bool using_low_memory_policy = + base::SysInfo::IsLowEndDevice() && !IsSmallScreen(screen_size); settings.use_stream_video_draw_quad = true; settings.using_synchronous_renderer_compositor = using_synchronous_compositor; |