summaryrefslogtreecommitdiffstats
path: root/chromium/content
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content')
-rw-r--r--chromium/content/app/strings/content_strings.grd8
-rw-r--r--chromium/content/app/strings/translations/content_strings_am.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ar.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_bg.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_bn.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ca.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_cs.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_da.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_de.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_el.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_en-GB.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_es-419.xtb4
-rw-r--r--chromium/content/app/strings/translations/content_strings_es.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_et.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_fa.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_fi.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_fil.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_fr.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_gu.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_hi.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_hr.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_hu.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_id.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_it.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_iw.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ja.xtb4
-rw-r--r--chromium/content/app/strings/translations/content_strings_kn.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ko.xtb4
-rw-r--r--chromium/content/app/strings/translations/content_strings_lt.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_lv.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ml.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_mr.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ms.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_nl.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_no.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_pl.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_pt-BR.xtb4
-rw-r--r--chromium/content/app/strings/translations/content_strings_pt-PT.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ro.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ru.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_sk.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_sl.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_sr.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_sv.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_sw.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_ta.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_te.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_th.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_tr.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_uk.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_vi.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_zh-CN.xtb2
-rw-r--r--chromium/content/app/strings/translations/content_strings_zh-TW.xtb2
-rw-r--r--chromium/content/browser/BUILD.gn1
-rw-r--r--chromium/content/browser/DEPS1
-rw-r--r--chromium/content/browser/appcache/appcache_browsertest.cc78
-rw-r--r--chromium/content/browser/appcache/appcache_update_job.cc68
-rw-r--r--chromium/content/browser/appcache/appcache_update_url_loader_request.cc4
-rw-r--r--chromium/content/browser/browser_main_runner_impl.cc3
-rw-r--r--chromium/content/browser/devtools/devtools_session_encoding.cc4
-rw-r--r--chromium/content/browser/frame_host/frame_tree_node.cc37
-rw-r--r--chromium/content/browser/frame_host/navigation_controller_delegate.h4
-rw-r--r--chromium/content/browser/frame_host/navigation_controller_impl.cc6
-rw-r--r--chromium/content/browser/frame_host/render_frame_host_impl.cc25
-rw-r--r--chromium/content/browser/frame_host/render_frame_host_impl.h3
-rw-r--r--chromium/content/browser/frame_host/render_frame_host_manager.cc6
-rw-r--r--chromium/content/browser/renderer_host/input/input_router_impl.cc6
-rw-r--r--chromium/content/browser/renderer_host/input/input_router_impl_unittest.cc3
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.cc9
-rw-r--r--chromium/content/browser/renderer_host/render_process_host_impl.h1
-rw-r--r--chromium/content/browser/renderer_host/render_view_host_delegate.cc4
-rw-r--r--chromium/content/browser/renderer_host/render_view_host_delegate.h3
-rw-r--r--chromium/content/browser/renderer_host/render_view_host_impl.cc3
-rw-r--r--chromium/content/browser/site_per_process_browsertest.cc36
-rw-r--r--chromium/content/browser/utility_process_host.cc5
-rw-r--r--chromium/content/browser/web_contents/web_contents_android.cc7
-rw-r--r--chromium/content/browser/web_contents/web_contents_android.h5
-rw-r--r--chromium/content/browser/web_contents/web_contents_impl.cc24
-rw-r--r--chromium/content/browser/web_contents/web_contents_impl.h13
-rw-r--r--chromium/content/child/blink_platform_impl.cc4
-rw-r--r--chromium/content/common/BUILD.gn1
-rw-r--r--chromium/content/common/cursors/webcursor.cc15
-rw-r--r--chromium/content/common/cursors/webcursor.h4
-rw-r--r--chromium/content/common/frame.mojom9
-rw-r--r--chromium/content/common/frame_delete_intention.h27
-rw-r--r--chromium/content/common/frame_messages.h5
-rw-r--r--chromium/content/public/browser/BUILD.gn1
-rw-r--r--chromium/content/public/browser/child_process_termination_info.cc14
-rw-r--r--chromium/content/public/browser/child_process_termination_info.h16
-rw-r--r--chromium/content/renderer/render_frame_impl.cc65
-rw-r--r--chromium/content/renderer/render_frame_impl.h8
-rw-r--r--chromium/content/renderer/render_frame_impl_browsertest.cc2
-rw-r--r--chromium/content/renderer/render_widget.cc15
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;